visaljs 0.0.2 → 0.0.3

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 (1007) hide show
  1. package/cli.js +393 -62
  2. package/node/include/js_node.h +28 -5
  3. package/node/include/js_uv.h +36 -0
  4. package/node/prelude/crypto.js +7 -10
  5. package/node/prelude/dns.js +99 -0
  6. package/node/prelude/dns_promises.js +10 -0
  7. package/node/prelude/http.js +1039 -195
  8. package/node/prelude/internal/crypto/asym.js +39 -12
  9. package/node/prelude/internal/crypto/dh_groups.js +12 -0
  10. package/node/prelude/internal/crypto/diffiehellman.js +354 -0
  11. package/node/prelude/internal/crypto/hash.js +1 -1
  12. package/node/prelude/internal/crypto/key_type.js +3 -0
  13. package/node/prelude/internal/crypto/keys.js +39 -9
  14. package/node/prelude/internal/http_agent.js +249 -0
  15. package/node/prelude/internal/net.js +33 -0
  16. package/node/prelude/internal/socketaddress.js +249 -0
  17. package/node/prelude/internal/tls/common.js +306 -0
  18. package/node/prelude/internal/tls/wrap.js +1217 -0
  19. package/node/prelude/internal/tls/x509.js +394 -0
  20. package/node/prelude/net.js +1083 -50
  21. package/node/prelude/stream.js +6 -0
  22. package/node/prelude/tls.js +141 -0
  23. package/node/prelude/util.js +5 -2
  24. package/node/prelude/util_types.js +85 -0
  25. package/node/src/host_http.c +268 -270
  26. package/node/src/host_loop.c +84 -0
  27. package/node/src/host_net.c +495 -0
  28. package/node/src/host_sys.c +16 -0
  29. package/package.json +1 -1
  30. package/runtime/include/js_builtins.h +16 -0
  31. package/runtime/include/js_console.h +2 -0
  32. package/runtime/include/js_core.def +23 -0
  33. package/runtime/include/js_crypto.h +23 -0
  34. package/runtime/include/js_generator.h +2 -3
  35. package/runtime/include/js_promise.h +0 -2
  36. package/runtime/src/async_iter.c +4 -1
  37. package/runtime/src/boringssl_support.cc +34 -0
  38. package/runtime/src/builtin_table.c +8 -0
  39. package/runtime/src/components.c +10 -0
  40. package/runtime/src/console.c +6 -18
  41. package/runtime/src/core_all.c +1 -0
  42. package/runtime/src/crypto_asym.c +450 -241
  43. package/runtime/src/crypto_bn.c +91 -0
  44. package/runtime/src/crypto_cipher.c +153 -75
  45. package/runtime/src/crypto_hash.c +68 -53
  46. package/runtime/src/crypto_internal.h +55 -26
  47. package/runtime/src/crypto_pkey.c +198 -61
  48. package/runtime/src/crypto_subtle.c +42 -16
  49. package/runtime/src/crypto_tls.c +678 -0
  50. package/runtime/src/generator.c +8 -1
  51. package/runtime/src/global.c +2 -4
  52. package/runtime/src/internal.h +0 -1
  53. package/runtime/src/jobs.c +2 -1
  54. package/runtime/src/promise.c +4 -1
  55. package/runtime/src/tls_roots.gen.h +3215 -0
  56. package/runtime/src/util_types.c +52 -0
  57. package/runtime/src/weak.c +2 -1
  58. package/runtime/third_party/boringssl/LICENSE +238 -0
  59. package/runtime/third_party/boringssl/README.md +46 -0
  60. package/runtime/third_party/boringssl/VERSION +1 -0
  61. package/runtime/third_party/boringssl/crypto/aes/aes.cc +44 -0
  62. package/runtime/third_party/boringssl/crypto/armv8_feature_parsing.h +67 -0
  63. package/runtime/third_party/boringssl/crypto/asn1/a_bitstr.cc +297 -0
  64. package/runtime/third_party/boringssl/crypto/asn1/a_bool.cc +50 -0
  65. package/runtime/third_party/boringssl/crypto/asn1/a_d2i_fp.cc +47 -0
  66. package/runtime/third_party/boringssl/crypto/asn1/a_dup.cc +42 -0
  67. package/runtime/third_party/boringssl/crypto/asn1/a_gentm.cc +130 -0
  68. package/runtime/third_party/boringssl/crypto/asn1/a_i2d_fp.cc +44 -0
  69. package/runtime/third_party/boringssl/crypto/asn1/a_int.cc +467 -0
  70. package/runtime/third_party/boringssl/crypto/asn1/a_mbstr.cc +242 -0
  71. package/runtime/third_party/boringssl/crypto/asn1/a_object.cc +191 -0
  72. package/runtime/third_party/boringssl/crypto/asn1/a_octet.cc +32 -0
  73. package/runtime/third_party/boringssl/crypto/asn1/a_strex.cc +411 -0
  74. package/runtime/third_party/boringssl/crypto/asn1/a_strnid.cc +208 -0
  75. package/runtime/third_party/boringssl/crypto/asn1/a_time.cc +248 -0
  76. package/runtime/third_party/boringssl/crypto/asn1/a_type.cc +467 -0
  77. package/runtime/third_party/boringssl/crypto/asn1/a_utctm.cc +128 -0
  78. package/runtime/third_party/boringssl/crypto/asn1/asn1_lib.cc +453 -0
  79. package/runtime/third_party/boringssl/crypto/asn1/asn1_par.cc +61 -0
  80. package/runtime/third_party/boringssl/crypto/asn1/asn_pack.cc +56 -0
  81. package/runtime/third_party/boringssl/crypto/asn1/f_int.cc +63 -0
  82. package/runtime/third_party/boringssl/crypto/asn1/f_string.cc +52 -0
  83. package/runtime/third_party/boringssl/crypto/asn1/internal.h +430 -0
  84. package/runtime/third_party/boringssl/crypto/asn1/posix_time.cc +244 -0
  85. package/runtime/third_party/boringssl/crypto/asn1/tasn_dec.cc +611 -0
  86. package/runtime/third_party/boringssl/crypto/asn1/tasn_enc.cc +348 -0
  87. package/runtime/third_party/boringssl/crypto/asn1/tasn_fre.cc +163 -0
  88. package/runtime/third_party/boringssl/crypto/asn1/tasn_new.cc +274 -0
  89. package/runtime/third_party/boringssl/crypto/asn1/tasn_typ.cc +92 -0
  90. package/runtime/third_party/boringssl/crypto/asn1/tasn_utl.cc +218 -0
  91. package/runtime/third_party/boringssl/crypto/base64/base64.cc +433 -0
  92. package/runtime/third_party/boringssl/crypto/bcm_support.h +62 -0
  93. package/runtime/third_party/boringssl/crypto/bio/bio.cc +715 -0
  94. package/runtime/third_party/boringssl/crypto/bio/bio_mem.cc +260 -0
  95. package/runtime/third_party/boringssl/crypto/bio/connect.cc +463 -0
  96. package/runtime/third_party/boringssl/crypto/bio/errno.cc +52 -0
  97. package/runtime/third_party/boringssl/crypto/bio/fd.cc +193 -0
  98. package/runtime/third_party/boringssl/crypto/bio/file.cc +283 -0
  99. package/runtime/third_party/boringssl/crypto/bio/hexdump.cc +154 -0
  100. package/runtime/third_party/boringssl/crypto/bio/internal.h +128 -0
  101. package/runtime/third_party/boringssl/crypto/bio/pair.cc +426 -0
  102. package/runtime/third_party/boringssl/crypto/bio/printf.cc +59 -0
  103. package/runtime/third_party/boringssl/crypto/bio/socket.cc +210 -0
  104. package/runtime/third_party/boringssl/crypto/bio/socket_helper.cc +179 -0
  105. package/runtime/third_party/boringssl/crypto/blake2/blake2.cc +173 -0
  106. package/runtime/third_party/boringssl/crypto/bn/bn_asn1.cc +57 -0
  107. package/runtime/third_party/boringssl/crypto/bn/convert.cc +409 -0
  108. package/runtime/third_party/boringssl/crypto/bn/div.cc +102 -0
  109. package/runtime/third_party/boringssl/crypto/bn/exponentiation.cc +168 -0
  110. package/runtime/third_party/boringssl/crypto/bn/sqrt.cc +93 -0
  111. package/runtime/third_party/boringssl/crypto/buf/buf.cc +119 -0
  112. package/runtime/third_party/boringssl/crypto/bytestring/asn1_compat.cc +54 -0
  113. package/runtime/third_party/boringssl/crypto/bytestring/ber.cc +268 -0
  114. package/runtime/third_party/boringssl/crypto/bytestring/cbb.cc +787 -0
  115. package/runtime/third_party/boringssl/crypto/bytestring/cbs.cc +977 -0
  116. package/runtime/third_party/boringssl/crypto/bytestring/internal.h +134 -0
  117. package/runtime/third_party/boringssl/crypto/bytestring/unicode.cc +156 -0
  118. package/runtime/third_party/boringssl/crypto/chacha/chacha.cc +226 -0
  119. package/runtime/third_party/boringssl/crypto/chacha/internal.h +103 -0
  120. package/runtime/third_party/boringssl/crypto/cipher/derive_key.cc +106 -0
  121. package/runtime/third_party/boringssl/crypto/cipher/e_aesctrhmac.cc +294 -0
  122. package/runtime/third_party/boringssl/crypto/cipher/e_aeseax.cc +351 -0
  123. package/runtime/third_party/boringssl/crypto/cipher/e_aesgcmsiv.cc +918 -0
  124. package/runtime/third_party/boringssl/crypto/cipher/e_chacha20poly1305.cc +404 -0
  125. package/runtime/third_party/boringssl/crypto/cipher/e_des.cc +214 -0
  126. package/runtime/third_party/boringssl/crypto/cipher/e_null.cc +55 -0
  127. package/runtime/third_party/boringssl/crypto/cipher/e_rc2.cc +432 -0
  128. package/runtime/third_party/boringssl/crypto/cipher/e_rc4.cc +56 -0
  129. package/runtime/third_party/boringssl/crypto/cipher/e_tls.cc +615 -0
  130. package/runtime/third_party/boringssl/crypto/cipher/get_cipher.cc +85 -0
  131. package/runtime/third_party/boringssl/crypto/cipher/internal.h +399 -0
  132. package/runtime/third_party/boringssl/crypto/cipher/tls_cbc.cc +476 -0
  133. package/runtime/third_party/boringssl/crypto/cms/cms.cc +178 -0
  134. package/runtime/third_party/boringssl/crypto/conf/conf.cc +637 -0
  135. package/runtime/third_party/boringssl/crypto/conf/internal.h +54 -0
  136. package/runtime/third_party/boringssl/crypto/cpu_aarch64_apple.cc +76 -0
  137. package/runtime/third_party/boringssl/crypto/cpu_aarch64_fuchsia.cc +58 -0
  138. package/runtime/third_party/boringssl/crypto/cpu_aarch64_linux.cc +66 -0
  139. package/runtime/third_party/boringssl/crypto/cpu_aarch64_openbsd.cc +45 -0
  140. package/runtime/third_party/boringssl/crypto/cpu_aarch64_sysreg.cc +66 -0
  141. package/runtime/third_party/boringssl/crypto/cpu_aarch64_win.cc +52 -0
  142. package/runtime/third_party/boringssl/crypto/cpu_arm_freebsd.cc +55 -0
  143. package/runtime/third_party/boringssl/crypto/cpu_arm_linux.cc +173 -0
  144. package/runtime/third_party/boringssl/crypto/cpu_arm_linux.h +141 -0
  145. package/runtime/third_party/boringssl/crypto/cpu_intel.cc +287 -0
  146. package/runtime/third_party/boringssl/crypto/crypto.cc +152 -0
  147. package/runtime/third_party/boringssl/crypto/curve25519/asm/x25519-asm-arm.S +2124 -0
  148. package/runtime/third_party/boringssl/crypto/curve25519/cpace.cc +227 -0
  149. package/runtime/third_party/boringssl/crypto/curve25519/curve25519.cc +2436 -0
  150. package/runtime/third_party/boringssl/crypto/curve25519/curve25519_64_adx.cc +18 -0
  151. package/runtime/third_party/boringssl/crypto/curve25519/curve25519_tables.h +3264 -0
  152. package/runtime/third_party/boringssl/crypto/curve25519/internal.h +202 -0
  153. package/runtime/third_party/boringssl/crypto/curve25519/spake25519.cc +532 -0
  154. package/runtime/third_party/boringssl/crypto/des/des.cc +837 -0
  155. package/runtime/third_party/boringssl/crypto/des/internal.h +144 -0
  156. package/runtime/third_party/boringssl/crypto/dh/dh_asn1.cc +109 -0
  157. package/runtime/third_party/boringssl/crypto/dh/params.cc +411 -0
  158. package/runtime/third_party/boringssl/crypto/digest/digest_extra.cc +361 -0
  159. package/runtime/third_party/boringssl/crypto/dsa/dsa.cc +922 -0
  160. package/runtime/third_party/boringssl/crypto/dsa/dsa_asn1.cc +306 -0
  161. package/runtime/third_party/boringssl/crypto/dsa/internal.h +56 -0
  162. package/runtime/third_party/boringssl/crypto/ec/ec_asn1.cc +542 -0
  163. package/runtime/third_party/boringssl/crypto/ec/ec_derive.cc +94 -0
  164. package/runtime/third_party/boringssl/crypto/ec/hash_to_curve.cc +773 -0
  165. package/runtime/third_party/boringssl/crypto/ec/internal.h +114 -0
  166. package/runtime/third_party/boringssl/crypto/ecdh/ecdh.cc +75 -0
  167. package/runtime/third_party/boringssl/crypto/ecdsa/ecdsa_asn1.cc +337 -0
  168. package/runtime/third_party/boringssl/crypto/ecdsa/ecdsa_p1363.cc +54 -0
  169. package/runtime/third_party/boringssl/crypto/engine/engine.cc +95 -0
  170. package/runtime/third_party/boringssl/crypto/err/err.cc +820 -0
  171. package/runtime/third_party/boringssl/crypto/err/internal.h +45 -0
  172. package/runtime/third_party/boringssl/crypto/evp/evp.cc +454 -0
  173. package/runtime/third_party/boringssl/crypto/evp/evp_asn1.cc +439 -0
  174. package/runtime/third_party/boringssl/crypto/evp/evp_ctx.cc +541 -0
  175. package/runtime/third_party/boringssl/crypto/evp/evp_kem.cc +101 -0
  176. package/runtime/third_party/boringssl/crypto/evp/internal.h +427 -0
  177. package/runtime/third_party/boringssl/crypto/evp/p_dh.cc +326 -0
  178. package/runtime/third_party/boringssl/crypto/evp/p_dsa.cc +333 -0
  179. package/runtime/third_party/boringssl/crypto/evp/p_ec.cc +736 -0
  180. package/runtime/third_party/boringssl/crypto/evp/p_ed25519.cc +359 -0
  181. package/runtime/third_party/boringssl/crypto/evp/p_hkdf.cc +204 -0
  182. package/runtime/third_party/boringssl/crypto/evp/p_mldsa.cc +549 -0
  183. package/runtime/third_party/boringssl/crypto/evp/p_mlkem.cc +510 -0
  184. package/runtime/third_party/boringssl/crypto/evp/p_rsa.cc +1185 -0
  185. package/runtime/third_party/boringssl/crypto/evp/p_x25519.cc +371 -0
  186. package/runtime/third_party/boringssl/crypto/evp/p_xwing.cc +300 -0
  187. package/runtime/third_party/boringssl/crypto/evp/pbkdf.cc +105 -0
  188. package/runtime/third_party/boringssl/crypto/evp/print.cc +287 -0
  189. package/runtime/third_party/boringssl/crypto/evp/scrypt.cc +218 -0
  190. package/runtime/third_party/boringssl/crypto/evp/sign.cc +95 -0
  191. package/runtime/third_party/boringssl/crypto/ex_data.cc +140 -0
  192. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/aes.cc.inc +208 -0
  193. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/aes_nohw.cc.inc +1279 -0
  194. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/cbc.cc.inc +132 -0
  195. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/cfb.cc.inc +168 -0
  196. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/ctr.cc.inc +102 -0
  197. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/gcm.cc.inc +614 -0
  198. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/gcm_nohw.cc.inc +304 -0
  199. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/internal.h +590 -0
  200. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/key_wrap.cc.inc +211 -0
  201. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/mode_wrappers.cc.inc +97 -0
  202. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/ofb.cc.inc +55 -0
  203. package/runtime/third_party/boringssl/crypto/fipsmodule/bcm.cc +288 -0
  204. package/runtime/third_party/boringssl/crypto/fipsmodule/bcm_interface.h +953 -0
  205. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/add.cc.inc +276 -0
  206. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/asm/x86_64-gcc.cc.inc +573 -0
  207. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/bn.cc.inc +377 -0
  208. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/bytes.cc.inc +230 -0
  209. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/cmp.cc.inc +161 -0
  210. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/ctx.cc.inc +127 -0
  211. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/div.cc.inc +738 -0
  212. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/div_extra.cc.inc +90 -0
  213. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/exponentiation.cc.inc +743 -0
  214. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/gcd.cc.inc +281 -0
  215. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/gcd_extra.cc.inc +327 -0
  216. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/generic.cc.inc +579 -0
  217. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/internal.h +810 -0
  218. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/jacobi.cc.inc +101 -0
  219. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/montgomery.cc.inc +408 -0
  220. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/montgomery_inv.cc.inc +179 -0
  221. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/mul.cc.inc +347 -0
  222. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/prime.cc.inc +931 -0
  223. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/random.cc.inc +261 -0
  224. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/rsaz_exp.cc.inc +144 -0
  225. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/rsaz_exp.h +109 -0
  226. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/shift.cc.inc +317 -0
  227. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/sqrt.cc.inc +370 -0
  228. package/runtime/third_party/boringssl/crypto/fipsmodule/cipher/aead.cc.inc +619 -0
  229. package/runtime/third_party/boringssl/crypto/fipsmodule/cipher/cipher.cc.inc +837 -0
  230. package/runtime/third_party/boringssl/crypto/fipsmodule/cipher/e_aes.cc.inc +1240 -0
  231. package/runtime/third_party/boringssl/crypto/fipsmodule/cipher/e_aesccm.cc.inc +440 -0
  232. package/runtime/third_party/boringssl/crypto/fipsmodule/cipher/internal.h +461 -0
  233. package/runtime/third_party/boringssl/crypto/fipsmodule/cmac/cmac.cc.inc +293 -0
  234. package/runtime/third_party/boringssl/crypto/fipsmodule/delocate.h +95 -0
  235. package/runtime/third_party/boringssl/crypto/fipsmodule/dh/check.cc.inc +198 -0
  236. package/runtime/third_party/boringssl/crypto/fipsmodule/dh/dh.cc.inc +401 -0
  237. package/runtime/third_party/boringssl/crypto/fipsmodule/dh/internal.h +63 -0
  238. package/runtime/third_party/boringssl/crypto/fipsmodule/digest/digest.cc.inc +221 -0
  239. package/runtime/third_party/boringssl/crypto/fipsmodule/digest/digests.cc.inc +184 -0
  240. package/runtime/third_party/boringssl/crypto/fipsmodule/digest/internal.h +72 -0
  241. package/runtime/third_party/boringssl/crypto/fipsmodule/digest/md32_common.h +166 -0
  242. package/runtime/third_party/boringssl/crypto/fipsmodule/digestsign/digestsign.cc.inc +230 -0
  243. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/builtin_curves.h +277 -0
  244. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/ec.cc.inc +1024 -0
  245. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/ec_key.cc.inc +536 -0
  246. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/ec_montgomery.cc.inc +379 -0
  247. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/felem.cc.inc +250 -0
  248. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/internal.h +752 -0
  249. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/oct.cc.inc +174 -0
  250. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/p256-nistz-table.h +9502 -0
  251. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/p256-nistz.cc.inc +740 -0
  252. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/p256-nistz.h +207 -0
  253. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/p256.cc.inc +578 -0
  254. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/p256_table.h +297 -0
  255. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/scalar.cc.inc +184 -0
  256. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/simple.cc.inc +246 -0
  257. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/simple_mul.cc.inc +274 -0
  258. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/util.cc.inc +258 -0
  259. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/wnaf.cc.inc +224 -0
  260. package/runtime/third_party/boringssl/crypto/fipsmodule/ecdh/ecdh.cc.inc +91 -0
  261. package/runtime/third_party/boringssl/crypto/fipsmodule/ecdsa/ecdsa.cc.inc +288 -0
  262. package/runtime/third_party/boringssl/crypto/fipsmodule/ecdsa/internal.h +57 -0
  263. package/runtime/third_party/boringssl/crypto/fipsmodule/entropy/internal.h +38 -0
  264. package/runtime/third_party/boringssl/crypto/fipsmodule/entropy/jitter.cc.inc +487 -0
  265. package/runtime/third_party/boringssl/crypto/fipsmodule/entropy/sha512.cc.inc +329 -0
  266. package/runtime/third_party/boringssl/crypto/fipsmodule/fips_shared_support.cc +28 -0
  267. package/runtime/third_party/boringssl/crypto/fipsmodule/hkdf/hkdf.cc.inc +114 -0
  268. package/runtime/third_party/boringssl/crypto/fipsmodule/hmac/hmac.cc.inc +218 -0
  269. package/runtime/third_party/boringssl/crypto/fipsmodule/keccak/internal.h +165 -0
  270. package/runtime/third_party/boringssl/crypto/fipsmodule/keccak/keccak.cc.inc +647 -0
  271. package/runtime/third_party/boringssl/crypto/fipsmodule/mldsa/fips_known_values.inc +1345 -0
  272. package/runtime/third_party/boringssl/crypto/fipsmodule/mldsa/mldsa.cc.inc +3323 -0
  273. package/runtime/third_party/boringssl/crypto/fipsmodule/mlkem/fips_known_values.inc +411 -0
  274. package/runtime/third_party/boringssl/crypto/fipsmodule/mlkem/mlkem.cc.inc +1856 -0
  275. package/runtime/third_party/boringssl/crypto/fipsmodule/rand/android_entropy_client.cc.inc +82 -0
  276. package/runtime/third_party/boringssl/crypto/fipsmodule/rand/ctrdrbg.cc.inc +401 -0
  277. package/runtime/third_party/boringssl/crypto/fipsmodule/rand/internal.h +99 -0
  278. package/runtime/third_party/boringssl/crypto/fipsmodule/rand/rand.cc.inc +486 -0
  279. package/runtime/third_party/boringssl/crypto/fipsmodule/rsa/internal.h +167 -0
  280. package/runtime/third_party/boringssl/crypto/fipsmodule/rsa/padding.cc.inc +371 -0
  281. package/runtime/third_party/boringssl/crypto/fipsmodule/rsa/rsa.cc.inc +996 -0
  282. package/runtime/third_party/boringssl/crypto/fipsmodule/rsa/rsa_impl.cc.inc +1000 -0
  283. package/runtime/third_party/boringssl/crypto/fipsmodule/self_check/fips.cc.inc +129 -0
  284. package/runtime/third_party/boringssl/crypto/fipsmodule/self_check/self_check.cc.inc +1093 -0
  285. package/runtime/third_party/boringssl/crypto/fipsmodule/service_indicator/internal.h +112 -0
  286. package/runtime/third_party/boringssl/crypto/fipsmodule/service_indicator/service_indicator.cc.inc +330 -0
  287. package/runtime/third_party/boringssl/crypto/fipsmodule/sha/internal.h +205 -0
  288. package/runtime/third_party/boringssl/crypto/fipsmodule/sha/sha1.cc.inc +404 -0
  289. package/runtime/third_party/boringssl/crypto/fipsmodule/sha/sha256.cc.inc +315 -0
  290. package/runtime/third_party/boringssl/crypto/fipsmodule/sha/sha512.cc.inc +473 -0
  291. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/address.h +144 -0
  292. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/fips_known_values.inc +674 -0
  293. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/fors.cc.inc +179 -0
  294. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/fors.h +48 -0
  295. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/merkle.cc.inc +164 -0
  296. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/merkle.h +58 -0
  297. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/params.h +178 -0
  298. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/slhdsa.cc.inc +690 -0
  299. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/thash.cc.inc +326 -0
  300. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/thash.h +71 -0
  301. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/wots.cc.inc +172 -0
  302. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/wots.h +40 -0
  303. package/runtime/third_party/boringssl/crypto/fipsmodule/tls/internal.h +33 -0
  304. package/runtime/third_party/boringssl/crypto/fipsmodule/tls/kdf.cc.inc +180 -0
  305. package/runtime/third_party/boringssl/crypto/fuzzer_mode.cc +30 -0
  306. package/runtime/third_party/boringssl/crypto/hpke/hpke.cc +1514 -0
  307. package/runtime/third_party/boringssl/crypto/hrss/asm/poly_rq_mul.S +8489 -0
  308. package/runtime/third_party/boringssl/crypto/hrss/hrss.cc +2189 -0
  309. package/runtime/third_party/boringssl/crypto/hrss/internal.h +64 -0
  310. package/runtime/third_party/boringssl/crypto/internal.h +1767 -0
  311. package/runtime/third_party/boringssl/crypto/lhash/internal.h +222 -0
  312. package/runtime/third_party/boringssl/crypto/lhash/lhash.cc +312 -0
  313. package/runtime/third_party/boringssl/crypto/md4/md4.cc +207 -0
  314. package/runtime/third_party/boringssl/crypto/md5/internal.h +34 -0
  315. package/runtime/third_party/boringssl/crypto/md5/md5.cc +255 -0
  316. package/runtime/third_party/boringssl/crypto/mem.cc +577 -0
  317. package/runtime/third_party/boringssl/crypto/mem_internal.h +706 -0
  318. package/runtime/third_party/boringssl/crypto/mldsa/mldsa.cc +296 -0
  319. package/runtime/third_party/boringssl/crypto/mlkem/mlkem.cc +108 -0
  320. package/runtime/third_party/boringssl/crypto/obj/obj.cc +494 -0
  321. package/runtime/third_party/boringssl/crypto/obj/obj_dat.h +11722 -0
  322. package/runtime/third_party/boringssl/crypto/obj/obj_xref.cc +83 -0
  323. package/runtime/third_party/boringssl/crypto/params_internal.h +30 -0
  324. package/runtime/third_party/boringssl/crypto/pem/internal.h +135 -0
  325. package/runtime/third_party/boringssl/crypto/pem/pem_all.cc +153 -0
  326. package/runtime/third_party/boringssl/crypto/pem/pem_info.cc +250 -0
  327. package/runtime/third_party/boringssl/crypto/pem/pem_lib.cc +707 -0
  328. package/runtime/third_party/boringssl/crypto/pem/pem_oth.cc +45 -0
  329. package/runtime/third_party/boringssl/crypto/pem/pem_pk8.cc +211 -0
  330. package/runtime/third_party/boringssl/crypto/pem/pem_pkey.cc +147 -0
  331. package/runtime/third_party/boringssl/crypto/pem/pem_x509.cc +25 -0
  332. package/runtime/third_party/boringssl/crypto/pem/pem_xaux.cc +25 -0
  333. package/runtime/third_party/boringssl/crypto/pkcs7/internal.h +67 -0
  334. package/runtime/third_party/boringssl/crypto/pkcs7/pkcs7.cc +198 -0
  335. package/runtime/third_party/boringssl/crypto/pkcs7/pkcs7_x509.cc +527 -0
  336. package/runtime/third_party/boringssl/crypto/pkcs8/internal.h +98 -0
  337. package/runtime/third_party/boringssl/crypto/pkcs8/p5_pbev2.cc +286 -0
  338. package/runtime/third_party/boringssl/crypto/pkcs8/pkcs8.cc +473 -0
  339. package/runtime/third_party/boringssl/crypto/pkcs8/pkcs8_x509.cc +1328 -0
  340. package/runtime/third_party/boringssl/crypto/poly1305/internal.h +54 -0
  341. package/runtime/third_party/boringssl/crypto/poly1305/poly1305.cc +315 -0
  342. package/runtime/third_party/boringssl/crypto/poly1305/poly1305_arm.cc +294 -0
  343. package/runtime/third_party/boringssl/crypto/poly1305/poly1305_arm_asm.S +2017 -0
  344. package/runtime/third_party/boringssl/crypto/poly1305/poly1305_vec.cc +853 -0
  345. package/runtime/third_party/boringssl/crypto/pool/internal.h +95 -0
  346. package/runtime/third_party/boringssl/crypto/pool/pool.cc +282 -0
  347. package/runtime/third_party/boringssl/crypto/rand/deterministic.cc +58 -0
  348. package/runtime/third_party/boringssl/crypto/rand/fork_detect.cc +222 -0
  349. package/runtime/third_party/boringssl/crypto/rand/forkunsafe.cc +44 -0
  350. package/runtime/third_party/boringssl/crypto/rand/getentropy.cc +53 -0
  351. package/runtime/third_party/boringssl/crypto/rand/internal.h +67 -0
  352. package/runtime/third_party/boringssl/crypto/rand/ios.cc +35 -0
  353. package/runtime/third_party/boringssl/crypto/rand/rand.cc +79 -0
  354. package/runtime/third_party/boringssl/crypto/rand/trusty.cc +39 -0
  355. package/runtime/third_party/boringssl/crypto/rand/urandom.cc +149 -0
  356. package/runtime/third_party/boringssl/crypto/rand/windows.cc +91 -0
  357. package/runtime/third_party/boringssl/crypto/rc4/rc4.cc +56 -0
  358. package/runtime/third_party/boringssl/crypto/refcount.cc +49 -0
  359. package/runtime/third_party/boringssl/crypto/rsa/internal.h +51 -0
  360. package/runtime/third_party/boringssl/crypto/rsa/rsa_asn1.cc +404 -0
  361. package/runtime/third_party/boringssl/crypto/rsa/rsa_crypt.cc +530 -0
  362. package/runtime/third_party/boringssl/crypto/rsa/rsa_extra.cc +30 -0
  363. package/runtime/third_party/boringssl/crypto/rsa/rsa_print.cc +25 -0
  364. package/runtime/third_party/boringssl/crypto/sha/sha1.cc +55 -0
  365. package/runtime/third_party/boringssl/crypto/sha/sha256.cc +89 -0
  366. package/runtime/third_party/boringssl/crypto/sha/sha512.cc +106 -0
  367. package/runtime/third_party/boringssl/crypto/siphash/siphash.cc +81 -0
  368. package/runtime/third_party/boringssl/crypto/slhdsa/slhdsa.cc +167 -0
  369. package/runtime/third_party/boringssl/crypto/spake2plus/internal.h +204 -0
  370. package/runtime/third_party/boringssl/crypto/spake2plus/spake2plus.cc +501 -0
  371. package/runtime/third_party/boringssl/crypto/stack/stack.cc +462 -0
  372. package/runtime/third_party/boringssl/crypto/thread.cc +68 -0
  373. package/runtime/third_party/boringssl/crypto/thread_none.cc +48 -0
  374. package/runtime/third_party/boringssl/crypto/thread_pthread.cc +138 -0
  375. package/runtime/third_party/boringssl/crypto/thread_win.cc +227 -0
  376. package/runtime/third_party/boringssl/crypto/trust_token/internal.h +405 -0
  377. package/runtime/third_party/boringssl/crypto/trust_token/pmbtoken.cc +1672 -0
  378. package/runtime/third_party/boringssl/crypto/trust_token/trust_token.cc +701 -0
  379. package/runtime/third_party/boringssl/crypto/trust_token/voprf.cc +1266 -0
  380. package/runtime/third_party/boringssl/crypto/x509/a_digest.cc +52 -0
  381. package/runtime/third_party/boringssl/crypto/x509/a_sign.cc +100 -0
  382. package/runtime/third_party/boringssl/crypto/x509/a_verify.cc +77 -0
  383. package/runtime/third_party/boringssl/crypto/x509/algorithm.cc +167 -0
  384. package/runtime/third_party/boringssl/crypto/x509/asn1_gen.cc +540 -0
  385. package/runtime/third_party/boringssl/crypto/x509/by_dir.cc +301 -0
  386. package/runtime/third_party/boringssl/crypto/x509/by_file.cc +226 -0
  387. package/runtime/third_party/boringssl/crypto/x509/i2d_pr.cc +37 -0
  388. package/runtime/third_party/boringssl/crypto/x509/internal.h +697 -0
  389. package/runtime/third_party/boringssl/crypto/x509/name_print.cc +187 -0
  390. package/runtime/third_party/boringssl/crypto/x509/policy.cc +686 -0
  391. package/runtime/third_party/boringssl/crypto/x509/rsa_pss.cc +187 -0
  392. package/runtime/third_party/boringssl/crypto/x509/t_crl.cc +106 -0
  393. package/runtime/third_party/boringssl/crypto/x509/t_req.cc +206 -0
  394. package/runtime/third_party/boringssl/crypto/x509/t_x509.cc +292 -0
  395. package/runtime/third_party/boringssl/crypto/x509/t_x509a.cc +81 -0
  396. package/runtime/third_party/boringssl/crypto/x509/v3_akey.cc +174 -0
  397. package/runtime/third_party/boringssl/crypto/x509/v3_akeya.cc +31 -0
  398. package/runtime/third_party/boringssl/crypto/x509/v3_alt.cc +636 -0
  399. package/runtime/third_party/boringssl/crypto/x509/v3_bcons.cc +96 -0
  400. package/runtime/third_party/boringssl/crypto/x509/v3_bitst.cc +100 -0
  401. package/runtime/third_party/boringssl/crypto/x509/v3_conf.cc +369 -0
  402. package/runtime/third_party/boringssl/crypto/x509/v3_cpols.cc +417 -0
  403. package/runtime/third_party/boringssl/crypto/x509/v3_crld.cc +471 -0
  404. package/runtime/third_party/boringssl/crypto/x509/v3_enum.cc +74 -0
  405. package/runtime/third_party/boringssl/crypto/x509/v3_extku.cc +97 -0
  406. package/runtime/third_party/boringssl/crypto/x509/v3_genn.cc +238 -0
  407. package/runtime/third_party/boringssl/crypto/x509/v3_ia5.cc +83 -0
  408. package/runtime/third_party/boringssl/crypto/x509/v3_info.cc +162 -0
  409. package/runtime/third_party/boringssl/crypto/x509/v3_int.cc +83 -0
  410. package/runtime/third_party/boringssl/crypto/x509/v3_lib.cc +349 -0
  411. package/runtime/third_party/boringssl/crypto/x509/v3_ncons.cc +798 -0
  412. package/runtime/third_party/boringssl/crypto/x509/v3_ocsp.cc +92 -0
  413. package/runtime/third_party/boringssl/crypto/x509/v3_pcons.cc +102 -0
  414. package/runtime/third_party/boringssl/crypto/x509/v3_pmaps.cc +110 -0
  415. package/runtime/third_party/boringssl/crypto/x509/v3_prn.cc +183 -0
  416. package/runtime/third_party/boringssl/crypto/x509/v3_purp.cc +580 -0
  417. package/runtime/third_party/boringssl/crypto/x509/v3_skey.cc +128 -0
  418. package/runtime/third_party/boringssl/crypto/x509/v3_utl.cc +1311 -0
  419. package/runtime/third_party/boringssl/crypto/x509/x509.cc +47 -0
  420. package/runtime/third_party/boringssl/crypto/x509/x509_att.cc +188 -0
  421. package/runtime/third_party/boringssl/crypto/x509/x509_cmp.cc +243 -0
  422. package/runtime/third_party/boringssl/crypto/x509/x509_d2.cc +66 -0
  423. package/runtime/third_party/boringssl/crypto/x509/x509_def.cc +42 -0
  424. package/runtime/third_party/boringssl/crypto/x509/x509_ext.cc +161 -0
  425. package/runtime/third_party/boringssl/crypto/x509/x509_lu.cc +570 -0
  426. package/runtime/third_party/boringssl/crypto/x509/x509_mtc.cc +598 -0
  427. package/runtime/third_party/boringssl/crypto/x509/x509_obj.cc +169 -0
  428. package/runtime/third_party/boringssl/crypto/x509/x509_req.cc +248 -0
  429. package/runtime/third_party/boringssl/crypto/x509/x509_set.cc +166 -0
  430. package/runtime/third_party/boringssl/crypto/x509/x509_trs.cc +123 -0
  431. package/runtime/third_party/boringssl/crypto/x509/x509_txt.cc +147 -0
  432. package/runtime/third_party/boringssl/crypto/x509/x509_v3.cc +249 -0
  433. package/runtime/third_party/boringssl/crypto/x509/x509_vfy.cc +1531 -0
  434. package/runtime/third_party/boringssl/crypto/x509/x509_vpm.cc +449 -0
  435. package/runtime/third_party/boringssl/crypto/x509/x509cset.cc +222 -0
  436. package/runtime/third_party/boringssl/crypto/x509/x509name.cc +377 -0
  437. package/runtime/third_party/boringssl/crypto/x509/x509rset.cc +55 -0
  438. package/runtime/third_party/boringssl/crypto/x509/x509spki.cc +91 -0
  439. package/runtime/third_party/boringssl/crypto/x509/x_algor.cc +223 -0
  440. package/runtime/third_party/boringssl/crypto/x509/x_all.cc +352 -0
  441. package/runtime/third_party/boringssl/crypto/x509/x_attrib.cc +61 -0
  442. package/runtime/third_party/boringssl/crypto/x509/x_crl.cc +325 -0
  443. package/runtime/third_party/boringssl/crypto/x509/x_exten.cc +42 -0
  444. package/runtime/third_party/boringssl/crypto/x509/x_name.cc +407 -0
  445. package/runtime/third_party/boringssl/crypto/x509/x_pubkey.cc +199 -0
  446. package/runtime/third_party/boringssl/crypto/x509/x_req.cc +80 -0
  447. package/runtime/third_party/boringssl/crypto/x509/x_sig.cc +51 -0
  448. package/runtime/third_party/boringssl/crypto/x509/x_spki.cc +44 -0
  449. package/runtime/third_party/boringssl/crypto/x509/x_x509.cc +495 -0
  450. package/runtime/third_party/boringssl/crypto/x509/x_x509a.cc +169 -0
  451. package/runtime/third_party/boringssl/crypto/xwing/xwing.cc +257 -0
  452. package/runtime/third_party/boringssl/gen/bcm/aes-gcm-avx2-x86_64-apple.S +1326 -0
  453. package/runtime/third_party/boringssl/gen/bcm/aes-gcm-avx2-x86_64-linux.S +1327 -0
  454. package/runtime/third_party/boringssl/gen/bcm/aes-gcm-avx512-x86_64-apple.S +1252 -0
  455. package/runtime/third_party/boringssl/gen/bcm/aes-gcm-avx512-x86_64-linux.S +1253 -0
  456. package/runtime/third_party/boringssl/gen/bcm/aesni-gcm-x86_64-apple.S +873 -0
  457. package/runtime/third_party/boringssl/gen/bcm/aesni-gcm-x86_64-linux.S +885 -0
  458. package/runtime/third_party/boringssl/gen/bcm/aesni-x86-apple.S +2490 -0
  459. package/runtime/third_party/boringssl/gen/bcm/aesni-x86-linux.S +2530 -0
  460. package/runtime/third_party/boringssl/gen/bcm/aesni-x86_64-apple.S +2413 -0
  461. package/runtime/third_party/boringssl/gen/bcm/aesni-x86_64-linux.S +2397 -0
  462. package/runtime/third_party/boringssl/gen/bcm/aesv8-armv7-linux.S +784 -0
  463. package/runtime/third_party/boringssl/gen/bcm/aesv8-armv8-apple.S +792 -0
  464. package/runtime/third_party/boringssl/gen/bcm/aesv8-armv8-linux.S +786 -0
  465. package/runtime/third_party/boringssl/gen/bcm/aesv8-armv8-win.S +798 -0
  466. package/runtime/third_party/boringssl/gen/bcm/aesv8-gcm-armv8-apple.S +2912 -0
  467. package/runtime/third_party/boringssl/gen/bcm/aesv8-gcm-armv8-linux.S +2907 -0
  468. package/runtime/third_party/boringssl/gen/bcm/aesv8-gcm-armv8-win.S +2915 -0
  469. package/runtime/third_party/boringssl/gen/bcm/armv4-mont-linux.S +932 -0
  470. package/runtime/third_party/boringssl/gen/bcm/armv8-mont-apple.S +1440 -0
  471. package/runtime/third_party/boringssl/gen/bcm/armv8-mont-linux.S +1440 -0
  472. package/runtime/third_party/boringssl/gen/bcm/armv8-mont-win.S +1446 -0
  473. package/runtime/third_party/boringssl/gen/bcm/bn-586-apple.S +530 -0
  474. package/runtime/third_party/boringssl/gen/bcm/bn-586-linux.S +540 -0
  475. package/runtime/third_party/boringssl/gen/bcm/bn-armv8-apple.S +88 -0
  476. package/runtime/third_party/boringssl/gen/bcm/bn-armv8-linux.S +87 -0
  477. package/runtime/third_party/boringssl/gen/bcm/bn-armv8-win.S +87 -0
  478. package/runtime/third_party/boringssl/gen/bcm/bsaes-armv7-linux.S +1520 -0
  479. package/runtime/third_party/boringssl/gen/bcm/co-586-apple.S +1256 -0
  480. package/runtime/third_party/boringssl/gen/bcm/co-586-linux.S +1264 -0
  481. package/runtime/third_party/boringssl/gen/bcm/ghash-armv4-linux.S +242 -0
  482. package/runtime/third_party/boringssl/gen/bcm/ghash-neon-armv8-apple.S +337 -0
  483. package/runtime/third_party/boringssl/gen/bcm/ghash-neon-armv8-linux.S +335 -0
  484. package/runtime/third_party/boringssl/gen/bcm/ghash-neon-armv8-win.S +341 -0
  485. package/runtime/third_party/boringssl/gen/bcm/ghash-ssse3-x86-apple.S +288 -0
  486. package/runtime/third_party/boringssl/gen/bcm/ghash-ssse3-x86-linux.S +292 -0
  487. package/runtime/third_party/boringssl/gen/bcm/ghash-ssse3-x86_64-apple.S +426 -0
  488. package/runtime/third_party/boringssl/gen/bcm/ghash-ssse3-x86_64-linux.S +425 -0
  489. package/runtime/third_party/boringssl/gen/bcm/ghash-x86-apple.S +322 -0
  490. package/runtime/third_party/boringssl/gen/bcm/ghash-x86-linux.S +328 -0
  491. package/runtime/third_party/boringssl/gen/bcm/ghash-x86_64-apple.S +1134 -0
  492. package/runtime/third_party/boringssl/gen/bcm/ghash-x86_64-linux.S +1129 -0
  493. package/runtime/third_party/boringssl/gen/bcm/ghashv8-armv7-linux.S +244 -0
  494. package/runtime/third_party/boringssl/gen/bcm/ghashv8-armv8-apple.S +567 -0
  495. package/runtime/third_party/boringssl/gen/bcm/ghashv8-armv8-linux.S +563 -0
  496. package/runtime/third_party/boringssl/gen/bcm/ghashv8-armv8-win.S +571 -0
  497. package/runtime/third_party/boringssl/gen/bcm/p256-armv8-asm-apple.S +1744 -0
  498. package/runtime/third_party/boringssl/gen/bcm/p256-armv8-asm-linux.S +1725 -0
  499. package/runtime/third_party/boringssl/gen/bcm/p256-armv8-asm-win.S +1765 -0
  500. package/runtime/third_party/boringssl/gen/bcm/p256-x86_64-asm-apple.S +4544 -0
  501. package/runtime/third_party/boringssl/gen/bcm/p256-x86_64-asm-linux.S +4600 -0
  502. package/runtime/third_party/boringssl/gen/bcm/p256_beeu-armv8-asm-apple.S +310 -0
  503. package/runtime/third_party/boringssl/gen/bcm/p256_beeu-armv8-asm-linux.S +310 -0
  504. package/runtime/third_party/boringssl/gen/bcm/p256_beeu-armv8-asm-win.S +310 -0
  505. package/runtime/third_party/boringssl/gen/bcm/p256_beeu-x86_64-asm-apple.S +321 -0
  506. package/runtime/third_party/boringssl/gen/bcm/p256_beeu-x86_64-asm-linux.S +335 -0
  507. package/runtime/third_party/boringssl/gen/bcm/rdrand-x86_64-apple.S +58 -0
  508. package/runtime/third_party/boringssl/gen/bcm/rdrand-x86_64-linux.S +57 -0
  509. package/runtime/third_party/boringssl/gen/bcm/rsaz-avx2-apple.S +1756 -0
  510. package/runtime/third_party/boringssl/gen/bcm/rsaz-avx2-linux.S +1751 -0
  511. package/runtime/third_party/boringssl/gen/bcm/sha1-586-apple.S +3782 -0
  512. package/runtime/third_party/boringssl/gen/bcm/sha1-586-linux.S +3788 -0
  513. package/runtime/third_party/boringssl/gen/bcm/sha1-armv4-large-linux.S +1479 -0
  514. package/runtime/third_party/boringssl/gen/bcm/sha1-armv8-apple.S +1219 -0
  515. package/runtime/third_party/boringssl/gen/bcm/sha1-armv8-linux.S +1218 -0
  516. package/runtime/third_party/boringssl/gen/bcm/sha1-armv8-win.S +1222 -0
  517. package/runtime/third_party/boringssl/gen/bcm/sha1-x86_64-apple.S +5454 -0
  518. package/runtime/third_party/boringssl/gen/bcm/sha1-x86_64-linux.S +5450 -0
  519. package/runtime/third_party/boringssl/gen/bcm/sha256-586-apple.S +5593 -0
  520. package/runtime/third_party/boringssl/gen/bcm/sha256-586-linux.S +5599 -0
  521. package/runtime/third_party/boringssl/gen/bcm/sha256-armv4-linux.S +2840 -0
  522. package/runtime/third_party/boringssl/gen/bcm/sha256-armv8-apple.S +1195 -0
  523. package/runtime/third_party/boringssl/gen/bcm/sha256-armv8-linux.S +1194 -0
  524. package/runtime/third_party/boringssl/gen/bcm/sha256-armv8-win.S +1198 -0
  525. package/runtime/third_party/boringssl/gen/bcm/sha256-x86_64-apple.S +4173 -0
  526. package/runtime/third_party/boringssl/gen/bcm/sha256-x86_64-linux.S +4170 -0
  527. package/runtime/third_party/boringssl/gen/bcm/sha512-586-apple.S +2406 -0
  528. package/runtime/third_party/boringssl/gen/bcm/sha512-586-linux.S +2410 -0
  529. package/runtime/third_party/boringssl/gen/bcm/sha512-armv4-linux.S +1857 -0
  530. package/runtime/third_party/boringssl/gen/bcm/sha512-armv8-apple.S +1598 -0
  531. package/runtime/third_party/boringssl/gen/bcm/sha512-armv8-linux.S +1597 -0
  532. package/runtime/third_party/boringssl/gen/bcm/sha512-armv8-win.S +1601 -0
  533. package/runtime/third_party/boringssl/gen/bcm/sha512-x86_64-apple.S +2979 -0
  534. package/runtime/third_party/boringssl/gen/bcm/sha512-x86_64-linux.S +2978 -0
  535. package/runtime/third_party/boringssl/gen/bcm/vpaes-armv7-linux.S +1225 -0
  536. package/runtime/third_party/boringssl/gen/bcm/vpaes-armv8-apple.S +1238 -0
  537. package/runtime/third_party/boringssl/gen/bcm/vpaes-armv8-linux.S +1220 -0
  538. package/runtime/third_party/boringssl/gen/bcm/vpaes-armv8-win.S +1256 -0
  539. package/runtime/third_party/boringssl/gen/bcm/vpaes-x86-apple.S +680 -0
  540. package/runtime/third_party/boringssl/gen/bcm/vpaes-x86-linux.S +706 -0
  541. package/runtime/third_party/boringssl/gen/bcm/vpaes-x86_64-apple.S +1146 -0
  542. package/runtime/third_party/boringssl/gen/bcm/vpaes-x86_64-linux.S +1133 -0
  543. package/runtime/third_party/boringssl/gen/bcm/x86-mont-apple.S +216 -0
  544. package/runtime/third_party/boringssl/gen/bcm/x86-mont-linux.S +218 -0
  545. package/runtime/third_party/boringssl/gen/bcm/x86_64-mont-apple.S +1238 -0
  546. package/runtime/third_party/boringssl/gen/bcm/x86_64-mont-linux.S +1237 -0
  547. package/runtime/third_party/boringssl/gen/bcm/x86_64-mont5-apple.S +3644 -0
  548. package/runtime/third_party/boringssl/gen/bcm/x86_64-mont5-linux.S +3628 -0
  549. package/runtime/third_party/boringssl/gen/boringssl_prefix_symbols_internal_x86_64_win_asm.inc +325 -0
  550. package/runtime/third_party/boringssl/gen/boringssl_prefix_symbols_internal_x86_win_asm.inc +325 -0
  551. package/runtime/third_party/boringssl/gen/crypto/aes128gcmsiv-x86_64-apple.S +3113 -0
  552. package/runtime/third_party/boringssl/gen/crypto/aes128gcmsiv-x86_64-linux.S +3091 -0
  553. package/runtime/third_party/boringssl/gen/crypto/chacha-armv4-linux.S +1450 -0
  554. package/runtime/third_party/boringssl/gen/crypto/chacha-armv8-apple.S +1969 -0
  555. package/runtime/third_party/boringssl/gen/crypto/chacha-armv8-linux.S +1967 -0
  556. package/runtime/third_party/boringssl/gen/crypto/chacha-armv8-win.S +1973 -0
  557. package/runtime/third_party/boringssl/gen/crypto/chacha-x86-apple.S +957 -0
  558. package/runtime/third_party/boringssl/gen/crypto/chacha-x86-linux.S +961 -0
  559. package/runtime/third_party/boringssl/gen/crypto/chacha-x86_64-apple.S +1608 -0
  560. package/runtime/third_party/boringssl/gen/crypto/chacha-x86_64-linux.S +1611 -0
  561. package/runtime/third_party/boringssl/gen/crypto/chacha20_poly1305_armv8-apple.S +3010 -0
  562. package/runtime/third_party/boringssl/gen/crypto/chacha20_poly1305_armv8-linux.S +3008 -0
  563. package/runtime/third_party/boringssl/gen/crypto/chacha20_poly1305_armv8-win.S +3014 -0
  564. package/runtime/third_party/boringssl/gen/crypto/chacha20_poly1305_x86_64-apple.S +8903 -0
  565. package/runtime/third_party/boringssl/gen/crypto/chacha20_poly1305_x86_64-linux.S +8940 -0
  566. package/runtime/third_party/boringssl/gen/crypto/err_data.cc +1578 -0
  567. package/runtime/third_party/boringssl/gen/crypto/md5-586-apple.S +684 -0
  568. package/runtime/third_party/boringssl/gen/crypto/md5-586-linux.S +686 -0
  569. package/runtime/third_party/boringssl/gen/crypto/md5-x86_64-apple.S +690 -0
  570. package/runtime/third_party/boringssl/gen/crypto/md5-x86_64-linux.S +695 -0
  571. package/runtime/third_party/boringssl/include/openssl/aead.h +650 -0
  572. package/runtime/third_party/boringssl/include/openssl/aes.h +173 -0
  573. package/runtime/third_party/boringssl/include/openssl/arm_arch.h +24 -0
  574. package/runtime/third_party/boringssl/include/openssl/asm_base.h +219 -0
  575. package/runtime/third_party/boringssl/include/openssl/asn1.h +2002 -0
  576. package/runtime/third_party/boringssl/include/openssl/asn1_mac.h +18 -0
  577. package/runtime/third_party/boringssl/include/openssl/asn1t.h +584 -0
  578. package/runtime/third_party/boringssl/include/openssl/base.h +548 -0
  579. package/runtime/third_party/boringssl/include/openssl/base64.h +156 -0
  580. package/runtime/third_party/boringssl/include/openssl/bio.h +1061 -0
  581. package/runtime/third_party/boringssl/include/openssl/blake2.h +63 -0
  582. package/runtime/third_party/boringssl/include/openssl/blowfish.h +58 -0
  583. package/runtime/third_party/boringssl/include/openssl/bn.h +986 -0
  584. package/runtime/third_party/boringssl/include/openssl/buf.h +95 -0
  585. package/runtime/third_party/boringssl/include/openssl/buffer.h +18 -0
  586. package/runtime/third_party/boringssl/include/openssl/bytestring.h +798 -0
  587. package/runtime/third_party/boringssl/include/openssl/cast.h +91 -0
  588. package/runtime/third_party/boringssl/include/openssl/chacha.h +47 -0
  589. package/runtime/third_party/boringssl/include/openssl/cipher.h +819 -0
  590. package/runtime/third_party/boringssl/include/openssl/cmac.h +91 -0
  591. package/runtime/third_party/boringssl/include/openssl/cms.h +147 -0
  592. package/runtime/third_party/boringssl/include/openssl/conf.h +136 -0
  593. package/runtime/third_party/boringssl/include/openssl/configuration.h +18 -0
  594. package/runtime/third_party/boringssl/include/openssl/cpu.h +18 -0
  595. package/runtime/third_party/boringssl/include/openssl/crypto.h +235 -0
  596. package/runtime/third_party/boringssl/include/openssl/ctrdrbg.h +116 -0
  597. package/runtime/third_party/boringssl/include/openssl/curve25519.h +309 -0
  598. package/runtime/third_party/boringssl/include/openssl/des.h +134 -0
  599. package/runtime/third_party/boringssl/include/openssl/dh.h +336 -0
  600. package/runtime/third_party/boringssl/include/openssl/digest.h +399 -0
  601. package/runtime/third_party/boringssl/include/openssl/dsa.h +392 -0
  602. package/runtime/third_party/boringssl/include/openssl/dtls1.h +16 -0
  603. package/runtime/third_party/boringssl/include/openssl/e_os2.h +18 -0
  604. package/runtime/third_party/boringssl/include/openssl/ec.h +530 -0
  605. package/runtime/third_party/boringssl/include/openssl/ec_key.h +358 -0
  606. package/runtime/third_party/boringssl/include/openssl/ecdh.h +67 -0
  607. package/runtime/third_party/boringssl/include/openssl/ecdsa.h +242 -0
  608. package/runtime/third_party/boringssl/include/openssl/engine.h +109 -0
  609. package/runtime/third_party/boringssl/include/openssl/err.h +416 -0
  610. package/runtime/third_party/boringssl/include/openssl/evp.h +1645 -0
  611. package/runtime/third_party/boringssl/include/openssl/evp_errors.h +66 -0
  612. package/runtime/third_party/boringssl/include/openssl/ex_data.h +117 -0
  613. package/runtime/third_party/boringssl/include/openssl/hkdf.h +68 -0
  614. package/runtime/third_party/boringssl/include/openssl/hmac.h +151 -0
  615. package/runtime/third_party/boringssl/include/openssl/hpke.h +456 -0
  616. package/runtime/third_party/boringssl/include/openssl/hrss.h +108 -0
  617. package/runtime/third_party/boringssl/include/openssl/is_boringssl.h +16 -0
  618. package/runtime/third_party/boringssl/include/openssl/kdf.h +92 -0
  619. package/runtime/third_party/boringssl/include/openssl/lhash.h +18 -0
  620. package/runtime/third_party/boringssl/include/openssl/md4.h +73 -0
  621. package/runtime/third_party/boringssl/include/openssl/md5.h +67 -0
  622. package/runtime/third_party/boringssl/include/openssl/mem.h +215 -0
  623. package/runtime/third_party/boringssl/include/openssl/mldsa.h +486 -0
  624. package/runtime/third_party/boringssl/include/openssl/mlkem.h +222 -0
  625. package/runtime/third_party/boringssl/include/openssl/nid.h +5561 -0
  626. package/runtime/third_party/boringssl/include/openssl/obj.h +225 -0
  627. package/runtime/third_party/boringssl/include/openssl/obj_mac.h +18 -0
  628. package/runtime/third_party/boringssl/include/openssl/objects.h +18 -0
  629. package/runtime/third_party/boringssl/include/openssl/opensslconf.h +108 -0
  630. package/runtime/third_party/boringssl/include/openssl/opensslv.h +18 -0
  631. package/runtime/third_party/boringssl/include/openssl/ossl_typ.h +18 -0
  632. package/runtime/third_party/boringssl/include/openssl/params.h +42 -0
  633. package/runtime/third_party/boringssl/include/openssl/pem.h +769 -0
  634. package/runtime/third_party/boringssl/include/openssl/pkcs12.h +18 -0
  635. package/runtime/third_party/boringssl/include/openssl/pkcs7.h +239 -0
  636. package/runtime/third_party/boringssl/include/openssl/pkcs8.h +267 -0
  637. package/runtime/third_party/boringssl/include/openssl/poly1305.h +52 -0
  638. package/runtime/third_party/boringssl/include/openssl/pool.h +137 -0
  639. package/runtime/third_party/boringssl/include/openssl/posix_time.h +51 -0
  640. package/runtime/third_party/boringssl/include/openssl/prefix_symbols.h +8000 -0
  641. package/runtime/third_party/boringssl/include/openssl/prefix_symbols_internal_S.h +633 -0
  642. package/runtime/third_party/boringssl/include/openssl/prefix_symbols_internal_c.h +329 -0
  643. package/runtime/third_party/boringssl/include/openssl/rand.h +138 -0
  644. package/runtime/third_party/boringssl/include/openssl/rc4.h +54 -0
  645. package/runtime/third_party/boringssl/include/openssl/ripemd.h +71 -0
  646. package/runtime/third_party/boringssl/include/openssl/rsa.h +893 -0
  647. package/runtime/third_party/boringssl/include/openssl/safestack.h +16 -0
  648. package/runtime/third_party/boringssl/include/openssl/service_indicator.h +19 -0
  649. package/runtime/third_party/boringssl/include/openssl/sha.h +108 -0
  650. package/runtime/third_party/boringssl/include/openssl/sha2.h +201 -0
  651. package/runtime/third_party/boringssl/include/openssl/siphash.h +37 -0
  652. package/runtime/third_party/boringssl/include/openssl/slhdsa.h +250 -0
  653. package/runtime/third_party/boringssl/include/openssl/span.h +376 -0
  654. package/runtime/third_party/boringssl/include/openssl/srtp.h +18 -0
  655. package/runtime/third_party/boringssl/include/openssl/ssl.h +7211 -0
  656. package/runtime/third_party/boringssl/include/openssl/ssl3.h +171 -0
  657. package/runtime/third_party/boringssl/include/openssl/stack.h +688 -0
  658. package/runtime/third_party/boringssl/include/openssl/target.h +246 -0
  659. package/runtime/third_party/boringssl/include/openssl/thread.h +114 -0
  660. package/runtime/third_party/boringssl/include/openssl/time.h +22 -0
  661. package/runtime/third_party/boringssl/include/openssl/tls1.h +263 -0
  662. package/runtime/third_party/boringssl/include/openssl/tls_prf.h +47 -0
  663. package/runtime/third_party/boringssl/include/openssl/trust_token.h +349 -0
  664. package/runtime/third_party/boringssl/include/openssl/type_check.h +37 -0
  665. package/runtime/third_party/boringssl/include/openssl/types.h +18 -0
  666. package/runtime/third_party/boringssl/include/openssl/x509.h +5404 -0
  667. package/runtime/third_party/boringssl/include/openssl/x509_vfy.h +18 -0
  668. package/runtime/third_party/boringssl/include/openssl/x509v3.h +63 -0
  669. package/runtime/third_party/boringssl/include/openssl/x509v3_errors.h +84 -0
  670. package/runtime/third_party/boringssl/include/openssl/xwing.h +115 -0
  671. package/runtime/third_party/boringssl/sources.json +696 -0
  672. package/runtime/third_party/boringssl/ssl/bio_ssl.cc +196 -0
  673. package/runtime/third_party/boringssl/ssl/d1_both.cc +1137 -0
  674. package/runtime/third_party/boringssl/ssl/d1_lib.cc +245 -0
  675. package/runtime/third_party/boringssl/ssl/d1_pkt.cc +322 -0
  676. package/runtime/third_party/boringssl/ssl/d1_srtp.cc +128 -0
  677. package/runtime/third_party/boringssl/ssl/dtls_method.cc +216 -0
  678. package/runtime/third_party/boringssl/ssl/dtls_record.cc +586 -0
  679. package/runtime/third_party/boringssl/ssl/encrypted_client_hello.cc +1110 -0
  680. package/runtime/third_party/boringssl/ssl/extensions.cc +5368 -0
  681. package/runtime/third_party/boringssl/ssl/handoff.cc +625 -0
  682. package/runtime/third_party/boringssl/ssl/handshake.cc +694 -0
  683. package/runtime/third_party/boringssl/ssl/handshake_client.cc +1958 -0
  684. package/runtime/third_party/boringssl/ssl/handshake_server.cc +1875 -0
  685. package/runtime/third_party/boringssl/ssl/internal.h +4506 -0
  686. package/runtime/third_party/boringssl/ssl/s3_both.cc +555 -0
  687. package/runtime/third_party/boringssl/ssl/s3_lib.cc +88 -0
  688. package/runtime/third_party/boringssl/ssl/s3_pkt.cc +396 -0
  689. package/runtime/third_party/boringssl/ssl/ssl_aead_ctx.cc +416 -0
  690. package/runtime/third_party/boringssl/ssl/ssl_asn1.cc +851 -0
  691. package/runtime/third_party/boringssl/ssl/ssl_buffer.cc +304 -0
  692. package/runtime/third_party/boringssl/ssl/ssl_cert.cc +723 -0
  693. package/runtime/third_party/boringssl/ssl/ssl_cipher.cc +1762 -0
  694. package/runtime/third_party/boringssl/ssl/ssl_credential.cc +913 -0
  695. package/runtime/third_party/boringssl/ssl/ssl_file.cc +375 -0
  696. package/runtime/third_party/boringssl/ssl/ssl_key_share.cc +445 -0
  697. package/runtime/third_party/boringssl/ssl/ssl_lib.cc +4132 -0
  698. package/runtime/third_party/boringssl/ssl/ssl_privkey.cc +973 -0
  699. package/runtime/third_party/boringssl/ssl/ssl_session.cc +1273 -0
  700. package/runtime/third_party/boringssl/ssl/ssl_stat.cc +162 -0
  701. package/runtime/third_party/boringssl/ssl/ssl_transcript.cc +224 -0
  702. package/runtime/third_party/boringssl/ssl/ssl_versions.cc +436 -0
  703. package/runtime/third_party/boringssl/ssl/ssl_x509.cc +1229 -0
  704. package/runtime/third_party/boringssl/ssl/t1_enc.cc +266 -0
  705. package/runtime/third_party/boringssl/ssl/tls13_both.cc +764 -0
  706. package/runtime/third_party/boringssl/ssl/tls13_client.cc +1325 -0
  707. package/runtime/third_party/boringssl/ssl/tls13_enc.cc +746 -0
  708. package/runtime/third_party/boringssl/ssl/tls13_server.cc +1623 -0
  709. package/runtime/third_party/boringssl/ssl/tls_method.cc +266 -0
  710. package/runtime/third_party/boringssl/ssl/tls_record.cc +524 -0
  711. package/runtime/third_party/boringssl/third_party/fiat/asm/fiat_curve25519_adx_mul.S +178 -0
  712. package/runtime/third_party/boringssl/third_party/fiat/asm/fiat_curve25519_adx_square.S +146 -0
  713. package/runtime/third_party/boringssl/third_party/fiat/asm/fiat_p256_adx_mul.S +177 -0
  714. package/runtime/third_party/boringssl/third_party/fiat/asm/fiat_p256_adx_sqr.S +166 -0
  715. package/runtime/third_party/boringssl/third_party/fiat/bedrock_unverified_bareminimum.c.inc +47 -0
  716. package/runtime/third_party/boringssl/third_party/fiat/bedrock_unverified_platform.c.inc +137 -0
  717. package/runtime/third_party/boringssl/third_party/fiat/curve25519_32.h +1571 -0
  718. package/runtime/third_party/boringssl/third_party/fiat/curve25519_64.h +978 -0
  719. package/runtime/third_party/boringssl/third_party/fiat/curve25519_64_adx.h +700 -0
  720. package/runtime/third_party/boringssl/third_party/fiat/curve25519_64_msvc.h +1281 -0
  721. package/runtime/third_party/boringssl/third_party/fiat/p256_32.h +4760 -0
  722. package/runtime/third_party/boringssl/third_party/fiat/p256_64.h +1984 -0
  723. package/runtime/third_party/boringssl/third_party/fiat/p256_64_msvc.h +1939 -0
  724. package/runtime/third_party/boringssl/third_party/fiat/p256_field.c.inc +26 -0
  725. package/runtime/third_party/boringssl/third_party/fiat/p256_field_32.br.c.inc +71 -0
  726. package/runtime/third_party/boringssl/third_party/fiat/p256_field_64.br.c.inc +84 -0
  727. package/runtime/third_party/boringssl/third_party/fiat/p256_point.br.c.inc +112 -0
  728. package/runtime/third_party/v8-ieee754/README.md +2 -1
  729. package/runtime/third_party/v8-ieee754/convert.py +4 -0
  730. package/runtime/third_party/v8-ieee754/ieee754.c +1 -1
  731. package/runtime/third_party/bearssl/LICENSE.txt +0 -21
  732. package/runtime/third_party/bearssl/README.txt +0 -136
  733. package/runtime/third_party/bearssl/VERSION +0 -1
  734. package/runtime/third_party/bearssl/inc/bearssl.h +0 -183
  735. package/runtime/third_party/bearssl/inc/bearssl_aead.h +0 -1059
  736. package/runtime/third_party/bearssl/inc/bearssl_block.h +0 -2618
  737. package/runtime/third_party/bearssl/inc/bearssl_ec.h +0 -967
  738. package/runtime/third_party/bearssl/inc/bearssl_hash.h +0 -1346
  739. package/runtime/third_party/bearssl/inc/bearssl_hmac.h +0 -241
  740. package/runtime/third_party/bearssl/inc/bearssl_kdf.h +0 -284
  741. package/runtime/third_party/bearssl/inc/bearssl_pem.h +0 -294
  742. package/runtime/third_party/bearssl/inc/bearssl_prf.h +0 -150
  743. package/runtime/third_party/bearssl/inc/bearssl_rand.h +0 -397
  744. package/runtime/third_party/bearssl/inc/bearssl_rsa.h +0 -1655
  745. package/runtime/third_party/bearssl/inc/bearssl_ssl.h +0 -4296
  746. package/runtime/third_party/bearssl/inc/bearssl_x509.h +0 -1474
  747. package/runtime/third_party/bearssl/src/aead/ccm.c +0 -346
  748. package/runtime/third_party/bearssl/src/aead/eax.c +0 -525
  749. package/runtime/third_party/bearssl/src/aead/gcm.c +0 -318
  750. package/runtime/third_party/bearssl/src/codec/ccopy.c +0 -44
  751. package/runtime/third_party/bearssl/src/codec/dec16be.c +0 -38
  752. package/runtime/third_party/bearssl/src/codec/dec16le.c +0 -38
  753. package/runtime/third_party/bearssl/src/codec/dec32be.c +0 -38
  754. package/runtime/third_party/bearssl/src/codec/dec32le.c +0 -38
  755. package/runtime/third_party/bearssl/src/codec/dec64be.c +0 -38
  756. package/runtime/third_party/bearssl/src/codec/dec64le.c +0 -38
  757. package/runtime/third_party/bearssl/src/codec/enc16be.c +0 -38
  758. package/runtime/third_party/bearssl/src/codec/enc16le.c +0 -38
  759. package/runtime/third_party/bearssl/src/codec/enc32be.c +0 -38
  760. package/runtime/third_party/bearssl/src/codec/enc32le.c +0 -38
  761. package/runtime/third_party/bearssl/src/codec/enc64be.c +0 -38
  762. package/runtime/third_party/bearssl/src/codec/enc64le.c +0 -38
  763. package/runtime/third_party/bearssl/src/codec/pemdec.c +0 -526
  764. package/runtime/third_party/bearssl/src/codec/pemdec.t0 +0 -314
  765. package/runtime/third_party/bearssl/src/codec/pemenc.c +0 -173
  766. package/runtime/third_party/bearssl/src/config.h +0 -247
  767. package/runtime/third_party/bearssl/src/ec/ec_all_m15.c +0 -121
  768. package/runtime/third_party/bearssl/src/ec/ec_all_m31.c +0 -171
  769. package/runtime/third_party/bearssl/src/ec/ec_c25519_i15.c +0 -398
  770. package/runtime/third_party/bearssl/src/ec/ec_c25519_i31.c +0 -390
  771. package/runtime/third_party/bearssl/src/ec/ec_c25519_m15.c +0 -1478
  772. package/runtime/third_party/bearssl/src/ec/ec_c25519_m31.c +0 -800
  773. package/runtime/third_party/bearssl/src/ec/ec_c25519_m62.c +0 -605
  774. package/runtime/third_party/bearssl/src/ec/ec_c25519_m64.c +0 -831
  775. package/runtime/third_party/bearssl/src/ec/ec_curve25519.c +0 -46
  776. package/runtime/third_party/bearssl/src/ec/ec_default.c +0 -36
  777. package/runtime/third_party/bearssl/src/ec/ec_keygen.c +0 -86
  778. package/runtime/third_party/bearssl/src/ec/ec_p256_m15.c +0 -2124
  779. package/runtime/third_party/bearssl/src/ec/ec_p256_m31.c +0 -1469
  780. package/runtime/third_party/bearssl/src/ec/ec_p256_m62.c +0 -1765
  781. package/runtime/third_party/bearssl/src/ec/ec_p256_m64.c +0 -1781
  782. package/runtime/third_party/bearssl/src/ec/ec_prime_i15.c +0 -824
  783. package/runtime/third_party/bearssl/src/ec/ec_prime_i31.c +0 -826
  784. package/runtime/third_party/bearssl/src/ec/ec_pubkey.c +0 -85
  785. package/runtime/third_party/bearssl/src/ec/ec_secp256r1.c +0 -51
  786. package/runtime/third_party/bearssl/src/ec/ec_secp384r1.c +0 -57
  787. package/runtime/third_party/bearssl/src/ec/ec_secp521r1.c +0 -64
  788. package/runtime/third_party/bearssl/src/ec/ecdsa_atr.c +0 -134
  789. package/runtime/third_party/bearssl/src/ec/ecdsa_default_sign_asn1.c +0 -36
  790. package/runtime/third_party/bearssl/src/ec/ecdsa_default_sign_raw.c +0 -36
  791. package/runtime/third_party/bearssl/src/ec/ecdsa_default_vrfy_asn1.c +0 -36
  792. package/runtime/third_party/bearssl/src/ec/ecdsa_default_vrfy_raw.c +0 -36
  793. package/runtime/third_party/bearssl/src/ec/ecdsa_i15_bits.c +0 -47
  794. package/runtime/third_party/bearssl/src/ec/ecdsa_i15_sign_asn1.c +0 -45
  795. package/runtime/third_party/bearssl/src/ec/ecdsa_i15_sign_raw.c +0 -174
  796. package/runtime/third_party/bearssl/src/ec/ecdsa_i15_vrfy_asn1.c +0 -48
  797. package/runtime/third_party/bearssl/src/ec/ecdsa_i15_vrfy_raw.c +0 -166
  798. package/runtime/third_party/bearssl/src/ec/ecdsa_i31_bits.c +0 -47
  799. package/runtime/third_party/bearssl/src/ec/ecdsa_i31_sign_asn1.c +0 -45
  800. package/runtime/third_party/bearssl/src/ec/ecdsa_i31_sign_raw.c +0 -173
  801. package/runtime/third_party/bearssl/src/ec/ecdsa_i31_vrfy_asn1.c +0 -48
  802. package/runtime/third_party/bearssl/src/ec/ecdsa_i31_vrfy_raw.c +0 -165
  803. package/runtime/third_party/bearssl/src/ec/ecdsa_rta.c +0 -121
  804. package/runtime/third_party/bearssl/src/hash/dig_oid.c +0 -84
  805. package/runtime/third_party/bearssl/src/hash/dig_size.c +0 -50
  806. package/runtime/third_party/bearssl/src/hash/ghash_ctmul.c +0 -345
  807. package/runtime/third_party/bearssl/src/hash/ghash_ctmul32.c +0 -251
  808. package/runtime/third_party/bearssl/src/hash/ghash_ctmul64.c +0 -154
  809. package/runtime/third_party/bearssl/src/hash/ghash_pclmul.c +0 -389
  810. package/runtime/third_party/bearssl/src/hash/ghash_pwr8.c +0 -411
  811. package/runtime/third_party/bearssl/src/hash/md5.c +0 -208
  812. package/runtime/third_party/bearssl/src/hash/md5sha1.c +0 -141
  813. package/runtime/third_party/bearssl/src/hash/mgf1.c +0 -56
  814. package/runtime/third_party/bearssl/src/hash/multihash.c +0 -166
  815. package/runtime/third_party/bearssl/src/hash/sha1.c +0 -191
  816. package/runtime/third_party/bearssl/src/hash/sha2big.c +0 -285
  817. package/runtime/third_party/bearssl/src/hash/sha2small.c +0 -341
  818. package/runtime/third_party/bearssl/src/inner.h +0 -2577
  819. package/runtime/third_party/bearssl/src/int/i15_add.c +0 -46
  820. package/runtime/third_party/bearssl/src/int/i15_bitlen.c +0 -44
  821. package/runtime/third_party/bearssl/src/int/i15_decmod.c +0 -124
  822. package/runtime/third_party/bearssl/src/int/i15_decode.c +0 -56
  823. package/runtime/third_party/bearssl/src/int/i15_decred.c +0 -100
  824. package/runtime/third_party/bearssl/src/int/i15_encode.c +0 -56
  825. package/runtime/third_party/bearssl/src/int/i15_fmont.c +0 -59
  826. package/runtime/third_party/bearssl/src/int/i15_iszero.c +0 -39
  827. package/runtime/third_party/bearssl/src/int/i15_moddiv.c +0 -465
  828. package/runtime/third_party/bearssl/src/int/i15_modpow.c +0 -50
  829. package/runtime/third_party/bearssl/src/int/i15_modpow2.c +0 -160
  830. package/runtime/third_party/bearssl/src/int/i15_montmul.c +0 -184
  831. package/runtime/third_party/bearssl/src/int/i15_mulacc.c +0 -61
  832. package/runtime/third_party/bearssl/src/int/i15_muladd.c +0 -173
  833. package/runtime/third_party/bearssl/src/int/i15_ninv15.c +0 -38
  834. package/runtime/third_party/bearssl/src/int/i15_reduce.c +0 -66
  835. package/runtime/third_party/bearssl/src/int/i15_rshift.c +0 -47
  836. package/runtime/third_party/bearssl/src/int/i15_sub.c +0 -46
  837. package/runtime/third_party/bearssl/src/int/i15_tmont.c +0 -36
  838. package/runtime/third_party/bearssl/src/int/i31_add.c +0 -46
  839. package/runtime/third_party/bearssl/src/int/i31_bitlen.c +0 -44
  840. package/runtime/third_party/bearssl/src/int/i31_decmod.c +0 -124
  841. package/runtime/third_party/bearssl/src/int/i31_decode.c +0 -57
  842. package/runtime/third_party/bearssl/src/int/i31_decred.c +0 -103
  843. package/runtime/third_party/bearssl/src/int/i31_encode.c +0 -79
  844. package/runtime/third_party/bearssl/src/int/i31_fmont.c +0 -60
  845. package/runtime/third_party/bearssl/src/int/i31_iszero.c +0 -39
  846. package/runtime/third_party/bearssl/src/int/i31_moddiv.c +0 -488
  847. package/runtime/third_party/bearssl/src/int/i31_modpow.c +0 -65
  848. package/runtime/third_party/bearssl/src/int/i31_modpow2.c +0 -160
  849. package/runtime/third_party/bearssl/src/int/i31_montmul.c +0 -127
  850. package/runtime/third_party/bearssl/src/int/i31_mulacc.c +0 -74
  851. package/runtime/third_party/bearssl/src/int/i31_muladd.c +0 -157
  852. package/runtime/third_party/bearssl/src/int/i31_ninv31.c +0 -39
  853. package/runtime/third_party/bearssl/src/int/i31_reduce.c +0 -66
  854. package/runtime/third_party/bearssl/src/int/i31_rshift.c +0 -47
  855. package/runtime/third_party/bearssl/src/int/i31_sub.c +0 -46
  856. package/runtime/third_party/bearssl/src/int/i31_tmont.c +0 -36
  857. package/runtime/third_party/bearssl/src/int/i32_add.c +0 -51
  858. package/runtime/third_party/bearssl/src/int/i32_bitlen.c +0 -44
  859. package/runtime/third_party/bearssl/src/int/i32_decmod.c +0 -77
  860. package/runtime/third_party/bearssl/src/int/i32_decode.c +0 -63
  861. package/runtime/third_party/bearssl/src/int/i32_decred.c +0 -107
  862. package/runtime/third_party/bearssl/src/int/i32_div32.c +0 -56
  863. package/runtime/third_party/bearssl/src/int/i32_encode.c +0 -72
  864. package/runtime/third_party/bearssl/src/int/i32_fmont.c +0 -60
  865. package/runtime/third_party/bearssl/src/int/i32_iszero.c +0 -39
  866. package/runtime/third_party/bearssl/src/int/i32_modpow.c +0 -65
  867. package/runtime/third_party/bearssl/src/int/i32_montmul.c +0 -69
  868. package/runtime/third_party/bearssl/src/int/i32_mulacc.c +0 -56
  869. package/runtime/third_party/bearssl/src/int/i32_muladd.c +0 -138
  870. package/runtime/third_party/bearssl/src/int/i32_ninv32.c +0 -39
  871. package/runtime/third_party/bearssl/src/int/i32_reduce.c +0 -66
  872. package/runtime/third_party/bearssl/src/int/i32_sub.c +0 -51
  873. package/runtime/third_party/bearssl/src/int/i32_tmont.c +0 -36
  874. package/runtime/third_party/bearssl/src/int/i62_modpow2.c +0 -493
  875. package/runtime/third_party/bearssl/src/kdf/hkdf.c +0 -107
  876. package/runtime/third_party/bearssl/src/kdf/shake.c +0 -590
  877. package/runtime/third_party/bearssl/src/mac/hmac.c +0 -122
  878. package/runtime/third_party/bearssl/src/mac/hmac_ct.c +0 -193
  879. package/runtime/third_party/bearssl/src/rand/aesctr_drbg.c +0 -206
  880. package/runtime/third_party/bearssl/src/rand/hmac_drbg.c +0 -157
  881. package/runtime/third_party/bearssl/src/rand/sysrng.c +0 -252
  882. package/runtime/third_party/bearssl/src/rsa/rsa_default_keygen.c +0 -38
  883. package/runtime/third_party/bearssl/src/rsa/rsa_default_modulus.c +0 -36
  884. package/runtime/third_party/bearssl/src/rsa/rsa_default_oaep_decrypt.c +0 -38
  885. package/runtime/third_party/bearssl/src/rsa/rsa_default_oaep_encrypt.c +0 -38
  886. package/runtime/third_party/bearssl/src/rsa/rsa_default_pkcs1_sign.c +0 -38
  887. package/runtime/third_party/bearssl/src/rsa/rsa_default_pkcs1_vrfy.c +0 -38
  888. package/runtime/third_party/bearssl/src/rsa/rsa_default_priv.c +0 -38
  889. package/runtime/third_party/bearssl/src/rsa/rsa_default_privexp.c +0 -36
  890. package/runtime/third_party/bearssl/src/rsa/rsa_default_pss_sign.c +0 -38
  891. package/runtime/third_party/bearssl/src/rsa/rsa_default_pss_vrfy.c +0 -38
  892. package/runtime/third_party/bearssl/src/rsa/rsa_default_pub.c +0 -38
  893. package/runtime/third_party/bearssl/src/rsa/rsa_default_pubexp.c +0 -36
  894. package/runtime/third_party/bearssl/src/rsa/rsa_i15_keygen.c +0 -583
  895. package/runtime/third_party/bearssl/src/rsa/rsa_i15_modulus.c +0 -99
  896. package/runtime/third_party/bearssl/src/rsa/rsa_i15_oaep_decrypt.c +0 -41
  897. package/runtime/third_party/bearssl/src/rsa/rsa_i15_oaep_encrypt.c +0 -44
  898. package/runtime/third_party/bearssl/src/rsa/rsa_i15_pkcs1_sign.c +0 -37
  899. package/runtime/third_party/bearssl/src/rsa/rsa_i15_pkcs1_vrfy.c +0 -43
  900. package/runtime/third_party/bearssl/src/rsa/rsa_i15_priv.c +0 -209
  901. package/runtime/third_party/bearssl/src/rsa/rsa_i15_privexp.c +0 -320
  902. package/runtime/third_party/bearssl/src/rsa/rsa_i15_pss_sign.c +0 -40
  903. package/runtime/third_party/bearssl/src/rsa/rsa_i15_pss_vrfy.c +0 -44
  904. package/runtime/third_party/bearssl/src/rsa/rsa_i15_pub.c +0 -113
  905. package/runtime/third_party/bearssl/src/rsa/rsa_i15_pubexp.c +0 -152
  906. package/runtime/third_party/bearssl/src/rsa/rsa_i31_keygen.c +0 -37
  907. package/runtime/third_party/bearssl/src/rsa/rsa_i31_keygen_inner.c +0 -608
  908. package/runtime/third_party/bearssl/src/rsa/rsa_i31_modulus.c +0 -99
  909. package/runtime/third_party/bearssl/src/rsa/rsa_i31_oaep_decrypt.c +0 -41
  910. package/runtime/third_party/bearssl/src/rsa/rsa_i31_oaep_encrypt.c +0 -44
  911. package/runtime/third_party/bearssl/src/rsa/rsa_i31_pkcs1_sign.c +0 -37
  912. package/runtime/third_party/bearssl/src/rsa/rsa_i31_pkcs1_vrfy.c +0 -43
  913. package/runtime/third_party/bearssl/src/rsa/rsa_i31_priv.c +0 -203
  914. package/runtime/third_party/bearssl/src/rsa/rsa_i31_privexp.c +0 -318
  915. package/runtime/third_party/bearssl/src/rsa/rsa_i31_pss_sign.c +0 -40
  916. package/runtime/third_party/bearssl/src/rsa/rsa_i31_pss_vrfy.c +0 -44
  917. package/runtime/third_party/bearssl/src/rsa/rsa_i31_pub.c +0 -106
  918. package/runtime/third_party/bearssl/src/rsa/rsa_i31_pubexp.c +0 -152
  919. package/runtime/third_party/bearssl/src/rsa/rsa_i32_oaep_decrypt.c +0 -41
  920. package/runtime/third_party/bearssl/src/rsa/rsa_i32_oaep_encrypt.c +0 -44
  921. package/runtime/third_party/bearssl/src/rsa/rsa_i32_pkcs1_sign.c +0 -37
  922. package/runtime/third_party/bearssl/src/rsa/rsa_i32_pkcs1_vrfy.c +0 -43
  923. package/runtime/third_party/bearssl/src/rsa/rsa_i32_priv.c +0 -160
  924. package/runtime/third_party/bearssl/src/rsa/rsa_i32_pss_sign.c +0 -40
  925. package/runtime/third_party/bearssl/src/rsa/rsa_i32_pss_vrfy.c +0 -44
  926. package/runtime/third_party/bearssl/src/rsa/rsa_i32_pub.c +0 -77
  927. package/runtime/third_party/bearssl/src/rsa/rsa_i62_keygen.c +0 -57
  928. package/runtime/third_party/bearssl/src/rsa/rsa_i62_oaep_decrypt.c +0 -61
  929. package/runtime/third_party/bearssl/src/rsa/rsa_i62_oaep_encrypt.c +0 -64
  930. package/runtime/third_party/bearssl/src/rsa/rsa_i62_pkcs1_sign.c +0 -57
  931. package/runtime/third_party/bearssl/src/rsa/rsa_i62_pkcs1_vrfy.c +0 -63
  932. package/runtime/third_party/bearssl/src/rsa/rsa_i62_priv.c +0 -223
  933. package/runtime/third_party/bearssl/src/rsa/rsa_i62_pss_sign.c +0 -60
  934. package/runtime/third_party/bearssl/src/rsa/rsa_i62_pss_vrfy.c +0 -64
  935. package/runtime/third_party/bearssl/src/rsa/rsa_i62_pub.c +0 -125
  936. package/runtime/third_party/bearssl/src/rsa/rsa_oaep_pad.c +0 -112
  937. package/runtime/third_party/bearssl/src/rsa/rsa_oaep_unpad.c +0 -145
  938. package/runtime/third_party/bearssl/src/rsa/rsa_pkcs1_sig_pad.c +0 -100
  939. package/runtime/third_party/bearssl/src/rsa/rsa_pkcs1_sig_unpad.c +0 -121
  940. package/runtime/third_party/bearssl/src/rsa/rsa_pss_sig_pad.c +0 -106
  941. package/runtime/third_party/bearssl/src/rsa/rsa_pss_sig_unpad.c +0 -121
  942. package/runtime/third_party/bearssl/src/rsa/rsa_ssl_decrypt.c +0 -52
  943. package/runtime/third_party/bearssl/src/settings.c +0 -306
  944. package/runtime/third_party/bearssl/src/symcipher/aes_big_cbcdec.c +0 -69
  945. package/runtime/third_party/bearssl/src/symcipher/aes_big_cbcenc.c +0 -67
  946. package/runtime/third_party/bearssl/src/symcipher/aes_big_ctr.c +0 -84
  947. package/runtime/third_party/bearssl/src/symcipher/aes_big_ctrcbc.c +0 -142
  948. package/runtime/third_party/bearssl/src/symcipher/aes_big_dec.c +0 -254
  949. package/runtime/third_party/bearssl/src/symcipher/aes_big_enc.c +0 -157
  950. package/runtime/third_party/bearssl/src/symcipher/aes_common.c +0 -112
  951. package/runtime/third_party/bearssl/src/symcipher/aes_ct.c +0 -328
  952. package/runtime/third_party/bearssl/src/symcipher/aes_ct64.c +0 -398
  953. package/runtime/third_party/bearssl/src/symcipher/aes_ct64_cbcdec.c +0 -104
  954. package/runtime/third_party/bearssl/src/symcipher/aes_ct64_cbcenc.c +0 -81
  955. package/runtime/third_party/bearssl/src/symcipher/aes_ct64_ctr.c +0 -114
  956. package/runtime/third_party/bearssl/src/symcipher/aes_ct64_ctrcbc.c +0 -433
  957. package/runtime/third_party/bearssl/src/symcipher/aes_ct64_dec.c +0 -159
  958. package/runtime/third_party/bearssl/src/symcipher/aes_ct64_enc.c +0 -115
  959. package/runtime/third_party/bearssl/src/symcipher/aes_ct_cbcdec.c +0 -111
  960. package/runtime/third_party/bearssl/src/symcipher/aes_ct_cbcenc.c +0 -91
  961. package/runtime/third_party/bearssl/src/symcipher/aes_ct_ctr.c +0 -116
  962. package/runtime/third_party/bearssl/src/symcipher/aes_ct_ctrcbc.c +0 -422
  963. package/runtime/third_party/bearssl/src/symcipher/aes_ct_dec.c +0 -170
  964. package/runtime/third_party/bearssl/src/symcipher/aes_ct_enc.c +0 -112
  965. package/runtime/third_party/bearssl/src/symcipher/aes_pwr8.c +0 -445
  966. package/runtime/third_party/bearssl/src/symcipher/aes_pwr8_cbcdec.c +0 -670
  967. package/runtime/third_party/bearssl/src/symcipher/aes_pwr8_cbcenc.c +0 -417
  968. package/runtime/third_party/bearssl/src/symcipher/aes_pwr8_ctr.c +0 -717
  969. package/runtime/third_party/bearssl/src/symcipher/aes_pwr8_ctrcbc.c +0 -946
  970. package/runtime/third_party/bearssl/src/symcipher/aes_small_cbcdec.c +0 -69
  971. package/runtime/third_party/bearssl/src/symcipher/aes_small_cbcenc.c +0 -67
  972. package/runtime/third_party/bearssl/src/symcipher/aes_small_ctr.c +0 -84
  973. package/runtime/third_party/bearssl/src/symcipher/aes_small_ctrcbc.c +0 -142
  974. package/runtime/third_party/bearssl/src/symcipher/aes_small_dec.c +0 -176
  975. package/runtime/third_party/bearssl/src/symcipher/aes_small_enc.c +0 -129
  976. package/runtime/third_party/bearssl/src/symcipher/aes_x86ni.c +0 -240
  977. package/runtime/third_party/bearssl/src/symcipher/aes_x86ni_cbcdec.c +0 -223
  978. package/runtime/third_party/bearssl/src/symcipher/aes_x86ni_cbcenc.c +0 -122
  979. package/runtime/third_party/bearssl/src/symcipher/aes_x86ni_ctr.c +0 -211
  980. package/runtime/third_party/bearssl/src/symcipher/aes_x86ni_ctrcbc.c +0 -596
  981. package/runtime/third_party/bearssl/src/symcipher/chacha20_ct.c +0 -106
  982. package/runtime/third_party/bearssl/src/symcipher/chacha20_sse2.c +0 -237
  983. package/runtime/third_party/bearssl/src/symcipher/des_ct.c +0 -411
  984. package/runtime/third_party/bearssl/src/symcipher/des_ct_cbcdec.c +0 -87
  985. package/runtime/third_party/bearssl/src/symcipher/des_ct_cbcenc.c +0 -69
  986. package/runtime/third_party/bearssl/src/symcipher/des_support.c +0 -166
  987. package/runtime/third_party/bearssl/src/symcipher/des_tab.c +0 -310
  988. package/runtime/third_party/bearssl/src/symcipher/des_tab_cbcdec.c +0 -85
  989. package/runtime/third_party/bearssl/src/symcipher/des_tab_cbcenc.c +0 -67
  990. package/runtime/third_party/bearssl/src/symcipher/poly1305_ctmul.c +0 -260
  991. package/runtime/third_party/bearssl/src/symcipher/poly1305_ctmul32.c +0 -297
  992. package/runtime/third_party/bearssl/src/symcipher/poly1305_ctmulq.c +0 -475
  993. package/runtime/third_party/bearssl/src/symcipher/poly1305_i15.c +0 -221
  994. package/runtime/third_party/bearssl/src/x509/asn1.t0 +0 -757
  995. package/runtime/third_party/bearssl/src/x509/asn1enc.c +0 -93
  996. package/runtime/third_party/bearssl/src/x509/encode_ec_pk8der.c +0 -110
  997. package/runtime/third_party/bearssl/src/x509/encode_ec_rawder.c +0 -161
  998. package/runtime/third_party/bearssl/src/x509/encode_rsa_pk8der.c +0 -97
  999. package/runtime/third_party/bearssl/src/x509/encode_rsa_rawder.c +0 -96
  1000. package/runtime/third_party/bearssl/src/x509/skey_decoder.c +0 -653
  1001. package/runtime/third_party/bearssl/src/x509/skey_decoder.t0 +0 -376
  1002. package/runtime/third_party/bearssl/src/x509/x509_decoder.c +0 -776
  1003. package/runtime/third_party/bearssl/src/x509/x509_decoder.t0 +0 -324
  1004. package/runtime/third_party/bearssl/src/x509/x509_knownkey.c +0 -105
  1005. package/runtime/third_party/bearssl/src/x509/x509_minimal.c +0 -1722
  1006. package/runtime/third_party/bearssl/src/x509/x509_minimal.t0 +0 -1526
  1007. package/runtime/third_party/bearssl/src/x509/x509_minimal_full.c +0 -59
