Updated 关于证书和TLS支持 (markdown)

Sun Yimin 2025-02-28 17:31:58 +08:00
parent 1660a8d9a5
commit 1316d8825b

@ -1,3 +1,24 @@
* 证书支持smx509
* http tls支持(tlcp):第三方实现[gotlcp](https://github.com/Trisia/gotlcp)该实现ECC_SM4_GCM_SM3、ECC_SM4_CBC_SM3经过互操作测试其它ECDHE_SM4_GCM_SM3、ECDHE_SM4_CBC_SM3没有通过互操作测试目前没有可信的互操作测试目标规范也描述不清。
* [ShangMi (SM) Cipher Suites for TLS 1.3](https://www.rfc-editor.org/rfc/rfc8998)实现了和golang 1.19.x类似的ecdh能融入golang sdk就比较好实现单独维护成本太大而且使用范围不广。
* [ShangMi (SM) Cipher Suites for TLS 1.3](https://www.rfc-editor.org/rfc/rfc8998)实现了和golang 1.19.x类似的ecdh能融入golang sdk就比较好实现单独维护成本太大而且使用范围不广。
## smx509实现中的问题
现有smx509实现中我们定义了以下结构非别名用于覆盖x509中的实现或者添加新方法
```go
// A Certificate represents an X.509 certificate.
type Certificate x509.Certificate
// CertificateRequest represents a PKCS #10, certificate signature request.
type CertificateRequest x509.CertificateRequest
type RevocationList x509.RevocationList
```
它的优点是:
* 新的类型,可以覆盖旧方法、添加新方法;
* 无需复制`x509`中相关结构的完整定义和方法;
它的缺点是:
* 需要显示转换才能在这些类型和`x509`相应类型之间进行转换。
* 如果`x509`中相应类型有私有字段(不管是直接的还是间接的),并且我们的扩展实现必须访问,则会引发可访问性问题。
* 如果有其它类型中定义了该类型的字段,那这个类型必须完整重定义(复制完整实现),代码改动量、维护工作量也比较大。