edhoc 1.0.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (672) hide show
  1. package/binding.gyp +64 -0
  2. package/external/libedhoc/backends/cbor/include/backend_cbor_bstr_type_decode.h +35 -0
  3. package/external/libedhoc/backends/cbor/include/backend_cbor_bstr_type_encode.h +35 -0
  4. package/external/libedhoc/backends/cbor/include/backend_cbor_bstr_type_types.h +34 -0
  5. package/external/libedhoc/backends/cbor/include/backend_cbor_ead_decode.h +35 -0
  6. package/external/libedhoc/backends/cbor/include/backend_cbor_ead_encode.h +35 -0
  7. package/external/libedhoc/backends/cbor/include/backend_cbor_edhoc_types.h +97 -0
  8. package/external/libedhoc/backends/cbor/include/backend_cbor_enc_structure_decode.h +35 -0
  9. package/external/libedhoc/backends/cbor/include/backend_cbor_enc_structure_encode.h +35 -0
  10. package/external/libedhoc/backends/cbor/include/backend_cbor_enc_structure_types.h +37 -0
  11. package/external/libedhoc/backends/cbor/include/backend_cbor_id_cred_x_decode.h +35 -0
  12. package/external/libedhoc/backends/cbor/include/backend_cbor_id_cred_x_encode.h +35 -0
  13. package/external/libedhoc/backends/cbor/include/backend_cbor_info_decode.h +35 -0
  14. package/external/libedhoc/backends/cbor/include/backend_cbor_info_encode.h +35 -0
  15. package/external/libedhoc/backends/cbor/include/backend_cbor_int_type_decode.h +35 -0
  16. package/external/libedhoc/backends/cbor/include/backend_cbor_int_type_encode.h +35 -0
  17. package/external/libedhoc/backends/cbor/include/backend_cbor_int_type_types.h +34 -0
  18. package/external/libedhoc/backends/cbor/include/backend_cbor_message_1_decode.h +35 -0
  19. package/external/libedhoc/backends/cbor/include/backend_cbor_message_1_encode.h +35 -0
  20. package/external/libedhoc/backends/cbor/include/backend_cbor_message_2_decode.h +35 -0
  21. package/external/libedhoc/backends/cbor/include/backend_cbor_message_2_encode.h +35 -0
  22. package/external/libedhoc/backends/cbor/include/backend_cbor_message_3_decode.h +35 -0
  23. package/external/libedhoc/backends/cbor/include/backend_cbor_message_3_encode.h +35 -0
  24. package/external/libedhoc/backends/cbor/include/backend_cbor_message_4_decode.h +35 -0
  25. package/external/libedhoc/backends/cbor/include/backend_cbor_message_4_encode.h +35 -0
  26. package/external/libedhoc/backends/cbor/include/backend_cbor_message_error_decode.h +35 -0
  27. package/external/libedhoc/backends/cbor/include/backend_cbor_message_error_encode.h +35 -0
  28. package/external/libedhoc/backends/cbor/include/backend_cbor_plaintext_2_decode.h +35 -0
  29. package/external/libedhoc/backends/cbor/include/backend_cbor_plaintext_2_encode.h +35 -0
  30. package/external/libedhoc/backends/cbor/include/backend_cbor_plaintext_3_decode.h +35 -0
  31. package/external/libedhoc/backends/cbor/include/backend_cbor_plaintext_3_encode.h +35 -0
  32. package/external/libedhoc/backends/cbor/include/backend_cbor_plaintext_4_decode.h +35 -0
  33. package/external/libedhoc/backends/cbor/include/backend_cbor_plaintext_4_encode.h +35 -0
  34. package/external/libedhoc/backends/cbor/include/backend_cbor_sig_structure_decode.h +35 -0
  35. package/external/libedhoc/backends/cbor/include/backend_cbor_sig_structure_encode.h +35 -0
  36. package/external/libedhoc/backends/cbor/include/backend_cbor_sig_structure_types.h +38 -0
  37. package/external/libedhoc/backends/cbor/include/backend_cbor_x509_types.h +170 -0
  38. package/external/libedhoc/backends/cbor/src/backend_cbor_bstr_type_decode.c +59 -0
  39. package/external/libedhoc/backends/cbor/src/backend_cbor_bstr_type_encode.c +59 -0
  40. package/external/libedhoc/backends/cbor/src/backend_cbor_ead_decode.c +74 -0
  41. package/external/libedhoc/backends/cbor/src/backend_cbor_ead_encode.c +74 -0
  42. package/external/libedhoc/backends/cbor/src/backend_cbor_enc_structure_decode.c +62 -0
  43. package/external/libedhoc/backends/cbor/src/backend_cbor_enc_structure_encode.c +62 -0
  44. package/external/libedhoc/backends/cbor/src/backend_cbor_id_cred_x_decode.c +141 -0
  45. package/external/libedhoc/backends/cbor/src/backend_cbor_id_cred_x_encode.c +141 -0
  46. package/external/libedhoc/backends/cbor/src/backend_cbor_info_decode.c +61 -0
  47. package/external/libedhoc/backends/cbor/src/backend_cbor_info_encode.c +61 -0
  48. package/external/libedhoc/backends/cbor/src/backend_cbor_int_type_decode.c +59 -0
  49. package/external/libedhoc/backends/cbor/src/backend_cbor_int_type_encode.c +59 -0
  50. package/external/libedhoc/backends/cbor/src/backend_cbor_message_1_decode.c +112 -0
  51. package/external/libedhoc/backends/cbor/src/backend_cbor_message_1_encode.c +112 -0
  52. package/external/libedhoc/backends/cbor/src/backend_cbor_message_2_decode.c +59 -0
  53. package/external/libedhoc/backends/cbor/src/backend_cbor_message_2_encode.c +59 -0
  54. package/external/libedhoc/backends/cbor/src/backend_cbor_message_3_decode.c +59 -0
  55. package/external/libedhoc/backends/cbor/src/backend_cbor_message_3_encode.c +59 -0
  56. package/external/libedhoc/backends/cbor/src/backend_cbor_message_4_decode.c +59 -0
  57. package/external/libedhoc/backends/cbor/src/backend_cbor_message_4_encode.c +59 -0
  58. package/external/libedhoc/backends/cbor/src/backend_cbor_message_error_decode.c +93 -0
  59. package/external/libedhoc/backends/cbor/src/backend_cbor_message_error_encode.c +93 -0
  60. package/external/libedhoc/backends/cbor/src/backend_cbor_plaintext_2_decode.c +193 -0
  61. package/external/libedhoc/backends/cbor/src/backend_cbor_plaintext_2_encode.c +194 -0
  62. package/external/libedhoc/backends/cbor/src/backend_cbor_plaintext_3_decode.c +189 -0
  63. package/external/libedhoc/backends/cbor/src/backend_cbor_plaintext_3_encode.c +189 -0
  64. package/external/libedhoc/backends/cbor/src/backend_cbor_plaintext_4_decode.c +88 -0
  65. package/external/libedhoc/backends/cbor/src/backend_cbor_plaintext_4_encode.c +88 -0
  66. package/external/libedhoc/backends/cbor/src/backend_cbor_sig_structure_decode.c +63 -0
  67. package/external/libedhoc/backends/cbor/src/backend_cbor_sig_structure_encode.c +63 -0
  68. package/external/libedhoc/externals/compact25519/src/c25519/c25519.c +126 -0
  69. package/external/libedhoc/externals/compact25519/src/c25519/c25519.h +49 -0
  70. package/external/libedhoc/externals/compact25519/src/c25519/ed25519.c +323 -0
  71. package/external/libedhoc/externals/compact25519/src/c25519/ed25519.h +84 -0
  72. package/external/libedhoc/externals/compact25519/src/c25519/edsign.c +171 -0
  73. package/external/libedhoc/externals/compact25519/src/c25519/edsign.h +53 -0
  74. package/external/libedhoc/externals/compact25519/src/c25519/f25519.c +330 -0
  75. package/external/libedhoc/externals/compact25519/src/c25519/f25519.h +98 -0
  76. package/external/libedhoc/externals/compact25519/src/c25519/fprime.c +226 -0
  77. package/external/libedhoc/externals/compact25519/src/c25519/fprime.h +81 -0
  78. package/external/libedhoc/externals/compact25519/src/c25519/sha512.c +230 -0
  79. package/external/libedhoc/externals/compact25519/src/c25519/sha512.h +54 -0
  80. package/external/libedhoc/externals/compact25519/src/compact_ed25519.c +46 -0
  81. package/external/libedhoc/externals/compact25519/src/compact_ed25519.h +110 -0
  82. package/external/libedhoc/externals/compact25519/src/compact_wipe.c +12 -0
  83. package/external/libedhoc/externals/compact25519/src/compact_wipe.h +14 -0
  84. package/external/libedhoc/externals/compact25519/src/compact_x25519.c +68 -0
  85. package/external/libedhoc/externals/compact25519/src/compact_x25519.h +101 -0
  86. package/external/libedhoc/externals/compact25519/test/pcg_random.h +25 -0
  87. package/external/libedhoc/externals/compact25519/test/run-all.c +178 -0
  88. package/external/libedhoc/externals/mbedtls/3rdparty/everest/include/everest/Hacl_Curve25519.h +21 -0
  89. package/external/libedhoc/externals/mbedtls/3rdparty/everest/include/everest/everest.h +234 -0
  90. package/external/libedhoc/externals/mbedtls/3rdparty/everest/include/everest/kremlib/FStar_UInt128.h +124 -0
  91. package/external/libedhoc/externals/mbedtls/3rdparty/everest/include/everest/kremlib/FStar_UInt64_FStar_UInt32_FStar_UInt16_FStar_UInt8.h +280 -0
  92. package/external/libedhoc/externals/mbedtls/3rdparty/everest/include/everest/kremlib.h +29 -0
  93. package/external/libedhoc/externals/mbedtls/3rdparty/everest/include/everest/kremlin/c_endianness.h +204 -0
  94. package/external/libedhoc/externals/mbedtls/3rdparty/everest/include/everest/kremlin/internal/builtin.h +16 -0
  95. package/external/libedhoc/externals/mbedtls/3rdparty/everest/include/everest/kremlin/internal/callconv.h +46 -0
  96. package/external/libedhoc/externals/mbedtls/3rdparty/everest/include/everest/kremlin/internal/compat.h +34 -0
  97. package/external/libedhoc/externals/mbedtls/3rdparty/everest/include/everest/kremlin/internal/debug.h +57 -0
  98. package/external/libedhoc/externals/mbedtls/3rdparty/everest/include/everest/kremlin/internal/target.h +102 -0
  99. package/external/libedhoc/externals/mbedtls/3rdparty/everest/include/everest/kremlin/internal/types.h +61 -0
  100. package/external/libedhoc/externals/mbedtls/3rdparty/everest/include/everest/kremlin/internal/wasmsupport.h +5 -0
  101. package/external/libedhoc/externals/mbedtls/3rdparty/everest/include/everest/vs2013/Hacl_Curve25519.h +21 -0
  102. package/external/libedhoc/externals/mbedtls/3rdparty/everest/include/everest/vs2013/inttypes.h +36 -0
  103. package/external/libedhoc/externals/mbedtls/3rdparty/everest/include/everest/vs2013/stdbool.h +31 -0
  104. package/external/libedhoc/externals/mbedtls/3rdparty/everest/include/everest/x25519.h +190 -0
  105. package/external/libedhoc/externals/mbedtls/3rdparty/everest/library/Hacl_Curve25519.c +760 -0
  106. package/external/libedhoc/externals/mbedtls/3rdparty/everest/library/Hacl_Curve25519_joined.c +50 -0
  107. package/external/libedhoc/externals/mbedtls/3rdparty/everest/library/everest.c +102 -0
  108. package/external/libedhoc/externals/mbedtls/3rdparty/everest/library/kremlib/FStar_UInt128_extracted.c +413 -0
  109. package/external/libedhoc/externals/mbedtls/3rdparty/everest/library/kremlib/FStar_UInt64_FStar_UInt32_FStar_UInt16_FStar_UInt8.c +100 -0
  110. package/external/libedhoc/externals/mbedtls/3rdparty/everest/library/legacy/Hacl_Curve25519.c +805 -0
  111. package/external/libedhoc/externals/mbedtls/3rdparty/everest/library/x25519.c +186 -0
  112. package/external/libedhoc/externals/mbedtls/3rdparty/p256-m/p256-m/p256-m.c +1514 -0
  113. package/external/libedhoc/externals/mbedtls/3rdparty/p256-m/p256-m/p256-m.h +135 -0
  114. package/external/libedhoc/externals/mbedtls/3rdparty/p256-m/p256-m_driver_entrypoints.c +312 -0
  115. package/external/libedhoc/externals/mbedtls/3rdparty/p256-m/p256-m_driver_entrypoints.h +219 -0
  116. package/external/libedhoc/externals/mbedtls/configs/config-ccm-psk-dtls1_2.h +92 -0
  117. package/external/libedhoc/externals/mbedtls/configs/config-ccm-psk-tls1_2.h +83 -0
  118. package/external/libedhoc/externals/mbedtls/configs/config-no-entropy.h +73 -0
  119. package/external/libedhoc/externals/mbedtls/configs/config-suite-b.h +106 -0
  120. package/external/libedhoc/externals/mbedtls/configs/config-symmetric-only.h +77 -0
  121. package/external/libedhoc/externals/mbedtls/configs/config-thread.h +76 -0
  122. package/external/libedhoc/externals/mbedtls/configs/crypto-config-ccm-aes-sha256.h +25 -0
  123. package/external/libedhoc/externals/mbedtls/configs/crypto_config_profile_medium.h +136 -0
  124. package/external/libedhoc/externals/mbedtls/configs/tfm_mbedcrypto_config_profile_medium.h +609 -0
  125. package/external/libedhoc/externals/mbedtls/doxygen/input/doc_encdec.h +54 -0
  126. package/external/libedhoc/externals/mbedtls/doxygen/input/doc_hashing.h +30 -0
  127. package/external/libedhoc/externals/mbedtls/doxygen/input/doc_mainpage.h +19 -0
  128. package/external/libedhoc/externals/mbedtls/doxygen/input/doc_rng.h +27 -0
  129. package/external/libedhoc/externals/mbedtls/doxygen/input/doc_ssltls.h +37 -0
  130. package/external/libedhoc/externals/mbedtls/doxygen/input/doc_tcpip.h +32 -0
  131. package/external/libedhoc/externals/mbedtls/doxygen/input/doc_x509.h +31 -0
  132. package/external/libedhoc/externals/mbedtls/include/mbedtls/aes.h +627 -0
  133. package/external/libedhoc/externals/mbedtls/include/mbedtls/aria.h +341 -0
  134. package/external/libedhoc/externals/mbedtls/include/mbedtls/asn1.h +641 -0
  135. package/external/libedhoc/externals/mbedtls/include/mbedtls/asn1write.h +389 -0
  136. package/external/libedhoc/externals/mbedtls/include/mbedtls/base64.h +82 -0
  137. package/external/libedhoc/externals/mbedtls/include/mbedtls/bignum.h +1084 -0
  138. package/external/libedhoc/externals/mbedtls/include/mbedtls/build_info.h +146 -0
  139. package/external/libedhoc/externals/mbedtls/include/mbedtls/camellia.h +303 -0
  140. package/external/libedhoc/externals/mbedtls/include/mbedtls/ccm.h +518 -0
  141. package/external/libedhoc/externals/mbedtls/include/mbedtls/chacha20.h +202 -0
  142. package/external/libedhoc/externals/mbedtls/include/mbedtls/chachapoly.h +342 -0
  143. package/external/libedhoc/externals/mbedtls/include/mbedtls/check_config.h +1206 -0
  144. package/external/libedhoc/externals/mbedtls/include/mbedtls/cipher.h +1183 -0
  145. package/external/libedhoc/externals/mbedtls/include/mbedtls/cmac.h +246 -0
  146. package/external/libedhoc/externals/mbedtls/include/mbedtls/compat-2.x.h +46 -0
  147. package/external/libedhoc/externals/mbedtls/include/mbedtls/config_adjust_legacy_crypto.h +183 -0
  148. package/external/libedhoc/externals/mbedtls/include/mbedtls/config_adjust_legacy_from_psa.h +877 -0
  149. package/external/libedhoc/externals/mbedtls/include/mbedtls/config_adjust_psa_from_legacy.h +334 -0
  150. package/external/libedhoc/externals/mbedtls/include/mbedtls/config_adjust_psa_superset_legacy.h +142 -0
  151. package/external/libedhoc/externals/mbedtls/include/mbedtls/config_adjust_ssl.h +76 -0
  152. package/external/libedhoc/externals/mbedtls/include/mbedtls/config_adjust_x509.h +25 -0
  153. package/external/libedhoc/externals/mbedtls/include/mbedtls/config_psa.h +55 -0
  154. package/external/libedhoc/externals/mbedtls/include/mbedtls/constant_time.h +36 -0
  155. package/external/libedhoc/externals/mbedtls/include/mbedtls/ctr_drbg.h +564 -0
  156. package/external/libedhoc/externals/mbedtls/include/mbedtls/debug.h +308 -0
  157. package/external/libedhoc/externals/mbedtls/include/mbedtls/des.h +385 -0
  158. package/external/libedhoc/externals/mbedtls/include/mbedtls/dhm.h +972 -0
  159. package/external/libedhoc/externals/mbedtls/include/mbedtls/ecdh.h +441 -0
  160. package/external/libedhoc/externals/mbedtls/include/mbedtls/ecdsa.h +671 -0
  161. package/external/libedhoc/externals/mbedtls/include/mbedtls/ecjpake.h +298 -0
  162. package/external/libedhoc/externals/mbedtls/include/mbedtls/ecp.h +1362 -0
  163. package/external/libedhoc/externals/mbedtls/include/mbedtls/entropy.h +273 -0
  164. package/external/libedhoc/externals/mbedtls/include/mbedtls/error.h +201 -0
  165. package/external/libedhoc/externals/mbedtls/include/mbedtls/gcm.h +370 -0
  166. package/external/libedhoc/externals/mbedtls/include/mbedtls/hkdf.h +124 -0
  167. package/external/libedhoc/externals/mbedtls/include/mbedtls/hmac_drbg.h +434 -0
  168. package/external/libedhoc/externals/mbedtls/include/mbedtls/lms.h +440 -0
  169. package/external/libedhoc/externals/mbedtls/include/mbedtls/mbedtls_config.h +4116 -0
  170. package/external/libedhoc/externals/mbedtls/include/mbedtls/md.h +640 -0
  171. package/external/libedhoc/externals/mbedtls/include/mbedtls/md5.h +190 -0
  172. package/external/libedhoc/externals/mbedtls/include/mbedtls/memory_buffer_alloc.h +142 -0
  173. package/external/libedhoc/externals/mbedtls/include/mbedtls/net_sockets.h +299 -0
  174. package/external/libedhoc/externals/mbedtls/include/mbedtls/nist_kw.h +166 -0
  175. package/external/libedhoc/externals/mbedtls/include/mbedtls/oid.h +722 -0
  176. package/external/libedhoc/externals/mbedtls/include/mbedtls/pem.h +160 -0
  177. package/external/libedhoc/externals/mbedtls/include/mbedtls/pk.h +1091 -0
  178. package/external/libedhoc/externals/mbedtls/include/mbedtls/pkcs12.h +186 -0
  179. package/external/libedhoc/externals/mbedtls/include/mbedtls/pkcs5.h +197 -0
  180. package/external/libedhoc/externals/mbedtls/include/mbedtls/pkcs7.h +241 -0
  181. package/external/libedhoc/externals/mbedtls/include/mbedtls/platform.h +485 -0
  182. package/external/libedhoc/externals/mbedtls/include/mbedtls/platform_time.h +79 -0
  183. package/external/libedhoc/externals/mbedtls/include/mbedtls/platform_util.h +201 -0
  184. package/external/libedhoc/externals/mbedtls/include/mbedtls/poly1305.h +168 -0
  185. package/external/libedhoc/externals/mbedtls/include/mbedtls/private_access.h +20 -0
  186. package/external/libedhoc/externals/mbedtls/include/mbedtls/psa_util.h +104 -0
  187. package/external/libedhoc/externals/mbedtls/include/mbedtls/ripemd160.h +136 -0
  188. package/external/libedhoc/externals/mbedtls/include/mbedtls/rsa.h +1143 -0
  189. package/external/libedhoc/externals/mbedtls/include/mbedtls/sha1.h +219 -0
  190. package/external/libedhoc/externals/mbedtls/include/mbedtls/sha256.h +198 -0
  191. package/external/libedhoc/externals/mbedtls/include/mbedtls/sha3.h +172 -0
  192. package/external/libedhoc/externals/mbedtls/include/mbedtls/sha512.h +208 -0
  193. package/external/libedhoc/externals/mbedtls/include/mbedtls/ssl.h +5369 -0
  194. package/external/libedhoc/externals/mbedtls/include/mbedtls/ssl_cache.h +187 -0
  195. package/external/libedhoc/externals/mbedtls/include/mbedtls/ssl_ciphersuites.h +616 -0
  196. package/external/libedhoc/externals/mbedtls/include/mbedtls/ssl_cookie.h +106 -0
  197. package/external/libedhoc/externals/mbedtls/include/mbedtls/ssl_ticket.h +181 -0
  198. package/external/libedhoc/externals/mbedtls/include/mbedtls/threading.h +105 -0
  199. package/external/libedhoc/externals/mbedtls/include/mbedtls/timing.h +94 -0
  200. package/external/libedhoc/externals/mbedtls/include/mbedtls/version.h +78 -0
  201. package/external/libedhoc/externals/mbedtls/include/mbedtls/x509.h +550 -0
  202. package/external/libedhoc/externals/mbedtls/include/mbedtls/x509_crl.h +184 -0
  203. package/external/libedhoc/externals/mbedtls/include/mbedtls/x509_crt.h +1196 -0
  204. package/external/libedhoc/externals/mbedtls/include/mbedtls/x509_csr.h +319 -0
  205. package/external/libedhoc/externals/mbedtls/include/psa/build_info.h +20 -0
  206. package/external/libedhoc/externals/mbedtls/include/psa/crypto.h +4685 -0
  207. package/external/libedhoc/externals/mbedtls/include/psa/crypto_adjust_auto_enabled.h +21 -0
  208. package/external/libedhoc/externals/mbedtls/include/psa/crypto_adjust_config_key_pair_types.h +91 -0
  209. package/external/libedhoc/externals/mbedtls/include/psa/crypto_adjust_config_synonyms.h +45 -0
  210. package/external/libedhoc/externals/mbedtls/include/psa/crypto_builtin_composites.h +210 -0
  211. package/external/libedhoc/externals/mbedtls/include/psa/crypto_builtin_key_derivation.h +118 -0
  212. package/external/libedhoc/externals/mbedtls/include/psa/crypto_builtin_primitives.h +114 -0
  213. package/external/libedhoc/externals/mbedtls/include/psa/crypto_compat.h +153 -0
  214. package/external/libedhoc/externals/mbedtls/include/psa/crypto_config.h +153 -0
  215. package/external/libedhoc/externals/mbedtls/include/psa/crypto_driver_common.h +44 -0
  216. package/external/libedhoc/externals/mbedtls/include/psa/crypto_driver_contexts_composites.h +151 -0
  217. package/external/libedhoc/externals/mbedtls/include/psa/crypto_driver_contexts_key_derivation.h +52 -0
  218. package/external/libedhoc/externals/mbedtls/include/psa/crypto_driver_contexts_primitives.h +105 -0
  219. package/external/libedhoc/externals/mbedtls/include/psa/crypto_extra.h +2064 -0
  220. package/external/libedhoc/externals/mbedtls/include/psa/crypto_legacy.h +88 -0
  221. package/external/libedhoc/externals/mbedtls/include/psa/crypto_platform.h +92 -0
  222. package/external/libedhoc/externals/mbedtls/include/psa/crypto_se_driver.h +1383 -0
  223. package/external/libedhoc/externals/mbedtls/include/psa/crypto_sizes.h +1282 -0
  224. package/external/libedhoc/externals/mbedtls/include/psa/crypto_struct.h +460 -0
  225. package/external/libedhoc/externals/mbedtls/include/psa/crypto_types.h +453 -0
  226. package/external/libedhoc/externals/mbedtls/include/psa/crypto_values.h +2756 -0
  227. package/external/libedhoc/externals/mbedtls/library/aes.c +2315 -0
  228. package/external/libedhoc/externals/mbedtls/library/aesce.c +503 -0
  229. package/external/libedhoc/externals/mbedtls/library/aesce.h +121 -0
  230. package/external/libedhoc/externals/mbedtls/library/aesni.c +802 -0
  231. package/external/libedhoc/externals/mbedtls/library/aesni.h +158 -0
  232. package/external/libedhoc/externals/mbedtls/library/alignment.h +509 -0
  233. package/external/libedhoc/externals/mbedtls/library/aria.c +991 -0
  234. package/external/libedhoc/externals/mbedtls/library/asn1parse.c +467 -0
  235. package/external/libedhoc/externals/mbedtls/library/asn1write.c +436 -0
  236. package/external/libedhoc/externals/mbedtls/library/base64.c +299 -0
  237. package/external/libedhoc/externals/mbedtls/library/base64_internal.h +45 -0
  238. package/external/libedhoc/externals/mbedtls/library/bignum.c +2806 -0
  239. package/external/libedhoc/externals/mbedtls/library/bignum_core.c +894 -0
  240. package/external/libedhoc/externals/mbedtls/library/bignum_core.h +763 -0
  241. package/external/libedhoc/externals/mbedtls/library/bignum_mod.c +394 -0
  242. package/external/libedhoc/externals/mbedtls/library/bignum_mod.h +452 -0
  243. package/external/libedhoc/externals/mbedtls/library/bignum_mod_raw.c +276 -0
  244. package/external/libedhoc/externals/mbedtls/library/bignum_mod_raw.h +416 -0
  245. package/external/libedhoc/externals/mbedtls/library/bignum_mod_raw_invasive.h +34 -0
  246. package/external/libedhoc/externals/mbedtls/library/bn_mul.h +1094 -0
  247. package/external/libedhoc/externals/mbedtls/library/camellia.c +1044 -0
  248. package/external/libedhoc/externals/mbedtls/library/ccm.c +712 -0
  249. package/external/libedhoc/externals/mbedtls/library/chacha20.c +497 -0
  250. package/external/libedhoc/externals/mbedtls/library/chachapoly.c +478 -0
  251. package/external/libedhoc/externals/mbedtls/library/check_crypto_config.h +141 -0
  252. package/external/libedhoc/externals/mbedtls/library/cipher.c +1664 -0
  253. package/external/libedhoc/externals/mbedtls/library/cipher_wrap.c +2422 -0
  254. package/external/libedhoc/externals/mbedtls/library/cipher_wrap.h +132 -0
  255. package/external/libedhoc/externals/mbedtls/library/cmac.c +1067 -0
  256. package/external/libedhoc/externals/mbedtls/library/common.h +325 -0
  257. package/external/libedhoc/externals/mbedtls/library/constant_time.c +261 -0
  258. package/external/libedhoc/externals/mbedtls/library/constant_time_impl.h +554 -0
  259. package/external/libedhoc/externals/mbedtls/library/constant_time_internal.h +579 -0
  260. package/external/libedhoc/externals/mbedtls/library/ctr_drbg.c +881 -0
  261. package/external/libedhoc/externals/mbedtls/library/debug.c +465 -0
  262. package/external/libedhoc/externals/mbedtls/library/des.c +1042 -0
  263. package/external/libedhoc/externals/mbedtls/library/dhm.c +712 -0
  264. package/external/libedhoc/externals/mbedtls/library/ecdh.c +685 -0
  265. package/external/libedhoc/externals/mbedtls/library/ecdsa.c +867 -0
  266. package/external/libedhoc/externals/mbedtls/library/ecjpake.c +1216 -0
  267. package/external/libedhoc/externals/mbedtls/library/ecp.c +3631 -0
  268. package/external/libedhoc/externals/mbedtls/library/ecp_curves.c +5467 -0
  269. package/external/libedhoc/externals/mbedtls/library/ecp_curves_new.c +6043 -0
  270. package/external/libedhoc/externals/mbedtls/library/ecp_internal_alt.h +287 -0
  271. package/external/libedhoc/externals/mbedtls/library/ecp_invasive.h +325 -0
  272. package/external/libedhoc/externals/mbedtls/library/entropy.c +676 -0
  273. package/external/libedhoc/externals/mbedtls/library/entropy_poll.c +229 -0
  274. package/external/libedhoc/externals/mbedtls/library/entropy_poll.h +64 -0
  275. package/external/libedhoc/externals/mbedtls/library/error.c +878 -0
  276. package/external/libedhoc/externals/mbedtls/library/gcm.c +1168 -0
  277. package/external/libedhoc/externals/mbedtls/library/hkdf.c +161 -0
  278. package/external/libedhoc/externals/mbedtls/library/hmac_drbg.c +633 -0
  279. package/external/libedhoc/externals/mbedtls/library/lmots.c +821 -0
  280. package/external/libedhoc/externals/mbedtls/library/lmots.h +311 -0
  281. package/external/libedhoc/externals/mbedtls/library/lms.c +779 -0
  282. package/external/libedhoc/externals/mbedtls/library/md.c +1108 -0
  283. package/external/libedhoc/externals/mbedtls/library/md5.c +426 -0
  284. package/external/libedhoc/externals/mbedtls/library/md_psa.h +63 -0
  285. package/external/libedhoc/externals/mbedtls/library/md_wrap.h +46 -0
  286. package/external/libedhoc/externals/mbedtls/library/memory_buffer_alloc.c +745 -0
  287. package/external/libedhoc/externals/mbedtls/library/mps_common.h +181 -0
  288. package/external/libedhoc/externals/mbedtls/library/mps_error.h +89 -0
  289. package/external/libedhoc/externals/mbedtls/library/mps_reader.c +538 -0
  290. package/external/libedhoc/externals/mbedtls/library/mps_reader.h +366 -0
  291. package/external/libedhoc/externals/mbedtls/library/mps_trace.c +112 -0
  292. package/external/libedhoc/externals/mbedtls/library/mps_trace.h +154 -0
  293. package/external/libedhoc/externals/mbedtls/library/net_sockets.c +696 -0
  294. package/external/libedhoc/externals/mbedtls/library/nist_kw.c +725 -0
  295. package/external/libedhoc/externals/mbedtls/library/oid.c +1154 -0
  296. package/external/libedhoc/externals/mbedtls/library/padlock.c +155 -0
  297. package/external/libedhoc/externals/mbedtls/library/padlock.h +111 -0
  298. package/external/libedhoc/externals/mbedtls/library/pem.c +520 -0
  299. package/external/libedhoc/externals/mbedtls/library/pk.c +970 -0
  300. package/external/libedhoc/externals/mbedtls/library/pk_internal.h +118 -0
  301. package/external/libedhoc/externals/mbedtls/library/pk_wrap.c +1834 -0
  302. package/external/libedhoc/externals/mbedtls/library/pk_wrap.h +156 -0
  303. package/external/libedhoc/externals/mbedtls/library/pkcs12.c +447 -0
  304. package/external/libedhoc/externals/mbedtls/library/pkcs5.c +496 -0
  305. package/external/libedhoc/externals/mbedtls/library/pkcs7.c +773 -0
  306. package/external/libedhoc/externals/mbedtls/library/pkparse.c +1845 -0
  307. package/external/libedhoc/externals/mbedtls/library/pkwrite.c +836 -0
  308. package/external/libedhoc/externals/mbedtls/library/pkwrite.h +112 -0
  309. package/external/libedhoc/externals/mbedtls/library/platform.c +402 -0
  310. package/external/libedhoc/externals/mbedtls/library/platform_util.c +285 -0
  311. package/external/libedhoc/externals/mbedtls/library/poly1305.c +492 -0
  312. package/external/libedhoc/externals/mbedtls/library/psa_crypto.c +8432 -0
  313. package/external/libedhoc/externals/mbedtls/library/psa_crypto_aead.c +653 -0
  314. package/external/libedhoc/externals/mbedtls/library/psa_crypto_aead.h +499 -0
  315. package/external/libedhoc/externals/mbedtls/library/psa_crypto_cipher.c +590 -0
  316. package/external/libedhoc/externals/mbedtls/library/psa_crypto_cipher.h +293 -0
  317. package/external/libedhoc/externals/mbedtls/library/psa_crypto_client.c +67 -0
  318. package/external/libedhoc/externals/mbedtls/library/psa_crypto_core.h +838 -0
  319. package/external/libedhoc/externals/mbedtls/library/psa_crypto_core_common.h +52 -0
  320. package/external/libedhoc/externals/mbedtls/library/psa_crypto_driver_wrappers.h +2871 -0
  321. package/external/libedhoc/externals/mbedtls/library/psa_crypto_driver_wrappers_no_static.c +256 -0
  322. package/external/libedhoc/externals/mbedtls/library/psa_crypto_driver_wrappers_no_static.h +31 -0
  323. package/external/libedhoc/externals/mbedtls/library/psa_crypto_ecp.c +561 -0
  324. package/external/libedhoc/externals/mbedtls/library/psa_crypto_ecp.h +267 -0
  325. package/external/libedhoc/externals/mbedtls/library/psa_crypto_ffdh.c +295 -0
  326. package/external/libedhoc/externals/mbedtls/library/psa_crypto_ffdh.h +132 -0
  327. package/external/libedhoc/externals/mbedtls/library/psa_crypto_hash.c +470 -0
  328. package/external/libedhoc/externals/mbedtls/library/psa_crypto_hash.h +211 -0
  329. package/external/libedhoc/externals/mbedtls/library/psa_crypto_invasive.h +70 -0
  330. package/external/libedhoc/externals/mbedtls/library/psa_crypto_its.h +131 -0
  331. package/external/libedhoc/externals/mbedtls/library/psa_crypto_mac.c +496 -0
  332. package/external/libedhoc/externals/mbedtls/library/psa_crypto_mac.h +264 -0
  333. package/external/libedhoc/externals/mbedtls/library/psa_crypto_pake.c +571 -0
  334. package/external/libedhoc/externals/mbedtls/library/psa_crypto_pake.h +159 -0
  335. package/external/libedhoc/externals/mbedtls/library/psa_crypto_random_impl.h +192 -0
  336. package/external/libedhoc/externals/mbedtls/library/psa_crypto_rsa.c +727 -0
  337. package/external/libedhoc/externals/mbedtls/library/psa_crypto_rsa.h +317 -0
  338. package/external/libedhoc/externals/mbedtls/library/psa_crypto_se.c +373 -0
  339. package/external/libedhoc/externals/mbedtls/library/psa_crypto_se.h +185 -0
  340. package/external/libedhoc/externals/mbedtls/library/psa_crypto_slot_management.c +559 -0
  341. package/external/libedhoc/externals/mbedtls/library/psa_crypto_slot_management.h +213 -0
  342. package/external/libedhoc/externals/mbedtls/library/psa_crypto_storage.c +481 -0
  343. package/external/libedhoc/externals/mbedtls/library/psa_crypto_storage.h +384 -0
  344. package/external/libedhoc/externals/mbedtls/library/psa_its_file.c +259 -0
  345. package/external/libedhoc/externals/mbedtls/library/psa_util.c +160 -0
  346. package/external/libedhoc/externals/mbedtls/library/psa_util_internal.h +96 -0
  347. package/external/libedhoc/externals/mbedtls/library/ripemd160.c +490 -0
  348. package/external/libedhoc/externals/mbedtls/library/rsa.c +2640 -0
  349. package/external/libedhoc/externals/mbedtls/library/rsa_alt_helpers.c +447 -0
  350. package/external/libedhoc/externals/mbedtls/library/rsa_alt_helpers.h +208 -0
  351. package/external/libedhoc/externals/mbedtls/library/sha1.c +480 -0
  352. package/external/libedhoc/externals/mbedtls/library/sha256.c +946 -0
  353. package/external/libedhoc/externals/mbedtls/library/sha3.c +626 -0
  354. package/external/libedhoc/externals/mbedtls/library/sha512.c +1111 -0
  355. package/external/libedhoc/externals/mbedtls/library/ssl_cache.c +410 -0
  356. package/external/libedhoc/externals/mbedtls/library/ssl_ciphersuites.c +2050 -0
  357. package/external/libedhoc/externals/mbedtls/library/ssl_client.c +1017 -0
  358. package/external/libedhoc/externals/mbedtls/library/ssl_client.h +22 -0
  359. package/external/libedhoc/externals/mbedtls/library/ssl_cookie.c +380 -0
  360. package/external/libedhoc/externals/mbedtls/library/ssl_debug_helpers.h +78 -0
  361. package/external/libedhoc/externals/mbedtls/library/ssl_debug_helpers_generated.c +234 -0
  362. package/external/libedhoc/externals/mbedtls/library/ssl_misc.h +2847 -0
  363. package/external/libedhoc/externals/mbedtls/library/ssl_msg.c +6155 -0
  364. package/external/libedhoc/externals/mbedtls/library/ssl_ticket.c +540 -0
  365. package/external/libedhoc/externals/mbedtls/library/ssl_tls.c +9577 -0
  366. package/external/libedhoc/externals/mbedtls/library/ssl_tls12_client.c +3607 -0
  367. package/external/libedhoc/externals/mbedtls/library/ssl_tls12_server.c +4403 -0
  368. package/external/libedhoc/externals/mbedtls/library/ssl_tls13_client.c +3046 -0
  369. package/external/libedhoc/externals/mbedtls/library/ssl_tls13_generic.c +1740 -0
  370. package/external/libedhoc/externals/mbedtls/library/ssl_tls13_invasive.h +23 -0
  371. package/external/libedhoc/externals/mbedtls/library/ssl_tls13_keys.c +1897 -0
  372. package/external/libedhoc/externals/mbedtls/library/ssl_tls13_keys.h +651 -0
  373. package/external/libedhoc/externals/mbedtls/library/ssl_tls13_server.c +3146 -0
  374. package/external/libedhoc/externals/mbedtls/library/threading.c +181 -0
  375. package/external/libedhoc/externals/mbedtls/library/timing.c +154 -0
  376. package/external/libedhoc/externals/mbedtls/library/version.c +32 -0
  377. package/external/libedhoc/externals/mbedtls/library/version_features.c +826 -0
  378. package/external/libedhoc/externals/mbedtls/library/x509.c +1776 -0
  379. package/external/libedhoc/externals/mbedtls/library/x509_create.c +557 -0
  380. package/external/libedhoc/externals/mbedtls/library/x509_crl.c +712 -0
  381. package/external/libedhoc/externals/mbedtls/library/x509_crt.c +3292 -0
  382. package/external/libedhoc/externals/mbedtls/library/x509_csr.c +574 -0
  383. package/external/libedhoc/externals/mbedtls/library/x509write.c +174 -0
  384. package/external/libedhoc/externals/mbedtls/library/x509write_crt.c +681 -0
  385. package/external/libedhoc/externals/mbedtls/library/x509write_csr.c +331 -0
  386. package/external/libedhoc/externals/mbedtls/programs/aes/crypt_and_hash.c +573 -0
  387. package/external/libedhoc/externals/mbedtls/programs/cipher/cipher_aead_demo.c +259 -0
  388. package/external/libedhoc/externals/mbedtls/programs/fuzz/common.c +105 -0
  389. package/external/libedhoc/externals/mbedtls/programs/fuzz/common.h +25 -0
  390. package/external/libedhoc/externals/mbedtls/programs/fuzz/fuzz_client.c +195 -0
  391. package/external/libedhoc/externals/mbedtls/programs/fuzz/fuzz_dtlsclient.c +138 -0
  392. package/external/libedhoc/externals/mbedtls/programs/fuzz/fuzz_dtlsserver.c +183 -0
  393. package/external/libedhoc/externals/mbedtls/programs/fuzz/fuzz_pkcs7.c +20 -0
  394. package/external/libedhoc/externals/mbedtls/programs/fuzz/fuzz_privkey.c +106 -0
  395. package/external/libedhoc/externals/mbedtls/programs/fuzz/fuzz_pubkey.c +86 -0
  396. package/external/libedhoc/externals/mbedtls/programs/fuzz/fuzz_server.c +218 -0
  397. package/external/libedhoc/externals/mbedtls/programs/fuzz/fuzz_x509crl.c +41 -0
  398. package/external/libedhoc/externals/mbedtls/programs/fuzz/fuzz_x509crt.c +41 -0
  399. package/external/libedhoc/externals/mbedtls/programs/fuzz/fuzz_x509csr.c +41 -0
  400. package/external/libedhoc/externals/mbedtls/programs/fuzz/onefile.c +69 -0
  401. package/external/libedhoc/externals/mbedtls/programs/hash/generic_sum.c +209 -0
  402. package/external/libedhoc/externals/mbedtls/programs/hash/hello.c +45 -0
  403. package/external/libedhoc/externals/mbedtls/programs/hash/md_hmac_demo.c +136 -0
  404. package/external/libedhoc/externals/mbedtls/programs/pkey/dh_client.c +274 -0
  405. package/external/libedhoc/externals/mbedtls/programs/pkey/dh_genprime.c +161 -0
  406. package/external/libedhoc/externals/mbedtls/programs/pkey/dh_server.c +296 -0
  407. package/external/libedhoc/externals/mbedtls/programs/pkey/ecdh_curve25519.c +189 -0
  408. package/external/libedhoc/externals/mbedtls/programs/pkey/ecdsa.c +217 -0
  409. package/external/libedhoc/externals/mbedtls/programs/pkey/gen_key.c +419 -0
  410. package/external/libedhoc/externals/mbedtls/programs/pkey/key_app.c +316 -0
  411. package/external/libedhoc/externals/mbedtls/programs/pkey/key_app_writer.c +435 -0
  412. package/external/libedhoc/externals/mbedtls/programs/pkey/mpi_demo.c +84 -0
  413. package/external/libedhoc/externals/mbedtls/programs/pkey/pk_decrypt.c +153 -0
  414. package/external/libedhoc/externals/mbedtls/programs/pkey/pk_encrypt.c +154 -0
  415. package/external/libedhoc/externals/mbedtls/programs/pkey/pk_sign.c +155 -0
  416. package/external/libedhoc/externals/mbedtls/programs/pkey/pk_verify.c +128 -0
  417. package/external/libedhoc/externals/mbedtls/programs/pkey/rsa_decrypt.c +172 -0
  418. package/external/libedhoc/externals/mbedtls/programs/pkey/rsa_encrypt.c +149 -0
  419. package/external/libedhoc/externals/mbedtls/programs/pkey/rsa_genkey.c +141 -0
  420. package/external/libedhoc/externals/mbedtls/programs/pkey/rsa_sign.c +155 -0
  421. package/external/libedhoc/externals/mbedtls/programs/pkey/rsa_sign_pss.c +161 -0
  422. package/external/libedhoc/externals/mbedtls/programs/pkey/rsa_verify.c +131 -0
  423. package/external/libedhoc/externals/mbedtls/programs/pkey/rsa_verify_pss.c +136 -0
  424. package/external/libedhoc/externals/mbedtls/programs/psa/aead_demo.c +281 -0
  425. package/external/libedhoc/externals/mbedtls/programs/psa/crypto_examples.c +321 -0
  426. package/external/libedhoc/externals/mbedtls/programs/psa/hmac_demo.c +159 -0
  427. package/external/libedhoc/externals/mbedtls/programs/psa/key_ladder_demo.c +691 -0
  428. package/external/libedhoc/externals/mbedtls/programs/psa/psa_constant_names.c +310 -0
  429. package/external/libedhoc/externals/mbedtls/programs/psa/psa_constant_names_generated.c +474 -0
  430. package/external/libedhoc/externals/mbedtls/programs/random/gen_entropy.c +75 -0
  431. package/external/libedhoc/externals/mbedtls/programs/random/gen_random_ctr_drbg.c +107 -0
  432. package/external/libedhoc/externals/mbedtls/programs/ssl/dtls_client.c +342 -0
  433. package/external/libedhoc/externals/mbedtls/programs/ssl/dtls_server.c +408 -0
  434. package/external/libedhoc/externals/mbedtls/programs/ssl/mini_client.c +274 -0
  435. package/external/libedhoc/externals/mbedtls/programs/ssl/ssl_client1.c +288 -0
  436. package/external/libedhoc/externals/mbedtls/programs/ssl/ssl_client2.c +3118 -0
  437. package/external/libedhoc/externals/mbedtls/programs/ssl/ssl_context_info.c +1009 -0
  438. package/external/libedhoc/externals/mbedtls/programs/ssl/ssl_fork_server.c +381 -0
  439. package/external/libedhoc/externals/mbedtls/programs/ssl/ssl_mail_client.c +804 -0
  440. package/external/libedhoc/externals/mbedtls/programs/ssl/ssl_pthread_server.c +489 -0
  441. package/external/libedhoc/externals/mbedtls/programs/ssl/ssl_server.c +362 -0
  442. package/external/libedhoc/externals/mbedtls/programs/ssl/ssl_server2.c +4268 -0
  443. package/external/libedhoc/externals/mbedtls/programs/ssl/ssl_test_common_source.c +375 -0
  444. package/external/libedhoc/externals/mbedtls/programs/ssl/ssl_test_lib.c +601 -0
  445. package/external/libedhoc/externals/mbedtls/programs/ssl/ssl_test_lib.h +306 -0
  446. package/external/libedhoc/externals/mbedtls/programs/test/benchmark.c +1284 -0
  447. package/external/libedhoc/externals/mbedtls/programs/test/cmake_package/cmake_package.c +27 -0
  448. package/external/libedhoc/externals/mbedtls/programs/test/cmake_package_install/cmake_package_install.c +28 -0
  449. package/external/libedhoc/externals/mbedtls/programs/test/cmake_subproject/cmake_subproject.c +28 -0
  450. package/external/libedhoc/externals/mbedtls/programs/test/dlopen.c +92 -0
  451. package/external/libedhoc/externals/mbedtls/programs/test/query_compile_time_config.c +66 -0
  452. package/external/libedhoc/externals/mbedtls/programs/test/query_config.c +5137 -0
  453. package/external/libedhoc/externals/mbedtls/programs/test/query_config.h +34 -0
  454. package/external/libedhoc/externals/mbedtls/programs/test/query_included_headers.c +29 -0
  455. package/external/libedhoc/externals/mbedtls/programs/test/selftest.c +583 -0
  456. package/external/libedhoc/externals/mbedtls/programs/test/udp_proxy.c +967 -0
  457. package/external/libedhoc/externals/mbedtls/programs/test/zeroize.c +72 -0
  458. package/external/libedhoc/externals/mbedtls/programs/util/pem2der.c +265 -0
  459. package/external/libedhoc/externals/mbedtls/programs/util/strerror.c +61 -0
  460. package/external/libedhoc/externals/mbedtls/programs/wince_main.c +31 -0
  461. package/external/libedhoc/externals/mbedtls/programs/x509/cert_app.c +456 -0
  462. package/external/libedhoc/externals/mbedtls/programs/x509/cert_req.c +509 -0
  463. package/external/libedhoc/externals/mbedtls/programs/x509/cert_write.c +1012 -0
  464. package/external/libedhoc/externals/mbedtls/programs/x509/crl_app.c +132 -0
  465. package/external/libedhoc/externals/mbedtls/programs/x509/load_roots.c +165 -0
  466. package/external/libedhoc/externals/mbedtls/programs/x509/req_app.c +132 -0
  467. package/external/libedhoc/externals/mbedtls/tests/configs/tls13-only.h +31 -0
  468. package/external/libedhoc/externals/mbedtls/tests/configs/user-config-for-test.h +89 -0
  469. package/external/libedhoc/externals/mbedtls/tests/configs/user-config-malloc-0-null.h +22 -0
  470. package/external/libedhoc/externals/mbedtls/tests/configs/user-config-zeroize-memset.h +17 -0
  471. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/aes_alt.h +23 -0
  472. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/aria_alt.h +16 -0
  473. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/camellia_alt.h +16 -0
  474. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/ccm_alt.h +16 -0
  475. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/chacha20_alt.h +16 -0
  476. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/chachapoly_alt.h +18 -0
  477. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/cmac_alt.h +15 -0
  478. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/des_alt.h +22 -0
  479. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/dhm_alt.h +16 -0
  480. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/ecjpake_alt.h +15 -0
  481. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/ecp_alt.h +22 -0
  482. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/gcm_alt.h +16 -0
  483. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/md5_alt.h +16 -0
  484. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/nist_kw_alt.h +15 -0
  485. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/platform_alt.h +16 -0
  486. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/poly1305_alt.h +16 -0
  487. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/ripemd160_alt.h +16 -0
  488. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/rsa_alt.h +16 -0
  489. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/sha1_alt.h +16 -0
  490. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/sha256_alt.h +16 -0
  491. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/sha512_alt.h +16 -0
  492. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/threading_alt.h +14 -0
  493. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/timing_alt.h +19 -0
  494. package/external/libedhoc/externals/mbedtls/tests/include/alt-extra/psa/crypto.h +7 -0
  495. package/external/libedhoc/externals/mbedtls/tests/include/baremetal-override/time.h +6 -0
  496. package/external/libedhoc/externals/mbedtls/tests/include/spe/crypto_spe.h +131 -0
  497. package/external/libedhoc/externals/mbedtls/tests/include/test/arguments.h +26 -0
  498. package/external/libedhoc/externals/mbedtls/tests/include/test/asn1_helpers.h +38 -0
  499. package/external/libedhoc/externals/mbedtls/tests/include/test/bignum_helpers.h +106 -0
  500. package/external/libedhoc/externals/mbedtls/tests/include/test/certs.h +234 -0
  501. package/external/libedhoc/externals/mbedtls/tests/include/test/constant_flow.h +71 -0
  502. package/external/libedhoc/externals/mbedtls/tests/include/test/drivers/aead.h +121 -0
  503. package/external/libedhoc/externals/mbedtls/tests/include/test/drivers/asymmetric_encryption.h +67 -0
  504. package/external/libedhoc/externals/mbedtls/tests/include/test/drivers/cipher.h +130 -0
  505. package/external/libedhoc/externals/mbedtls/tests/include/test/drivers/config_test_driver.h +44 -0
  506. package/external/libedhoc/externals/mbedtls/tests/include/test/drivers/crypto_config_test_driver_extension.h +430 -0
  507. package/external/libedhoc/externals/mbedtls/tests/include/test/drivers/hash.h +64 -0
  508. package/external/libedhoc/externals/mbedtls/tests/include/test/drivers/key_agreement.h +62 -0
  509. package/external/libedhoc/externals/mbedtls/tests/include/test/drivers/key_management.h +123 -0
  510. package/external/libedhoc/externals/mbedtls/tests/include/test/drivers/mac.h +125 -0
  511. package/external/libedhoc/externals/mbedtls/tests/include/test/drivers/pake.h +75 -0
  512. package/external/libedhoc/externals/mbedtls/tests/include/test/drivers/signature.h +112 -0
  513. package/external/libedhoc/externals/mbedtls/tests/include/test/drivers/test_driver.h +32 -0
  514. package/external/libedhoc/externals/mbedtls/tests/include/test/fake_external_rng_for_test.h +40 -0
  515. package/external/libedhoc/externals/mbedtls/tests/include/test/helpers.h +268 -0
  516. package/external/libedhoc/externals/mbedtls/tests/include/test/macros.h +250 -0
  517. package/external/libedhoc/externals/mbedtls/tests/include/test/psa_crypto_helpers.h +398 -0
  518. package/external/libedhoc/externals/mbedtls/tests/include/test/psa_exercise_key.h +223 -0
  519. package/external/libedhoc/externals/mbedtls/tests/include/test/psa_helpers.h +24 -0
  520. package/external/libedhoc/externals/mbedtls/tests/include/test/random.h +91 -0
  521. package/external/libedhoc/externals/mbedtls/tests/include/test/ssl_helpers.h +628 -0
  522. package/external/libedhoc/externals/mbedtls/tests/src/asn1_helpers.c +62 -0
  523. package/external/libedhoc/externals/mbedtls/tests/src/bignum_helpers.c +145 -0
  524. package/external/libedhoc/externals/mbedtls/tests/src/certs.c +480 -0
  525. package/external/libedhoc/externals/mbedtls/tests/src/drivers/hash.c +199 -0
  526. package/external/libedhoc/externals/mbedtls/tests/src/drivers/platform_builtin_keys.c +78 -0
  527. package/external/libedhoc/externals/mbedtls/tests/src/drivers/test_driver_aead.c +462 -0
  528. package/external/libedhoc/externals/mbedtls/tests/src/drivers/test_driver_asymmetric_encryption.c +151 -0
  529. package/external/libedhoc/externals/mbedtls/tests/src/drivers/test_driver_cipher.c +424 -0
  530. package/external/libedhoc/externals/mbedtls/tests/src/drivers/test_driver_key_agreement.c +147 -0
  531. package/external/libedhoc/externals/mbedtls/tests/src/drivers/test_driver_key_management.c +783 -0
  532. package/external/libedhoc/externals/mbedtls/tests/src/drivers/test_driver_mac.c +422 -0
  533. package/external/libedhoc/externals/mbedtls/tests/src/drivers/test_driver_pake.c +202 -0
  534. package/external/libedhoc/externals/mbedtls/tests/src/drivers/test_driver_signature.c +405 -0
  535. package/external/libedhoc/externals/mbedtls/tests/src/fake_external_rng_for_test.c +45 -0
  536. package/external/libedhoc/externals/mbedtls/tests/src/helpers.c +353 -0
  537. package/external/libedhoc/externals/mbedtls/tests/src/psa_crypto_helpers.c +196 -0
  538. package/external/libedhoc/externals/mbedtls/tests/src/psa_exercise_key.c +989 -0
  539. package/external/libedhoc/externals/mbedtls/tests/src/random.c +136 -0
  540. package/external/libedhoc/externals/mbedtls/tests/src/test_certs.h +1226 -0
  541. package/external/libedhoc/externals/mbedtls/tests/src/test_helpers/ssl_helpers.c +2292 -0
  542. package/external/libedhoc/externals/mbedtls/tests/src/threading_helpers.c +210 -0
  543. package/external/libedhoc/externals/zcbor/include/zcbor_common.h +422 -0
  544. package/external/libedhoc/externals/zcbor/include/zcbor_debug.h +69 -0
  545. package/external/libedhoc/externals/zcbor/include/zcbor_decode.h +358 -0
  546. package/external/libedhoc/externals/zcbor/include/zcbor_encode.h +296 -0
  547. package/external/libedhoc/externals/zcbor/include/zcbor_tags.h +94 -0
  548. package/external/libedhoc/externals/zcbor/samples/hello_world/src/main.c +41 -0
  549. package/external/libedhoc/externals/zcbor/samples/pet/include/pet_decode.h +39 -0
  550. package/external/libedhoc/externals/zcbor/samples/pet/include/pet_encode.h +39 -0
  551. package/external/libedhoc/externals/zcbor/samples/pet/include/pet_types.h +47 -0
  552. package/external/libedhoc/externals/zcbor/samples/pet/src/main.c +128 -0
  553. package/external/libedhoc/externals/zcbor/samples/pet/src/pet_decode.c +69 -0
  554. package/external/libedhoc/externals/zcbor/samples/pet/src/pet_encode.c +70 -0
  555. package/external/libedhoc/externals/zcbor/src/zcbor_common.c +257 -0
  556. package/external/libedhoc/externals/zcbor/src/zcbor_decode.c +1107 -0
  557. package/external/libedhoc/externals/zcbor/src/zcbor_encode.c +722 -0
  558. package/external/libedhoc/externals/zcbor/tests/decode/test1_suit_old_formats/src/main.c +368 -0
  559. package/external/libedhoc/externals/zcbor/tests/decode/test2_suit/src/main.c +189 -0
  560. package/external/libedhoc/externals/zcbor/tests/decode/test3_simple/src/main.c +529 -0
  561. package/external/libedhoc/externals/zcbor/tests/decode/test5_corner_cases/src/main.c +2010 -0
  562. package/external/libedhoc/externals/zcbor/tests/decode/test7_suit9_simple/src/main.c +134 -0
  563. package/external/libedhoc/externals/zcbor/tests/decode/test8_suit12/src/main.c +863 -0
  564. package/external/libedhoc/externals/zcbor/tests/decode/test9_manifest14/src/main.c +364 -0
  565. package/external/libedhoc/externals/zcbor/tests/encode/test1_suit/src/main.c +453 -0
  566. package/external/libedhoc/externals/zcbor/tests/encode/test2_simple/src/main.c +123 -0
  567. package/external/libedhoc/externals/zcbor/tests/encode/test3_corner_cases/src/main.c +1527 -0
  568. package/external/libedhoc/externals/zcbor/tests/encode/test4_senml/src/main.c +66 -0
  569. package/external/libedhoc/externals/zcbor/tests/fuzz/fuzz_manifest12.c +136 -0
  570. package/external/libedhoc/externals/zcbor/tests/fuzz/fuzz_pet.c +12 -0
  571. package/external/libedhoc/externals/zcbor/tests/fuzz/main_entry.c +60 -0
  572. package/external/libedhoc/externals/zcbor/tests/fuzz/main_entry.h +5 -0
  573. package/external/libedhoc/externals/zcbor/tests/unit/test1_unit_tests/src/main.c +1044 -0
  574. package/external/libedhoc/externals/zcbor/tests/unit/test3_float16/src/main.c +202 -0
  575. package/external/libedhoc/include/edhoc.h +393 -0
  576. package/external/libedhoc/include/edhoc_context.h +318 -0
  577. package/external/libedhoc/include/edhoc_credentials.h +217 -0
  578. package/external/libedhoc/include/edhoc_crypto.h +331 -0
  579. package/external/libedhoc/include/edhoc_ead.h +99 -0
  580. package/external/libedhoc/include/edhoc_macros.h +51 -0
  581. package/external/libedhoc/include/edhoc_values.h +181 -0
  582. package/external/libedhoc/library/edhoc.c +219 -0
  583. package/external/libedhoc/library/edhoc_exporter.c +543 -0
  584. package/external/libedhoc/library/edhoc_message_1.c +439 -0
  585. package/external/libedhoc/library/edhoc_message_2.c +2994 -0
  586. package/external/libedhoc/library/edhoc_message_3.c +2658 -0
  587. package/external/libedhoc/library/edhoc_message_4.c +826 -0
  588. package/external/libedhoc/library/edhoc_message_error.c +238 -0
  589. package/external/libedhoc/tests/include/cipher_suite_negotiation/test_edhoc_cipher_suite_negotiation.h +37 -0
  590. package/external/libedhoc/tests/include/cipher_suites/cipher_suite_0.h +134 -0
  591. package/external/libedhoc/tests/include/cipher_suites/cipher_suite_2.h +140 -0
  592. package/external/libedhoc/tests/include/cipher_suites/test_cipher_suite_0.h +48 -0
  593. package/external/libedhoc/tests/include/cipher_suites/test_cipher_suite_2.h +48 -0
  594. package/external/libedhoc/tests/include/edhoc_trace_1/authentication_credentials_1.h +60 -0
  595. package/external/libedhoc/tests/include/edhoc_trace_1/test_edhoc_handshake_1.h +208 -0
  596. package/external/libedhoc/tests/include/edhoc_trace_1/test_edhoc_handshake_ead_1.h +59 -0
  597. package/external/libedhoc/tests/include/edhoc_trace_1/test_vector_1.h +738 -0
  598. package/external/libedhoc/tests/include/edhoc_trace_2/authentication_credentials_2.h +60 -0
  599. package/external/libedhoc/tests/include/edhoc_trace_2/test_edhoc_handshake_2.h +199 -0
  600. package/external/libedhoc/tests/include/edhoc_trace_2/test_vector_2.h +525 -0
  601. package/external/libedhoc/tests/include/error_message/test_edhoc_error_message.h +48 -0
  602. package/external/libedhoc/tests/include/x509_chain_cs_0/authentication_credentials_x5chain_cs_0.h +92 -0
  603. package/external/libedhoc/tests/include/x509_chain_cs_0/test_edhoc_handshake_x5chain_cs_0.h +96 -0
  604. package/external/libedhoc/tests/include/x509_chain_cs_0/test_vector_x5chain_cs_0.h +140 -0
  605. package/external/libedhoc/tests/include/x509_chain_cs_2/authentication_credentials_x5chain_cs_2.h +58 -0
  606. package/external/libedhoc/tests/include/x509_chain_cs_2/test_edhoc_handshake_x5chain_cs_2.h +56 -0
  607. package/external/libedhoc/tests/include/x509_chain_cs_2/test_edhoc_handshake_x5chain_cs_2_ead.h +57 -0
  608. package/external/libedhoc/tests/include/x509_chain_cs_2/test_vector_x5chain_cs_2.h +169 -0
  609. package/external/libedhoc/tests/include/x509_chain_cs_2_static_dh/authentication_credentials_x5chain_cs_2_static_dh.h +59 -0
  610. package/external/libedhoc/tests/include/x509_chain_cs_2_static_dh/test_edhoc_handshake_x5chain_cs_2_static_dh_ead.h +57 -0
  611. package/external/libedhoc/tests/include/x509_chain_cs_2_static_dh/test_vector_x5chain_cs_2_static_dh.h +163 -0
  612. package/external/libedhoc/tests/include/x509_hash_cs_2/authentication_credentials_x5t_cs_2.h +60 -0
  613. package/external/libedhoc/tests/include/x509_hash_cs_2/test_edhoc_handshake_x5t_cs_2_ead.h +57 -0
  614. package/external/libedhoc/tests/include/x509_hash_cs_2/test_vector_x5t_cs_2.h +181 -0
  615. package/external/libedhoc/tests/src/cipher_suite_negotiation/test_edhoc_cipher_suite_negotiation.c +544 -0
  616. package/external/libedhoc/tests/src/cipher_suites/cipher_suite_0.c +447 -0
  617. package/external/libedhoc/tests/src/cipher_suites/cipher_suite_2.c +600 -0
  618. package/external/libedhoc/tests/src/cipher_suites/test_cipher_suite_0.c +475 -0
  619. package/external/libedhoc/tests/src/cipher_suites/test_cipher_suite_2.c +473 -0
  620. package/external/libedhoc/tests/src/edhoc_trace_1/authentication_credentials_1.c +252 -0
  621. package/external/libedhoc/tests/src/edhoc_trace_1/test_edhoc_handshake_1.c +1829 -0
  622. package/external/libedhoc/tests/src/edhoc_trace_1/test_edhoc_handshake_ead_1.c +1247 -0
  623. package/external/libedhoc/tests/src/edhoc_trace_2/authentication_credentials_2.c +170 -0
  624. package/external/libedhoc/tests/src/edhoc_trace_2/test_edhoc_handshake_2.c +1783 -0
  625. package/external/libedhoc/tests/src/error_message/test_edhoc_error_message.c +226 -0
  626. package/external/libedhoc/tests/src/tests.c +228 -0
  627. package/external/libedhoc/tests/src/x509_chain_cs_0/authentication_credentials_x5chain_cs_0.c +332 -0
  628. package/external/libedhoc/tests/src/x509_chain_cs_0/test_edhoc_handshake_x5chain_cs_0.c +936 -0
  629. package/external/libedhoc/tests/src/x509_chain_cs_2/authentication_credentials_x5chain_cs_2.c +166 -0
  630. package/external/libedhoc/tests/src/x509_chain_cs_2/test_edhoc_handshake_x5chain_cs_2.c +587 -0
  631. package/external/libedhoc/tests/src/x509_chain_cs_2/test_edhoc_handshake_x5chain_cs_2_ead.c +917 -0
  632. package/external/libedhoc/tests/src/x509_chain_cs_2_static_dh/authentication_credentials_x5chain_cs_2_static_dh.c +186 -0
  633. package/external/libedhoc/tests/src/x509_chain_cs_2_static_dh/test_edhoc_handshake_x5chain_cs_2_static_dh_ead.c +743 -0
  634. package/external/libedhoc/tests/src/x509_hash_cs_2/authentication_credentials_x5t_cs_2.c +261 -0
  635. package/external/libedhoc/tests/src/x509_hash_cs_2/test_edhoc_handshake_x5t_cs_2_ead.c +854 -0
  636. package/include/EdhocComposeAsyncWorker.h +61 -0
  637. package/include/EdhocCredentialManager.h +100 -0
  638. package/include/EdhocCryptoManager.h +504 -0
  639. package/include/EdhocEadManager.h +151 -0
  640. package/include/EdhocExportAsyncWorker.h +71 -0
  641. package/include/EdhocProcessAsyncWorker.h +76 -0
  642. package/include/LibEDHOC.h +304 -0
  643. package/include/Suites.h +27 -0
  644. package/include/UserContext.h +79 -0
  645. package/include/Utils.h +110 -0
  646. package/package.json +5 -5
  647. package/prebuilds/win32-ia32/edhoc.node +0 -0
  648. package/prebuilds/win32-x64/edhoc.node +0 -0
  649. package/src/EdhocComposeAsyncWorker.cpp +88 -0
  650. package/src/EdhocCredentialManager.cpp +360 -0
  651. package/src/EdhocCryptoManager.cpp +967 -0
  652. package/src/EdhocEadManager.cpp +156 -0
  653. package/src/EdhocExportAsyncWorker.cpp +82 -0
  654. package/src/EdhocProcessAsyncWorker.cpp +74 -0
  655. package/src/LibEDHOC.cpp +369 -0
  656. package/src/Suites.cpp +153 -0
  657. package/src/Utils.cpp +115 -0
  658. package/dist/bindings.d.ts +0 -5
  659. package/dist/bindings.d.ts.map +0 -1
  660. package/dist/bindings.js +0 -10
  661. package/dist/credentials.d.ts +0 -16
  662. package/dist/credentials.d.ts.map +0 -1
  663. package/dist/credentials.js +0 -84
  664. package/dist/crypto.d.ts +0 -22
  665. package/dist/crypto.d.ts.map +0 -1
  666. package/dist/crypto.js +0 -177
  667. package/dist/edhoc.d.ts +0 -346
  668. package/dist/edhoc.d.ts.map +0 -1
  669. package/dist/edhoc.js +0 -76
  670. package/dist/index.d.ts +0 -4
  671. package/dist/index.d.ts.map +0 -1
  672. package/dist/index.js +0 -19
