ADDED: Support for BLAKE2 algorithms in crypto_data_hash/3.

This commit is contained in:
Markus Triska
2020-05-19 12:22:49 +02:00
parent f5c2f6f9e9
commit 9f5322d309
3 changed files with 15 additions and 3 deletions

View File

@@ -37,3 +37,4 @@ unicode_reader = "1.0.0"
ring = "0.16.13" ring = "0.16.13"
ripemd160 = "0.8.0" ripemd160 = "0.8.0"
sha3 = "0.8.2" sha3 = "0.8.2"
blake2 = "0.8.1"

View File

@@ -158,9 +158,9 @@ crypto_random_byte(B) :- '$crypto_random_byte'(B).
Options is a list of: Options is a list of:
- algorithm(+A) - algorithm(+A)
where A is one of ripemd160, sha256, sha384, sha512, where A is one of ripemd160, sha256, sha384, sha512, sha512_256,
sha512_256, sha3_224, sha3_256, sha3_384, sha3_512, or a sha3_224, sha3_256, sha3_384, sha3_512, blake2s256, blake2b512,
variable. If A is a variable, then it is unified with the or a variable. If A is a variable, then it is unified with the
default algorithm, which is an algorithm that is considered default algorithm, which is an algorithm that is considered
cryptographically secure at the time of this writing. cryptographically secure at the time of this writing.
- encoding(+Encoding) - encoding(+Encoding)
@@ -219,6 +219,8 @@ hash_algorithm(sha3_224).
hash_algorithm(sha3_256). hash_algorithm(sha3_256).
hash_algorithm(sha3_384). hash_algorithm(sha3_384).
hash_algorithm(sha3_512). hash_algorithm(sha3_512).
hash_algorithm(blake2s256).
hash_algorithm(blake2b512).
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

View File

@@ -43,6 +43,7 @@ use ring::rand::{SecureRandom, SystemRandom};
use ring::{digest,hkdf,pbkdf2,aead,error}; use ring::{digest,hkdf,pbkdf2,aead,error};
use ripemd160::{Ripemd160, Digest}; use ripemd160::{Ripemd160, Digest};
use sha3::{Sha3_224, Sha3_256, Sha3_384, Sha3_512}; use sha3::{Sha3_224, Sha3_256, Sha3_384, Sha3_512};
use blake2::{Blake2s, Blake2b};
pub fn get_key() -> KeyEvent { pub fn get_key() -> KeyEvent {
let key; let key;
@@ -5236,6 +5237,14 @@ impl MachineState {
let mut context = Sha3_512::new(); let mut context = Sha3_512::new();
context.input(&bytes); context.input(&bytes);
Addr::HeapCell(self.heap.to_list(context.result().as_ref().iter().map(|b| HeapCellValue::Integer(Rc::new(Integer::from(*b)))))) Addr::HeapCell(self.heap.to_list(context.result().as_ref().iter().map(|b| HeapCellValue::Integer(Rc::new(Integer::from(*b))))))
} else if algorithm_str == "blake2s256" {
let mut context = Blake2s::new();
context.input(&bytes);
Addr::HeapCell(self.heap.to_list(context.result().as_ref().iter().map(|b| HeapCellValue::Integer(Rc::new(Integer::from(*b))))))
} else if algorithm_str == "blake2b512" {
let mut context = Blake2b::new();
context.input(&bytes);
Addr::HeapCell(self.heap.to_list(context.result().as_ref().iter().map(|b| HeapCellValue::Integer(Rc::new(Integer::from(*b))))))
} else if algorithm_str == "ripemd160" { } else if algorithm_str == "ripemd160" {
let mut context = Ripemd160::new(); let mut context = Ripemd160::new();
context.input(&bytes); context.input(&bytes);