mirror of
https://github.com/beard7n/bsdports.git
synced 2026-04-12 19:41:18 +02:00
create bsd12 branch
This commit is contained in:
108
perl/p5-Crypt-OpenSSL-RSA/files/_patch-x-RSA.xs
Normal file
108
perl/p5-Crypt-OpenSSL-RSA/files/_patch-x-RSA.xs
Normal file
@@ -0,0 +1,108 @@
|
||||
--- ./RSA.xs.orig 2011-08-25 01:57:35.000000000 +0300
|
||||
+++ ./RSA.xs 2017-03-24 23:24:34.644786000 +0200
|
||||
@@ -179,6 +179,30 @@
|
||||
return rsa;
|
||||
}
|
||||
|
||||
+
|
||||
+RSA* _load_enc_rsa_key(SV* p_keyStringSv,
|
||||
+ RSA*(*p_loader)(BIO*, RSA**, pem_password_cb*, void*), const char* password)
|
||||
+{
|
||||
+ STRLEN keyStringLength;
|
||||
+ char* keyString;
|
||||
+
|
||||
+ RSA* rsa;
|
||||
+ BIO* stringBIO;
|
||||
+
|
||||
+ keyString = SvPV(p_keyStringSv, keyStringLength);
|
||||
+
|
||||
+ CHECK_OPEN_SSL(stringBIO = BIO_new_mem_buf(keyString, keyStringLength));
|
||||
+
|
||||
+ rsa = p_loader(stringBIO, NULL, NULL, password);
|
||||
+
|
||||
+ CHECK_OPEN_SSL(BIO_set_close(stringBIO, BIO_CLOSE) == 1);
|
||||
+ BIO_free(stringBIO);
|
||||
+
|
||||
+ CHECK_OPEN_SSL(rsa);
|
||||
+ return rsa;
|
||||
+}
|
||||
+
|
||||
+
|
||||
SV* rsa_crypt(rsaData* p_rsa, SV* p_from,
|
||||
int (*p_crypt)(int, const unsigned char*, unsigned char*, RSA*, int))
|
||||
{
|
||||
@@ -214,7 +238,7 @@
|
||||
ERR_load_crypto_strings();
|
||||
|
||||
SV*
|
||||
-new_private_key(proto, key_string_SV)
|
||||
+_new_private_key(proto, key_string_SV)
|
||||
SV* proto;
|
||||
SV* key_string_SV;
|
||||
CODE:
|
||||
@@ -223,6 +247,23 @@
|
||||
OUTPUT:
|
||||
RETVAL
|
||||
|
||||
+
|
||||
+SV*
|
||||
+_new_enc_private_key(proto, key_string_SV, password_SV)
|
||||
+ SV* proto;
|
||||
+ SV* key_string_SV;
|
||||
+ SV* password_SV;
|
||||
+ PREINIT:
|
||||
+ char* password;
|
||||
+ CODE:
|
||||
+ password = SvPV_nolen(password_SV);
|
||||
+
|
||||
+ RETVAL = make_rsa_obj(
|
||||
+ proto, _load_enc_rsa_key(key_string_SV, PEM_read_bio_RSAPrivateKey, password));
|
||||
+ OUTPUT:
|
||||
+ RETVAL
|
||||
+
|
||||
+
|
||||
SV*
|
||||
_new_public_key_pkcs1(proto, key_string_SV)
|
||||
SV* proto;
|
||||
@@ -251,7 +292,7 @@
|
||||
Safefree(p_rsa);
|
||||
|
||||
SV*
|
||||
-get_private_key_string(p_rsa)
|
||||
+_get_private_key_string(p_rsa)
|
||||
rsaData* p_rsa;
|
||||
PREINIT:
|
||||
BIO* stringBIO;
|
||||
@@ -264,6 +305,32 @@
|
||||
OUTPUT:
|
||||
RETVAL
|
||||
|
||||
+
|
||||
+SV*
|
||||
+_get_enc_private_key_string(p_rsa, passout_SV, cipher_SV)
|
||||
+ rsaData* p_rsa;
|
||||
+ SV* passout_SV;
|
||||
+ SV* cipher_SV;
|
||||
+ PREINIT:
|
||||
+ char* passout;
|
||||
+ char* cipher;
|
||||
+
|
||||
+ BIO* stringBIO;
|
||||
+ const EVP_CIPHER *enc;
|
||||
+ CODE:
|
||||
+ passout = SvPV_nolen(passout_SV);
|
||||
+ cipher = SvPV_nolen(cipher_SV);
|
||||
+
|
||||
+ CHECK_OPEN_SSL(stringBIO = BIO_new(BIO_s_mem()));
|
||||
+ enc = EVP_get_cipherbyname(cipher);
|
||||
+ if (enc == NULL) { enc = EVP_get_cipherbyname("DES3"); }
|
||||
+ PEM_write_bio_RSAPrivateKey(
|
||||
+ stringBIO, p_rsa->rsa, enc, NULL, 0, NULL, passout);
|
||||
+ RETVAL = extractBioString(stringBIO);
|
||||
+
|
||||
+ OUTPUT:
|
||||
+ RETVAL
|
||||
+
|
||||
SV*
|
||||
get_public_key_string(p_rsa)
|
||||
rsaData* p_rsa;
|
||||
Reference in New Issue
Block a user