1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
use ockam_core::hex::encode; use ockam_vault_core::{Hasher, SecretAttributes, SecretPersistence, SecretType, SecretVault}; pub fn sha256(vault: &mut impl Hasher) { let res = vault.sha256(b"a"); assert!(res.is_ok()); let digest = res.unwrap(); assert_eq!( encode(digest), "ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb" ); } pub fn hkdf(vault: &mut (impl Hasher + SecretVault)) { let salt_value = b"hkdf_test"; let attributes = SecretAttributes::new( SecretType::Buffer, SecretPersistence::Ephemeral, salt_value.len(), ); let salt = vault.secret_import(&salt_value[..], attributes).unwrap(); let ikm_value = b"a"; let attributes = SecretAttributes::new( SecretType::Buffer, SecretPersistence::Ephemeral, ikm_value.len(), ); let ikm = vault.secret_import(&ikm_value[..], attributes).unwrap(); let attributes = SecretAttributes::new(SecretType::Buffer, SecretPersistence::Ephemeral, 24); let res = vault.hkdf_sha256(&salt, b"", Some(&ikm), vec![attributes]); assert!(res.is_ok()); let digest = res.unwrap(); assert_eq!(digest.len(), 1); let digest = vault.secret_export(&digest[0]).unwrap(); assert_eq!( encode(digest.as_ref()), "921ab9f260544b71941dbac2ca2d42c417aa07b53e055a8f" ); }