eccsi.h 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. /*!
  2. \ingroup ECCSI_Setup
  3. */
  4. int wc_InitEccsiKey(EccsiKey* key, void* heap, int devId);
  5. /*!
  6. \ingroup ECCSI_Setup
  7. */
  8. int wc_InitEccsiKey_ex(EccsiKey* key, int keySz, int curveId,
  9. void* heap, int devId);
  10. /*!
  11. \ingroup ECCSI_Setup
  12. */
  13. void wc_FreeEccsiKey(EccsiKey* key);
  14. /*!
  15. \ingroup ECCSI_Setup
  16. */
  17. int wc_MakeEccsiKey(EccsiKey* key, WC_RNG* rng);
  18. /*!
  19. \ingroup ECCSI_Operations
  20. */
  21. int wc_MakeEccsiPair(EccsiKey* key, WC_RNG* rng,
  22. enum wc_HashType hashType, const byte* id, word32 idSz, mp_int* ssk,
  23. ecc_point* pvt);
  24. /*!
  25. \ingroup ECCSI_Operations
  26. */
  27. int wc_ValidateEccsiPair(EccsiKey* key, enum wc_HashType hashType,
  28. const byte* id, word32 idSz, const mp_int* ssk, ecc_point* pvt,
  29. int* valid);
  30. /*!
  31. \ingroup ECCSI_Operations
  32. */
  33. int wc_ValidateEccsiPvt(EccsiKey* key, const ecc_point* pvt,
  34. int* valid);
  35. /*!
  36. \ingroup ECCSI_Operations
  37. */
  38. int wc_EncodeEccsiPair(const EccsiKey* key, mp_int* ssk,
  39. ecc_point* pvt, byte* data, word32* sz);
  40. /*!
  41. \ingroup ECCSI_Operations
  42. */
  43. int wc_EncodeEccsiSsk(const EccsiKey* key, mp_int* ssk, byte* data,
  44. word32* sz);
  45. /*!
  46. \ingroup ECCSI_Operations
  47. */
  48. int wc_EncodeEccsiPvt(const EccsiKey* key, ecc_point* pvt,
  49. byte* data, word32* sz, int raw);
  50. /*!
  51. \ingroup ECCSI_Operations
  52. */
  53. int wc_DecodeEccsiPair(const EccsiKey* key, const byte* data,
  54. word32 sz, mp_int* ssk, ecc_point* pvt);
  55. /*!
  56. \ingroup ECCSI_Operations
  57. */
  58. int wc_DecodeEccsiSsk(const EccsiKey* key, const byte* data,
  59. word32 sz, mp_int* ssk);
  60. /*!
  61. \ingroup ECCSI_Operations
  62. */
  63. int wc_DecodeEccsiPvt(const EccsiKey* key, const byte* data,
  64. word32 sz, ecc_point* pvt);
  65. /*!
  66. \ingroup ECCSI_Operations
  67. */
  68. int wc_DecodeEccsiPvtFromSig(const EccsiKey* key, const byte* sig,
  69. word32 sz, ecc_point* pvt);
  70. /*!
  71. \ingroup ECCSI_Setup
  72. */
  73. int wc_ExportEccsiKey(EccsiKey* key, byte* data, word32* sz);
  74. /*!
  75. \ingroup ECCSI_Setup
  76. */
  77. int wc_ImportEccsiKey(EccsiKey* key, const byte* data, word32 sz);
  78. /*!
  79. \ingroup ECCSI_Setup
  80. */
  81. int wc_ExportEccsiPrivateKey(EccsiKey* key, byte* data, word32* sz);
  82. /*!
  83. \ingroup ECCSI_Setup
  84. */
  85. int wc_ImportEccsiPrivateKey(EccsiKey* key, const byte* data,
  86. word32 sz);
  87. /*!
  88. \ingroup ECCSI_Setup
  89. */
  90. int wc_ExportEccsiPublicKey(EccsiKey* key, byte* data, word32* sz,
  91. int raw);
  92. /*!
  93. \ingroup ECCSI_Setup
  94. */
  95. int wc_ImportEccsiPublicKey(EccsiKey* key, const byte* data,
  96. word32 sz, int trusted);
  97. /*!
  98. \ingroup ECCSI_Operations
  99. */
  100. int wc_HashEccsiId(EccsiKey* key, enum wc_HashType hashType,
  101. const byte* id, word32 idSz, ecc_point* pvt, byte* hash, byte* hashSz);
  102. /*!
  103. \ingroup ECCSI_Setup
  104. */
  105. int wc_SetEccsiHash(EccsiKey* key, const byte* hash, byte hashSz);
  106. /*!
  107. \ingroup ECCSI_Setup
  108. */
  109. int wc_SetEccsiPair(EccsiKey* key, const mp_int* ssk,
  110. const ecc_point* pvt);
  111. /*!
  112. \ingroup ECCSI_Operations
  113. */
  114. int wc_SignEccsiHash(EccsiKey* key, WC_RNG* rng,
  115. enum wc_HashType hashType, const byte* msg, word32 msgSz, byte* sig,
  116. word32* sigSz);
  117. /*!
  118. \ingroup ECCSI_Operations
  119. */
  120. int wc_VerifyEccsiHash(EccsiKey* key, enum wc_HashType hashType,
  121. const byte* msg, word32 msgSz, const byte* sig, word32 sigSz,
  122. int* verified);