Revision: 4384 http://trac.macosforge.org/projects/ruby/changeset/4384 Author: martinlagardette@apple.com Date: 2010-07-26 16:03:23 -0700 (Mon, 26 Jul 2010) Log Message: ----------- Fixes RSA in OpenSSL (#811) Modified Paths: -------------- MacRuby/trunk/ext/openssl/ossl_pkey_rsa.c Modified: MacRuby/trunk/ext/openssl/ossl_pkey_rsa.c =================================================================== --- MacRuby/trunk/ext/openssl/ossl_pkey_rsa.c 2010-07-26 22:46:35 UTC (rev 4383) +++ MacRuby/trunk/ext/openssl/ossl_pkey_rsa.c 2010-07-26 23:03:23 UTC (rev 4384) @@ -287,7 +287,8 @@ i2d_func = i2d_RSAPublicKey; if((len = i2d_func(pkey->pkey.rsa, NULL)) <= 0) ossl_raise(eRSAError, NULL); - str = rb_str_new(0, len); + str = rb_bstr_new(); + rb_bstr_resize(str, len); p = (unsigned char *)RSTRING_PTR(str); if(i2d_func(pkey->pkey.rsa, &p) < 0) ossl_raise(eRSAError, NULL); @@ -314,7 +315,8 @@ rb_scan_args(argc, argv, "11", &buffer, &padding); pad = (argc == 1) ? RSA_PKCS1_PADDING : NUM2INT(padding); StringValue(buffer); - str = rb_str_new(0, ossl_rsa_buf_size(pkey)); + str = rb_bstr_new(); + rb_bstr_resize(str, ossl_rsa_buf_size(pkey)); buf_len = RSA_public_encrypt(RSTRING_LEN(buffer), (unsigned char *)RSTRING_PTR(buffer), (unsigned char *)RSTRING_PTR(str), pkey->pkey.rsa, pad); @@ -340,7 +342,8 @@ rb_scan_args(argc, argv, "11", &buffer, &padding); pad = (argc == 1) ? RSA_PKCS1_PADDING : NUM2INT(padding); StringValue(buffer); - str = rb_str_new(0, ossl_rsa_buf_size(pkey)); + str = rb_bstr_new(); + rb_bstr_resize(str, ossl_rsa_buf_size(pkey)); buf_len = RSA_public_decrypt(RSTRING_LEN(buffer), (unsigned char *)RSTRING_PTR(buffer), (unsigned char *)RSTRING_PTR(str), pkey->pkey.rsa, pad); @@ -369,7 +372,8 @@ rb_scan_args(argc, argv, "11", &buffer, &padding); pad = (argc == 1) ? RSA_PKCS1_PADDING : NUM2INT(padding); StringValue(buffer); - str = rb_str_new(0, ossl_rsa_buf_size(pkey)); + str = rb_bstr_new(); + rb_bstr_resize(str, ossl_rsa_buf_size(pkey)); buf_len = RSA_private_encrypt(RSTRING_LEN(buffer), (unsigned char *)RSTRING_PTR(buffer), (unsigned char *)RSTRING_PTR(str), pkey->pkey.rsa, pad); @@ -399,7 +403,8 @@ rb_scan_args(argc, argv, "11", &buffer, &padding); pad = (argc == 1) ? RSA_PKCS1_PADDING : NUM2INT(padding); StringValue(buffer); - str = rb_str_new(0, ossl_rsa_buf_size(pkey)); + str = rb_bstr_new(); + rb_bstr_resize(str, ossl_rsa_buf_size(pkey)); buf_len = RSA_private_decrypt(RSTRING_LEN(buffer), (unsigned char *)RSTRING_PTR(buffer), (unsigned char *)RSTRING_PTR(str), pkey->pkey.rsa, pad);