@@ -4,21 +4,15 @@ var Buffer = require('safe-buffer').Buffer;
44var asn1 = require ( 'parse-asn1/asn1' ) ;
55var test = require ( 'tape' ) . test ;
66var nCrypto = require ( 'crypto' ) ;
7+ var semver = require ( 'semver' ) ;
78var bCrypto = require ( '../browser' ) ;
89var fixtures = require ( './fixtures' ) ;
910
10- function isNode10 ( ) {
11- return parseInt ( process . version . split ( '.' ) [ 1 ] , 10 ) <= 10 ;
12- }
13-
1411fixtures . valid . rsa . forEach ( function ( f ) {
1512 var message = Buffer . from ( f . message ) ;
1613 var pub = Buffer . from ( f [ 'public' ] , 'base64' ) ;
1714 var priv ;
1815
19- // skip passphrase tests in node 10
20- if ( f . passphrase && isNode10 ( ) ) { return ; }
21-
2216 if ( f . passphrase ) {
2317 priv = {
2418 key : Buffer . from ( f [ 'private' ] , 'base64' ) ,
@@ -63,14 +57,41 @@ fixtures.valid.rsa.forEach(function (f) {
6357 } ) ;
6458} ) ;
6559
60+ // node has padding support since 8.0
61+ // TODO: figure out why node v8.0 - v8.6 is broken
62+ ( semver . satisfies ( process . versions . node , '>= 8.6' ) ? test : test . skip ) ( 'padding option' , function ( t ) {
63+ var f = fixtures . valid . rsa [ 0 ] ;
64+ var message = Buffer . from ( f . message ) ;
65+ var priv = {
66+ key : Buffer . from ( f [ 'private' ] , 'base64' ) ,
67+ padding : 11646841 // Some invalid value
68+ } ;
69+
70+ t . test ( 'invalid padding option' , function ( st ) {
71+ var bSign = bCrypto . createSign ( f . scheme ) ;
72+ var nSign = nCrypto . createSign ( f . scheme ) ;
73+ st [ 'throws' ] (
74+ function ( ) { bSign . update ( message ) . sign ( priv ) ; } ,
75+ / i l l e g a l o r u n s u p p o r t e d p a d d i n g m o d e / ,
76+ 'browser throws exception with proper message'
77+ ) ;
78+ st [ 'throws' ] (
79+ function ( ) { nSign . update ( message ) . sign ( priv ) ; } ,
80+ / i l l e g a l o r u n s u p p o r t e d p a d d i n g m o d e / ,
81+ 'node throws exception with proper message'
82+ ) ;
83+
84+ st . end ( ) ;
85+ } ) ;
86+
87+ t . end ( ) ;
88+ } ) ;
89+
6690fixtures . valid . ec . forEach ( function ( f ) {
6791 var message = Buffer . from ( f . message ) ;
6892 var pub = Buffer . from ( f [ 'public' ] , 'base64' ) ;
6993 var priv ;
7094
71- // skip passphrase tests in node 10
72- if ( f . passphrase && isNode10 ( ) ) { return ; }
73-
7495 if ( f . passphrase ) {
7596 priv = {
7697 key : Buffer . from ( f [ 'private' ] , 'base64' ) ,
0 commit comments