@@ -60,7 +60,21 @@ function rsassaV15SignFn(name) {
60
60
return promise ;
61
61
} ;
62
62
63
- return helpers . setupFallback ( null , webcrypto , fallback ) ;
63
+ var nodejs ;
64
+ if ( helpers . nodeCrypto && helpers . nodeCrypto . getHashes ( ) . indexOf ( hash ) > - 1 ) {
65
+ nodejs = function ( key , pdata ) {
66
+ key = rsaUtil . convertToPem ( key , false ) ;
67
+ var sign = helpers . nodeCrypto . createSign ( hash ) ;
68
+ sign . update ( pdata ) ;
69
+
70
+ return {
71
+ data : pdata ,
72
+ mac : sign . sign ( rsaUtil . convertToPem ( key , false ) )
73
+ } ;
74
+ } ;
75
+ }
76
+
77
+ return helpers . setupFallback ( nodejs , webcrypto , fallback ) ;
64
78
}
65
79
66
80
function rsassaV15VerifyFn ( name ) {
@@ -118,7 +132,26 @@ function rsassaV15VerifyFn(name) {
118
132
return promise ;
119
133
} ;
120
134
121
- return helpers . setupFallback ( null , webcrypto , fallback ) ;
135
+ var nodejs ;
136
+ if ( helpers . nodeCrypto && helpers . nodeCrypto . getHashes ( ) . indexOf ( md ) > - 1 ) {
137
+ nodejs = function ( key , pdata , mac ) {
138
+ var verify = helpers . nodeCrypto . createVerify ( md ) ;
139
+ verify . update ( pdata ) ;
140
+ verify . end ( ) ;
141
+ var result = verify . verify ( rsaUtil . convertToPem ( key , true ) , mac ) ;
142
+ if ( ! result ) {
143
+ return Promise . reject ( new Error ( "verification failed" ) ) ;
144
+ }
145
+
146
+ return {
147
+ data : pdata ,
148
+ mac : mac ,
149
+ valid : true ,
150
+ } ;
151
+ } ;
152
+ }
153
+
154
+ return helpers . setupFallback ( nodejs , webcrypto , fallback ) ;
122
155
}
123
156
124
157
// ### RSA-PSS
0 commit comments