From 8e8625147c3125998f2b4244f4aff5be187b4dce Mon Sep 17 00:00:00 2001 From: Elly Jones Date: Thu, 15 Dec 2011 18:03:44 -0500 Subject: [PATCH] pkey: use EVP_PKEY_get1_* instead of EVP_PKEY_get0. EVP_PKEY_get0 is not in 0.9.8, which is still very widely deployed. --- pkey.rs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/pkey.rs b/pkey.rs index 5c2e2249..00122187 100644 --- a/pkey.rs +++ b/pkey.rs @@ -17,7 +17,7 @@ native mod _native { fn EVP_PKEY_new() -> *EVP_PKEY; fn EVP_PKEY_free(k: *EVP_PKEY); fn EVP_PKEY_assign(k: *EVP_PKEY, t: int, inner: *ANYKEY); - fn EVP_PKEY_get0(k: *EVP_PKEY) -> *ANYKEY; + fn EVP_PKEY_get1_RSA(k: *EVP_PKEY) -> *RSA; fn i2d_PublicKey(k: *EVP_PKEY, buf: **u8) -> int; fn d2i_PublicKey(t: int, k: **EVP_PKEY, buf: **u8, len: uint) -> *EVP_PKEY; @@ -217,7 +217,7 @@ fn mk_pkey() -> pkey { st.parts = both; } fn size() -> uint { - _native::RSA_size(any_to_rsa(_native::EVP_PKEY_get0(st.evp))) + _native::RSA_size(_native::EVP_PKEY_get1_RSA(st.evp)) } fn can(r: pkeyrole) -> bool { alt r { @@ -228,13 +228,13 @@ fn mk_pkey() -> pkey { } } fn max_data() -> uint unsafe { - let rsa = any_to_rsa(_native::EVP_PKEY_get0(st.evp)); + let rsa = _native::EVP_PKEY_get1_RSA(st.evp); let len = _native::RSA_size(rsa); // 41 comes from RSA_public_encrypt(3) for OAEP ret len - 41u; } fn encrypt(s: [u8]) -> [u8] unsafe { - let rsa = any_to_rsa(_native::EVP_PKEY_get0(st.evp)); + let rsa = _native::EVP_PKEY_get1_RSA(st.evp); let len = _native::RSA_size(rsa); // 41 comes from RSA_public_encrypt(3) for OAEP assert(vec::len(s) < _native::RSA_size(rsa) - 41u); @@ -247,7 +247,7 @@ fn mk_pkey() -> pkey { ret vec::slice::(r, 0u, rv as uint); } fn decrypt(s: [u8]) -> [u8] unsafe { - let rsa = any_to_rsa(_native::EVP_PKEY_get0(st.evp)); + let rsa = _native::EVP_PKEY_get1_RSA(st.evp); let len = _native::RSA_size(rsa); assert(vec::len(s) == _native::RSA_size(rsa)); let r: [mutable u8] = vec::init_elt_mut::(0u8, len + 1u); @@ -259,7 +259,7 @@ fn mk_pkey() -> pkey { ret vec::slice::(r, 0u, rv as uint); } fn sign(s: [u8]) -> [u8] unsafe { - let rsa = any_to_rsa(_native::EVP_PKEY_get0(st.evp)); + let rsa = _native::EVP_PKEY_get1_RSA(st.evp); let len = _native::RSA_size(rsa); let r: [mutable u8] = vec::init_elt_mut::(0u8, len + 1u); let pr: *u8 = vec::unsafe::to_ptr::(r); @@ -271,7 +271,7 @@ fn mk_pkey() -> pkey { ret vec::slice::(r, 0u, *plen as uint); } fn verify(m: [u8], s: [u8]) -> bool unsafe { - let rsa = any_to_rsa(_native::EVP_PKEY_get0(st.evp)); + let rsa = _native::EVP_PKEY_get1_RSA(st.evp); let pm: *u8 = vec::unsafe::to_ptr::(m); let ps: *u8 = vec::unsafe::to_ptr::(s); // XXX: 672 == NID_sha256