-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmessage_rsa_test.go
131 lines (100 loc) · 11.6 KB
/
message_rsa_test.go
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
package emp
import "testing"
var (
testRSAPrivateKey = []byte{45, 45, 45, 45, 45, 66, 69, 71, 73, 78, 32, 82, 83, 65, 32, 80, 82, 73, 86, 65, 84, 69, 32, 75, 69, 89, 45, 45, 45, 45, 45, 10, 77, 73, 73, 69, 112, 81, 73, 66, 65, 65, 75, 67, 65, 81, 69, 65, 118, 121, 104, 90, 104, 51, 82, 111, 47, 99, 115, 75, 111, 101, 88, 78, 77, 78, 48, 77, 112, 89, 115, 47, 69, 114, 79, 78, 84, 72, 118, 99, 115, 121, 57, 47, 90, 104, 67, 68, 97, 48, 72, 100, 78, 122, 79, 87, 10, 84, 122, 48, 47, 57, 98, 68, 48, 101, 85, 72, 65, 82, 85, 99, 80, 110, 78, 69, 116, 90, 116, 97, 97, 49, 114, 67, 71, 104, 81, 114, 102, 103, 53, 107, 74, 106, 71, 47, 121, 107, 103, 75, 100, 53, 101, 113, 47, 112, 111, 65, 81, 97, 108, 103, 53, 113, 50, 117, 98, 49, 68, 80, 117, 10, 111, 98, 108, 98, 121, 77, 76, 69, 79, 87, 120, 49, 54, 85, 103, 101, 52, 113, 84, 47, 109, 107, 117, 47, 78, 71, 87, 71, 52, 78, 55, 99, 103, 102, 74, 105, 79, 68, 113, 78, 119, 109, 75, 109, 68, 104, 109, 118, 52, 81, 49, 67, 102, 82, 70, 115, 105, 117, 120, 75, 74, 78, 112, 79, 10, 56, 100, 112, 113, 105, 100, 102, 90, 122, 98, 114, 115, 99, 72, 53, 86, 85, 82, 104, 54, 71, 85, 73, 90, 97, 119, 122, 43, 97, 66, 113, 74, 73, 68, 69, 87, 51, 118, 110, 85, 65, 120, 104, 110, 97, 56, 79, 97, 120, 66, 77, 57, 87, 118, 90, 49, 115, 90, 82, 67, 83, 76, 115, 113, 10, 50, 47, 107, 122, 106, 68, 86, 77, 87, 48, 115, 101, 98, 104, 67, 110, 105, 49, 56, 112, 51, 116, 66, 97, 79, 119, 118, 71, 117, 82, 47, 48, 110, 111, 87, 112, 68, 71, 47, 88, 75, 85, 108, 69, 78, 117, 67, 83, 115, 113, 55, 71, 117, 90, 73, 120, 105, 122, 114, 99, 50, 100, 71, 104, 10, 54, 54, 108, 47, 79, 75, 52, 52, 106, 56, 109, 110, 97, 89, 74, 74, 72, 72, 105, 69, 78, 84, 90, 104, 54, 48, 49, 113, 116, 48, 79, 111, 82, 83, 71, 117, 89, 119, 73, 68, 65, 81, 65, 66, 65, 111, 73, 66, 65, 65, 100, 107, 52, 83, 109, 114, 75, 66, 67, 66, 70, 82, 85, 48, 10, 70, 86, 55, 74, 102, 104, 54, 57, 74, 121, 66, 114, 68, 53, 69, 103, 122, 87, 87, 107, 57, 98, 71, 86, 43, 43, 57, 102, 75, 100, 90, 106, 121, 88, 71, 104, 78, 101, 77, 107, 67, 67, 68, 85, 109, 85, 74, 85, 119, 70, 98, 90, 104, 72, 56, 81, 50, 65, 90, 114, 53, 53, 103, 110, 10, 49, 111, 78, 53, 110, 80, 80, 119, 116, 74, 112, 80, 80, 90, 112, 83, 72, 84, 50, 115, 103, 72, 89, 77, 109, 90, 90, 50, 52, 66, 48, 121, 77, 81, 51, 83, 90, 75, 108, 56, 86, 121, 105, 57, 101, 69, 89, 103, 119, 119, 107, 84, 82, 115, 118, 75, 71, 69, 104, 72, 107, 82, 77, 76, 10, 113, 56, 51, 101, 43, 85, 117, 104, 103, 68, 65, 47, 114, 112, 113, 110, 66, 98, 87, 88, 49, 76, 87, 80, 119, 102, 111, 82, 110, 112, 49, 71, 49, 48, 120, 80, 108, 104, 98, 53, 97, 122, 43, 47, 121, 99, 117, 105, 48, 115, 84, 97, 107, 115, 81, 43, 74, 50, 83, 106, 80, 51, 67, 84, 10, 105, 80, 81, 85, 79, 74, 115, 97, 75, 57, 111, 52, 77, 77, 114, 107, 97, 69, 50, 43, 83, 50, 116, 65, 103, 77, 65, 50, 118, 76, 56, 101, 53, 100, 88, 101, 52, 104, 54, 115, 56, 106, 76, 75, 74, 112, 72, 114, 102, 50, 81, 81, 97, 112, 87, 81, 66, 69, 100, 105, 72, 67, 73, 97, 10, 69, 118, 53, 101, 68, 81, 102, 115, 77, 74, 110, 75, 89, 102, 108, 80, 69, 109, 98, 110, 89, 52, 54, 116, 55, 48, 114, 107, 52, 87, 115, 102, 73, 120, 79, 66, 71, 111, 78, 112, 110, 107, 72, 118, 87, 67, 105, 100, 51, 78, 78, 79, 51, 119, 81, 118, 49, 81, 117, 105, 116, 98, 80, 79, 10, 106, 68, 108, 66, 119, 48, 107, 67, 103, 89, 69, 65, 54, 85, 120, 84, 90, 67, 67, 86, 110, 107, 108, 100, 55, 122, 56, 80, 56, 52, 101, 73, 109, 100, 116, 121, 88, 113, 109, 120, 52, 48, 74, 113, 87, 66, 85, 85, 98, 74, 70, 102, 48, 56, 80, 74, 118, 115, 103, 118, 108, 81, 79, 72, 10, 47, 72, 110, 51, 56, 105, 107, 66, 112, 115, 82, 79, 106, 97, 109, 75, 115, 113, 76, 113, 72, 103, 102, 114, 98, 73, 101, 50, 66, 99, 55, 113, 54, 110, 71, 73, 121, 83, 78, 122, 98, 107, 50, 57, 117, 53, 83, 49, 113, 70, 87, 72, 76, 108, 99, 51, 83, 100, 72, 89, 54, 113, 97, 103, 10, 104, 69, 103, 49, 84, 65, 116, 56, 80, 85, 57, 109, 121, 66, 80, 80, 80, 73, 85, 65, 113, 54, 48, 50, 70, 108, 122, 72, 78, 109, 70, 47, 113, 52, 116, 87, 122, 68, 102, 117, 90, 66, 111, 69, 97, 90, 56, 49, 67, 103, 69, 48, 89, 110, 99, 67, 103, 89, 69, 65, 48, 99, 74, 68, 10, 109, 106, 99, 84, 69, 110, 116, 77, 119, 76, 116, 109, 112, 112, 65, 55, 82, 86, 97, 99, 106, 85, 81, 76, 50, 118, 48, 47, 88, 49, 108, 74, 110, 105, 109, 67, 117, 103, 107, 73, 90, 109, 73, 119, 85, 97, 81, 121, 48, 65, 57, 53, 90, 88, 57, 82, 48, 80, 109, 107, 56, 73, 86, 102, 10, 98, 115, 68, 112, 55, 65, 53, 85, 102, 90, 102, 51, 72, 104, 70, 98, 73, 81, 86, 66, 100, 87, 43, 112, 52, 53, 115, 81, 70, 106, 113, 50, 86, 76, 107, 118, 97, 116, 115, 82, 104, 77, 74, 56, 90, 66, 106, 104, 81, 109, 48, 102, 68, 77, 122, 87, 80, 65, 49, 98, 101, 78, 109, 47, 10, 72, 111, 117, 65, 86, 69, 65, 69, 56, 82, 66, 112, 86, 107, 89, 100, 86, 81, 113, 109, 70, 67, 56, 86, 76, 65, 87, 101, 54, 77, 52, 99, 74, 98, 85, 105, 81, 110, 85, 67, 103, 89, 69, 65, 120, 85, 81, 84, 107, 121, 116, 50, 78, 54, 82, 68, 117, 69, 79, 122, 103, 106, 69, 78, 10, 69, 85, 79, 99, 80, 109, 122, 119, 106, 73, 65, 104, 71, 90, 43, 104, 97, 72, 101, 51, 57, 111, 67, 114, 117, 120, 84, 99, 72, 118, 48, 103, 90, 66, 122, 104, 121, 98, 74, 103, 119, 104, 108, 108, 98, 113, 86, 52, 77, 76, 112, 79, 105, 100, 119, 97, 100, 101, 100, 43, 119, 119, 83, 71, 10, 89, 72, 120, 108, 115, 43, 87, 48, 43, 103, 84, 107, 78, 74, 78, 50, 48, 119, 75, 87, 122, 108, 108, 83, 49, 54, 109, 72, 54, 69, 110, 67, 109, 110, 102, 81, 69, 82, 47, 53, 67, 111, 74, 48, 72, 121, 79, 89, 55, 77, 120, 116, 108, 55, 120, 98, 97, 113, 100, 67, 106, 122, 110, 55, 10, 48, 82, 112, 57, 53, 121, 111, 51, 43, 103, 54, 66, 119, 113, 109, 114, 71, 71, 50, 83, 86, 78, 115, 67, 103, 89, 69, 65, 104, 86, 113, 77, 52, 103, 69, 55, 108, 100, 100, 102, 114, 51, 81, 48, 121, 90, 89, 79, 113, 73, 70, 115, 50, 47, 54, 122, 122, 116, 67, 77, 78, 112, 69, 115, 10, 86, 87, 111, 115, 109, 120, 116, 100, 66, 77, 74, 78, 49, 56, 109, 100, 75, 70, 116, 43, 73, 85, 72, 49, 103, 80, 99, 70, 110, 111, 103, 99, 97, 79, 119, 113, 105, 53, 70, 56, 115, 55, 65, 109, 81, 105, 53, 107, 107, 106, 83, 109, 76, 103, 81, 69, 114, 82, 103, 75, 47, 83, 98, 115, 10, 102, 105, 97, 82, 100, 56, 121, 52, 99, 88, 43, 51, 49, 50, 100, 100, 53, 110, 52, 55, 98, 69, 98, 90, 117, 75, 111, 66, 83, 109, 54, 99, 113, 56, 50, 105, 107, 50, 49, 122, 57, 116, 73, 112, 78, 100, 107, 122, 107, 114, 112, 72, 90, 98, 79, 100, 77, 84, 83, 78, 108, 53, 74, 90, 10, 111, 76, 116, 115, 103, 88, 85, 67, 103, 89, 69, 65, 103, 107, 86, 116, 83, 86, 100, 50, 97, 121, 114, 72, 83, 98, 57, 80, 50, 121, 98, 115, 117, 65, 102, 77, 97, 66, 102, 82, 103, 49, 121, 89, 72, 88, 72, 100, 73, 113, 88, 70, 76, 54, 70, 85, 74, 115, 82, 104, 77, 47, 88, 75, 10, 71, 97, 76, 77, 69, 110, 118, 121, 118, 53, 67, 47, 105, 80, 49, 71, 48, 98, 53, 102, 89, 120, 78, 102, 77, 43, 82, 68, 120, 69, 43, 78, 69, 110, 55, 47, 109, 83, 81, 56, 120, 81, 56, 71, 84, 105, 99, 87, 82, 75, 104, 71, 66, 77, 112, 67, 53, 77, 116, 104, 90, 112, 89, 102, 10, 74, 83, 47, 50, 68, 51, 101, 53, 55, 73, 98, 66, 84, 108, 75, 86, 71, 78, 52, 70, 119, 71, 69, 114, 90, 120, 117, 121, 101, 99, 117, 53, 76, 72, 85, 85, 71, 106, 72, 70, 47, 78, 50, 79, 99, 106, 111, 67, 69, 113, 69, 49, 66, 73, 119, 61, 10, 45, 45, 45, 45, 45, 69, 78, 68, 32, 82, 83, 65, 32, 80, 82, 73, 86, 65, 84, 69, 32, 75, 69, 89, 45, 45, 45, 45, 45, 10}
testRSAPubKey = []byte{45, 45, 45, 45, 45, 66, 69, 71, 73, 78, 32, 80, 85, 66, 76, 73, 67, 32, 75, 69, 89, 45, 45, 45, 45, 45, 10, 77, 73, 73, 66, 73, 106, 65, 78, 66, 103, 107, 113, 104, 107, 105, 71, 57, 119, 48, 66, 65, 81, 69, 70, 65, 65, 79, 67, 65, 81, 56, 65, 77, 73, 73, 66, 67, 103, 75, 67, 65, 81, 69, 65, 118, 121, 104, 90, 104, 51, 82, 111, 47, 99, 115, 75, 111, 101, 88, 78, 77, 78, 48, 77, 10, 112, 89, 115, 47, 69, 114, 79, 78, 84, 72, 118, 99, 115, 121, 57, 47, 90, 104, 67, 68, 97, 48, 72, 100, 78, 122, 79, 87, 84, 122, 48, 47, 57, 98, 68, 48, 101, 85, 72, 65, 82, 85, 99, 80, 110, 78, 69, 116, 90, 116, 97, 97, 49, 114, 67, 71, 104, 81, 114, 102, 103, 53, 107, 74, 10, 106, 71, 47, 121, 107, 103, 75, 100, 53, 101, 113, 47, 112, 111, 65, 81, 97, 108, 103, 53, 113, 50, 117, 98, 49, 68, 80, 117, 111, 98, 108, 98, 121, 77, 76, 69, 79, 87, 120, 49, 54, 85, 103, 101, 52, 113, 84, 47, 109, 107, 117, 47, 78, 71, 87, 71, 52, 78, 55, 99, 103, 102, 74, 105, 10, 79, 68, 113, 78, 119, 109, 75, 109, 68, 104, 109, 118, 52, 81, 49, 67, 102, 82, 70, 115, 105, 117, 120, 75, 74, 78, 112, 79, 56, 100, 112, 113, 105, 100, 102, 90, 122, 98, 114, 115, 99, 72, 53, 86, 85, 82, 104, 54, 71, 85, 73, 90, 97, 119, 122, 43, 97, 66, 113, 74, 73, 68, 69, 87, 10, 51, 118, 110, 85, 65, 120, 104, 110, 97, 56, 79, 97, 120, 66, 77, 57, 87, 118, 90, 49, 115, 90, 82, 67, 83, 76, 115, 113, 50, 47, 107, 122, 106, 68, 86, 77, 87, 48, 115, 101, 98, 104, 67, 110, 105, 49, 56, 112, 51, 116, 66, 97, 79, 119, 118, 71, 117, 82, 47, 48, 110, 111, 87, 112, 10, 68, 71, 47, 88, 75, 85, 108, 69, 78, 117, 67, 83, 115, 113, 55, 71, 117, 90, 73, 120, 105, 122, 114, 99, 50, 100, 71, 104, 54, 54, 108, 47, 79, 75, 52, 52, 106, 56, 109, 110, 97, 89, 74, 74, 72, 72, 105, 69, 78, 84, 90, 104, 54, 48, 49, 113, 116, 48, 79, 111, 82, 83, 71, 117, 10, 89, 119, 73, 68, 65, 81, 65, 66, 10, 45, 45, 45, 45, 45, 69, 78, 68, 32, 80, 85, 66, 76, 73, 67, 32, 75, 69, 89, 45, 45, 45, 45, 45, 10}
)
/* RSA-SHA256 */
func TestEncryptRsaSha256(t *testing.T) {
msg := NewRsaSha256Message("Hello, EMP!")
err := msg.Encrypt(testRSAPubKey)
if err != nil {
t.Fatalf("Cannot encrypt message: %s", err)
}
err = msg.Sign(testRSAPrivateKey)
if err != nil {
t.Fatalf("Cannot sign message: %s", err)
}
_, err = PackBase64(msg)
if err != nil {
t.Fatalf("Cannot pack message: %s", err)
}
}
func TestDecryptRsaSha256(t *testing.T) {
msg := NewRsaSha256Message("Hello, EMP!")
err := msg.Encrypt(testRSAPubKey)
if err != nil {
t.Fatalf("Cannot encrypt message: %s", err)
}
err = msg.Sign(testRSAPrivateKey)
if err != nil {
t.Fatalf("Cannot sign message: %s", err)
}
pb, err := PackBase64(msg)
if err != nil {
t.Fatalf("Cannot pack message: %s", err)
}
emsg, err := UnpackBase64(pb)
if err != nil {
t.Fatalf("Cannot unpack base64 message: %s", err)
}
if emsg.Alg() != AlgRsaSha256 {
t.Fatalf("Expected algorithm \"%s\" got %s", AlgRsaSha256, emsg.Alg())
}
rsaMsg := LoadRsaMessage(emsg)
_, err = rsaMsg.Decrypt(testRSAPrivateKey)
if err != nil {
t.Fatalf("Cannot decrypt RSA-SHA256 message: %s", err)
}
err = rsaMsg.Verify(testRSAPubKey)
if err != nil {
t.Fatalf("Cannot verify RSA-SHA256 message: %s", err)
}
}
/* RSA-SHA512 */
func TestEncryptRsaSha512(t *testing.T) {
msg := NewRsaSha512Message("Hello, EMP!")
err := msg.Encrypt(testRSAPubKey)
if err != nil {
t.Fatalf("Cannot encrypt message: %s", err)
}
err = msg.Sign(testRSAPrivateKey)
if err != nil {
t.Fatalf("Cannot sign message: %s", err)
}
_, err = PackBase64(msg)
if err != nil {
t.Fatalf("Cannot pack message: %s", err)
}
}
func TestDecryptRsaSha512(t *testing.T) {
msg := NewRsaSha512Message("Hello, EMP!")
err := msg.Encrypt(testRSAPubKey)
if err != nil {
t.Fatalf("Cannot encrypt message: %s", err)
}
err = msg.Sign(testRSAPrivateKey)
if err != nil {
t.Fatalf("Cannot sign message: %s", err)
}
pb, err := PackBase64(msg)
if err != nil {
t.Fatalf("Cannot pack message: %s", err)
}
emsg, err := UnpackBase64(pb)
if err != nil {
t.Fatalf("Cannot unpack base64 message: %s", err)
}
if emsg.Alg() != AlgRsaSha512 {
t.Fatalf("Expected algorithm \"%s\" got %s", AlgRsaSha512, emsg.Alg())
}
rsaMsg := LoadRsaMessage(emsg)
_, err = rsaMsg.Decrypt(testRSAPrivateKey)
if err != nil {
t.Fatalf("Cannot decrypt RSA-SHA512 message: %s", err)
}
err = rsaMsg.Verify(testRSAPubKey)
if err != nil {
t.Fatalf("Cannot verify RSA-SHA512 message: %s", err)
}
}