Я сейчас пытаюсь сгенерировать пару ключей ED25519 из хэша SHA256 (через rust-crypto
ящик):
extern crate crypto; // rust-crypto = "0.2.36"
use crypto::ed25519;
use crypto::sha2::Sha256;
use crypto::digest::Digest;
fn main() {
let phrase = "purchase hobby popular celery evil fantasy someone party position gossip host gather";
let mut seed = Sha256::new();
seed.input_str(&phrase);
let (_priv, _publ) = ed25519::keypair(&seed); // expects slice
}
Однако я совершенно не понимаю, как правильно передать SHA256 в функцию ed25519::keypair()
. Я проследил, что &seed.result_str()
приводит к:
"fc37862cb425ca4368e8e368c54bb6ea0a1f305a225978564d1bdabdc7d99bdb"
Это правильный хеш, а &seed.result_str().as_bytes()
приводит к:
[102, 99, 51, 55, 56, 54, 50, 99, 98, 52, 50, 53, 99, 97, 52, 51, 54, 56, 101, 56, 101, 51, 54, 56, 99, 53, 52, 98, 98, 54, 101, 97, 48, 97, 49, 102, 51, 48, 53, 97, 50, 50, 53, 57, 55, 56, 53, 54, 52, 100, 49, 98, 100, 97, 98, 100, 99, 55, 100, 57, 57, 98, 100, 98]
Что-то, чего я не хочу, что-то совершенно другое. Теперь вопрос сводится к:
|
36 | let (_priv, _publ) = ed25519::keypair(&seed);
| ^^^^^ expected slice, found struct `crypto::sha2::Sha256`
|
= note: expected type `&[u8]`
found type `&crypto::sha2::Sha256`
Как правильно преобразовать хеш crypto::sha2::Sha256
в представление [u8]
?