@@ -40,11 +40,11 @@ public void EcdhPkcs8RoundTripDeriveSharedSecretShouldProduceIdenticalSecrets()
4040 // Given
4141 using HashAlgorithm algorithm = SHA256 . Create ( ) ;
4242 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 ) ;
4545
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" ) ;
4848
4949 // When
5050 Secret aliceSecret = alice . DeriveSharedSecret ( bob . GetPublicKey ( ) ) ;
@@ -53,4 +53,118 @@ public void EcdhPkcs8RoundTripDeriveSharedSecretShouldProduceIdenticalSecrets()
5353 // Then
5454 Assert . Equal ( aliceSecret , bobSecret ) ;
5555 }
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+ }
56170}
0 commit comments