...

Source file src/github.com/tjfoc/gmsm/gmtls/auto_switch_config.go

Documentation: github.com/tjfoc/gmsm/gmtls

     1  package gmtls
     2  
     3  // NewBasicAutoSwitchConfig 返回一个实现了GMSSL/TLS自动切换的配置
     4  //
     5  // sm2SigCert: SM2 签名密钥对、证书
     6  // sm2EncCert: SM2 加密密钥对、证书
     7  // stdCert: RSA/ECC 标准的密钥对、证书
     8  //
     9  // return: 最基础的Config对象
    10  func NewBasicAutoSwitchConfig(sm2SigCert, sm2EncCert, stdCert *Certificate) (*Config, error) {
    11  	fncGetSignCertKeypair := func(info *ClientHelloInfo) (*Certificate, error) {
    12  		gmFlag := false
    13  		// 检查支持协议中是否包含GMSSL
    14  		for _, v := range info.SupportedVersions {
    15  			if v == VersionGMSSL {
    16  				gmFlag = true
    17  				break
    18  			}
    19  		}
    20  
    21  		if gmFlag {
    22  			return sm2SigCert, nil
    23  		} else {
    24  			return stdCert, nil
    25  		}
    26  	}
    27  
    28  	fncGetEncCertKeypair := func(info *ClientHelloInfo) (*Certificate, error) {
    29  		return sm2EncCert, nil
    30  	}
    31  	support := NewGMSupport()
    32  	support.EnableMixMode()
    33  	return &Config{
    34  		GMSupport:        support,
    35  		GetCertificate:   fncGetSignCertKeypair,
    36  		GetKECertificate: fncGetEncCertKeypair,
    37  	}, nil
    38  }
    39  

View as plain text