@@ -0,0 +1,1645 @@
1
+ // Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // https://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+
15
+ #ifndef OPENSSL_HEADER_EVP_H
16
+ #define OPENSSL_HEADER_EVP_H
17
+
18
+ #include <openssl/base.h> // IWYU pragma: export
19
+
20
+ #include <openssl/evp_errors.h> // IWYU pragma: export
21
+
22
+ // OpenSSL included digest and cipher functions in this header so we include
23
+ // them for users that still expect that.
24
+ #include <openssl/aead.h>
25
+ #include <openssl/base64.h>
26
+ #include <openssl/cipher.h>
27
+ #include <openssl/digest.h>
28
+ #include <openssl/nid.h>
29
+
30
+ #if defined(__cplusplus)
31
+ extern "C" {
32
+ #endif
33
+
34
+
35
+ // EVP abstracts over public/private key algorithms.
36
+
37
+
38
+ // Public/private key objects.
39
+ //
40
+ // An `EVP_PKEY` object represents a public or private key. A given object may
41
+ // be used concurrently on multiple threads by non-mutating functions, provided
42
+ // no other thread is concurrently calling a mutating function. Unless otherwise
43
+ // documented, functions which take a `const` pointer are non-mutating and
44
+ // functions which take a non-`const` pointer are mutating.
45
+
46
+ // EVP_PKEY_new creates a new, empty public-key object and returns it or NULL
47
+ // on allocation failure.
48
+ OPENSSL_EXPORT EVP_PKEY *EVP_PKEY_new(void);
49
+
50
+ // EVP_PKEY_free decrements the reference count of `pkey` and frees it if the
51
+ // reference count drops to zero.
52
+ OPENSSL_EXPORT void EVP_PKEY_free(EVP_PKEY *pkey);
53
+
54
+ // EVP_PKEY_up_ref increments the reference count of `pkey` and returns one. It
55
+ // does not mutate `pkey` for thread-safety purposes and may be used
56
+ // concurrently.
57
+ OPENSSL_EXPORT int EVP_PKEY_up_ref(EVP_PKEY *pkey);
58
+
59
+ // EVP_PKEY_dup_ref increments the reference count of `pkey`, if non-null, and
60
+ // returns `pkey`. The caller must call `EVP_PKEY_free` on the result to
61
+ // release the reference.
62
+ //
63
+ // WARNING: Although the result is non-const for use with `EVP_PKEY_free`, it is
64
+ // still shared with other parts of the application that share the same object.
65
+ // Avoid mutating shared `EVP_PKEY`s.
66
+ OPENSSL_EXPORT EVP_PKEY *EVP_PKEY_dup_ref(const EVP_PKEY *pkey);
67
+
68
+ // EVP_PKEY_is_opaque returns one if `pkey` is opaque. Opaque keys are backed by
69
+ // custom implementations which do not expose key material and parameters. It is
70
+ // an error to attempt to duplicate, export, or compare an opaque key.
71
+ OPENSSL_EXPORT int EVP_PKEY_is_opaque(const EVP_PKEY *pkey);
72
+
73
+ // EVP_PKEY_eq compares `a` and `b` and returns one if their public keys are
74
+ // equal and zero otherwise.
75
+ OPENSSL_EXPORT int EVP_PKEY_eq(const EVP_PKEY *a, const EVP_PKEY *b);
76
+
77
+ // EVP_PKEY_copy_parameters sets the parameters of `to` to equal the parameters
78
+ // of `from`. It returns one on success and zero on error.
79
+ OPENSSL_EXPORT int EVP_PKEY_copy_parameters(EVP_PKEY *to, const EVP_PKEY *from);
80
+
81
+ // EVP_PKEY_missing_parameters returns one if `pkey` is missing needed
82
+ // parameters or zero if not, or if the algorithm doesn't take parameters.
83
+ OPENSSL_EXPORT int EVP_PKEY_missing_parameters(const EVP_PKEY *pkey);
84
+
85
+ // EVP_PKEY_parameters_eq compares the parameters of `a` and `b`. It returns one
86
+ // if they match and zero otherwise. In algorithms that do not use parameters,
87
+ // this function returns one; null parameters are vacuously equal.
88
+ OPENSSL_EXPORT int EVP_PKEY_parameters_eq(const EVP_PKEY *a, const EVP_PKEY *b);
89
+
90
+ // EVP_PKEY_size returns the maximum size, in bytes, of a signature signed by
91
+ // `pkey`. For an RSA key, this returns the number of bytes needed to represent
92
+ // the modulus. For an EC key, this returns the maximum size of a DER-encoded
93
+ // ECDSA signature.
94
+ OPENSSL_EXPORT int EVP_PKEY_size(const EVP_PKEY *pkey);
95
+
96
+ // EVP_PKEY_bits returns the "size", in bits, of `pkey`. For an RSA key, this
97
+ // returns the bit length of the modulus. For an EC key, this returns the bit
98
+ // length of the group order.
99
+ OPENSSL_EXPORT int EVP_PKEY_bits(const EVP_PKEY *pkey);
100
+
101
+ // EVP_PKEY_has_public returns one if `pkey` has a public key, or zero
102
+ // otherwise.
103
+ OPENSSL_EXPORT int EVP_PKEY_has_public(const EVP_PKEY *pkey);
104
+
105
+ // EVP_PKEY_has_private returns one if `pkey` has a private key, or zero
106
+ // otherwise.
107
+ OPENSSL_EXPORT int EVP_PKEY_has_private(const EVP_PKEY *pkey);
108
+
109
+ // EVP_PKEY_copy_public returns a newly-allocated `EVP_PKEY` that contains only
110
+ // the public key of `pkey`, or NULL on error. Parameters, if relevant for the
111
+ // key type, are also copied.
112
+ OPENSSL_EXPORT EVP_PKEY *EVP_PKEY_copy_public(const EVP_PKEY *pkey);
113
+
114
+ // The following constants are returned by `EVP_PKEY_id` and specify the type of
115
+ // key.
116
+ #define EVP_PKEY_NONE NID_undef
117
+ #define EVP_PKEY_RSA NID_rsaEncryption
118
+ #define EVP_PKEY_RSA_PSS NID_rsassaPss
119
+ #define EVP_PKEY_DSA NID_dsa
120
+ #define EVP_PKEY_EC NID_X9_62_id_ecPublicKey
121
+ #define EVP_PKEY_ED25519 NID_ED25519
122
+ #define EVP_PKEY_X25519 NID_X25519
123
+ #define EVP_PKEY_HKDF NID_hkdf
124
+ #define EVP_PKEY_DH NID_dhKeyAgreement
125
+ #define EVP_PKEY_ML_DSA_44 NID_ML_DSA_44
126
+ #define EVP_PKEY_ML_DSA_65 NID_ML_DSA_65
127
+ #define EVP_PKEY_ML_DSA_87 NID_ML_DSA_87
128
+ #define EVP_PKEY_ML_KEM_768 NID_ML_KEM_768
129
+ #define EVP_PKEY_ML_KEM_1024 NID_ML_KEM_1024
130
+ #define EVP_PKEY_XWING NID_X_Wing
131
+
132
+ // EVP_PKEY_id returns the type of `pkey`, which is one of the `EVP_PKEY_*`
133
+ // values above. These type values generally correspond to the algorithm OID,
134
+ // but not the parameters, of a SubjectPublicKeyInfo (RFC 5280) or
135
+ // PrivateKeyInfo (RFC 5208) AlgorithmIdentifier. Algorithm parameters can be
136
+ // inspected with algorithm-specific accessors, e.g.
137
+ // `EVP_PKEY_get_ec_curve_nid`.
138
+ OPENSSL_EXPORT int EVP_PKEY_id(const EVP_PKEY *pkey);
139
+
140
+
141
+ // Algorithms.
142
+ //
143
+ // An `EVP_PKEY` may carry a key from one of several algorithms, represented by
144
+ // `EVP_PKEY_ALG`. `EVP_PKEY_ALG`s are used by functions that construct
145
+ // `EVP_PKEY`s, such as parsing, so that callers can specify the algorithm(s) to
146
+ // use.
147
+ //
148
+ // Each `EVP_PKEY_ALG` generally corresponds to the AlgorithmIdentifier of a
149
+ // SubjectPublicKeyInfo (RFC 5280) or PrivateKeyInfo (RFC 5208), but some may
150
+ // support multiple sets of AlgorithmIdentifier parameters, while others may be
151
+ // specific to one parameter.
152
+
153
+ // EVP_pkey_rsa implements RSA keys (RFC 8017), encoded as rsaEncryption (RFC
154
+ // 3279, Section 2.3.1). The rsaEncryption encoding is confusingly named: these
155
+ // keys are used for all RSA operations, including signing. The `EVP_PKEY_id`
156
+ // value is `EVP_PKEY_RSA`.
157
+ //
158
+ // WARNING: This `EVP_PKEY_ALG` accepts all RSA key sizes supported by
159
+ // BoringSSL. When parsing RSA keys, callers should check the size is within
160
+ // their desired bounds with `EVP_PKEY_bits`. RSA public key operations scale
161
+ // quadratically and RSA private key operations scale cubicly, so key sizes may
162
+ // be a DoS vector.
163
+ OPENSSL_EXPORT const EVP_PKEY_ALG *EVP_pkey_rsa(void);
164
+
165
+ // EVP_pkey_ec_* implement EC keys, encoded as id-ecPublicKey (RFC 5480,
166
+ // Section 2.1.1). The id-ecPublicKey encoding is confusingly named: it is also
167
+ // used for private keys (RFC 5915). The `EVP_PKEY_id` value is `EVP_PKEY_EC`.
168
+ //
169
+ // Each function only supports the specified curve, but curves are not reflected
170
+ // in `EVP_PKEY_id`. The curve can be inspected with
171
+ // `EVP_PKEY_get_ec_curve_nid`.
172
+ OPENSSL_EXPORT const EVP_PKEY_ALG *EVP_pkey_ec_p224(void);
173
+ OPENSSL_EXPORT const EVP_PKEY_ALG *EVP_pkey_ec_p256(void);
174
+ OPENSSL_EXPORT const EVP_PKEY_ALG *EVP_pkey_ec_p384(void);
175
+ OPENSSL_EXPORT const EVP_PKEY_ALG *EVP_pkey_ec_p521(void);
176
+
177
+ // EVP_pkey_x25519 implements X25519 keys (RFC 7748), encoded as in RFC 8410.
178
+ // The `EVP_PKEY_id` value is `EVP_PKEY_X25519`.
179
+ OPENSSL_EXPORT const EVP_PKEY_ALG *EVP_pkey_x25519(void);
180
+
181
+ // EVP_pkey_ed25519 implements Ed25519 keys (RFC 8032), encoded as in RFC 8410.
182
+ // The `EVP_PKEY_id` value is `EVP_PKEY_ED25519`.
183
+ OPENSSL_EXPORT const EVP_PKEY_ALG *EVP_pkey_ed25519(void);
184
+
185
+ // EVP_pkey_ml_dsa_* implement ML-DSA keys, encoded as in RFC 9881. The
186
+ // `EVP_PKEY_id` values are `EVP_PKEY_ML_DSA_*`. In the private key
187
+ // representation, only the "seed" form is serialized or parsed.
188
+ //
189
+ // To configure OpenSSL to output the standard "seed" form, configure the
190
+ // "ml-dsa.output_formats" provider parameter so that "seed-only" is first. This
191
+ // can be done programmatically with OpenSSL's
192
+ // `OSSL_PROVIDER_add_conf_parameter` function, or by passing "-provparam" to
193
+ // the command-line tool.
194
+ //
195
+ // In OpenSSL 4.0, the defaults can also be fixed on a per-encoder basis by
196
+ // setting the "output_formats" parameter to "seed-only" with
197
+ // `OSSL_ENCODER_CTX_set_params`.
198
+ OPENSSL_EXPORT const EVP_PKEY_ALG *EVP_pkey_ml_dsa_44(void);
199
+ OPENSSL_EXPORT const EVP_PKEY_ALG *EVP_pkey_ml_dsa_65(void);
200
+ OPENSSL_EXPORT const EVP_PKEY_ALG *EVP_pkey_ml_dsa_87(void);
201
+
202
+ // EVP_pkey_ml_kem_* implement ML-KEM keys, encoded as in RFC 9935. The
203
+ // `EVP_PKEY_id` values are `EVP_PKEY_ML_KEM_*`. In the private key
204
+ // representation, only the "seed" form is serialized or parsed.
205
+ //
206
+ // To configure OpenSSL to output the standard "seed" form, configure the
207
+ // "ml-kem.output_formats" provider parameter so that "seed-only" is first. This
208
+ // can be done programmatically with OpenSSL's
209
+ // `OSSL_PROVIDER_add_conf_parameter` function, or by passing "-provparam" to
210
+ // the command-line tool.
211
+ //
212
+ // In OpenSSL 4.0, the defaults can also be fixed on a per-encoder basis by
213
+ // setting the "output_formats" parameter to "seed-only" with
214
+ // `OSSL_ENCODER_CTX_set_params`.
215
+ OPENSSL_EXPORT const EVP_PKEY_ALG *EVP_pkey_ml_kem_768(void);
216
+ OPENSSL_EXPORT const EVP_PKEY_ALG *EVP_pkey_ml_kem_1024(void);
217
+
218
+ // EVP_pkey_xwing implements the hybrid key encapsulation mechanism (KEM) known
219
+ // as X-Wing or MLKEM768-X25519, defined in
220
+ // draft-irtf-cfrg-concrete-hybrid-kems. Its private key representation is the
221
+ // "seed" form. It does not have public and private key encodings for X.509.
222
+ OPENSSL_EXPORT const EVP_PKEY_ALG *EVP_pkey_xwing(void);
223
+
224
+ // EVP_pkey_dsa implements DSA keys, encoded as in RFC 3279, Section 2.3.2. The
225
+ // `EVP_PKEY_id` value is `EVP_PKEY_DSA`. This `EVP_PKEY_ALG` accepts all DSA
226
+ // parameters supported by BoringSSL.
227
+ //
228
+ // Keys of this type are not usable with any operations, though the underlying
229
+ // `DSA` object can be extracted with `EVP_PKEY_get0_DSA`. This key type is
230
+ // deprecated and only implemented for compatibility with legacy applications.
231
+ //
232
+ // TODO(crbug.com/42290364): We didn't wire up `EVP_PKEY_sign` and
233
+ // `EVP_PKEY_verify` just so it was auditable which callers used DSA. Once DSA
234
+ // is removed from the default SPKI and PKCS#8 parser and DSA users explicitly
235
+ // request `EVP_pkey_dsa`, we could change that.
236
+ OPENSSL_EXPORT const EVP_PKEY_ALG *EVP_pkey_dsa(void);
237
+
238
+ // EVP_pkey_rsa_pss_* implements RSASSA-PSS keys, encoded as id-RSASSA-PSS
239
+ // (RFC 4055, Section 3.1). The `EVP_PKEY_id` value is `EVP_PKEY_RSA_PSS`. Each
240
+ // `EVP_PKEY_ALG` only accepts keys whose parameters specify:
241
+ //
242
+ // - A hashAlgorithm of the specified hash
243
+ // - A maskGenAlgorithm of MGF1 with the specified hash
244
+ // - A minimum saltLength of the specified hash's digest length
245
+ // - A trailerField of one (must be omitted in the encoding)
246
+ //
247
+ // Keys of this type will only be usable with RSASSA-PSS with matching signature
248
+ // parameters.
249
+ //
250
+ // This algorithm type is not recommended. The id-RSASSA-PSS key type is not
251
+ // widely implemented. Using it negates any compatibility benefits of using RSA.
252
+ // More modern algorithms like ECDSA are more performant and more compatible
253
+ // than id-RSASSA-PSS keys. This key type also adds significant complexity to a
254
+ // system. It has a wide range of possible parameter sets, so any uses must
255
+ // ensure all components not only support id-RSASSA-PSS, but also the specific
256
+ // parameters chosen.
257
+ //
258
+ // Note the id-RSASSA-PSS key type is distinct from the RSASSA-PSS signature
259
+ // algorithm. The widely implemented id-rsaEncryption key type (`EVP_pkey_rsa`
260
+ // and `EVP_PKEY_RSA`) also supports RSASSA-PSS signatures.
261
+ //
262
+ // WARNING: Any `EVP_PKEY`s produced by this algorithm will return a non-NULL
263
+ // `RSA` object through `EVP_PKEY_get1_RSA` and `EVP_PKEY_get0_RSA`. This is
264
+ // dangerous as existing code may assume a non-NULL return implies the more
265
+ // common id-rsaEncryption key. Additionally, the operations on the underlying
266
+ // `RSA` object will not capture the RSA-PSS constraints, so callers risk
267
+ // misusing the key by calling these functions. Callers using this algorithm
268
+ // must use `EVP_PKEY_id` to distinguish `EVP_PKEY_RSA` and `EVP_PKEY_RSA_PSS`.
269
+ //
270
+ // WARNING: BoringSSL does not currently implement `RSA_get0_pss_params` with
271
+ // these keys. Callers that require this functionality should contact the
272
+ // BoringSSL team.
273
+ OPENSSL_EXPORT const EVP_PKEY_ALG *EVP_pkey_rsa_pss_sha256(void);
274
+ OPENSSL_EXPORT const EVP_PKEY_ALG *EVP_pkey_rsa_pss_sha384(void);
275
+ OPENSSL_EXPORT const EVP_PKEY_ALG *EVP_pkey_rsa_pss_sha512(void);
276
+
277
+
278
+ // Getting and setting concrete key types.
279
+ //
280
+ // The following functions get and set the underlying key representation in an
281
+ // `EVP_PKEY` object. The `set1` functions take an additional reference to the
282
+ // underlying key and return one on success or zero if `key` is NULL. The
283
+ // `assign` functions adopt the caller's reference and return one on success or
284
+ // zero if `key` is NULL. The `get1` functions return a fresh reference to the
285
+ // underlying object or NULL if `pkey` is not of the correct type. The `get0`
286
+ // functions behave the same but return a non-owning pointer.
287
+ //
288
+ // The `get0` and `get1` functions take `const` pointers and are thus
289
+ // non-mutating for thread-safety purposes, but mutating functions on the
290
+ // returned lower-level objects are considered to also mutate the `EVP_PKEY` and
291
+ // may not be called concurrently with other operations on the `EVP_PKEY`.
292
+ //
293
+ // WARNING: Matching OpenSSL, the RSA functions behave non-uniformly.
294
+ // `EVP_PKEY_set1_RSA` and `EVP_PKEY_assign_RSA` construct an `EVP_PKEY_RSA`
295
+ // key, while the `EVP_PKEY_get0_RSA` and `EVP_PKEY_get1_RSA` will return
296
+ // non-NULL for both `EVP_PKEY_RSA` and `EVP_PKEY_RSA_PSS`.
297
+ //
298
+ // This means callers risk misusing a key if they assume a non-NULL return from
299
+ // `EVP_PKEY_get0_RSA` or `EVP_PKEY_get1_RSA` implies `EVP_PKEY_RSA`. Prefer
300
+ // `EVP_PKEY_id` to check the type of a key. To reduce this risk, BoringSSL does
301
+ // not make `EVP_PKEY_RSA_PSS` available by default, only when callers opt in
302
+ // via `EVP_pkey_rsa_pss_sha256`. This differs from upstream OpenSSL, where
303
+ // callers are exposed to `EVP_PKEY_RSA_PSS` by default.
304
+
305
+ OPENSSL_EXPORT int EVP_PKEY_set1_RSA(EVP_PKEY *pkey, RSA *key);
306
+ OPENSSL_EXPORT int EVP_PKEY_assign_RSA(EVP_PKEY *pkey, RSA *key);
307
+ OPENSSL_EXPORT RSA *EVP_PKEY_get0_RSA(const EVP_PKEY *pkey);
308
+ OPENSSL_EXPORT RSA *EVP_PKEY_get1_RSA(const EVP_PKEY *pkey);
309
+
310
+ OPENSSL_EXPORT int EVP_PKEY_set1_DSA(EVP_PKEY *pkey, DSA *key);
311
+ OPENSSL_EXPORT int EVP_PKEY_assign_DSA(EVP_PKEY *pkey, DSA *key);
312
+ OPENSSL_EXPORT DSA *EVP_PKEY_get0_DSA(const EVP_PKEY *pkey);
313
+ OPENSSL_EXPORT DSA *EVP_PKEY_get1_DSA(const EVP_PKEY *pkey);
314
+
315
+ OPENSSL_EXPORT int EVP_PKEY_set1_EC_KEY(EVP_PKEY *pkey, EC_KEY *key);
316
+ OPENSSL_EXPORT int EVP_PKEY_assign_EC_KEY(EVP_PKEY *pkey, EC_KEY *key);
317
+ OPENSSL_EXPORT EC_KEY *EVP_PKEY_get0_EC_KEY(const EVP_PKEY *pkey);
318
+ OPENSSL_EXPORT EC_KEY *EVP_PKEY_get1_EC_KEY(const EVP_PKEY *pkey);
319
+
320
+ OPENSSL_EXPORT int EVP_PKEY_set1_DH(EVP_PKEY *pkey, DH *key);
321
+ OPENSSL_EXPORT int EVP_PKEY_assign_DH(EVP_PKEY *pkey, DH *key);
322
+ OPENSSL_EXPORT DH *EVP_PKEY_get0_DH(const EVP_PKEY *pkey);
323
+ OPENSSL_EXPORT DH *EVP_PKEY_get1_DH(const EVP_PKEY *pkey);
324
+
325
+
326
+ // ASN.1 functions
327
+
328
+ // EVP_PKEY_from_subject_public_key_info decodes a DER-encoded
329
+ // SubjectPublicKeyInfo structure (RFC 5280) from `in`. It returns a
330
+ // newly-allocated `EVP_PKEY` or NULL on error. Only the `num_algs` algorithms
331
+ // in `algs` will be considered when parsing.
332
+ OPENSSL_EXPORT EVP_PKEY *EVP_PKEY_from_subject_public_key_info(
333
+ const uint8_t *in, size_t len, const EVP_PKEY_ALG *const *algs,
334
+ size_t num_algs);
335
+
336
+ // EVP_parse_public_key decodes a DER-encoded SubjectPublicKeyInfo structure
337
+ // (RFC 5280) from `cbs` and advances `cbs`. It returns a newly-allocated
338
+ // `EVP_PKEY` or NULL on error.
339
+ //
340
+ // Prefer `EVP_PKEY_from_subject_public_key_info` instead. This function has
341
+ // several pitfalls:
342
+ //
343
+ // Callers are expected to handle trailing data returned from `cbs`, making more
344
+ // common cases error-prone.
345
+ //
346
+ // There is also no way to pass in supported algorithms. This function instead
347
+ // supports some default set of algorithms. Future versions of BoringSSL may add
348
+ // to this list, based on the needs of the other callers. Conversely, some
349
+ // algorithms may be intentionally omitted, if they cause too much risk to
350
+ // existing callers.
351
+ //
352
+ // This means callers must check the type of the parsed public key to ensure it
353
+ // is suitable and validate other desired key properties such as RSA modulus
354
+ // size or EC curve.
355
+ OPENSSL_EXPORT EVP_PKEY *EVP_parse_public_key(CBS *cbs);
356
+
357
+ // EVP_marshal_public_key marshals `key` as a DER-encoded SubjectPublicKeyInfo
358
+ // structure (RFC 5280) and appends the result to `cbb`. It returns one on
359
+ // success and zero on error.
360
+ OPENSSL_EXPORT int EVP_marshal_public_key(CBB *cbb, const EVP_PKEY *key);
361
+
362
+ // EVP_PKEY_from_private_key_info decodes a DER-encoded PrivateKeyInfo structure
363
+ // (RFC 5208) from `in`. It returns a newly-allocated `EVP_PKEY` or NULL on
364
+ // error. Only the `num_algs` algorithms in `algs` will be considered when
365
+ // parsing.
366
+ //
367
+ // A PrivateKeyInfo ends with an optional set of attributes. These are silently
368
+ // ignored.
369
+ OPENSSL_EXPORT EVP_PKEY *EVP_PKEY_from_private_key_info(
370
+ const uint8_t *in, size_t len, const EVP_PKEY_ALG *const *algs,
371
+ size_t num_algs);
372
+
373
+ // EVP_parse_private_key decodes a DER-encoded PrivateKeyInfo structure (RFC
374
+ // 5208) from `cbs` and advances `cbs`. It returns a newly-allocated `EVP_PKEY`
375
+ // or NULL on error.
376
+ //
377
+ // Prefer `EVP_PKEY_from_private_key_info` instead. This function has
378
+ // several pitfalls:
379
+ //
380
+ // Callers are expected to handle trailing data returned from `cbs`, making more
381
+ // common cases error-prone.
382
+ //
383
+ // There is also no way to pass in supported algorithms. This function instead
384
+ // supports some default set of algorithms. Future versions of BoringSSL may add
385
+ // to this list, based on the needs of the other callers. Conversely, some
386
+ // algorithms may be intentionally omitted, if they cause too much risk to
387
+ // existing callers.
388
+ //
389
+ // This means the caller must check the type of the parsed private key to ensure
390
+ // it is suitable and validate other desired key properties such as RSA modulus
391
+ // size or EC curve. In particular, RSA private key operations scale cubicly, so
392
+ // applications accepting RSA private keys from external sources may need to
393
+ // bound key sizes (use `EVP_PKEY_bits` or `RSA_bits`) to avoid a DoS vector.
394
+ //
395
+ // A PrivateKeyInfo ends with an optional set of attributes. These are silently
396
+ // ignored.
397
+ OPENSSL_EXPORT EVP_PKEY *EVP_parse_private_key(CBS *cbs);
398
+
399
+ // EVP_marshal_private_key marshals `key` as a DER-encoded PrivateKeyInfo
400
+ // structure (RFC 5208) and appends the result to `cbb`. It returns one on
401
+ // success and zero on error.
402
+ OPENSSL_EXPORT int EVP_marshal_private_key(CBB *cbb, const EVP_PKEY *key);
403
+
404
+
405
+ // Raw keys
406
+ //
407
+ // These functions give access to the "raw" type-specific public and private key
408
+ // formats. Algorithms with such formats are:
409
+ //
410
+ // - X25519, using the formats in RFC 7748.
411
+ //
412
+ // - Ed25519, using the formats in RFC 8032. Note the RFC 8032 private key
413
+ // format is the 32-byte prefix of `ED25519_sign`'s 64-byte private key.
414
+ //
415
+ // - ML-DSA, using the formats in FIPS 204. The private key representation
416
+ // supported by BoringSSL is the 32-byte "seed", defined in FIPS 204 as 𝜉, not
417
+ // the larger expanded form. For OpenSSL compatibility, it is not used with
418
+ // the `EVP_PKEY_from_raw_private_key` and `EVP_PKEY_get_raw_private_key`
419
+ // APIs, but instead the `EVP_PKEY_from_private_seed` and
420
+ // `EVP_PKEY_get_private_seed` APIs.
421
+ //
422
+ // - ML-KEM, using the formats in FIPS 203. The private key representation
423
+ // supported by BoringSSL is the 64-byte "seed" resulting from the
424
+ // concatenation of d||z, as each is defined in FIPS 203.
425
+ //
426
+ // These formats are suitable if serializing a key in a context where the
427
+ // algorithm is already known and there is no need to encode it.
428
+
429
+ // EVP_PKEY_from_raw_private_key interprets `in` as a raw private key of type
430
+ // `alg` and returns a newly-allocated `EVP_PKEY`, or nullptr on error.
431
+ OPENSSL_EXPORT EVP_PKEY *EVP_PKEY_from_raw_private_key(const EVP_PKEY_ALG *alg,
432
+ const uint8_t *in,
433
+ size_t len);
434
+
435
+ // EVP_PKEY_from_private_seed interprets `in` as a private seed of type `alg`
436
+ // and returns a newly-allocated `EVP_PKEY`, or nullptr on error.
437
+ OPENSSL_EXPORT EVP_PKEY *EVP_PKEY_from_private_seed(const EVP_PKEY_ALG *alg,
438
+ const uint8_t *in,
439
+ size_t len);
440
+
441
+ // EVP_PKEY_from_raw_public_key interprets `in` as a raw public key of type
442
+ // `alg` and returns a newly-allocated `EVP_PKEY`, or nullptr on error.
443
+ OPENSSL_EXPORT EVP_PKEY *EVP_PKEY_from_raw_public_key(const EVP_PKEY_ALG *alg,
444
+ const uint8_t *in,
445
+ size_t len);
446
+
447
+ // EVP_PKEY_get_raw_private_key outputs the private key for `pkey` in raw form.
448
+ // If `out` is NULL, it sets `*out_len` to the size of the raw private key.
449
+ // Otherwise, it writes at most `*out_len` bytes to `out` and sets `*out_len` to
450
+ // the number of bytes written.
451
+ //
452
+ // It returns one on success and zero if `pkey` has no private key, the key
453
+ // type does not support this format, or the buffer is too small.
454
+ OPENSSL_EXPORT int EVP_PKEY_get_raw_private_key(const EVP_PKEY *pkey,
455
+ uint8_t *out, size_t *out_len);
456
+
457
+ // EVP_PKEY_get_private_seed outputs the private key for `pkey` as a private
458
+ // seed. If `out` is NULL, it sets `*out_len` to the size of the seed.
459
+ // Otherwise, it writes at most `*out_len` bytes to `out` and sets
460
+ // `*out_len` to the number of bytes written.
461
+ //
462
+ // It returns one on success and zero if `pkey` has no private key, the key
463
+ // type does not support this format, or the buffer is too small.
464
+ OPENSSL_EXPORT int EVP_PKEY_get_private_seed(const EVP_PKEY *pkey, uint8_t *out,
465
+ size_t *out_len);
466
+
467
+ // EVP_PKEY_get_raw_public_key outputs the public key for `pkey` in raw form.
468
+ // If `out` is NULL, it sets `*out_len` to the size of the raw public key.
469
+ // Otherwise, it writes at most `*out_len` bytes to `out` and sets `*out_len` to
470
+ // the number of bytes written.
471
+ //
472
+ // It returns one on success and zero if `pkey` has no public key, the key
473
+ // type does not support this format, or the buffer is too small.
474
+ OPENSSL_EXPORT int EVP_PKEY_get_raw_public_key(const EVP_PKEY *pkey,
475
+ uint8_t *out, size_t *out_len);
476
+
477
+
478
+ // Key generation
479
+
480
+ // EVP_PKEY_generate_from_alg generates a new key of type `alg`. It returns a
481
+ // newly-allocated `EVP_PKEY` or nullptr on error.
482
+ //
483
+ // When passed `EVP_pkey_rsa`, this function generates an RSA-2048 key with the
484
+ // recommended public exponent of 65537, or `RSA_F4`. Use `EVP_RSA_gen` or
485
+ // `EVP_PKEY_keygen` instead to customize these parameters.
486
+ OPENSSL_EXPORT EVP_PKEY *EVP_PKEY_generate_from_alg(const EVP_PKEY_ALG *alg);
487
+
488
+
489
+ // Signing
490
+
491
+ // EVP_DigestSignInit sets up `ctx` for a signing operation with `type` and
492
+ // `pkey`. The `ctx` argument must have been initialised with
493
+ // `EVP_MD_CTX_init`. If `pctx` is not NULL, the `EVP_PKEY_CTX` of the signing
494
+ // operation will be written to `*pctx`; this can be used to set alternative
495
+ // signing options.
496
+ //
497
+ // For single-shot signing algorithms which do not use a pre-hash, such as
498
+ // Ed25519, `type` should be NULL. The `EVP_MD_CTX` itself is unused but is
499
+ // present so the API is uniform. See `EVP_DigestSign`.
500
+ //
501
+ // This function does not mutate `pkey` for thread-safety purposes and may be
502
+ // used concurrently with other non-mutating functions on `pkey`.
503
+ //
504
+ // It returns one on success, or zero on error.
505
+ OPENSSL_EXPORT int EVP_DigestSignInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx,
506
+ const EVP_MD *type, ENGINE *e,
507
+ EVP_PKEY *pkey);
508
+
509
+ // EVP_DigestSignUpdate appends `len` bytes from `data` to the data which will
510
+ // be signed in `EVP_DigestSignFinal`. It returns one.
511
+ //
512
+ // This function performs a streaming signing operation and will fail for
513
+ // signature algorithms which do not support this. Use `EVP_DigestSign` for a
514
+ // single-shot operation.
515
+ OPENSSL_EXPORT int EVP_DigestSignUpdate(EVP_MD_CTX *ctx, const void *data,
516
+ size_t len);
517
+
518
+ // EVP_DigestSignFinal signs the data that has been included by one or more
519
+ // calls to `EVP_DigestSignUpdate`. If `out_sig` is NULL then `*out_sig_len` is
520
+ // set to the maximum number of output bytes. Otherwise, on entry,
521
+ // `*out_sig_len` must contain the length of the `out_sig` buffer. If the call
522
+ // is successful, the signature is written to `out_sig` and `*out_sig_len` is
523
+ // set to its length.
524
+ //
525
+ // This function performs a streaming signing operation and will fail for
526
+ // signature algorithms which do not support this. Use `EVP_DigestSign` for a
527
+ // single-shot operation.
528
+ //
529
+ // It returns one on success, or zero on error.
530
+ OPENSSL_EXPORT int EVP_DigestSignFinal(EVP_MD_CTX *ctx, uint8_t *out_sig,
531
+ size_t *out_sig_len);
532
+
533
+ // EVP_DigestSign signs `data_len` bytes from `data` using `ctx`. If `out_sig`
534
+ // is NULL then `*out_sig_len` is set to the maximum number of output
535
+ // bytes. Otherwise, on entry, `*out_sig_len` must contain the length of the
536
+ // `out_sig` buffer. If the call is successful, the signature is written to
537
+ // `out_sig` and `*out_sig_len` is set to its length.
538
+ //
539
+ // It returns one on success and zero on error.
540
+ OPENSSL_EXPORT int EVP_DigestSign(EVP_MD_CTX *ctx, uint8_t *out_sig,
541
+ size_t *out_sig_len, const uint8_t *data,
542
+ size_t data_len);
543
+
544
+
545
+ // Verifying
546
+
547
+ // EVP_DigestVerifyInit sets up `ctx` for a signature verification operation
548
+ // with `type` and `pkey`. The `ctx` argument must have been initialised with
549
+ // `EVP_MD_CTX_init`. If `pctx` is not NULL, the `EVP_PKEY_CTX` of the signing
550
+ // operation will be written to `*pctx`; this can be used to set alternative
551
+ // signing options.
552
+ //
553
+ // For single-shot signing algorithms which do not use a pre-hash, such as
554
+ // Ed25519, `type` should be NULL. The `EVP_MD_CTX` itself is unused but is
555
+ // present so the API is uniform. See `EVP_DigestVerify`.
556
+ //
557
+ // This function does not mutate `pkey` for thread-safety purposes and may be
558
+ // used concurrently with other non-mutating functions on `pkey`.
559
+ //
560
+ // It returns one on success, or zero on error.
561
+ OPENSSL_EXPORT int EVP_DigestVerifyInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx,
562
+ const EVP_MD *type, ENGINE *e,
563
+ EVP_PKEY *pkey);
564
+
565
+ // EVP_DigestVerifyUpdate appends `len` bytes from `data` to the data which
566
+ // will be verified by `EVP_DigestVerifyFinal`. It returns one.
567
+ //
568
+ // This function performs streaming signature verification and will fail for
569
+ // signature algorithms which do not support this. Use `EVP_DigestVerify` for a
570
+ // single-shot verification.
571
+ OPENSSL_EXPORT int EVP_DigestVerifyUpdate(EVP_MD_CTX *ctx, const void *data,
572
+ size_t len);
573
+
574
+ // EVP_DigestVerifyFinal verifies that `sig_len` bytes of `sig` are a valid
575
+ // signature for the data that has been included by one or more calls to
576
+ // `EVP_DigestVerifyUpdate`. It returns one on success and zero otherwise.
577
+ //
578
+ // This function performs streaming signature verification and will fail for
579
+ // signature algorithms which do not support this. Use `EVP_DigestVerify` for a
580
+ // single-shot verification.
581
+ OPENSSL_EXPORT int EVP_DigestVerifyFinal(EVP_MD_CTX *ctx, const uint8_t *sig,
582
+ size_t sig_len);
583
+
584
+ // EVP_DigestVerify verifies that `sig_len` bytes from `sig` are a valid
585
+ // signature for `data`. It returns one on success or zero on error.
586
+ OPENSSL_EXPORT int EVP_DigestVerify(EVP_MD_CTX *ctx, const uint8_t *sig,
587
+ size_t sig_len, const uint8_t *data,
588
+ size_t len);
589
+
590
+
591
+ // Signing (old functions)
592
+
593
+ // EVP_SignInit_ex configures `ctx`, which must already have been initialised,
594
+ // for a fresh signing operation using the hash function `type`. It returns one
595
+ // on success and zero otherwise.
596
+ //
597
+ // (In order to initialise `ctx`, either obtain it initialised with
598
+ // `EVP_MD_CTX_create`, or use `EVP_MD_CTX_init`.)
599
+ OPENSSL_EXPORT int EVP_SignInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type,
600
+ ENGINE *impl);
601
+
602
+ // EVP_SignInit is a deprecated version of `EVP_SignInit_ex`.
603
+ //
604
+ // TODO(fork): remove.
605
+ OPENSSL_EXPORT int EVP_SignInit(EVP_MD_CTX *ctx, const EVP_MD *type);
606
+
607
+ // EVP_SignUpdate appends `len` bytes from `data` to the data which will be
608
+ // signed in `EVP_SignFinal`.
609
+ OPENSSL_EXPORT int EVP_SignUpdate(EVP_MD_CTX *ctx, const void *data,
610
+ size_t len);
611
+
612
+ // EVP_SignFinal signs the data that has been included by one or more calls to
613
+ // `EVP_SignUpdate`, using the key `pkey`, and writes it to `sig`. On entry,
614
+ // `sig` must point to at least `EVP_PKEY_size(pkey)` bytes of space. The
615
+ // actual size of the signature is written to `*out_sig_len`.
616
+ //
617
+ // It returns one on success and zero otherwise.
618
+ //
619
+ // It does not modify `ctx`, thus it's possible to continue to use `ctx` in
620
+ // order to sign a longer message. It also does not mutate `pkey` for
621
+ // thread-safety purposes and may be used concurrently with other non-mutating
622
+ // functions on `pkey`.
623
+ OPENSSL_EXPORT int EVP_SignFinal(const EVP_MD_CTX *ctx, uint8_t *sig,
624
+ unsigned int *out_sig_len, EVP_PKEY *pkey);
625
+
626
+
627
+ // Verifying (old functions)
628
+
629
+ // EVP_VerifyInit_ex configures `ctx`, which must already have been
630
+ // initialised, for a fresh signature verification operation using the hash
631
+ // function `type`. It returns one on success and zero otherwise.
632
+ //
633
+ // (In order to initialise `ctx`, either obtain it initialised with
634
+ // `EVP_MD_CTX_create`, or use `EVP_MD_CTX_init`.)
635
+ OPENSSL_EXPORT int EVP_VerifyInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type,
636
+ ENGINE *impl);
637
+
638
+ // EVP_VerifyInit is a deprecated version of `EVP_VerifyInit_ex`.
639
+ //
640
+ // TODO(fork): remove.
641
+ OPENSSL_EXPORT int EVP_VerifyInit(EVP_MD_CTX *ctx, const EVP_MD *type);
642
+
643
+ // EVP_VerifyUpdate appends `len` bytes from `data` to the data which will be
644
+ // signed in `EVP_VerifyFinal`.
645
+ OPENSSL_EXPORT int EVP_VerifyUpdate(EVP_MD_CTX *ctx, const void *data,
646
+ size_t len);
647
+
648
+ // EVP_VerifyFinal verifies that `sig_len` bytes of `sig` are a valid
649
+ // signature, by `pkey`, for the data that has been included by one or more
650
+ // calls to `EVP_VerifyUpdate`.
651
+ //
652
+ // It returns one on success and zero otherwise.
653
+ //
654
+ // It does not modify `ctx`, thus it's possible to continue to use `ctx` in
655
+ // order to verify a longer message. It also does not mutate `pkey` for
656
+ // thread-safety purposes and may be used concurrently with other non-mutating
657
+ // functions on `pkey`.
658
+ OPENSSL_EXPORT int EVP_VerifyFinal(EVP_MD_CTX *ctx, const uint8_t *sig,
659
+ size_t sig_len, EVP_PKEY *pkey);
660
+
661
+
662
+ // Printing
663
+
664
+ // EVP_PKEY_print_public prints a textual representation of the public key in
665
+ // `pkey` to `out`. Returns one on success or zero otherwise.
666
+ OPENSSL_EXPORT int EVP_PKEY_print_public(BIO *out, const EVP_PKEY *pkey,
667
+ int indent, ASN1_PCTX *pctx);
668
+
669
+ // EVP_PKEY_print_private prints a textual representation of the private key in
670
+ // `pkey` to `out`. Returns one on success or zero otherwise.
671
+ OPENSSL_EXPORT int EVP_PKEY_print_private(BIO *out, const EVP_PKEY *pkey,
672
+ int indent, ASN1_PCTX *pctx);
673
+
674
+ // EVP_PKEY_print_params prints a textual representation of the parameters in
675
+ // `pkey` to `out`. Returns one on success or zero otherwise.
676
+ OPENSSL_EXPORT int EVP_PKEY_print_params(BIO *out, const EVP_PKEY *pkey,
677
+ int indent, ASN1_PCTX *pctx);
678
+
679
+
680
+ // Password stretching.
681
+ //
682
+ // Password stretching functions take a low-entropy password and apply a slow
683
+ // function that results in a key suitable for use in symmetric
684
+ // cryptography.
685
+
686
+ // PKCS5_PBKDF2_HMAC computes `iterations` iterations of PBKDF2 of `password`
687
+ // and `salt`, using `digest`, and outputs `key_len` bytes to `out_key`. It
688
+ // returns one on success and zero on allocation failure or if iterations is 0.
689
+ OPENSSL_EXPORT int PKCS5_PBKDF2_HMAC(const char *password, size_t password_len,
690
+ const uint8_t *salt, size_t salt_len,
691
+ uint32_t iterations, const EVP_MD *digest,
692
+ size_t key_len, uint8_t *out_key);
693
+
694
+ // PKCS5_PBKDF2_HMAC_SHA1 is the same as PKCS5_PBKDF2_HMAC, but with `digest`
695
+ // fixed to `EVP_sha1`.
696
+ OPENSSL_EXPORT int PKCS5_PBKDF2_HMAC_SHA1(const char *password,
697
+ size_t password_len,
698
+ const uint8_t *salt, size_t salt_len,
699
+ uint32_t iterations, size_t key_len,
700
+ uint8_t *out_key);
701
+
702
+ // EVP_PBE_scrypt expands `password` into a secret key of length `key_len` using
703
+ // scrypt, as described in RFC 7914, and writes the result to `out_key`. It
704
+ // returns one on success and zero on allocation failure, if the memory required
705
+ // for the operation exceeds `max_mem`, or if any of the parameters are invalid
706
+ // as described below.
707
+ //
708
+ // `N`, `r`, and `p` are as described in RFC 7914 section 6. They determine the
709
+ // cost of the operation. If `max_mem` is zero, a default limit of 65MiB will be
710
+ // used.
711
+ //
712
+ // The parameters are considered invalid under any of the following conditions:
713
+ // - `r` or `p` are zero
714
+ // - `p` > (2^30 - 1) / `r`
715
+ // - `N` is not a power of two
716
+ // - `N` > 2^32
717
+ // - `N` > 2^(128 * `r` / 8)
718
+ OPENSSL_EXPORT int EVP_PBE_scrypt(const char *password, size_t password_len,
719
+ const uint8_t *salt, size_t salt_len,
720
+ uint64_t N, uint64_t r, uint64_t p,
721
+ size_t max_mem, uint8_t *out_key,
722
+ size_t key_len);
723
+
724
+
725
+ // Operations.
726
+ //
727
+ // `EVP_PKEY_CTX` objects hold the context for an operation (e.g. signing or
728
+ // encrypting) that uses an `EVP_PKEY`. They are used to configure
729
+ // algorithm-specific parameters for the operation before performing the
730
+ // operation. The general pattern for performing an operation in EVP is:
731
+ //
732
+ // 1. Construct an `EVP_PKEY_CTX`, either with `EVP_PKEY_CTX_new` (operations
733
+ // using a key, like signing) or `EVP_PKEY_CTX_new_id` (operations not using
734
+ // an existing key, like key generation).
735
+ //
736
+ // 2. Initialize it for an operation. For example, `EVP_PKEY_sign_init`
737
+ // initializes an `EVP_PKEY_CTX` for signing.
738
+ //
739
+ // 3. Configure algorithm-specific parameters for the operation by calling
740
+ // control functions on the `EVP_PKEY_CTX`. Some functions are generic, such
741
+ // as `EVP_PKEY_CTX_set_signature_md`, and some are specific to an algorithm,
742
+ // such as `EVP_PKEY_CTX_set_rsa_padding`.
743
+ //
744
+ // 4. Perform the operation. For example, `EVP_PKEY_sign` signs with the
745
+ // corresponding parameters.
746
+ //
747
+ // 5. Release the `EVP_PKEY_CTX` with `EVP_PKEY_CTX_free`.
748
+ //
749
+ // Each `EVP_PKEY` algorithm interprets operations and parameters differently.
750
+ // Not all algorithms support all operations. Functions will fail if the
751
+ // algorithm does not support the parameter or operation.
752
+
753
+ // EVP_PKEY_CTX_new allocates a fresh `EVP_PKEY_CTX` for use with `pkey`. It
754
+ // returns the context or NULL on error.
755
+ OPENSSL_EXPORT EVP_PKEY_CTX *EVP_PKEY_CTX_new(EVP_PKEY *pkey, ENGINE *e);
756
+
757
+ // EVP_PKEY_CTX_new_id allocates a fresh `EVP_PKEY_CTX` for a key of type `id`
758
+ // (e.g. `EVP_PKEY_HMAC`). This can be used for key generation where
759
+ // `EVP_PKEY_CTX_new` can't be used because there isn't an `EVP_PKEY` to pass
760
+ // it. It returns the context or NULL on error.
761
+ //
762
+ // For key generation, prefer to use `EVP_PKEY_generate_from_alg`.
763
+ OPENSSL_EXPORT EVP_PKEY_CTX *EVP_PKEY_CTX_new_id(int id, ENGINE *e);
764
+
765
+ // EVP_PKEY_CTX_free frees `ctx` and the data it owns.
766
+ OPENSSL_EXPORT void EVP_PKEY_CTX_free(EVP_PKEY_CTX *ctx);
767
+
768
+ // EVP_PKEY_CTX_dup allocates a fresh `EVP_PKEY_CTX` and sets it equal to the
769
+ // state of `ctx`. It returns the fresh `EVP_PKEY_CTX` or NULL on error.
770
+ OPENSSL_EXPORT EVP_PKEY_CTX *EVP_PKEY_CTX_dup(EVP_PKEY_CTX *ctx);
771
+
772
+ // EVP_PKEY_CTX_get0_pkey returns the `EVP_PKEY` associated with `ctx`.
773
+ OPENSSL_EXPORT EVP_PKEY *EVP_PKEY_CTX_get0_pkey(EVP_PKEY_CTX *ctx);
774
+
775
+ // EVP_PKEY_sign_init initialises an `EVP_PKEY_CTX` for a signing operation. It
776
+ // should be called before `EVP_PKEY_sign`.
777
+ //
778
+ // It returns one on success or zero on error.
779
+ OPENSSL_EXPORT int EVP_PKEY_sign_init(EVP_PKEY_CTX *ctx);
780
+
781
+ // EVP_PKEY_sign signs `digest_len` bytes from `digest` using `ctx`. If `sig` is
782
+ // NULL, the maximum size of the signature is written to `out_sig_len`.
783
+ // Otherwise, `*sig_len` must contain the number of bytes of space available at
784
+ // `sig`. If sufficient, the signature will be written to `sig` and `*sig_len`
785
+ // updated with the true length. This function will fail for signature
786
+ // algorithms like Ed25519 that do not support signing pre-hashed inputs.
787
+ //
788
+ // WARNING: `digest` must be the output of some hash function on the data to be
789
+ // signed. Passing unhashed inputs will not result in a secure signature scheme.
790
+ // Use `EVP_DigestSignInit` to sign an unhashed input.
791
+ //
792
+ // WARNING: Setting `sig` to NULL only gives the maximum size of the
793
+ // signature. The actual signature may be smaller.
794
+ //
795
+ // It returns one on success or zero on error. (Note: this differs from
796
+ // OpenSSL, which can also return negative values to indicate an error.)
797
+ OPENSSL_EXPORT int EVP_PKEY_sign(EVP_PKEY_CTX *ctx, uint8_t *sig,
798
+ size_t *sig_len, const uint8_t *digest,
799
+ size_t digest_len);
800
+
801
+ // EVP_PKEY_verify_init initialises an `EVP_PKEY_CTX` for a signature
802
+ // verification operation. It should be called before `EVP_PKEY_verify`.
803
+ //
804
+ // It returns one on success or zero on error.
805
+ OPENSSL_EXPORT int EVP_PKEY_verify_init(EVP_PKEY_CTX *ctx);
806
+
807
+ // EVP_PKEY_verify verifies that `sig_len` bytes from `sig` are a valid
808
+ // signature for `digest`. This function will fail for signature
809
+ // algorithms like Ed25519 that do not support signing pre-hashed inputs.
810
+ //
811
+ // WARNING: `digest` must be the output of some hash function on the data to be
812
+ // verified. Passing unhashed inputs will not result in a secure signature
813
+ // scheme. Use `EVP_DigestVerifyInit` to verify a signature given the unhashed
814
+ // input.
815
+ //
816
+ // It returns one on success or zero on error.
817
+ OPENSSL_EXPORT int EVP_PKEY_verify(EVP_PKEY_CTX *ctx, const uint8_t *sig,
818
+ size_t sig_len, const uint8_t *digest,
819
+ size_t digest_len);
820
+
821
+ // EVP_PKEY_encrypt_init initialises an `EVP_PKEY_CTX` for an encryption
822
+ // operation. It should be called before `EVP_PKEY_encrypt`.
823
+ //
824
+ // It returns one on success or zero on error.
825
+ OPENSSL_EXPORT int EVP_PKEY_encrypt_init(EVP_PKEY_CTX *ctx);
826
+
827
+ // EVP_PKEY_encrypt encrypts `in_len` bytes from `in`. If `out` is NULL, the
828
+ // maximum size of the ciphertext is written to `out_len`. Otherwise, `*out_len`
829
+ // must contain the number of bytes of space available at `out`. If sufficient,
830
+ // the ciphertext will be written to `out` and `*out_len` updated with the true
831
+ // length.
832
+ //
833
+ // WARNING: Setting `out` to NULL only gives the maximum size of the
834
+ // ciphertext. The actual ciphertext may be smaller.
835
+ //
836
+ // It returns one on success or zero on error.
837
+ OPENSSL_EXPORT int EVP_PKEY_encrypt(EVP_PKEY_CTX *ctx, uint8_t *out,
838
+ size_t *out_len, const uint8_t *in,
839
+ size_t in_len);
840
+
841
+ // EVP_PKEY_decrypt_init initialises an `EVP_PKEY_CTX` for a decryption
842
+ // operation. It should be called before `EVP_PKEY_decrypt`.
843
+ //
844
+ // It returns one on success or zero on error.
845
+ OPENSSL_EXPORT int EVP_PKEY_decrypt_init(EVP_PKEY_CTX *ctx);
846
+
847
+ // EVP_PKEY_decrypt decrypts `in_len` bytes from `in`. If `out` is NULL, the
848
+ // maximum size of the plaintext is written to `out_len`. Otherwise, `*out_len`
849
+ // must contain the number of bytes of space available at `out`. If sufficient,
850
+ // the ciphertext will be written to `out` and `*out_len` updated with the true
851
+ // length.
852
+ //
853
+ // WARNING: Setting `out` to NULL only gives the maximum size of the
854
+ // plaintext. The actual plaintext may be smaller.
855
+ //
856
+ // It returns one on success or zero on error.
857
+ OPENSSL_EXPORT int EVP_PKEY_decrypt(EVP_PKEY_CTX *ctx, uint8_t *out,
858
+ size_t *out_len, const uint8_t *in,
859
+ size_t in_len);
860
+
861
+ // EVP_PKEY_verify_recover_init initialises an `EVP_PKEY_CTX` for a public-key
862
+ // decryption operation. It should be called before `EVP_PKEY_verify_recover`.
863
+ //
864
+ // Public-key decryption is a very obscure operation that is only implemented
865
+ // by RSA keys. It is effectively a signature verification operation that
866
+ // returns the signed message directly. It is almost certainly not what you
867
+ // want.
868
+ //
869
+ // It returns one on success or zero on error.
870
+ OPENSSL_EXPORT int EVP_PKEY_verify_recover_init(EVP_PKEY_CTX *ctx);
871
+
872
+ // EVP_PKEY_verify_recover decrypts `sig_len` bytes from `sig`. If `out` is
873
+ // NULL, the maximum size of the plaintext is written to `out_len`. Otherwise,
874
+ // `*out_len` must contain the number of bytes of space available at `out`. If
875
+ // sufficient, the ciphertext will be written to `out` and `*out_len` updated
876
+ // with the true length.
877
+ //
878
+ // WARNING: Setting `out` to NULL only gives the maximum size of the
879
+ // plaintext. The actual plaintext may be smaller.
880
+ //
881
+ // See the warning about this operation in `EVP_PKEY_verify_recover_init`. It
882
+ // is probably not what you want.
883
+ //
884
+ // It returns one on success or zero on error.
885
+ OPENSSL_EXPORT int EVP_PKEY_verify_recover(EVP_PKEY_CTX *ctx, uint8_t *out,
886
+ size_t *out_len, const uint8_t *sig,
887
+ size_t siglen);
888
+
889
+ // EVP_PKEY_derive_init initialises an `EVP_PKEY_CTX` for a key derivation
890
+ // operation. It should be called before `EVP_PKEY_derive_set_peer` and
891
+ // `EVP_PKEY_derive`.
892
+ //
893
+ // It returns one on success or zero on error.
894
+ OPENSSL_EXPORT int EVP_PKEY_derive_init(EVP_PKEY_CTX *ctx);
895
+
896
+ // EVP_PKEY_derive_set_peer sets the peer's key to be used for key derivation
897
+ // by `ctx` to `peer`. It should be called after `EVP_PKEY_derive_init`. (For
898
+ // example, this is used to set the peer's key in (EC)DH.) It returns one on
899
+ // success and zero on error.
900
+ OPENSSL_EXPORT int EVP_PKEY_derive_set_peer(EVP_PKEY_CTX *ctx, EVP_PKEY *peer);
901
+
902
+ // EVP_PKEY_derive derives a shared key from `ctx`. If `key` is non-NULL then,
903
+ // on entry, `out_key_len` must contain the amount of space at `key`. If
904
+ // sufficient then the shared key will be written to `key` and `*out_key_len`
905
+ // will be set to the length. If `key` is NULL then `out_key_len` will be set to
906
+ // the maximum length.
907
+ //
908
+ // WARNING: Setting `out` to NULL only gives the maximum size of the key. The
909
+ // actual key may be smaller.
910
+ //
911
+ // It returns one on success and zero on error.
912
+ OPENSSL_EXPORT int EVP_PKEY_derive(EVP_PKEY_CTX *ctx, uint8_t *key,
913
+ size_t *out_key_len);
914
+
915
+ // EVP_PKEY_keygen_init initialises an `EVP_PKEY_CTX` for a key generation
916
+ // operation. It should be called before `EVP_PKEY_keygen`.
917
+ //
918
+ // It returns one on success or zero on error.
919
+ OPENSSL_EXPORT int EVP_PKEY_keygen_init(EVP_PKEY_CTX *ctx);
920
+
921
+ // EVP_PKEY_keygen performs a key generation operation using the values from
922
+ // `ctx`. If `*out_pkey` is non-NULL, it overwrites `*out_pkey` with the
923
+ // resulting key. Otherwise, it sets `*out_pkey` to a newly-allocated `EVP_PKEY`
924
+ // containing the result. It returns one on success or zero on error.
925
+ OPENSSL_EXPORT int EVP_PKEY_keygen(EVP_PKEY_CTX *ctx, EVP_PKEY **out_pkey);
926
+
927
+ // EVP_PKEY_paramgen_init initialises an `EVP_PKEY_CTX` for a parameter
928
+ // generation operation. It should be called before `EVP_PKEY_paramgen`.
929
+ //
930
+ // It returns one on success or zero on error.
931
+ OPENSSL_EXPORT int EVP_PKEY_paramgen_init(EVP_PKEY_CTX *ctx);
932
+
933
+ // EVP_PKEY_paramgen performs a parameter generation using the values from
934
+ // `ctx`. If `*out_pkey` is non-NULL, it overwrites `*out_pkey` with the
935
+ // resulting parameters, but no key. Otherwise, it sets `*out_pkey` to a
936
+ // newly-allocated `EVP_PKEY` containing the result. It returns one on success
937
+ // or zero on error.
938
+ OPENSSL_EXPORT int EVP_PKEY_paramgen(EVP_PKEY_CTX *ctx, EVP_PKEY **out_pkey);
939
+
940
+ // EVP_PKEY_encapsulate_init initialises an `EVP_PKEY_CTX` for an encapsulate
941
+ // operation. It should be called before `EVP_PKEY_encapsulate`. `params` is
942
+ // included for OpenSSL compatibility, but this parameter should be NULL or have
943
+ // `OSSL_PARAM_END` as its first element.
944
+ //
945
+ // It returns one on success or zero on error.
946
+ OPENSSL_EXPORT int EVP_PKEY_encapsulate_init(EVP_PKEY_CTX *ctx,
947
+ const OSSL_PARAM *params);
948
+
949
+ // EVP_PKEY_encapsulate implements public key encapsulation using `ctx`. It
950
+ // either performs the operation or returns the maximum output sizes, depending
951
+ // on whether `out_ciphertext` is NULL:
952
+ //
953
+ // If `out_ciphertext` is NULL, it writes the maximum ciphertext length to
954
+ // `*out_ciphertext_len` and the maximum shared secret length to
955
+ // `*out_secret_len`. Either of `out_ciphertext_len` or `out_secret_len` may be
956
+ // NULL to ignore the corresponding output.
957
+ //
958
+ // If `out_ciphertext` is non-NULL, it performs the operation and, on success,
959
+ // writes the ciphertext to `out_ciphertext`, the ciphertext size to
960
+ // `out_ciphertext_len`, the shared secret to `out_secret`, and the shared
961
+ // secret length to `out_secret_len`. On input, `*out_ciphertext_len` and
962
+ // `*out_secret_len` must contain the amount of space available in
963
+ // `out_ciphertext` and `out_secret`, respectively. If there is insufficient
964
+ // space to write the output, the operation will fail.
965
+ //
966
+ // In both modes, this function returns one on success or zero on error.
967
+ OPENSSL_EXPORT int EVP_PKEY_encapsulate(EVP_PKEY_CTX *ctx,
968
+ uint8_t *out_ciphertext,
969
+ size_t *out_ciphertext_len,
970
+ uint8_t *out_secret,
971
+ size_t *out_secret_len);
972
+
973
+ // EVP_PKEY_decapsulate_init initialises an `EVP_PKEY_CTX` for a decapsulate
974
+ // operation. It should be called before `EVP_PKEY_decapsulate`. `params` is
975
+ // included for OpenSSL compatibility, but this parameter should be NULL or have
976
+ // `OSSL_PARAM_END` as its first element.
977
+ //
978
+ // It returns one on success or zero on error.
979
+ OPENSSL_EXPORT int EVP_PKEY_decapsulate_init(EVP_PKEY_CTX *ctx,
980
+ const OSSL_PARAM *params);
981
+
982
+ // EVP_PKEY_decapsulate implements private key decapsulation using `ctx`.
983
+ // `ciphertext` and `ciphertext_len` specify the ciphertext to be decapsulated.
984
+ // If `out_secret` is NULL, it writes the maximum size of the shared secret
985
+ // output to `*out_secret_len` and returns one. Otherwise, `*out_secret_len`
986
+ // must contain the number of bytes of space available at `out_secret`. If the
987
+ // space is insufficient, this function returns zero. If the space is
988
+ // sufficient, the decapsulated shared secret will be written to `out_secret`
989
+ // and the size of the output to `out_secret_len`, and this function will return
990
+ // one. If `ciphertext` has been corrupted, the function may fail or it may
991
+ // output a shared secret that appears to be random. Any subsequent symmetric
992
+ // encryption using `out_secret` must use an authenticated encryption scheme to
993
+ // discover the decapsulation failure.
994
+ OPENSSL_EXPORT int EVP_PKEY_decapsulate(EVP_PKEY_CTX *ctx, uint8_t *out_secret,
995
+ size_t *out_secret_len,
996
+ const uint8_t *ciphertext,
997
+ size_t ciphertext_len);
998
+
999
+
1000
+ // Generic control functions.
1001
+
1002
+ // EVP_PKEY_CTX_set_signature_md sets `md` as the digest to be used in a
1003
+ // signature operation. It returns one on success or zero on error.
1004
+ OPENSSL_EXPORT int EVP_PKEY_CTX_set_signature_md(EVP_PKEY_CTX *ctx,
1005
+ const EVP_MD *md);
1006
+
1007
+ // EVP_PKEY_CTX_get_signature_md sets `*out_md` to the digest to be used in a
1008
+ // signature operation. It returns one on success or zero on error.
1009
+ OPENSSL_EXPORT int EVP_PKEY_CTX_get_signature_md(EVP_PKEY_CTX *ctx,
1010
+ const EVP_MD **out_md);
1011
+
1012
+ // EVP_PKEY_CTX_set1_signature_context_string sets the context string for a
1013
+ // signature or verification operation to `context`. It returns one success and
1014
+ // zero on error. The context string is an additional input to some signature
1015
+ // algorithms, such as ML-DSA, to separate different uses of the same key. This
1016
+ // is known as domain separation. Section 8.3 of RFC 8032 provides some
1017
+ // additional guidance on context strings.
1018
+ //
1019
+ // Not all signature algorithms support context strings. Callers that support
1020
+ // a mix of algorithms, with and without context string support, can instead
1021
+ // separate the signature input itself. For example, callers can prepend
1022
+ // context-specific prefixes to signature inputs.
1023
+ OPENSSL_EXPORT int EVP_PKEY_CTX_set1_signature_context_string(
1024
+ EVP_PKEY_CTX *ctx, const uint8_t *context, size_t context_len);
1025
+
1026
+
1027
+ // RSA specific control functions.
1028
+
1029
+ // EVP_RSA_gen generates a new RSA key with the specified number of bits. It
1030
+ // returns a newly-allocated `EVP_PKEY` or nullptr on error.
1031
+ //
1032
+ // This function sets the public exponent to the recommended value of 65537, or
1033
+ // `RSA_F4`. To use a less common value, instead use
1034
+ // `EVP_PKEY_CTX_set_rsa_keygen_pubexp` and `EVP_PKEY_keygen`.
1035
+ OPENSSL_EXPORT EVP_PKEY *EVP_RSA_gen(unsigned bits);
1036
+
1037
+ // EVP_PKEY_from_rsa_public_key decodes `len` bytes from `in` as a DER-encoded
1038
+ // RSAPublicKey structure (RFC 8017) of algorithm `alg`. It returns a
1039
+ // newly-allocated `EVP_PKEY` on success or NULL on error. `alg` must be an
1040
+ // RSA-based algorithm, i.e. `EVP_pkey_rsa` or one of `EVP_pkey_rsa_pss_*`. If
1041
+ // unsure, use `EVP_pkey_rsa`.
1042
+ OPENSSL_EXPORT EVP_PKEY *EVP_PKEY_from_rsa_public_key(const EVP_PKEY_ALG *alg,
1043
+ const uint8_t *in,
1044
+ size_t len);
1045
+
1046
+ // EVP_PKEY_from_rsa_private_key decodes `len` bytes from `in` as a DER-encoded
1047
+ // RSAPrivateKey structure (RFC 8017) of algorithm `alg`. It returns a
1048
+ // newly-allocated `EVP_PKEY` on success or NULL on error. `alg` must be an
1049
+ // RSA-based algorithm, i.e. `EVP_pkey_rsa` or one of `EVP_pkey_rsa_pss_*`. If
1050
+ // unsure, use `EVP_pkey_rsa`.
1051
+ OPENSSL_EXPORT EVP_PKEY *EVP_PKEY_from_rsa_private_key(const EVP_PKEY_ALG *alg,
1052
+ const uint8_t *in,
1053
+ size_t len);
1054
+
1055
+ // EVP_PKEY_marshal_rsa_public_key marshals `key` as a DER-encoded RSAPublicKey
1056
+ // structure (RFC 8017) and writes the result to `cbb`. It returns one on
1057
+ // success and zero on error. If `key` is not of type `EVP_PKEY_RSA` or
1058
+ // `EVP_PKEY_RSA_PSS`, it returns zero.
1059
+ //
1060
+ // WARNING: If `key` is of type `EVP_PKEY_RSA_PSS`, this representation does not
1061
+ // encode the key's RSA-PSS restrictions. If decoding with
1062
+ // `EVP_PKEY_from_rsa_public_key`, callers are expected to pass an appropriate
1063
+ // `EVP_PKEY_ALG` out of band. If decoding into a low-level `RSA` object, the
1064
+ // result will be an unrestricted key.
1065
+ OPENSSL_EXPORT int EVP_PKEY_marshal_rsa_public_key(CBB *cbb,
1066
+ const EVP_PKEY *key);
1067
+
1068
+ // EVP_PKEY_marshal_rsa_private_key marshals `key` as a DER-encoded
1069
+ // RSAPrivateKey structure (RFC 8017) and writes the result to `cbb`. It returns
1070
+ // one on success and zero on error. If `key` is not of type `EVP_PKEY_RSA` or
1071
+ // `EVP_PKEY_RSA_PSS`, it returns zero.
1072
+ //
1073
+ // WARNING: If `key` is of type `EVP_PKEY_RSA_PSS`, this representation does not
1074
+ // encode the key's RSA-PSS restrictions. If decoding with
1075
+ // `EVP_PKEY_from_rsa_private_key`, callers are expected to pass an appropriate
1076
+ // `EVP_PKEY_ALG` out of band. If decoding into a low-level `RSA` object, the
1077
+ // result will be an unrestricted key.
1078
+ OPENSSL_EXPORT int EVP_PKEY_marshal_rsa_private_key(CBB *cbb,
1079
+ const EVP_PKEY *key);
1080
+
1081
+ // EVP_PKEY_CTX_set_rsa_padding sets the padding type to use. It should be one
1082
+ // of the `RSA_*_PADDING` values. Returns one on success or zero on error. By
1083
+ // default, the padding is `RSA_PKCS1_PADDING`.
1084
+ OPENSSL_EXPORT int EVP_PKEY_CTX_set_rsa_padding(EVP_PKEY_CTX *ctx, int padding);
1085
+
1086
+ // EVP_PKEY_CTX_get_rsa_padding sets `*out_padding` to the current padding
1087
+ // value, which is one of the `RSA_*_PADDING` values. Returns one on success or
1088
+ // zero on error.
1089
+ OPENSSL_EXPORT int EVP_PKEY_CTX_get_rsa_padding(EVP_PKEY_CTX *ctx,
1090
+ int *out_padding);
1091
+
1092
+ // EVP_PKEY_CTX_set_rsa_pss_saltlen sets the length of the salt in a PSS-padded
1093
+ // signature. A value of `RSA_PSS_SALTLEN_DIGEST` causes the salt to be the same
1094
+ // length as the digest in the signature. A value of `RSA_PSS_SALTLEN_AUTO`
1095
+ // causes the salt to be the maximum length that will fit when signing and
1096
+ // recovered from the signature when verifying. Otherwise the value gives the
1097
+ // size of the salt in bytes.
1098
+ //
1099
+ // If unsure, use `RSA_PSS_SALTLEN_DIGEST`, which is the default. Note this
1100
+ // differs from OpenSSL, which defaults to `RSA_PSS_SALTLEN_AUTO`.
1101
+ //
1102
+ // Returns one on success or zero on error.
1103
+ OPENSSL_EXPORT int EVP_PKEY_CTX_set_rsa_pss_saltlen(EVP_PKEY_CTX *ctx,
1104
+ int salt_len);
1105
+
1106
+ // EVP_PKEY_CTX_get_rsa_pss_saltlen sets `*out_salt_len` to the salt length of
1107
+ // a PSS-padded signature. See the documentation for
1108
+ // `EVP_PKEY_CTX_set_rsa_pss_saltlen` for details of the special values that it
1109
+ // can take.
1110
+ //
1111
+ // Returns one on success or zero on error.
1112
+ OPENSSL_EXPORT int EVP_PKEY_CTX_get_rsa_pss_saltlen(EVP_PKEY_CTX *ctx,
1113
+ int *out_salt_len);
1114
+
1115
+ // EVP_PKEY_CTX_set_rsa_keygen_bits sets the size of the desired RSA modulus,
1116
+ // in bits, for key generation. Returns one on success or zero on
1117
+ // error.
1118
+ OPENSSL_EXPORT int EVP_PKEY_CTX_set_rsa_keygen_bits(EVP_PKEY_CTX *ctx,
1119
+ int bits);
1120
+
1121
+ // EVP_PKEY_CTX_set_rsa_keygen_pubexp sets `e` as the public exponent for key
1122
+ // generation. Returns one on success or zero on error. On success, `ctx` takes
1123
+ // ownership of `e`. The library will then call `BN_free` on `e` when `ctx` is
1124
+ // destroyed.
1125
+ OPENSSL_EXPORT int EVP_PKEY_CTX_set_rsa_keygen_pubexp(EVP_PKEY_CTX *ctx,
1126
+ BIGNUM *e);
1127
+
1128
+ // EVP_PKEY_CTX_set_rsa_oaep_md sets `md` as the digest used in OAEP padding.
1129
+ // Returns one on success or zero on error. If unset, the default is SHA-1.
1130
+ // Callers are recommended to overwrite this default.
1131
+ //
1132
+ // TODO(davidben): Remove the default and require callers specify this.
1133
+ OPENSSL_EXPORT int EVP_PKEY_CTX_set_rsa_oaep_md(EVP_PKEY_CTX *ctx,
1134
+ const EVP_MD *md);
1135
+
1136
+ // EVP_PKEY_CTX_get_rsa_oaep_md sets `*out_md` to the digest function used in
1137
+ // OAEP padding. Returns one on success or zero on error.
1138
+ OPENSSL_EXPORT int EVP_PKEY_CTX_get_rsa_oaep_md(EVP_PKEY_CTX *ctx,
1139
+ const EVP_MD **out_md);
1140
+
1141
+ // EVP_PKEY_CTX_set_rsa_mgf1_md sets `md` as the digest used in MGF1. Returns
1142
+ // one on success or zero on error.
1143
+ //
1144
+ // If unset, the default is the signing hash for `RSA_PKCS1_PSS_PADDING` and the
1145
+ // OAEP hash for `RSA_PKCS1_OAEP_PADDING`. Callers are recommended to use this
1146
+ // default and not call this function.
1147
+ OPENSSL_EXPORT int EVP_PKEY_CTX_set_rsa_mgf1_md(EVP_PKEY_CTX *ctx,
1148
+ const EVP_MD *md);
1149
+
1150
+ // EVP_PKEY_CTX_get_rsa_mgf1_md sets `*out_md` to the digest function used in
1151
+ // MGF1. Returns one on success or zero on error.
1152
+ OPENSSL_EXPORT int EVP_PKEY_CTX_get_rsa_mgf1_md(EVP_PKEY_CTX *ctx,
1153
+ const EVP_MD **out_md);
1154
+
1155
+ // EVP_PKEY_CTX_set0_rsa_oaep_label sets `label_len` bytes from `label` as the
1156
+ // label used in OAEP. DANGER: On success, this call takes ownership of `label`
1157
+ // and will call `OPENSSL_free` on it when `ctx` is destroyed.
1158
+ //
1159
+ // Returns one on success or zero on error.
1160
+ OPENSSL_EXPORT int EVP_PKEY_CTX_set0_rsa_oaep_label(EVP_PKEY_CTX *ctx,
1161
+ uint8_t *label,
1162
+ size_t label_len);
1163
+
1164
+ // EVP_PKEY_CTX_get0_rsa_oaep_label sets `*out_label` to point to the internal
1165
+ // buffer containing the OAEP label (which may be NULL) and returns the length
1166
+ // of the label or a negative value on error.
1167
+ //
1168
+ // WARNING: the return value differs from the usual return value convention.
1169
+ OPENSSL_EXPORT int EVP_PKEY_CTX_get0_rsa_oaep_label(EVP_PKEY_CTX *ctx,
1170
+ const uint8_t **out_label);
1171
+
1172
+
1173
+ // EC specific control functions.
1174
+
1175
+ // The following functions decode `len` bytes from `in` as an EC public key in
1176
+ // compressed or uncompressed X9.62 format, respectively. The EC curve is
1177
+ // determined by `alg`, which must be an EC algorithm (i.e. one of
1178
+ // `EVP_pkey_ec_*`).
1179
+ //
1180
+ // The functions return a newly-allocated `EVP_PKEY` on success or NULL on
1181
+ // error.
1182
+ //
1183
+ // To support both uncompressed and compressed forms, call
1184
+ // `EVP_PKEY_from_ec_uncompressed_point` when the input begins with 0x04 and
1185
+ // `EVP_PKEY_from_ec_compressed_point` otherwise. Uncompressed form is more
1186
+ // common.
1187
+ OPENSSL_EXPORT EVP_PKEY *EVP_PKEY_from_ec_uncompressed_point(
1188
+ const EVP_PKEY_ALG *alg, const uint8_t *in, size_t len);
1189
+ OPENSSL_EXPORT EVP_PKEY *EVP_PKEY_from_ec_compressed_point(
1190
+ const EVP_PKEY_ALG *alg, const uint8_t *in, size_t len);
1191
+
1192
+ // The following functions marshal `key`'s EC public key in compressed or
1193
+ // uncompressed X9.62 format, respectively, and write the result to `cbb`. They
1194
+ // return one on success and zero on error. It is an error if `key` is not an EC
1195
+ // key.
1196
+ OPENSSL_EXPORT int EVP_PKEY_marshal_ec_uncompressed_point(CBB *cbb,
1197
+ const EVP_PKEY *key);
1198
+ OPENSSL_EXPORT int EVP_PKEY_marshal_ec_compressed_point(CBB *cbb,
1199
+ const EVP_PKEY *key);
1200
+
1201
+ // EVP_PKEY_from_ec_private_scalar decodes `len` bytes from `in` as an EC
1202
+ // private key, encoded as a big-endian, zero-padded integer. The EC curve is
1203
+ // determined by `alg`, which must be an EC algorithm (i.e. one of
1204
+ // `EVP_pkey_ec_*`). The input must be fully reduced and padded to the size of
1205
+ // the group order (e.g. 32 bytes for P-256) or the import will fail.
1206
+ //
1207
+ // This function returns a newly-allocated `EVP_PKEY` on success or NULL on
1208
+ // error.
1209
+ OPENSSL_EXPORT EVP_PKEY *EVP_PKEY_from_ec_private_scalar(
1210
+ const EVP_PKEY_ALG *alg, const uint8_t *in, size_t len);
1211
+
1212
+ // EVP_PKEY_marshal_ec_private_scalar marshals `key`'s private key as a
1213
+ // big-endian, zero-padded integer EC scalar and writes the result to `cbb`. It
1214
+ // returns one on success or zero on error. It is an error if `key` is not an EC
1215
+ // key.
1216
+ OPENSSL_EXPORT int EVP_PKEY_marshal_ec_private_scalar(CBB *cbb,
1217
+ const EVP_PKEY *key);
1218
+
1219
+ // EVP_PKEY_get_ec_curve_nid returns `pkey`'s curve as a NID constant, such as
1220
+ // `NID_X9_62_prime256v1`, or `NID_undef` if `pkey` is not an EC key.
1221
+ OPENSSL_EXPORT int EVP_PKEY_get_ec_curve_nid(const EVP_PKEY *pkey);
1222
+
1223
+ // EVP_PKEY_get_ec_point_conv_form returns `pkey`'s point conversion form as a
1224
+ // `POINT_CONVERSION_*` constant, or zero if `pkey` is not an EC key.
1225
+ OPENSSL_EXPORT int EVP_PKEY_get_ec_point_conv_form(const EVP_PKEY *pkey);
1226
+
1227
+ // EVP_PKEY_CTX_set_ec_paramgen_curve_nid sets the curve used for
1228
+ // `EVP_PKEY_keygen` or `EVP_PKEY_paramgen` operations to `nid`. It returns one
1229
+ // on success and zero on error.
1230
+ OPENSSL_EXPORT int EVP_PKEY_CTX_set_ec_paramgen_curve_nid(EVP_PKEY_CTX *ctx,
1231
+ int nid);
1232
+
1233
+
1234
+ // Diffie-Hellman-specific control functions.
1235
+
1236
+ // EVP_PKEY_CTX_set_dh_pad configures whether `ctx`, which must be an
1237
+ // `EVP_PKEY_derive` operation, configures the handling of leading zeros in the
1238
+ // Diffie-Hellman shared secret. If `pad` is zero, leading zeros are removed
1239
+ // from the secret. If `pad` is non-zero, the fixed-width shared secret is used
1240
+ // unmodified, as in PKCS #3. If this function is not called, the default is to
1241
+ // remove leading zeros.
1242
+ //
1243
+ // WARNING: The behavior when `pad` is zero leaks information about the shared
1244
+ // secret. This may result in side channel attacks such as
1245
+ // https://raccoon-attack.com/, particularly when the same private key is used
1246
+ // for multiple operations.
1247
+ OPENSSL_EXPORT int EVP_PKEY_CTX_set_dh_pad(EVP_PKEY_CTX *ctx, int pad);
1248
+
1249
+
1250
+ // Key encapsulation mechanism algorithms.
1251
+ //
1252
+ // Two APIs for working with key encapsulation mechanism (KEM) algorithms are
1253
+ // provided:
1254
+ //
1255
+ // 1. Create an `EVP_PKEY_CTX`, initialize it for the appropriate KEM operation
1256
+ // (see `EVP_PKEY_encapsulate_init` and `EVP_PKEY_decapsulate_init`), then
1257
+ // run the operation. This matches the OpenSSL API.
1258
+ //
1259
+ // 2. Pass an appropriate `EVP_KEM` object to the functions below to use it
1260
+ // for encapsulation and decapsulation operations with compatible `EVP_PKEY`
1261
+ // objects. This API requires fewer steps.
1262
+ //
1263
+ // The `EVP_KEM` API is only compatible with KEMs that use fixed-length
1264
+ // ciphertexts and secrets.
1265
+
1266
+ // EVP_kem_ml_kem_* implement ML-KEM, defined in FIPS 203.
1267
+ OPENSSL_EXPORT const EVP_KEM *EVP_kem_ml_kem_768(void);
1268
+ OPENSSL_EXPORT const EVP_KEM *EVP_kem_ml_kem_1024(void);
1269
+
1270
+ // EVP_kem_xwing implements the hybrid KEM known as X-Wing or MLKEM768-X25519,
1271
+ // defined in draft-irtf-cfrg-concrete-hybrid-kems.
1272
+ OPENSSL_EXPORT const EVP_KEM *EVP_kem_xwing(void);
1273
+
1274
+ // TODO(crbug.com/449751916): Add more supported KEMs.
1275
+
1276
+ // EVP_KEM_ciphertext_len returns the fixed length, in bytes, of a ciphertext
1277
+ // produced and consumed by `kem`.
1278
+ OPENSSL_EXPORT size_t EVP_KEM_ciphertext_len(const EVP_KEM *kem);
1279
+
1280
+ // EVP_KEM_secret_len returns the fixed length, in bytes, of the shared
1281
+ // secret produced and consumed by `kem`.
1282
+ OPENSSL_EXPORT size_t EVP_KEM_secret_len(const EVP_KEM *kem);
1283
+
1284
+ // EVP_KEM_entropy_len_for_testing returns the fixed length, in bytes, of the
1285
+ // external entropy to provide to `EVP_KEM_encap_external_entropy_for_testing`.
1286
+ //
1287
+ // WARNING: There should be no reason to use this function in production.
1288
+ OPENSSL_EXPORT size_t EVP_KEM_entropy_len_for_testing(const EVP_KEM *kem);
1289
+
1290
+ // EVP_KEM_encap uses `kem` to encapsulate a `peer_key`. It outputs a
1291
+ // ciphertext of length `ciphertext_len` into `*out_ciphertext` and outputs a
1292
+ // shared secret of length `secret_len` into `*out_secret`. `peer_key` must be
1293
+ // a public key of the type expected by `kem`. `ciphertext_len` and
1294
+ // `secret_len` must match the output of `EVP_KEM_ciphertext_len` and
1295
+ // `EVP_KEM_secret_len`, respectively, when called with `kem`. This function
1296
+ // returns one on success or zero on failure.
1297
+ OPENSSL_EXPORT int EVP_KEM_encap(const EVP_KEM *kem, uint8_t *out_ciphertext,
1298
+ size_t ciphertext_len, uint8_t *out_secret,
1299
+ size_t secret_len, const EVP_PKEY *peer_key);
1300
+
1301
+ // EVP_KEM_encap_external_entropy_for_testing behaves like `EVP_KEM_encap`, but
1302
+ // takes `entropy_len` bytes of external `entropy` to behave deterministically
1303
+ // for testing. The format of `entropy` depends on `kem`. `entropy_len` must
1304
+ // match the output of `EVP_KEM_entropy_len_for_testing` when called with `kem`.
1305
+ //
1306
+ // WARNING: This function is only exported to help callers in testing systems
1307
+ // against fixed test vectors. It must only be used for this purpose, and not in
1308
+ // production. If `entropy` is predictable or known to an attacker, security
1309
+ // properties of the KEM will not hold.
1310
+ OPENSSL_EXPORT int EVP_KEM_encap_external_entropy_for_testing(
1311
+ const EVP_KEM *kem, uint8_t *out_ciphertext, size_t ciphertext_len,
1312
+ uint8_t *out_secret, size_t secret_len, const EVP_PKEY *peer_key,
1313
+ const uint8_t *entropy, size_t entropy_len);
1314
+
1315
+ // EVP_KEM_decap uses `kem` to decapsulate a `ciphertext` of length
1316
+ // `ciphertext_len`, using `key` as a decapsulation key. It outputs a shared
1317
+ // secret of length `secret_len` into `*out_secret`. `key` must be a private key
1318
+ // of the type expected by `kem`. `secret_len` must match the output of
1319
+ // `EVP_KEM_secret_len` when called with `kem`. This function returns one on
1320
+ // success or zero on failure. If `ciphertext` has been corrupted, the function
1321
+ // may fail or it may output a shared secret that appears to be random. Any
1322
+ // subsequent symmetric encryption using `*out_secret` must use an authenticated
1323
+ // encryption scheme in order to discover the decapsulation failure.
1324
+ OPENSSL_EXPORT int EVP_KEM_decap(const EVP_KEM *kem, uint8_t *out_secret,
1325
+ size_t secret_len, const uint8_t *ciphertext,
1326
+ size_t ciphertext_len, const EVP_PKEY *key);
1327
+
1328
+
1329
+ // Deprecated functions.
1330
+
1331
+ // EVP_PKEY_RSA2 was historically an alternate form for RSA public keys (OID
1332
+ // 2.5.8.1.1), but is no longer accepted.
1333
+ #define EVP_PKEY_RSA2 NID_rsa
1334
+
1335
+ // EVP_PKEY_X448 is defined for OpenSSL compatibility, but we do not support
1336
+ // X448 and attempts to create keys will fail.
1337
+ #define EVP_PKEY_X448 NID_X448
1338
+
1339
+ // EVP_PKEY_ED448 is defined for OpenSSL compatibility, but we do not support
1340
+ // Ed448 and attempts to create keys will fail.
1341
+ #define EVP_PKEY_ED448 NID_ED448
1342
+
1343
+ // EVP_PKEY_get0 returns NULL. This function is provided for compatibility with
1344
+ // OpenSSL but does not return anything. Use the typed `EVP_PKEY_get0_*`
1345
+ // functions instead.
1346
+ OPENSSL_EXPORT void *EVP_PKEY_get0(const EVP_PKEY *pkey);
1347
+
1348
+ // OpenSSL_add_all_algorithms does nothing.
1349
+ OPENSSL_EXPORT void OpenSSL_add_all_algorithms(void);
1350
+
1351
+ // OPENSSL_add_all_algorithms_conf does nothing.
1352
+ OPENSSL_EXPORT void OPENSSL_add_all_algorithms_conf(void);
1353
+
1354
+ // OpenSSL_add_all_ciphers does nothing.
1355
+ OPENSSL_EXPORT void OpenSSL_add_all_ciphers(void);
1356
+
1357
+ // OpenSSL_add_all_digests does nothing.
1358
+ OPENSSL_EXPORT void OpenSSL_add_all_digests(void);
1359
+
1360
+ // EVP_cleanup does nothing.
1361
+ OPENSSL_EXPORT void EVP_cleanup(void);
1362
+
1363
+ // EVP_default_properties_is_fips_enabled calls `FIPS_mode`.
1364
+ OPENSSL_EXPORT int EVP_default_properties_is_fips_enabled(OSSL_LIB_CTX *libctx);
1365
+
1366
+ OPENSSL_EXPORT void EVP_CIPHER_do_all_sorted(
1367
+ void (*callback)(const EVP_CIPHER *cipher, const char *name,
1368
+ const char *unused, void *arg),
1369
+ void *arg);
1370
+
1371
+ OPENSSL_EXPORT void EVP_MD_do_all_sorted(void (*callback)(const EVP_MD *md,
1372
+ const char *name,
1373
+ const char *unused,
1374
+ void *arg),
1375
+ void *arg);
1376
+
1377
+ OPENSSL_EXPORT void EVP_MD_do_all(void (*callback)(const EVP_MD *md,
1378
+ const char *name,
1379
+ const char *unused,
1380
+ void *arg),
1381
+ void *arg);
1382
+
1383
+ OPENSSL_EXPORT void EVP_MD_do_all_provided(
1384
+ OSSL_LIB_CTX *libctx, void (*callback)(EVP_MD *md, void *arg), void *arg);
1385
+
1386
+ // i2d_PrivateKey marshals a private key from `key` to type-specific format, as
1387
+ // described in `i2d_SAMPLE`.
1388
+ //
1389
+ // RSA keys are serialized as a DER-encoded RSAPublicKey (RFC 8017) structure.
1390
+ // EC keys are serialized as a DER-encoded ECPrivateKey (RFC 5915) structure.
1391
+ //
1392
+ // Use `RSA_marshal_private_key` or `EC_KEY_marshal_private_key` instead.
1393
+ OPENSSL_EXPORT int i2d_PrivateKey(const EVP_PKEY *key, uint8_t **outp);
1394
+
1395
+ // i2d_PublicKey marshals a public key from `key` to a type-specific format, as
1396
+ // described in `i2d_SAMPLE`.
1397
+ //
1398
+ // RSA keys are serialized as a DER-encoded RSAPublicKey (RFC 8017) structure.
1399
+ // EC keys are serialized as an EC point per SEC 1.
1400
+ //
1401
+ // Use `RSA_marshal_public_key` or `EC_POINT_point2cbb` instead.
1402
+ OPENSSL_EXPORT int i2d_PublicKey(const EVP_PKEY *key, uint8_t **outp);
1403
+
1404
+ // d2i_PrivateKey parses a DER-encoded private key from `len` bytes at `*inp`,
1405
+ // as described in `d2i_SAMPLE`. The private key must have type `type`,
1406
+ // otherwise it will be rejected.
1407
+ //
1408
+ // This function tries to detect one of several formats. Instead, use
1409
+ // `EVP_parse_private_key` for a PrivateKeyInfo, `RSA_parse_private_key` for an
1410
+ // RSAPrivateKey, and `EC_parse_private_key` for an ECPrivateKey.
1411
+ OPENSSL_EXPORT EVP_PKEY *d2i_PrivateKey(int type, EVP_PKEY **out,
1412
+ const uint8_t **inp, long len);
1413
+
1414
+ // d2i_AutoPrivateKey acts the same as `d2i_PrivateKey`, but detects the type
1415
+ // of the private key.
1416
+ //
1417
+ // This function tries to detect one of several formats. Instead, use
1418
+ // `EVP_parse_private_key` for a PrivateKeyInfo, `RSA_parse_private_key` for an
1419
+ // RSAPrivateKey, and `EC_parse_private_key` for an ECPrivateKey.
1420
+ OPENSSL_EXPORT EVP_PKEY *d2i_AutoPrivateKey(EVP_PKEY **out, const uint8_t **inp,
1421
+ long len);
1422
+
1423
+ // d2i_PublicKey parses a public key from `len` bytes at `*inp` in a type-
1424
+ // specific format specified by `type`, as described in `d2i_SAMPLE`.
1425
+ //
1426
+ // The only supported value for `type` is `EVP_PKEY_RSA`, which parses a
1427
+ // DER-encoded RSAPublicKey (RFC 8017) structure. Parsing EC keys is not
1428
+ // supported by this function.
1429
+ //
1430
+ // Use `RSA_parse_public_key` instead.
1431
+ OPENSSL_EXPORT EVP_PKEY *d2i_PublicKey(int type, EVP_PKEY **out,
1432
+ const uint8_t **inp, long len);
1433
+
1434
+ // EVP_PKEY_CTX_set_ec_param_enc returns one if `encoding` is
1435
+ // `OPENSSL_EC_NAMED_CURVE` or zero with an error otherwise.
1436
+ OPENSSL_EXPORT int EVP_PKEY_CTX_set_ec_param_enc(EVP_PKEY_CTX *ctx,
1437
+ int encoding);
1438
+
1439
+ // EVP_PKEY_set_type sets the type of `pkey` to `type`. It returns one if
1440
+ // successful or zero if the `type` argument is not one of the `EVP_PKEY_*`
1441
+ // values supported for use with this function. If `pkey` is NULL, it simply
1442
+ // reports whether the type is known.
1443
+ //
1444
+ // There are very few cases where this function is useful. Changing `pkey`'s
1445
+ // type clears any previously stored keys, so there is no benefit to loading a
1446
+ // key and then changing its type. Although `pkey` is left with a type
1447
+ // configured, it has no key, and functions which set a key, such as
1448
+ // `EVP_PKEY_set1_RSA`, will configure a type anyway. If writing unit tests that
1449
+ // are only sensitive to the type of a key, it is preferable to construct a real
1450
+ // key, so that tests are more representative of production code.
1451
+ //
1452
+ // The only API pattern which requires this function is
1453
+ // `EVP_PKEY_set1_tls_encodedpoint` with X25519, which requires a half-empty
1454
+ // `EVP_PKEY` that was first configured with `EVP_PKEY_X25519`. Currently, all
1455
+ // other values of `type` will result in an error.
1456
+ OPENSSL_EXPORT int EVP_PKEY_set_type(EVP_PKEY *pkey, int type);
1457
+
1458
+ // EVP_PKEY_set1_tls_encodedpoint replaces `pkey` with a public key encoded by
1459
+ // `in`. It returns one on success and zero on error.
1460
+ //
1461
+ // If `pkey` is an EC key, the format is an X9.62 point and `pkey` must already
1462
+ // have an EC group configured. If it is an X25519 key, it is the 32-byte X25519
1463
+ // public key representation. This function is not supported for other key types
1464
+ // and will fail.
1465
+ OPENSSL_EXPORT int EVP_PKEY_set1_tls_encodedpoint(EVP_PKEY *pkey,
1466
+ const uint8_t *in,
1467
+ size_t len);
1468
+
1469
+ // EVP_PKEY_get1_tls_encodedpoint sets `*out_ptr` to a newly-allocated buffer
1470
+ // containing the raw encoded public key for `pkey`. The caller must call
1471
+ // `OPENSSL_free` to release this buffer. The function returns the length of the
1472
+ // buffer on success and zero on error.
1473
+ //
1474
+ // If `pkey` is an EC key, the format is an X9.62 point with uncompressed
1475
+ // coordinates. If it is an X25519 key, it is the 32-byte X25519 public key
1476
+ // representation. This function is not supported for other key types and will
1477
+ // fail.
1478
+ OPENSSL_EXPORT size_t EVP_PKEY_get1_tls_encodedpoint(const EVP_PKEY *pkey,
1479
+ uint8_t **out_ptr);
1480
+
1481
+ // EVP_PKEY_base_id calls `EVP_PKEY_id`.
1482
+ OPENSSL_EXPORT int EVP_PKEY_base_id(const EVP_PKEY *pkey);
1483
+
1484
+ // EVP_PKEY_CTX_set_rsa_pss_keygen_md returns 0.
1485
+ OPENSSL_EXPORT int EVP_PKEY_CTX_set_rsa_pss_keygen_md(EVP_PKEY_CTX *ctx,
1486
+ const EVP_MD *md);
1487
+
1488
+ // EVP_PKEY_CTX_set_rsa_pss_keygen_saltlen returns 0.
1489
+ OPENSSL_EXPORT int EVP_PKEY_CTX_set_rsa_pss_keygen_saltlen(EVP_PKEY_CTX *ctx,
1490
+ int salt_len);
1491
+
1492
+ // EVP_PKEY_CTX_set_rsa_pss_keygen_mgf1_md returns 0.
1493
+ OPENSSL_EXPORT int EVP_PKEY_CTX_set_rsa_pss_keygen_mgf1_md(EVP_PKEY_CTX *ctx,
1494
+ const EVP_MD *md);
1495
+
1496
+ // i2d_PUBKEY marshals `pkey` as a DER-encoded SubjectPublicKeyInfo, as
1497
+ // described in `i2d_SAMPLE`.
1498
+ //
1499
+ // Use `EVP_marshal_public_key` instead.
1500
+ OPENSSL_EXPORT int i2d_PUBKEY(const EVP_PKEY *pkey, uint8_t **outp);
1501
+
1502
+ // d2i_PUBKEY parses a DER-encoded SubjectPublicKeyInfo from `len` bytes at
1503
+ // `*inp`, as described in `d2i_SAMPLE`.
1504
+ //
1505
+ // Use `EVP_parse_public_key` instead.
1506
+ OPENSSL_EXPORT EVP_PKEY *d2i_PUBKEY(EVP_PKEY **out, const uint8_t **inp,
1507
+ long len);
1508
+
1509
+ // i2d_RSA_PUBKEY marshals `rsa` as a DER-encoded SubjectPublicKeyInfo
1510
+ // structure, as described in `i2d_SAMPLE`.
1511
+ //
1512
+ // Use `EVP_marshal_public_key` instead.
1513
+ OPENSSL_EXPORT int i2d_RSA_PUBKEY(const RSA *rsa, uint8_t **outp);
1514
+
1515
+ // d2i_RSA_PUBKEY parses an RSA public key as a DER-encoded SubjectPublicKeyInfo
1516
+ // from `len` bytes at `*inp`, as described in `d2i_SAMPLE`.
1517
+ // SubjectPublicKeyInfo structures containing other key types are rejected.
1518
+ //
1519
+ // Use `EVP_parse_public_key` instead.
1520
+ OPENSSL_EXPORT RSA *d2i_RSA_PUBKEY(RSA **out, const uint8_t **inp, long len);
1521
+
1522
+ // i2d_DSA_PUBKEY marshals `dsa` as a DER-encoded SubjectPublicKeyInfo, as
1523
+ // described in `i2d_SAMPLE`.
1524
+ //
1525
+ // Use `EVP_marshal_public_key` instead.
1526
+ OPENSSL_EXPORT int i2d_DSA_PUBKEY(const DSA *dsa, uint8_t **outp);
1527
+
1528
+ // d2i_DSA_PUBKEY parses a DSA public key as a DER-encoded SubjectPublicKeyInfo
1529
+ // from `len` bytes at `*inp`, as described in `d2i_SAMPLE`.
1530
+ // SubjectPublicKeyInfo structures containing other key types are rejected.
1531
+ //
1532
+ // Use `EVP_parse_public_key` instead.
1533
+ OPENSSL_EXPORT DSA *d2i_DSA_PUBKEY(DSA **out, const uint8_t **inp, long len);
1534
+
1535
+ // i2d_EC_PUBKEY marshals `ec_key` as a DER-encoded SubjectPublicKeyInfo, as
1536
+ // described in `i2d_SAMPLE`.
1537
+ //
1538
+ // Use `EVP_marshal_public_key` instead.
1539
+ OPENSSL_EXPORT int i2d_EC_PUBKEY(const EC_KEY *ec_key, uint8_t **outp);
1540
+
1541
+ // d2i_EC_PUBKEY parses an EC public key as a DER-encoded SubjectPublicKeyInfo
1542
+ // from `len` bytes at `*inp`, as described in `d2i_SAMPLE`.
1543
+ // SubjectPublicKeyInfo structures containing other key types are rejected.
1544
+ //
1545
+ // Use `EVP_parse_public_key` instead.
1546
+ OPENSSL_EXPORT EC_KEY *d2i_EC_PUBKEY(EC_KEY **out, const uint8_t **inp,
1547
+ long len);
1548
+
1549
+ // EVP_PKEY_CTX_set_dsa_paramgen_bits returns zero.
1550
+ OPENSSL_EXPORT int EVP_PKEY_CTX_set_dsa_paramgen_bits(EVP_PKEY_CTX *ctx,
1551
+ int nbits);
1552
+
1553
+ // EVP_PKEY_CTX_set_dsa_paramgen_q_bits returns zero.
1554
+ OPENSSL_EXPORT int EVP_PKEY_CTX_set_dsa_paramgen_q_bits(EVP_PKEY_CTX *ctx,
1555
+ int qbits);
1556
+
1557
+ // EVP_PKEY_assign sets the underlying key of `pkey` to `key`, which must be of
1558
+ // the given type. If successful, it returns one. If the `type` argument
1559
+ // is not one of `EVP_PKEY_RSA`, `EVP_PKEY_DSA`, or `EVP_PKEY_EC` values or if
1560
+ // `key` is NULL, it returns zero. This function may not be used with other
1561
+ // `EVP_PKEY_*` types.
1562
+ //
1563
+ // Use the `EVP_PKEY_assign_*` functions instead.
1564
+ OPENSSL_EXPORT int EVP_PKEY_assign(EVP_PKEY *pkey, int type, void *key);
1565
+
1566
+ // EVP_PKEY_type returns `nid`.
1567
+ OPENSSL_EXPORT int EVP_PKEY_type(int nid);
1568
+
1569
+ // EVP_PKEY_new_raw_private_key interprets `in` as a raw private key of type
1570
+ // `type`, which must be an `EVP_PKEY_*` constant, such as `EVP_PKEY_X25519`,
1571
+ // and returns a newly-allocated `EVP_PKEY`, or nullptr on error.
1572
+ //
1573
+ // Prefer `EVP_PKEY_from_raw_private_key`, which allows dead code elimination to
1574
+ // discard algorithms that aren't reachable from the caller.
1575
+ OPENSSL_EXPORT EVP_PKEY *EVP_PKEY_new_raw_private_key(int type, ENGINE *unused,
1576
+ const uint8_t *in,
1577
+ size_t len);
1578
+
1579
+ // EVP_PKEY_new_raw_public_key interprets `in` as a raw public key of type
1580
+ // `type`, which must be an `EVP_PKEY_*` constant, such as `EVP_PKEY_X25519`,
1581
+ // and returns a newly-allocated `EVP_PKEY`, or nullptr on error.
1582
+ //
1583
+ // Prefer `EVP_PKEY_from_raw_private_key`, which allows dead code elimination to
1584
+ // discard algorithms that aren't reachable from the caller.
1585
+ OPENSSL_EXPORT EVP_PKEY *EVP_PKEY_new_raw_public_key(int type, ENGINE *unused,
1586
+ const uint8_t *in,
1587
+ size_t len);
1588
+
1589
+ // EVP_PKEY_cmp calls `EVP_PKEY_eq`. It returns one if public keys are equal and
1590
+ // zero otherwise.
1591
+ //
1592
+ // WARNING: This differs from the traditional return value of a "cmp" function.
1593
+ OPENSSL_EXPORT int EVP_PKEY_cmp(const EVP_PKEY *a, const EVP_PKEY *b);
1594
+
1595
+ // EVP_PKEY_cmp_parameters calls `EVP_PKEY_parameters_eq`. It returns one if
1596
+ // parameters are equal and zero otherwise.
1597
+ //
1598
+ // WARNING: This differs from the traditional return value of a "cmp" function.
1599
+ OPENSSL_EXPORT int EVP_PKEY_cmp_parameters(const EVP_PKEY *a,
1600
+ const EVP_PKEY *b);
1601
+
1602
+
1603
+ // Preprocessor compatibility section (hidden).
1604
+ //
1605
+ // Historically, a number of APIs were implemented in OpenSSL as macros and
1606
+ // constants to 'ctrl' functions. To avoid breaking #ifdefs in consumers, this
1607
+ // section defines a number of legacy macros.
1608
+
1609
+ // `BORINGSSL_PREFIX` already makes some of these symbols into macros, so there
1610
+ // is no need to define conflicting macros; however it is compiler specific
1611
+ // which ones become macros.
1612
+ #if !defined(EVP_PKEY_CTX_set_rsa_oaep_md)
1613
+ #define EVP_PKEY_CTX_set_rsa_oaep_md EVP_PKEY_CTX_set_rsa_oaep_md
1614
+ #endif
1615
+ #if !defined(EVP_PKEY_CTX_set0_rsa_oaep_label)
1616
+ #define EVP_PKEY_CTX_set0_rsa_oaep_label EVP_PKEY_CTX_set0_rsa_oaep_label
1617
+ #endif
1618
+
1619
+
1620
+ // Nodejs compatibility section (hidden).
1621
+ //
1622
+ // These defines exist for node.js, with the hope that we can eliminate the
1623
+ // need for them over time.
1624
+
1625
+ #define EVPerr(function, reason) \
1626
+ ERR_put_error(ERR_LIB_EVP, 0, reason, __FILE__, __LINE__)
1627
+
1628
+
1629
+ #if defined(__cplusplus)
1630
+ } // extern C
1631
+
1632
+ extern "C++" {
1633
+ BSSL_NAMESPACE_BEGIN
1634
+
1635
+ BORINGSSL_MAKE_DELETER(EVP_PKEY, EVP_PKEY_free)
1636
+ BORINGSSL_MAKE_UP_REF(EVP_PKEY, EVP_PKEY_up_ref)
1637
+ BORINGSSL_MAKE_DELETER(EVP_PKEY_CTX, EVP_PKEY_CTX_free)
1638
+
1639
+ BSSL_NAMESPACE_END
1640
+
1641
+ } // extern C++
1642
+
1643
+ #endif
1644
+
1645
+ #endif // OPENSSL_HEADER_EVP_H