@@ -0,0 +1,821 @@
1
+ /*
2
+ * The LM-OTS one-time public-key signature scheme
3
+ *
4
+ * Copyright The Mbed TLS Contributors
5
+ * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
6
+ */
7
+
8
+ /*
9
+ * The following sources were referenced in the design of this implementation
10
+ * of the LM-OTS algorithm:
11
+ *
12
+ * [1] IETF RFC8554
13
+ * D. McGrew, M. Curcio, S.Fluhrer
14
+ * https://datatracker.ietf.org/doc/html/rfc8554
15
+ *
16
+ * [2] NIST Special Publication 800-208
17
+ * David A. Cooper et. al.
18
+ * https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-208.pdf
19
+ */
20
+
21
+ #include "common.h"
22
+
23
+ #if defined(MBEDTLS_LMS_C)
24
+
25
+ #include <string.h>
26
+
27
+ #include "lmots.h"
28
+
29
+ #include "mbedtls/lms.h"
30
+ #include "mbedtls/platform_util.h"
31
+ #include "mbedtls/error.h"
32
+ #include "psa_util_internal.h"
33
+
34
+ #include "psa/crypto.h"
35
+
36
+ /* Define a local translating function to save code size by not using too many
37
+ * arguments in each translating place. */
38
+ static int local_err_translation(psa_status_t status)
39
+ {
40
+ return psa_status_to_mbedtls(status, psa_to_lms_errors,
41
+ ARRAY_LENGTH(psa_to_lms_errors),
42
+ psa_generic_status_to_mbedtls);
43
+ }
44
+ #define PSA_TO_MBEDTLS_ERR(status) local_err_translation(status)
45
+
46
+ #define PUBLIC_KEY_TYPE_OFFSET (0)
47
+ #define PUBLIC_KEY_I_KEY_ID_OFFSET (PUBLIC_KEY_TYPE_OFFSET + \
48
+ MBEDTLS_LMOTS_TYPE_LEN)
49
+ #define PUBLIC_KEY_Q_LEAF_ID_OFFSET (PUBLIC_KEY_I_KEY_ID_OFFSET + \
50
+ MBEDTLS_LMOTS_I_KEY_ID_LEN)
51
+ #define PUBLIC_KEY_KEY_HASH_OFFSET (PUBLIC_KEY_Q_LEAF_ID_OFFSET + \
52
+ MBEDTLS_LMOTS_Q_LEAF_ID_LEN)
53
+
54
+ /* We only support parameter sets that use 8-bit digits, as it does not require
55
+ * translation logic between digits and bytes */
56
+ #define W_WINTERNITZ_PARAMETER (8u)
57
+ #define CHECKSUM_LEN (2)
58
+ #define I_DIGIT_IDX_LEN (2)
59
+ #define J_HASH_IDX_LEN (1)
60
+ #define D_CONST_LEN (2)
61
+
62
+ #define DIGIT_MAX_VALUE ((1u << W_WINTERNITZ_PARAMETER) - 1u)
63
+
64
+ #define D_CONST_LEN (2)
65
+ static const unsigned char D_PUBLIC_CONSTANT_BYTES[D_CONST_LEN] = { 0x80, 0x80 };
66
+ static const unsigned char D_MESSAGE_CONSTANT_BYTES[D_CONST_LEN] = { 0x81, 0x81 };
67
+
68
+ #if defined(MBEDTLS_TEST_HOOKS)
69
+ int (*mbedtls_lmots_sign_private_key_invalidated_hook)(unsigned char *) = NULL;
70
+ #endif /* defined(MBEDTLS_TEST_HOOKS) */
71
+
72
+ void mbedtls_lms_unsigned_int_to_network_bytes(unsigned int val, size_t len,
73
+ unsigned char *bytes)
74
+ {
75
+ size_t idx;
76
+
77
+ for (idx = 0; idx < len; idx++) {
78
+ bytes[idx] = (val >> ((len - 1 - idx) * 8)) & 0xFF;
79
+ }
80
+ }
81
+
82
+ unsigned int mbedtls_lms_network_bytes_to_unsigned_int(size_t len,
83
+ const unsigned char *bytes)
84
+ {
85
+ size_t idx;
86
+ unsigned int val = 0;
87
+
88
+ for (idx = 0; idx < len; idx++) {
89
+ val |= ((unsigned int) bytes[idx]) << (8 * (len - 1 - idx));
90
+ }
91
+
92
+ return val;
93
+ }
94
+
95
+ /* Calculate the checksum digits that are appended to the end of the LMOTS digit
96
+ * string. See NIST SP800-208 section 3.1 or RFC8554 Algorithm 2 for details of
97
+ * the checksum algorithm.
98
+ *
99
+ * params The LMOTS parameter set, I and q values which
100
+ * describe the key being used.
101
+ *
102
+ * digest The digit string to create the digest from. As
103
+ * this does not contain a checksum, it is the same
104
+ * size as a hash output.
105
+ */
106
+ static unsigned short lmots_checksum_calculate(const mbedtls_lmots_parameters_t *params,
107
+ const unsigned char *digest)
108
+ {
109
+ size_t idx;
110
+ unsigned sum = 0;
111
+
112
+ for (idx = 0; idx < MBEDTLS_LMOTS_N_HASH_LEN(params->type); idx++) {
113
+ sum += DIGIT_MAX_VALUE - digest[idx];
114
+ }
115
+
116
+ return sum;
117
+ }
118
+
119
+ /* Create the string of digest digits (in the base determined by the Winternitz
120
+ * parameter with the checksum appended to the end (Q || cksm(Q)). See NIST
121
+ * SP800-208 section 3.1 or RFC8554 Algorithm 3 step 5 (also used in Algorithm
122
+ * 4b step 3) for details.
123
+ *
124
+ * params The LMOTS parameter set, I and q values which
125
+ * describe the key being used.
126
+ *
127
+ * msg The message that will be hashed to create the
128
+ * digest.
129
+ *
130
+ * msg_size The size of the message.
131
+ *
132
+ * C_random_value The random value that will be combined with the
133
+ * message digest. This is always the same size as a
134
+ * hash output for whichever hash algorithm is
135
+ * determined by the parameter set.
136
+ *
137
+ * output An output containing the digit string (+
138
+ * checksum) of length P digits (in the case of
139
+ * MBEDTLS_LMOTS_SHA256_N32_W8, this means it is of
140
+ * size P bytes).
141
+ */
142
+ static int create_digit_array_with_checksum(const mbedtls_lmots_parameters_t *params,
143
+ const unsigned char *msg,
144
+ size_t msg_len,
145
+ const unsigned char *C_random_value,
146
+ unsigned char *out)
147
+ {
148
+ psa_hash_operation_t op = PSA_HASH_OPERATION_INIT;
149
+ psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED;
150
+ size_t output_hash_len;
151
+ unsigned short checksum;
152
+
153
+ status = psa_hash_setup(&op, PSA_ALG_SHA_256);
154
+ if (status != PSA_SUCCESS) {
155
+ goto exit;
156
+ }
157
+
158
+ status = psa_hash_update(&op, params->I_key_identifier,
159
+ MBEDTLS_LMOTS_I_KEY_ID_LEN);
160
+ if (status != PSA_SUCCESS) {
161
+ goto exit;
162
+ }
163
+
164
+ status = psa_hash_update(&op, params->q_leaf_identifier,
165
+ MBEDTLS_LMOTS_Q_LEAF_ID_LEN);
166
+ if (status != PSA_SUCCESS) {
167
+ goto exit;
168
+ }
169
+
170
+ status = psa_hash_update(&op, D_MESSAGE_CONSTANT_BYTES, D_CONST_LEN);
171
+ if (status != PSA_SUCCESS) {
172
+ goto exit;
173
+ }
174
+
175
+ status = psa_hash_update(&op, C_random_value,
176
+ MBEDTLS_LMOTS_C_RANDOM_VALUE_LEN(params->type));
177
+ if (status != PSA_SUCCESS) {
178
+ goto exit;
179
+ }
180
+
181
+ status = psa_hash_update(&op, msg, msg_len);
182
+ if (status != PSA_SUCCESS) {
183
+ goto exit;
184
+ }
185
+
186
+ status = psa_hash_finish(&op, out,
187
+ MBEDTLS_LMOTS_N_HASH_LEN(params->type),
188
+ &output_hash_len);
189
+ if (status != PSA_SUCCESS) {
190
+ goto exit;
191
+ }
192
+
193
+ checksum = lmots_checksum_calculate(params, out);
194
+ mbedtls_lms_unsigned_int_to_network_bytes(checksum, CHECKSUM_LEN,
195
+ out + MBEDTLS_LMOTS_N_HASH_LEN(params->type));
196
+
197
+ exit:
198
+ psa_hash_abort(&op);
199
+
200
+ return PSA_TO_MBEDTLS_ERR(status);
201
+ }
202
+
203
+ /* Hash each element of the string of digits (+ checksum), producing a hash
204
+ * output for each element. This is used in several places (by varying the
205
+ * hash_idx_min/max_values) in order to calculate a public key from a private
206
+ * key (RFC8554 Algorithm 1 step 4), in order to sign a message (RFC8554
207
+ * Algorithm 3 step 5), and to calculate a public key candidate from a
208
+ * signature and message (RFC8554 Algorithm 4b step 3).
209
+ *
210
+ * params The LMOTS parameter set, I and q values which
211
+ * describe the key being used.
212
+ *
213
+ * x_digit_array The array of digits (of size P, 34 in the case of
214
+ * MBEDTLS_LMOTS_SHA256_N32_W8).
215
+ *
216
+ * hash_idx_min_values An array of the starting values of the j iterator
217
+ * for each of the members of the digit array. If
218
+ * this value in NULL, then all iterators will start
219
+ * at 0.
220
+ *
221
+ * hash_idx_max_values An array of the upper bound values of the j
222
+ * iterator for each of the members of the digit
223
+ * array. If this value in NULL, then iterator is
224
+ * bounded to be less than 2^w - 1 (255 in the case
225
+ * of MBEDTLS_LMOTS_SHA256_N32_W8)
226
+ *
227
+ * output An array containing a hash output for each member
228
+ * of the digit string P. In the case of
229
+ * MBEDTLS_LMOTS_SHA256_N32_W8, this is of size 32 *
230
+ * 34.
231
+ */
232
+ static int hash_digit_array(const mbedtls_lmots_parameters_t *params,
233
+ const unsigned char *x_digit_array,
234
+ const unsigned char *hash_idx_min_values,
235
+ const unsigned char *hash_idx_max_values,
236
+ unsigned char *output)
237
+ {
238
+ unsigned int i_digit_idx;
239
+ unsigned char i_digit_idx_bytes[I_DIGIT_IDX_LEN];
240
+ unsigned int j_hash_idx;
241
+ unsigned char j_hash_idx_bytes[J_HASH_IDX_LEN];
242
+ unsigned int j_hash_idx_min;
243
+ unsigned int j_hash_idx_max;
244
+ psa_hash_operation_t op = PSA_HASH_OPERATION_INIT;
245
+ psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED;
246
+ size_t output_hash_len;
247
+ unsigned char tmp_hash[MBEDTLS_LMOTS_N_HASH_LEN_MAX];
248
+
249
+ for (i_digit_idx = 0;
250
+ i_digit_idx < MBEDTLS_LMOTS_P_SIG_DIGIT_COUNT(params->type);
251
+ i_digit_idx++) {
252
+
253
+ memcpy(tmp_hash,
254
+ &x_digit_array[i_digit_idx * MBEDTLS_LMOTS_N_HASH_LEN(params->type)],
255
+ MBEDTLS_LMOTS_N_HASH_LEN(params->type));
256
+
257
+ j_hash_idx_min = hash_idx_min_values != NULL ?
258
+ hash_idx_min_values[i_digit_idx] : 0;
259
+ j_hash_idx_max = hash_idx_max_values != NULL ?
260
+ hash_idx_max_values[i_digit_idx] : DIGIT_MAX_VALUE;
261
+
262
+ for (j_hash_idx = j_hash_idx_min;
263
+ j_hash_idx < j_hash_idx_max;
264
+ j_hash_idx++) {
265
+ status = psa_hash_setup(&op, PSA_ALG_SHA_256);
266
+ if (status != PSA_SUCCESS) {
267
+ goto exit;
268
+ }
269
+
270
+ status = psa_hash_update(&op,
271
+ params->I_key_identifier,
272
+ MBEDTLS_LMOTS_I_KEY_ID_LEN);
273
+ if (status != PSA_SUCCESS) {
274
+ goto exit;
275
+ }
276
+
277
+ status = psa_hash_update(&op,
278
+ params->q_leaf_identifier,
279
+ MBEDTLS_LMOTS_Q_LEAF_ID_LEN);
280
+ if (status != PSA_SUCCESS) {
281
+ goto exit;
282
+ }
283
+
284
+ mbedtls_lms_unsigned_int_to_network_bytes(i_digit_idx,
285
+ I_DIGIT_IDX_LEN,
286
+ i_digit_idx_bytes);
287
+ status = psa_hash_update(&op, i_digit_idx_bytes, I_DIGIT_IDX_LEN);
288
+ if (status != PSA_SUCCESS) {
289
+ goto exit;
290
+ }
291
+
292
+ mbedtls_lms_unsigned_int_to_network_bytes(j_hash_idx,
293
+ J_HASH_IDX_LEN,
294
+ j_hash_idx_bytes);
295
+ status = psa_hash_update(&op, j_hash_idx_bytes, J_HASH_IDX_LEN);
296
+ if (status != PSA_SUCCESS) {
297
+ goto exit;
298
+ }
299
+
300
+ status = psa_hash_update(&op, tmp_hash,
301
+ MBEDTLS_LMOTS_N_HASH_LEN(params->type));
302
+ if (status != PSA_SUCCESS) {
303
+ goto exit;
304
+ }
305
+
306
+ status = psa_hash_finish(&op, tmp_hash, sizeof(tmp_hash),
307
+ &output_hash_len);
308
+ if (status != PSA_SUCCESS) {
309
+ goto exit;
310
+ }
311
+
312
+ psa_hash_abort(&op);
313
+ }
314
+
315
+ memcpy(&output[i_digit_idx * MBEDTLS_LMOTS_N_HASH_LEN(params->type)],
316
+ tmp_hash, MBEDTLS_LMOTS_N_HASH_LEN(params->type));
317
+ }
318
+
319
+ exit:
320
+ psa_hash_abort(&op);
321
+ mbedtls_platform_zeroize(tmp_hash, sizeof(tmp_hash));
322
+
323
+ return PSA_TO_MBEDTLS_ERR(status);
324
+ }
325
+
326
+ /* Combine the hashes of the digit array into a public key. This is used in
327
+ * in order to calculate a public key from a private key (RFC8554 Algorithm 1
328
+ * step 4), and to calculate a public key candidate from a signature and message
329
+ * (RFC8554 Algorithm 4b step 3).
330
+ *
331
+ * params The LMOTS parameter set, I and q values which describe
332
+ * the key being used.
333
+ * y_hashed_digits The array of hashes, one hash for each digit of the
334
+ * symbol array (which is of size P, 34 in the case of
335
+ * MBEDTLS_LMOTS_SHA256_N32_W8)
336
+ *
337
+ * pub_key The output public key (or candidate public key in
338
+ * case this is being run as part of signature
339
+ * verification), in the form of a hash output.
340
+ */
341
+ static int public_key_from_hashed_digit_array(const mbedtls_lmots_parameters_t *params,
342
+ const unsigned char *y_hashed_digits,
343
+ unsigned char *pub_key)
344
+ {
345
+ psa_hash_operation_t op = PSA_HASH_OPERATION_INIT;
346
+ psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED;
347
+ size_t output_hash_len;
348
+
349
+ status = psa_hash_setup(&op, PSA_ALG_SHA_256);
350
+ if (status != PSA_SUCCESS) {
351
+ goto exit;
352
+ }
353
+
354
+ status = psa_hash_update(&op,
355
+ params->I_key_identifier,
356
+ MBEDTLS_LMOTS_I_KEY_ID_LEN);
357
+ if (status != PSA_SUCCESS) {
358
+ goto exit;
359
+ }
360
+
361
+ status = psa_hash_update(&op, params->q_leaf_identifier,
362
+ MBEDTLS_LMOTS_Q_LEAF_ID_LEN);
363
+ if (status != PSA_SUCCESS) {
364
+ goto exit;
365
+ }
366
+
367
+ status = psa_hash_update(&op, D_PUBLIC_CONSTANT_BYTES, D_CONST_LEN);
368
+ if (status != PSA_SUCCESS) {
369
+ goto exit;
370
+ }
371
+
372
+ status = psa_hash_update(&op, y_hashed_digits,
373
+ MBEDTLS_LMOTS_P_SIG_DIGIT_COUNT(params->type) *
374
+ MBEDTLS_LMOTS_N_HASH_LEN(params->type));
375
+ if (status != PSA_SUCCESS) {
376
+ goto exit;
377
+ }
378
+
379
+ status = psa_hash_finish(&op, pub_key,
380
+ MBEDTLS_LMOTS_N_HASH_LEN(params->type),
381
+ &output_hash_len);
382
+ if (status != PSA_SUCCESS) {
383
+
384
+ exit:
385
+ psa_hash_abort(&op);
386
+ }
387
+
388
+ return PSA_TO_MBEDTLS_ERR(status);
389
+ }
390
+
391
+ #if !defined(MBEDTLS_DEPRECATED_REMOVED)
392
+ int mbedtls_lms_error_from_psa(psa_status_t status)
393
+ {
394
+ switch (status) {
395
+ case PSA_SUCCESS:
396
+ return 0;
397
+ case PSA_ERROR_HARDWARE_FAILURE:
398
+ return MBEDTLS_ERR_PLATFORM_HW_ACCEL_FAILED;
399
+ case PSA_ERROR_NOT_SUPPORTED:
400
+ return MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED;
401
+ case PSA_ERROR_BUFFER_TOO_SMALL:
402
+ return MBEDTLS_ERR_LMS_BUFFER_TOO_SMALL;
403
+ case PSA_ERROR_INVALID_ARGUMENT:
404
+ return MBEDTLS_ERR_LMS_BAD_INPUT_DATA;
405
+ default:
406
+ return MBEDTLS_ERR_ERROR_GENERIC_ERROR;
407
+ }
408
+ }
409
+ #endif /* !MBEDTLS_DEPRECATED_REMOVED */
410
+
411
+ void mbedtls_lmots_public_init(mbedtls_lmots_public_t *ctx)
412
+ {
413
+ memset(ctx, 0, sizeof(*ctx));
414
+ }
415
+
416
+ void mbedtls_lmots_public_free(mbedtls_lmots_public_t *ctx)
417
+ {
418
+ mbedtls_platform_zeroize(ctx, sizeof(*ctx));
419
+ }
420
+
421
+ int mbedtls_lmots_import_public_key(mbedtls_lmots_public_t *ctx,
422
+ const unsigned char *key, size_t key_len)
423
+ {
424
+ if (key_len < MBEDTLS_LMOTS_SIG_TYPE_OFFSET + MBEDTLS_LMOTS_TYPE_LEN) {
425
+ return MBEDTLS_ERR_LMS_BAD_INPUT_DATA;
426
+ }
427
+
428
+ ctx->params.type =
429
+ (mbedtls_lmots_algorithm_type_t) mbedtls_lms_network_bytes_to_unsigned_int(
430
+ MBEDTLS_LMOTS_TYPE_LEN,
431
+ key +
432
+ MBEDTLS_LMOTS_SIG_TYPE_OFFSET);
433
+
434
+ if (key_len != MBEDTLS_LMOTS_PUBLIC_KEY_LEN(ctx->params.type)) {
435
+ return MBEDTLS_ERR_LMS_BAD_INPUT_DATA;
436
+ }
437
+
438
+ memcpy(ctx->params.I_key_identifier,
439
+ key + PUBLIC_KEY_I_KEY_ID_OFFSET,
440
+ MBEDTLS_LMOTS_I_KEY_ID_LEN);
441
+
442
+ memcpy(ctx->params.q_leaf_identifier,
443
+ key + PUBLIC_KEY_Q_LEAF_ID_OFFSET,
444
+ MBEDTLS_LMOTS_Q_LEAF_ID_LEN);
445
+
446
+ memcpy(ctx->public_key,
447
+ key + PUBLIC_KEY_KEY_HASH_OFFSET,
448
+ MBEDTLS_LMOTS_N_HASH_LEN(ctx->params.type));
449
+
450
+ ctx->have_public_key = 1;
451
+
452
+ return 0;
453
+ }
454
+
455
+ int mbedtls_lmots_export_public_key(const mbedtls_lmots_public_t *ctx,
456
+ unsigned char *key, size_t key_size,
457
+ size_t *key_len)
458
+ {
459
+ if (key_size < MBEDTLS_LMOTS_PUBLIC_KEY_LEN(ctx->params.type)) {
460
+ return MBEDTLS_ERR_LMS_BUFFER_TOO_SMALL;
461
+ }
462
+
463
+ if (!ctx->have_public_key) {
464
+ return MBEDTLS_ERR_LMS_BAD_INPUT_DATA;
465
+ }
466
+
467
+ mbedtls_lms_unsigned_int_to_network_bytes(ctx->params.type,
468
+ MBEDTLS_LMOTS_TYPE_LEN,
469
+ key + MBEDTLS_LMOTS_SIG_TYPE_OFFSET);
470
+
471
+ memcpy(key + PUBLIC_KEY_I_KEY_ID_OFFSET,
472
+ ctx->params.I_key_identifier,
473
+ MBEDTLS_LMOTS_I_KEY_ID_LEN);
474
+
475
+ memcpy(key + PUBLIC_KEY_Q_LEAF_ID_OFFSET,
476
+ ctx->params.q_leaf_identifier,
477
+ MBEDTLS_LMOTS_Q_LEAF_ID_LEN);
478
+
479
+ memcpy(key + PUBLIC_KEY_KEY_HASH_OFFSET, ctx->public_key,
480
+ MBEDTLS_LMOTS_N_HASH_LEN(ctx->params.type));
481
+
482
+ if (key_len != NULL) {
483
+ *key_len = MBEDTLS_LMOTS_PUBLIC_KEY_LEN(ctx->params.type);
484
+ }
485
+
486
+ return 0;
487
+ }
488
+
489
+ int mbedtls_lmots_calculate_public_key_candidate(const mbedtls_lmots_parameters_t *params,
490
+ const unsigned char *msg,
491
+ size_t msg_size,
492
+ const unsigned char *sig,
493
+ size_t sig_size,
494
+ unsigned char *out,
495
+ size_t out_size,
496
+ size_t *out_len)
497
+ {
498
+ unsigned char tmp_digit_array[MBEDTLS_LMOTS_P_SIG_DIGIT_COUNT_MAX];
499
+ unsigned char y_hashed_digits[MBEDTLS_LMOTS_P_SIG_DIGIT_COUNT_MAX][MBEDTLS_LMOTS_N_HASH_LEN_MAX];
500
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
501
+
502
+ if (msg == NULL && msg_size != 0) {
503
+ return MBEDTLS_ERR_LMS_BAD_INPUT_DATA;
504
+ }
505
+
506
+ if (sig_size != MBEDTLS_LMOTS_SIG_LEN(params->type) ||
507
+ out_size < MBEDTLS_LMOTS_N_HASH_LEN(params->type)) {
508
+ return MBEDTLS_ERR_LMS_BAD_INPUT_DATA;
509
+ }
510
+
511
+ ret = create_digit_array_with_checksum(params, msg, msg_size,
512
+ sig + MBEDTLS_LMOTS_SIG_C_RANDOM_OFFSET,
513
+ tmp_digit_array);
514
+ if (ret) {
515
+ return ret;
516
+ }
517
+
518
+ ret = hash_digit_array(params,
519
+ sig + MBEDTLS_LMOTS_SIG_SIGNATURE_OFFSET(params->type),
520
+ tmp_digit_array, NULL, (unsigned char *) y_hashed_digits);
521
+ if (ret) {
522
+ return ret;
523
+ }
524
+
525
+ ret = public_key_from_hashed_digit_array(params,
526
+ (unsigned char *) y_hashed_digits,
527
+ out);
528
+ if (ret) {
529
+ return ret;
530
+ }
531
+
532
+ if (out_len != NULL) {
533
+ *out_len = MBEDTLS_LMOTS_N_HASH_LEN(params->type);
534
+ }
535
+
536
+ return 0;
537
+ }
538
+
539
+ int mbedtls_lmots_verify(const mbedtls_lmots_public_t *ctx,
540
+ const unsigned char *msg, size_t msg_size,
541
+ const unsigned char *sig, size_t sig_size)
542
+ {
543
+ unsigned char Kc_public_key_candidate[MBEDTLS_LMOTS_N_HASH_LEN_MAX];
544
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
545
+
546
+ if (msg == NULL && msg_size != 0) {
547
+ return MBEDTLS_ERR_LMS_BAD_INPUT_DATA;
548
+ }
549
+
550
+ if (!ctx->have_public_key) {
551
+ return MBEDTLS_ERR_LMS_BAD_INPUT_DATA;
552
+ }
553
+
554
+ if (ctx->params.type != MBEDTLS_LMOTS_SHA256_N32_W8) {
555
+ return MBEDTLS_ERR_LMS_BAD_INPUT_DATA;
556
+ }
557
+
558
+ if (sig_size < MBEDTLS_LMOTS_SIG_TYPE_OFFSET + MBEDTLS_LMOTS_TYPE_LEN) {
559
+ return MBEDTLS_ERR_LMS_VERIFY_FAILED;
560
+ }
561
+
562
+ if (mbedtls_lms_network_bytes_to_unsigned_int(MBEDTLS_LMOTS_TYPE_LEN,
563
+ sig + MBEDTLS_LMOTS_SIG_TYPE_OFFSET) !=
564
+ MBEDTLS_LMOTS_SHA256_N32_W8) {
565
+ return MBEDTLS_ERR_LMS_VERIFY_FAILED;
566
+ }
567
+
568
+ ret = mbedtls_lmots_calculate_public_key_candidate(&ctx->params,
569
+ msg, msg_size, sig, sig_size,
570
+ Kc_public_key_candidate,
571
+ MBEDTLS_LMOTS_N_HASH_LEN(ctx->params.type),
572
+ NULL);
573
+ if (ret) {
574
+ return MBEDTLS_ERR_LMS_VERIFY_FAILED;
575
+ }
576
+
577
+ if (memcmp(&Kc_public_key_candidate, ctx->public_key,
578
+ sizeof(ctx->public_key))) {
579
+ return MBEDTLS_ERR_LMS_VERIFY_FAILED;
580
+ }
581
+
582
+ return 0;
583
+ }
584
+
585
+ #if defined(MBEDTLS_LMS_PRIVATE)
586
+
587
+ void mbedtls_lmots_private_init(mbedtls_lmots_private_t *ctx)
588
+ {
589
+ memset(ctx, 0, sizeof(*ctx));
590
+ }
591
+
592
+ void mbedtls_lmots_private_free(mbedtls_lmots_private_t *ctx)
593
+ {
594
+ mbedtls_platform_zeroize(ctx,
595
+ sizeof(*ctx));
596
+ }
597
+
598
+ int mbedtls_lmots_generate_private_key(mbedtls_lmots_private_t *ctx,
599
+ mbedtls_lmots_algorithm_type_t type,
600
+ const unsigned char I_key_identifier[MBEDTLS_LMOTS_I_KEY_ID_LEN],
601
+ uint32_t q_leaf_identifier,
602
+ const unsigned char *seed,
603
+ size_t seed_size)
604
+ {
605
+ psa_hash_operation_t op = PSA_HASH_OPERATION_INIT;
606
+ psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED;
607
+ size_t output_hash_len;
608
+ unsigned int i_digit_idx;
609
+ unsigned char i_digit_idx_bytes[2];
610
+ unsigned char const_bytes[1];
611
+
612
+ if (ctx->have_private_key) {
613
+ return MBEDTLS_ERR_LMS_BAD_INPUT_DATA;
614
+ }
615
+
616
+ if (type != MBEDTLS_LMOTS_SHA256_N32_W8) {
617
+ return MBEDTLS_ERR_LMS_BAD_INPUT_DATA;
618
+ }
619
+
620
+ ctx->params.type = type;
621
+
622
+ memcpy(ctx->params.I_key_identifier,
623
+ I_key_identifier,
624
+ sizeof(ctx->params.I_key_identifier));
625
+
626
+ mbedtls_lms_unsigned_int_to_network_bytes(q_leaf_identifier,
627
+ MBEDTLS_LMOTS_Q_LEAF_ID_LEN,
628
+ ctx->params.q_leaf_identifier);
629
+
630
+ mbedtls_lms_unsigned_int_to_network_bytes(0xFF, sizeof(const_bytes),
631
+ const_bytes);
632
+
633
+ for (i_digit_idx = 0;
634
+ i_digit_idx < MBEDTLS_LMOTS_P_SIG_DIGIT_COUNT(ctx->params.type);
635
+ i_digit_idx++) {
636
+ status = psa_hash_setup(&op, PSA_ALG_SHA_256);
637
+ if (status != PSA_SUCCESS) {
638
+ goto exit;
639
+ }
640
+
641
+ status = psa_hash_update(&op,
642
+ ctx->params.I_key_identifier,
643
+ sizeof(ctx->params.I_key_identifier));
644
+ if (status != PSA_SUCCESS) {
645
+ goto exit;
646
+ }
647
+
648
+ status = psa_hash_update(&op,
649
+ ctx->params.q_leaf_identifier,
650
+ MBEDTLS_LMOTS_Q_LEAF_ID_LEN);
651
+ if (status != PSA_SUCCESS) {
652
+ goto exit;
653
+ }
654
+
655
+ mbedtls_lms_unsigned_int_to_network_bytes(i_digit_idx, I_DIGIT_IDX_LEN,
656
+ i_digit_idx_bytes);
657
+ status = psa_hash_update(&op, i_digit_idx_bytes, I_DIGIT_IDX_LEN);
658
+ if (status != PSA_SUCCESS) {
659
+ goto exit;
660
+ }
661
+
662
+ status = psa_hash_update(&op, const_bytes, sizeof(const_bytes));
663
+ if (status != PSA_SUCCESS) {
664
+ goto exit;
665
+ }
666
+
667
+ status = psa_hash_update(&op, seed, seed_size);
668
+ if (status != PSA_SUCCESS) {
669
+ goto exit;
670
+ }
671
+
672
+ status = psa_hash_finish(&op,
673
+ ctx->private_key[i_digit_idx],
674
+ MBEDTLS_LMOTS_N_HASH_LEN(ctx->params.type),
675
+ &output_hash_len);
676
+ if (status != PSA_SUCCESS) {
677
+ goto exit;
678
+ }
679
+
680
+ psa_hash_abort(&op);
681
+ }
682
+
683
+ ctx->have_private_key = 1;
684
+
685
+ exit:
686
+ psa_hash_abort(&op);
687
+
688
+ return PSA_TO_MBEDTLS_ERR(status);
689
+ }
690
+
691
+ int mbedtls_lmots_calculate_public_key(mbedtls_lmots_public_t *ctx,
692
+ const mbedtls_lmots_private_t *priv_ctx)
693
+ {
694
+ unsigned char y_hashed_digits[MBEDTLS_LMOTS_P_SIG_DIGIT_COUNT_MAX][MBEDTLS_LMOTS_N_HASH_LEN_MAX];
695
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
696
+
697
+ /* Check that a private key is loaded */
698
+ if (!priv_ctx->have_private_key) {
699
+ return MBEDTLS_ERR_LMS_BAD_INPUT_DATA;
700
+ }
701
+
702
+ ret = hash_digit_array(&priv_ctx->params,
703
+ (unsigned char *) priv_ctx->private_key, NULL,
704
+ NULL, (unsigned char *) y_hashed_digits);
705
+ if (ret) {
706
+ goto exit;
707
+ }
708
+
709
+ ret = public_key_from_hashed_digit_array(&priv_ctx->params,
710
+ (unsigned char *) y_hashed_digits,
711
+ ctx->public_key);
712
+ if (ret) {
713
+ goto exit;
714
+ }
715
+
716
+ memcpy(&ctx->params, &priv_ctx->params,
717
+ sizeof(ctx->params));
718
+
719
+ ctx->have_public_key = 1;
720
+
721
+ exit:
722
+ mbedtls_platform_zeroize(y_hashed_digits, sizeof(y_hashed_digits));
723
+
724
+ return ret;
725
+ }
726
+
727
+ int mbedtls_lmots_sign(mbedtls_lmots_private_t *ctx,
728
+ int (*f_rng)(void *, unsigned char *, size_t),
729
+ void *p_rng, const unsigned char *msg, size_t msg_size,
730
+ unsigned char *sig, size_t sig_size, size_t *sig_len)
731
+ {
732
+ unsigned char tmp_digit_array[MBEDTLS_LMOTS_P_SIG_DIGIT_COUNT_MAX];
733
+ /* Create a temporary buffer to prepare the signature in. This allows us to
734
+ * finish creating a signature (ensuring the process doesn't fail), and then
735
+ * erase the private key **before** writing any data into the sig parameter
736
+ * buffer. If data were directly written into the sig buffer, it might leak
737
+ * a partial signature on failure, which effectively compromises the private
738
+ * key.
739
+ */
740
+ unsigned char tmp_sig[MBEDTLS_LMOTS_P_SIG_DIGIT_COUNT_MAX][MBEDTLS_LMOTS_N_HASH_LEN_MAX];
741
+ unsigned char tmp_c_random[MBEDTLS_LMOTS_N_HASH_LEN_MAX];
742
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
743
+
744
+ if (msg == NULL && msg_size != 0) {
745
+ return MBEDTLS_ERR_LMS_BAD_INPUT_DATA;
746
+ }
747
+
748
+ if (sig_size < MBEDTLS_LMOTS_SIG_LEN(ctx->params.type)) {
749
+ return MBEDTLS_ERR_LMS_BUFFER_TOO_SMALL;
750
+ }
751
+
752
+ /* Check that a private key is loaded */
753
+ if (!ctx->have_private_key) {
754
+ return MBEDTLS_ERR_LMS_BAD_INPUT_DATA;
755
+ }
756
+
757
+ ret = f_rng(p_rng, tmp_c_random,
758
+ MBEDTLS_LMOTS_N_HASH_LEN(ctx->params.type));
759
+ if (ret) {
760
+ return ret;
761
+ }
762
+
763
+ ret = create_digit_array_with_checksum(&ctx->params,
764
+ msg, msg_size,
765
+ tmp_c_random,
766
+ tmp_digit_array);
767
+ if (ret) {
768
+ goto exit;
769
+ }
770
+
771
+ ret = hash_digit_array(&ctx->params, (unsigned char *) ctx->private_key,
772
+ NULL, tmp_digit_array, (unsigned char *) tmp_sig);
773
+ if (ret) {
774
+ goto exit;
775
+ }
776
+
777
+ mbedtls_lms_unsigned_int_to_network_bytes(ctx->params.type,
778
+ MBEDTLS_LMOTS_TYPE_LEN,
779
+ sig + MBEDTLS_LMOTS_SIG_TYPE_OFFSET);
780
+
781
+ /* Test hook to check if sig is being written to before we invalidate the
782
+ * private key.
783
+ */
784
+ #if defined(MBEDTLS_TEST_HOOKS)
785
+ if (mbedtls_lmots_sign_private_key_invalidated_hook != NULL) {
786
+ ret = (*mbedtls_lmots_sign_private_key_invalidated_hook)(sig);
787
+ if (ret != 0) {
788
+ return ret;
789
+ }
790
+ }
791
+ #endif /* defined(MBEDTLS_TEST_HOOKS) */
792
+
793
+ /* We've got a valid signature now, so it's time to make sure the private
794
+ * key can't be reused.
795
+ */
796
+ ctx->have_private_key = 0;
797
+ mbedtls_platform_zeroize(ctx->private_key,
798
+ sizeof(ctx->private_key));
799
+
800
+ memcpy(sig + MBEDTLS_LMOTS_SIG_C_RANDOM_OFFSET, tmp_c_random,
801
+ MBEDTLS_LMOTS_C_RANDOM_VALUE_LEN(ctx->params.type));
802
+
803
+ memcpy(sig + MBEDTLS_LMOTS_SIG_SIGNATURE_OFFSET(ctx->params.type), tmp_sig,
804
+ MBEDTLS_LMOTS_P_SIG_DIGIT_COUNT(ctx->params.type)
805
+ * MBEDTLS_LMOTS_N_HASH_LEN(ctx->params.type));
806
+
807
+ if (sig_len != NULL) {
808
+ *sig_len = MBEDTLS_LMOTS_SIG_LEN(ctx->params.type);
809
+ }
810
+
811
+ ret = 0;
812
+
813
+ exit:
814
+ mbedtls_platform_zeroize(tmp_digit_array, sizeof(tmp_digit_array));
815
+ mbedtls_platform_zeroize(tmp_sig, sizeof(tmp_sig));
816
+
817
+ return ret;
818
+ }
819
+
820
+ #endif /* defined(MBEDTLS_LMS_PRIVATE) */
821
+ #endif /* defined(MBEDTLS_LMS_C) */