Commit a07739a4 authored by pengjun's avatar pengjun

fix cert unit testcase

parent c82abc33
-----BEGIN CERTIFICATE-----
MIIB7TCCAZKgAwIBAgIRAK66R1SxVZQDN0Dkz0ZhbCcwCgYIKoEcz1UBg3UwRzEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xCzAJBgNVBAMTAmNhMB4XDTE4MDcxOTAyNTMxMVoXDTI4MDcxNjAy
NTMxMVowRzELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNV
BAcTDVNhbiBGcmFuY2lzY28xCzAJBgNVBAMTAmNhMFkwEwYHKoZIzj0CAQYIKoEc
z1UBgi0DQgAEieMcW/533Qz8Vpgz/SkxO8/FWEzTGg66kgg3Yk2kcWajoPm4JL5B
Zz/gs0DR/PD5FnwCiLRxbFS5U5DKgRLCQKNfMF0wDgYDVR0PAQH/BAQDAgGmMA8G
A1UdJQQIMAYGBFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgnl+NdM85
BZ7lCPe16SCHjs/jnObR8vk6oGNJf6PDOKwwCgYIKoEcz1UBg3UDSQAwRgIhAKZm
F7/VeFA7Lye2QP2OG5/ZZnN/95FhW3YBVoEudeQDAiEAlqZOJ2yDoCr9YJ0xcdOM
L8pSDDRDCvGds8+nemzYtpw=
MIIB6zCCAZGgAwIBAgIQVq9SxucwdINw2WUMlNFpdjAKBggqgRzPVQGDdTBHMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzELMAkGA1UEAxMCY2EwHhcNMjAwNjE4MDMxNDQ2WhcNMzAwNjE2MDMx
NDQ2WjBHMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE
BxMNU2FuIEZyYW5jaXNjbzELMAkGA1UEAxMCY2EwWTATBgcqhkjOPQIBBggqgRzP
VQGCLQNCAARACzXYM8dLleVhjAwyljePO1Vltf2YL2xGKCLAB1/YITkM4q3GVE8D
LZxsydaG0zncKUswQA97HM6F1qarbFuvo18wXTAOBgNVHQ8BAf8EBAMCAaYwDwYD
VR0lBAgwBgYEVR0lADAPBgNVHRMBAf8EBTADAQH/MCkGA1UdDgQiBCDpAuHxKpzW
gxCIZxodcdzpHpzKFhlEJARmhKOPuN1yaTAKBggqgRzPVQGDdQNIADBFAiEAowXR
RYYCWcBT0gVSbHk7k+aJzG3uRdORTbbvmLgbG2QCIF3e0/m0aNRlvF6gPxBJ+JBR
R0sbv9eyrSEFMwx/ZyGJ
-----END CERTIFICATE-----
-----BEGIN PRIVATE KEY-----
MIGTAgEAMBMGByqGSM49AgEGCCqBHM9VAYItBHkwdwIBAQQg86AAL0bRgFW6RhFX
no7CVphI1U2csfrjwPuYn3FXaF2gCgYIKoEcz1UBgi2hRANCAASR8Yb//+y/GMLy
D36FLLO80oxUPtD6AtVoh9UIuC1b0QzA4+zkUDUk3zwdZ1pMZZKGZ48vE6KtAcFB
uqU7L784
-----END PRIVATE KEY-----
-----BEGIN PRIVATE KEY-----
MIGTAgEAMBMGByqGSM49AgEGCCqBHM9VAYItBHkwdwIBAQQgUDB2WJbWpyxcbwXq
m951EkEDNdRmUo6tzgtFy7nmcVegCgYIKoEcz1UBgi2hRANCAATPC6Ja8zQ9hhaL
eusbDK9ttb4a4yRjAWKXUDjO3r/zA6ROmeTQAc/fNlZXxKr+TXiAe+r2fBGBIRr3
hhql7gqw
-----END PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIIB5DCCAYqgAwIBAgIRAOQUQ5hzHvaJCs4FzFKJnM8wCgYIKoEcz1UBg3UwRzEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xCzAJBgNVBAMTAmNhMB4XDTE4MDcxOTAyNTMxMVoXDTI4MDcxNjAy
NTMxMVowUTELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNV
BAcTDVNhbiBGcmFuY2lzY28xFTATBgNVBAMMDFVzZXJAQ2hhaW4zMzBZMBMGByqG
SM49AgEGCCqBHM9VAYItA0IABM8LolrzND2GFot66xsMr221vhrjJGMBYpdQOM7e
v/MDpE6Z5NABz982VlfEqv5NeIB76vZ8EYEhGveGGqXuCrCjTTBLMA4GA1UdDwEB
/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIJ5fjXTPOQWe5Qj3tekg
h47P45zm0fL5OqBjSX+jwzisMAoGCCqBHM9VAYN1A0gAMEUCIA2zO2rS86QfOeni
/6fE4Gi1HU93Kc7vWqMIeWWoKw1mAiEA8cKpU/yoA9saKqeDmTdp5EIbRdxm33Sk
7PV9pdBVWYU=
MIIB4zCCAYmgAwIBAgIQdKBE3pdDBMaadMbZ30K7aTAKBggqgRzPVQGDdTBHMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzELMAkGA1UEAxMCY2EwHhcNMjAwNjE4MDMxNDQ2WhcNMzAwNjE2MDMx
NDQ2WjBRMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE
BxMNU2FuIEZyYW5jaXNjbzEVMBMGA1UEAwwMVXNlckBDaGFpbjMzMFkwEwYHKoZI
zj0CAQYIKoEcz1UBgi0DQgAEkfGG///svxjC8g9+hSyzvNKMVD7Q+gLVaIfVCLgt
W9EMwOPs5FA1JN88HWdaTGWShmePLxOirQHBQbqlOy+/OKNNMEswDgYDVR0PAQH/
BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAg6QLh8Sqc1oMQiGcaHXHc
6R6cyhYZRCQEZoSjj7jdcmkwCgYIKoEcz1UBg3UDSAAwRQIgBSqSzSkoXopLR830
zMjWsMVlZERtUuW3+uYm+bCRjOgCIQDZf8dKxkBd155hiilDQ4RR4Xa8+ZGcPslm
Nm+S1txiqA==
-----END CERTIFICATE-----
......@@ -19,7 +19,7 @@ func (s *sm2Signer) Sign(k Key, digest []byte, opts SignerOpts) (signature []byt
}
func signSM2(k *sm2.PrivateKey, digest []byte, opts SignerOpts) (signature []byte, err error) {
r, s, err := sm2.Sign(k, digest)
r, s, err := sm2.Sm2Sign(k, digest, nil)
if err != nil {
return nil, err
}
......
......@@ -220,7 +220,7 @@ func newSM2CA(baseDir, name string) (*SM2CA, error) {
sm2cert := utils.ParseX509CertificateToSm2(&template)
sm2cert.PublicKey = smPubKey
x509Cert, err := genCertificateGMSM2(baseDir, name, sm2cert, sm2cert, priv)
x509Cert, err := genCertificateGMSM2(baseDir, name, sm2cert, sm2cert, signer)
if err == nil {
ca = &SM2CA{
Name: name,
......@@ -247,7 +247,7 @@ func (ca *SM2CA) SignCertificate(baseDir, name string, sans []string, pub interf
template.PublicKey = pub
sm2Tpl := utils.ParseX509CertificateToSm2(&template)
cert, err := genCertificateGMSM2(baseDir, name, sm2Tpl, ca.SignCert, ca.Sm2Key)
cert, err := genCertificateGMSM2(baseDir, name, sm2Tpl, ca.SignCert, ca.Signer)
if err != nil {
return nil, err
}
......@@ -282,7 +282,7 @@ func (ca *SM2CA) GenerateLocalUser(baseDir, name string) error {
return err
}
func genCertificateGMSM2(baseDir, name string, template, parent *sm2.Certificate, key csp.Key) (*sm2.Certificate, error) {
func genCertificateGMSM2(baseDir, name string, template, parent *sm2.Certificate, key crypto.Signer) (*sm2.Certificate, error) {
certBytes, err := utils.CreateCertificateToMem(template, parent, key)
if err != nil {
return nil, err
......
......@@ -5,40 +5,64 @@
package utils
import (
"crypto"
"crypto/rand"
"crypto/x509"
"encoding/pem"
"os"
"github.com/33cn/plugin/plugin/dapp/cert/authority/tools/cryptogen/factory/csp"
"github.com/tjfoc/gmsm/sm2"
)
// CreateCertificateToMem 证书转mem
func CreateCertificateToMem(template, parent *sm2.Certificate, key csp.Key) (cert []byte, err error) {
pk := key.(*csp.SM2PrivateKey).PrivKey
func CreateCertificateToMem(template, parent *sm2.Certificate, key crypto.Signer) ([]byte, error) {
pub, _ := template.PublicKey.(*sm2.PublicKey)
var puk sm2.PublicKey
puk.Curve = sm2.P256Sm2()
puk.X = pub.X
puk.Y = pub.Y
cert, err = sm2.CreateCertificateToMem(template, parent, &puk, pk)
return
der, err := sm2.CreateCertificate(rand.Reader, template, parent, &puk, key)
if err != nil {
return nil, err
}
block := &pem.Block{
Type: "CERTIFICATE",
Bytes: der,
}
return pem.EncodeToMemory(block), nil
}
// CreateCertificateToPem 证书转pem
func CreateCertificateToPem(FileName string, template, parent *sm2.Certificate, key csp.Key) error {
pk := key.(*csp.SM2PrivateKey).PrivKey
func CreateCertificateToPem(FileName string, template, parent *sm2.Certificate, key crypto.Signer) error {
pub, _ := template.PublicKey.(*sm2.PublicKey)
var puk sm2.PublicKey
puk.Curve = sm2.P256Sm2()
puk.X = pub.X
puk.Y = pub.Y
_, err := sm2.CreateCertificateToPem(FileName, template, parent, &puk, pk)
return err
der, err := sm2.CreateCertificate(rand.Reader, template, parent, &puk, key)
if err != nil {
return err
}
block := &pem.Block{
Type: "CERTIFICATE",
Bytes: der,
}
file, err := os.Create(FileName)
if err != nil {
return err
}
defer file.Close()
err = pem.Encode(file, block)
if err != nil {
return err
}
return nil
}
// ParseX509CertificateToSm2 解析x509格式为sm2格式证书
......@@ -51,7 +75,7 @@ func ParseX509CertificateToSm2(x509Cert *x509.Certificate) *sm2.Certificate {
RawIssuer: x509Cert.RawIssuer,
Signature: x509Cert.Signature,
SignatureAlgorithm: sm2.SignatureAlgorithm(x509Cert.SignatureAlgorithm),
SignatureAlgorithm: sm2.SM2WithSM3,
PublicKeyAlgorithm: sm2.PublicKeyAlgorithm(x509Cert.PublicKeyAlgorithm),
PublicKey: x509Cert.PublicKey,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment