use bitcoin::hashes::hmac::{Hmac, HmacEngine};
use bitcoin::hashes::sha256::Hash as Sha256;
use bitcoin::secp256k1::{KeyPair, PublicKey, Secp256k1, SecretKey, self};
-use core::convert::TryFrom;
use core::fmt;
use crate::ln::channelmanager::PaymentId;
use crate::ln::inbound_payment::{ExpandedKey, IV_LEN, Nonce};
let mut bytes = self.encrypted_payment_id.map(|id| id.to_vec()).unwrap_or(vec![]);
bytes.extend_from_slice(self.nonce.as_slice());
- bytes.extend_from_slice(&Hmac::from_engine(self.hmac).into_inner());
+ bytes.extend_from_slice(Hmac::from_engine(self.hmac).as_byte_array());
bytes
}
bytes.extend_from_slice(self.nonce.as_slice());
let hmac = Hmac::from_engine(self.hmac);
- let privkey = SecretKey::from_slice(hmac.as_inner()).unwrap();
+ let privkey = SecretKey::from_slice(hmac.as_byte_array()).unwrap();
let keys = KeyPair::from_secret_key(secp_ctx, &privkey);
(bytes, keys)
const IV_BYTES: &[u8; IV_LEN] = b"LDK Invoice ~~~~";
let secp_ctx = Secp256k1::new();
let hmac = Hmac::from_engine(expanded_key.hmac_for_offer(nonce, IV_BYTES));
- let privkey = SecretKey::from_slice(hmac.as_inner()).unwrap();
+ let privkey = SecretKey::from_slice(hmac.as_byte_array()).unwrap();
KeyPair::from_secret_key(&secp_ctx, &privkey)
}
) -> Result<Option<KeyPair>, ()> {
if metadata.len() == Nonce::LENGTH {
let derived_keys = KeyPair::from_secret_key(
- secp_ctx, &SecretKey::from_slice(hmac.as_inner()).unwrap()
+ secp_ctx, &SecretKey::from_slice(hmac.as_byte_array()).unwrap()
);
if fixed_time_eq(&signing_pubkey.serialize(), &derived_keys.public_key().serialize()) {
Ok(Some(derived_keys))
Err(())
}
} else if metadata[Nonce::LENGTH..].len() == Sha256::LEN {
- if fixed_time_eq(&metadata[Nonce::LENGTH..], &hmac.into_inner()) {
+ if fixed_time_eq(&metadata[Nonce::LENGTH..], &hmac.to_byte_array()) {
Ok(None)
} else {
Err(())