@@ -72,6 +72,29 @@ test('valid RSA fixtures', function (t) {
7272 } ) ;
7373} ) ;
7474
75+ test ( 'generic SHA algorithms sign RSA keys like node' , function ( t ) {
76+ var f = fixtures . valid . rsa [ 0 ] ;
77+ var message = Buffer . from ( f . message ) ;
78+ var priv = Buffer . from ( f [ 'private' ] , 'base64' ) ;
79+ var pub = Buffer . from ( f [ 'public' ] , 'base64' ) ;
80+
81+ [ 'sha224' , 'sha256' , 'sha384' , 'sha512' ] . forEach ( function ( scheme ) {
82+ t . test ( 'algorithm: ' + scheme , { skip : ! ( nCrypto . getHashes ( ) . indexOf ( scheme ) >= 0 ) } , function ( st ) {
83+ var bSig = bCrypto . createSign ( scheme ) . update ( message ) . sign ( priv ) ;
84+ var nSig = nCrypto . createSign ( scheme ) . update ( message ) . sign ( priv ) ;
85+
86+ st . equals ( bSig . length , nSig . length , 'correct length' ) ;
87+ st . equals ( bSig . toString ( 'hex' ) , nSig . toString ( 'hex' ) , 'equal sigs' ) ;
88+ st . ok ( nCrypto . createVerify ( scheme ) . update ( message ) . verify ( pub , bSig ) , 'node validates browser sig' ) ;
89+ st . ok ( bCrypto . createVerify ( scheme ) . update ( message ) . verify ( pub , nSig ) , 'browser validates node sig' ) ;
90+
91+ st . end ( ) ;
92+ } ) ;
93+ } ) ;
94+
95+ t . end ( ) ;
96+ } ) ;
97+
7598// node has padding support since 8.0
7699// TODO: figure out why node v8.0 - v8.6 is broken
77100( semver . satisfies ( process . versions . node , '>= 8.6' ) ? test : test . skip ) ( 'padding option' , function ( t ) {
0 commit comments