package im.actor.crypto.ratchet; import im.actor.crypto.Curve25519; import im.actor.crypto.primitives.digest.SHA256; import im.actor.crypto.primitives.kdf.HKDF; public class RatchetRootChainKey { public static byte[] makeRootChainKey(RatchetPrivateKey ownEphermal, RatchetPublicKey theirEphermal, byte[] masterSecret) { byte[] ecRes = Curve25519.calculateAgreement(ownEphermal.getPrivateKey(), theirEphermal.getKey()); HKDF hkdf = new HKDF(new SHA256()); return hkdf.deriveSecrets(ecRes, masterSecret, "ActorRatchet".getBytes(), 32); } }