4
4
"crypto"
5
5
"crypto/rand"
6
6
"crypto/rsa"
7
- "crypto/sha256"
8
7
"crypto/x509"
9
8
"encoding/pem"
10
9
"errors"
@@ -28,7 +27,7 @@ func RSAGenerateKey(bits int, out io.Writer) error {
28
27
// RSAGeneratePublicKey generate RSA public key
29
28
func RSAGeneratePublicKey (priKey []byte , out io.Writer ) error {
30
29
block , _ := pem .Decode (priKey )
31
- if block == nil {
30
+ if block == nil {
32
31
return errors .New ("key is invalid format" )
33
32
}
34
33
@@ -51,7 +50,7 @@ func RSAGeneratePublicKey(priKey []byte, out io.Writer) error {
51
50
// RSAEncrypt RSA encrypt
52
51
func RSAEncrypt (src , pubKey []byte ) ([]byte , error ) {
53
52
block , _ := pem .Decode (pubKey )
54
- if block == nil {
53
+ if block == nil {
55
54
return nil , errors .New ("key is invalid format" )
56
55
}
57
56
@@ -77,7 +76,7 @@ func RSAEncrypt(src, pubKey []byte) ([]byte, error) {
77
76
// RSADecrypt RSA decrypt
78
77
func RSADecrypt (src , priKey []byte ) ([]byte , error ) {
79
78
block , _ := pem .Decode (priKey )
80
- if block == nil {
79
+ if block == nil {
81
80
return nil , errors .New ("key is invalid format" )
82
81
}
83
82
@@ -95,10 +94,10 @@ func RSADecrypt(src, priKey []byte) ([]byte, error) {
95
94
return dst , nil
96
95
}
97
96
98
- // RSASign RSA sign, use crypto.SHA256
99
- func RSASign (src []byte , priKey []byte ) ([]byte , error ) {
97
+ // RSASign RSA sign
98
+ func RSASign (src []byte , priKey []byte , hash crypto. Hash ) ([]byte , error ) {
100
99
block , _ := pem .Decode (priKey )
101
- if block == nil {
100
+ if block == nil {
102
101
return nil , errors .New ("key is invalid format" )
103
102
}
104
103
@@ -108,25 +107,25 @@ func RSASign(src []byte, priKey []byte) ([]byte, error) {
108
107
return nil , err
109
108
}
110
109
111
- hash := sha256 .New ()
112
- _ , err = hash .Write (src )
110
+ h := hash .New ()
111
+ _ , err = h .Write (src )
113
112
if err != nil {
114
113
return nil , err
115
114
}
116
115
117
- bytes := hash .Sum (nil )
118
- sign , err := rsa .SignPKCS1v15 (rand .Reader , privateKey , crypto . SHA256 , bytes )
116
+ bytes := h .Sum (nil )
117
+ sign , err := rsa .SignPKCS1v15 (rand .Reader , privateKey , hash , bytes )
119
118
if err != nil {
120
119
return nil , err
121
120
}
122
121
123
122
return sign , nil
124
123
}
125
124
126
- // RSAVerify RSA Verify
127
- func RSAVerify (src , sign , pubKey []byte ) error {
125
+ // RSAVerify RSA verify
126
+ func RSAVerify (src , sign , pubKey []byte , hash crypto. Hash ) error {
128
127
block , _ := pem .Decode (pubKey )
129
- if block == nil {
128
+ if block == nil {
130
129
return errors .New ("key is invalid format" )
131
130
}
132
131
@@ -141,13 +140,13 @@ func RSAVerify(src, sign, pubKey []byte) error {
141
140
return errors .New ("the kind of key is not a rsa.PublicKey" )
142
141
}
143
142
144
- hash := sha256 .New ()
145
- _ , err = hash .Write (src )
143
+ h := hash .New ()
144
+ _ , err = h .Write (src )
146
145
if err != nil {
147
146
return err
148
147
}
149
148
150
- bytes := hash .Sum (nil )
149
+ bytes := h .Sum (nil )
151
150
152
- return rsa .VerifyPKCS1v15 (publicKey , crypto . SHA256 , bytes , sign )
151
+ return rsa .VerifyPKCS1v15 (publicKey , hash , bytes , sign )
153
152
}
0 commit comments