Add PKey::bits

This commit is contained in:
Steven Fackler 2016-11-12 11:00:15 +00:00
parent 7c9afd8c99
commit 9b5c62b053
3 changed files with 11 additions and 0 deletions

View File

@ -600,6 +600,7 @@ extern {
line: c_int) -> c_int;
pub fn EVP_MD_CTX_create() -> *mut EVP_MD_CTX;
pub fn EVP_MD_CTX_destroy(ctx: *mut EVP_MD_CTX);
pub fn EVP_PKEY_bits(key: *mut EVP_PKEY) -> c_int;
pub fn sk_num(st: *const _STACK) -> c_int;
pub fn sk_value(st: *const _STACK, n: c_int) -> *mut c_void;

View File

@ -147,6 +147,7 @@ extern {
pub fn X509_STORE_CTX_get0_chain(ctx: *mut ::X509_STORE_CTX) -> *mut stack_st_X509;
pub fn EVP_MD_CTX_new() -> *mut EVP_MD_CTX;
pub fn EVP_MD_CTX_free(ctx: *mut EVP_MD_CTX);
pub fn EVP_PKEY_bits(key: *const EVP_PKEY) -> c_int;
pub fn OpenSSL_version_num() -> c_ulong;
pub fn OpenSSL_version(key: c_int) -> *const c_char;

View File

@ -92,6 +92,15 @@ impl PKeyRef {
Ok(mem_bio.get_buf().to_owned())
}
/// Returns the size of the key.
///
/// This corresponds to the bit length of the modulus of an RSA key, and the bit length of the
/// group order for an elliptic curve key, for example.
pub fn bits(&self) -> usize {
unsafe { ffi::EVP_PKEY_bits(self.as_ptr()) as usize }
}
/// Compares the public component of this key with another.
pub fn public_eq(&self, other: &PKeyRef) -> bool {
unsafe { ffi::EVP_PKEY_cmp(self.as_ptr(), other.as_ptr()) == 1 }
}