@@ -2,6 +2,8 @@ package signerverifier
2
2
3
3
import (
4
4
_ "embed"
5
+ "fmt"
6
+ "strings"
5
7
"testing"
6
8
7
9
"github.com/stretchr/testify/assert"
@@ -10,6 +12,9 @@ import (
10
12
//go:embed test-data/rsa-test-key
11
13
var rsaPrivateKey []byte
12
14
15
+ //go:embed test-data/rsa-test-key-pkcs8
16
+ var rsaPrivateKeyPKCS8 []byte
17
+
13
18
//go:embed test-data/rsa-test-key.pub
14
19
var rsaPublicKey []byte
15
20
@@ -27,8 +32,6 @@ var ecdsaPublicKey []byte
27
32
28
33
func TestLoadKey (t * testing.T ) {
29
34
// RSA expected values
30
- expectedRSAPrivateKey := "-----BEGIN RSA PRIVATE KEY-----\n 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\n -----END RSA PRIVATE KEY-----"
31
- expectedRSAPublicKey := "-----BEGIN PUBLIC KEY-----\n MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA04egZRic+dZMVtiQc56D\n ejU4FF1q3aOkUKnD+Q4lTbj1zp6ODKJTcktupmrad68jqtMiSGG8he6ELFs377q8\n bbgEUMWgAf+06Q8oFvUSfOXzZNFI7H5SMPOJY5aDWIMIEZ8DlcO7TfkA7D3iAEJX\n xxTOVS3UAIk5umO7Y7t7yXr8O/C4u78krGazCnoblcekMLJZV4O/5BloWNAe/B1c\n vZdaZUf3brD4ZZrxEtXw/tefhn1aHsSUajVW2wwjSpKhqj7Z0XS3bDS3T95/3xsN\n 6+hlS6A7rJfiWpKIRHj0vh2SXLDmmhQl1In8TD/aiycTUyWcBRHVPlYFgYPt6SaT\n VQSgMzSxC43/2fINb2fyt8SbUHJ3Ct+mzRzd/1AQikWhBdstJLxInewzjYE/sb+c\n 2CmCxMPQG2BwmAWXaaumeJcXVPBlMgAcjMatM8bPByTbXpKDnQslOE7g/gswDIwn\n Em53T13mZzYUvbLJ0q3aljZVLIC3IZn3ZwA2yCWchBkVAgMBAAE=\n -----END PUBLIC KEY-----"
32
35
expectedRSAKeyID := "4e8d20af09fcaed6c388a186427f94a5f7ff5591ec295f4aab2cff49ffe39e9b"
33
36
34
37
// ED25519 expected values
@@ -37,67 +40,83 @@ func TestLoadKey(t *testing.T) {
37
40
expectedED25519KeyID := "52e3b8e73279d6ebdd62a5016e2725ff284f569665eb92ccb145d83817a02997"
38
41
39
42
// ECDSA expected values
40
- expectedECDSAPrivateKey := "-----BEGIN PRIVATE KEY-----\n MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgCjoPFeWCpjL5OS+h\n wg7JaWoDcpW2np2VJjuVLeSR4QyhRANCAAS74cSqqlctrjyVcf2uRHKCx+wIqrVc\n zfqhfKYn3DGkzrycKqStkJWdn2WQR4LAPypZhM3EPnJ9ZfAmMWH4ruot\n -----END PRIVATE KEY-----"
41
- expectedECDSAPublicKey := "-----BEGIN PUBLIC KEY-----\n MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEu+HEqqpXLa48lXH9rkRygsfsCKq1\n XM36oXymJ9wxpM68nCqkrZCVnZ9lkEeCwD8qWYTNxD5yfWXwJjFh+K7qLQ==\n -----END PUBLIC KEY-----"
42
43
expectedECDSAKeyID := "98adf38602c48c5479e9a991ee3f8cbf541ee4f985e00f7a5fc4148d9a45b704"
43
44
44
- t .Run ("RSA private key" , func (t * testing.T ) {
45
- key , err := LoadKey (rsaPrivateKey )
46
- assert .Nil (t , err )
47
- assert .Equal (t , expectedRSAKeyID , key .KeyID )
48
- assert .Equal (t , expectedRSAPublicKey , key .KeyVal .Public )
49
- assert .Equal (t , expectedRSAPrivateKey , key .KeyVal .Private )
50
- assert .Equal (t , RSAKeyScheme , key .Scheme )
51
- assert .Equal (t , RSAKeyType , key .KeyType )
52
- })
53
-
54
- t .Run ("RSA public key" , func (t * testing.T ) {
55
- key , err := LoadKey (rsaPublicKey )
56
- assert .Nil (t , err )
57
- assert .Equal (t , expectedRSAKeyID , key .KeyID )
58
- assert .Equal (t , expectedRSAPublicKey , key .KeyVal .Public )
59
- assert .Equal (t , "" , key .KeyVal .Private )
60
- assert .Equal (t , RSAKeyScheme , key .Scheme )
61
- assert .Equal (t , RSAKeyType , key .KeyType )
62
- })
63
-
64
- t .Run ("ED25519 private key" , func (t * testing.T ) {
65
- key , err := LoadKey (ed25519PrivateKey )
66
- assert .Nil (t , err )
67
- assert .Equal (t , expectedED25519KeyID , key .KeyID )
68
- assert .Equal (t , expectedED25519PublicKey , key .KeyVal .Public )
69
- assert .Equal (t , expectedED25519PrivateKey , key .KeyVal .Private )
70
- assert .Equal (t , ED25519KeyType , key .Scheme )
71
- assert .Equal (t , ED25519KeyType , key .KeyType )
72
- })
73
-
74
- t .Run ("ED25519 public key" , func (t * testing.T ) {
75
- key , err := LoadKey (ed25519PublicKey )
76
- assert .Nil (t , err )
77
- assert .Equal (t , expectedED25519KeyID , key .KeyID )
78
- assert .Equal (t , expectedED25519PublicKey , key .KeyVal .Public )
79
- assert .Equal (t , "" , key .KeyVal .Private )
80
- assert .Equal (t , ED25519KeyType , key .Scheme )
81
- assert .Equal (t , ED25519KeyType , key .KeyType )
82
- })
83
-
84
- t .Run ("ECDSA private key" , func (t * testing.T ) {
85
- key , err := LoadKey (ecdsaPrivateKey )
86
- assert .Nil (t , err )
87
- assert .Equal (t , expectedECDSAKeyID , key .KeyID )
88
- assert .Equal (t , expectedECDSAPublicKey , key .KeyVal .Public )
89
- assert .Equal (t , expectedECDSAPrivateKey , key .KeyVal .Private )
90
- assert .Equal (t , ECDSAKeyScheme , key .Scheme )
91
- assert .Equal (t , ECDSAKeyType , key .KeyType )
92
- })
93
-
94
- t .Run ("ECDSA public key" , func (t * testing.T ) {
95
- key , err := LoadKey (ecdsaPublicKey )
96
- assert .Nil (t , err )
97
- assert .Equal (t , expectedECDSAKeyID , key .KeyID )
98
- assert .Equal (t , expectedECDSAPublicKey , key .KeyVal .Public )
99
- assert .Equal (t , "" , key .KeyVal .Private )
100
- assert .Equal (t , ECDSAKeyScheme , key .Scheme )
101
- assert .Equal (t , ECDSAKeyType , key .KeyType )
102
- })
45
+ tests := map [string ]struct {
46
+ keyBytes []byte
47
+ expectedPrivateKey string
48
+ expectedPublicKey string
49
+ expectedKeyID string
50
+ expectedKeyType string
51
+ expectedScheme string
52
+ }{
53
+ "RSA private key" : {
54
+ keyBytes : rsaPrivateKey ,
55
+ expectedPrivateKey : strings .TrimSpace (string (rsaPrivateKey )),
56
+ expectedPublicKey : strings .TrimSpace (string (rsaPublicKey )),
57
+ expectedKeyID : expectedRSAKeyID ,
58
+ expectedKeyType : RSAKeyType ,
59
+ expectedScheme : RSAKeyScheme ,
60
+ },
61
+ "RSA private key (PKCS8)" : {
62
+ keyBytes : rsaPrivateKeyPKCS8 ,
63
+ expectedPrivateKey : strings .TrimSpace (string (rsaPrivateKeyPKCS8 )),
64
+ expectedPublicKey : strings .TrimSpace (string (rsaPublicKey )),
65
+ expectedKeyID : expectedRSAKeyID ,
66
+ expectedKeyType : RSAKeyType ,
67
+ expectedScheme : RSAKeyScheme ,
68
+ },
69
+ "RSA public key" : {
70
+ keyBytes : rsaPublicKey ,
71
+ expectedPrivateKey : "" ,
72
+ expectedPublicKey : strings .TrimSpace (string (rsaPublicKey )),
73
+ expectedKeyID : expectedRSAKeyID ,
74
+ expectedKeyType : RSAKeyType ,
75
+ expectedScheme : RSAKeyScheme ,
76
+ },
77
+ "ED25519 private key" : {
78
+ keyBytes : ed25519PrivateKey ,
79
+ expectedPrivateKey : expectedED25519PrivateKey ,
80
+ expectedPublicKey : expectedED25519PublicKey ,
81
+ expectedKeyID : expectedED25519KeyID ,
82
+ expectedKeyType : ED25519KeyType ,
83
+ expectedScheme : ED25519KeyType ,
84
+ },
85
+ "ED25519 public key" : {
86
+ keyBytes : ed25519PublicKey ,
87
+ expectedPrivateKey : "" ,
88
+ expectedPublicKey : expectedED25519PublicKey ,
89
+ expectedKeyID : expectedED25519KeyID ,
90
+ expectedKeyType : ED25519KeyType ,
91
+ expectedScheme : ED25519KeyType ,
92
+ },
93
+ "ECDSA private key" : {
94
+ keyBytes : ecdsaPrivateKey ,
95
+ expectedPrivateKey : strings .TrimSpace (string (ecdsaPrivateKey )),
96
+ expectedPublicKey : strings .TrimSpace (string (ecdsaPublicKey )),
97
+ expectedKeyID : expectedECDSAKeyID ,
98
+ expectedKeyType : ECDSAKeyType ,
99
+ expectedScheme : ECDSAKeyScheme ,
100
+ },
101
+ "ECDSA public key" : {
102
+ keyBytes : ecdsaPublicKey ,
103
+ expectedPrivateKey : "" ,
104
+ expectedPublicKey : strings .TrimSpace (string (ecdsaPublicKey )),
105
+ expectedKeyID : expectedECDSAKeyID ,
106
+ expectedKeyType : ECDSAKeyType ,
107
+ expectedScheme : ECDSAKeyScheme ,
108
+ },
109
+ }
110
+
111
+ for name , test := range tests {
112
+ t .Run (name , func (t * testing.T ) {
113
+ key , err := LoadKey (test .keyBytes )
114
+ assert .Nil (t , err , fmt .Sprintf ("unexpected error in test '%s'" , name ))
115
+ assert .Equal (t , test .expectedKeyID , key .KeyID )
116
+ assert .Equal (t , test .expectedPublicKey , key .KeyVal .Public )
117
+ assert .Equal (t , test .expectedPrivateKey , key .KeyVal .Private )
118
+ assert .Equal (t , test .expectedScheme , key .Scheme )
119
+ assert .Equal (t , test .expectedKeyType , key .KeyType )
120
+ })
121
+ }
103
122
}
0 commit comments