rust_chain/
crypto.rs

1use crate::vmapi::crypto;
2
3use crate::structs::*;
4
5use crate::serializer::{
6    Packer as _,
7    Encoder
8};
9
10use crate::vec;
11
12///
13pub fn assert_sha256(data: &[u8], hash: &Checksum256) {
14    crypto::assert_sha256(data.as_ptr(), data.len() as u32, hash);
15}
16
17///
18pub fn assert_sha1(data: &[u8], hash: &Checksum160) {
19    crypto::assert_sha1(data.as_ptr(), data.len() as u32, hash);
20}
21
22///
23pub fn assert_sha512(data: &[u8], hash: &Checksum512) {
24    crypto::assert_sha512(data.as_ptr(), data.len() as u32, hash);
25}
26
27pub fn assert_ripemd160(data: &[u8], hash: &Checksum160) {
28    crypto::assert_ripemd160(data.as_ptr(), data.len() as u32, hash)
29}
30
31///
32pub fn sha256(data: &[u8]) -> Checksum256 {
33    let mut hash: Checksum256 = Default::default();
34    crypto::sha256(data.as_ptr(), data.len() as u32, &mut hash);
35    return hash;
36}
37
38///
39pub fn sha1( data: &[u8]) -> Checksum160 {
40    let mut hash: Checksum160 = Checksum160::default();
41    crypto::sha1(data.as_ptr(), data.len() as u32, &mut hash);
42    return hash;
43}
44
45///
46pub fn sha512( data: &[u8]) -> Checksum512 {
47    let mut hash: Checksum512 = Checksum512::default();
48    crypto::sha512(data.as_ptr(), data.len() as u32, & mut hash);
49    return hash;
50}
51
52///
53pub fn ripemd160(data: &[u8]) -> Checksum160 {
54    let mut hash: Checksum160 = Checksum160::default();
55    crypto::ripemd160(data.as_ptr(), data.len() as u32, &mut hash);
56    return hash;
57}
58
59///
60pub fn recover_key( digest: &Checksum256 , sig: &Signature) -> PublicKey {
61    let mut pubkey = vec![0u8; 34];
62    let _sig = Encoder::pack(sig);
63
64    crypto::recover_key(digest, _sig.as_ptr(), _sig.len(), pubkey.as_mut_ptr(), pubkey.len());
65    let mut ret = PublicKey::default();
66    ret.unpack(&pubkey);
67    return ret;
68}
69
70///
71pub fn assert_recover_key(digest: &Checksum256, sig: &Signature, pubkey: &PublicKey) {
72    let _sig = Encoder::pack(sig);
73    let _pubkey = Encoder::pack(pubkey);
74    crypto::assert_recover_key(digest, _sig.as_ptr(), _sig.len(), _pubkey.as_ptr(), _pubkey.len());
75}