@@ -40,11 +40,11 @@ public void EcdhPkcs8RoundTripDeriveSharedSecretShouldProduceIdenticalSecrets()
40
40
// Given
41
41
using HashAlgorithm algorithm = SHA256 . Create ( ) ;
42
42
PbeParameters parameters = new ( PbeEncryptionAlgorithm . Aes256Cbc , HashAlgorithmName . SHA256 , 10 ) ;
43
- byte [ ] aliceExportedBytes = EcdhPrivateKey . Create ( ) . ExportPkcs8PrivateKey ( "AlicePassword" , parameters ) ;
44
- byte [ ] bobExportedBytes = EcdhPrivateKey . Create ( ) . ExportPkcs8PrivateKey ( "BobPassword" , parameters ) ;
43
+ byte [ ] aliceExportedBytes = EcdhPrivateKey . Create ( ) . ExportPkcs8 ( "AlicePassword" , parameters ) ;
44
+ byte [ ] bobExportedBytes = EcdhPrivateKey . Create ( ) . ExportPkcs8 ( "BobPassword" , parameters ) ;
45
45
46
- IEcdhPrivateKey alice = EcdhPrivateKey . ImportPkcs8PrivateKey ( aliceExportedBytes , "AlicePassword" ) ;
47
- IEcdhPrivateKey bob = EcdhPrivateKey . ImportPkcs8PrivateKey ( bobExportedBytes , "BobPassword" ) ;
46
+ IEcdhPrivateKey alice = EcdhPrivateKey . ImportPkcs8 ( aliceExportedBytes , "AlicePassword" ) ;
47
+ IEcdhPrivateKey bob = EcdhPrivateKey . ImportPkcs8 ( bobExportedBytes , "BobPassword" ) ;
48
48
49
49
// When
50
50
Secret aliceSecret = alice . DeriveSharedSecret ( bob . GetPublicKey ( ) ) ;
@@ -53,4 +53,118 @@ public void EcdhPkcs8RoundTripDeriveSharedSecretShouldProduceIdenticalSecrets()
53
53
// Then
54
54
Assert . Equal ( aliceSecret , bobSecret ) ;
55
55
}
56
+
57
+ [ Fact ( DisplayName = "EcdhPrivateKey should be exportable and importable" ) ]
58
+ public void EcdhPrivateKeyShouldBeExportableAndImportable ( )
59
+ {
60
+ // Given
61
+ EcdhPrivateKey expected = EcdhPrivateKey . Create ( ) ;
62
+
63
+ // When
64
+ byte [ ] privateKeyData = expected . Export ( ) ;
65
+ EcdhPrivateKey actual = EcdhPrivateKey . Import ( privateKeyData ) ;
66
+
67
+ // Then
68
+ Assert . Equal ( expected , actual ) ;
69
+ }
70
+
71
+ [ Fact ( DisplayName = "EcdhPrivateKey should be exportable and importable as PEM" ) ]
72
+ public void EcdhPrivateKeyShouldBeExportableAndImportableAsPem ( )
73
+ {
74
+ // Given
75
+ EcdhPrivateKey expected = EcdhPrivateKey . Create ( ) ;
76
+
77
+ // When
78
+ string privateKeyData = expected . ExportPem ( ) ;
79
+ EcdhPrivateKey actual = EcdhPrivateKey . ImportPem ( privateKeyData ) ;
80
+
81
+ // Then
82
+ Assert . Equal ( expected , actual ) ;
83
+ }
84
+
85
+ [ Fact ( DisplayName = "EcdhPrivateKey should be exportable and importable as PKCS8" ) ]
86
+ public void EcdhPrivateKeyShouldBeExportableAndImportableAsPkcs8 ( )
87
+ {
88
+ // Given
89
+ EcdhPrivateKey expected = EcdhPrivateKey . Create ( ) ;
90
+
91
+ // When
92
+ byte [ ] privateKeyData = expected . ExportPkcs8 ( ) ;
93
+ EcdhPrivateKey actual = EcdhPrivateKey . ImportPkcs8 ( privateKeyData ) ;
94
+
95
+ // Then
96
+ Assert . Equal ( expected , actual ) ;
97
+ }
98
+
99
+ [ Fact ( DisplayName = "EcdhPrivateKey should be exportable and importable as PKCS8 PEM" ) ]
100
+ public void EcdhPrivateKeyShouldBeExportableAndImportableAsPkcs8Pem ( )
101
+ {
102
+ // Given
103
+ EcdhPrivateKey expected = EcdhPrivateKey . Create ( ) ;
104
+
105
+ // When
106
+ string privateKeyData = expected . ExportPkcs8Pem ( ) ;
107
+ EcdhPrivateKey actual = EcdhPrivateKey . ImportPem ( privateKeyData ) ;
108
+
109
+ // Then
110
+ Assert . Equal ( expected , actual ) ;
111
+ }
112
+
113
+ [ Fact ( DisplayName = "EcdhPrivateKey should be exportable and importable as encrypted PKCS8" ) ]
114
+ public void EcdhPrivateKeyShouldBeExportableAndImportableAsEncryptedPkcs8 ( )
115
+ {
116
+ // Given
117
+ EcdhPrivateKey expected = EcdhPrivateKey . Create ( ) ;
118
+ PbeParameters parameters = new ( PbeEncryptionAlgorithm . Aes256Cbc , HashAlgorithmName . SHA256 , 10 ) ;
119
+
120
+ // When
121
+ byte [ ] privateKeyData = expected . ExportPkcs8 ( "Password" , parameters ) ;
122
+ EcdhPrivateKey actual = EcdhPrivateKey . ImportPkcs8 ( privateKeyData , "Password" ) ;
123
+
124
+ // Then
125
+ Assert . Equal ( expected , actual ) ;
126
+ }
127
+
128
+ [ Fact ( DisplayName = "EcdhPrivateKey should be exportable and importable as encrypted PKCS8 PEM" ) ]
129
+ public void EcdhPrivateKeyShouldBeExportableAndImportableAsEncryptedPkcs8Pem ( )
130
+ {
131
+ // Given
132
+ EcdhPrivateKey expected = EcdhPrivateKey . Create ( ) ;
133
+ PbeParameters parameters = new ( PbeEncryptionAlgorithm . Aes256Cbc , HashAlgorithmName . SHA256 , 10 ) ;
134
+
135
+ // When
136
+ string privateKeyData = expected . ExportPkcs8Pem ( "Password" , parameters ) ;
137
+ EcdhPrivateKey actual = EcdhPrivateKey . ImportPem ( privateKeyData , "Password" ) ;
138
+
139
+ // Then
140
+ Assert . Equal ( expected , actual ) ;
141
+ }
142
+
143
+ [ Fact ( DisplayName = "EcdhPublicKey should be exportable and importable" ) ]
144
+ public void EcdhPublicKeyShouldBeExportableAndImportable ( )
145
+ {
146
+ // Given
147
+ EcdhPublicKey expected = EcdhPrivateKey . Create ( ) . GetPublicKey ( ) ;
148
+
149
+ // When
150
+ byte [ ] privateKeyData = expected . Export ( ) ;
151
+ EcdhPublicKey actual = EcdhPublicKey . Import ( privateKeyData ) ;
152
+
153
+ // Then
154
+ Assert . Equal ( expected , actual ) ;
155
+ }
156
+
157
+ [ Fact ( DisplayName = "EcdhPublicKey should be exportable and importable as PEM" ) ]
158
+ public void EcdhPublicKeyShouldBeExportableAndImportableAsPem ( )
159
+ {
160
+ // Given
161
+ EcdhPublicKey expected = EcdhPrivateKey . Create ( ) . GetPublicKey ( ) ;
162
+
163
+ // When
164
+ string privateKeyData = expected . ExportPem ( ) ;
165
+ EcdhPublicKey actual = EcdhPublicKey . ImportPem ( privateKeyData ) ;
166
+
167
+ // Then
168
+ Assert . Equal ( expected , actual ) ;
169
+ }
56
170
}
0 commit comments