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.
This commit is contained in:
Elly Jones 2011-12-15 18:03:44 -05:00
parent 0963c2bfa4
commit 8e8625147c
1 changed files with 7 additions and 7 deletions

14
pkey.rs
View File

@ -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::<u8>(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::<u8>(0u8, len + 1u);
@ -259,7 +259,7 @@ fn mk_pkey() -> pkey {
ret vec::slice::<u8>(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::<u8>(0u8, len + 1u);
let pr: *u8 = vec::unsafe::to_ptr::<u8>(r);
@ -271,7 +271,7 @@ fn mk_pkey() -> pkey {
ret vec::slice::<u8>(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::<u8>(m);
let ps: *u8 = vec::unsafe::to_ptr::<u8>(s);
// XXX: 672 == NID_sha256