github.com/hxx258456/ccgo@v0.0.5-0.20230213014102-48b35f46f66f/README.md (about)

     1  # ccgo 国密改造fabric 使用go加密模块
     2  
     3  ================
     4  基于`go1.17.5`实现的国密算法库,包括:
     5  - sm2 : 基于`emmansun/gmsm`的sm2部分实现部分扩展。
     6  - sm2soft : 基于`tjfoc/gmsm`的sm2部分的纯软实现,仅作验证与参考用。
     7  - sm3 : 基于`emmansun/gmsm`的sm3部分实现部分扩展。
     8  - sm3soft : 基于`tjfoc/gmsm`的sm3部分的纯软实现,仅作验证与参考用。
     9  - sm4 : 基于`emmansun/gmsm`的sm4部分实现部分扩展。
    10  - sm4soft : 基于`tjfoc/gmsm`的sm4部分的纯软实现,仅作验证与参考用。
    11  - x509 : 基于`go1.17.5`的x509包与本项目的sm2/sm3/sm4包实现国密改造。
    12  - gmtls : 基于`go1.17.5`的tls包与本项目的sm2/sm3/sm4包实现国密改造。
    13  - gmhttp : 基于`go1.17.5`的`net/http`包做了对应的国密改造。
    14  - grpc : 基于`google.golang.org/grpc`的`v1.44.0`版本做了对应的国密改造。
    15  
    16  > 在x509与gmtls的实现中,国密算法采用的是基于`emmansun/gmsm`的国密实现,该开源项目已实现利用amd64与arm64架构CPU实现对应国密算法的硬件加速。sm2soft/sm3soft/sm4soft是对应国密算法的纯软实现,仅用作验证与参考。
    17  
    18  # gmgo的包路径
    19  go package: `github.com/hxx258456/ccgo`
    20  
    21  # 国密标准参考
    22  本项目涉及到的国密有SM2、SM3和SM4,相关国密标准如下:
    23  
    24  - GB/T 33560-2017 密码应用标识规范
    25  - GB/T 32918.1-2016 SM2椭圆曲线公钥密码算法 第1部分:总则
    26  - GB/T 32918.2-2016 SM2椭圆曲线公钥密码算法 第2部分:数字签名算法
    27  - GB/T 32918.3-2016 SM2椭圆曲线公钥密码算法 第3部分:密钥交换协议
    28  - GB/T 32918.4-2016 SM2椭圆曲线公钥密码算法 第4部分:公钥加密算法
    29  - GB/T 32918.5-2017 SM2椭圆曲线公钥密码算法 第5部分:参数定义
    30  - GB/T 35275-2017 SM2密码算法加密签名消息语法规范
    31  - GB/T 35276-2017 SM2密码算法使用规范
    32  - GB/T 32905-2016 SM3密码杂凑算法
    33  - GB/T 32907-2016 SM4分组密码算法
    34  
    35  # 测试案例
    36  从测试案例入手快速了解gmgo的使用。
    37  
    38  ## sm2
    39  测试案例代码: `sm2test/sm2_test.go`
    40  ```sh
    41  cd sm2test
    42  go test
    43  
    44  ```
    45  
    46  ## sm3
    47  测试案例代码: `sm3/sm3_test.go`
    48  ```sh
    49  cd sm3
    50  go test
    51  
    52  ```
    53  
    54  ## sm4
    55  测试案例代码: `sm4/sm4_test.go`、`sm4/sm4_gcm_test.go`
    56  ```sh
    57  cd sm4
    58  go test
    59  
    60  ```
    61  
    62  ## x509
    63  测试案例代码: `x509/x509_test.go`
    64  ```sh
    65  cd x509
    66  go test -v -run "^(TestX509|TestX509WithFile|TestCreateCertFromCA)$"
    67  
    68  ```
    69  
    70  注意,`x509_test`的`TestCreateCertFromCA`测试函数生成的sm2系列密钥文件与证书将会用于`gmtls`与`gmgrpc`的测试案例。
    71  
    72  
    73  ## gmtls
    74  测试案例代码: `gmtls/tls_test/tls_test.go`
    75  ```sh
    76  cd gmtls/tls_test
    77  go test
    78  
    79  ```
    80  
    81  执行之前请确认`certs`目录下的sm2系列文件是否最新。可以在该目录下执行`copyCerts.sh`直接从x509的对应目录下拷贝。
    82  
    83  ## gmgrpc
    84  测试案例代码: `grpc/grpc_test/grpc_test.go`
    85  ```sh
    86  cd grpc/grpc_test
    87  go test
    88  
    89  ```
    90  
    91  执行之前请确认`testdata`目录下的文件是否最新。可以在该目录下执行`copyCerts.sh`直接从x509的对应目录下拷贝。
    92  
    93  
    94  本项目参考了以下开源项目,基于其代码做了部分二次开发,向对应的开源作者表示感谢!
    95  - `https://github.com/emmansun/gmsm`
    96  - `https://github.com/tjfoc/gmsm`
    97  - `https://github.com/golang/go`
    98  - `https://github.com/grpc/grpc-go`
    99  - `https://github.com/envoyproxy/go-control-plane`
   100  - `https://github.com/golang/net`
   101  - `https://github.com/gorilla/mux`
   102  - `https://github.com/gorilla/handlers`
   103  - `https://github.com/felixge/httpsnoop`
   104  - `https://github.com/grpc-ecosystem/go-grpc-middleware`
   105  - `https://github.com/prometheus/client_golang`
   106  
   107  对应的版权声明参见目录`thrid_licenses`。