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 package keywrap
26
27 import (
28 "bytes"
29 "testing"
30 )
31
32
33 func TestWrap(t *testing.T) {
34 key := []byte{64, 154, 239, 170, 64, 40, 195, 99, 19, 84, 192, 142, 192, 238, 207, 217}
35 sharedKey := []byte{25, 172, 32, 130, 225, 114, 26, 181, 138, 106, 254, 192, 95, 133, 74, 82}
36 expectedWrappedKey := []byte{164, 255, 251, 1, 64, 200, 65, 200, 34, 197, 81, 143, 43, 211, 240, 38, 191, 161, 181, 117, 119, 68, 44, 80}
37
38 wrappedKey, err := Wrap(sharedKey, key)
39 if err != nil {
40 t.Fatal("keywrap: failed to Wrap key: ", err)
41 }
42
43 if !bytes.Equal(expectedWrappedKey, wrappedKey) {
44 t.Fatalf("unwrap: unexpected wrapped key:\n\t%v\n\t%v", expectedWrappedKey, wrappedKey)
45 }
46 }
47
48
49 func TestUnwrap(t *testing.T) {
50 sharedKey := []byte{25, 172, 32, 130, 225, 114, 26, 181, 138, 106, 254, 192, 95, 133, 74, 82}
51 wrappedKey := []byte{164, 255, 251, 1, 64, 200, 65, 200, 34, 197, 81, 143, 43, 211, 240, 38, 191, 161, 181, 117, 119, 68, 44, 80}
52 expectedKey := []byte{64, 154, 239, 170, 64, 40, 195, 99, 19, 84, 192, 142, 192, 238, 207, 217}
53
54 key, err := Unwrap(sharedKey, wrappedKey)
55 if err != nil {
56 t.Fatal("keywrap: failed to unwrap key: ", err)
57 }
58
59 if !bytes.Equal(expectedKey, key) {
60 t.Fatalf("keywrap: unexpected wrapped key:\n\t%v\n\t%v", expectedKey, key)
61 }
62 }
63
64
65 func TestWrapError(t *testing.T) {
66 plaintext := make([]byte, 7)
67 key := make([]byte, 32)
68 _, err := Wrap(key, plaintext)
69 if err != ErrWrapPlaintext {
70 t.Fatalf("keywrap: expected Wrap to fail with %v, but have err=%v", ErrWrapPlaintext, err)
71 }
72
73 plaintext = append(plaintext, byte(0))
74 _, err = Wrap(key[:31], plaintext)
75 if err != ErrInvalidKey {
76 t.Fatalf("keywrap: expected Wrap to fail with %v, but have err=%v", ErrInvalidKey, err)
77 }
78 }
79
80
81 func TestUnwrapError(t *testing.T) {
82 key := []byte{64, 154, 239, 170, 64, 40, 195, 99, 19, 84, 192, 142, 192, 238, 207, 217}
83 sharedKey := []byte{25, 172, 32, 130, 225, 114, 26, 181, 138, 106, 254, 192, 95, 133, 74, 82}
84 wrapped, err := Wrap(key, sharedKey)
85 if err != nil {
86 t.Fatalf("%v", err)
87 }
88
89 l := len(wrapped)
90 _, err = Unwrap(key, wrapped[:l-2])
91 if err != ErrUnwrapCiphertext {
92 t.Fatalf("keywrap: expected Unwrap to fail with %v, but have err=%v", ErrUnwrapCiphertext, err)
93 }
94
95 l = len(key)
96 _, err = Unwrap(key[:l-2], wrapped)
97 if err != ErrInvalidKey {
98 t.Fatalf("keywrap: expected Unwrap to fail with %v, but have err=%v", ErrInvalidKey, err)
99 }
100
101 wrapped[0]--
102 _, err = Unwrap(key, wrapped)
103 if err != ErrUnwrapFailed {
104 t.Fatalf("keywrap: expected Unwrap to fail with %v, but have err=%v", ErrUnwrapFailed, err)
105 }
106
107 }
108
View as plain text