Remove pkey::ANYKEY

This commit is contained in:
Erick Tryzelaar 2013-08-15 07:36:33 -07:00
parent 1ee6b87b2f
commit ac28cf944b
1 changed files with 7 additions and 18 deletions

25
pkey.rs
View File

@ -7,21 +7,19 @@ use std::vec;
#[allow(non_camel_case_types)]
pub type EVP_PKEY = *libc::c_void;
#[allow(non_camel_case_types)]
pub type ANYKEY = *libc::c_void;
#[allow(non_camel_case_types)]
pub type RSA = *libc::c_void;
mod libcrypto {
use super::*;
use std::libc::{c_int, c_uint};
use std::libc::{c_char, c_int, c_uint};
#[link_args = "-lcrypto"]
extern "C" {
fn EVP_PKEY_new() -> *EVP_PKEY;
fn EVP_PKEY_free(k: *EVP_PKEY);
fn EVP_PKEY_assign(k: *EVP_PKEY, t: c_int, inner: *ANYKEY) -> c_int;
fn EVP_PKEY_assign(pkey: *EVP_PKEY, typ: c_int, key: *c_char) -> c_int;
fn EVP_PKEY_get1_RSA(k: *EVP_PKEY) -> *RSA;
fn i2d_PublicKey(k: *EVP_PKEY, buf: **mut u8) -> c_int;
@ -57,18 +55,6 @@ pub enum Role {
Verify
}
fn rsa_to_any(rsa: *RSA) -> *ANYKEY {
unsafe {
cast::transmute(rsa)
}
}
fn any_to_rsa(anykey: *ANYKEY) -> *RSA {
unsafe {
cast::transmute(anykey)
}
}
pub struct PKey {
priv evp: *EVP_PKEY,
priv parts: Parts,
@ -117,9 +103,12 @@ impl PKey {
ptr::null()
);
let rsa_ = rsa_to_any(rsa);
// XXX: 6 == NID_rsaEncryption
libcrypto::EVP_PKEY_assign(self.evp, 6 as c_int, rsa_);
libcrypto::EVP_PKEY_assign(
self.evp,
6 as c_int,
cast::transmute(rsa));
self.parts = Both;
}
}