50 lines
886 B
Go
50 lines
886 B
Go
package public
|
|
|
|
import (
|
|
"crypto/ecdsa"
|
|
"encoding/pem"
|
|
)
|
|
|
|
type NonEquAlgorthm struct {
|
|
Algorithm *SigningMethodECDSA
|
|
PrivateKey *ecdsa.PrivateKey
|
|
PublicKey *ecdsa.PublicKey
|
|
}
|
|
|
|
func GetNonEquAlgorthm(prikey []byte, pubkey []byte) (*NonEquAlgorthm, error) {
|
|
var err error
|
|
alg := &NonEquAlgorthm{
|
|
Algorithm: GetSignVerifyMgr(),
|
|
}
|
|
|
|
if prikey != nil {
|
|
if block, _ := pem.Decode(prikey); block == nil {
|
|
prikey, err = FormatPem(prikey, true)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
}
|
|
|
|
alg.PrivateKey, err = ParseECPrivateKeyFromPEM(prikey)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
}
|
|
|
|
if pubkey != nil {
|
|
if block, _ := pem.Decode(pubkey); block == nil {
|
|
pubkey, err = FormatPem(pubkey, false)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
}
|
|
|
|
alg.PublicKey, err = ParseECPublicKeyFromPEM(pubkey)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
}
|
|
|
|
return alg, nil
|
|
}
|