cardano-serialization-lib icon indicating copy to clipboard operation
cardano-serialization-lib copied to clipboard

Upstream ed25519-bip32 version change

Open SebastienGllmt opened this issue 5 years ago • 1 comments

We should add this upstream changes into our codebase

https://github.com/input-output-hk/chain-libs/commit/0295b6db5fea512838a957739cc33746c6d0da88

SebastienGllmt avatar Aug 27 '20 00:08 SebastienGllmt

Would this also include the removal of any <Ed25519Bip32> within the chain_crypto/derive.rs ?

there are a few conversions from <Ed25519Bip32> to <Ed25519> or <Ed25519Extended> that probably no longer make sense.

pub fn to_raw_sk(key: &SecretKey<Ed25519Bip32>) -> SecretKey<Ed25519Extended> {
    SecretKey(ExtendedPriv::from(&key.0))
}

pub fn to_raw_pk(key: &PublicKey<Ed25519Bip32>) -> PublicKey<Ed25519> {
    PublicKey(Pub::from_xpub(&key.0))
}

there's also a few operations on <Ed25519Bip32> that might be removed or transformed

pub fn derive_sk_ed25519(key: &SecretKey<Ed25519Bip32>, index: u32) -> SecretKey<Ed25519Bip32> {
    let new_key = key.0.derive(DerivationScheme::V2, index);
    SecretKey(new_key)
}

pub fn derive_pk_ed25519(
    key: &PublicKey<Ed25519Bip32>,
    index: u32,
) -> Result<PublicKey<Ed25519Bip32>, DerivationError> {
    key.0.derive(DerivationScheme::V2, index).map(PublicKey)
}

pub fn from_bip39_entropy(entropy: &[u8], password: &[u8]) -> SecretKey<Ed25519Bip32> {
    let mut pbkdf2_result = [0; XPRV_SIZE];

    const ITER: u32 = 4096;
    let mut mac = Hmac::new(Sha512::new(), password);
    pbkdf2(&mut mac, entropy.as_ref(), ITER, &mut pbkdf2_result);

    SecretKey(XPrv::normalize_bytes_force3rd(pbkdf2_result))
}

edjroz avatar Jun 19 '21 21:06 edjroz