Add new HashType RIPEMD160
This commit is contained in:
parent
0c41d3b123
commit
9f2a9c8524
|
|
@ -8,7 +8,8 @@ pub enum HashType {
|
||||||
SHA224,
|
SHA224,
|
||||||
SHA256,
|
SHA256,
|
||||||
SHA384,
|
SHA384,
|
||||||
SHA512
|
SHA512,
|
||||||
|
RIPEMD160
|
||||||
}
|
}
|
||||||
|
|
||||||
#[allow(dead_code)]
|
#[allow(dead_code)]
|
||||||
|
|
@ -39,6 +40,7 @@ extern {
|
||||||
fn EVP_sha256() -> *const EVP_MD;
|
fn EVP_sha256() -> *const EVP_MD;
|
||||||
fn EVP_sha384() -> *const EVP_MD;
|
fn EVP_sha384() -> *const EVP_MD;
|
||||||
fn EVP_sha512() -> *const EVP_MD;
|
fn EVP_sha512() -> *const EVP_MD;
|
||||||
|
fn EVP_ripemd160() -> *const EVP_MD;
|
||||||
|
|
||||||
fn EVP_DigestInit(ctx: *mut EVP_MD_CTX, typ: *const EVP_MD);
|
fn EVP_DigestInit(ctx: *mut EVP_MD_CTX, typ: *const EVP_MD);
|
||||||
fn EVP_DigestUpdate(ctx: *mut EVP_MD_CTX, data: *const u8, n: c_uint);
|
fn EVP_DigestUpdate(ctx: *mut EVP_MD_CTX, data: *const u8, n: c_uint);
|
||||||
|
|
@ -54,6 +56,7 @@ pub fn evpmd(t: HashType) -> (*const EVP_MD, uint) {
|
||||||
SHA256 => (EVP_sha256(), 32u),
|
SHA256 => (EVP_sha256(), 32u),
|
||||||
SHA384 => (EVP_sha384(), 48u),
|
SHA384 => (EVP_sha384(), 48u),
|
||||||
SHA512 => (EVP_sha512(), 64u),
|
SHA512 => (EVP_sha512(), 64u),
|
||||||
|
RIPEMD160 => (EVP_ripemd160(), 20u),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -184,4 +187,15 @@ mod tests {
|
||||||
hash_test(super::SHA256, test);
|
hash_test(super::SHA256, test);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_ripemd160() {
|
||||||
|
let tests = [
|
||||||
|
HashTest("616263", "8eb208f7e05d987a9b044a8e98c6b087f15a0bfc")
|
||||||
|
];
|
||||||
|
|
||||||
|
for test in tests.iter() {
|
||||||
|
hash_test(super::RIPEMD160, test);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ use libc::{c_char, c_int, c_uint};
|
||||||
use libc;
|
use libc;
|
||||||
use std::mem;
|
use std::mem;
|
||||||
use std::ptr;
|
use std::ptr;
|
||||||
use crypto::hash::{HashType, MD5, SHA1, SHA224, SHA256, SHA384, SHA512};
|
use crypto::hash::{HashType, MD5, SHA1, SHA224, SHA256, SHA384, SHA512, RIPEMD160};
|
||||||
|
|
||||||
#[allow(non_camel_case_types)]
|
#[allow(non_camel_case_types)]
|
||||||
pub type EVP_PKEY = *mut libc::c_void;
|
pub type EVP_PKEY = *mut libc::c_void;
|
||||||
|
|
@ -64,12 +64,13 @@ fn openssl_padding_code(padding: EncryptionPadding) -> c_int {
|
||||||
|
|
||||||
fn openssl_hash_nid(hash: HashType) -> c_int {
|
fn openssl_hash_nid(hash: HashType) -> c_int {
|
||||||
match hash {
|
match hash {
|
||||||
MD5 => 4, // NID_md5,
|
MD5 => 4, // NID_md5,
|
||||||
SHA1 => 64, // NID_sha1
|
SHA1 => 64, // NID_sha1
|
||||||
SHA224 => 675, // NID_sha224
|
SHA224 => 675, // NID_sha224
|
||||||
SHA256 => 672, // NID_sha256
|
SHA256 => 672, // NID_sha256
|
||||||
SHA384 => 673, // NID_sha384
|
SHA384 => 673, // NID_sha384
|
||||||
SHA512 => 674, // NID_sha512
|
SHA512 => 674, // NID_sha512
|
||||||
|
RIPEMD160 => 117, // NID_ripemd160
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue