public static void KeyPairFromSeed(ArraySegment <byte> publicKey, ArraySegment <byte> expandedPrivateKey, ArraySegment <byte> privateKeySeed) { if (publicKey.Array == null) { throw new ArgumentNullException("publicKey.Array"); } if (expandedPrivateKey.Array == null) { throw new ArgumentNullException("expandedPrivateKey.Array"); } if (privateKeySeed.Array == null) { throw new ArgumentNullException("privateKeySeed.Array"); } if (publicKey.Count != PublicKeySizeInBytes) { throw new ArgumentException("publicKey.Count"); } if (expandedPrivateKey.Count != ExpandedPrivateKeySizeInBytes) { throw new ArgumentException("expandedPrivateKey.Count"); } if (privateKeySeed.Count != PrivateKeySeedSizeInBytes) { throw new ArgumentException("privateKeySeed.Count"); } Ed25519Operations.crypto_sign_keypair( publicKey.Array, publicKey.Offset, expandedPrivateKey.Array, expandedPrivateKey.Offset, privateKeySeed.Array, privateKeySeed.Offset); }
public static void KeyPairFromSeed(out byte[] publicKey, out byte[] expandedPrivateKey, byte[] privateKeySeed) { Throw.If(privateKeySeed == null, "privateKeySeed"); Throw.If(privateKeySeed.Length != PrivateKeySeedSizeInBytes, $"privateKeySeed length should be {PrivateKeySeedSizeInBytes}"); var pk = new byte[PublicKeySizeInBytes]; var sk = new byte[ExpandedPrivateKeySizeInBytes]; Ed25519Operations.crypto_sign_keypair(pk, 0, sk, 0, privateKeySeed, 0); publicKey = pk; expandedPrivateKey = sk; }