keypair.cs 767 B

1234567891011121314151617181920212223
  1. using System;
  2. namespace Renci.SshNet.Security.Chaos.NaCl.Internal.Ed25519Ref10
  3. {
  4. internal static partial class Ed25519Operations
  5. {
  6. internal static void crypto_sign_keypair(byte[] pk, int pkoffset, byte[] sk, int skoffset, byte[] seed, int seedoffset)
  7. {
  8. GroupElementP3 A;
  9. int i;
  10. Array.Copy(seed, seedoffset, sk, skoffset, 32);
  11. byte[] h = Sha512.Hash(sk, skoffset, 32);//ToDo: Remove alloc
  12. ScalarOperations.sc_clamp(h, 0);
  13. GroupOperations.ge_scalarmult_base(out A, h, 0);
  14. GroupOperations.ge_p3_tobytes(pk, pkoffset, ref A);
  15. for (i = 0; i < 32; ++i) sk[skoffset + 32 + i] = pk[pkoffset + i];
  16. CryptoBytes.Wipe(h);
  17. }
  18. }
  19. }