github.com/hxx258456/ccgo@v0.0.5-0.20230213014102-48b35f46f66f/gmtls/0gmtls改造思路.md (about)

     1  # 基本思路
     2  
     3  ## 思路1:
     4  在tls1.2或tls1.3的实现中添加国密套件的实现。
     5  
     6  ## 思路2:
     7  单独添加一个GMSSL的握手过程。
     8  
     9  # 实际国密改造工作内容
    10  
    11  1. 在tls1.3中添加国密密码套件`TLS_SM4_128_GCM_SM3`,实现相关代码,并让tls1.3默认最优先选择国密密码套件。此外,tls1.3的会话恢复机制中对sessionTicket的加密与认证改用sm4与sm3。
    12  
    13  2. 添加了GMSSL协议版本定义,但并未遵循国密标准`GB/T 38636-2020 信息安全技术 传输层密码协议(TLCP)`的定义,而是让其实现与国密改造后的tls1.3相同的握手过程。
    14  
    15  ## 20220620修改
    16  将密码套件`TLS_SM4_128_GCM_SM3`名称改为`TLS_SM4_GCM_SM3`,以匹配`RFC8998`标准。
    17  > `RFC8998`标准中的国密密码套件有两个:TLS_SM4_GCM_SM3和TLS_SM4_CCM_SM3,这里只匹配了`TLS_SM4_GCM_SM3`,原因是golang的crypto库中并没有实现CCM分组模式,gmgo中也没有单独实现CCM模式。
    18  
    19