diff --git a/lib/modules/Crypto/rsa.pike b/lib/modules/Crypto/rsa.pike index 2ecf36af1521b15b5d8a8dbf15e7d70bdead7be3..6de6a42058d83058d2f52363f7d4497ede9b84f8 100644 --- a/lib/modules/Crypto/rsa.pike +++ b/lib/modules/Crypto/rsa.pike @@ -1,4 +1,4 @@ -/* $Id: rsa.pike,v 1.21 2000/06/13 19:28:10 grubba Exp $ +/* $Id: rsa.pike,v 1.22 2000/06/13 21:37:58 grubba Exp $ * * Follow the PKCS#1 standard for padding and encryption. */ @@ -256,14 +256,38 @@ bignum get_d() return BIGNUM(cooked_get_d(), 256); } +/* Handle p and q by hand. + * They are only used for key-generation. + */ +static bignum p; +static bignum q; + bignum get_p() { - return BIGNUM(cooked_get_p(), 256); + return p; +} + +bignum get_q() +{ + return q; +} + +bignum cooked_get_p() +{ + return p->digits(256); } bignum get_q() { - return BIGNUM(cooked_get_q(), 256); + return q->digits(256); +} + +object set_private_key(bignum priv, array(bignum)|void extra) +{ + if (extra) { + [p, q] = extra; + } + return ::set_private_key(priv); } #endif /* !USE_PIKE_RSA && !USE_RSA_WRAPPER && constant(_Crypto._rsa) */