@@ -185,50 +185,54 @@ test_rsa('RSA_PKCS1_PADDING');
185185test_rsa ( 'RSA_PKCS1_OAEP_PADDING' ) ;
186186
187187// Test RSA key signing/verification
188- let rsaSign = crypto . createSign ( 'SHA1' ) ;
189- let rsaVerify = crypto . createVerify ( 'SHA1' ) ;
190- assert . ok ( rsaSign ) ;
191- assert . ok ( rsaVerify ) ;
192-
193- const expectedSignature = fixtures . readKey (
194- 'rsa_public_sha1_signature_signedby_rsa_private_pkcs8.sha1' ,
195- 'hex'
196- ) ;
197-
198- rsaSign . update ( rsaPubPem ) ;
199- let rsaSignature = rsaSign . sign ( rsaKeyPem , 'hex' ) ;
200- assert . strictEqual ( rsaSignature , expectedSignature ) ;
201-
202- rsaVerify . update ( rsaPubPem ) ;
203- assert . strictEqual ( rsaVerify . verify ( rsaPubPem , rsaSignature , 'hex' ) , true ) ;
204-
205- // Test RSA PKCS#8 key signing/verification
206- rsaSign = crypto . createSign ( 'SHA1' ) ;
207- rsaSign . update ( rsaPubPem ) ;
208- rsaSignature = rsaSign . sign ( rsaPkcs8KeyPem , 'hex' ) ;
209- assert . strictEqual ( rsaSignature , expectedSignature ) ;
210-
211- rsaVerify = crypto . createVerify ( 'SHA1' ) ;
212- rsaVerify . update ( rsaPubPem ) ;
213- assert . strictEqual ( rsaVerify . verify ( rsaPubPem , rsaSignature , 'hex' ) , true ) ;
214-
215- // Test RSA key signing/verification with encrypted key
216- rsaSign = crypto . createSign ( 'SHA1' ) ;
217- rsaSign . update ( rsaPubPem ) ;
218- const signOptions = { key : rsaKeyPemEncrypted , passphrase : 'password' } ;
219- rsaSignature = rsaSign . sign ( signOptions , 'hex' ) ;
220- assert . strictEqual ( rsaSignature , expectedSignature ) ;
221-
222- rsaVerify = crypto . createVerify ( 'SHA1' ) ;
223- rsaVerify . update ( rsaPubPem ) ;
224- assert . strictEqual ( rsaVerify . verify ( rsaPubPem , rsaSignature , 'hex' ) , true ) ;
225-
226- rsaSign = crypto . createSign ( 'SHA1' ) ;
227- rsaSign . update ( rsaPubPem ) ;
228- assert . throws ( ( ) => {
229- const signOptions = { key : rsaKeyPemEncrypted , passphrase : 'wrong' } ;
230- rsaSign . sign ( signOptions , 'hex' ) ;
231- } , decryptError ) ;
188+ {
189+ let rsaSign = crypto . createSign ( 'SHA1' ) ;
190+ let rsaVerify = crypto . createVerify ( 'SHA1' ) ;
191+ assert . ok ( rsaSign ) ;
192+ assert . ok ( rsaVerify ) ;
193+
194+ // Expected signature was generated on unix, so Windows \r must be removed.
195+ const input = rsaPubPem . replace ( / \r / g, '' ) ;
196+ const expectedSignature = fixtures . readKey (
197+ 'rsa_public_sha1_signature_signedby_rsa_private_pkcs8.sha1' ,
198+ 'hex'
199+ ) ;
200+
201+ rsaSign . update ( input ) ;
202+ let rsaSignature = rsaSign . sign ( rsaKeyPem , 'hex' ) ;
203+ assert . strictEqual ( rsaSignature , expectedSignature ) ;
204+
205+ rsaVerify . update ( input ) ;
206+ assert . strictEqual ( rsaVerify . verify ( rsaPubPem , rsaSignature , 'hex' ) , true ) ;
207+
208+ // Test RSA PKCS#8 key signing/verification
209+ rsaSign = crypto . createSign ( 'SHA1' ) ;
210+ rsaSign . update ( input ) ;
211+ rsaSignature = rsaSign . sign ( rsaPkcs8KeyPem , 'hex' ) ;
212+ assert . strictEqual ( rsaSignature , expectedSignature ) ;
213+
214+ rsaVerify = crypto . createVerify ( 'SHA1' ) ;
215+ rsaVerify . update ( input ) ;
216+ assert . strictEqual ( rsaVerify . verify ( rsaPubPem , rsaSignature , 'hex' ) , true ) ;
217+
218+ // Test RSA key signing/verification with encrypted key
219+ rsaSign = crypto . createSign ( 'SHA1' ) ;
220+ rsaSign . update ( input ) ;
221+ const signOptions = { key : rsaKeyPemEncrypted , passphrase : 'password' } ;
222+ rsaSignature = rsaSign . sign ( signOptions , 'hex' ) ;
223+ assert . strictEqual ( rsaSignature , expectedSignature ) ;
224+
225+ rsaVerify = crypto . createVerify ( 'SHA1' ) ;
226+ rsaVerify . update ( input ) ;
227+ assert . strictEqual ( rsaVerify . verify ( rsaPubPem , rsaSignature , 'hex' ) , true ) ;
228+
229+ rsaSign = crypto . createSign ( 'SHA1' ) ;
230+ rsaSign . update ( input ) ;
231+ assert . throws ( ( ) => {
232+ const signOptions = { key : rsaKeyPemEncrypted , passphrase : 'wrong' } ;
233+ rsaSign . sign ( signOptions , 'hex' ) ;
234+ } , decryptError ) ;
235+ }
232236
233237//
234238// Test RSA signing and verification
0 commit comments