You can subscribe to this list here.
2003 |
Jan
|
Feb
(2) |
Mar
(1) |
Apr
(13) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2004 |
Jan
|
Feb
(50) |
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2005 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(2) |
Dec
|
2006 |
Jan
(8) |
Feb
|
Mar
|
Apr
(5) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(7) |
Dec
|
2007 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(9) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2009 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(7) |
Dec
|
From: <iro...@us...> - 2004-02-19 02:29:45
|
Update of /cvsroot/perl-openssl/Crypt/OpenSSL/RSA In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7531 Modified Files: RSA.xs Log Message: fully flush error queue on failure Index: RSA.xs =================================================================== RCS file: /cvsroot/perl-openssl/Crypt/OpenSSL/RSA/RSA.xs,v retrieving revision 1.50 retrieving revision 1.51 diff -C2 -d -r1.50 -r1.51 *** RSA.xs 19 Feb 2004 00:36:49 -0000 1.50 --- RSA.xs 19 Feb 2004 02:19:40 -0000 1.51 *************** *** 5,8 **** --- 5,9 ---- #include <openssl/ssl.h> #include <openssl/bn.h> + #include <openssl/err.h> typedef struct *************** *** 21,28 **** #define PACKAGE_NAME "Crypt::OpenSSL::RSA" ! //FIXME - there may be more than one error on the queue. ! #define CHECK_OPEN_SSL(p_result) if (!(p_result)) \ ! croak("%s:%d: OpenSSL error: %s", \ ! __FILE__, __LINE__, ERR_reason_error_string(ERR_get_error())); #define PACKAGE_CROAK(p_message) croak("%s:%d: %s", (p_message)) --- 22,35 ---- #define PACKAGE_NAME "Crypt::OpenSSL::RSA" ! void croakSsl(char* p_file, int p_line) ! { ! const char* errorReason; ! /* Just return the top error on the stack */ ! errorReason = ERR_reason_error_string(ERR_get_error()); ! ERR_clear_error(); ! croak("%s:%d: OpenSSL error: %s", p_file, p_line, errorReason); ! } ! ! #define CHECK_OPEN_SSL(p_result) if (!(p_result)) croakSsl(__FILE__, __LINE__); #define PACKAGE_CROAK(p_message) croak("%s:%d: %s", (p_message)) *************** *** 347,351 **** { RSA_free(rsa); ! CHECK_OPEN_SSL(0) } } --- 354,358 ---- { RSA_free(rsa); ! CHECK_OPEN_SSL(0); } } |
From: <iro...@us...> - 2004-02-19 02:29:45
|
Update of /cvsroot/perl-openssl/Crypt/OpenSSL/RSA/t In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7531/t Modified Files: bignum.t Log Message: fully flush error queue on failure Index: bignum.t =================================================================== RCS file: /cvsroot/perl-openssl/Crypt/OpenSSL/RSA/t/bignum.t,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** bignum.t 19 Feb 2004 00:36:49 -0000 1.6 --- bignum.t 19 Feb 2004 02:19:40 -0000 1.7 *************** *** 6,9 **** --- 6,16 ---- my $bignum_missing; + BEGIN + { + eval { require Crypt::OpenSSL::Bignum; }; + $bignum_missing = $@; + plan(tests => $bignum_missing ? 0 : 64); + } + sub check_datum { *************** *** 30,47 **** } - BEGIN - { - eval { require Crypt::OpenSSL::Bignum; }; - $bignum_missing = $@; - if($bignum_missing) - { - plan tests => 0; - } - else - { - plan test => 63; - } - } - unless ($bignum_missing) { --- 37,40 ---- *************** *** 104,108 **** --- 97,109 ---- $e, $d, undef, $q); }; + ok($@ =~ /OpenSSL error: p not prime/); + #try again, to make sure the error queue was properly flushed + eval + { + Crypt::OpenSSL::RSA->new_key_from_parameters + ($n->sub(Crypt::OpenSSL::Bignum->one()), + $e, $d, undef, $q); + }; ok($@ =~ /OpenSSL error: p not prime/); } |
From: <iro...@us...> - 2004-02-19 00:46:50
|
Update of /cvsroot/perl-openssl/Crypt/OpenSSL/RSA/t In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21248/t Modified Files: bignum.t Log Message: improve error handling, try to not leak memory on errors Index: bignum.t =================================================================== RCS file: /cvsroot/perl-openssl/Crypt/OpenSSL/RSA/t/bignum.t,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** bignum.t 18 Feb 2004 21:37:32 -0000 1.5 --- bignum.t 19 Feb 2004 00:36:49 -0000 1.6 *************** *** 40,44 **** else { ! plan test => 62; } } --- 40,44 ---- else { ! plan test => 63; } } *************** *** 97,99 **** --- 97,108 ---- $rsa = Crypt::OpenSSL::RSA->new_key_from_parameters($n, $e, undef, $p); check_key_parameters($rsa, $n, $e, $d, $p, $q, $dmp1, $dmq1, $iqmp); + + eval + { + Crypt::OpenSSL::RSA->new_key_from_parameters + ($n->sub(Crypt::OpenSSL::Bignum->one()), + $e, $d, undef, $q); + }; + + ok($@ =~ /OpenSSL error: p not prime/); } |
From: <iro...@us...> - 2004-02-19 00:46:50
|
Update of /cvsroot/perl-openssl/Crypt/OpenSSL/RSA In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21248 Modified Files: RSA.xs Log Message: improve error handling, try to not leak memory on errors Index: RSA.xs =================================================================== RCS file: /cvsroot/perl-openssl/Crypt/OpenSSL/RSA/RSA.xs,v retrieving revision 1.49 retrieving revision 1.50 diff -C2 -d -r1.49 -r1.50 *** RSA.xs 18 Feb 2004 22:09:48 -0000 1.49 --- RSA.xs 19 Feb 2004 00:36:49 -0000 1.50 *************** *** 21,24 **** --- 21,25 ---- #define PACKAGE_NAME "Crypt::OpenSSL::RSA" + //FIXME - there may be more than one error on the queue. #define CHECK_OPEN_SSL(p_result) if (!(p_result)) \ croak("%s:%d: OpenSSL error: %s", \ *************** *** 277,281 **** CODE: CHECK_OPEN_SSL(rsa = RSA_generate_key(SvIV(bitsSV), exponent, NULL, NULL)) - RETVAL = make_rsa_obj(proto, rsa); OUTPUT: --- 278,281 ---- *************** *** 299,302 **** --- 299,304 ---- CODE: { + //FIXME - do a better job of cleaning up in the event of errors + if (!(n && e)) { *************** *** 313,330 **** { p = BN_new(); ! CHECK_OPEN_SSL(BN_div(p, bn, n, q, ctx)) ! if (! BN_is_zero(bn)) ! { ! croak("q does not divide n"); ! } } else if (! q) { q = BN_new(); ! CHECK_OPEN_SSL(BN_div(q, bn, n, p, ctx)) ! if (! BN_is_zero(bn)) ! { ! croak("p does not divide n"); ! } } rsa->p = p; --- 315,324 ---- { p = BN_new(); ! CHECK_OPEN_SSL(BN_div(p, NULL, n, q, ctx)) } else if (! q) { q = BN_new(); ! CHECK_OPEN_SSL(BN_div(q, NULL, n, p, ctx)) } rsa->p = p; *************** *** 350,353 **** --- 344,352 ---- BN_clear_free(p_minus_1); BN_clear_free(q_minus_1); + if (RSA_check_key(rsa) != 1) + { + RSA_free(rsa); + CHECK_OPEN_SSL(0) + } } else *************** *** 506,509 **** --- 505,509 ---- char* digest; int signature_length; + int result; CODE: if (! is_private(p_rsa)) *************** *** 515,525 **** digest = get_message_digest(text_SV, p_rsa->hashMode); ! CHECK_OPEN_SSL(RSA_sign(p_rsa->hashMode, ! digest, ! get_digest_length(p_rsa->hashMode), ! signature, ! &signature_length, ! p_rsa->rsa)) Safefree(digest); RETVAL = newSVpvn(signature, signature_length); Safefree(signature); --- 515,526 ---- digest = get_message_digest(text_SV, p_rsa->hashMode); ! result = RSA_sign(p_rsa->hashMode, ! digest, ! get_digest_length(p_rsa->hashMode), ! signature, ! &signature_length, ! p_rsa->rsa); Safefree(digest); + CHECK_OPEN_SSL(result) RETVAL = newSVpvn(signature, signature_length); Safefree(signature); |
From: <iro...@us...> - 2004-02-18 22:19:43
|
Update of /cvsroot/perl-openssl/Crypt/OpenSSL/RSA In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21832 Modified Files: RSA.xs Log Message: remove some temporaries, fix a FIXME Index: RSA.xs =================================================================== RCS file: /cvsroot/perl-openssl/Crypt/OpenSSL/RSA/RSA.xs,v retrieving revision 1.48 retrieving revision 1.49 diff -C2 -d -r1.48 -r1.49 *** RSA.xs 18 Feb 2004 22:04:28 -0000 1.48 --- RSA.xs 18 Feb 2004 22:09:48 -0000 1.49 *************** *** 506,510 **** char* digest; int signature_length; - RSA* rsa; CODE: if (! is_private(p_rsa)) --- 506,509 ---- *************** *** 513,519 **** } ! rsa = p_rsa->rsa; ! ! CHECK_NEW(signature, RSA_size(rsa), char) digest = get_message_digest(text_SV, p_rsa->hashMode); --- 512,516 ---- } ! CHECK_NEW(signature, RSA_size(p_rsa->rsa), char) digest = get_message_digest(text_SV, p_rsa->hashMode); *************** *** 523,527 **** signature, &signature_length, ! rsa)) Safefree(digest); RETVAL = newSVpvn(signature, signature_length); --- 520,524 ---- signature, &signature_length, ! p_rsa->rsa)) Safefree(digest); RETVAL = newSVpvn(signature, signature_length); *************** *** 530,534 **** RETVAL ! # Verify signature. Returns 1 if correct, 0 otherwise. void --- 527,531 ---- RETVAL ! # Verify signature. Returns true if correct, false otherwise. void *************** *** 541,551 **** unsigned char* sig; char* digest; - RSA* rsa; int sig_length; int result; sig = SvPV(sig_SV, sig_length); ! rsa = p_rsa->rsa; ! if (RSA_size(rsa) < sig_length) { croak("Signature longer than key"); --- 538,546 ---- unsigned char* sig; char* digest; int sig_length; int result; sig = SvPV(sig_SV, sig_length); ! if (RSA_size(p_rsa->rsa) < sig_length) { croak("Signature longer than key"); *************** *** 562,566 **** switch(result) { ! case 0: /* FIXME - could there be an error in this case? */ XSRETURN_NO; break; --- 557,562 ---- switch(result) { ! case 0: ! CHECK_OPEN_SSL(ERR_peek_error()) XSRETURN_NO; break; |
From: <iro...@us...> - 2004-02-18 22:14:23
|
Update of /cvsroot/perl-openssl/Crypt/OpenSSL/RSA In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20797 Modified Files: RSA.xs Log Message: factor out some common code Index: RSA.xs =================================================================== RCS file: /cvsroot/perl-openssl/Crypt/OpenSSL/RSA/RSA.xs,v retrieving revision 1.47 retrieving revision 1.48 diff -C2 -d -r1.47 -r1.48 *** RSA.xs 18 Feb 2004 21:37:32 -0000 1.47 --- RSA.xs 18 Feb 2004 22:04:28 -0000 1.48 *************** *** 25,28 **** --- 25,33 ---- __FILE__, __LINE__, ERR_reason_error_string(ERR_get_error())); + #define PACKAGE_CROAK(p_message) croak("%s:%d: %s", (p_message)) + #define CHECK_NEW(p_var, p_size, p_type) \ + if (New(0, p_var, p_size, p_type) == NULL) \ + { PACKAGE_CROAK("unable to alloc buffer"); } + char is_private(rsaData* p_rsa) { *************** *** 36,43 **** SV* rsaSvRef; ! if (New(0, rsa, 1, rsaData) == NULL) ! { ! croak("unable to allocate memory"); ! } rsa->rsa = p_rsa; rsa->hashMode = NID_sha1; --- 41,45 ---- SV* rsaSvRef; ! CHECK_NEW(rsa, 1, rsaData) rsa->rsa = p_rsa; rsa->hashMode = NID_sha1; *************** *** 73,81 **** text = SvPV(text_SV, text_length); ! if (New(0, message_digest, get_digest_length(hash_method), char) == NULL) ! { ! croak("unable to allocate buffer for message digest in package " ! PACKAGE_NAME); ! } switch(hash_method) --- 75,79 ---- text = SvPV(text_SV, text_length); ! CHECK_NEW(message_digest, get_digest_length(hash_method), char) switch(hash_method) *************** *** 161,164 **** --- 159,188 ---- } + SV* rsa_crypt(rsaData* p_rsa, SV* p_from, + int (*p_crypt)(int, unsigned char*, unsigned char*, RSA*, int)) + { + int from_length, to_length; + int size; + unsigned char* from; + unsigned char* to; + SV* sv; + + from = SvPV(p_from, from_length); + size = RSA_size(p_rsa->rsa); + CHECK_NEW(to, size, char) + + to_length = p_crypt(from_length, from, to, p_rsa->rsa, p_rsa->padding); + + if (to_length < 0) + { + Safefree(to); + CHECK_OPEN_SSL(0) + } + sv = newSVpv(to, to_length); + Safefree(to); + return sv; + } + + MODULE = Crypt::OpenSSL::RSA PACKAGE = Crypt::OpenSSL::RSA PROTOTYPES: DISABLE *************** *** 354,513 **** SV* ! encrypt(p_rsa, plaintext_SV) rsaData* p_rsa; ! SV* plaintext_SV; ! PREINIT: ! int plaintext_length; ! unsigned char* plaintext; ! unsigned char* ciphertext; ! size_t size; ! int ciphertext_length; ! RSA* rsa; CODE: ! plaintext = SvPV(plaintext_SV, plaintext_length); ! ! rsa = p_rsa->rsa; ! ! size = RSA_size(rsa); ! if (New(0,ciphertext, size, char) == NULL) ! { ! croak("unable to allocate buffer for ciphertext in package " ! PACKAGE_NAME); ! } ! ! ciphertext_length = RSA_public_encrypt( ! plaintext_length, plaintext, ciphertext, rsa, p_rsa->padding); ! ! if (ciphertext_length < 0) ! { ! Safefree(ciphertext); ! CHECK_OPEN_SSL(0) ! } ! ! RETVAL = newSVpv(ciphertext, size); OUTPUT: RETVAL SV* ! decrypt(p_rsa, ciphertext_SV) rsaData* p_rsa; ! SV* ciphertext_SV; ! PREINIT: ! int ciphertext_length; /* Needed to pass to SvPV */ ! int plaintext_length; ! char* plaintext; ! char* ciphertext; ! unsigned long size; ! RSA* rsa; CODE: ! { ! if (! is_private(p_rsa)) ! { ! croak("Public keys cannot decrypt messages."); ! } ! ! ciphertext = SvPV(ciphertext_SV, ciphertext_length); ! ! rsa = p_rsa->rsa; ! size = RSA_size(rsa); ! if (New(0, plaintext, size, char) == NULL) ! { ! croak("unable to allocate buffer for plaintext in package " ! PACKAGE_NAME); ! } ! ! plaintext_length = RSA_private_decrypt( ! size, ciphertext, plaintext, rsa, p_rsa->padding); ! ! if (plaintext_length < 0) ! { ! Safefree(plaintext); ! CHECK_OPEN_SSL(0) ! } ! ! RETVAL = newSVpv(plaintext, plaintext_length); ! Safefree(plaintext); ! } OUTPUT: RETVAL SV* ! private_encrypt(p_rsa, plaintext_SV, ...) rsaData* p_rsa; ! SV* plaintext_SV; ! PREINIT: ! int plaintext_length; ! unsigned char* plaintext; ! unsigned char* ciphertext; ! size_t size; ! int ciphertext_length; ! RSA* rsa; ! CODE: ! if (! is_private(p_rsa)) ! { ! croak("Public keys cannot private_encrypt messages."); ! } ! ! plaintext = SvPV(plaintext_SV, plaintext_length); ! ! rsa = p_rsa->rsa; ! ! size = RSA_size(rsa); ! if (New(0,ciphertext, size, char) == NULL) ! { ! croak ("unable to allocate buffer for ciphertext in package " ! PACKAGE_NAME); ! } ! ! ciphertext_length = RSA_private_encrypt( ! plaintext_length, plaintext, ciphertext, rsa, p_rsa->padding); ! ! if (ciphertext_length < 0) ! { ! Safefree(ciphertext); ! CHECK_OPEN_SSL(0) ! } ! ! RETVAL = newSVpv(ciphertext, size); OUTPUT: RETVAL - SV* ! public_decrypt(p_rsa, ciphertext_SV) rsaData* p_rsa; ! SV* ciphertext_SV; ! PREINIT: ! int ciphertext_length; /* Needed to pass to SvPV */ ! int plaintext_length; ! char* plaintext; ! char* ciphertext; ! unsigned long size; ! RSA* rsa; CODE: ! ! ciphertext = SvPV(ciphertext_SV, ciphertext_length); ! ! rsa = p_rsa->rsa; ! size = RSA_size(rsa); ! if (New(0, plaintext, size, char) == NULL) ! { ! croak("unable to allocate buffer for plaintext in package " ! PACKAGE_NAME); ! } ! ! plaintext_length = RSA_public_decrypt( ! size, ciphertext, plaintext, rsa, p_rsa->padding); ! if (plaintext_length < 0) ! { ! Safefree(plaintext); ! CHECK_OPEN_SSL(0) ! } ! ! RETVAL = newSVpv(plaintext, plaintext_length); ! Safefree(plaintext); OUTPUT: ! RETVAL int --- 378,415 ---- SV* ! encrypt(p_rsa, p_plaintext) rsaData* p_rsa; ! SV* p_plaintext; CODE: ! RETVAL = rsa_crypt(p_rsa, p_plaintext, RSA_public_encrypt); OUTPUT: RETVAL SV* ! decrypt(p_rsa, p_ciphertext) rsaData* p_rsa; ! SV* p_ciphertext; CODE: ! RETVAL = rsa_crypt(p_rsa, p_ciphertext, RSA_private_decrypt); OUTPUT: RETVAL SV* ! private_encrypt(p_rsa, p_plaintext) rsaData* p_rsa; ! SV* p_plaintext; CODE: ! RETVAL = rsa_crypt(p_rsa, p_plaintext, RSA_private_encrypt); OUTPUT: RETVAL SV* ! public_decrypt(p_rsa, p_ciphertext) rsaData* p_rsa; ! SV* p_ciphertext; CODE: ! RETVAL = rsa_crypt(p_rsa, p_ciphertext, RSA_public_decrypt); OUTPUT: ! RETVAL int *************** *** 594,598 **** rsaData* p_rsa; CODE: ! p_rsa->padding = RSA_SSLV23_PADDING; SV* --- 496,500 ---- rsaData* p_rsa; CODE: ! p_rsa->padding = RSA_SSLV23_PADDING; SV* *************** *** 613,621 **** rsa = p_rsa->rsa; ! if (New(0, signature, RSA_size(rsa), char) == NULL) ! { ! croak("unable to allocate buffer for ciphertext in package " ! PACKAGE_NAME); ! } digest = get_message_digest(text_SV, p_rsa->hashMode); --- 515,519 ---- rsa = p_rsa->rsa; ! CHECK_NEW(signature, RSA_size(rsa), char) digest = get_message_digest(text_SV, p_rsa->hashMode); |
From: <iro...@us...> - 2004-02-18 21:47:26
|
Update of /cvsroot/perl-openssl/Crypt/OpenSSL/RSA In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13434 Modified Files: README RSA.pm RSA.xs Log Message: Add private_encrypt and public_decrypt, contributed by Paul G. Weiss <pa...@we...> Index: README =================================================================== RCS file: /cvsroot/perl-openssl/Crypt/OpenSSL/RSA/README,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** README 16 Feb 2004 02:58:59 -0000 1.11 --- README 18 Feb 2004 21:37:32 -0000 1.12 *************** *** 10,14 **** using format compatibe with OpenSSL's command-line rsa tool ! encrypt, decrypt, sign, verify, use_pkcs1_oaep_padding, use_pkcs1_padding, use_sslv23_padding, use_no_padding --- 10,14 ---- using format compatibe with OpenSSL's command-line rsa tool ! encrypt, decrypt, private_encrypt, public_decrypt, sign, verify, use_pkcs1_oaep_padding, use_pkcs1_padding, use_sslv23_padding, use_no_padding Index: RSA.pm =================================================================== RCS file: /cvsroot/perl-openssl/Crypt/OpenSSL/RSA/RSA.pm,v retrieving revision 1.37 retrieving revision 1.38 diff -C2 -d -r1.37 -r1.38 *** RSA.pm 17 Feb 2004 16:54:32 -0000 1.37 --- RSA.pm 18 Feb 2004 21:37:32 -0000 1.38 *************** *** 185,193 **** =item encrypt ! Encrypt a string using the public (portion of the) key =item sign ! Sign a string using the secret (portion of the) key =item verify --- 185,206 ---- =item encrypt ! Encrypt a binary "string" using the public (portion of the) key. ! ! =item decrypt ! ! Decrypt a binary "string". Croaks if the key is public only. ! ! =item private_encrypt ! ! Encrypt a binary "string" using the private key. Croaks if the key is ! public only. ! ! =item public_decrypt ! ! Decrypt a binary "string" using the public (portion of the) key. =item sign ! Sign a string using the secret (portion of the) key. =item verify *************** *** 195,202 **** Check the signature on a text. - =item decrypt - - Decrypt a binary "string". Croaks if the key is public only. - =item use_no_padding --- 208,211 ---- Index: RSA.xs =================================================================== RCS file: /cvsroot/perl-openssl/Crypt/OpenSSL/RSA/RSA.xs,v retrieving revision 1.46 retrieving revision 1.47 diff -C2 -d -r1.46 -r1.47 *** RSA.xs 18 Feb 2004 16:39:19 -0000 1.46 --- RSA.xs 18 Feb 2004 21:37:32 -0000 1.47 *************** *** 22,26 **** #define CHECK_OPEN_SSL(p_result) if (!(p_result)) \ ! croak("OpenSSL error in %s at %d: %s", \ __FILE__, __LINE__, ERR_reason_error_string(ERR_get_error())); --- 22,26 ---- #define CHECK_OPEN_SSL(p_result) if (!(p_result)) \ ! croak("%s:%d: OpenSSL error: %s", \ __FILE__, __LINE__, ERR_reason_error_string(ERR_get_error())); *************** *** 432,435 **** --- 432,514 ---- RETVAL + SV* + private_encrypt(p_rsa, plaintext_SV, ...) + rsaData* p_rsa; + SV* plaintext_SV; + PREINIT: + int plaintext_length; + unsigned char* plaintext; + unsigned char* ciphertext; + size_t size; + int ciphertext_length; + RSA* rsa; + + CODE: + if (! is_private(p_rsa)) + { + croak("Public keys cannot private_encrypt messages."); + } + + plaintext = SvPV(plaintext_SV, plaintext_length); + + rsa = p_rsa->rsa; + + size = RSA_size(rsa); + if (New(0,ciphertext, size, char) == NULL) + { + croak ("unable to allocate buffer for ciphertext in package " + PACKAGE_NAME); + } + + ciphertext_length = RSA_private_encrypt( + plaintext_length, plaintext, ciphertext, rsa, p_rsa->padding); + + if (ciphertext_length < 0) + { + Safefree(ciphertext); + CHECK_OPEN_SSL(0) + } + + RETVAL = newSVpv(ciphertext, size); + OUTPUT: + RETVAL + + + SV* + public_decrypt(p_rsa, ciphertext_SV) + rsaData* p_rsa; + SV* ciphertext_SV; + PREINIT: + int ciphertext_length; /* Needed to pass to SvPV */ + int plaintext_length; + char* plaintext; + char* ciphertext; + unsigned long size; + RSA* rsa; + CODE: + + ciphertext = SvPV(ciphertext_SV, ciphertext_length); + + rsa = p_rsa->rsa; + size = RSA_size(rsa); + if (New(0, plaintext, size, char) == NULL) + { + croak("unable to allocate buffer for plaintext in package " + PACKAGE_NAME); + } + + plaintext_length = RSA_public_decrypt( + size, ciphertext, plaintext, rsa, p_rsa->padding); + if (plaintext_length < 0) + { + Safefree(plaintext); + CHECK_OPEN_SSL(0) + } + + RETVAL = newSVpv(plaintext, plaintext_length); + Safefree(plaintext); + OUTPUT: + RETVAL + int size(p_rsa) |
From: <iro...@us...> - 2004-02-18 21:47:26
|
Update of /cvsroot/perl-openssl/Crypt/OpenSSL/RSA/t In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13434/t Modified Files: bignum.t rsa.t Log Message: Add private_encrypt and public_decrypt, contributed by Paul G. Weiss <pa...@we...> Index: bignum.t =================================================================== RCS file: /cvsroot/perl-openssl/Crypt/OpenSSL/RSA/t/bignum.t,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** bignum.t 18 Feb 2004 20:14:04 -0000 1.4 --- bignum.t 18 Feb 2004 21:37:32 -0000 1.5 *************** *** 8,12 **** sub check_datum { ! my($p_expected, $p_actual) = @_; ok(defined($p_expected) ? $p_actual && $p_expected->equals($p_actual) --- 8,12 ---- sub check_datum { ! my ($p_expected, $p_actual) = @_; ok(defined($p_expected) ? $p_actual && $p_expected->equals($p_actual) *************** *** 16,21 **** sub check_key_parameters # runs 8 tests { ! my($p_rsa, $n, $e, $d, $p, $q, $dmp1, $dmq1, $iqmp) = @_; ! my($rn, $re, $rd, $rp, $rq, $rdmp1, $rdmq1, $riqmp) = $p_rsa->get_key_parameters(); --- 16,21 ---- sub check_key_parameters # runs 8 tests { ! my ($p_rsa, $n, $e, $d, $p, $q, $dmp1, $dmq1, $iqmp) = @_; ! my ($rn, $re, $rd, $rp, $rq, $rdmp1, $rdmq1, $riqmp) = $p_rsa->get_key_parameters(); *************** *** 40,44 **** else { ! plan test => 60; } } --- 40,44 ---- else { ! plan test => 62; } } *************** *** 73,76 **** --- 73,80 ---- new_public_key($rsa->get_public_key_string()); + $rsa_pub->use_no_padding(); + ok($rsa->private_encrypt($ciphertext) eq $plaintext); + ok($rsa_pub->public_decrypt($plaintext) eq $ciphertext); + my @pub_parameters = $rsa_pub->get_key_parameters(); ok(scalar(@pub_parameters) == 8); Index: rsa.t =================================================================== RCS file: /cvsroot/perl-openssl/Crypt/OpenSSL/RSA/t/rsa.t,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** rsa.t 18 Feb 2004 20:12:40 -0000 1.4 --- rsa.t 18 Feb 2004 21:37:32 -0000 1.5 *************** *** 5,21 **** use Crypt::OpenSSL::RSA; ! BEGIN { plan tests => 25 } sub _Test_Encrypt_And_Decrypt { ! my ($plaintext_length, $rsa) = @_; my ($ciphertext, $decoded_text); ! my $plaintext = pack("C$plaintext_length", (1,255,0,128,4, # Make sure these characters work ! map {int(rand 256)} (1..$plaintext_length-5))); ! ok($ciphertext = $rsa->encrypt($plaintext)); ! ok($decoded_text = $rsa->decrypt($ciphertext)); ok($decoded_text eq $plaintext); } --- 5,28 ---- use Crypt::OpenSSL::RSA; ! BEGIN { plan tests => 31 } sub _Test_Encrypt_And_Decrypt { ! my ($p_plaintext_length, $p_rsa, $p_check_private_encrypt) = @_; my ($ciphertext, $decoded_text); ! my $plaintext = pack("C${p_plaintext_length}", (1,255,0,128,4, # Make sure these characters work ! map {int(rand 256)} (1 .. $p_plaintext_length - 5))); ! ok($ciphertext = $p_rsa->encrypt($plaintext)); ! ok($decoded_text = $p_rsa->decrypt($ciphertext)); ok($decoded_text eq $plaintext); + + if ($p_check_private_encrypt) + { + ok($ciphertext = $p_rsa->private_encrypt($plaintext)); + ok($decoded_text = $p_rsa->public_decrypt($ciphertext)); + ok($decoded_text eq $plaintext); + } } *************** *** 33,38 **** } - - # On platforms without a /dev/random, we need to manually seed. In # real life, the following would stink, but for testing purposes, it --- 40,43 ---- *************** *** 52,65 **** ok($rsa->check_key()); - # check if NO_PADDING works - $rsa->use_no_padding(); ! _Test_Encrypt_And_Decrypt($rsa->size(), $rsa); ! ! $rsa->use_pkcs1_oaep_padding(); ! _Test_Encrypt_And_Decrypt($rsa->size() - 42, $rsa); $rsa->use_pkcs1_padding(); ! _Test_Encrypt_And_Decrypt($rsa->size() - 11, $rsa); #FIXME - use_sslv23_padding seems to fail on decryption. openssl bug? --- 57,69 ---- ok($rsa->check_key()); $rsa->use_no_padding(); ! _Test_Encrypt_And_Decrypt($rsa->size(), $rsa, 1); $rsa->use_pkcs1_padding(); ! _Test_Encrypt_And_Decrypt($rsa->size() - 11, $rsa, 1); ! ! $rsa->use_pkcs1_oaep_padding(); ! # private_encrypt does not work with pkcs1_oaep_padding ! _Test_Encrypt_And_Decrypt($rsa->size() - 42, $rsa, 0); #FIXME - use_sslv23_padding seems to fail on decryption. openssl bug? |
From: <iro...@us...> - 2004-02-18 20:23:56
|
Update of /cvsroot/perl-openssl/Crypt/OpenSSL/RSA/t In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25214 Modified Files: bignum.t Log Message: whitespace Index: bignum.t =================================================================== RCS file: /cvsroot/perl-openssl/Crypt/OpenSSL/RSA/t/bignum.t,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** bignum.t 24 Feb 2003 01:57:49 -0000 1.3 --- bignum.t 18 Feb 2004 20:14:04 -0000 1.4 *************** *** 8,31 **** sub check_datum { ! my( $p_expected, $p_actual ) = @_; ! ok( defined( $p_expected ) ! ? $p_actual && $p_expected->equals( $p_actual ) ! : ! defined( $p_actual ) ); } sub check_key_parameters # runs 8 tests { ! my( $p_rsa, $n, $e, $d, $p, $q, $dmp1, $dmq1, $iqmp ) = @_; ! my( $rn, $re, $rd, $rp, $rq, $rdmp1, $rdmq1, $riqmp ) = $p_rsa->get_key_parameters(); ! check_datum( $n, $rn ); ! check_datum( $e, $re ); ! check_datum( $d, $rd ); ! check_datum( $p, $rp ); ! check_datum( $q, $rq ); ! check_datum( $dmp1, $rdmp1 ); ! check_datum( $dmq1, $rdmq1 ); ! check_datum( $iqmp, $riqmp ); } --- 8,31 ---- sub check_datum { ! my($p_expected, $p_actual) = @_; ! ok(defined($p_expected) ! ? $p_actual && $p_expected->equals($p_actual) ! : ! defined($p_actual)); } sub check_key_parameters # runs 8 tests { ! my($p_rsa, $n, $e, $d, $p, $q, $dmp1, $dmq1, $iqmp) = @_; ! my($rn, $re, $rd, $rp, $rq, $rdmp1, $rdmq1, $riqmp) = $p_rsa->get_key_parameters(); ! check_datum($n, $rn); ! check_datum($e, $re); ! check_datum($d, $rd); ! check_datum($p, $rp); ! check_datum($q, $rq); ! check_datum($dmp1, $rdmp1); ! check_datum($dmq1, $rdmq1); ! check_datum($iqmp, $riqmp); } *************** *** 34,38 **** eval { require Crypt::OpenSSL::Bignum; }; $bignum_missing = $@; ! if( $bignum_missing ) { plan tests => 0; --- 34,38 ---- eval { require Crypt::OpenSSL::Bignum; }; $bignum_missing = $@; ! if($bignum_missing) { plan tests => 0; *************** *** 44,48 **** } ! unless( $bignum_missing ) { my $ctx = Crypt::OpenSSL::Bignum::CTX->new(); --- 44,48 ---- } ! unless ($bignum_missing) { my $ctx = Crypt::OpenSSL::Bignum::CTX->new(); *************** *** 53,63 **** my $d = Crypt::OpenSSL::Bignum->new_from_word(107); my $n = $p->mul($q, $ctx); ! my $dmp1 = $d->mod( $p->sub( $one ), $ctx ); ! my $dmq1 = $d->mod( $q->sub( $one ), $ctx ); ! my $iqmp = $q->mod_inverse( $p, $ctx ); my $rsa = Crypt::OpenSSL::RSA->new_key_from_parameters ! ($n, $e, $d, $p, $q ); ! ok( $rsa ); $rsa->use_no_padding(); --- 53,63 ---- my $d = Crypt::OpenSSL::Bignum->new_from_word(107); my $n = $p->mul($q, $ctx); ! my $dmp1 = $d->mod($p->sub($one), $ctx); ! my $dmq1 = $d->mod($q->sub($one), $ctx); ! my $iqmp = $q->mod_inverse($p, $ctx); my $rsa = Crypt::OpenSSL::RSA->new_key_from_parameters ! ($n, $e, $d, $p, $q); ! ok($rsa); $rsa->use_no_padding(); *************** *** 65,95 **** my $plaintext = pack('C*', 10); my $ciphertext = pack('C*', 65); ! check_key_parameters( $rsa, $n, $e, $d, $p, $q, $dmp1, $dmq1, $iqmp ); ! ok( $rsa->encrypt($plaintext) eq $ciphertext ); ! ok( $rsa->decrypt($ciphertext) eq $plaintext ); my $rsa_pub = Crypt::OpenSSL::RSA-> ! new_public_key( $rsa->get_public_key_string() ); my @pub_parameters = $rsa_pub->get_key_parameters(); ! ok( scalar( @pub_parameters ) == 8 ); ! check_key_parameters( $rsa_pub, $n, $e ); ! $rsa = Crypt::OpenSSL::RSA->new_key_from_parameters($n, $e, $d, $p ); ! check_key_parameters( $rsa, $n, $e, $d, $p, $q, $dmp1, $dmq1, $iqmp ); $rsa = Crypt::OpenSSL::RSA->new_key_from_parameters ! ($n, $e, $d, undef, $q ); ! check_key_parameters( $rsa, $n, $e, $d, $p, $q, $dmp1, $dmq1, $iqmp ); ! $rsa = Crypt::OpenSSL::RSA->new_key_from_parameters($n, $e ); ! check_key_parameters( $rsa, $n, $e ); ! $rsa = Crypt::OpenSSL::RSA->new_key_from_parameters($n, $e, $d ); ! check_key_parameters( $rsa, $n, $e, $d ); ! $rsa = Crypt::OpenSSL::RSA->new_key_from_parameters($n, $e, undef, $p ); ! check_key_parameters( $rsa, $n, $e, $d, $p, $q, $dmp1, $dmq1, $iqmp ); } --- 65,95 ---- my $plaintext = pack('C*', 10); my $ciphertext = pack('C*', 65); ! check_key_parameters($rsa, $n, $e, $d, $p, $q, $dmp1, $dmq1, $iqmp); ! ok($rsa->encrypt($plaintext) eq $ciphertext); ! ok($rsa->decrypt($ciphertext) eq $plaintext); my $rsa_pub = Crypt::OpenSSL::RSA-> ! new_public_key($rsa->get_public_key_string()); my @pub_parameters = $rsa_pub->get_key_parameters(); ! ok(scalar(@pub_parameters) == 8); ! check_key_parameters($rsa_pub, $n, $e); ! $rsa = Crypt::OpenSSL::RSA->new_key_from_parameters($n, $e, $d, $p); ! check_key_parameters($rsa, $n, $e, $d, $p, $q, $dmp1, $dmq1, $iqmp); $rsa = Crypt::OpenSSL::RSA->new_key_from_parameters ! ($n, $e, $d, undef, $q); ! check_key_parameters($rsa, $n, $e, $d, $p, $q, $dmp1, $dmq1, $iqmp); ! $rsa = Crypt::OpenSSL::RSA->new_key_from_parameters($n, $e); ! check_key_parameters($rsa, $n, $e); ! $rsa = Crypt::OpenSSL::RSA->new_key_from_parameters($n, $e, $d); ! check_key_parameters($rsa, $n, $e, $d); ! $rsa = Crypt::OpenSSL::RSA->new_key_from_parameters($n, $e, undef, $p); ! check_key_parameters($rsa, $n, $e, $d, $p, $q, $dmp1, $dmq1, $iqmp); } |
From: <iro...@us...> - 2004-02-18 20:22:33
|
Update of /cvsroot/perl-openssl/Crypt/OpenSSL/RSA/t In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24866 Modified Files: rsa.t Log Message: Test use_pkcs1_padding. Don't test use_sslv23_padding, since it seems to fail -- openssl bug? Index: rsa.t =================================================================== RCS file: /cvsroot/perl-openssl/Crypt/OpenSSL/RSA/t/rsa.t,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** rsa.t 18 Feb 2004 16:39:20 -0000 1.3 --- rsa.t 18 Feb 2004 20:12:40 -0000 1.4 *************** *** 5,23 **** use Crypt::OpenSSL::RSA; ! BEGIN { plan tests => 22 } sub _Test_Sign_And_Verify { ! my( $plaintext, $rsa, $rsa_pub ) = @_; my $sig = $rsa->sign($plaintext); ! ok( $rsa_pub->verify( $plaintext, $sig ) ); my $false_sig = unpack "H*", $sig; $false_sig =~ tr/[a-f]/[0a-d]/; ! ok(! $rsa_pub->verify( $plaintext, pack( "H*", $false_sig ) ) ); ! ok(! $rsa->verify( $plaintext, pack( "H*", $false_sig ) ) ); } # On platforms without a /dev/random, we need to manually seed. In # real life, the following would stink, but for testing purposes, it --- 5,38 ---- use Crypt::OpenSSL::RSA; ! BEGIN { plan tests => 25 } ! ! sub _Test_Encrypt_And_Decrypt ! { ! my ($plaintext_length, $rsa) = @_; ! ! my ($ciphertext, $decoded_text); ! my $plaintext = pack("C$plaintext_length", ! (1,255,0,128,4, # Make sure these characters work ! map {int(rand 256)} (1..$plaintext_length-5))); ! ok($ciphertext = $rsa->encrypt($plaintext)); ! ok($decoded_text = $rsa->decrypt($ciphertext)); ! ok($decoded_text eq $plaintext); ! } sub _Test_Sign_And_Verify { ! my ($plaintext, $rsa, $rsa_pub) = @_; my $sig = $rsa->sign($plaintext); ! ok($rsa_pub->verify($plaintext, $sig)); my $false_sig = unpack "H*", $sig; $false_sig =~ tr/[a-f]/[0a-d]/; ! ok(! $rsa_pub->verify($plaintext, pack("H*", $false_sig))); ! ok(! $rsa->verify($plaintext, pack("H*", $false_sig))); } + + # On platforms without a /dev/random, we need to manually seed. In # real life, the following would stink, but for testing purposes, it *************** *** 31,73 **** Crypt::OpenSSL::RSA->import_random_seed(); ! ok( Crypt::OpenSSL::RSA->generate_key( 512 )->size() * 8 == 512 ); ! my $rsa = Crypt::OpenSSL::RSA->generate_key( 1024 ); ! ok( $rsa->size() * 8 == 1024 ); ! ok( $rsa->check_key() ); # check if NO_PADDING works $rsa->use_no_padding(); ! my ($ciphertext, $decoded_text); ! my $plaintext = "X" x $rsa->size; ! ok($ciphertext = $rsa->encrypt($plaintext)); ! ok($decoded_text = $rsa->decrypt($ciphertext)); ! ok ($decoded_text eq $plaintext); - # check if OAEP_PADDING works - my $plaintext_length = $rsa->size() - 42; - $plaintext = pack("C$plaintext_length", - (255,0,128,4, # Make sure these characters work - map {int(rand 256)} (1..$plaintext_length-4))); $rsa->use_pkcs1_oaep_padding(); ! ok($ciphertext = $rsa->encrypt($plaintext)); ! ok($decoded_text = $rsa->decrypt($ciphertext)); ! ok ($decoded_text eq $plaintext); my $private_key_string = $rsa->get_private_key_string(); my $public_key_string = $rsa->get_public_key_string(); ! ok( $private_key_string and $public_key_string ); my $rsa_priv = Crypt::OpenSSL::RSA->new_private_key($private_key_string); ! $decoded_text = $rsa_priv->decrypt($ciphertext); ! ! ok( $decoded_text eq $plaintext ); ! ! my $rsa_pub = Crypt::OpenSSL::RSA->new_public_key( $public_key_string ); ! $ciphertext = $rsa_pub->encrypt($plaintext); ! $decoded_text = $rsa->decrypt($ciphertext); ! ok ($decoded_text eq $plaintext); $plaintext .= $plaintext x 5; --- 46,80 ---- Crypt::OpenSSL::RSA->import_random_seed(); ! ok(Crypt::OpenSSL::RSA->generate_key(512)->size() * 8 == 512); ! my $rsa = Crypt::OpenSSL::RSA->generate_key(1024); ! ok($rsa->size() * 8 == 1024); ! ok($rsa->check_key()); # check if NO_PADDING works + $rsa->use_no_padding(); ! _Test_Encrypt_And_Decrypt($rsa->size(), $rsa); $rsa->use_pkcs1_oaep_padding(); ! _Test_Encrypt_And_Decrypt($rsa->size() - 42, $rsa); ! ! $rsa->use_pkcs1_padding(); ! _Test_Encrypt_And_Decrypt($rsa->size() - 11, $rsa); ! ! #FIXME - use_sslv23_padding seems to fail on decryption. openssl bug? my $private_key_string = $rsa->get_private_key_string(); my $public_key_string = $rsa->get_public_key_string(); ! ok($private_key_string and $public_key_string); + my $plaintext = "The quick brown fox jumped over the lazy dog"; my $rsa_priv = Crypt::OpenSSL::RSA->new_private_key($private_key_string); ! ok($plaintext eq $rsa_priv->decrypt($rsa_priv->encrypt($plaintext))); ! my $rsa_pub = Crypt::OpenSSL::RSA->new_public_key($public_key_string); ! $rsa->use_pkcs1_oaep_padding(); ! ok($plaintext eq $rsa->decrypt($rsa_pub->encrypt($plaintext))); $plaintext .= $plaintext x 5; *************** *** 75,94 **** $rsa->use_md5_hash(); $rsa_pub->use_md5_hash(); ! _Test_Sign_And_Verify( $plaintext, $rsa, $rsa_pub ); $rsa->use_sha1_hash(); $rsa_pub->use_sha1_hash(); ! _Test_Sign_And_Verify( $plaintext, $rsa, $rsa_pub ); $rsa->use_ripemd160_hash(); $rsa_pub->use_ripemd160_hash(); ! _Test_Sign_And_Verify( $plaintext, $rsa, $rsa_pub ); # check subclassing ! eval { Crypt::OpenSSL::RSA::Subpackage->generate_key( 256 ); }; ! ok( !$@ ); package Crypt::OpenSSL::RSA::Subpackage; ! use base qw( Crypt::OpenSSL::RSA ); --- 82,101 ---- $rsa->use_md5_hash(); $rsa_pub->use_md5_hash(); ! _Test_Sign_And_Verify($plaintext, $rsa, $rsa_pub); $rsa->use_sha1_hash(); $rsa_pub->use_sha1_hash(); ! _Test_Sign_And_Verify($plaintext, $rsa, $rsa_pub); $rsa->use_ripemd160_hash(); $rsa_pub->use_ripemd160_hash(); ! _Test_Sign_And_Verify($plaintext, $rsa, $rsa_pub); # check subclassing ! eval { Crypt::OpenSSL::RSA::Subpackage->generate_key(256); }; ! ok(!$@); package Crypt::OpenSSL::RSA::Subpackage; ! use base qw(Crypt::OpenSSL::RSA); |
From: <iro...@us...> - 2004-02-18 16:49:06
|
Update of /cvsroot/perl-openssl/Crypt/OpenSSL/RSA/t In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11705/t Modified Files: rsa.t Log Message: I can think of no good reason to disallow secret keys from verifying signatures Index: rsa.t =================================================================== RCS file: /cvsroot/perl-openssl/Crypt/OpenSSL/RSA/t/rsa.t,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** rsa.t 27 Apr 2003 19:59:40 -0000 1.2 --- rsa.t 18 Feb 2004 16:39:20 -0000 1.3 *************** *** 5,9 **** use Crypt::OpenSSL::RSA; ! BEGIN { plan tests => 19 } sub _Test_Sign_And_Verify --- 5,9 ---- use Crypt::OpenSSL::RSA; ! BEGIN { plan tests => 22 } sub _Test_Sign_And_Verify *************** *** 17,20 **** --- 17,21 ---- $false_sig =~ tr/[a-f]/[0a-d]/; ok(! $rsa_pub->verify( $plaintext, pack( "H*", $false_sig ) ) ); + ok(! $rsa->verify( $plaintext, pack( "H*", $false_sig ) ) ); } |
From: <iro...@us...> - 2004-02-18 16:49:06
|
Update of /cvsroot/perl-openssl/Crypt/OpenSSL/RSA In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11705 Modified Files: RSA.xs Log Message: I can think of no good reason to disallow secret keys from verifying signatures Index: RSA.xs =================================================================== RCS file: /cvsroot/perl-openssl/Crypt/OpenSSL/RSA/RSA.xs,v retrieving revision 1.45 retrieving revision 1.46 diff -C2 -d -r1.45 -r1.46 *** RSA.xs 17 Feb 2004 16:54:32 -0000 1.45 --- RSA.xs 18 Feb 2004 16:39:19 -0000 1.46 *************** *** 568,576 **** int result; - if (is_private(p_rsa)) - { - croak("Secret keys should not check signatures."); - } - sig = SvPV(sig_SV, sig_length); rsa = p_rsa->rsa; --- 568,571 ---- |
From: <iro...@us...> - 2004-02-17 17:03:30
|
Update of /cvsroot/perl-openssl/Crypt/OpenSSL/RSA In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30775 Modified Files: RSA.pm RSA.xs Log Message: fix default public exponent Index: RSA.pm =================================================================== RCS file: /cvsroot/perl-openssl/Crypt/OpenSSL/RSA/RSA.pm,v retrieving revision 1.36 retrieving revision 1.37 diff -C2 -d -r1.36 -r1.37 *** RSA.pm 16 Feb 2004 05:23:54 -0000 1.36 --- RSA.pm 17 Feb 2004 16:54:32 -0000 1.37 *************** *** 110,114 **** private/public key pair. The first (mandetory) argument is the key size, while the second optional argument specifies the public exponent ! (the default public exponent is 65535). The padding is set to PKCS1_OAEP, but can be changed with use_xxx_padding methods. --- 110,114 ---- private/public key pair. The first (mandetory) argument is the key size, while the second optional argument specifies the public exponent ! (the default public exponent is 65537). The padding is set to PKCS1_OAEP, but can be changed with use_xxx_padding methods. Index: RSA.xs =================================================================== RCS file: /cvsroot/perl-openssl/Crypt/OpenSSL/RSA/RSA.xs,v retrieving revision 1.44 retrieving revision 1.45 diff -C2 -d -r1.44 -r1.45 *** RSA.xs 16 Feb 2004 05:43:24 -0000 1.44 --- RSA.xs 17 Feb 2004 16:54:32 -0000 1.45 *************** *** 244,254 **** RETVAL - # - # Generate a new RSA key. The optional third argument is a prime. - # It defaults to 65535 - # - SV* ! generate_key(proto, bitsSV, exponent = 65535) SV* proto; SV* bitsSV; --- 244,249 ---- RETVAL SV* ! generate_key(proto, bitsSV, exponent = 65537) SV* proto; SV* bitsSV; |
From: <iro...@us...> - 2004-02-16 05:51:19
|
Update of /cvsroot/perl-openssl/Crypt/OpenSSL/RSA In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19062 Modified Files: RSA.xs Log Message: Use CHECK_OPEN_SSL more directly Index: RSA.xs =================================================================== RCS file: /cvsroot/perl-openssl/Crypt/OpenSSL/RSA/RSA.xs,v retrieving revision 1.43 retrieving revision 1.44 diff -C2 -d -r1.43 -r1.44 *** RSA.xs 16 Feb 2004 05:41:11 -0000 1.43 --- RSA.xs 16 Feb 2004 05:43:24 -0000 1.44 *************** *** 546,558 **** digest = get_message_digest(text_SV, p_rsa->hashMode); ! if (! RSA_sign(p_rsa->hashMode, ! digest, ! get_digest_length(p_rsa->hashMode), ! signature, ! &signature_length, ! rsa)) ! { ! CHECK_OPEN_SSL(0) ! } Safefree(digest); RETVAL = newSVpvn(signature, signature_length); --- 546,555 ---- digest = get_message_digest(text_SV, p_rsa->hashMode); ! CHECK_OPEN_SSL(RSA_sign(p_rsa->hashMode, ! digest, ! get_digest_length(p_rsa->hashMode), ! signature, ! &signature_length, ! rsa)) Safefree(digest); RETVAL = newSVpvn(signature, signature_length); |
From: <iro...@us...> - 2004-02-16 05:49:02
|
Update of /cvsroot/perl-openssl/Crypt/OpenSSL/RSA In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv18568 Modified Files: RSA.xs Log Message: neither sign, verify nor encrypt have optional arguments Index: RSA.xs =================================================================== RCS file: /cvsroot/perl-openssl/Crypt/OpenSSL/RSA/RSA.xs,v retrieving revision 1.42 retrieving revision 1.43 diff -C2 -d -r1.42 -r1.43 *** RSA.xs 16 Feb 2004 05:23:54 -0000 1.42 --- RSA.xs 16 Feb 2004 05:41:11 -0000 1.43 *************** *** 358,365 **** } - # Encrypt plain text into cipher text. Returns the cipher text - SV* ! encrypt(p_rsa, plaintext_SV, ...) rsaData* p_rsa; SV* plaintext_SV; --- 358,363 ---- } SV* ! encrypt(p_rsa, plaintext_SV) rsaData* p_rsa; SV* plaintext_SV; *************** *** 396,401 **** RETVAL - - # Decrypt cipher text into plain text. Returns the plain text SV* decrypt(p_rsa, ciphertext_SV) --- 394,397 ---- *************** *** 527,531 **** SV* ! sign(p_rsa, text_SV, ...) rsaData* p_rsa; SV* text_SV; --- 523,527 ---- SV* ! sign(p_rsa, text_SV) rsaData* p_rsa; SV* text_SV; *************** *** 568,572 **** void ! verify(p_rsa, text_SV, sig_SV, ...) rsaData* p_rsa; SV* text_SV; --- 564,568 ---- void ! verify(p_rsa, text_SV, sig_SV) rsaData* p_rsa; SV* text_SV; |
From: <iro...@us...> - 2004-02-16 05:31:44
|
Update of /cvsroot/perl-openssl/Crypt/OpenSSL/RSA In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15670 Modified Files: RSA.xs RSA.pm Log Message: implement DESTROY directly in XS code Index: RSA.xs =================================================================== RCS file: /cvsroot/perl-openssl/Crypt/OpenSSL/RSA/RSA.xs,v retrieving revision 1.41 retrieving revision 1.42 diff -C2 -d -r1.41 -r1.42 *** RSA.xs 16 Feb 2004 05:10:44 -0000 1.41 --- RSA.xs 16 Feb 2004 05:23:54 -0000 1.42 *************** *** 44,48 **** rsa->padding = RSA_PKCS1_OAEP_PADDING; return sv_bless( ! newRV_inc(newSViv((IV) rsa)), (SvROK(p_proto) ? SvSTASH(SvRV(p_proto)) : gv_stashsv(p_proto, 1))); } --- 44,48 ---- rsa->padding = RSA_PKCS1_OAEP_PADDING; return sv_bless( ! newRV_noinc(newSViv((IV) rsa)), (SvROK(p_proto) ? SvSTASH(SvRV(p_proto)) : gv_stashsv(p_proto, 1))); } *************** *** 198,202 **** void ! _cleanup(p_rsa) rsaData* p_rsa; CODE: --- 198,202 ---- void ! DESTROY(p_rsa) rsaData* p_rsa; CODE: Index: RSA.pm =================================================================== RCS file: /cvsroot/perl-openssl/Crypt/OpenSSL/RSA/RSA.pm,v retrieving revision 1.35 retrieving revision 1.36 diff -C2 -d -r1.35 -r1.36 *** RSA.pm 16 Feb 2004 05:10:44 -0000 1.35 --- RSA.pm 16 Feb 2004 05:23:54 -0000 1.36 *************** *** 159,169 **** occupied by the RSA key structure. - =cut - - sub DESTROY - { - shift->_cleanup(); - } - =item get_public_key_string --- 159,162 ---- |
From: <iro...@us...> - 2004-02-16 05:18:33
|
Update of /cvsroot/perl-openssl/Crypt/OpenSSL/RSA In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13818 Modified Files: RSA.pm RSA.xs Log Message: free the struct as well as the rsa object Index: RSA.pm =================================================================== RCS file: /cvsroot/perl-openssl/Crypt/OpenSSL/RSA/RSA.pm,v retrieving revision 1.34 retrieving revision 1.35 diff -C2 -d -r1.34 -r1.35 *** RSA.pm 16 Feb 2004 04:40:15 -0000 1.34 --- RSA.pm 16 Feb 2004 05:10:44 -0000 1.35 *************** *** 163,167 **** sub DESTROY { ! shift->_free_RSA_key(); } --- 163,167 ---- sub DESTROY { ! shift->_cleanup(); } Index: RSA.xs =================================================================== RCS file: /cvsroot/perl-openssl/Crypt/OpenSSL/RSA/RSA.xs,v retrieving revision 1.40 retrieving revision 1.41 diff -C2 -d -r1.40 -r1.41 *** RSA.xs 16 Feb 2004 05:06:57 -0000 1.40 --- RSA.xs 16 Feb 2004 05:10:44 -0000 1.41 *************** *** 198,205 **** void ! _free_RSA_key(p_rsa) rsaData* p_rsa; CODE: RSA_free(p_rsa->rsa); SV* --- 198,206 ---- void ! _cleanup(p_rsa) rsaData* p_rsa; CODE: RSA_free(p_rsa->rsa); + Safefree(p_rsa); SV* |
From: <iro...@us...> - 2004-02-16 05:14:48
|
Update of /cvsroot/perl-openssl/Crypt/OpenSSL/RSA In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13240 Modified Files: RSA.xs Log Message: use default values - much simpler Index: RSA.xs =================================================================== RCS file: /cvsroot/perl-openssl/Crypt/OpenSSL/RSA/RSA.xs,v retrieving revision 1.39 retrieving revision 1.40 diff -C2 -d -r1.39 -r1.40 *** RSA.xs 16 Feb 2004 05:02:56 -0000 1.39 --- RSA.xs 16 Feb 2004 05:06:57 -0000 1.40 *************** *** 249,265 **** SV* ! generate_key(proto, bitsSV, ...) SV* proto; SV* bitsSV; PREINIT: RSA* rsa; - unsigned long exponent; CODE: - if (items > 3) - { - croak("Usage: rsa->generate_key($bits [, $exponent])"); - } - - exponent = (items == 3) ? SvIV(ST(2)) : 65535; CHECK_OPEN_SSL(rsa = RSA_generate_key(SvIV(bitsSV), exponent, NULL, NULL)) --- 249,259 ---- SV* ! generate_key(proto, bitsSV, exponent = 65535) SV* proto; SV* bitsSV; + unsigned long exponent; PREINIT: RSA* rsa; CODE: CHECK_OPEN_SSL(rsa = RSA_generate_key(SvIV(bitsSV), exponent, NULL, NULL)) |
From: <iro...@us...> - 2004-02-16 05:10:46
|
Update of /cvsroot/perl-openssl/Crypt/OpenSSL/RSA In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12618 Modified Files: RSA.xs Log Message: inline method calls which are now just struct access Index: RSA.xs =================================================================== RCS file: /cvsroot/perl-openssl/Crypt/OpenSSL/RSA/RSA.xs,v retrieving revision 1.38 retrieving revision 1.39 diff -C2 -d -r1.38 -r1.39 *** RSA.xs 16 Feb 2004 04:53:56 -0000 1.38 --- RSA.xs 16 Feb 2004 05:02:56 -0000 1.39 *************** *** 25,75 **** __FILE__, __LINE__, ERR_reason_error_string(ERR_get_error())); - //FIXME - shouldn't there always be a key? - /* Free the RSA key, if there is one */ - void free_RSA_key(rsaData* p_rsa) - { - if (p_rsa->rsa) - { - RSA_free(p_rsa->rsa); - p_rsa->rsa = NULL; - } - } - - //FIXME - shouldn't there always be a key? - RSA* get_RSA_key(rsaData* p_rsa) - { - if (!p_rsa->rsa) - { - croak("There is no key set"); - } - else - { - return p_rsa->rsa; - } - } - - int get_padding(rsaData* p_rsa) - { - return p_rsa->padding; - } - - void set_padding(rsaData* p_rsa, int p_padding) - { - p_rsa->padding = p_padding; - } - - int get_hash(rsaData* p_rsa) - { - return p_rsa->hashMode; - } - - void set_hash(rsaData* p_rsa, int p_hashMode) - { - p_rsa->hashMode = p_hashMode; - } - char is_private(rsaData* p_rsa) { ! return(get_RSA_key(p_rsa)->d != NULL); } --- 25,31 ---- __FILE__, __LINE__, ERR_reason_error_string(ERR_get_error())); char is_private(rsaData* p_rsa) { ! return(p_rsa->rsa->d != NULL); } *************** *** 245,249 **** rsaData* p_rsa; CODE: ! free_RSA_key(p_rsa); SV* --- 201,205 ---- rsaData* p_rsa; CODE: ! RSA_free(p_rsa->rsa); SV* *************** *** 255,259 **** CHECK_OPEN_SSL(stringBIO = BIO_new(BIO_s_mem())) PEM_write_bio_RSAPrivateKey( ! stringBIO, get_RSA_key(p_rsa), NULL, NULL, 0, NULL, NULL); RETVAL = extractBioString(stringBIO); --- 211,215 ---- CHECK_OPEN_SSL(stringBIO = BIO_new(BIO_s_mem())) PEM_write_bio_RSAPrivateKey( ! stringBIO, p_rsa->rsa, NULL, NULL, 0, NULL, NULL); RETVAL = extractBioString(stringBIO); *************** *** 268,272 **** CODE: CHECK_OPEN_SSL(stringBIO = BIO_new(BIO_s_mem())) ! PEM_write_bio_RSAPublicKey(stringBIO, get_RSA_key(p_rsa)); RETVAL = extractBioString(stringBIO); --- 224,228 ---- CODE: CHECK_OPEN_SSL(stringBIO = BIO_new(BIO_s_mem())) ! PEM_write_bio_RSAPublicKey(stringBIO, p_rsa->rsa); RETVAL = extractBioString(stringBIO); *************** *** 281,285 **** CODE: CHECK_OPEN_SSL(stringBIO = BIO_new(BIO_s_mem())) ! PEM_write_bio_RSA_PUBKEY(stringBIO, get_RSA_key(p_rsa)); RETVAL = extractBioString(stringBIO); --- 237,241 ---- CODE: CHECK_OPEN_SSL(stringBIO = BIO_new(BIO_s_mem())) ! PEM_write_bio_RSA_PUBKEY(stringBIO, p_rsa->rsa); RETVAL = extractBioString(stringBIO); *************** *** 396,400 **** { RSA* rsa; ! rsa = get_RSA_key(p_rsa); XPUSHs(bn2sv(rsa->n)); XPUSHs(bn2sv(rsa->e)); --- 352,356 ---- { RSA* rsa; ! rsa = p_rsa->rsa; XPUSHs(bn2sv(rsa->n)); XPUSHs(bn2sv(rsa->e)); *************** *** 423,427 **** plaintext = SvPV(plaintext_SV, plaintext_length); ! rsa = get_RSA_key(p_rsa); size = RSA_size(rsa); --- 379,383 ---- plaintext = SvPV(plaintext_SV, plaintext_length); ! rsa = p_rsa->rsa; size = RSA_size(rsa); *************** *** 433,437 **** ciphertext_length = RSA_public_encrypt( ! plaintext_length, plaintext, ciphertext, rsa, get_padding(p_rsa)); if (ciphertext_length < 0) --- 389,393 ---- ciphertext_length = RSA_public_encrypt( ! plaintext_length, plaintext, ciphertext, rsa, p_rsa->padding); if (ciphertext_length < 0) *************** *** 467,471 **** ciphertext = SvPV(ciphertext_SV, ciphertext_length); ! rsa = get_RSA_key(p_rsa); size = RSA_size(rsa); if (New(0, plaintext, size, char) == NULL) --- 423,427 ---- ciphertext = SvPV(ciphertext_SV, ciphertext_length); ! rsa = p_rsa->rsa; size = RSA_size(rsa); if (New(0, plaintext, size, char) == NULL) *************** *** 476,480 **** plaintext_length = RSA_private_decrypt( ! size, ciphertext, plaintext, rsa, get_padding(p_rsa)); if (plaintext_length < 0) --- 432,436 ---- plaintext_length = RSA_private_decrypt( ! size, ciphertext, plaintext, rsa, p_rsa->padding); if (plaintext_length < 0) *************** *** 494,498 **** rsaData* p_rsa; CODE: ! RETVAL = RSA_size(get_RSA_key(p_rsa)); OUTPUT: RETVAL --- 450,454 ---- rsaData* p_rsa; CODE: ! RETVAL = RSA_size(p_rsa->rsa); OUTPUT: RETVAL *************** *** 502,506 **** rsaData* p_rsa; CODE: ! RETVAL = RSA_check_key(get_RSA_key(p_rsa)); OUTPUT: RETVAL --- 458,462 ---- rsaData* p_rsa; CODE: ! RETVAL = RSA_check_key(p_rsa->rsa); OUTPUT: RETVAL *************** *** 537,541 **** rsaData* p_rsa; CODE: ! set_hash(p_rsa, NID_md5); void --- 493,497 ---- rsaData* p_rsa; CODE: ! p_rsa->hashMode = NID_md5; void *************** *** 543,547 **** rsaData* p_rsa; CODE: ! set_hash(p_rsa, NID_sha1); void --- 499,503 ---- rsaData* p_rsa; CODE: ! p_rsa->hashMode = NID_sha1; void *************** *** 549,553 **** rsaData* p_rsa; CODE: ! set_hash(p_rsa, NID_ripemd160); void --- 505,509 ---- rsaData* p_rsa; CODE: ! p_rsa->hashMode = NID_ripemd160; void *************** *** 555,559 **** rsaData* p_rsa; CODE: ! set_padding(p_rsa, RSA_NO_PADDING); void --- 511,515 ---- rsaData* p_rsa; CODE: ! p_rsa->padding = RSA_NO_PADDING; void *************** *** 561,565 **** rsaData* p_rsa; CODE: ! set_padding(p_rsa, RSA_PKCS1_PADDING); void --- 517,521 ---- rsaData* p_rsa; CODE: ! p_rsa->padding = RSA_PKCS1_PADDING; void *************** *** 567,571 **** rsaData* p_rsa; CODE: ! set_padding(p_rsa, RSA_PKCS1_OAEP_PADDING); void --- 523,527 ---- rsaData* p_rsa; CODE: ! p_rsa->padding = RSA_PKCS1_OAEP_PADDING; void *************** *** 573,577 **** rsaData* p_rsa; CODE: ! set_padding(p_rsa, RSA_SSLV23_PADDING); SV* --- 529,533 ---- rsaData* p_rsa; CODE: ! p_rsa->padding = RSA_SSLV23_PADDING; SV* *************** *** 583,587 **** char* digest; int signature_length; - int hash; RSA* rsa; CODE: --- 539,542 ---- *************** *** 591,595 **** } ! rsa = get_RSA_key(p_rsa); if (New(0, signature, RSA_size(rsa), char) == NULL) --- 546,550 ---- } ! rsa = p_rsa->rsa; if (New(0, signature, RSA_size(rsa), char) == NULL) *************** *** 599,607 **** } ! hash = get_hash(p_rsa); ! digest = get_message_digest(text_SV, hash); ! if (! RSA_sign(hash, digest, ! get_digest_length(hash), signature, &signature_length, --- 554,561 ---- } ! digest = get_message_digest(text_SV, p_rsa->hashMode); ! if (! RSA_sign(p_rsa->hashMode, digest, ! get_digest_length(p_rsa->hashMode), signature, &signature_length, *************** *** 629,633 **** RSA* rsa; int sig_length; - int hash; int result; --- 583,586 ---- *************** *** 638,642 **** sig = SvPV(sig_SV, sig_length); ! rsa = get_RSA_key(p_rsa); if (RSA_size(rsa) < sig_length) { --- 591,595 ---- sig = SvPV(sig_SV, sig_length); ! rsa = p_rsa->rsa; if (RSA_size(rsa) < sig_length) { *************** *** 644,651 **** } ! hash = get_hash(p_rsa); ! digest = get_message_digest(text_SV, hash); ! result = RSA_verify( ! hash, digest, get_digest_length(hash), sig, sig_length, rsa); Safefree(digest); switch(result) --- 597,607 ---- } ! digest = get_message_digest(text_SV, p_rsa->hashMode); ! result = RSA_verify(p_rsa->hashMode, ! digest, ! get_digest_length(p_rsa->hashMode), ! sig, ! sig_length, ! p_rsa->rsa); Safefree(digest); switch(result) |
From: <iro...@us...> - 2004-02-16 05:01:46
|
Update of /cvsroot/perl-openssl/Crypt/OpenSSL/RSA In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10874 Modified Files: RSA.xs typemap Log Message: simplify things with the help of the typemap Index: RSA.xs =================================================================== RCS file: /cvsroot/perl-openssl/Crypt/OpenSSL/RSA/RSA.xs,v retrieving revision 1.37 retrieving revision 1.38 diff -C2 -d -r1.37 -r1.38 *** RSA.xs 16 Feb 2004 04:42:24 -0000 1.37 --- RSA.xs 16 Feb 2004 04:53:56 -0000 1.38 *************** *** 25,46 **** __FILE__, __LINE__, ERR_reason_error_string(ERR_get_error())); /* Free the RSA key, if there is one */ ! void free_RSA_key(SV* p_rsa) { ! rsaData* rsa; ! ! rsa = (rsaData*) SvIV(p_rsa); ! if (rsa->rsa) { ! RSA_free(rsa->rsa); } } ! RSA* get_RSA_key(SV* p_rsa) { ! rsaData* rsa; ! ! rsa = (rsaData*) (SvIV(SvRV(p_rsa))); ! if (!rsa->rsa) { croak("There is no key set"); --- 25,43 ---- __FILE__, __LINE__, ERR_reason_error_string(ERR_get_error())); + //FIXME - shouldn't there always be a key? /* Free the RSA key, if there is one */ ! void free_RSA_key(rsaData* p_rsa) { ! if (p_rsa->rsa) { ! RSA_free(p_rsa->rsa); ! p_rsa->rsa = NULL; } } ! //FIXME - shouldn't there always be a key? ! RSA* get_RSA_key(rsaData* p_rsa) { ! if (!p_rsa->rsa) { croak("There is no key set"); *************** *** 48,76 **** else { ! return rsa->rsa; } } ! int get_padding(SV* p_rsa) { ! return ((rsaData*) SvIV(SvRV(p_rsa)))->padding; } ! void set_padding(SV* p_rsa, int p_padding) { ! ((rsaData*) SvIV(SvRV(p_rsa)))->padding = p_padding; } ! int get_hash(SV* p_rsa) { ! return ((rsaData*) SvIV(SvRV(p_rsa)))->hashMode; } ! void set_hash(SV* p_rsa, int p_hashMode) { ! ((rsaData*) SvIV(SvRV(p_rsa)))->hashMode = p_hashMode; } ! char is_private(SV* p_rsa) { return(get_RSA_key(p_rsa)->d != NULL); --- 45,73 ---- else { ! return p_rsa->rsa; } } ! int get_padding(rsaData* p_rsa) { ! return p_rsa->padding; } ! void set_padding(rsaData* p_rsa, int p_padding) { ! p_rsa->padding = p_padding; } ! int get_hash(rsaData* p_rsa) { ! return p_rsa->hashMode; } ! void set_hash(rsaData* p_rsa, int p_hashMode) { ! p_rsa->hashMode = p_hashMode; } ! char is_private(rsaData* p_rsa) { return(get_RSA_key(p_rsa)->d != NULL); *************** *** 246,250 **** void _free_RSA_key(p_rsa) ! SV* p_rsa; CODE: free_RSA_key(p_rsa); --- 243,247 ---- void _free_RSA_key(p_rsa) ! rsaData* p_rsa; CODE: free_RSA_key(p_rsa); *************** *** 252,256 **** SV* get_private_key_string(p_rsa) ! SV* p_rsa; PREINIT: BIO* stringBIO; --- 249,253 ---- SV* get_private_key_string(p_rsa) ! rsaData* p_rsa; PREINIT: BIO* stringBIO; *************** *** 266,270 **** SV* get_public_key_string(p_rsa) ! SV* p_rsa; PREINIT: BIO* stringBIO; --- 263,267 ---- SV* get_public_key_string(p_rsa) ! rsaData* p_rsa; PREINIT: BIO* stringBIO; *************** *** 279,283 **** SV* get_public_key_x509_string(p_rsa) ! SV* p_rsa; PREINIT: BIO* stringBIO; --- 276,280 ---- SV* get_public_key_x509_string(p_rsa) ! rsaData* p_rsa; PREINIT: BIO* stringBIO; *************** *** 395,399 **** void _get_key_parameters(p_rsa) ! SV* p_rsa; PPCODE: { --- 392,396 ---- void _get_key_parameters(p_rsa) ! rsaData* p_rsa; PPCODE: { *************** *** 414,418 **** SV* encrypt(p_rsa, plaintext_SV, ...) ! SV* p_rsa; SV* plaintext_SV; PREINIT: --- 411,415 ---- SV* encrypt(p_rsa, plaintext_SV, ...) ! rsaData* p_rsa; SV* plaintext_SV; PREINIT: *************** *** 452,456 **** SV* decrypt(p_rsa, ciphertext_SV) ! SV* p_rsa; SV* ciphertext_SV; PREINIT: --- 449,453 ---- SV* decrypt(p_rsa, ciphertext_SV) ! rsaData* p_rsa; SV* ciphertext_SV; PREINIT: *************** *** 495,499 **** int size(p_rsa) ! SV* p_rsa; CODE: RETVAL = RSA_size(get_RSA_key(p_rsa)); --- 492,496 ---- int size(p_rsa) ! rsaData* p_rsa; CODE: RETVAL = RSA_size(get_RSA_key(p_rsa)); *************** *** 503,507 **** int check_key(p_rsa) ! SV* p_rsa; CODE: RETVAL = RSA_check_key(get_RSA_key(p_rsa)); --- 500,504 ---- int check_key(p_rsa) ! rsaData* p_rsa; CODE: RETVAL = RSA_check_key(get_RSA_key(p_rsa)); *************** *** 538,542 **** void use_md5_hash(p_rsa) ! SV* p_rsa; CODE: set_hash(p_rsa, NID_md5); --- 535,539 ---- void use_md5_hash(p_rsa) ! rsaData* p_rsa; CODE: set_hash(p_rsa, NID_md5); *************** *** 544,548 **** void use_sha1_hash(p_rsa) ! SV* p_rsa; CODE: set_hash(p_rsa, NID_sha1); --- 541,545 ---- void use_sha1_hash(p_rsa) ! rsaData* p_rsa; CODE: set_hash(p_rsa, NID_sha1); *************** *** 550,554 **** void use_ripemd160_hash(p_rsa) ! SV* p_rsa; CODE: set_hash(p_rsa, NID_ripemd160); --- 547,551 ---- void use_ripemd160_hash(p_rsa) ! rsaData* p_rsa; CODE: set_hash(p_rsa, NID_ripemd160); *************** *** 556,560 **** void use_no_padding(p_rsa) ! SV* p_rsa; CODE: set_padding(p_rsa, RSA_NO_PADDING); --- 553,557 ---- void use_no_padding(p_rsa) ! rsaData* p_rsa; CODE: set_padding(p_rsa, RSA_NO_PADDING); *************** *** 562,566 **** void use_pkcs1_padding(p_rsa) ! SV* p_rsa; CODE: set_padding(p_rsa, RSA_PKCS1_PADDING); --- 559,563 ---- void use_pkcs1_padding(p_rsa) ! rsaData* p_rsa; CODE: set_padding(p_rsa, RSA_PKCS1_PADDING); *************** *** 568,572 **** void use_pkcs1_oaep_padding(p_rsa) ! SV* p_rsa; CODE: set_padding(p_rsa, RSA_PKCS1_OAEP_PADDING); --- 565,569 ---- void use_pkcs1_oaep_padding(p_rsa) ! rsaData* p_rsa; CODE: set_padding(p_rsa, RSA_PKCS1_OAEP_PADDING); *************** *** 574,578 **** void use_sslv23_padding(p_rsa) ! SV* p_rsa; CODE: set_padding(p_rsa, RSA_SSLV23_PADDING); --- 571,575 ---- void use_sslv23_padding(p_rsa) ! rsaData* p_rsa; CODE: set_padding(p_rsa, RSA_SSLV23_PADDING); *************** *** 580,584 **** SV* sign(p_rsa, text_SV, ...) ! SV* p_rsa; SV* text_SV; PREINIT: --- 577,581 ---- SV* sign(p_rsa, text_SV, ...) ! rsaData* p_rsa; SV* text_SV; PREINIT: *************** *** 623,627 **** void verify(p_rsa, text_SV, sig_SV, ...) ! SV* p_rsa; SV* text_SV; SV* sig_SV; --- 620,624 ---- void verify(p_rsa, text_SV, sig_SV, ...) ! rsaData* p_rsa; SV* text_SV; SV* sig_SV; Index: typemap =================================================================== RCS file: /cvsroot/perl-openssl/Crypt/OpenSSL/RSA/typemap,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** typemap 22 Feb 2003 21:40:12 -0000 1.3 --- typemap 16 Feb 2004 04:53:57 -0000 1.4 *************** *** 1,16 **** TYPEMAP BIGNUM* T_PTR ! HV* RSA_HV INPUT ! RSA_HV ! if (! ( SvROK( $arg ) && sv_derived_from( $arg, PACKAGE_NAME ) ) ) ! { ! croak( \"scalar is not a \" PACKAGE_NAME \" object\" ); ! } ! if ( SvTYPE( $var = (HV *) SvRV($arg) ) != SVt_PVHV ) ! { ! croak( \"Passed scalar is not a hash reference\" ); ! } OUTPUT --- 1,10 ---- TYPEMAP BIGNUM* T_PTR ! rsaData* O_OBJECT INPUT ! O_OBJECT ! if( ! SvROK( $arg ) ) { croak( \"argument is not a ${type} object\" ); } ! $var = (${type}) SvIV( SvRV( $arg ) ); OUTPUT |
From: <iro...@us...> - 2004-02-16 04:50:13
|
Update of /cvsroot/perl-openssl/Crypt/OpenSSL/RSA In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9294 Modified Files: RSA.xs Log Message: stop using a hash table to store values, and just use a C struct Index: RSA.xs =================================================================== RCS file: /cvsroot/perl-openssl/Crypt/OpenSSL/RSA/RSA.xs,v retrieving revision 1.36 retrieving revision 1.37 diff -C2 -d -r1.36 -r1.37 *** RSA.xs 16 Feb 2004 03:39:19 -0000 1.36 --- RSA.xs 16 Feb 2004 04:42:24 -0000 1.37 *************** *** 6,9 **** --- 6,16 ---- #include <openssl/bn.h> + typedef struct + { + RSA* rsa; + int padding; + int hashMode; + } rsaData; + /* Key names for the rsa hash structure */ *************** *** 18,55 **** __FILE__, __LINE__, ERR_reason_error_string(ERR_get_error())); - /* convenience hv routines - I'm lazy */ - - void hvStore(HV* hv, char* key, SV* value) - { - hv_delete(hv, key, strlen(key), G_DISCARD); - - if (hv_store(hv, key, strlen(key), value, 0) != NULL) - { - SvREFCNT_inc(value); - } - } - - SV** hvFetch(HV* hv, char* key) - { - return hv_fetch(hv, key, strlen(key), 0); - } - /* Free the RSA key, if there is one */ ! void free_RSA_key(HV* rsa_HV) { ! SV** rsa_ptr_SV_ptr; ! if ((rsa_ptr_SV_ptr = hvFetch(rsa_HV, KEY_KEY)) != NULL) { ! RSA_free((RSA*) SvIV(*rsa_ptr_SV_ptr)); ! hv_delete(rsa_HV, KEY_KEY, strlen(KEY_KEY), G_DISCARD); } } ! RSA* get_RSA_key(HV* rsa_HV) { ! SV** rsa_ptr_SV_ptr; ! if ((rsa_ptr_SV_ptr = hvFetch(rsa_HV, KEY_KEY)) == NULL) { croak("There is no key set"); --- 25,46 ---- __FILE__, __LINE__, ERR_reason_error_string(ERR_get_error())); /* Free the RSA key, if there is one */ ! void free_RSA_key(SV* p_rsa) { ! rsaData* rsa; ! rsa = (rsaData*) SvIV(p_rsa); ! if (rsa->rsa) { ! RSA_free(rsa->rsa); } } ! RSA* get_RSA_key(SV* p_rsa) { ! rsaData* rsa; ! rsa = (rsaData*) (SvIV(SvRV(p_rsa))); ! if (!rsa->rsa) { croak("There is no key set"); *************** *** 57,109 **** else { ! return (RSA*) SvIV(*rsa_ptr_SV_ptr); } } ! void set_RSA_key(HV* rsa_HV, RSA* rsa) ! { ! hvStore(rsa_HV, KEY_KEY, sv_2mortal(newSViv((IV)rsa))); ! } ! ! int get_padding(HV* rsa_HV) { ! SV** padding; ! ! padding = hvFetch(rsa_HV, PADDING_KEY); ! return padding == NULL ? -1 : SvIV(*padding); } ! void set_padding(HV* rsa_HV, int padding) { ! hvStore(rsa_HV, PADDING_KEY, sv_2mortal(newSViv((IV) padding))); } ! int get_hash(HV* rsa_HV) { ! SV** hash; ! ! hash = hvFetch(rsa_HV, HASH_KEY); ! return hash == NULL ? -1 : SvIV(*hash); } ! void set_hash(HV* rsa_HV, int hash) { ! hvStore(rsa_HV, HASH_KEY, sv_2mortal(newSViv((IV) hash))); } ! char is_private(HV* rsa_HV) { ! return(get_RSA_key(rsa_HV)->d != NULL); } SV* make_rsa_obj(SV* p_proto, RSA* p_rsa) { ! HV* rsa_HV; ! rsa_HV = newHV(); ! hvStore(rsa_HV, KEY_KEY, sv_2mortal(newSViv((IV) p_rsa ))); ! set_hash(rsa_HV, NID_sha1); ! set_padding(rsa_HV, RSA_PKCS1_OAEP_PADDING); return sv_bless( ! newRV_noinc((SV*) rsa_HV), (SvROK(p_proto) ? SvSTASH(SvRV(p_proto)) : gv_stashsv(p_proto, 1))); } --- 48,95 ---- else { ! return rsa->rsa; } } ! int get_padding(SV* p_rsa) { ! return ((rsaData*) SvIV(SvRV(p_rsa)))->padding; } ! void set_padding(SV* p_rsa, int p_padding) { ! ((rsaData*) SvIV(SvRV(p_rsa)))->padding = p_padding; } ! int get_hash(SV* p_rsa) { ! return ((rsaData*) SvIV(SvRV(p_rsa)))->hashMode; } ! void set_hash(SV* p_rsa, int p_hashMode) { ! ((rsaData*) SvIV(SvRV(p_rsa)))->hashMode = p_hashMode; } ! char is_private(SV* p_rsa) { ! return(get_RSA_key(p_rsa)->d != NULL); } SV* make_rsa_obj(SV* p_proto, RSA* p_rsa) { ! rsaData* rsa; ! SV* rsaSv; ! SV* rsaSvRef; ! ! if (New(0, rsa, 1, rsaData) == NULL) ! { ! croak("unable to allocate memory"); ! } ! rsa->rsa = p_rsa; ! rsa->hashMode = NID_sha1; ! rsa->padding = RSA_PKCS1_OAEP_PADDING; return sv_bless( ! newRV_inc(newSViv((IV) rsa)), (SvROK(p_proto) ? SvSTASH(SvRV(p_proto)) : gv_stashsv(p_proto, 1))); } *************** *** 259,270 **** void ! _free_RSA_key(rsa_HV) ! HV* rsa_HV; CODE: ! free_RSA_key(rsa_HV); SV* ! get_private_key_string(rsa_HV) ! HV* rsa_HV; PREINIT: BIO* stringBIO; --- 245,256 ---- void ! _free_RSA_key(p_rsa) ! SV* p_rsa; CODE: ! free_RSA_key(p_rsa); SV* ! get_private_key_string(p_rsa) ! SV* p_rsa; PREINIT: BIO* stringBIO; *************** *** 272,276 **** CHECK_OPEN_SSL(stringBIO = BIO_new(BIO_s_mem())) PEM_write_bio_RSAPrivateKey( ! stringBIO, get_RSA_key(rsa_HV), NULL, NULL, 0, NULL, NULL); RETVAL = extractBioString(stringBIO); --- 258,262 ---- CHECK_OPEN_SSL(stringBIO = BIO_new(BIO_s_mem())) PEM_write_bio_RSAPrivateKey( ! stringBIO, get_RSA_key(p_rsa), NULL, NULL, 0, NULL, NULL); RETVAL = extractBioString(stringBIO); *************** *** 279,289 **** SV* ! get_public_key_string(rsa_HV) ! HV* rsa_HV; PREINIT: BIO* stringBIO; CODE: CHECK_OPEN_SSL(stringBIO = BIO_new(BIO_s_mem())) ! PEM_write_bio_RSAPublicKey(stringBIO, get_RSA_key(rsa_HV)); RETVAL = extractBioString(stringBIO); --- 265,275 ---- SV* ! get_public_key_string(p_rsa) ! SV* p_rsa; PREINIT: BIO* stringBIO; CODE: CHECK_OPEN_SSL(stringBIO = BIO_new(BIO_s_mem())) ! PEM_write_bio_RSAPublicKey(stringBIO, get_RSA_key(p_rsa)); RETVAL = extractBioString(stringBIO); *************** *** 292,302 **** SV* ! get_public_key_x509_string(rsa_HV) ! HV* rsa_HV; PREINIT: BIO* stringBIO; CODE: CHECK_OPEN_SSL(stringBIO = BIO_new(BIO_s_mem())) ! PEM_write_bio_RSA_PUBKEY(stringBIO, get_RSA_key(rsa_HV)); RETVAL = extractBioString(stringBIO); --- 278,288 ---- SV* ! get_public_key_x509_string(p_rsa) ! SV* p_rsa; PREINIT: BIO* stringBIO; CODE: CHECK_OPEN_SSL(stringBIO = BIO_new(BIO_s_mem())) ! PEM_write_bio_RSA_PUBKEY(stringBIO, get_RSA_key(p_rsa)); RETVAL = extractBioString(stringBIO); *************** *** 408,417 **** void ! _get_key_parameters(rsa_HV) ! HV* rsa_HV; PPCODE: { RSA* rsa; ! rsa = get_RSA_key(rsa_HV); XPUSHs(bn2sv(rsa->n)); XPUSHs(bn2sv(rsa->e)); --- 394,403 ---- void ! _get_key_parameters(p_rsa) ! SV* p_rsa; PPCODE: { RSA* rsa; ! rsa = get_RSA_key(p_rsa); XPUSHs(bn2sv(rsa->n)); XPUSHs(bn2sv(rsa->e)); *************** *** 427,432 **** SV* ! encrypt(rsa_HV, plaintext_SV, ...) ! HV* rsa_HV; SV* plaintext_SV; PREINIT: --- 413,418 ---- SV* ! encrypt(p_rsa, plaintext_SV, ...) ! SV* p_rsa; SV* plaintext_SV; PREINIT: *************** *** 440,444 **** plaintext = SvPV(plaintext_SV, plaintext_length); ! rsa = get_RSA_key(rsa_HV); size = RSA_size(rsa); --- 426,430 ---- plaintext = SvPV(plaintext_SV, plaintext_length); ! rsa = get_RSA_key(p_rsa); size = RSA_size(rsa); *************** *** 450,454 **** ciphertext_length = RSA_public_encrypt( ! plaintext_length, plaintext, ciphertext, rsa, get_padding(rsa_HV)); if (ciphertext_length < 0) --- 436,440 ---- ciphertext_length = RSA_public_encrypt( ! plaintext_length, plaintext, ciphertext, rsa, get_padding(p_rsa)); if (ciphertext_length < 0) *************** *** 465,470 **** # Decrypt cipher text into plain text. Returns the plain text SV* ! decrypt(rsa_HV, ciphertext_SV) ! HV* rsa_HV; SV* ciphertext_SV; PREINIT: --- 451,456 ---- # Decrypt cipher text into plain text. Returns the plain text SV* ! decrypt(p_rsa, ciphertext_SV) ! SV* p_rsa; SV* ciphertext_SV; PREINIT: *************** *** 477,481 **** CODE: { ! if (! is_private(rsa_HV)) { croak("Public keys cannot decrypt messages."); --- 463,467 ---- CODE: { ! if (! is_private(p_rsa)) { croak("Public keys cannot decrypt messages."); *************** *** 484,488 **** ciphertext = SvPV(ciphertext_SV, ciphertext_length); ! rsa = get_RSA_key(rsa_HV); size = RSA_size(rsa); if (New(0, plaintext, size, char) == NULL) --- 470,474 ---- ciphertext = SvPV(ciphertext_SV, ciphertext_length); ! rsa = get_RSA_key(p_rsa); size = RSA_size(rsa); if (New(0, plaintext, size, char) == NULL) *************** *** 493,497 **** plaintext_length = RSA_private_decrypt( ! size, ciphertext, plaintext, rsa, get_padding(rsa_HV)); if (plaintext_length < 0) --- 479,483 ---- plaintext_length = RSA_private_decrypt( ! size, ciphertext, plaintext, rsa, get_padding(p_rsa)); if (plaintext_length < 0) *************** *** 508,523 **** int ! size(rsa_HV) ! HV* rsa_HV; CODE: ! RETVAL = RSA_size(get_RSA_key(rsa_HV)); OUTPUT: RETVAL int ! check_key(rsa_HV) ! HV* rsa_HV; CODE: ! RETVAL = RSA_check_key(get_RSA_key(rsa_HV)); OUTPUT: RETVAL --- 494,509 ---- int ! size(p_rsa) ! SV* p_rsa; CODE: ! RETVAL = RSA_size(get_RSA_key(p_rsa)); OUTPUT: RETVAL int ! check_key(p_rsa) ! SV* p_rsa; CODE: ! RETVAL = RSA_check_key(get_RSA_key(p_rsa)); OUTPUT: RETVAL *************** *** 551,598 **** void ! use_md5_hash(rsa_HV) ! HV* rsa_HV; CODE: ! set_hash(rsa_HV, NID_md5); void ! use_sha1_hash(rsa_HV) ! HV* rsa_HV; CODE: ! set_hash(rsa_HV, NID_sha1); void ! use_ripemd160_hash(rsa_HV) ! HV* rsa_HV; CODE: ! set_hash(rsa_HV, NID_ripemd160); void ! use_no_padding(rsa_HV) ! HV* rsa_HV; CODE: ! set_padding(rsa_HV, RSA_NO_PADDING); void ! use_pkcs1_padding(rsa_HV) ! HV* rsa_HV; CODE: ! set_padding(rsa_HV, RSA_PKCS1_PADDING); void ! use_pkcs1_oaep_padding(rsa_HV) ! HV* rsa_HV; CODE: ! set_padding(rsa_HV, RSA_PKCS1_OAEP_PADDING); void ! use_sslv23_padding(rsa_HV) ! HV* rsa_HV; CODE: ! set_padding(rsa_HV, RSA_SSLV23_PADDING); SV* ! sign(rsa_HV, text_SV, ...) ! HV* rsa_HV; SV* text_SV; PREINIT: --- 537,584 ---- void ! use_md5_hash(p_rsa) ! SV* p_rsa; CODE: ! set_hash(p_rsa, NID_md5); void ! use_sha1_hash(p_rsa) ! SV* p_rsa; CODE: ! set_hash(p_rsa, NID_sha1); void ! use_ripemd160_hash(p_rsa) ! SV* p_rsa; CODE: ! set_hash(p_rsa, NID_ripemd160); void ! use_no_padding(p_rsa) ! SV* p_rsa; CODE: ! set_padding(p_rsa, RSA_NO_PADDING); void ! use_pkcs1_padding(p_rsa) ! SV* p_rsa; CODE: ! set_padding(p_rsa, RSA_PKCS1_PADDING); void ! use_pkcs1_oaep_padding(p_rsa) ! SV* p_rsa; CODE: ! set_padding(p_rsa, RSA_PKCS1_OAEP_PADDING); void ! use_sslv23_padding(p_rsa) ! SV* p_rsa; CODE: ! set_padding(p_rsa, RSA_SSLV23_PADDING); SV* ! sign(p_rsa, text_SV, ...) ! SV* p_rsa; SV* text_SV; PREINIT: *************** *** 603,612 **** RSA* rsa; CODE: ! if (! is_private(rsa_HV)) { croak("Public keys cannot sign messages."); } ! rsa = get_RSA_key(rsa_HV); if (New(0, signature, RSA_size(rsa), char) == NULL) --- 589,598 ---- RSA* rsa; CODE: ! if (! is_private(p_rsa)) { croak("Public keys cannot sign messages."); } ! rsa = get_RSA_key(p_rsa); if (New(0, signature, RSA_size(rsa), char) == NULL) *************** *** 616,620 **** } ! hash = get_hash(rsa_HV); digest = get_message_digest(text_SV, hash); if (! RSA_sign(hash, --- 602,606 ---- } ! hash = get_hash(p_rsa); digest = get_message_digest(text_SV, hash); if (! RSA_sign(hash, *************** *** 636,641 **** void ! verify(rsa_HV, text_SV, sig_SV, ...) ! HV* rsa_HV; SV* text_SV; SV* sig_SV; --- 622,627 ---- void ! verify(p_rsa, text_SV, sig_SV, ...) ! SV* p_rsa; SV* text_SV; SV* sig_SV; *************** *** 649,653 **** int result; ! if (is_private(rsa_HV)) { croak("Secret keys should not check signatures."); --- 635,639 ---- int result; ! if (is_private(p_rsa)) { croak("Secret keys should not check signatures."); *************** *** 655,659 **** sig = SvPV(sig_SV, sig_length); ! rsa = get_RSA_key(rsa_HV); if (RSA_size(rsa) < sig_length) { --- 641,645 ---- sig = SvPV(sig_SV, sig_length); ! rsa = get_RSA_key(p_rsa); if (RSA_size(rsa) < sig_length) { *************** *** 661,665 **** } ! hash = get_hash(rsa_HV); digest = get_message_digest(text_SV, hash); result = RSA_verify( --- 647,651 ---- } ! hash = get_hash(p_rsa); digest = get_message_digest(text_SV, hash); result = RSA_verify( |
From: <iro...@us...> - 2004-02-16 04:48:03
|
Update of /cvsroot/perl-openssl/Crypt/OpenSSL/RSA In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8902 Modified Files: RSA.pm Log Message: remove unused constants, which removes the need for Exporter Index: RSA.pm =================================================================== RCS file: /cvsroot/perl-openssl/Crypt/OpenSSL/RSA/RSA.pm,v retrieving revision 1.33 retrieving revision 1.34 diff -C2 -d -r1.33 -r1.34 *** RSA.pm 16 Feb 2004 03:58:26 -0000 1.33 --- RSA.pm 16 Feb 2004 04:40:15 -0000 1.34 *************** *** 4,18 **** use Carp; ! use vars qw ($VERSION @ISA @EXPORT @EXPORT_OK $AUTOLOAD ! $RSA_PKCS1_PADDING $RSA_SSLV23_PADDING $RSA_NO_PADDING ! $RSA_PKCS1_OAEP_PADDING); - require Exporter; require DynaLoader; require AutoLoader; ! @ISA = qw(Exporter DynaLoader); ! @EXPORT = qw($RSA_PKCS1_PADDING $RSA_SSLV23_PADDING $RSA_NO_PADDING ! $RSA_PKCS1_OAEP_PADDING); $VERSION = '0.21'; --- 4,13 ---- use Carp; ! use vars qw ($VERSION @ISA @EXPORT @EXPORT_OK $AUTOLOAD); require DynaLoader; require AutoLoader; ! @ISA = qw(DynaLoader); $VERSION = '0.21'; *************** *** 20,30 **** bootstrap Crypt::OpenSSL::RSA $VERSION; - # taken from openssl/rsa.h - - $RSA_PKCS1_PADDING = 1; - $RSA_SSLV23_PADDING = 2; - $RSA_NO_PADDING = 3; - $RSA_PKCS1_OAEP_PADDING = 4; - BEGIN { eval { require Crypt::OpenSSL::Bignum; }; } --- 15,18 ---- |
From: <iro...@us...> - 2004-02-16 04:06:12
|
Update of /cvsroot/perl-openssl/Crypt/OpenSSL/RSA In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1986 Modified Files: RSA.pm Log Message: use_sslv23_padding is already implemented in RSA.xs Index: RSA.pm =================================================================== RCS file: /cvsroot/perl-openssl/Crypt/OpenSSL/RSA/RSA.pm,v retrieving revision 1.32 retrieving revision 1.33 diff -C2 -d -r1.32 -r1.33 *** RSA.pm 16 Feb 2004 03:39:19 -0000 1.32 --- RSA.pm 16 Feb 2004 03:58:26 -0000 1.33 *************** *** 218,228 **** Decrypt a binary "string". Croaks if the key is public only. - =cut - - sub _set_padding_mode - { - $_[0]->{_Padding_Mode} = $_[1]; - } - =item use_no_padding --- 218,221 ---- *************** *** 248,258 **** denotes that the server is SSL3 capable. - =cut - - sub use_sslv23_padding - { - shift->_set_padding_mode($RSA_SSLV23_PADDING); - } - =item use_md5_hash --- 241,244 ---- |
From: <iro...@us...> - 2004-02-16 03:47:05
|
Update of /cvsroot/perl-openssl/Crypt/OpenSSL/RSA In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31666 Modified Files: RSA.pm RSA.xs Log Message: implement constuctor completely in XS, except for the branching on key-type in new_public_key Index: RSA.pm =================================================================== RCS file: /cvsroot/perl-openssl/Crypt/OpenSSL/RSA/RSA.pm,v retrieving revision 1.31 retrieving revision 1.32 diff -C2 -d -r1.31 -r1.32 *** RSA.pm 16 Feb 2004 02:58:59 -0000 1.31 --- RSA.pm 16 Feb 2004 03:39:19 -0000 1.32 *************** *** 94,101 **** sub new_public_key { ! my ($proto, $p_string) = @_; ! my $self = $proto->_new(); ! $self->_load_public_key($p_string); ! return $self; } --- 94,110 ---- sub new_public_key { ! my ($proto, $p_key_string) = @_; ! if ($p_key_string =~ /^-----BEGIN RSA PUBLIC KEY-----/) ! { ! return $proto->_new_public_key_pkcs1($p_key_string); ! } ! elsif ($p_key_string =~ /^-----BEGIN PUBLIC KEY-----/) ! { ! return $proto->_new_public_key_x509($p_key_string); ! } ! else ! { ! croak "unrecognized key format"; ! } } *************** *** 108,120 **** PKCS1_OAEP, but can be changed with use_xxx_padding. - =cut - - sub new_private_key - { - my $self = shift->_new(); - $self->_load_private_key(@_); - return $self; - } - =item generate_key --- 117,120 ---- *************** *** 125,137 **** PKCS1_OAEP, but can be changed with use_xxx_padding methods. - =cut - - sub generate_key - { - my $self = shift->_new(); - $self->_generate_key(@_); - return $self; - } - =item new_key_from_parameters --- 125,128 ---- *************** *** 169,180 **** } - sub _new - { - my $self = bless {}, shift; - $self->use_pkcs1_oaep_padding(); - $self->use_sha1_hash(); - return $self; - } - =back --- 160,163 ---- *************** *** 195,215 **** } - sub _load_public_key - { - my ($self, $p_key_string) = @_; - if ($p_key_string =~ /^-----BEGIN RSA PUBLIC KEY-----/) - { - $self->_load_public_pkcs1_key($p_key_string); - } - elsif ($p_key_string =~ /^-----BEGIN PUBLIC KEY-----/) - { - $self->_load_public_x509_key($p_key_string); - } - else - { - croak "unrecognized key format"; - } - } - =item get_public_key_string --- 178,181 ---- Index: RSA.xs =================================================================== RCS file: /cvsroot/perl-openssl/Crypt/OpenSSL/RSA/RSA.xs,v retrieving revision 1.35 retrieving revision 1.36 diff -C2 -d -r1.35 -r1.36 *** RSA.xs 16 Feb 2004 02:58:59 -0000 1.35 --- RSA.xs 16 Feb 2004 03:39:19 -0000 1.36 *************** *** 200,205 **** } ! void _load_rsa_key(HV* p_rsaHv, ! SV* p_keyStringSv, RSA*(*p_loader)(BIO*, RSA**, pem_password_cb*, void*)) { --- 200,204 ---- } ! RSA* _load_rsa_key(SV* p_keyStringSv, RSA*(*p_loader)(BIO*, RSA**, pem_password_cb*, void*)) { *************** *** 210,216 **** BIO* stringBIO; - /* First; remove any old rsa structures, to avoid leakage */ - free_RSA_key(p_rsaHv); - keyString = SvPV(p_keyStringSv, keyStringLength); --- 209,212 ---- *************** *** 223,227 **** CHECK_OPEN_SSL(rsa) ! set_RSA_key(p_rsaHv, rsa); } --- 219,223 ---- CHECK_OPEN_SSL(rsa) ! return rsa; } *************** *** 232,255 **** ERR_load_crypto_strings(); ! void ! _load_private_key(rsa_HV, key_string_SV) ! HV* rsa_HV; SV* key_string_SV; CODE: ! _load_rsa_key(rsa_HV, key_string_SV, PEM_read_bio_RSAPrivateKey); ! void ! _load_public_pkcs1_key(rsa_HV, key_string_SV) ! HV* rsa_HV; SV* key_string_SV; CODE: ! _load_rsa_key(rsa_HV, key_string_SV, PEM_read_bio_RSAPublicKey); ! void ! _load_public_x509_key(rsa_HV, key_string_SV) ! HV* rsa_HV; SV* key_string_SV; CODE: ! _load_rsa_key(rsa_HV, key_string_SV, PEM_read_bio_RSA_PUBKEY); void --- 228,260 ---- ERR_load_crypto_strings(); ! SV* ! new_private_key(proto, key_string_SV) ! SV* proto; SV* key_string_SV; CODE: ! RETVAL = make_rsa_obj( ! proto, _load_rsa_key(key_string_SV, PEM_read_bio_RSAPrivateKey)); ! OUTPUT: ! RETVAL ! SV* ! _new_public_key_pkcs1(proto, key_string_SV) ! SV* proto; SV* key_string_SV; CODE: ! RETVAL = make_rsa_obj( ! proto, _load_rsa_key(key_string_SV, PEM_read_bio_RSAPublicKey)); ! OUTPUT: ! RETVAL ! SV* ! _new_public_key_x509(proto, key_string_SV) ! SV* proto; SV* key_string_SV; CODE: ! RETVAL = make_rsa_obj( ! proto, _load_rsa_key(key_string_SV, PEM_read_bio_RSA_PUBKEY)); ! OUTPUT: ! RETVAL void *************** *** 304,310 **** # ! void ! _generate_key(rsa_HV, bitsSV, ...) ! HV* rsa_HV; SV* bitsSV; PREINIT: --- 309,315 ---- # ! SV* ! generate_key(proto, bitsSV, ...) ! SV* proto; SV* bitsSV; PREINIT: *************** *** 312,316 **** unsigned long exponent; CODE: - { if (items > 3) { --- 317,320 ---- *************** *** 320,325 **** exponent = (items == 3) ? SvIV(ST(2)) : 65535; CHECK_OPEN_SSL(rsa = RSA_generate_key(SvIV(bitsSV), exponent, NULL, NULL)) ! set_RSA_key(rsa_HV, rsa); ! } SV* --- 324,332 ---- exponent = (items == 3) ? SvIV(ST(2)) : 65535; CHECK_OPEN_SSL(rsa = RSA_generate_key(SvIV(bitsSV), exponent, NULL, NULL)) ! ! RETVAL = make_rsa_obj(proto, rsa); ! OUTPUT: ! RETVAL ! SV* |
From: <iro...@us...> - 2004-02-16 03:06:43
|
Update of /cvsroot/perl-openssl/Crypt/OpenSSL/RSA In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv26078 Modified Files: MANIFEST README RSA.pm RSA.xs Log Message: remove deprecated methods Index: MANIFEST =================================================================== RCS file: /cvsroot/perl-openssl/Crypt/OpenSSL/RSA/MANIFEST,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** MANIFEST 16 Feb 2004 02:08:52 -0000 1.6 --- MANIFEST 16 Feb 2004 02:58:59 -0000 1.7 *************** *** 6,10 **** README typemap - t/legacy.t t/rsa.t t/bignum.t --- 6,9 ---- Index: README =================================================================== RCS file: /cvsroot/perl-openssl/Crypt/OpenSSL/RSA/README,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** README 15 Feb 2004 20:32:01 -0000 1.10 --- README 16 Feb 2004 02:58:59 -0000 1.11 *************** *** 31,53 **** make C_INCLUDE_PATH=/usr/kerberos/include - - NOTE: as of version 0.17, the following methods are DEPRECATED: - - the no-arg new constructor - use new_from_public_key, - new_from_private_key or Crypt::OpenSSL::RSA->generate_key instead - - load_public_key - use new_from_public_key - - load_private_key - use new_from_private_key - - generate_key as an instance method - use it as a class constructor - method instead. - - set_padding_mode - use use_no_padding, use_pkcs1_padding, - use_pkcs1_oaep_padding, or use_sslv23_padding instead. - - get_padding_mode - - While I plan a grace period of several months at least before removing - these methods, they will go away, so you should start migrating your - code now. Of course, I am open to arguments why some or all of these - methods should be kept around longer/permanently; feel free to send - email to me at iro...@cp..., or visit - http://perl-openssl.sourceforge.net/. - Copyright (c) 2001-2004 Ian Robertson. Crypt::OpenSSL::RSA is free software; you may redistribute it and/or modify it under the same --- 31,34 ---- Index: RSA.pm =================================================================== RCS file: /cvsroot/perl-openssl/Crypt/OpenSSL/RSA/RSA.pm,v retrieving revision 1.30 retrieving revision 1.31 diff -C2 -d -r1.30 -r1.31 *** RSA.pm 16 Feb 2004 02:11:14 -0000 1.30 --- RSA.pm 16 Feb 2004 02:58:59 -0000 1.31 *************** *** 96,100 **** my ($proto, $p_string) = @_; my $self = $proto->_new(); ! $self->load_public_key($p_string); return $self; } --- 96,100 ---- my ($proto, $p_string) = @_; my $self = $proto->_new(); ! $self->_load_public_key($p_string); return $self; } *************** *** 113,117 **** { my $self = shift->_new(); ! $self->load_private_key(@_); return $self; } --- 113,117 ---- { my $self = shift->_new(); ! $self->_load_private_key(@_); return $self; } *************** *** 125,147 **** PKCS1_OAEP, but can be changed with use_xxx_padding methods. - I<NOTE> - using generate_key as an instance method on an rsa object - created by the deprecated new method is itself deprecated. - =cut sub generate_key { ! if (ref $_[0]) ! { ! warn "use of generate_key as an instance method instead of as a constructor has been deprecated."; ! my $self = shift; ! $self->_generate_key(@_); ! } ! else ! { ! my $self = shift->_new(); ! $self->_generate_key(@_); ! return $self; ! } } --- 125,135 ---- PKCS1_OAEP, but can be changed with use_xxx_padding methods. =cut sub generate_key { ! my $self = shift->_new(); ! $self->_generate_key(@_); ! return $self; } *************** *** 181,199 **** } - =item new - - The no-arg new constructor is I<DEPRECATED> - use generate_key, - new_public_key or new_private_key instead. - - =cut - - sub new - { - warn "Crypt::OpenSSL::RSA::new is deprecated"; - return shift->_new(); - } - - #deprecated - sub _new { --- 169,172 ---- *************** *** 222,232 **** } ! =item load_public_key ! ! I<DEPRECATED> - use new_public_key instead ! ! =cut ! ! sub load_public_key { my ($self, $p_key_string) = @_; --- 195,199 ---- } ! sub _load_public_key { my ($self, $p_key_string) = @_; *************** *** 245,252 **** } - =item load_private_key - - I<DEPRECATED> - use new_private_key instead - =item get_public_key_string --- 212,215 ---- *************** *** 289,305 **** Decrypt a binary "string". Croaks if the key is public only. - =item set_padding_mode - - I<DEPRECATED> Use the use_xxx_padding methods instead - =cut - sub set_padding_mode - { - my $self = shift; - warn "set_padding_mode is deprecated. Use use_xxx_padding instead"; - shift->_set_padding_mode(@_) ; - } - sub _set_padding_mode { --- 252,257 ---- *************** *** 337,352 **** } - =item get_padding_mode - - I<DEPRECATED> - - =cut - - sub get_padding_mode - { - warn "get_padding_mode is depreceated"; - return shift->{_Padding_Mode}; - } - =item use_md5_hash --- 289,292 ---- Index: RSA.xs =================================================================== RCS file: /cvsroot/perl-openssl/Crypt/OpenSSL/RSA/RSA.xs,v retrieving revision 1.34 retrieving revision 1.35 diff -C2 -d -r1.34 -r1.35 *** RSA.xs 15 Feb 2004 15:02:46 -0000 1.34 --- RSA.xs 16 Feb 2004 02:58:59 -0000 1.35 *************** *** 233,237 **** void ! load_private_key(rsa_HV, key_string_SV) HV* rsa_HV; SV* key_string_SV; --- 233,237 ---- void ! _load_private_key(rsa_HV, key_string_SV) HV* rsa_HV; SV* key_string_SV; |