|
213 | 213 | // d [binary!] "Private exponent"
|
214 | 214 | // p [binary!] "Prime number 1"
|
215 | 215 | // q [binary!] "Prime number 2"
|
216 |
| -// dP [binary!] |
217 |
| -// dQ [binary!] |
218 |
| -// qInv [binary!] |
| 216 | +// dP [binary! none!] "Exponent1: d mod (p-1)" |
| 217 | +// dQ [binary! none!] "Exponent2: d mod (q-1)" |
| 218 | +// qInv [binary!] "Coefficient: (inverse of q) mod p" |
219 | 219 | // ]
|
220 | 220 | ***********************************************************************/
|
221 | 221 | {
|
|
225 | 225 | REBSER *d = VAL_SERIES(D_ARG(4));
|
226 | 226 | REBSER *p = VAL_SERIES(D_ARG(5));
|
227 | 227 | REBSER *q = VAL_SERIES(D_ARG(6));
|
228 |
| - REBSER *dP = VAL_SERIES(D_ARG(7)); |
229 |
| - REBSER *dQ = VAL_SERIES(D_ARG(8)); |
| 228 | + REBVAL *val_dp = D_ARG(7) ; |
| 229 | + REBVAL *val_dq = D_ARG(8) ; |
230 | 230 | REBSER *qInv = VAL_SERIES(D_ARG(9));
|
231 | 231 |
|
| 232 | + REBYTE *dp = NULL; |
| 233 | + REBYTE *dq = NULL; |
| 234 | + REBCNT len_dp = 0; |
| 235 | + REBCNT len_dq = 0; |
| 236 | + |
232 | 237 | REBVAL *ret = D_RET;
|
233 | 238 | REBSER *ser = Make_Series(sizeof(RSA_CTX), 1, FALSE);
|
234 | 239 | SERIES_TAIL(ser) = sizeof(RSA_CTX);
|
|
239 | 244 | SET_HANDLE(ret, ser, SYM_RSA, HANDLE_SERIES);
|
240 | 245 |
|
241 | 246 | if(ref_private) {
|
| 247 | + if (IS_BINARY(val_dp)) { |
| 248 | + dp = BIN_DATA(VAL_SERIES(val_dp)); |
| 249 | + len_dp = BIN_LEN(VAL_SERIES(val_dp)); |
| 250 | + } |
| 251 | + if (IS_BINARY(val_dq)) { |
| 252 | + dq = BIN_DATA(VAL_SERIES(val_dq)); |
| 253 | + len_dq = BIN_LEN(VAL_SERIES(val_dq)); |
| 254 | + } |
242 | 255 | RSA_priv_key_new(
|
243 | 256 | rsa_ctx,
|
244 | 257 | BIN_DATA(n), BIN_LEN(n),
|
245 | 258 | BIN_DATA(e), BIN_LEN(e),
|
246 | 259 | BIN_DATA(d), BIN_LEN(d),
|
247 | 260 | BIN_DATA(p), BIN_LEN(p),
|
248 | 261 | BIN_DATA(q), BIN_LEN(q),
|
249 |
| - BIN_DATA(dP), BIN_LEN(dP), |
250 |
| - BIN_DATA(dQ), BIN_LEN(dQ), |
| 262 | + dp, len_dp, dq, len_dq, |
251 | 263 | BIN_DATA(qInv), BIN_LEN(qInv)
|
252 | 264 | );
|
253 | 265 | } else {
|
|
0 commit comments