50 lines
1.4 KiB
Go
50 lines
1.4 KiB
Go
package rsa
|
|
|
|
import (
|
|
"crypto"
|
|
|
|
"xdx.jelly/xgcl/rsa/internal"
|
|
"xdx.jelly/xgcl/sm"
|
|
)
|
|
|
|
var VerifyPKCS1v15 = internal.VerifyPKCS1v15
|
|
var SignPKCS1v15 = internal.SignPKCS1v15
|
|
|
|
// helper function for RSA_SM3 signature
|
|
|
|
// SignPKCS1v15WithSm3 signature with SM3
|
|
func SignPKCS1v15WithSm3(priv *PrivateKey, hashed []byte) ([]byte, error) {
|
|
return SignPKCS1v15(nil, priv, sm.SM3, hashed)
|
|
}
|
|
|
|
// SignPKCS1v15WithSm3 signature with SHA256
|
|
func SignPKCS1v15WithSha256(priv *PrivateKey, hashed []byte) ([]byte, error) {
|
|
return SignPKCS1v15(nil, priv, sm.SHA256, hashed)
|
|
}
|
|
|
|
// VerifyPKCS1v15WithSm3 verify with SM3
|
|
func VerifyPKCS1v15WithSm3(pub *PublicKey, hashed []byte, sig []byte) error {
|
|
return VerifyPKCS1v15(pub, sm.SM3, hashed, sig)
|
|
}
|
|
|
|
// VerifyPKCS1v15WithSha256 verify with SHA256
|
|
func VerifyPKCS1v15WithSha256(pub *PublicKey, hashed []byte, sig []byte) error {
|
|
return VerifyPKCS1v15(pub, sm.SHA256, hashed, sig)
|
|
}
|
|
|
|
// PKCS1v15 implement the sdf.RSAAdapter interface
|
|
type PKCS1v15 struct{}
|
|
|
|
// 0018用的是PKCS1v1.5 还有其他暂不实现
|
|
func NewPKCS1v15() PKCS1v15 {
|
|
return PKCS1v15{}
|
|
}
|
|
|
|
func (PKCS1v15) Sign(priv *PrivateKey, hash crypto.Hash, hashed []byte) ([]byte, error) {
|
|
return internal.SignPKCS1v15(nil, priv, sm.Hash{Hash: hash}, hashed)
|
|
}
|
|
|
|
func (PKCS1v15) Verify(pub *PublicKey, hash crypto.Hash, hashed []byte, sig []byte) error {
|
|
return internal.VerifyPKCS1v15(pub, sm.Hash{Hash: hash}, hashed, sig)
|
|
}
|