MacOS上 编译GMSSL

该博客详细记录了在Darwin系统上编译GmSSL时遇到的'not supported'错误及解决方法。通过修改配置文件,将特定行的代码添加字符':',成功解决了编译问题。随后,博主顺利执行了'make'和'sudo make install'命令完成编译和安装,并使用'gmssl version-a'确认了版本安装成功。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先官网下载源码 https://github.com/guanzhi/GmSSL

cd 到源码目录,依次执行命令

$ ./config
$ make
$ sudo make install

执行./config时会遇到错误 this system (darwin64-x86_64-cc) is not support错误,解决方案如下

 

 

 

 

3处文件修改为

use if $^O ne "VMS", 'File::Glob' => qw/:glob/;

加了一个:而已

然后执行make   sudo make install 开始编译

执行完sudo make install完毕以后 执行命令查看版本

gmssl version -a

 

<think>好的,用户现在问的是关于gmssl-Python源代码的情况。我需要先理解用户的需求。之前的对话中,用户遇到了Git错误,是关于切换标签v2.5.3的问题。现在用户可能已经解决了那个问题,或者转而想了解gmssl-Python的源代码。 首先,用户可能是在尝试安装或使用gmssl的Python版本,遇到了问题,或者想更深入了解其内部结构。gmssl是一个国密算法的实现库,Python绑定可能让开发者更方便地使用这些功能。用户可能想了解如何获取源码,或者代码结构,或者贡献代码的方式。 我需要先确认gmssl-Python项目的概况,比如它是否是GmSSL的一部分,还是单独的Python包。根据之前的回答,用户提到过GmSSL的GitHub仓库,所以可能gmssl-Python是其中的一部分,或者是一个独立的仓库。 接下来,用户可能需要知道如何获取源代码。可能的途径包括从GitHub克隆仓库,或者通过PyPI安装。但用户明确提到源代码,所以重点应放在如何获取和构建源代码上。需要检查是否存在单独的Python项目,或者是否在GmSSL主库中有Python绑定。 另外,用户可能想知道代码结构,比如主要模块、功能模块,以及如何参与开发。比如,是否有setup.py文件,如何编译扩展模块,依赖哪些库等。还可能涉及安装步骤,比如是否需要先安装GmSSL的C库,再安装Python绑定。 还要考虑用户可能遇到的问题,比如安装时的依赖问题,编译错误,或者如何测试代码。需要给出常见问题的解决方法,比如安装依赖项,确保Python开发工具已安装,或者如何处理权限问题。 此外,用户可能对国密算法本身感兴趣,但当前问题更关注源代码,所以需要集中在代码结构和使用上,而不是算法的详细解释。但可能需要简要提到支持的算法,如SM2、SM3、SM4,以及它们的应用场景。 可能需要分步骤说明如何获取、构建、安装和测试源代码,确保用户能够按步骤操作。同时,需要提供GitHub链接和文档链接,方便用户进一步参考。 最后,要确保回答结构清晰,步骤详细,覆盖用户可能的需求点,如安装、代码结构、开发贡献、常见问题等。避免使用过于专业的术语,保持语言简洁明了,适合不同层次的开发者理解。</think>--- ### **GmSSL-Python 简介** **GmSSL-Python** 是国密算法库 [GmSSL](https://github.com/guanzhi/GmSSL) 的 Python 绑定,提供对 SM2/SM3/SM4/SM9 等中国商用密码算法的支持。它通过 Python 接口简化了国密算法的调用,适用于数字签名、加密通信、证书处理等场景。 --- ### **源码获取与安装** #### **1. 通过 GitHub 直接获取** 克隆仓库并安装: ```bash git clone https://github.com/guanzhi/GmSSL.git cd GmSSL/python python3 setup.py install ``` #### **2. 通过 PyPI 安装** 安装预编译的二进制包(无需编译): ```bash pip install gmssl ``` --- ### **源码结构解析** GmSSL-Python 的代码主要分为以下部分: 1. **核心模块(C 扩展)** - 路径:`GmSSL/python/gmssl/` - 文件:`_gmssl.c`(C 扩展源码,实现 Python 与 GmSSL C 库的交互) - 功能:封装 SM2、SM3、SM4 等算法的底层操作。 2. **Python 封装层** - 路径:`GmSSL/python/gmssl/` - 文件:`sm2.py`, `sm3.py`, `sm4.py` 等 - 功能:提供面向对象的 Python API,简化调用流程。 3. **编译配置** - 文件:`setup.py` - 作用:定义编译参数(如链接 GmSSL C 库的路径)。 --- ### **核心功能示例** #### **SM2 非对称加密** ```python from gmssl import sm2 private_key = '00...(64位十六进制私钥)' public_key = sm2.Sm2Key().generate_public_key(private_key) cipher = sm2.Sm2Cipher() encrypted = cipher.encrypt(public_key, b"Hello GmSSL!") decrypted = cipher.decrypt(private_key, encrypted) print(decrypted) # 输出:b'Hello GmSSL!' ``` #### **SM3 哈希算法** ```python from gmssl import sm3 data = b"Hello GmSSL!" hash_obj = sm3.sm3_hash(data) print(hash_obj) # 输出:66c7f0...(64位哈希值) ``` #### **SM4 对称加密** ```python from gmssl import sm4 key = b'0123456789abcdef' cipher = sm4.CryptSM4(key, sm4.SM4_ENCRYPT) encrypted = cipher.crypt_ecb(b"Hello GmSSL!") cipher = sm4.CryptSM4(key, sm4.SM4_DECRYPT) decrypted = cipher.crypt_ecb(encrypted) print(decrypted) # 输出:b'Hello GmSSL!' ``` --- ### **开发与调试** #### **1. 编译 C 扩展模块** 手动编译并验证: ```bash cd GmSSL/python python3 setup.py build_ext --inplace # 生成 .so 或 .pyd 文件 ``` #### **2. 运行测试** 执行单元测试(需安装 pytest): ```bash pytest test/ ``` --- ### **常见问题** #### **Q1:编译时报错 `gmssl.h not found`** **原因**:未正确链接 GmSSL C 库。 **解决**: ```bash # 安装 GmSSL C 库 cd GmSSL ./config make sudo make install # 设置动态库路径(Linux/macOS) export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH ``` #### **Q2:Python 调用时提示 `undefined symbol`** **原因**:Python 模块未正确链接 GmSSL 动态库。 **解决**: ```bash # 重新编译并指定库路径 python3 setup.py build_ext --library-dirs=/usr/local/lib ``` --- ### **资源链接** 1. **GitHub 仓库**:[GmSSL-Python](https://github.com/guanzhi/GmSSL/tree/master/python) 2. **官方文档**:[GmSSL 国密算法文档](http://gmssl.org/docs/quickstart.html) 3. **国密算法标准**:[GM/T 0001-2012 至 GM/T 0062-2018](http://www.gmbz.org.cn/main/viewlist/215) 通过源码分析,可以深入理解国密算法的实现细节,或根据需求定制功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值