6
6
"crypto/rand"
7
7
"crypto/rsa"
8
8
"crypto/x509"
9
+ "encoding/pem"
9
10
"math/big"
10
11
"net"
11
12
"testing"
@@ -82,20 +83,32 @@ func TestCertificate_X509Certificate(t *testing.T) {
82
83
xcert , err := cert .X509Certificate ()
83
84
require .NoError (t , err )
84
85
require .EqualValues (t , caTpl .SerialNumber , xcert .SerialNumber )
86
+ require .EqualValues (t , der , xcert .Raw )
87
+ pemData , err := cert .PemCertificate ()
88
+ require .NoError (t , err )
89
+ pemBlock , _ := pem .Decode ([]byte (pemData ))
90
+ require .Equal (t , "CERTIFICATE" , pemBlock .Type )
91
+ require .EqualValues (t , der , pemBlock .Bytes )
85
92
})
86
93
87
94
t .Run ("invalid-data" , func (t * testing.T ) {
88
95
cert := Certificate {CertificateType : X_509 , CertificateValue : []byte {1 , 2 , 3 }}
89
96
xcert , err := cert .X509Certificate ()
90
97
require .Error (t , err )
91
98
require .Nil (t , xcert )
99
+ pemData , err := cert .PemCertificate ()
100
+ require .Error (t , err )
101
+ require .Empty (t , pemData )
92
102
})
93
103
94
104
t .Run ("invalid-type" , func (t * testing.T ) {
95
105
cert := Certificate {CertificateType : PGP , CertificateValue : der }
96
106
xcert , err := cert .X509Certificate ()
97
107
require .Error (t , err )
98
108
require .Nil (t , xcert )
109
+ pemData , err := cert .PemCertificate ()
110
+ require .Error (t , err )
111
+ require .Empty (t , pemData )
99
112
})
100
113
}
101
114
@@ -163,6 +176,9 @@ func TestPublicKey_RSA(t *testing.T) {
163
176
pub , err := pkey .RSA ()
164
177
require .NoError (t , err )
165
178
require .EqualValues (t , & rsaKey .PublicKey , pub )
179
+ cryptoKey , err := pkey .CryptoPublicKey ()
180
+ require .NoError (t , err )
181
+ require .EqualValues (t , rsaKey .Public (), cryptoKey )
166
182
})
167
183
168
184
t .Run ("spki" , func (t * testing.T ) {
@@ -176,6 +192,9 @@ func TestPublicKey_RSA(t *testing.T) {
176
192
pub , err := pkey .RSA ()
177
193
require .NoError (t , err )
178
194
require .EqualValues (t , & rsaKey .PublicKey , pub )
195
+ cryptoKey , err := pkey .CryptoPublicKey ()
196
+ require .NoError (t , err )
197
+ require .EqualValues (t , rsaKey .Public (), cryptoKey )
179
198
})
180
199
181
200
t .Run ("transparent" , func (t * testing.T ) {
@@ -189,6 +208,9 @@ func TestPublicKey_RSA(t *testing.T) {
189
208
pub , err := pkey .RSA ()
190
209
require .NoError (t , err )
191
210
require .EqualValues (t , & rsaKey .PublicKey , pub )
211
+ cryptoKey , err := pkey .CryptoPublicKey ()
212
+ require .NoError (t , err )
213
+ require .EqualValues (t , rsaKey .Public (), cryptoKey )
192
214
})
193
215
}
194
216
@@ -205,6 +227,9 @@ func TestPublicKey_ECDSA(t *testing.T) {
205
227
pub , err := pkey .ECDSA ()
206
228
require .NoError (t , err )
207
229
require .EqualValues (t , & ecKey .PublicKey , pub )
230
+ cryptoKey , err := pkey .CryptoPublicKey ()
231
+ require .NoError (t , err )
232
+ require .EqualValues (t , ecKey .Public (), cryptoKey )
208
233
})
209
234
210
235
t .Run ("transparent-uncompressed" , func (t * testing.T ) {
@@ -221,6 +246,9 @@ func TestPublicKey_ECDSA(t *testing.T) {
221
246
pub , err := pkey .ECDSA ()
222
247
require .NoError (t , err )
223
248
require .EqualValues (t , & ecKey .PublicKey , pub )
249
+ cryptoKey , err := pkey .CryptoPublicKey ()
250
+ require .NoError (t , err )
251
+ require .EqualValues (t , ecKey .Public (), cryptoKey )
224
252
})
225
253
226
254
t .Run ("transparent-compressed-prime" , func (t * testing.T ) {
@@ -236,6 +264,9 @@ func TestPublicKey_ECDSA(t *testing.T) {
236
264
pub , err := pkey .ECDSA ()
237
265
require .NoError (t , err )
238
266
require .EqualValues (t , & ecKey .PublicKey , pub )
267
+ cryptoKey , err := pkey .CryptoPublicKey ()
268
+ require .NoError (t , err )
269
+ require .EqualValues (t , ecKey .Public (), cryptoKey )
239
270
})
240
271
}
241
272
@@ -252,6 +283,9 @@ func TestPrivateKey_RSA(t *testing.T) {
252
283
pub , err := pkey .RSA ()
253
284
require .NoError (t , err )
254
285
require .EqualValues (t , rsaKey , pub )
286
+ cryptoKey , err := pkey .CryptoPrivateKey ()
287
+ require .NoError (t , err )
288
+ require .EqualValues (t , rsaKey , cryptoKey )
255
289
})
256
290
257
291
t .Run ("pkcs8" , func (t * testing.T ) {
@@ -265,6 +299,9 @@ func TestPrivateKey_RSA(t *testing.T) {
265
299
pub , err := pkey .RSA ()
266
300
require .NoError (t , err )
267
301
require .EqualValues (t , rsaKey , pub )
302
+ cryptoKey , err := pkey .CryptoPrivateKey ()
303
+ require .NoError (t , err )
304
+ require .EqualValues (t , rsaKey , cryptoKey )
268
305
})
269
306
270
307
t .Run ("transparent" , func (t * testing.T ) {
@@ -284,6 +321,9 @@ func TestPrivateKey_RSA(t *testing.T) {
284
321
pub , err := pkey .RSA ()
285
322
require .NoError (t , err )
286
323
require .EqualValues (t , rsaKey , pub )
324
+ cryptoKey , err := pkey .CryptoPrivateKey ()
325
+ require .NoError (t , err )
326
+ require .EqualValues (t , rsaKey , cryptoKey )
287
327
})
288
328
}
289
329
@@ -300,6 +340,9 @@ func TestPrivateKey_ECDSA(t *testing.T) {
300
340
pub , err := pkey .ECDSA ()
301
341
require .NoError (t , err )
302
342
require .EqualValues (t , ecKey , pub )
343
+ cryptoKey , err := pkey .CryptoPrivateKey ()
344
+ require .NoError (t , err )
345
+ require .EqualValues (t , ecKey , cryptoKey )
303
346
})
304
347
t .Run ("sec1" , func (t * testing.T ) {
305
348
der , _ := x509 .MarshalECPrivateKey (ecKey )
@@ -312,6 +355,9 @@ func TestPrivateKey_ECDSA(t *testing.T) {
312
355
pub , err := pkey .ECDSA ()
313
356
require .NoError (t , err )
314
357
require .EqualValues (t , ecKey , pub )
358
+ cryptoKey , err := pkey .CryptoPrivateKey ()
359
+ require .NoError (t , err )
360
+ require .EqualValues (t , ecKey , cryptoKey )
315
361
})
316
362
317
363
t .Run ("transparent" , func (t * testing.T ) {
@@ -325,5 +371,8 @@ func TestPrivateKey_ECDSA(t *testing.T) {
325
371
pub , err := pkey .ECDSA ()
326
372
require .NoError (t , err )
327
373
require .EqualValues (t , ecKey , pub )
374
+ cryptoKey , err := pkey .CryptoPrivateKey ()
375
+ require .NoError (t , err )
376
+ require .EqualValues (t , ecKey , cryptoKey )
328
377
})
329
378
}
0 commit comments