-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathpkcs1_test.go
More file actions
97 lines (94 loc) · 3.04 KB
/
Copy pathpkcs1_test.go
File metadata and controls
97 lines (94 loc) · 3.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
package keyremix
import (
"crypto/rsa"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"math/big"
"testing"
)
func TestPkcs1Pem(t *testing.T) {
t.Run("Deserialize", func(t *testing.T) {
var rest []byte
var err error
var key interface{}
key, rest, err = Pkcs1Pem.Deserialize([]byte(rsaPkcs1Pem), nil)
require.NoError(t, err)
switch k := key.(type) {
case *rsa.PrivateKey:
var N big.Int
N.SetString("00bd88b15962861535504f977d9e4d7313a83631f91f4d7db7b0c7153117c10cbe703b289d611a443f8d21f967334822bb09758caa61403644e0059a425ee6284aefa9c2d5741dd1c473916ab55b9497e248e6e990e9c06dfa2888be1e271e73bd0cc12f83185fe1b61b31de9cdc27b74e1db8445dd28e07231ad8bb60fe268b7b", 16)
assert.Equal(t, 65537, k.E)
assert.Equal(t, N, *k.N)
default:
t.Errorf("wrong key type: %T", key)
}
assert.Equal(t, 0, len(rest))
})
t.Run("Recognize", func(t *testing.T) {
var err error
var fit Fit
fit, err = Pkcs1Pem.Recognize([]byte(rsaPkcs1Pem), nil)
require.NoError(t, err)
assert.Equal(t, UnambiguousFit, fit)
})
t.Run("Serialize", func(t *testing.T) {
generateTestKeys()
var err error
var rest, output []byte
output, err = Pkcs1Pem.Serialize(rsa1024, nil)
require.NoError(t, err)
var key2i interface{}
key2i, rest, err = Pkcs1Pem.Deserialize(output, nil)
require.NoError(t, err)
assert.Equal(t, 0, len(rest))
key2 := key2i.(*rsa.PrivateKey)
assert.Equal(t, rsa1024.N, key2.N)
assert.Equal(t, rsa1024.E, key2.E)
assert.Equal(t, rsa1024.D, key2.D)
assert.Equal(t, rsa1024.Primes[0], key2.Primes[0])
assert.Equal(t, rsa1024.Primes[1], key2.Primes[1])
})
}
func TestPkcs1Der(t *testing.T) {
t.Run("Deserialize", func(t *testing.T) {
var rest []byte
var err error
var key interface{}
key, rest, err = Pkcs1Der.Deserialize(rsaPkcs1Der, nil)
require.NoError(t, err)
switch k := key.(type) {
case *rsa.PrivateKey:
var N big.Int
N.SetString("00bd88b15962861535504f977d9e4d7313a83631f91f4d7db7b0c7153117c10cbe703b289d611a443f8d21f967334822bb09758caa61403644e0059a425ee6284aefa9c2d5741dd1c473916ab55b9497e248e6e990e9c06dfa2888be1e271e73bd0cc12f83185fe1b61b31de9cdc27b74e1db8445dd28e07231ad8bb60fe268b7b", 16)
assert.Equal(t, 65537, k.E)
assert.Equal(t, N, *k.N)
default:
t.Errorf("wrong key type: %T", key)
}
assert.Equal(t, 0, len(rest))
})
t.Run("Recognize", func(t *testing.T) {
var err error
var fit Fit
fit, err = Pkcs1Der.Recognize(rsaPkcs1Der, nil)
require.NoError(t, err)
assert.Equal(t, AmbiguousFit, fit)
})
t.Run("Serialize", func(t *testing.T) {
generateTestKeys()
var err error
var rest, output []byte
output, err = Pkcs1Der.Serialize(rsa1024, nil)
require.NoError(t, err)
var key2i interface{}
key2i, rest, err = Pkcs1Der.Deserialize(output, nil)
require.NoError(t, err)
assert.Equal(t, 0, len(rest))
key2 := key2i.(*rsa.PrivateKey)
assert.Equal(t, rsa1024.N, key2.N)
assert.Equal(t, rsa1024.E, key2.E)
assert.Equal(t, rsa1024.D, key2.D)
assert.Equal(t, rsa1024.Primes[0], key2.Primes[0])
assert.Equal(t, rsa1024.Primes[1], key2.Primes[1])
})
}