ClpIEd25519.pas 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. { *********************************************************************************** }
  2. { * CryptoLib Library * }
  3. { * Copyright (c) 2018 - 20XX Ugochukwu Mmaduekwe * }
  4. { * Github Repository <https://github.com/Xor-el> * }
  5. { * Distributed under the MIT software license, see the accompanying file LICENSE * }
  6. { * or visit http://www.opensource.org/licenses/mit-license.php. * }
  7. { * Acknowledgements: * }
  8. { * * }
  9. { * Thanks to Sphere 10 Software (http://www.sphere10.com/) for sponsoring * }
  10. { * development of this library * }
  11. { * ******************************************************************************* * }
  12. (* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& *)
  13. unit ClpIEd25519;
  14. {$I ..\Include\CryptoLib.inc}
  15. interface
  16. uses
  17. ClpIDigest,
  18. ClpISecureRandom,
  19. ClpCryptoLibTypes;
  20. type
  21. IEd25519 = interface(IInterface)
  22. ['{2C6CD9DD-8809-44E6-979D-1EBE465CE9E2}']
  23. function GetAlgorithmName: String;
  24. function CreatePreHash(): IDigest;
  25. procedure GeneratePrivateKey(const random: ISecureRandom;
  26. const k: TCryptoLibByteArray);
  27. procedure GeneratePublicKey(const sk: TCryptoLibByteArray; skOff: Int32;
  28. pk: TCryptoLibByteArray; pkOff: Int32);
  29. procedure Sign(const sk: TCryptoLibByteArray; skOff: Int32;
  30. const m: TCryptoLibByteArray; mOff, mLen: Int32;
  31. const sig: TCryptoLibByteArray; sigOff: Int32); overload;
  32. procedure Sign(const sk: TCryptoLibByteArray; skOff: Int32;
  33. const pk: TCryptoLibByteArray; pkOff: Int32; const m: TCryptoLibByteArray;
  34. mOff, mLen: Int32; const sig: TCryptoLibByteArray;
  35. sigOff: Int32); overload;
  36. procedure Sign(const sk: TCryptoLibByteArray; skOff: Int32;
  37. const ctx, m: TCryptoLibByteArray; mOff, mLen: Int32;
  38. const sig: TCryptoLibByteArray; sigOff: Int32); overload;
  39. procedure Sign(const sk: TCryptoLibByteArray; skOff: Int32;
  40. const pk: TCryptoLibByteArray; pkOff: Int32;
  41. const ctx, m: TCryptoLibByteArray; mOff, mLen: Int32;
  42. const sig: TCryptoLibByteArray; sigOff: Int32); overload;
  43. procedure SignPreHash(const sk: TCryptoLibByteArray; skOff: Int32;
  44. const ctx, ph: TCryptoLibByteArray; phOff: Int32;
  45. const sig: TCryptoLibByteArray; sigOff: Int32); overload;
  46. procedure SignPreHash(const sk: TCryptoLibByteArray; skOff: Int32;
  47. const pk: TCryptoLibByteArray; pkOff: Int32;
  48. const ctx, ph: TCryptoLibByteArray; phOff: Int32;
  49. const sig: TCryptoLibByteArray; sigOff: Int32); overload;
  50. procedure SignPreHash(const sk: TCryptoLibByteArray; skOff: Int32;
  51. const ctx: TCryptoLibByteArray; const ph: IDigest;
  52. const sig: TCryptoLibByteArray; sigOff: Int32); overload;
  53. procedure SignPreHash(const sk: TCryptoLibByteArray; skOff: Int32;
  54. const pk: TCryptoLibByteArray; pkOff: Int32;
  55. const ctx: TCryptoLibByteArray; const ph: IDigest;
  56. const sig: TCryptoLibByteArray; sigOff: Int32); overload;
  57. function Verify(const sig: TCryptoLibByteArray; sigOff: Int32;
  58. const pk: TCryptoLibByteArray; pkOff: Int32; const m: TCryptoLibByteArray;
  59. mOff, mLen: Int32): Boolean; overload;
  60. function Verify(const sig: TCryptoLibByteArray; sigOff: Int32;
  61. const pk: TCryptoLibByteArray; pkOff: Int32;
  62. const ctx, m: TCryptoLibByteArray; mOff, mLen: Int32): Boolean; overload;
  63. function VerifyPreHash(const sig: TCryptoLibByteArray; sigOff: Int32;
  64. const pk: TCryptoLibByteArray; pkOff: Int32;
  65. const ctx, ph: TCryptoLibByteArray; phOff: Int32): Boolean; overload;
  66. function VerifyPreHash(const sig: TCryptoLibByteArray; sigOff: Int32;
  67. const pk: TCryptoLibByteArray; pkOff: Int32;
  68. const ctx: TCryptoLibByteArray; const ph: IDigest): Boolean; overload;
  69. property AlgorithmName: String read GetAlgorithmName;
  70. end;
  71. type
  72. IEd25519Blake2B = interface(IEd25519)
  73. ['{4EF6C436-D49D-4442-A014-848E08D81BE6}']
  74. end;
  75. implementation
  76. end.