visaljs 0.0.1 → 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 (1008) hide show
  1. package/README.md +17 -1
  2. package/cli.js +565 -75
  3. package/node/include/js_node.h +28 -5
  4. package/node/include/js_uv.h +36 -0
  5. package/node/prelude/crypto.js +7 -10
  6. package/node/prelude/dns.js +99 -0
  7. package/node/prelude/dns_promises.js +10 -0
  8. package/node/prelude/http.js +1039 -195
  9. package/node/prelude/internal/crypto/asym.js +39 -12
  10. package/node/prelude/internal/crypto/dh_groups.js +12 -0
  11. package/node/prelude/internal/crypto/diffiehellman.js +354 -0
  12. package/node/prelude/internal/crypto/hash.js +1 -1
  13. package/node/prelude/internal/crypto/key_type.js +3 -0
  14. package/node/prelude/internal/crypto/keys.js +39 -9
  15. package/node/prelude/internal/http_agent.js +249 -0
  16. package/node/prelude/internal/net.js +33 -0
  17. package/node/prelude/internal/socketaddress.js +249 -0
  18. package/node/prelude/internal/tls/common.js +306 -0
  19. package/node/prelude/internal/tls/wrap.js +1217 -0
  20. package/node/prelude/internal/tls/x509.js +394 -0
  21. package/node/prelude/net.js +1083 -50
  22. package/node/prelude/stream.js +6 -0
  23. package/node/prelude/tls.js +141 -0
  24. package/node/prelude/util.js +5 -2
  25. package/node/prelude/util_types.js +85 -0
  26. package/node/src/host_http.c +268 -270
  27. package/node/src/host_loop.c +84 -0
  28. package/node/src/host_net.c +495 -0
  29. package/node/src/host_sys.c +16 -0
  30. package/package.json +1 -1
  31. package/runtime/include/js_builtins.h +16 -0
  32. package/runtime/include/js_console.h +2 -0
  33. package/runtime/include/js_core.def +23 -0
  34. package/runtime/include/js_crypto.h +23 -0
  35. package/runtime/include/js_generator.h +2 -3
  36. package/runtime/include/js_promise.h +0 -2
  37. package/runtime/src/async_iter.c +4 -1
  38. package/runtime/src/boringssl_support.cc +34 -0
  39. package/runtime/src/builtin_table.c +8 -0
  40. package/runtime/src/components.c +10 -0
  41. package/runtime/src/console.c +6 -18
  42. package/runtime/src/core_all.c +1 -0
  43. package/runtime/src/crypto_asym.c +450 -241
  44. package/runtime/src/crypto_bn.c +91 -0
  45. package/runtime/src/crypto_cipher.c +153 -75
  46. package/runtime/src/crypto_hash.c +68 -53
  47. package/runtime/src/crypto_internal.h +55 -26
  48. package/runtime/src/crypto_pkey.c +198 -61
  49. package/runtime/src/crypto_subtle.c +42 -16
  50. package/runtime/src/crypto_tls.c +678 -0
  51. package/runtime/src/generator.c +8 -1
  52. package/runtime/src/global.c +2 -4
  53. package/runtime/src/internal.h +0 -1
  54. package/runtime/src/jobs.c +2 -1
  55. package/runtime/src/promise.c +4 -1
  56. package/runtime/src/tls_roots.gen.h +3215 -0
  57. package/runtime/src/util_types.c +52 -0
  58. package/runtime/src/weak.c +2 -1
  59. package/runtime/third_party/boringssl/LICENSE +238 -0
  60. package/runtime/third_party/boringssl/README.md +46 -0
  61. package/runtime/third_party/boringssl/VERSION +1 -0
  62. package/runtime/third_party/boringssl/crypto/aes/aes.cc +44 -0
  63. package/runtime/third_party/boringssl/crypto/armv8_feature_parsing.h +67 -0
  64. package/runtime/third_party/boringssl/crypto/asn1/a_bitstr.cc +297 -0
  65. package/runtime/third_party/boringssl/crypto/asn1/a_bool.cc +50 -0
  66. package/runtime/third_party/boringssl/crypto/asn1/a_d2i_fp.cc +47 -0
  67. package/runtime/third_party/boringssl/crypto/asn1/a_dup.cc +42 -0
  68. package/runtime/third_party/boringssl/crypto/asn1/a_gentm.cc +130 -0
  69. package/runtime/third_party/boringssl/crypto/asn1/a_i2d_fp.cc +44 -0
  70. package/runtime/third_party/boringssl/crypto/asn1/a_int.cc +467 -0
  71. package/runtime/third_party/boringssl/crypto/asn1/a_mbstr.cc +242 -0
  72. package/runtime/third_party/boringssl/crypto/asn1/a_object.cc +191 -0
  73. package/runtime/third_party/boringssl/crypto/asn1/a_octet.cc +32 -0
  74. package/runtime/third_party/boringssl/crypto/asn1/a_strex.cc +411 -0
  75. package/runtime/third_party/boringssl/crypto/asn1/a_strnid.cc +208 -0
  76. package/runtime/third_party/boringssl/crypto/asn1/a_time.cc +248 -0
  77. package/runtime/third_party/boringssl/crypto/asn1/a_type.cc +467 -0
  78. package/runtime/third_party/boringssl/crypto/asn1/a_utctm.cc +128 -0
  79. package/runtime/third_party/boringssl/crypto/asn1/asn1_lib.cc +453 -0
  80. package/runtime/third_party/boringssl/crypto/asn1/asn1_par.cc +61 -0
  81. package/runtime/third_party/boringssl/crypto/asn1/asn_pack.cc +56 -0
  82. package/runtime/third_party/boringssl/crypto/asn1/f_int.cc +63 -0
  83. package/runtime/third_party/boringssl/crypto/asn1/f_string.cc +52 -0
  84. package/runtime/third_party/boringssl/crypto/asn1/internal.h +430 -0
  85. package/runtime/third_party/boringssl/crypto/asn1/posix_time.cc +244 -0
  86. package/runtime/third_party/boringssl/crypto/asn1/tasn_dec.cc +611 -0
  87. package/runtime/third_party/boringssl/crypto/asn1/tasn_enc.cc +348 -0
  88. package/runtime/third_party/boringssl/crypto/asn1/tasn_fre.cc +163 -0
  89. package/runtime/third_party/boringssl/crypto/asn1/tasn_new.cc +274 -0
  90. package/runtime/third_party/boringssl/crypto/asn1/tasn_typ.cc +92 -0
  91. package/runtime/third_party/boringssl/crypto/asn1/tasn_utl.cc +218 -0
  92. package/runtime/third_party/boringssl/crypto/base64/base64.cc +433 -0
  93. package/runtime/third_party/boringssl/crypto/bcm_support.h +62 -0
  94. package/runtime/third_party/boringssl/crypto/bio/bio.cc +715 -0
  95. package/runtime/third_party/boringssl/crypto/bio/bio_mem.cc +260 -0
  96. package/runtime/third_party/boringssl/crypto/bio/connect.cc +463 -0
  97. package/runtime/third_party/boringssl/crypto/bio/errno.cc +52 -0
  98. package/runtime/third_party/boringssl/crypto/bio/fd.cc +193 -0
  99. package/runtime/third_party/boringssl/crypto/bio/file.cc +283 -0
  100. package/runtime/third_party/boringssl/crypto/bio/hexdump.cc +154 -0
  101. package/runtime/third_party/boringssl/crypto/bio/internal.h +128 -0
  102. package/runtime/third_party/boringssl/crypto/bio/pair.cc +426 -0
  103. package/runtime/third_party/boringssl/crypto/bio/printf.cc +59 -0
  104. package/runtime/third_party/boringssl/crypto/bio/socket.cc +210 -0
  105. package/runtime/third_party/boringssl/crypto/bio/socket_helper.cc +179 -0
  106. package/runtime/third_party/boringssl/crypto/blake2/blake2.cc +173 -0
  107. package/runtime/third_party/boringssl/crypto/bn/bn_asn1.cc +57 -0
  108. package/runtime/third_party/boringssl/crypto/bn/convert.cc +409 -0
  109. package/runtime/third_party/boringssl/crypto/bn/div.cc +102 -0
  110. package/runtime/third_party/boringssl/crypto/bn/exponentiation.cc +168 -0
  111. package/runtime/third_party/boringssl/crypto/bn/sqrt.cc +93 -0
  112. package/runtime/third_party/boringssl/crypto/buf/buf.cc +119 -0
  113. package/runtime/third_party/boringssl/crypto/bytestring/asn1_compat.cc +54 -0
  114. package/runtime/third_party/boringssl/crypto/bytestring/ber.cc +268 -0
  115. package/runtime/third_party/boringssl/crypto/bytestring/cbb.cc +787 -0
  116. package/runtime/third_party/boringssl/crypto/bytestring/cbs.cc +977 -0
  117. package/runtime/third_party/boringssl/crypto/bytestring/internal.h +134 -0
  118. package/runtime/third_party/boringssl/crypto/bytestring/unicode.cc +156 -0
  119. package/runtime/third_party/boringssl/crypto/chacha/chacha.cc +226 -0
  120. package/runtime/third_party/boringssl/crypto/chacha/internal.h +103 -0
  121. package/runtime/third_party/boringssl/crypto/cipher/derive_key.cc +106 -0
  122. package/runtime/third_party/boringssl/crypto/cipher/e_aesctrhmac.cc +294 -0
  123. package/runtime/third_party/boringssl/crypto/cipher/e_aeseax.cc +351 -0
  124. package/runtime/third_party/boringssl/crypto/cipher/e_aesgcmsiv.cc +918 -0
  125. package/runtime/third_party/boringssl/crypto/cipher/e_chacha20poly1305.cc +404 -0
  126. package/runtime/third_party/boringssl/crypto/cipher/e_des.cc +214 -0
  127. package/runtime/third_party/boringssl/crypto/cipher/e_null.cc +55 -0
  128. package/runtime/third_party/boringssl/crypto/cipher/e_rc2.cc +432 -0
  129. package/runtime/third_party/boringssl/crypto/cipher/e_rc4.cc +56 -0
  130. package/runtime/third_party/boringssl/crypto/cipher/e_tls.cc +615 -0
  131. package/runtime/third_party/boringssl/crypto/cipher/get_cipher.cc +85 -0
  132. package/runtime/third_party/boringssl/crypto/cipher/internal.h +399 -0
  133. package/runtime/third_party/boringssl/crypto/cipher/tls_cbc.cc +476 -0
  134. package/runtime/third_party/boringssl/crypto/cms/cms.cc +178 -0
  135. package/runtime/third_party/boringssl/crypto/conf/conf.cc +637 -0
  136. package/runtime/third_party/boringssl/crypto/conf/internal.h +54 -0
  137. package/runtime/third_party/boringssl/crypto/cpu_aarch64_apple.cc +76 -0
  138. package/runtime/third_party/boringssl/crypto/cpu_aarch64_fuchsia.cc +58 -0
  139. package/runtime/third_party/boringssl/crypto/cpu_aarch64_linux.cc +66 -0
  140. package/runtime/third_party/boringssl/crypto/cpu_aarch64_openbsd.cc +45 -0
  141. package/runtime/third_party/boringssl/crypto/cpu_aarch64_sysreg.cc +66 -0
  142. package/runtime/third_party/boringssl/crypto/cpu_aarch64_win.cc +52 -0
  143. package/runtime/third_party/boringssl/crypto/cpu_arm_freebsd.cc +55 -0
  144. package/runtime/third_party/boringssl/crypto/cpu_arm_linux.cc +173 -0
  145. package/runtime/third_party/boringssl/crypto/cpu_arm_linux.h +141 -0
  146. package/runtime/third_party/boringssl/crypto/cpu_intel.cc +287 -0
  147. package/runtime/third_party/boringssl/crypto/crypto.cc +152 -0
  148. package/runtime/third_party/boringssl/crypto/curve25519/asm/x25519-asm-arm.S +2124 -0
  149. package/runtime/third_party/boringssl/crypto/curve25519/cpace.cc +227 -0
  150. package/runtime/third_party/boringssl/crypto/curve25519/curve25519.cc +2436 -0
  151. package/runtime/third_party/boringssl/crypto/curve25519/curve25519_64_adx.cc +18 -0
  152. package/runtime/third_party/boringssl/crypto/curve25519/curve25519_tables.h +3264 -0
  153. package/runtime/third_party/boringssl/crypto/curve25519/internal.h +202 -0
  154. package/runtime/third_party/boringssl/crypto/curve25519/spake25519.cc +532 -0
  155. package/runtime/third_party/boringssl/crypto/des/des.cc +837 -0
  156. package/runtime/third_party/boringssl/crypto/des/internal.h +144 -0
  157. package/runtime/third_party/boringssl/crypto/dh/dh_asn1.cc +109 -0
  158. package/runtime/third_party/boringssl/crypto/dh/params.cc +411 -0
  159. package/runtime/third_party/boringssl/crypto/digest/digest_extra.cc +361 -0
  160. package/runtime/third_party/boringssl/crypto/dsa/dsa.cc +922 -0
  161. package/runtime/third_party/boringssl/crypto/dsa/dsa_asn1.cc +306 -0
  162. package/runtime/third_party/boringssl/crypto/dsa/internal.h +56 -0
  163. package/runtime/third_party/boringssl/crypto/ec/ec_asn1.cc +542 -0
  164. package/runtime/third_party/boringssl/crypto/ec/ec_derive.cc +94 -0
  165. package/runtime/third_party/boringssl/crypto/ec/hash_to_curve.cc +773 -0
  166. package/runtime/third_party/boringssl/crypto/ec/internal.h +114 -0
  167. package/runtime/third_party/boringssl/crypto/ecdh/ecdh.cc +75 -0
  168. package/runtime/third_party/boringssl/crypto/ecdsa/ecdsa_asn1.cc +337 -0
  169. package/runtime/third_party/boringssl/crypto/ecdsa/ecdsa_p1363.cc +54 -0
  170. package/runtime/third_party/boringssl/crypto/engine/engine.cc +95 -0
  171. package/runtime/third_party/boringssl/crypto/err/err.cc +820 -0
  172. package/runtime/third_party/boringssl/crypto/err/internal.h +45 -0
  173. package/runtime/third_party/boringssl/crypto/evp/evp.cc +454 -0
  174. package/runtime/third_party/boringssl/crypto/evp/evp_asn1.cc +439 -0
  175. package/runtime/third_party/boringssl/crypto/evp/evp_ctx.cc +541 -0
  176. package/runtime/third_party/boringssl/crypto/evp/evp_kem.cc +101 -0
  177. package/runtime/third_party/boringssl/crypto/evp/internal.h +427 -0
  178. package/runtime/third_party/boringssl/crypto/evp/p_dh.cc +326 -0
  179. package/runtime/third_party/boringssl/crypto/evp/p_dsa.cc +333 -0
  180. package/runtime/third_party/boringssl/crypto/evp/p_ec.cc +736 -0
  181. package/runtime/third_party/boringssl/crypto/evp/p_ed25519.cc +359 -0
  182. package/runtime/third_party/boringssl/crypto/evp/p_hkdf.cc +204 -0
  183. package/runtime/third_party/boringssl/crypto/evp/p_mldsa.cc +549 -0
  184. package/runtime/third_party/boringssl/crypto/evp/p_mlkem.cc +510 -0
  185. package/runtime/third_party/boringssl/crypto/evp/p_rsa.cc +1185 -0
  186. package/runtime/third_party/boringssl/crypto/evp/p_x25519.cc +371 -0
  187. package/runtime/third_party/boringssl/crypto/evp/p_xwing.cc +300 -0
  188. package/runtime/third_party/boringssl/crypto/evp/pbkdf.cc +105 -0
  189. package/runtime/third_party/boringssl/crypto/evp/print.cc +287 -0
  190. package/runtime/third_party/boringssl/crypto/evp/scrypt.cc +218 -0
  191. package/runtime/third_party/boringssl/crypto/evp/sign.cc +95 -0
  192. package/runtime/third_party/boringssl/crypto/ex_data.cc +140 -0
  193. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/aes.cc.inc +208 -0
  194. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/aes_nohw.cc.inc +1279 -0
  195. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/cbc.cc.inc +132 -0
  196. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/cfb.cc.inc +168 -0
  197. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/ctr.cc.inc +102 -0
  198. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/gcm.cc.inc +614 -0
  199. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/gcm_nohw.cc.inc +304 -0
  200. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/internal.h +590 -0
  201. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/key_wrap.cc.inc +211 -0
  202. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/mode_wrappers.cc.inc +97 -0
  203. package/runtime/third_party/boringssl/crypto/fipsmodule/aes/ofb.cc.inc +55 -0
  204. package/runtime/third_party/boringssl/crypto/fipsmodule/bcm.cc +288 -0
  205. package/runtime/third_party/boringssl/crypto/fipsmodule/bcm_interface.h +953 -0
  206. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/add.cc.inc +276 -0
  207. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/asm/x86_64-gcc.cc.inc +573 -0
  208. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/bn.cc.inc +377 -0
  209. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/bytes.cc.inc +230 -0
  210. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/cmp.cc.inc +161 -0
  211. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/ctx.cc.inc +127 -0
  212. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/div.cc.inc +738 -0
  213. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/div_extra.cc.inc +90 -0
  214. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/exponentiation.cc.inc +743 -0
  215. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/gcd.cc.inc +281 -0
  216. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/gcd_extra.cc.inc +327 -0
  217. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/generic.cc.inc +579 -0
  218. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/internal.h +810 -0
  219. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/jacobi.cc.inc +101 -0
  220. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/montgomery.cc.inc +408 -0
  221. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/montgomery_inv.cc.inc +179 -0
  222. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/mul.cc.inc +347 -0
  223. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/prime.cc.inc +931 -0
  224. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/random.cc.inc +261 -0
  225. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/rsaz_exp.cc.inc +144 -0
  226. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/rsaz_exp.h +109 -0
  227. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/shift.cc.inc +317 -0
  228. package/runtime/third_party/boringssl/crypto/fipsmodule/bn/sqrt.cc.inc +370 -0
  229. package/runtime/third_party/boringssl/crypto/fipsmodule/cipher/aead.cc.inc +619 -0
  230. package/runtime/third_party/boringssl/crypto/fipsmodule/cipher/cipher.cc.inc +837 -0
  231. package/runtime/third_party/boringssl/crypto/fipsmodule/cipher/e_aes.cc.inc +1240 -0
  232. package/runtime/third_party/boringssl/crypto/fipsmodule/cipher/e_aesccm.cc.inc +440 -0
  233. package/runtime/third_party/boringssl/crypto/fipsmodule/cipher/internal.h +461 -0
  234. package/runtime/third_party/boringssl/crypto/fipsmodule/cmac/cmac.cc.inc +293 -0
  235. package/runtime/third_party/boringssl/crypto/fipsmodule/delocate.h +95 -0
  236. package/runtime/third_party/boringssl/crypto/fipsmodule/dh/check.cc.inc +198 -0
  237. package/runtime/third_party/boringssl/crypto/fipsmodule/dh/dh.cc.inc +401 -0
  238. package/runtime/third_party/boringssl/crypto/fipsmodule/dh/internal.h +63 -0
  239. package/runtime/third_party/boringssl/crypto/fipsmodule/digest/digest.cc.inc +221 -0
  240. package/runtime/third_party/boringssl/crypto/fipsmodule/digest/digests.cc.inc +184 -0
  241. package/runtime/third_party/boringssl/crypto/fipsmodule/digest/internal.h +72 -0
  242. package/runtime/third_party/boringssl/crypto/fipsmodule/digest/md32_common.h +166 -0
  243. package/runtime/third_party/boringssl/crypto/fipsmodule/digestsign/digestsign.cc.inc +230 -0
  244. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/builtin_curves.h +277 -0
  245. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/ec.cc.inc +1024 -0
  246. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/ec_key.cc.inc +536 -0
  247. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/ec_montgomery.cc.inc +379 -0
  248. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/felem.cc.inc +250 -0
  249. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/internal.h +752 -0
  250. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/oct.cc.inc +174 -0
  251. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/p256-nistz-table.h +9502 -0
  252. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/p256-nistz.cc.inc +740 -0
  253. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/p256-nistz.h +207 -0
  254. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/p256.cc.inc +578 -0
  255. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/p256_table.h +297 -0
  256. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/scalar.cc.inc +184 -0
  257. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/simple.cc.inc +246 -0
  258. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/simple_mul.cc.inc +274 -0
  259. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/util.cc.inc +258 -0
  260. package/runtime/third_party/boringssl/crypto/fipsmodule/ec/wnaf.cc.inc +224 -0
  261. package/runtime/third_party/boringssl/crypto/fipsmodule/ecdh/ecdh.cc.inc +91 -0
  262. package/runtime/third_party/boringssl/crypto/fipsmodule/ecdsa/ecdsa.cc.inc +288 -0
  263. package/runtime/third_party/boringssl/crypto/fipsmodule/ecdsa/internal.h +57 -0
  264. package/runtime/third_party/boringssl/crypto/fipsmodule/entropy/internal.h +38 -0
  265. package/runtime/third_party/boringssl/crypto/fipsmodule/entropy/jitter.cc.inc +487 -0
  266. package/runtime/third_party/boringssl/crypto/fipsmodule/entropy/sha512.cc.inc +329 -0
  267. package/runtime/third_party/boringssl/crypto/fipsmodule/fips_shared_support.cc +28 -0
  268. package/runtime/third_party/boringssl/crypto/fipsmodule/hkdf/hkdf.cc.inc +114 -0
  269. package/runtime/third_party/boringssl/crypto/fipsmodule/hmac/hmac.cc.inc +218 -0
  270. package/runtime/third_party/boringssl/crypto/fipsmodule/keccak/internal.h +165 -0
  271. package/runtime/third_party/boringssl/crypto/fipsmodule/keccak/keccak.cc.inc +647 -0
  272. package/runtime/third_party/boringssl/crypto/fipsmodule/mldsa/fips_known_values.inc +1345 -0
  273. package/runtime/third_party/boringssl/crypto/fipsmodule/mldsa/mldsa.cc.inc +3323 -0
  274. package/runtime/third_party/boringssl/crypto/fipsmodule/mlkem/fips_known_values.inc +411 -0
  275. package/runtime/third_party/boringssl/crypto/fipsmodule/mlkem/mlkem.cc.inc +1856 -0
  276. package/runtime/third_party/boringssl/crypto/fipsmodule/rand/android_entropy_client.cc.inc +82 -0
  277. package/runtime/third_party/boringssl/crypto/fipsmodule/rand/ctrdrbg.cc.inc +401 -0
  278. package/runtime/third_party/boringssl/crypto/fipsmodule/rand/internal.h +99 -0
  279. package/runtime/third_party/boringssl/crypto/fipsmodule/rand/rand.cc.inc +486 -0
  280. package/runtime/third_party/boringssl/crypto/fipsmodule/rsa/internal.h +167 -0
  281. package/runtime/third_party/boringssl/crypto/fipsmodule/rsa/padding.cc.inc +371 -0
  282. package/runtime/third_party/boringssl/crypto/fipsmodule/rsa/rsa.cc.inc +996 -0
  283. package/runtime/third_party/boringssl/crypto/fipsmodule/rsa/rsa_impl.cc.inc +1000 -0
  284. package/runtime/third_party/boringssl/crypto/fipsmodule/self_check/fips.cc.inc +129 -0
  285. package/runtime/third_party/boringssl/crypto/fipsmodule/self_check/self_check.cc.inc +1093 -0
  286. package/runtime/third_party/boringssl/crypto/fipsmodule/service_indicator/internal.h +112 -0
  287. package/runtime/third_party/boringssl/crypto/fipsmodule/service_indicator/service_indicator.cc.inc +330 -0
  288. package/runtime/third_party/boringssl/crypto/fipsmodule/sha/internal.h +205 -0
  289. package/runtime/third_party/boringssl/crypto/fipsmodule/sha/sha1.cc.inc +404 -0
  290. package/runtime/third_party/boringssl/crypto/fipsmodule/sha/sha256.cc.inc +315 -0
  291. package/runtime/third_party/boringssl/crypto/fipsmodule/sha/sha512.cc.inc +473 -0
  292. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/address.h +144 -0
  293. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/fips_known_values.inc +674 -0
  294. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/fors.cc.inc +179 -0
  295. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/fors.h +48 -0
  296. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/merkle.cc.inc +164 -0
  297. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/merkle.h +58 -0
  298. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/params.h +178 -0
  299. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/slhdsa.cc.inc +690 -0
  300. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/thash.cc.inc +326 -0
  301. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/thash.h +71 -0
  302. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/wots.cc.inc +172 -0
  303. package/runtime/third_party/boringssl/crypto/fipsmodule/slhdsa/wots.h +40 -0
  304. package/runtime/third_party/boringssl/crypto/fipsmodule/tls/internal.h +33 -0
  305. package/runtime/third_party/boringssl/crypto/fipsmodule/tls/kdf.cc.inc +180 -0
  306. package/runtime/third_party/boringssl/crypto/fuzzer_mode.cc +30 -0
  307. package/runtime/third_party/boringssl/crypto/hpke/hpke.cc +1514 -0
  308. package/runtime/third_party/boringssl/crypto/hrss/asm/poly_rq_mul.S +8489 -0
  309. package/runtime/third_party/boringssl/crypto/hrss/hrss.cc +2189 -0
  310. package/runtime/third_party/boringssl/crypto/hrss/internal.h +64 -0
  311. package/runtime/third_party/boringssl/crypto/internal.h +1767 -0
  312. package/runtime/third_party/boringssl/crypto/lhash/internal.h +222 -0
  313. package/runtime/third_party/boringssl/crypto/lhash/lhash.cc +312 -0
  314. package/runtime/third_party/boringssl/crypto/md4/md4.cc +207 -0
  315. package/runtime/third_party/boringssl/crypto/md5/internal.h +34 -0
  316. package/runtime/third_party/boringssl/crypto/md5/md5.cc +255 -0
  317. package/runtime/third_party/boringssl/crypto/mem.cc +577 -0
  318. package/runtime/third_party/boringssl/crypto/mem_internal.h +706 -0
  319. package/runtime/third_party/boringssl/crypto/mldsa/mldsa.cc +296 -0
  320. package/runtime/third_party/boringssl/crypto/mlkem/mlkem.cc +108 -0
  321. package/runtime/third_party/boringssl/crypto/obj/obj.cc +494 -0
  322. package/runtime/third_party/boringssl/crypto/obj/obj_dat.h +11722 -0
  323. package/runtime/third_party/boringssl/crypto/obj/obj_xref.cc +83 -0
  324. package/runtime/third_party/boringssl/crypto/params_internal.h +30 -0
  325. package/runtime/third_party/boringssl/crypto/pem/internal.h +135 -0
  326. package/runtime/third_party/boringssl/crypto/pem/pem_all.cc +153 -0
  327. package/runtime/third_party/boringssl/crypto/pem/pem_info.cc +250 -0
  328. package/runtime/third_party/boringssl/crypto/pem/pem_lib.cc +707 -0
  329. package/runtime/third_party/boringssl/crypto/pem/pem_oth.cc +45 -0
  330. package/runtime/third_party/boringssl/crypto/pem/pem_pk8.cc +211 -0
  331. package/runtime/third_party/boringssl/crypto/pem/pem_pkey.cc +147 -0
  332. package/runtime/third_party/boringssl/crypto/pem/pem_x509.cc +25 -0
  333. package/runtime/third_party/boringssl/crypto/pem/pem_xaux.cc +25 -0
  334. package/runtime/third_party/boringssl/crypto/pkcs7/internal.h +67 -0
  335. package/runtime/third_party/boringssl/crypto/pkcs7/pkcs7.cc +198 -0
  336. package/runtime/third_party/boringssl/crypto/pkcs7/pkcs7_x509.cc +527 -0
  337. package/runtime/third_party/boringssl/crypto/pkcs8/internal.h +98 -0
  338. package/runtime/third_party/boringssl/crypto/pkcs8/p5_pbev2.cc +286 -0
  339. package/runtime/third_party/boringssl/crypto/pkcs8/pkcs8.cc +473 -0
  340. package/runtime/third_party/boringssl/crypto/pkcs8/pkcs8_x509.cc +1328 -0
  341. package/runtime/third_party/boringssl/crypto/poly1305/internal.h +54 -0
  342. package/runtime/third_party/boringssl/crypto/poly1305/poly1305.cc +315 -0
  343. package/runtime/third_party/boringssl/crypto/poly1305/poly1305_arm.cc +294 -0
  344. package/runtime/third_party/boringssl/crypto/poly1305/poly1305_arm_asm.S +2017 -0
  345. package/runtime/third_party/boringssl/crypto/poly1305/poly1305_vec.cc +853 -0
  346. package/runtime/third_party/boringssl/crypto/pool/internal.h +95 -0
  347. package/runtime/third_party/boringssl/crypto/pool/pool.cc +282 -0
  348. package/runtime/third_party/boringssl/crypto/rand/deterministic.cc +58 -0
  349. package/runtime/third_party/boringssl/crypto/rand/fork_detect.cc +222 -0
  350. package/runtime/third_party/boringssl/crypto/rand/forkunsafe.cc +44 -0
  351. package/runtime/third_party/boringssl/crypto/rand/getentropy.cc +53 -0
  352. package/runtime/third_party/boringssl/crypto/rand/internal.h +67 -0
  353. package/runtime/third_party/boringssl/crypto/rand/ios.cc +35 -0
  354. package/runtime/third_party/boringssl/crypto/rand/rand.cc +79 -0
  355. package/runtime/third_party/boringssl/crypto/rand/trusty.cc +39 -0
  356. package/runtime/third_party/boringssl/crypto/rand/urandom.cc +149 -0
  357. package/runtime/third_party/boringssl/crypto/rand/windows.cc +91 -0
  358. package/runtime/third_party/boringssl/crypto/rc4/rc4.cc +56 -0
  359. package/runtime/third_party/boringssl/crypto/refcount.cc +49 -0
  360. package/runtime/third_party/boringssl/crypto/rsa/internal.h +51 -0
  361. package/runtime/third_party/boringssl/crypto/rsa/rsa_asn1.cc +404 -0
  362. package/runtime/third_party/boringssl/crypto/rsa/rsa_crypt.cc +530 -0
  363. package/runtime/third_party/boringssl/crypto/rsa/rsa_extra.cc +30 -0
  364. package/runtime/third_party/boringssl/crypto/rsa/rsa_print.cc +25 -0
  365. package/runtime/third_party/boringssl/crypto/sha/sha1.cc +55 -0
  366. package/runtime/third_party/boringssl/crypto/sha/sha256.cc +89 -0
  367. package/runtime/third_party/boringssl/crypto/sha/sha512.cc +106 -0
  368. package/runtime/third_party/boringssl/crypto/siphash/siphash.cc +81 -0
  369. package/runtime/third_party/boringssl/crypto/slhdsa/slhdsa.cc +167 -0
  370. package/runtime/third_party/boringssl/crypto/spake2plus/internal.h +204 -0
  371. package/runtime/third_party/boringssl/crypto/spake2plus/spake2plus.cc +501 -0
  372. package/runtime/third_party/boringssl/crypto/stack/stack.cc +462 -0
  373. package/runtime/third_party/boringssl/crypto/thread.cc +68 -0
  374. package/runtime/third_party/boringssl/crypto/thread_none.cc +48 -0
  375. package/runtime/third_party/boringssl/crypto/thread_pthread.cc +138 -0
  376. package/runtime/third_party/boringssl/crypto/thread_win.cc +227 -0
  377. package/runtime/third_party/boringssl/crypto/trust_token/internal.h +405 -0
  378. package/runtime/third_party/boringssl/crypto/trust_token/pmbtoken.cc +1672 -0
  379. package/runtime/third_party/boringssl/crypto/trust_token/trust_token.cc +701 -0
  380. package/runtime/third_party/boringssl/crypto/trust_token/voprf.cc +1266 -0
  381. package/runtime/third_party/boringssl/crypto/x509/a_digest.cc +52 -0
  382. package/runtime/third_party/boringssl/crypto/x509/a_sign.cc +100 -0
  383. package/runtime/third_party/boringssl/crypto/x509/a_verify.cc +77 -0
  384. package/runtime/third_party/boringssl/crypto/x509/algorithm.cc +167 -0
  385. package/runtime/third_party/boringssl/crypto/x509/asn1_gen.cc +540 -0
  386. package/runtime/third_party/boringssl/crypto/x509/by_dir.cc +301 -0
  387. package/runtime/third_party/boringssl/crypto/x509/by_file.cc +226 -0
  388. package/runtime/third_party/boringssl/crypto/x509/i2d_pr.cc +37 -0
  389. package/runtime/third_party/boringssl/crypto/x509/internal.h +697 -0
  390. package/runtime/third_party/boringssl/crypto/x509/name_print.cc +187 -0
  391. package/runtime/third_party/boringssl/crypto/x509/policy.cc +686 -0
  392. package/runtime/third_party/boringssl/crypto/x509/rsa_pss.cc +187 -0
  393. package/runtime/third_party/boringssl/crypto/x509/t_crl.cc +106 -0
  394. package/runtime/third_party/boringssl/crypto/x509/t_req.cc +206 -0
  395. package/runtime/third_party/boringssl/crypto/x509/t_x509.cc +292 -0
  396. package/runtime/third_party/boringssl/crypto/x509/t_x509a.cc +81 -0
  397. package/runtime/third_party/boringssl/crypto/x509/v3_akey.cc +174 -0
  398. package/runtime/third_party/boringssl/crypto/x509/v3_akeya.cc +31 -0
  399. package/runtime/third_party/boringssl/crypto/x509/v3_alt.cc +636 -0
  400. package/runtime/third_party/boringssl/crypto/x509/v3_bcons.cc +96 -0
  401. package/runtime/third_party/boringssl/crypto/x509/v3_bitst.cc +100 -0
  402. package/runtime/third_party/boringssl/crypto/x509/v3_conf.cc +369 -0
  403. package/runtime/third_party/boringssl/crypto/x509/v3_cpols.cc +417 -0
  404. package/runtime/third_party/boringssl/crypto/x509/v3_crld.cc +471 -0
  405. package/runtime/third_party/boringssl/crypto/x509/v3_enum.cc +74 -0
  406. package/runtime/third_party/boringssl/crypto/x509/v3_extku.cc +97 -0
  407. package/runtime/third_party/boringssl/crypto/x509/v3_genn.cc +238 -0
  408. package/runtime/third_party/boringssl/crypto/x509/v3_ia5.cc +83 -0
  409. package/runtime/third_party/boringssl/crypto/x509/v3_info.cc +162 -0
  410. package/runtime/third_party/boringssl/crypto/x509/v3_int.cc +83 -0
  411. package/runtime/third_party/boringssl/crypto/x509/v3_lib.cc +349 -0
  412. package/runtime/third_party/boringssl/crypto/x509/v3_ncons.cc +798 -0
  413. package/runtime/third_party/boringssl/crypto/x509/v3_ocsp.cc +92 -0
  414. package/runtime/third_party/boringssl/crypto/x509/v3_pcons.cc +102 -0
  415. package/runtime/third_party/boringssl/crypto/x509/v3_pmaps.cc +110 -0
  416. package/runtime/third_party/boringssl/crypto/x509/v3_prn.cc +183 -0
  417. package/runtime/third_party/boringssl/crypto/x509/v3_purp.cc +580 -0
  418. package/runtime/third_party/boringssl/crypto/x509/v3_skey.cc +128 -0
  419. package/runtime/third_party/boringssl/crypto/x509/v3_utl.cc +1311 -0
  420. package/runtime/third_party/boringssl/crypto/x509/x509.cc +47 -0
  421. package/runtime/third_party/boringssl/crypto/x509/x509_att.cc +188 -0
  422. package/runtime/third_party/boringssl/crypto/x509/x509_cmp.cc +243 -0
  423. package/runtime/third_party/boringssl/crypto/x509/x509_d2.cc +66 -0
  424. package/runtime/third_party/boringssl/crypto/x509/x509_def.cc +42 -0
  425. package/runtime/third_party/boringssl/crypto/x509/x509_ext.cc +161 -0
  426. package/runtime/third_party/boringssl/crypto/x509/x509_lu.cc +570 -0
  427. package/runtime/third_party/boringssl/crypto/x509/x509_mtc.cc +598 -0
  428. package/runtime/third_party/boringssl/crypto/x509/x509_obj.cc +169 -0
  429. package/runtime/third_party/boringssl/crypto/x509/x509_req.cc +248 -0
  430. package/runtime/third_party/boringssl/crypto/x509/x509_set.cc +166 -0
  431. package/runtime/third_party/boringssl/crypto/x509/x509_trs.cc +123 -0
  432. package/runtime/third_party/boringssl/crypto/x509/x509_txt.cc +147 -0
  433. package/runtime/third_party/boringssl/crypto/x509/x509_v3.cc +249 -0
  434. package/runtime/third_party/boringssl/crypto/x509/x509_vfy.cc +1531 -0
  435. package/runtime/third_party/boringssl/crypto/x509/x509_vpm.cc +449 -0
  436. package/runtime/third_party/boringssl/crypto/x509/x509cset.cc +222 -0
  437. package/runtime/third_party/boringssl/crypto/x509/x509name.cc +377 -0
  438. package/runtime/third_party/boringssl/crypto/x509/x509rset.cc +55 -0
  439. package/runtime/third_party/boringssl/crypto/x509/x509spki.cc +91 -0
  440. package/runtime/third_party/boringssl/crypto/x509/x_algor.cc +223 -0
  441. package/runtime/third_party/boringssl/crypto/x509/x_all.cc +352 -0
  442. package/runtime/third_party/boringssl/crypto/x509/x_attrib.cc +61 -0
  443. package/runtime/third_party/boringssl/crypto/x509/x_crl.cc +325 -0
  444. package/runtime/third_party/boringssl/crypto/x509/x_exten.cc +42 -0
  445. package/runtime/third_party/boringssl/crypto/x509/x_name.cc +407 -0
  446. package/runtime/third_party/boringssl/crypto/x509/x_pubkey.cc +199 -0
  447. package/runtime/third_party/boringssl/crypto/x509/x_req.cc +80 -0
  448. package/runtime/third_party/boringssl/crypto/x509/x_sig.cc +51 -0
  449. package/runtime/third_party/boringssl/crypto/x509/x_spki.cc +44 -0
  450. package/runtime/third_party/boringssl/crypto/x509/x_x509.cc +495 -0
  451. package/runtime/third_party/boringssl/crypto/x509/x_x509a.cc +169 -0
  452. package/runtime/third_party/boringssl/crypto/xwing/xwing.cc +257 -0
  453. package/runtime/third_party/boringssl/gen/bcm/aes-gcm-avx2-x86_64-apple.S +1326 -0
  454. package/runtime/third_party/boringssl/gen/bcm/aes-gcm-avx2-x86_64-linux.S +1327 -0
  455. package/runtime/third_party/boringssl/gen/bcm/aes-gcm-avx512-x86_64-apple.S +1252 -0
  456. package/runtime/third_party/boringssl/gen/bcm/aes-gcm-avx512-x86_64-linux.S +1253 -0
  457. package/runtime/third_party/boringssl/gen/bcm/aesni-gcm-x86_64-apple.S +873 -0
  458. package/runtime/third_party/boringssl/gen/bcm/aesni-gcm-x86_64-linux.S +885 -0
  459. package/runtime/third_party/boringssl/gen/bcm/aesni-x86-apple.S +2490 -0
  460. package/runtime/third_party/boringssl/gen/bcm/aesni-x86-linux.S +2530 -0
  461. package/runtime/third_party/boringssl/gen/bcm/aesni-x86_64-apple.S +2413 -0
  462. package/runtime/third_party/boringssl/gen/bcm/aesni-x86_64-linux.S +2397 -0
  463. package/runtime/third_party/boringssl/gen/bcm/aesv8-armv7-linux.S +784 -0
  464. package/runtime/third_party/boringssl/gen/bcm/aesv8-armv8-apple.S +792 -0
  465. package/runtime/third_party/boringssl/gen/bcm/aesv8-armv8-linux.S +786 -0
  466. package/runtime/third_party/boringssl/gen/bcm/aesv8-armv8-win.S +798 -0
  467. package/runtime/third_party/boringssl/gen/bcm/aesv8-gcm-armv8-apple.S +2912 -0
  468. package/runtime/third_party/boringssl/gen/bcm/aesv8-gcm-armv8-linux.S +2907 -0
  469. package/runtime/third_party/boringssl/gen/bcm/aesv8-gcm-armv8-win.S +2915 -0
  470. package/runtime/third_party/boringssl/gen/bcm/armv4-mont-linux.S +932 -0
  471. package/runtime/third_party/boringssl/gen/bcm/armv8-mont-apple.S +1440 -0
  472. package/runtime/third_party/boringssl/gen/bcm/armv8-mont-linux.S +1440 -0
  473. package/runtime/third_party/boringssl/gen/bcm/armv8-mont-win.S +1446 -0
  474. package/runtime/third_party/boringssl/gen/bcm/bn-586-apple.S +530 -0
  475. package/runtime/third_party/boringssl/gen/bcm/bn-586-linux.S +540 -0
  476. package/runtime/third_party/boringssl/gen/bcm/bn-armv8-apple.S +88 -0
  477. package/runtime/third_party/boringssl/gen/bcm/bn-armv8-linux.S +87 -0
  478. package/runtime/third_party/boringssl/gen/bcm/bn-armv8-win.S +87 -0
  479. package/runtime/third_party/boringssl/gen/bcm/bsaes-armv7-linux.S +1520 -0
  480. package/runtime/third_party/boringssl/gen/bcm/co-586-apple.S +1256 -0
  481. package/runtime/third_party/boringssl/gen/bcm/co-586-linux.S +1264 -0
  482. package/runtime/third_party/boringssl/gen/bcm/ghash-armv4-linux.S +242 -0
  483. package/runtime/third_party/boringssl/gen/bcm/ghash-neon-armv8-apple.S +337 -0
  484. package/runtime/third_party/boringssl/gen/bcm/ghash-neon-armv8-linux.S +335 -0
  485. package/runtime/third_party/boringssl/gen/bcm/ghash-neon-armv8-win.S +341 -0
  486. package/runtime/third_party/boringssl/gen/bcm/ghash-ssse3-x86-apple.S +288 -0
  487. package/runtime/third_party/boringssl/gen/bcm/ghash-ssse3-x86-linux.S +292 -0
  488. package/runtime/third_party/boringssl/gen/bcm/ghash-ssse3-x86_64-apple.S +426 -0
  489. package/runtime/third_party/boringssl/gen/bcm/ghash-ssse3-x86_64-linux.S +425 -0
  490. package/runtime/third_party/boringssl/gen/bcm/ghash-x86-apple.S +322 -0
  491. package/runtime/third_party/boringssl/gen/bcm/ghash-x86-linux.S +328 -0
  492. package/runtime/third_party/boringssl/gen/bcm/ghash-x86_64-apple.S +1134 -0
  493. package/runtime/third_party/boringssl/gen/bcm/ghash-x86_64-linux.S +1129 -0
  494. package/runtime/third_party/boringssl/gen/bcm/ghashv8-armv7-linux.S +244 -0
  495. package/runtime/third_party/boringssl/gen/bcm/ghashv8-armv8-apple.S +567 -0
  496. package/runtime/third_party/boringssl/gen/bcm/ghashv8-armv8-linux.S +563 -0
  497. package/runtime/third_party/boringssl/gen/bcm/ghashv8-armv8-win.S +571 -0
  498. package/runtime/third_party/boringssl/gen/bcm/p256-armv8-asm-apple.S +1744 -0
  499. package/runtime/third_party/boringssl/gen/bcm/p256-armv8-asm-linux.S +1725 -0
  500. package/runtime/third_party/boringssl/gen/bcm/p256-armv8-asm-win.S +1765 -0
  501. package/runtime/third_party/boringssl/gen/bcm/p256-x86_64-asm-apple.S +4544 -0
  502. package/runtime/third_party/boringssl/gen/bcm/p256-x86_64-asm-linux.S +4600 -0
  503. package/runtime/third_party/boringssl/gen/bcm/p256_beeu-armv8-asm-apple.S +310 -0
  504. package/runtime/third_party/boringssl/gen/bcm/p256_beeu-armv8-asm-linux.S +310 -0
  505. package/runtime/third_party/boringssl/gen/bcm/p256_beeu-armv8-asm-win.S +310 -0
  506. package/runtime/third_party/boringssl/gen/bcm/p256_beeu-x86_64-asm-apple.S +321 -0
  507. package/runtime/third_party/boringssl/gen/bcm/p256_beeu-x86_64-asm-linux.S +335 -0
  508. package/runtime/third_party/boringssl/gen/bcm/rdrand-x86_64-apple.S +58 -0
  509. package/runtime/third_party/boringssl/gen/bcm/rdrand-x86_64-linux.S +57 -0
  510. package/runtime/third_party/boringssl/gen/bcm/rsaz-avx2-apple.S +1756 -0
  511. package/runtime/third_party/boringssl/gen/bcm/rsaz-avx2-linux.S +1751 -0
  512. package/runtime/third_party/boringssl/gen/bcm/sha1-586-apple.S +3782 -0
  513. package/runtime/third_party/boringssl/gen/bcm/sha1-586-linux.S +3788 -0
  514. package/runtime/third_party/boringssl/gen/bcm/sha1-armv4-large-linux.S +1479 -0
  515. package/runtime/third_party/boringssl/gen/bcm/sha1-armv8-apple.S +1219 -0
  516. package/runtime/third_party/boringssl/gen/bcm/sha1-armv8-linux.S +1218 -0
  517. package/runtime/third_party/boringssl/gen/bcm/sha1-armv8-win.S +1222 -0
  518. package/runtime/third_party/boringssl/gen/bcm/sha1-x86_64-apple.S +5454 -0
  519. package/runtime/third_party/boringssl/gen/bcm/sha1-x86_64-linux.S +5450 -0
  520. package/runtime/third_party/boringssl/gen/bcm/sha256-586-apple.S +5593 -0
  521. package/runtime/third_party/boringssl/gen/bcm/sha256-586-linux.S +5599 -0
  522. package/runtime/third_party/boringssl/gen/bcm/sha256-armv4-linux.S +2840 -0
  523. package/runtime/third_party/boringssl/gen/bcm/sha256-armv8-apple.S +1195 -0
  524. package/runtime/third_party/boringssl/gen/bcm/sha256-armv8-linux.S +1194 -0
  525. package/runtime/third_party/boringssl/gen/bcm/sha256-armv8-win.S +1198 -0
  526. package/runtime/third_party/boringssl/gen/bcm/sha256-x86_64-apple.S +4173 -0
  527. package/runtime/third_party/boringssl/gen/bcm/sha256-x86_64-linux.S +4170 -0
  528. package/runtime/third_party/boringssl/gen/bcm/sha512-586-apple.S +2406 -0
  529. package/runtime/third_party/boringssl/gen/bcm/sha512-586-linux.S +2410 -0
  530. package/runtime/third_party/boringssl/gen/bcm/sha512-armv4-linux.S +1857 -0
  531. package/runtime/third_party/boringssl/gen/bcm/sha512-armv8-apple.S +1598 -0
  532. package/runtime/third_party/boringssl/gen/bcm/sha512-armv8-linux.S +1597 -0
  533. package/runtime/third_party/boringssl/gen/bcm/sha512-armv8-win.S +1601 -0
  534. package/runtime/third_party/boringssl/gen/bcm/sha512-x86_64-apple.S +2979 -0
  535. package/runtime/third_party/boringssl/gen/bcm/sha512-x86_64-linux.S +2978 -0
  536. package/runtime/third_party/boringssl/gen/bcm/vpaes-armv7-linux.S +1225 -0
  537. package/runtime/third_party/boringssl/gen/bcm/vpaes-armv8-apple.S +1238 -0
  538. package/runtime/third_party/boringssl/gen/bcm/vpaes-armv8-linux.S +1220 -0
  539. package/runtime/third_party/boringssl/gen/bcm/vpaes-armv8-win.S +1256 -0
  540. package/runtime/third_party/boringssl/gen/bcm/vpaes-x86-apple.S +680 -0
  541. package/runtime/third_party/boringssl/gen/bcm/vpaes-x86-linux.S +706 -0
  542. package/runtime/third_party/boringssl/gen/bcm/vpaes-x86_64-apple.S +1146 -0
  543. package/runtime/third_party/boringssl/gen/bcm/vpaes-x86_64-linux.S +1133 -0
  544. package/runtime/third_party/boringssl/gen/bcm/x86-mont-apple.S +216 -0
  545. package/runtime/third_party/boringssl/gen/bcm/x86-mont-linux.S +218 -0
  546. package/runtime/third_party/boringssl/gen/bcm/x86_64-mont-apple.S +1238 -0
  547. package/runtime/third_party/boringssl/gen/bcm/x86_64-mont-linux.S +1237 -0
  548. package/runtime/third_party/boringssl/gen/bcm/x86_64-mont5-apple.S +3644 -0
  549. package/runtime/third_party/boringssl/gen/bcm/x86_64-mont5-linux.S +3628 -0
  550. package/runtime/third_party/boringssl/gen/boringssl_prefix_symbols_internal_x86_64_win_asm.inc +325 -0
  551. package/runtime/third_party/boringssl/gen/boringssl_prefix_symbols_internal_x86_win_asm.inc +325 -0
  552. package/runtime/third_party/boringssl/gen/crypto/aes128gcmsiv-x86_64-apple.S +3113 -0
  553. package/runtime/third_party/boringssl/gen/crypto/aes128gcmsiv-x86_64-linux.S +3091 -0
  554. package/runtime/third_party/boringssl/gen/crypto/chacha-armv4-linux.S +1450 -0
  555. package/runtime/third_party/boringssl/gen/crypto/chacha-armv8-apple.S +1969 -0
  556. package/runtime/third_party/boringssl/gen/crypto/chacha-armv8-linux.S +1967 -0
  557. package/runtime/third_party/boringssl/gen/crypto/chacha-armv8-win.S +1973 -0
  558. package/runtime/third_party/boringssl/gen/crypto/chacha-x86-apple.S +957 -0
  559. package/runtime/third_party/boringssl/gen/crypto/chacha-x86-linux.S +961 -0
  560. package/runtime/third_party/boringssl/gen/crypto/chacha-x86_64-apple.S +1608 -0
  561. package/runtime/third_party/boringssl/gen/crypto/chacha-x86_64-linux.S +1611 -0
  562. package/runtime/third_party/boringssl/gen/crypto/chacha20_poly1305_armv8-apple.S +3010 -0
  563. package/runtime/third_party/boringssl/gen/crypto/chacha20_poly1305_armv8-linux.S +3008 -0
  564. package/runtime/third_party/boringssl/gen/crypto/chacha20_poly1305_armv8-win.S +3014 -0
  565. package/runtime/third_party/boringssl/gen/crypto/chacha20_poly1305_x86_64-apple.S +8903 -0
  566. package/runtime/third_party/boringssl/gen/crypto/chacha20_poly1305_x86_64-linux.S +8940 -0
  567. package/runtime/third_party/boringssl/gen/crypto/err_data.cc +1578 -0
  568. package/runtime/third_party/boringssl/gen/crypto/md5-586-apple.S +684 -0
  569. package/runtime/third_party/boringssl/gen/crypto/md5-586-linux.S +686 -0
  570. package/runtime/third_party/boringssl/gen/crypto/md5-x86_64-apple.S +690 -0
  571. package/runtime/third_party/boringssl/gen/crypto/md5-x86_64-linux.S +695 -0
  572. package/runtime/third_party/boringssl/include/openssl/aead.h +650 -0
  573. package/runtime/third_party/boringssl/include/openssl/aes.h +173 -0
  574. package/runtime/third_party/boringssl/include/openssl/arm_arch.h +24 -0
  575. package/runtime/third_party/boringssl/include/openssl/asm_base.h +219 -0
  576. package/runtime/third_party/boringssl/include/openssl/asn1.h +2002 -0
  577. package/runtime/third_party/boringssl/include/openssl/asn1_mac.h +18 -0
  578. package/runtime/third_party/boringssl/include/openssl/asn1t.h +584 -0
  579. package/runtime/third_party/boringssl/include/openssl/base.h +548 -0
  580. package/runtime/third_party/boringssl/include/openssl/base64.h +156 -0
  581. package/runtime/third_party/boringssl/include/openssl/bio.h +1061 -0
  582. package/runtime/third_party/boringssl/include/openssl/blake2.h +63 -0
  583. package/runtime/third_party/boringssl/include/openssl/blowfish.h +58 -0
  584. package/runtime/third_party/boringssl/include/openssl/bn.h +986 -0
  585. package/runtime/third_party/boringssl/include/openssl/buf.h +95 -0
  586. package/runtime/third_party/boringssl/include/openssl/buffer.h +18 -0
  587. package/runtime/third_party/boringssl/include/openssl/bytestring.h +798 -0
  588. package/runtime/third_party/boringssl/include/openssl/cast.h +91 -0
  589. package/runtime/third_party/boringssl/include/openssl/chacha.h +47 -0
  590. package/runtime/third_party/boringssl/include/openssl/cipher.h +819 -0
  591. package/runtime/third_party/boringssl/include/openssl/cmac.h +91 -0
  592. package/runtime/third_party/boringssl/include/openssl/cms.h +147 -0
  593. package/runtime/third_party/boringssl/include/openssl/conf.h +136 -0
  594. package/runtime/third_party/boringssl/include/openssl/configuration.h +18 -0
  595. package/runtime/third_party/boringssl/include/openssl/cpu.h +18 -0
  596. package/runtime/third_party/boringssl/include/openssl/crypto.h +235 -0
  597. package/runtime/third_party/boringssl/include/openssl/ctrdrbg.h +116 -0
  598. package/runtime/third_party/boringssl/include/openssl/curve25519.h +309 -0
  599. package/runtime/third_party/boringssl/include/openssl/des.h +134 -0
  600. package/runtime/third_party/boringssl/include/openssl/dh.h +336 -0
  601. package/runtime/third_party/boringssl/include/openssl/digest.h +399 -0
  602. package/runtime/third_party/boringssl/include/openssl/dsa.h +392 -0
  603. package/runtime/third_party/boringssl/include/openssl/dtls1.h +16 -0
  604. package/runtime/third_party/boringssl/include/openssl/e_os2.h +18 -0
  605. package/runtime/third_party/boringssl/include/openssl/ec.h +530 -0
  606. package/runtime/third_party/boringssl/include/openssl/ec_key.h +358 -0
  607. package/runtime/third_party/boringssl/include/openssl/ecdh.h +67 -0
  608. package/runtime/third_party/boringssl/include/openssl/ecdsa.h +242 -0
  609. package/runtime/third_party/boringssl/include/openssl/engine.h +109 -0
  610. package/runtime/third_party/boringssl/include/openssl/err.h +416 -0
  611. package/runtime/third_party/boringssl/include/openssl/evp.h +1645 -0
  612. package/runtime/third_party/boringssl/include/openssl/evp_errors.h +66 -0
  613. package/runtime/third_party/boringssl/include/openssl/ex_data.h +117 -0
  614. package/runtime/third_party/boringssl/include/openssl/hkdf.h +68 -0
  615. package/runtime/third_party/boringssl/include/openssl/hmac.h +151 -0
  616. package/runtime/third_party/boringssl/include/openssl/hpke.h +456 -0
  617. package/runtime/third_party/boringssl/include/openssl/hrss.h +108 -0
  618. package/runtime/third_party/boringssl/include/openssl/is_boringssl.h +16 -0
  619. package/runtime/third_party/boringssl/include/openssl/kdf.h +92 -0
  620. package/runtime/third_party/boringssl/include/openssl/lhash.h +18 -0
  621. package/runtime/third_party/boringssl/include/openssl/md4.h +73 -0
  622. package/runtime/third_party/boringssl/include/openssl/md5.h +67 -0
  623. package/runtime/third_party/boringssl/include/openssl/mem.h +215 -0
  624. package/runtime/third_party/boringssl/include/openssl/mldsa.h +486 -0
  625. package/runtime/third_party/boringssl/include/openssl/mlkem.h +222 -0
  626. package/runtime/third_party/boringssl/include/openssl/nid.h +5561 -0
  627. package/runtime/third_party/boringssl/include/openssl/obj.h +225 -0
  628. package/runtime/third_party/boringssl/include/openssl/obj_mac.h +18 -0
  629. package/runtime/third_party/boringssl/include/openssl/objects.h +18 -0
  630. package/runtime/third_party/boringssl/include/openssl/opensslconf.h +108 -0
  631. package/runtime/third_party/boringssl/include/openssl/opensslv.h +18 -0
  632. package/runtime/third_party/boringssl/include/openssl/ossl_typ.h +18 -0
  633. package/runtime/third_party/boringssl/include/openssl/params.h +42 -0
  634. package/runtime/third_party/boringssl/include/openssl/pem.h +769 -0
  635. package/runtime/third_party/boringssl/include/openssl/pkcs12.h +18 -0
  636. package/runtime/third_party/boringssl/include/openssl/pkcs7.h +239 -0
  637. package/runtime/third_party/boringssl/include/openssl/pkcs8.h +267 -0
  638. package/runtime/third_party/boringssl/include/openssl/poly1305.h +52 -0
  639. package/runtime/third_party/boringssl/include/openssl/pool.h +137 -0
  640. package/runtime/third_party/boringssl/include/openssl/posix_time.h +51 -0
  641. package/runtime/third_party/boringssl/include/openssl/prefix_symbols.h +8000 -0
  642. package/runtime/third_party/boringssl/include/openssl/prefix_symbols_internal_S.h +633 -0
  643. package/runtime/third_party/boringssl/include/openssl/prefix_symbols_internal_c.h +329 -0
  644. package/runtime/third_party/boringssl/include/openssl/rand.h +138 -0
  645. package/runtime/third_party/boringssl/include/openssl/rc4.h +54 -0
  646. package/runtime/third_party/boringssl/include/openssl/ripemd.h +71 -0
  647. package/runtime/third_party/boringssl/include/openssl/rsa.h +893 -0
  648. package/runtime/third_party/boringssl/include/openssl/safestack.h +16 -0
  649. package/runtime/third_party/boringssl/include/openssl/service_indicator.h +19 -0
  650. package/runtime/third_party/boringssl/include/openssl/sha.h +108 -0
  651. package/runtime/third_party/boringssl/include/openssl/sha2.h +201 -0
  652. package/runtime/third_party/boringssl/include/openssl/siphash.h +37 -0
  653. package/runtime/third_party/boringssl/include/openssl/slhdsa.h +250 -0
  654. package/runtime/third_party/boringssl/include/openssl/span.h +376 -0
  655. package/runtime/third_party/boringssl/include/openssl/srtp.h +18 -0
  656. package/runtime/third_party/boringssl/include/openssl/ssl.h +7211 -0
  657. package/runtime/third_party/boringssl/include/openssl/ssl3.h +171 -0
  658. package/runtime/third_party/boringssl/include/openssl/stack.h +688 -0
  659. package/runtime/third_party/boringssl/include/openssl/target.h +246 -0
  660. package/runtime/third_party/boringssl/include/openssl/thread.h +114 -0
  661. package/runtime/third_party/boringssl/include/openssl/time.h +22 -0
  662. package/runtime/third_party/boringssl/include/openssl/tls1.h +263 -0
  663. package/runtime/third_party/boringssl/include/openssl/tls_prf.h +47 -0
  664. package/runtime/third_party/boringssl/include/openssl/trust_token.h +349 -0
  665. package/runtime/third_party/boringssl/include/openssl/type_check.h +37 -0
  666. package/runtime/third_party/boringssl/include/openssl/types.h +18 -0
  667. package/runtime/third_party/boringssl/include/openssl/x509.h +5404 -0
  668. package/runtime/third_party/boringssl/include/openssl/x509_vfy.h +18 -0
  669. package/runtime/third_party/boringssl/include/openssl/x509v3.h +63 -0
  670. package/runtime/third_party/boringssl/include/openssl/x509v3_errors.h +84 -0
  671. package/runtime/third_party/boringssl/include/openssl/xwing.h +115 -0
  672. package/runtime/third_party/boringssl/sources.json +696 -0
  673. package/runtime/third_party/boringssl/ssl/bio_ssl.cc +196 -0
  674. package/runtime/third_party/boringssl/ssl/d1_both.cc +1137 -0
  675. package/runtime/third_party/boringssl/ssl/d1_lib.cc +245 -0
  676. package/runtime/third_party/boringssl/ssl/d1_pkt.cc +322 -0
  677. package/runtime/third_party/boringssl/ssl/d1_srtp.cc +128 -0
  678. package/runtime/third_party/boringssl/ssl/dtls_method.cc +216 -0
  679. package/runtime/third_party/boringssl/ssl/dtls_record.cc +586 -0
  680. package/runtime/third_party/boringssl/ssl/encrypted_client_hello.cc +1110 -0
  681. package/runtime/third_party/boringssl/ssl/extensions.cc +5368 -0
  682. package/runtime/third_party/boringssl/ssl/handoff.cc +625 -0
  683. package/runtime/third_party/boringssl/ssl/handshake.cc +694 -0
  684. package/runtime/third_party/boringssl/ssl/handshake_client.cc +1958 -0
  685. package/runtime/third_party/boringssl/ssl/handshake_server.cc +1875 -0
  686. package/runtime/third_party/boringssl/ssl/internal.h +4506 -0
  687. package/runtime/third_party/boringssl/ssl/s3_both.cc +555 -0
  688. package/runtime/third_party/boringssl/ssl/s3_lib.cc +88 -0
  689. package/runtime/third_party/boringssl/ssl/s3_pkt.cc +396 -0
  690. package/runtime/third_party/boringssl/ssl/ssl_aead_ctx.cc +416 -0
  691. package/runtime/third_party/boringssl/ssl/ssl_asn1.cc +851 -0
  692. package/runtime/third_party/boringssl/ssl/ssl_buffer.cc +304 -0
  693. package/runtime/third_party/boringssl/ssl/ssl_cert.cc +723 -0
  694. package/runtime/third_party/boringssl/ssl/ssl_cipher.cc +1762 -0
  695. package/runtime/third_party/boringssl/ssl/ssl_credential.cc +913 -0
  696. package/runtime/third_party/boringssl/ssl/ssl_file.cc +375 -0
  697. package/runtime/third_party/boringssl/ssl/ssl_key_share.cc +445 -0
  698. package/runtime/third_party/boringssl/ssl/ssl_lib.cc +4132 -0
  699. package/runtime/third_party/boringssl/ssl/ssl_privkey.cc +973 -0
  700. package/runtime/third_party/boringssl/ssl/ssl_session.cc +1273 -0
  701. package/runtime/third_party/boringssl/ssl/ssl_stat.cc +162 -0
  702. package/runtime/third_party/boringssl/ssl/ssl_transcript.cc +224 -0
  703. package/runtime/third_party/boringssl/ssl/ssl_versions.cc +436 -0
  704. package/runtime/third_party/boringssl/ssl/ssl_x509.cc +1229 -0
  705. package/runtime/third_party/boringssl/ssl/t1_enc.cc +266 -0
  706. package/runtime/third_party/boringssl/ssl/tls13_both.cc +764 -0
  707. package/runtime/third_party/boringssl/ssl/tls13_client.cc +1325 -0
  708. package/runtime/third_party/boringssl/ssl/tls13_enc.cc +746 -0
  709. package/runtime/third_party/boringssl/ssl/tls13_server.cc +1623 -0
  710. package/runtime/third_party/boringssl/ssl/tls_method.cc +266 -0
  711. package/runtime/third_party/boringssl/ssl/tls_record.cc +524 -0
  712. package/runtime/third_party/boringssl/third_party/fiat/asm/fiat_curve25519_adx_mul.S +178 -0
  713. package/runtime/third_party/boringssl/third_party/fiat/asm/fiat_curve25519_adx_square.S +146 -0
  714. package/runtime/third_party/boringssl/third_party/fiat/asm/fiat_p256_adx_mul.S +177 -0
  715. package/runtime/third_party/boringssl/third_party/fiat/asm/fiat_p256_adx_sqr.S +166 -0
  716. package/runtime/third_party/boringssl/third_party/fiat/bedrock_unverified_bareminimum.c.inc +47 -0
  717. package/runtime/third_party/boringssl/third_party/fiat/bedrock_unverified_platform.c.inc +137 -0
  718. package/runtime/third_party/boringssl/third_party/fiat/curve25519_32.h +1571 -0
  719. package/runtime/third_party/boringssl/third_party/fiat/curve25519_64.h +978 -0
  720. package/runtime/third_party/boringssl/third_party/fiat/curve25519_64_adx.h +700 -0
  721. package/runtime/third_party/boringssl/third_party/fiat/curve25519_64_msvc.h +1281 -0
  722. package/runtime/third_party/boringssl/third_party/fiat/p256_32.h +4760 -0
  723. package/runtime/third_party/boringssl/third_party/fiat/p256_64.h +1984 -0
  724. package/runtime/third_party/boringssl/third_party/fiat/p256_64_msvc.h +1939 -0
  725. package/runtime/third_party/boringssl/third_party/fiat/p256_field.c.inc +26 -0
  726. package/runtime/third_party/boringssl/third_party/fiat/p256_field_32.br.c.inc +71 -0
  727. package/runtime/third_party/boringssl/third_party/fiat/p256_field_64.br.c.inc +84 -0
  728. package/runtime/third_party/boringssl/third_party/fiat/p256_point.br.c.inc +112 -0
  729. package/runtime/third_party/v8-ieee754/README.md +2 -1
  730. package/runtime/third_party/v8-ieee754/convert.py +4 -0
  731. package/runtime/third_party/v8-ieee754/ieee754.c +1 -1
  732. package/runtime/third_party/bearssl/LICENSE.txt +0 -21
  733. package/runtime/third_party/bearssl/README.txt +0 -136
  734. package/runtime/third_party/bearssl/VERSION +0 -1
  735. package/runtime/third_party/bearssl/inc/bearssl.h +0 -183
  736. package/runtime/third_party/bearssl/inc/bearssl_aead.h +0 -1059
  737. package/runtime/third_party/bearssl/inc/bearssl_block.h +0 -2618
  738. package/runtime/third_party/bearssl/inc/bearssl_ec.h +0 -967
  739. package/runtime/third_party/bearssl/inc/bearssl_hash.h +0 -1346
  740. package/runtime/third_party/bearssl/inc/bearssl_hmac.h +0 -241
  741. package/runtime/third_party/bearssl/inc/bearssl_kdf.h +0 -284
  742. package/runtime/third_party/bearssl/inc/bearssl_pem.h +0 -294
  743. package/runtime/third_party/bearssl/inc/bearssl_prf.h +0 -150
  744. package/runtime/third_party/bearssl/inc/bearssl_rand.h +0 -397
  745. package/runtime/third_party/bearssl/inc/bearssl_rsa.h +0 -1655
  746. package/runtime/third_party/bearssl/inc/bearssl_ssl.h +0 -4296
  747. package/runtime/third_party/bearssl/inc/bearssl_x509.h +0 -1474
  748. package/runtime/third_party/bearssl/src/aead/ccm.c +0 -346
  749. package/runtime/third_party/bearssl/src/aead/eax.c +0 -525
  750. package/runtime/third_party/bearssl/src/aead/gcm.c +0 -318
  751. package/runtime/third_party/bearssl/src/codec/ccopy.c +0 -44
  752. package/runtime/third_party/bearssl/src/codec/dec16be.c +0 -38
  753. package/runtime/third_party/bearssl/src/codec/dec16le.c +0 -38
  754. package/runtime/third_party/bearssl/src/codec/dec32be.c +0 -38
  755. package/runtime/third_party/bearssl/src/codec/dec32le.c +0 -38
  756. package/runtime/third_party/bearssl/src/codec/dec64be.c +0 -38
  757. package/runtime/third_party/bearssl/src/codec/dec64le.c +0 -38
  758. package/runtime/third_party/bearssl/src/codec/enc16be.c +0 -38
  759. package/runtime/third_party/bearssl/src/codec/enc16le.c +0 -38
  760. package/runtime/third_party/bearssl/src/codec/enc32be.c +0 -38
  761. package/runtime/third_party/bearssl/src/codec/enc32le.c +0 -38
  762. package/runtime/third_party/bearssl/src/codec/enc64be.c +0 -38
  763. package/runtime/third_party/bearssl/src/codec/enc64le.c +0 -38
  764. package/runtime/third_party/bearssl/src/codec/pemdec.c +0 -526
  765. package/runtime/third_party/bearssl/src/codec/pemdec.t0 +0 -314
  766. package/runtime/third_party/bearssl/src/codec/pemenc.c +0 -173
  767. package/runtime/third_party/bearssl/src/config.h +0 -247
  768. package/runtime/third_party/bearssl/src/ec/ec_all_m15.c +0 -121
  769. package/runtime/third_party/bearssl/src/ec/ec_all_m31.c +0 -171
  770. package/runtime/third_party/bearssl/src/ec/ec_c25519_i15.c +0 -398
  771. package/runtime/third_party/bearssl/src/ec/ec_c25519_i31.c +0 -390
  772. package/runtime/third_party/bearssl/src/ec/ec_c25519_m15.c +0 -1478
  773. package/runtime/third_party/bearssl/src/ec/ec_c25519_m31.c +0 -800
  774. package/runtime/third_party/bearssl/src/ec/ec_c25519_m62.c +0 -605
  775. package/runtime/third_party/bearssl/src/ec/ec_c25519_m64.c +0 -831
  776. package/runtime/third_party/bearssl/src/ec/ec_curve25519.c +0 -46
  777. package/runtime/third_party/bearssl/src/ec/ec_default.c +0 -36
  778. package/runtime/third_party/bearssl/src/ec/ec_keygen.c +0 -86
  779. package/runtime/third_party/bearssl/src/ec/ec_p256_m15.c +0 -2124
  780. package/runtime/third_party/bearssl/src/ec/ec_p256_m31.c +0 -1469
  781. package/runtime/third_party/bearssl/src/ec/ec_p256_m62.c +0 -1765
  782. package/runtime/third_party/bearssl/src/ec/ec_p256_m64.c +0 -1781
  783. package/runtime/third_party/bearssl/src/ec/ec_prime_i15.c +0 -824
  784. package/runtime/third_party/bearssl/src/ec/ec_prime_i31.c +0 -826
  785. package/runtime/third_party/bearssl/src/ec/ec_pubkey.c +0 -85
  786. package/runtime/third_party/bearssl/src/ec/ec_secp256r1.c +0 -51
  787. package/runtime/third_party/bearssl/src/ec/ec_secp384r1.c +0 -57
  788. package/runtime/third_party/bearssl/src/ec/ec_secp521r1.c +0 -64
  789. package/runtime/third_party/bearssl/src/ec/ecdsa_atr.c +0 -134
  790. package/runtime/third_party/bearssl/src/ec/ecdsa_default_sign_asn1.c +0 -36
  791. package/runtime/third_party/bearssl/src/ec/ecdsa_default_sign_raw.c +0 -36
  792. package/runtime/third_party/bearssl/src/ec/ecdsa_default_vrfy_asn1.c +0 -36
  793. package/runtime/third_party/bearssl/src/ec/ecdsa_default_vrfy_raw.c +0 -36
  794. package/runtime/third_party/bearssl/src/ec/ecdsa_i15_bits.c +0 -47
  795. package/runtime/third_party/bearssl/src/ec/ecdsa_i15_sign_asn1.c +0 -45
  796. package/runtime/third_party/bearssl/src/ec/ecdsa_i15_sign_raw.c +0 -174
  797. package/runtime/third_party/bearssl/src/ec/ecdsa_i15_vrfy_asn1.c +0 -48
  798. package/runtime/third_party/bearssl/src/ec/ecdsa_i15_vrfy_raw.c +0 -166
  799. package/runtime/third_party/bearssl/src/ec/ecdsa_i31_bits.c +0 -47
  800. package/runtime/third_party/bearssl/src/ec/ecdsa_i31_sign_asn1.c +0 -45
  801. package/runtime/third_party/bearssl/src/ec/ecdsa_i31_sign_raw.c +0 -173
  802. package/runtime/third_party/bearssl/src/ec/ecdsa_i31_vrfy_asn1.c +0 -48
  803. package/runtime/third_party/bearssl/src/ec/ecdsa_i31_vrfy_raw.c +0 -165
  804. package/runtime/third_party/bearssl/src/ec/ecdsa_rta.c +0 -121
  805. package/runtime/third_party/bearssl/src/hash/dig_oid.c +0 -84
  806. package/runtime/third_party/bearssl/src/hash/dig_size.c +0 -50
  807. package/runtime/third_party/bearssl/src/hash/ghash_ctmul.c +0 -345
  808. package/runtime/third_party/bearssl/src/hash/ghash_ctmul32.c +0 -251
  809. package/runtime/third_party/bearssl/src/hash/ghash_ctmul64.c +0 -154
  810. package/runtime/third_party/bearssl/src/hash/ghash_pclmul.c +0 -389
  811. package/runtime/third_party/bearssl/src/hash/ghash_pwr8.c +0 -411
  812. package/runtime/third_party/bearssl/src/hash/md5.c +0 -208
  813. package/runtime/third_party/bearssl/src/hash/md5sha1.c +0 -141
  814. package/runtime/third_party/bearssl/src/hash/mgf1.c +0 -56
  815. package/runtime/third_party/bearssl/src/hash/multihash.c +0 -166
  816. package/runtime/third_party/bearssl/src/hash/sha1.c +0 -191
  817. package/runtime/third_party/bearssl/src/hash/sha2big.c +0 -285
  818. package/runtime/third_party/bearssl/src/hash/sha2small.c +0 -341
  819. package/runtime/third_party/bearssl/src/inner.h +0 -2577
  820. package/runtime/third_party/bearssl/src/int/i15_add.c +0 -46
  821. package/runtime/third_party/bearssl/src/int/i15_bitlen.c +0 -44
  822. package/runtime/third_party/bearssl/src/int/i15_decmod.c +0 -124
  823. package/runtime/third_party/bearssl/src/int/i15_decode.c +0 -56
  824. package/runtime/third_party/bearssl/src/int/i15_decred.c +0 -100
  825. package/runtime/third_party/bearssl/src/int/i15_encode.c +0 -56
  826. package/runtime/third_party/bearssl/src/int/i15_fmont.c +0 -59
  827. package/runtime/third_party/bearssl/src/int/i15_iszero.c +0 -39
  828. package/runtime/third_party/bearssl/src/int/i15_moddiv.c +0 -465
  829. package/runtime/third_party/bearssl/src/int/i15_modpow.c +0 -50
  830. package/runtime/third_party/bearssl/src/int/i15_modpow2.c +0 -160
  831. package/runtime/third_party/bearssl/src/int/i15_montmul.c +0 -184
  832. package/runtime/third_party/bearssl/src/int/i15_mulacc.c +0 -61
  833. package/runtime/third_party/bearssl/src/int/i15_muladd.c +0 -173
  834. package/runtime/third_party/bearssl/src/int/i15_ninv15.c +0 -38
  835. package/runtime/third_party/bearssl/src/int/i15_reduce.c +0 -66
  836. package/runtime/third_party/bearssl/src/int/i15_rshift.c +0 -47
  837. package/runtime/third_party/bearssl/src/int/i15_sub.c +0 -46
  838. package/runtime/third_party/bearssl/src/int/i15_tmont.c +0 -36
  839. package/runtime/third_party/bearssl/src/int/i31_add.c +0 -46
  840. package/runtime/third_party/bearssl/src/int/i31_bitlen.c +0 -44
  841. package/runtime/third_party/bearssl/src/int/i31_decmod.c +0 -124
  842. package/runtime/third_party/bearssl/src/int/i31_decode.c +0 -57
  843. package/runtime/third_party/bearssl/src/int/i31_decred.c +0 -103
  844. package/runtime/third_party/bearssl/src/int/i31_encode.c +0 -79
  845. package/runtime/third_party/bearssl/src/int/i31_fmont.c +0 -60
  846. package/runtime/third_party/bearssl/src/int/i31_iszero.c +0 -39
  847. package/runtime/third_party/bearssl/src/int/i31_moddiv.c +0 -488
  848. package/runtime/third_party/bearssl/src/int/i31_modpow.c +0 -65
  849. package/runtime/third_party/bearssl/src/int/i31_modpow2.c +0 -160
  850. package/runtime/third_party/bearssl/src/int/i31_montmul.c +0 -127
  851. package/runtime/third_party/bearssl/src/int/i31_mulacc.c +0 -74
  852. package/runtime/third_party/bearssl/src/int/i31_muladd.c +0 -157
  853. package/runtime/third_party/bearssl/src/int/i31_ninv31.c +0 -39
  854. package/runtime/third_party/bearssl/src/int/i31_reduce.c +0 -66
  855. package/runtime/third_party/bearssl/src/int/i31_rshift.c +0 -47
  856. package/runtime/third_party/bearssl/src/int/i31_sub.c +0 -46
  857. package/runtime/third_party/bearssl/src/int/i31_tmont.c +0 -36
  858. package/runtime/third_party/bearssl/src/int/i32_add.c +0 -51
  859. package/runtime/third_party/bearssl/src/int/i32_bitlen.c +0 -44
  860. package/runtime/third_party/bearssl/src/int/i32_decmod.c +0 -77
  861. package/runtime/third_party/bearssl/src/int/i32_decode.c +0 -63
  862. package/runtime/third_party/bearssl/src/int/i32_decred.c +0 -107
  863. package/runtime/third_party/bearssl/src/int/i32_div32.c +0 -56
  864. package/runtime/third_party/bearssl/src/int/i32_encode.c +0 -72
  865. package/runtime/third_party/bearssl/src/int/i32_fmont.c +0 -60
  866. package/runtime/third_party/bearssl/src/int/i32_iszero.c +0 -39
  867. package/runtime/third_party/bearssl/src/int/i32_modpow.c +0 -65
  868. package/runtime/third_party/bearssl/src/int/i32_montmul.c +0 -69
  869. package/runtime/third_party/bearssl/src/int/i32_mulacc.c +0 -56
  870. package/runtime/third_party/bearssl/src/int/i32_muladd.c +0 -138
  871. package/runtime/third_party/bearssl/src/int/i32_ninv32.c +0 -39
  872. package/runtime/third_party/bearssl/src/int/i32_reduce.c +0 -66
  873. package/runtime/third_party/bearssl/src/int/i32_sub.c +0 -51
  874. package/runtime/third_party/bearssl/src/int/i32_tmont.c +0 -36
  875. package/runtime/third_party/bearssl/src/int/i62_modpow2.c +0 -493
  876. package/runtime/third_party/bearssl/src/kdf/hkdf.c +0 -107
  877. package/runtime/third_party/bearssl/src/kdf/shake.c +0 -590
  878. package/runtime/third_party/bearssl/src/mac/hmac.c +0 -122
  879. package/runtime/third_party/bearssl/src/mac/hmac_ct.c +0 -193
  880. package/runtime/third_party/bearssl/src/rand/aesctr_drbg.c +0 -206
  881. package/runtime/third_party/bearssl/src/rand/hmac_drbg.c +0 -157
  882. package/runtime/third_party/bearssl/src/rand/sysrng.c +0 -252
  883. package/runtime/third_party/bearssl/src/rsa/rsa_default_keygen.c +0 -38
  884. package/runtime/third_party/bearssl/src/rsa/rsa_default_modulus.c +0 -36
  885. package/runtime/third_party/bearssl/src/rsa/rsa_default_oaep_decrypt.c +0 -38
  886. package/runtime/third_party/bearssl/src/rsa/rsa_default_oaep_encrypt.c +0 -38
  887. package/runtime/third_party/bearssl/src/rsa/rsa_default_pkcs1_sign.c +0 -38
  888. package/runtime/third_party/bearssl/src/rsa/rsa_default_pkcs1_vrfy.c +0 -38
  889. package/runtime/third_party/bearssl/src/rsa/rsa_default_priv.c +0 -38
  890. package/runtime/third_party/bearssl/src/rsa/rsa_default_privexp.c +0 -36
  891. package/runtime/third_party/bearssl/src/rsa/rsa_default_pss_sign.c +0 -38
  892. package/runtime/third_party/bearssl/src/rsa/rsa_default_pss_vrfy.c +0 -38
  893. package/runtime/third_party/bearssl/src/rsa/rsa_default_pub.c +0 -38
  894. package/runtime/third_party/bearssl/src/rsa/rsa_default_pubexp.c +0 -36
  895. package/runtime/third_party/bearssl/src/rsa/rsa_i15_keygen.c +0 -583
  896. package/runtime/third_party/bearssl/src/rsa/rsa_i15_modulus.c +0 -99
  897. package/runtime/third_party/bearssl/src/rsa/rsa_i15_oaep_decrypt.c +0 -41
  898. package/runtime/third_party/bearssl/src/rsa/rsa_i15_oaep_encrypt.c +0 -44
  899. package/runtime/third_party/bearssl/src/rsa/rsa_i15_pkcs1_sign.c +0 -37
  900. package/runtime/third_party/bearssl/src/rsa/rsa_i15_pkcs1_vrfy.c +0 -43
  901. package/runtime/third_party/bearssl/src/rsa/rsa_i15_priv.c +0 -209
  902. package/runtime/third_party/bearssl/src/rsa/rsa_i15_privexp.c +0 -320
  903. package/runtime/third_party/bearssl/src/rsa/rsa_i15_pss_sign.c +0 -40
  904. package/runtime/third_party/bearssl/src/rsa/rsa_i15_pss_vrfy.c +0 -44
  905. package/runtime/third_party/bearssl/src/rsa/rsa_i15_pub.c +0 -113
  906. package/runtime/third_party/bearssl/src/rsa/rsa_i15_pubexp.c +0 -152
  907. package/runtime/third_party/bearssl/src/rsa/rsa_i31_keygen.c +0 -37
  908. package/runtime/third_party/bearssl/src/rsa/rsa_i31_keygen_inner.c +0 -608
  909. package/runtime/third_party/bearssl/src/rsa/rsa_i31_modulus.c +0 -99
  910. package/runtime/third_party/bearssl/src/rsa/rsa_i31_oaep_decrypt.c +0 -41
  911. package/runtime/third_party/bearssl/src/rsa/rsa_i31_oaep_encrypt.c +0 -44
  912. package/runtime/third_party/bearssl/src/rsa/rsa_i31_pkcs1_sign.c +0 -37
  913. package/runtime/third_party/bearssl/src/rsa/rsa_i31_pkcs1_vrfy.c +0 -43
  914. package/runtime/third_party/bearssl/src/rsa/rsa_i31_priv.c +0 -203
  915. package/runtime/third_party/bearssl/src/rsa/rsa_i31_privexp.c +0 -318
  916. package/runtime/third_party/bearssl/src/rsa/rsa_i31_pss_sign.c +0 -40
  917. package/runtime/third_party/bearssl/src/rsa/rsa_i31_pss_vrfy.c +0 -44
  918. package/runtime/third_party/bearssl/src/rsa/rsa_i31_pub.c +0 -106
  919. package/runtime/third_party/bearssl/src/rsa/rsa_i31_pubexp.c +0 -152
  920. package/runtime/third_party/bearssl/src/rsa/rsa_i32_oaep_decrypt.c +0 -41
  921. package/runtime/third_party/bearssl/src/rsa/rsa_i32_oaep_encrypt.c +0 -44
  922. package/runtime/third_party/bearssl/src/rsa/rsa_i32_pkcs1_sign.c +0 -37
  923. package/runtime/third_party/bearssl/src/rsa/rsa_i32_pkcs1_vrfy.c +0 -43
  924. package/runtime/third_party/bearssl/src/rsa/rsa_i32_priv.c +0 -160
  925. package/runtime/third_party/bearssl/src/rsa/rsa_i32_pss_sign.c +0 -40
  926. package/runtime/third_party/bearssl/src/rsa/rsa_i32_pss_vrfy.c +0 -44
  927. package/runtime/third_party/bearssl/src/rsa/rsa_i32_pub.c +0 -77
  928. package/runtime/third_party/bearssl/src/rsa/rsa_i62_keygen.c +0 -57
  929. package/runtime/third_party/bearssl/src/rsa/rsa_i62_oaep_decrypt.c +0 -61
  930. package/runtime/third_party/bearssl/src/rsa/rsa_i62_oaep_encrypt.c +0 -64
  931. package/runtime/third_party/bearssl/src/rsa/rsa_i62_pkcs1_sign.c +0 -57
  932. package/runtime/third_party/bearssl/src/rsa/rsa_i62_pkcs1_vrfy.c +0 -63
  933. package/runtime/third_party/bearssl/src/rsa/rsa_i62_priv.c +0 -223
  934. package/runtime/third_party/bearssl/src/rsa/rsa_i62_pss_sign.c +0 -60
  935. package/runtime/third_party/bearssl/src/rsa/rsa_i62_pss_vrfy.c +0 -64
  936. package/runtime/third_party/bearssl/src/rsa/rsa_i62_pub.c +0 -125
  937. package/runtime/third_party/bearssl/src/rsa/rsa_oaep_pad.c +0 -112
  938. package/runtime/third_party/bearssl/src/rsa/rsa_oaep_unpad.c +0 -145
  939. package/runtime/third_party/bearssl/src/rsa/rsa_pkcs1_sig_pad.c +0 -100
  940. package/runtime/third_party/bearssl/src/rsa/rsa_pkcs1_sig_unpad.c +0 -121
  941. package/runtime/third_party/bearssl/src/rsa/rsa_pss_sig_pad.c +0 -106
  942. package/runtime/third_party/bearssl/src/rsa/rsa_pss_sig_unpad.c +0 -121
  943. package/runtime/third_party/bearssl/src/rsa/rsa_ssl_decrypt.c +0 -52
  944. package/runtime/third_party/bearssl/src/settings.c +0 -306
  945. package/runtime/third_party/bearssl/src/symcipher/aes_big_cbcdec.c +0 -69
  946. package/runtime/third_party/bearssl/src/symcipher/aes_big_cbcenc.c +0 -67
  947. package/runtime/third_party/bearssl/src/symcipher/aes_big_ctr.c +0 -84
  948. package/runtime/third_party/bearssl/src/symcipher/aes_big_ctrcbc.c +0 -142
  949. package/runtime/third_party/bearssl/src/symcipher/aes_big_dec.c +0 -254
  950. package/runtime/third_party/bearssl/src/symcipher/aes_big_enc.c +0 -157
  951. package/runtime/third_party/bearssl/src/symcipher/aes_common.c +0 -112
  952. package/runtime/third_party/bearssl/src/symcipher/aes_ct.c +0 -328
  953. package/runtime/third_party/bearssl/src/symcipher/aes_ct64.c +0 -398
  954. package/runtime/third_party/bearssl/src/symcipher/aes_ct64_cbcdec.c +0 -104
  955. package/runtime/third_party/bearssl/src/symcipher/aes_ct64_cbcenc.c +0 -81
  956. package/runtime/third_party/bearssl/src/symcipher/aes_ct64_ctr.c +0 -114
  957. package/runtime/third_party/bearssl/src/symcipher/aes_ct64_ctrcbc.c +0 -433
  958. package/runtime/third_party/bearssl/src/symcipher/aes_ct64_dec.c +0 -159
  959. package/runtime/third_party/bearssl/src/symcipher/aes_ct64_enc.c +0 -115
  960. package/runtime/third_party/bearssl/src/symcipher/aes_ct_cbcdec.c +0 -111
  961. package/runtime/third_party/bearssl/src/symcipher/aes_ct_cbcenc.c +0 -91
  962. package/runtime/third_party/bearssl/src/symcipher/aes_ct_ctr.c +0 -116
  963. package/runtime/third_party/bearssl/src/symcipher/aes_ct_ctrcbc.c +0 -422
  964. package/runtime/third_party/bearssl/src/symcipher/aes_ct_dec.c +0 -170
  965. package/runtime/third_party/bearssl/src/symcipher/aes_ct_enc.c +0 -112
  966. package/runtime/third_party/bearssl/src/symcipher/aes_pwr8.c +0 -445
  967. package/runtime/third_party/bearssl/src/symcipher/aes_pwr8_cbcdec.c +0 -670
  968. package/runtime/third_party/bearssl/src/symcipher/aes_pwr8_cbcenc.c +0 -417
  969. package/runtime/third_party/bearssl/src/symcipher/aes_pwr8_ctr.c +0 -717
  970. package/runtime/third_party/bearssl/src/symcipher/aes_pwr8_ctrcbc.c +0 -946
  971. package/runtime/third_party/bearssl/src/symcipher/aes_small_cbcdec.c +0 -69
  972. package/runtime/third_party/bearssl/src/symcipher/aes_small_cbcenc.c +0 -67
  973. package/runtime/third_party/bearssl/src/symcipher/aes_small_ctr.c +0 -84
  974. package/runtime/third_party/bearssl/src/symcipher/aes_small_ctrcbc.c +0 -142
  975. package/runtime/third_party/bearssl/src/symcipher/aes_small_dec.c +0 -176
  976. package/runtime/third_party/bearssl/src/symcipher/aes_small_enc.c +0 -129
  977. package/runtime/third_party/bearssl/src/symcipher/aes_x86ni.c +0 -240
  978. package/runtime/third_party/bearssl/src/symcipher/aes_x86ni_cbcdec.c +0 -223
  979. package/runtime/third_party/bearssl/src/symcipher/aes_x86ni_cbcenc.c +0 -122
  980. package/runtime/third_party/bearssl/src/symcipher/aes_x86ni_ctr.c +0 -211
  981. package/runtime/third_party/bearssl/src/symcipher/aes_x86ni_ctrcbc.c +0 -596
  982. package/runtime/third_party/bearssl/src/symcipher/chacha20_ct.c +0 -106
  983. package/runtime/third_party/bearssl/src/symcipher/chacha20_sse2.c +0 -237
  984. package/runtime/third_party/bearssl/src/symcipher/des_ct.c +0 -411
  985. package/runtime/third_party/bearssl/src/symcipher/des_ct_cbcdec.c +0 -87
  986. package/runtime/third_party/bearssl/src/symcipher/des_ct_cbcenc.c +0 -69
  987. package/runtime/third_party/bearssl/src/symcipher/des_support.c +0 -166
  988. package/runtime/third_party/bearssl/src/symcipher/des_tab.c +0 -310
  989. package/runtime/third_party/bearssl/src/symcipher/des_tab_cbcdec.c +0 -85
  990. package/runtime/third_party/bearssl/src/symcipher/des_tab_cbcenc.c +0 -67
  991. package/runtime/third_party/bearssl/src/symcipher/poly1305_ctmul.c +0 -260
  992. package/runtime/third_party/bearssl/src/symcipher/poly1305_ctmul32.c +0 -297
  993. package/runtime/third_party/bearssl/src/symcipher/poly1305_ctmulq.c +0 -475
  994. package/runtime/third_party/bearssl/src/symcipher/poly1305_i15.c +0 -221
  995. package/runtime/third_party/bearssl/src/x509/asn1.t0 +0 -757
  996. package/runtime/third_party/bearssl/src/x509/asn1enc.c +0 -93
  997. package/runtime/third_party/bearssl/src/x509/encode_ec_pk8der.c +0 -110
  998. package/runtime/third_party/bearssl/src/x509/encode_ec_rawder.c +0 -161
  999. package/runtime/third_party/bearssl/src/x509/encode_rsa_pk8der.c +0 -97
  1000. package/runtime/third_party/bearssl/src/x509/encode_rsa_rawder.c +0 -96
  1001. package/runtime/third_party/bearssl/src/x509/skey_decoder.c +0 -653
  1002. package/runtime/third_party/bearssl/src/x509/skey_decoder.t0 +0 -376
  1003. package/runtime/third_party/bearssl/src/x509/x509_decoder.c +0 -776
  1004. package/runtime/third_party/bearssl/src/x509/x509_decoder.t0 +0 -324
  1005. package/runtime/third_party/bearssl/src/x509/x509_knownkey.c +0 -105
  1006. package/runtime/third_party/bearssl/src/x509/x509_minimal.c +0 -1722
  1007. package/runtime/third_party/bearssl/src/x509/x509_minimal.t0 +0 -1526
  1008. package/runtime/third_party/bearssl/src/x509/x509_minimal_full.c +0 -59
@@ -0,0 +1,1311 @@
1
+ // Copyright 1999-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
+ /* X509 v3 extension utilities */
16
+
17
+ #include <ctype.h>
18
+ #include <stdio.h>
19
+ #include <string.h>
20
+
21
+ #include <utility>
22
+
23
+ #include <openssl/bn.h>
24
+ #include <openssl/bytestring.h>
25
+ #include <openssl/conf.h>
26
+ #include <openssl/err.h>
27
+ #include <openssl/mem.h>
28
+ #include <openssl/obj.h>
29
+ #include <openssl/stack.h>
30
+ #include <openssl/x509.h>
31
+
32
+ #include "../conf/internal.h"
33
+ #include "../internal.h"
34
+ #include "internal.h"
35
+
36
+
37
+ using namespace bssl;
38
+
39
+ static char *strip_spaces(char *name);
40
+ static int sk_strcmp(const char *const *a, const char *const *b);
41
+ static UniquePtr<STACK_OF(OPENSSL_STRING)> get_email(const X509_NAME *name,
42
+ const GENERAL_NAMES *gens);
43
+ static void str_free(OPENSSL_STRING str);
44
+ static int append_ia5(UniquePtr<STACK_OF(OPENSSL_STRING)> *sk,
45
+ const ASN1_IA5STRING *email);
46
+
47
+ static int ipv4_from_asc(uint8_t v4[4], const char *in);
48
+ static int ipv6_from_asc(uint8_t v6[16], const char *in);
49
+ static int ipv6_cb(const char *elem, size_t len, void *usr);
50
+ static int ipv6_hex(uint8_t *out, const char *in, size_t inlen);
51
+
52
+ // Add a CONF_VALUE name value pair to stack
53
+
54
+ static int x509V3_add_len_value(const char *name, const char *value,
55
+ size_t value_len, int omit_value,
56
+ STACK_OF(CONF_VALUE) **extlist) {
57
+ CONF_VALUE *vtmp = nullptr;
58
+ char *tname = nullptr, *tvalue = nullptr;
59
+ int extlist_was_null = *extlist == nullptr;
60
+ if (name && !(tname = OPENSSL_strdup(name))) {
61
+ goto err;
62
+ }
63
+ if (!omit_value) {
64
+ // `CONF_VALUE` cannot represent strings with NULs.
65
+ if (OPENSSL_memchr(value, 0, value_len)) {
66
+ OPENSSL_PUT_ERROR(X509V3, X509V3_R_INVALID_VALUE);
67
+ goto err;
68
+ }
69
+ tvalue = OPENSSL_strndup(value, value_len);
70
+ if (tvalue == nullptr) {
71
+ goto err;
72
+ }
73
+ }
74
+ if (!(vtmp = CONF_VALUE_new())) {
75
+ goto err;
76
+ }
77
+ if (!*extlist && !(*extlist = sk_CONF_VALUE_new_null())) {
78
+ goto err;
79
+ }
80
+ vtmp->section = nullptr;
81
+ vtmp->name = tname;
82
+ vtmp->value = tvalue;
83
+ if (!sk_CONF_VALUE_push(*extlist, vtmp)) {
84
+ goto err;
85
+ }
86
+ return 1;
87
+ err:
88
+ if (extlist_was_null) {
89
+ sk_CONF_VALUE_free(*extlist);
90
+ *extlist = nullptr;
91
+ }
92
+ OPENSSL_free(vtmp);
93
+ OPENSSL_free(tname);
94
+ OPENSSL_free(tvalue);
95
+ return 0;
96
+ }
97
+
98
+ int bssl::X509V3_add_value(const char *name, const char *value,
99
+ STACK_OF(CONF_VALUE) **extlist) {
100
+ return x509V3_add_len_value(name, value, value != nullptr ? strlen(value) : 0,
101
+ /*omit_value=*/value == nullptr, extlist);
102
+ }
103
+
104
+ int bssl::x509V3_add_value_asn1_string(const char *name,
105
+ const ASN1_STRING *value,
106
+ STACK_OF(CONF_VALUE) **extlist) {
107
+ return x509V3_add_len_value(name, (const char *)value->data, value->length,
108
+ /*omit_value=*/0, extlist);
109
+ }
110
+
111
+ // Free function for STACK_OF(CONF_VALUE)
112
+
113
+ void X509V3_conf_free(CONF_VALUE *conf) {
114
+ if (!conf) {
115
+ return;
116
+ }
117
+ OPENSSL_free(conf->name);
118
+ OPENSSL_free(conf->value);
119
+ OPENSSL_free(conf->section);
120
+ OPENSSL_free(conf);
121
+ }
122
+
123
+ int bssl::X509V3_add_value_bool(const char *name, int asn1_bool,
124
+ STACK_OF(CONF_VALUE) **extlist) {
125
+ if (asn1_bool) {
126
+ return X509V3_add_value(name, "TRUE", extlist);
127
+ }
128
+ return X509V3_add_value(name, "FALSE", extlist);
129
+ }
130
+
131
+ static char *bignum_to_string(const BIGNUM *bn) {
132
+ char *tmp, *ret;
133
+
134
+ // Display large numbers in hex and small numbers in decimal. Converting to
135
+ // decimal takes quadratic time and is no more useful than hex for large
136
+ // numbers.
137
+ if (BN_num_bits(bn) < 32) {
138
+ return BN_bn2dec(bn);
139
+ }
140
+
141
+ tmp = BN_bn2hex(bn);
142
+ if (tmp == nullptr) {
143
+ return nullptr;
144
+ }
145
+
146
+ // Prepend "0x", but place it after the "-" if negative.
147
+ if (OPENSSL_asprintf(&ret, "%s0x%s", (tmp[0] == '-') ? "-" : "",
148
+ (tmp[0] == '-') ? tmp + 1 : tmp) == -1) {
149
+ ret = nullptr;
150
+ }
151
+ OPENSSL_free(tmp);
152
+ return ret;
153
+ }
154
+
155
+ char *i2s_ASN1_ENUMERATED(const X509V3_EXT_METHOD *method,
156
+ const ASN1_ENUMERATED *a) {
157
+ BIGNUM *bntmp = nullptr;
158
+ char *strtmp = nullptr;
159
+ if (!a) {
160
+ return nullptr;
161
+ }
162
+ if (!(bntmp = ASN1_ENUMERATED_to_BN(a, nullptr)) ||
163
+ !(strtmp = bignum_to_string(bntmp))) {
164
+ }
165
+ BN_free(bntmp);
166
+ return strtmp;
167
+ }
168
+
169
+ char *i2s_ASN1_INTEGER(const X509V3_EXT_METHOD *method, const ASN1_INTEGER *a) {
170
+ BIGNUM *bntmp = nullptr;
171
+ char *strtmp = nullptr;
172
+ if (!a) {
173
+ return nullptr;
174
+ }
175
+ if (!(bntmp = ASN1_INTEGER_to_BN(a, nullptr)) ||
176
+ !(strtmp = bignum_to_string(bntmp))) {
177
+ }
178
+ BN_free(bntmp);
179
+ return strtmp;
180
+ }
181
+
182
+ ASN1_INTEGER *s2i_ASN1_INTEGER(const X509V3_EXT_METHOD *method,
183
+ const char *value) {
184
+ BIGNUM *bn = nullptr;
185
+ ASN1_INTEGER *aint;
186
+ int isneg, ishex;
187
+ int ret;
188
+ if (!value) {
189
+ OPENSSL_PUT_ERROR(X509V3, X509V3_R_INVALID_NULL_VALUE);
190
+ return nullptr;
191
+ }
192
+ bn = BN_new();
193
+ if (value[0] == '-') {
194
+ value++;
195
+ isneg = 1;
196
+ } else {
197
+ isneg = 0;
198
+ }
199
+
200
+ if (value[0] == '0' && ((value[1] == 'x') || (value[1] == 'X'))) {
201
+ value += 2;
202
+ ishex = 1;
203
+ } else {
204
+ ishex = 0;
205
+ }
206
+
207
+ if (ishex) {
208
+ ret = BN_hex2bn(&bn, value);
209
+ } else {
210
+ // Decoding from decimal scales quadratically in the input length. Bound the
211
+ // largest decimal input we accept in the config parser. 8,192 decimal
212
+ // digits allows values up to 27,213 bits. This exceeds the largest RSA,
213
+ // DSA, or DH modulus we support, and those are not usefully represented in
214
+ // decimal.
215
+ if (strlen(value) > 8192) {
216
+ BN_free(bn);
217
+ OPENSSL_PUT_ERROR(X509V3, X509V3_R_INVALID_NUMBER);
218
+ return nullptr;
219
+ }
220
+ ret = BN_dec2bn(&bn, value);
221
+ }
222
+
223
+ if (!ret || value[ret]) {
224
+ BN_free(bn);
225
+ OPENSSL_PUT_ERROR(X509V3, X509V3_R_BN_DEC2BN_ERROR);
226
+ return nullptr;
227
+ }
228
+
229
+ if (isneg && BN_is_zero(bn)) {
230
+ isneg = 0;
231
+ }
232
+
233
+ aint = BN_to_ASN1_INTEGER(bn, nullptr);
234
+ BN_free(bn);
235
+ if (!aint) {
236
+ OPENSSL_PUT_ERROR(X509V3, X509V3_R_BN_TO_ASN1_INTEGER_ERROR);
237
+ return nullptr;
238
+ }
239
+ if (isneg) {
240
+ aint->type |= V_ASN1_NEG;
241
+ }
242
+ return aint;
243
+ }
244
+
245
+ int bssl::X509V3_add_value_int(const char *name, const ASN1_INTEGER *aint,
246
+ STACK_OF(CONF_VALUE) **extlist) {
247
+ char *strtmp;
248
+ int ret;
249
+ if (!aint) {
250
+ return 1;
251
+ }
252
+ if (!(strtmp = i2s_ASN1_INTEGER(nullptr, aint))) {
253
+ return 0;
254
+ }
255
+ ret = X509V3_add_value(name, strtmp, extlist);
256
+ OPENSSL_free(strtmp);
257
+ return ret;
258
+ }
259
+
260
+ int bssl::X509V3_bool_from_string(const char *str, ASN1_BOOLEAN *out_bool) {
261
+ if (!strcmp(str, "TRUE") || !strcmp(str, "true") || !strcmp(str, "Y") ||
262
+ !strcmp(str, "y") || !strcmp(str, "YES") || !strcmp(str, "yes")) {
263
+ *out_bool = ASN1_BOOLEAN_TRUE;
264
+ return 1;
265
+ }
266
+ if (!strcmp(str, "FALSE") || !strcmp(str, "false") || !strcmp(str, "N") ||
267
+ !strcmp(str, "n") || !strcmp(str, "NO") || !strcmp(str, "no")) {
268
+ *out_bool = ASN1_BOOLEAN_FALSE;
269
+ return 1;
270
+ }
271
+ OPENSSL_PUT_ERROR(X509V3, X509V3_R_INVALID_BOOLEAN_STRING);
272
+ return 0;
273
+ }
274
+
275
+ int bssl::X509V3_get_value_bool(const CONF_VALUE *value,
276
+ ASN1_BOOLEAN *out_bool) {
277
+ const char *btmp = value->value;
278
+ if (btmp == nullptr) {
279
+ OPENSSL_PUT_ERROR(X509V3, X509V3_R_INVALID_BOOLEAN_STRING);
280
+ goto err;
281
+ }
282
+ if (!X509V3_bool_from_string(btmp, out_bool)) {
283
+ goto err;
284
+ }
285
+ return 1;
286
+
287
+ err:
288
+ X509V3_conf_err(value);
289
+ return 0;
290
+ }
291
+
292
+ int bssl::X509V3_get_value_int(const CONF_VALUE *value, ASN1_INTEGER **aint) {
293
+ ASN1_INTEGER *itmp;
294
+ if (!(itmp = s2i_ASN1_INTEGER(nullptr, value->value))) {
295
+ X509V3_conf_err(value);
296
+ return 0;
297
+ }
298
+ ASN1_INTEGER_free(*aint);
299
+ *aint = itmp;
300
+ return 1;
301
+ }
302
+
303
+ #define HDR_NAME 1
304
+ #define HDR_VALUE 2
305
+
306
+ STACK_OF(CONF_VALUE) *bssl::X509V3_parse_list(const char *line) {
307
+ char *p, *q, c;
308
+ char *ntmp, *vtmp;
309
+ STACK_OF(CONF_VALUE) *values = nullptr;
310
+ char *linebuf;
311
+ int state;
312
+ // We are going to modify the line so copy it first
313
+ // TODO(davidben): Rewrite this parser with `std::string_view`. It doesn't
314
+ // need to copy the string.
315
+ linebuf = OPENSSL_strdup(line);
316
+ if (linebuf == nullptr) {
317
+ goto err;
318
+ }
319
+ state = HDR_NAME;
320
+ ntmp = nullptr;
321
+ // Go through all characters
322
+ for (p = linebuf, q = linebuf; (c = *p) && (c != '\r') && (c != '\n'); p++) {
323
+ switch (state) {
324
+ case HDR_NAME:
325
+ if (c == ':') {
326
+ state = HDR_VALUE;
327
+ *p = 0;
328
+ ntmp = strip_spaces(q);
329
+ if (!ntmp) {
330
+ OPENSSL_PUT_ERROR(X509V3, X509V3_R_INVALID_NULL_NAME);
331
+ goto err;
332
+ }
333
+ q = p + 1;
334
+ } else if (c == ',') {
335
+ *p = 0;
336
+ ntmp = strip_spaces(q);
337
+ q = p + 1;
338
+ if (!ntmp) {
339
+ OPENSSL_PUT_ERROR(X509V3, X509V3_R_INVALID_NULL_NAME);
340
+ goto err;
341
+ }
342
+ X509V3_add_value(ntmp, nullptr, &values);
343
+ }
344
+ break;
345
+
346
+ case HDR_VALUE:
347
+ if (c == ',') {
348
+ state = HDR_NAME;
349
+ *p = 0;
350
+ vtmp = strip_spaces(q);
351
+ if (!vtmp) {
352
+ OPENSSL_PUT_ERROR(X509V3, X509V3_R_INVALID_NULL_VALUE);
353
+ goto err;
354
+ }
355
+ X509V3_add_value(ntmp, vtmp, &values);
356
+ ntmp = nullptr;
357
+ q = p + 1;
358
+ }
359
+ }
360
+ }
361
+
362
+ if (state == HDR_VALUE) {
363
+ vtmp = strip_spaces(q);
364
+ if (!vtmp) {
365
+ OPENSSL_PUT_ERROR(X509V3, X509V3_R_INVALID_NULL_VALUE);
366
+ goto err;
367
+ }
368
+ X509V3_add_value(ntmp, vtmp, &values);
369
+ } else {
370
+ ntmp = strip_spaces(q);
371
+ if (!ntmp) {
372
+ OPENSSL_PUT_ERROR(X509V3, X509V3_R_INVALID_NULL_NAME);
373
+ goto err;
374
+ }
375
+ X509V3_add_value(ntmp, nullptr, &values);
376
+ }
377
+ OPENSSL_free(linebuf);
378
+ return values;
379
+
380
+ err:
381
+ OPENSSL_free(linebuf);
382
+ sk_CONF_VALUE_pop_free(values, X509V3_conf_free);
383
+ return nullptr;
384
+ }
385
+
386
+ // Delete leading and trailing spaces from a string
387
+ static char *strip_spaces(char *name) {
388
+ char *p, *q;
389
+ // Skip over leading spaces
390
+ p = name;
391
+ while (*p && OPENSSL_isspace((unsigned char)*p)) {
392
+ p++;
393
+ }
394
+ if (!*p) {
395
+ return nullptr;
396
+ }
397
+ q = p + strlen(p) - 1;
398
+ while ((q != p) && OPENSSL_isspace((unsigned char)*q)) {
399
+ q--;
400
+ }
401
+ if (p != q) {
402
+ q[1] = 0;
403
+ }
404
+ if (!*p) {
405
+ return nullptr;
406
+ }
407
+ return p;
408
+ }
409
+
410
+ // hex string utilities
411
+
412
+ char *bssl::x509v3_bytes_to_hex(const uint8_t *in, size_t len) {
413
+ CBB cbb;
414
+ if (!CBB_init(&cbb, len * 3 + 1)) {
415
+ goto err;
416
+ }
417
+ for (size_t i = 0; i < len; i++) {
418
+ static const char hex[] = "0123456789ABCDEF";
419
+ if ((i > 0 && !CBB_add_u8(&cbb, ':')) ||
420
+ !CBB_add_u8(&cbb, hex[in[i] >> 4]) ||
421
+ !CBB_add_u8(&cbb, hex[in[i] & 0xf])) {
422
+ goto err;
423
+ }
424
+ }
425
+ uint8_t *ret;
426
+ size_t unused_len;
427
+ if (!CBB_add_u8(&cbb, 0) || !CBB_finish(&cbb, &ret, &unused_len)) {
428
+ goto err;
429
+ }
430
+
431
+ return (char *)ret;
432
+
433
+ err:
434
+ CBB_cleanup(&cbb);
435
+ return nullptr;
436
+ }
437
+
438
+ unsigned char *bssl::x509v3_hex_to_bytes(const char *str, size_t *len) {
439
+ unsigned char *hexbuf, *q;
440
+ unsigned char ch, cl, *p;
441
+ uint8_t high, low;
442
+ if (!str) {
443
+ OPENSSL_PUT_ERROR(X509V3, X509V3_R_INVALID_NULL_ARGUMENT);
444
+ return nullptr;
445
+ }
446
+ if (!(hexbuf =
447
+ reinterpret_cast<uint8_t *>(OPENSSL_malloc(strlen(str) >> 1)))) {
448
+ goto err;
449
+ }
450
+ for (p = (unsigned char *)str, q = hexbuf; *p;) {
451
+ ch = *p++;
452
+ if (ch == ':') {
453
+ continue;
454
+ }
455
+ cl = *p++;
456
+ if (!cl) {
457
+ OPENSSL_PUT_ERROR(X509V3, X509V3_R_ODD_NUMBER_OF_DIGITS);
458
+ OPENSSL_free(hexbuf);
459
+ return nullptr;
460
+ }
461
+ if (!OPENSSL_fromxdigit(&high, ch)) {
462
+ goto badhex;
463
+ }
464
+ if (!OPENSSL_fromxdigit(&low, cl)) {
465
+ goto badhex;
466
+ }
467
+ *q++ = (high << 4) | low;
468
+ }
469
+
470
+ if (len) {
471
+ *len = q - hexbuf;
472
+ }
473
+
474
+ return hexbuf;
475
+
476
+ err:
477
+ OPENSSL_free(hexbuf);
478
+ return nullptr;
479
+
480
+ badhex:
481
+ OPENSSL_free(hexbuf);
482
+ OPENSSL_PUT_ERROR(X509V3, X509V3_R_ILLEGAL_HEX_DIGIT);
483
+ return nullptr;
484
+ }
485
+
486
+ int bssl::x509v3_conf_name_matches(const char *name, const char *cmp) {
487
+ // `name` must begin with `cmp`.
488
+ size_t len = strlen(cmp);
489
+ if (strncmp(name, cmp, len) != 0) {
490
+ return 0;
491
+ }
492
+ // `name` must either be equal to `cmp` or begin with `cmp`, followed by '.'.
493
+ return name[len] == '\0' || name[len] == '.';
494
+ }
495
+
496
+ static int sk_strcmp(const char *const *a, const char *const *b) {
497
+ return strcmp(*a, *b);
498
+ }
499
+
500
+ STACK_OF(OPENSSL_STRING) *X509_get1_email(const X509 *x) {
501
+ int critical;
502
+ UniquePtr<GENERAL_NAMES> gens(reinterpret_cast<GENERAL_NAMES *>(
503
+ X509_get_ext_d2i(x, NID_subject_alt_name, &critical, nullptr)));
504
+ if (!gens && critical != -1) {
505
+ return nullptr;
506
+ }
507
+ return get_email(X509_get_subject_name(x), gens.get()).release();
508
+ }
509
+
510
+ STACK_OF(OPENSSL_STRING) *X509_get1_ocsp(const X509 *x) {
511
+ UniquePtr<AUTHORITY_INFO_ACCESS> info(
512
+ reinterpret_cast<AUTHORITY_INFO_ACCESS *>(
513
+ X509_get_ext_d2i(x, NID_info_access, nullptr, nullptr)));
514
+ if (!info) {
515
+ return nullptr;
516
+ }
517
+ UniquePtr<STACK_OF(OPENSSL_STRING)> ret;
518
+ for (const ACCESS_DESCRIPTION *ad : info.get()) {
519
+ if (OBJ_obj2nid(ad->method) == NID_ad_OCSP) {
520
+ if (ad->location->type == GEN_URI) {
521
+ if (!append_ia5(&ret, ad->location->d.uniformResourceIdentifier)) {
522
+ return nullptr;
523
+ }
524
+ }
525
+ }
526
+ }
527
+ sk_OPENSSL_STRING_sort_and_dedup(ret.get(), str_free);
528
+ return ret.release();
529
+ }
530
+
531
+ STACK_OF(OPENSSL_STRING) *X509_REQ_get1_email(const X509_REQ *x) {
532
+ UniquePtr<STACK_OF(X509_EXTENSION)> exts(X509_REQ_get_extensions(x));
533
+ int critical;
534
+ UniquePtr<GENERAL_NAMES> gens(reinterpret_cast<GENERAL_NAMES *>(
535
+ X509V3_get_d2i(exts.get(), NID_subject_alt_name, &critical, nullptr)));
536
+ if (!gens && critical != -1) {
537
+ return nullptr;
538
+ }
539
+ return get_email(X509_REQ_get_subject_name(x), gens.get()).release();
540
+ }
541
+
542
+ static UniquePtr<STACK_OF(OPENSSL_STRING)> get_email(
543
+ const X509_NAME *name, const GENERAL_NAMES *gens) {
544
+ UniquePtr<STACK_OF(OPENSSL_STRING)> ret;
545
+ int i = -1;
546
+ while ((i = X509_NAME_get_index_by_NID(name, NID_pkcs9_emailAddress, i)) >=
547
+ 0) {
548
+ const X509_NAME_ENTRY *ne = X509_NAME_get_entry(name, i);
549
+ const ASN1_IA5STRING *email = X509_NAME_ENTRY_get_data(ne);
550
+ if (!append_ia5(&ret, email)) {
551
+ return nullptr;
552
+ }
553
+ }
554
+ for (const GENERAL_NAME *gen : gens) {
555
+ if (gen->type == GEN_EMAIL && !append_ia5(&ret, gen->d.ia5)) {
556
+ return nullptr;
557
+ }
558
+ }
559
+ sk_OPENSSL_STRING_sort_and_dedup(ret.get(), str_free);
560
+ return ret;
561
+ }
562
+
563
+ static void str_free(OPENSSL_STRING str) { OPENSSL_free(str); }
564
+
565
+ static int append_ia5(UniquePtr<STACK_OF(OPENSSL_STRING)> *sk,
566
+ const ASN1_IA5STRING *email) {
567
+ // First some sanity checks
568
+ if (email->type != V_ASN1_IA5STRING) {
569
+ return 1;
570
+ }
571
+ if (email->data == nullptr || email->length == 0) {
572
+ return 1;
573
+ }
574
+ // `OPENSSL_STRING` cannot represent strings with embedded NULs. Do not
575
+ // report them as outputs.
576
+ if (OPENSSL_memchr(email->data, 0, email->length) != nullptr) {
577
+ return 1;
578
+ }
579
+
580
+ if (!*sk) {
581
+ sk->reset(sk_OPENSSL_STRING_new(sk_strcmp));
582
+ }
583
+ if (!*sk) {
584
+ return 0;
585
+ }
586
+
587
+ UniquePtr<char> emtmp(
588
+ OPENSSL_strndup((const char *)email->data, email->length));
589
+ if (emtmp == nullptr || !PushToStack(sk->get(), std::move(emtmp))) {
590
+ return 0;
591
+ }
592
+ return 1;
593
+ }
594
+
595
+ void X509_email_free(STACK_OF(OPENSSL_STRING) *sk) {
596
+ sk_OPENSSL_STRING_pop_free(sk, str_free);
597
+ }
598
+
599
+ typedef int (*equal_fn)(const unsigned char *pattern, size_t pattern_len,
600
+ const unsigned char *subject, size_t subject_len,
601
+ unsigned int flags);
602
+
603
+ // Compare while ASCII ignoring case.
604
+ static int equal_nocase(const unsigned char *pattern, size_t pattern_len,
605
+ const unsigned char *subject, size_t subject_len,
606
+ unsigned int flags) {
607
+ if (pattern_len != subject_len) {
608
+ return 0;
609
+ }
610
+ while (pattern_len) {
611
+ unsigned char l = *pattern;
612
+ unsigned char r = *subject;
613
+ // The pattern must not contain NUL characters.
614
+ if (l == 0) {
615
+ return 0;
616
+ }
617
+ if (l != r) {
618
+ if (OPENSSL_tolower(l) != OPENSSL_tolower(r)) {
619
+ return 0;
620
+ }
621
+ }
622
+ ++pattern;
623
+ ++subject;
624
+ --pattern_len;
625
+ }
626
+ return 1;
627
+ }
628
+
629
+ // Compare using OPENSSL_memcmp.
630
+ static int equal_case(const unsigned char *pattern, size_t pattern_len,
631
+ const unsigned char *subject, size_t subject_len,
632
+ unsigned int flags) {
633
+ if (pattern_len != subject_len) {
634
+ return 0;
635
+ }
636
+ return !OPENSSL_memcmp(pattern, subject, pattern_len);
637
+ }
638
+
639
+ // RFC 5280, section 7.5, requires that only the domain is compared in a
640
+ // case-insensitive manner.
641
+ static int equal_email(const unsigned char *a, size_t a_len,
642
+ const unsigned char *b, size_t b_len,
643
+ unsigned int unused_flags) {
644
+ size_t i = a_len;
645
+ if (a_len != b_len) {
646
+ return 0;
647
+ }
648
+ // We search backwards for the '@' character, so that we do not have to
649
+ // deal with quoted local-parts. The domain part is compared in a
650
+ // case-insensitive manner.
651
+ while (i > 0) {
652
+ --i;
653
+ if (a[i] == '@' || b[i] == '@') {
654
+ if (!equal_nocase(a + i, a_len - i, b + i, a_len - i, 0)) {
655
+ return 0;
656
+ }
657
+ break;
658
+ }
659
+ }
660
+ if (i == 0) {
661
+ i = a_len;
662
+ }
663
+ return equal_case(a, i, b, i, 0);
664
+ }
665
+
666
+ // Compare the prefix and suffix with the subject, and check that the
667
+ // characters in-between are valid.
668
+ static int wildcard_match(const unsigned char *prefix, size_t prefix_len,
669
+ const unsigned char *suffix, size_t suffix_len,
670
+ const unsigned char *subject, size_t subject_len,
671
+ unsigned int flags) {
672
+ const unsigned char *wildcard_start;
673
+ const unsigned char *wildcard_end;
674
+ const unsigned char *p;
675
+ int allow_idna = 0;
676
+
677
+ if (subject_len < prefix_len + suffix_len) {
678
+ return 0;
679
+ }
680
+ if (!equal_nocase(prefix, prefix_len, subject, prefix_len, flags)) {
681
+ return 0;
682
+ }
683
+ wildcard_start = subject + prefix_len;
684
+ wildcard_end = subject + (subject_len - suffix_len);
685
+ if (!equal_nocase(wildcard_end, suffix_len, suffix, suffix_len, flags)) {
686
+ return 0;
687
+ }
688
+ // If the wildcard makes up the entire first label, it must match at
689
+ // least one character.
690
+ if (prefix_len == 0 && *suffix == '.') {
691
+ if (wildcard_start == wildcard_end) {
692
+ return 0;
693
+ }
694
+ allow_idna = 1;
695
+ }
696
+ // IDNA labels cannot match partial wildcards
697
+ if (!allow_idna && subject_len >= 4 &&
698
+ OPENSSL_strncasecmp((char *)subject, "xn--", 4) == 0) {
699
+ return 0;
700
+ }
701
+ // The wildcard may match a literal '*'
702
+ if (wildcard_end == wildcard_start + 1 && *wildcard_start == '*') {
703
+ return 1;
704
+ }
705
+ // Check that the part matched by the wildcard contains only
706
+ // permitted characters and only matches a single label.
707
+ for (p = wildcard_start; p != wildcard_end; ++p) {
708
+ if (!OPENSSL_isalnum(*p) && *p != '-') {
709
+ return 0;
710
+ }
711
+ }
712
+ return 1;
713
+ }
714
+
715
+ #define LABEL_START (1 << 0)
716
+ #define LABEL_END (1 << 1)
717
+ #define LABEL_HYPHEN (1 << 2)
718
+ #define LABEL_IDNA (1 << 3)
719
+
720
+ static const unsigned char *valid_star(const unsigned char *p, size_t len,
721
+ unsigned int flags) {
722
+ const unsigned char *star = nullptr;
723
+ size_t i;
724
+ int state = LABEL_START;
725
+ int dots = 0;
726
+ for (i = 0; i < len; ++i) {
727
+ // Locate first and only legal wildcard, either at the start
728
+ // or end of a non-IDNA first and not final label.
729
+ if (p[i] == '*') {
730
+ int atstart = (state & LABEL_START);
731
+ int atend = (i == len - 1 || p[i + 1] == '.');
732
+ // At most one wildcard per pattern.
733
+ // No wildcards in IDNA labels.
734
+ // No wildcards after the first label.
735
+ if (star != nullptr || (state & LABEL_IDNA) != 0 || dots) {
736
+ return nullptr;
737
+ }
738
+ // Only full-label '*.example.com' wildcards.
739
+ if (!atstart || !atend) {
740
+ return nullptr;
741
+ }
742
+ star = &p[i];
743
+ state &= ~LABEL_START;
744
+ } else if (OPENSSL_isalnum(p[i])) {
745
+ if ((state & LABEL_START) != 0 && len - i >= 4 &&
746
+ OPENSSL_strncasecmp((char *)&p[i], "xn--", 4) == 0) {
747
+ state |= LABEL_IDNA;
748
+ }
749
+ state &= ~(LABEL_HYPHEN | LABEL_START);
750
+ } else if (p[i] == '.') {
751
+ if ((state & (LABEL_HYPHEN | LABEL_START)) != 0) {
752
+ return nullptr;
753
+ }
754
+ state = LABEL_START;
755
+ ++dots;
756
+ } else if (p[i] == '-') {
757
+ // no domain/subdomain starts with '-'
758
+ if ((state & LABEL_START) != 0) {
759
+ return nullptr;
760
+ }
761
+ state |= LABEL_HYPHEN;
762
+ } else {
763
+ return nullptr;
764
+ }
765
+ }
766
+
767
+ // The final label must not end in a hyphen or ".", and
768
+ // there must be at least two dots after the star.
769
+ if ((state & (LABEL_START | LABEL_HYPHEN)) != 0 || dots < 2) {
770
+ return nullptr;
771
+ }
772
+ return star;
773
+ }
774
+
775
+ // Compare using wildcards.
776
+ static int equal_wildcard(const unsigned char *pattern, size_t pattern_len,
777
+ const unsigned char *subject, size_t subject_len,
778
+ unsigned int flags) {
779
+ const unsigned char *star = nullptr;
780
+
781
+ // Subject names starting with '.' can only match a wildcard pattern
782
+ // via a subject sub-domain pattern suffix match.
783
+ if (!(subject_len > 1 && subject[0] == '.')) {
784
+ star = valid_star(pattern, pattern_len, flags);
785
+ }
786
+ if (star == nullptr) {
787
+ return equal_nocase(pattern, pattern_len, subject, subject_len, flags);
788
+ }
789
+ return wildcard_match(pattern, star - pattern, star + 1,
790
+ (pattern + pattern_len) - star - 1, subject,
791
+ subject_len, flags);
792
+ }
793
+
794
+ int bssl::x509v3_looks_like_dns_name(const unsigned char *in, size_t len) {
795
+ // This function is used as a heuristic for whether a common name is a
796
+ // hostname to be matched, or merely a decorative name to describe the
797
+ // subject. This heuristic must be applied to both name constraints and the
798
+ // common name fallback, so it must be loose enough to accept hostname
799
+ // common names, and tight enough to reject decorative common names.
800
+
801
+ if (len > 0 && in[len - 1] == '.') {
802
+ len--;
803
+ }
804
+
805
+ // Wildcards are allowed in front.
806
+ if (len >= 2 && in[0] == '*' && in[1] == '.') {
807
+ in += 2;
808
+ len -= 2;
809
+ }
810
+
811
+ if (len == 0) {
812
+ return 0;
813
+ }
814
+
815
+ size_t label_start = 0;
816
+ for (size_t i = 0; i < len; i++) {
817
+ unsigned char c = in[i];
818
+ if (OPENSSL_isalnum(c) || (c == '-' && i > label_start) ||
819
+ // These are not valid characters in hostnames, but commonly found
820
+ // in deployments outside the Web PKI.
821
+ c == '_' || c == ':') {
822
+ continue;
823
+ }
824
+
825
+ // Labels must not be empty.
826
+ if (c == '.' && i > label_start && i < len - 1) {
827
+ label_start = i + 1;
828
+ continue;
829
+ }
830
+
831
+ return 0;
832
+ }
833
+
834
+ return 1;
835
+ }
836
+
837
+ // Compare an ASN1_STRING to a supplied string. If they match return 1. If
838
+ // cmp_type > 0 only compare if string matches the type, otherwise convert it
839
+ // to UTF8.
840
+
841
+ static int do_check_string(const ASN1_STRING *a, int cmp_type, equal_fn equal,
842
+ unsigned int flags, int check_type, const char *b,
843
+ size_t blen, char **peername) {
844
+ int rv = 0;
845
+
846
+ if (!a->data || !a->length) {
847
+ return 0;
848
+ }
849
+ if (cmp_type > 0) {
850
+ if (cmp_type != a->type) {
851
+ return 0;
852
+ }
853
+ if (cmp_type == V_ASN1_IA5STRING) {
854
+ rv = equal(a->data, a->length, (unsigned char *)b, blen, flags);
855
+ } else if (a->length == (int)blen && !OPENSSL_memcmp(a->data, b, blen)) {
856
+ rv = 1;
857
+ }
858
+ if (rv > 0 && peername) {
859
+ *peername = OPENSSL_strndup((char *)a->data, a->length);
860
+ if (*peername == nullptr) {
861
+ return -1;
862
+ }
863
+ }
864
+ } else {
865
+ int astrlen;
866
+ unsigned char *astr;
867
+ astrlen = ASN1_STRING_to_UTF8(&astr, a);
868
+ if (astrlen < 0) {
869
+ return -1;
870
+ }
871
+ // We check the common name against DNS name constraints if it passes
872
+ // `x509v3_looks_like_dns_name`. Thus we must not consider common names
873
+ // for DNS fallbacks if they fail this check.
874
+ if (check_type == GEN_DNS && !x509v3_looks_like_dns_name(astr, astrlen)) {
875
+ rv = 0;
876
+ } else {
877
+ rv = equal(astr, astrlen, (unsigned char *)b, blen, flags);
878
+ }
879
+ if (rv > 0 && peername) {
880
+ *peername = OPENSSL_strndup((char *)astr, astrlen);
881
+ if (*peername == nullptr) {
882
+ return -1;
883
+ }
884
+ }
885
+ OPENSSL_free(astr);
886
+ }
887
+ return rv;
888
+ }
889
+
890
+ static int do_x509_check(const X509 *x, const char *chk, size_t chklen,
891
+ unsigned int flags, int check_type, char **peername) {
892
+ int cnid = NID_undef;
893
+ int alt_type;
894
+ int rv = 0;
895
+ equal_fn equal;
896
+ if (check_type == GEN_EMAIL) {
897
+ cnid = NID_pkcs9_emailAddress;
898
+ alt_type = V_ASN1_IA5STRING;
899
+ equal = equal_email;
900
+ } else if (check_type == GEN_DNS) {
901
+ cnid = NID_commonName;
902
+ alt_type = V_ASN1_IA5STRING;
903
+ if (flags & X509_CHECK_FLAG_NO_WILDCARDS) {
904
+ equal = equal_nocase;
905
+ } else {
906
+ equal = equal_wildcard;
907
+ }
908
+ } else {
909
+ alt_type = V_ASN1_OCTET_STRING;
910
+ equal = equal_case;
911
+ }
912
+
913
+ int critical;
914
+ UniquePtr<GENERAL_NAMES> gens(reinterpret_cast<GENERAL_NAMES *>(
915
+ X509_get_ext_d2i(x, NID_subject_alt_name, &critical, nullptr)));
916
+ if (gens) {
917
+ for (const GENERAL_NAME *gen : gens.get()) {
918
+ if (gen->type != check_type) {
919
+ continue;
920
+ }
921
+ const ASN1_STRING *cstr;
922
+ if (check_type == GEN_EMAIL) {
923
+ cstr = gen->d.rfc822Name;
924
+ } else if (check_type == GEN_DNS) {
925
+ cstr = gen->d.dNSName;
926
+ } else {
927
+ cstr = gen->d.iPAddress;
928
+ }
929
+ // Positive on success, negative on error!
930
+ if ((rv = do_check_string(cstr, alt_type, equal, flags, check_type, chk,
931
+ chklen, peername)) != 0) {
932
+ break;
933
+ }
934
+ }
935
+ return rv;
936
+ } else if (critical != -1) {
937
+ // Syntax error in the subjectAltName extension.
938
+ return 0;
939
+ }
940
+
941
+ // We're done if CN-ID is not pertinent
942
+ if (cnid == NID_undef || (flags & X509_CHECK_FLAG_NEVER_CHECK_SUBJECT)) {
943
+ return 0;
944
+ }
945
+
946
+ int j = -1;
947
+ const X509_NAME *name = X509_get_subject_name(x);
948
+ while ((j = X509_NAME_get_index_by_NID(name, cnid, j)) >= 0) {
949
+ const X509_NAME_ENTRY *ne = X509_NAME_get_entry(name, j);
950
+ const ASN1_STRING *str = X509_NAME_ENTRY_get_data(ne);
951
+ // Positive on success, negative on error!
952
+ if ((rv = do_check_string(str, -1, equal, flags, check_type, chk, chklen,
953
+ peername)) != 0) {
954
+ return rv;
955
+ }
956
+ }
957
+ return 0;
958
+ }
959
+
960
+ int X509_check_host(const X509 *x, const char *chk, size_t chklen,
961
+ unsigned int flags, char **peername) {
962
+ if (chk == nullptr) {
963
+ return -2;
964
+ }
965
+ if (OPENSSL_memchr(chk, '\0', chklen)) {
966
+ return -2;
967
+ }
968
+ return do_x509_check(x, chk, chklen, flags, GEN_DNS, peername);
969
+ }
970
+
971
+ int X509_check_email(const X509 *x, const char *chk, size_t chklen,
972
+ unsigned int flags) {
973
+ if (chk == nullptr) {
974
+ return -2;
975
+ }
976
+ if (OPENSSL_memchr(chk, '\0', chklen)) {
977
+ return -2;
978
+ }
979
+ return do_x509_check(x, chk, chklen, flags, GEN_EMAIL, nullptr);
980
+ }
981
+
982
+ int X509_check_ip(const X509 *x, const unsigned char *chk, size_t chklen,
983
+ unsigned int flags) {
984
+ if (chk == nullptr) {
985
+ return -2;
986
+ }
987
+ return do_x509_check(x, (const char *)chk, chklen, flags, GEN_IPADD, nullptr);
988
+ }
989
+
990
+ int X509_check_ip_asc(const X509 *x, const char *ipasc, unsigned int flags) {
991
+ unsigned char ipout[16];
992
+ size_t iplen;
993
+
994
+ if (ipasc == nullptr) {
995
+ return -2;
996
+ }
997
+ iplen = (size_t)x509v3_a2i_ipadd(ipout, ipasc);
998
+ if (iplen == 0) {
999
+ return -2;
1000
+ }
1001
+ return do_x509_check(x, (const char *)ipout, iplen, flags, GEN_IPADD,
1002
+ nullptr);
1003
+ }
1004
+
1005
+ // Convert IP addresses both IPv4 and IPv6 into an OCTET STRING compatible
1006
+ // with RFC 3280.
1007
+
1008
+ ASN1_OCTET_STRING *a2i_IPADDRESS(const char *ipasc) {
1009
+ unsigned char ipout[16];
1010
+ ASN1_OCTET_STRING *ret;
1011
+ int iplen;
1012
+
1013
+ iplen = x509v3_a2i_ipadd(ipout, ipasc);
1014
+ if (!iplen) {
1015
+ return nullptr;
1016
+ }
1017
+
1018
+ ret = ASN1_OCTET_STRING_new();
1019
+ if (!ret) {
1020
+ return nullptr;
1021
+ }
1022
+ if (!ASN1_OCTET_STRING_set(ret, ipout, iplen)) {
1023
+ ASN1_OCTET_STRING_free(ret);
1024
+ return nullptr;
1025
+ }
1026
+ return ret;
1027
+ }
1028
+
1029
+ ASN1_OCTET_STRING *a2i_IPADDRESS_NC(const char *ipasc) {
1030
+ ASN1_OCTET_STRING *ret = nullptr;
1031
+ unsigned char ipout[32];
1032
+ char *iptmp = nullptr, *p;
1033
+ int iplen1, iplen2;
1034
+ // FIXME: yes, this function takes a const pointer and writes to it!
1035
+ p = const_cast<char *>(strchr(ipasc, '/'));
1036
+ if (!p) {
1037
+ return nullptr;
1038
+ }
1039
+ iptmp = OPENSSL_strdup(ipasc);
1040
+ if (!iptmp) {
1041
+ return nullptr;
1042
+ }
1043
+ p = iptmp + (p - ipasc);
1044
+ *p++ = 0;
1045
+
1046
+ iplen1 = x509v3_a2i_ipadd(ipout, iptmp);
1047
+
1048
+ if (!iplen1) {
1049
+ goto err;
1050
+ }
1051
+
1052
+ iplen2 = x509v3_a2i_ipadd(ipout + iplen1, p);
1053
+
1054
+ OPENSSL_free(iptmp);
1055
+ iptmp = nullptr;
1056
+
1057
+ if (!iplen2 || (iplen1 != iplen2)) {
1058
+ goto err;
1059
+ }
1060
+
1061
+ ret = ASN1_OCTET_STRING_new();
1062
+ if (!ret) {
1063
+ goto err;
1064
+ }
1065
+ if (!ASN1_OCTET_STRING_set(ret, ipout, iplen1 + iplen2)) {
1066
+ goto err;
1067
+ }
1068
+
1069
+ return ret;
1070
+
1071
+ err:
1072
+ OPENSSL_free(iptmp);
1073
+ ASN1_OCTET_STRING_free(ret);
1074
+ return nullptr;
1075
+ }
1076
+
1077
+ int bssl::x509v3_a2i_ipadd(uint8_t ipout[16], const char *ipasc) {
1078
+ // If string contains a ':' assume IPv6
1079
+
1080
+ if (strchr(ipasc, ':')) {
1081
+ if (!ipv6_from_asc(ipout, ipasc)) {
1082
+ return 0;
1083
+ }
1084
+ return 16;
1085
+ } else {
1086
+ if (!ipv4_from_asc(ipout, ipasc)) {
1087
+ return 0;
1088
+ }
1089
+ return 4;
1090
+ }
1091
+ }
1092
+
1093
+ // get_ipv4_component consumes one IPv4 component, terminated by either '.' or
1094
+ // the end of the string, from `*str`. On success, it returns one, sets `*out`
1095
+ // to the component, and advances `*str` to the first unconsumed character. On
1096
+ // invalid input, it returns zero.
1097
+ static int get_ipv4_component(uint8_t *out_byte, const char **str) {
1098
+ // Store a slightly larger intermediary so the overflow check is easier.
1099
+ uint32_t out = 0;
1100
+ for (;;) {
1101
+ if (!OPENSSL_isdigit(**str)) {
1102
+ return 0;
1103
+ }
1104
+ out = (out * 10) + (**str - '0');
1105
+ if (out > 255) {
1106
+ // Components must be 8-bit.
1107
+ return 0;
1108
+ }
1109
+ (*str)++;
1110
+ if ((**str) == '.' || (**str) == '\0') {
1111
+ *out_byte = (uint8_t)out;
1112
+ return 1;
1113
+ }
1114
+ if (out == 0) {
1115
+ // Reject extra leading zeros. Parsers sometimes treat them as octal, so
1116
+ // accepting them would misinterpret input.
1117
+ return 0;
1118
+ }
1119
+ }
1120
+ }
1121
+
1122
+ // get_ipv4_dot consumes a '.' from `*str` and advances it. It returns one on
1123
+ // success and zero if `*str` does not point to a '.'.
1124
+ static int get_ipv4_dot(const char **str) {
1125
+ if (**str != '.') {
1126
+ return 0;
1127
+ }
1128
+ (*str)++;
1129
+ return 1;
1130
+ }
1131
+
1132
+ static int ipv4_from_asc(uint8_t v4[4], const char *in) {
1133
+ if (!get_ipv4_component(&v4[0], &in) || !get_ipv4_dot(&in) ||
1134
+ !get_ipv4_component(&v4[1], &in) || !get_ipv4_dot(&in) ||
1135
+ !get_ipv4_component(&v4[2], &in) || !get_ipv4_dot(&in) ||
1136
+ !get_ipv4_component(&v4[3], &in) || *in != '\0') {
1137
+ return 0;
1138
+ }
1139
+ return 1;
1140
+ }
1141
+
1142
+ typedef struct {
1143
+ // Temporary store for IPV6 output
1144
+ uint8_t tmp[16];
1145
+ // Total number of bytes in tmp
1146
+ int total;
1147
+ // The position of a zero (corresponding to '::')
1148
+ int zero_pos;
1149
+ // Number of zeroes
1150
+ int zero_cnt;
1151
+ } IPV6_STAT;
1152
+
1153
+ static int ipv6_from_asc(uint8_t v6[16], const char *in) {
1154
+ IPV6_STAT v6stat;
1155
+ v6stat.total = 0;
1156
+ v6stat.zero_pos = -1;
1157
+ v6stat.zero_cnt = 0;
1158
+ // Treat the IPv6 representation as a list of values separated by ':'.
1159
+ // The presence of a '::' will parse as one, two or three zero length
1160
+ // elements.
1161
+ if (!CONF_parse_list(in, ':', 0, ipv6_cb, &v6stat)) {
1162
+ return 0;
1163
+ }
1164
+
1165
+ if (v6stat.zero_pos == -1) {
1166
+ // If no '::' must have exactly 16 bytes
1167
+ if (v6stat.total != 16) {
1168
+ return 0;
1169
+ }
1170
+ } else {
1171
+ // If '::' must have less than 16 bytes
1172
+ if (v6stat.total >= 16) {
1173
+ return 0;
1174
+ }
1175
+ if (v6stat.zero_cnt > 3) {
1176
+ // More than three zeroes is an error
1177
+ return 0;
1178
+ } else if (v6stat.zero_cnt == 3) {
1179
+ // Can only have three zeroes if nothing else present
1180
+ if (v6stat.total > 0) {
1181
+ return 0;
1182
+ }
1183
+ } else if (v6stat.zero_cnt == 2) {
1184
+ // Can only have two zeroes if at start or end
1185
+ if (v6stat.zero_pos != 0 && v6stat.zero_pos != v6stat.total) {
1186
+ return 0;
1187
+ }
1188
+ } else {
1189
+ // Can only have one zero if *not* start or end
1190
+ if (v6stat.zero_pos == 0 || v6stat.zero_pos == v6stat.total) {
1191
+ return 0;
1192
+ }
1193
+ }
1194
+ }
1195
+
1196
+ // Format the result.
1197
+ if (v6stat.zero_pos >= 0) {
1198
+ // Copy initial part
1199
+ OPENSSL_memcpy(v6, v6stat.tmp, v6stat.zero_pos);
1200
+ // Zero middle
1201
+ OPENSSL_memset(v6 + v6stat.zero_pos, 0, 16 - v6stat.total);
1202
+ // Copy final part
1203
+ if (v6stat.total != v6stat.zero_pos) {
1204
+ OPENSSL_memcpy(v6 + v6stat.zero_pos + 16 - v6stat.total,
1205
+ v6stat.tmp + v6stat.zero_pos,
1206
+ v6stat.total - v6stat.zero_pos);
1207
+ }
1208
+ } else {
1209
+ OPENSSL_memcpy(v6, v6stat.tmp, 16);
1210
+ }
1211
+
1212
+ return 1;
1213
+ }
1214
+
1215
+ static int ipv6_cb(const char *elem, size_t len, void *usr) {
1216
+ IPV6_STAT *s = reinterpret_cast<IPV6_STAT *>(usr);
1217
+ // Error if 16 bytes written
1218
+ if (s->total == 16) {
1219
+ return 0;
1220
+ }
1221
+ if (len == 0) {
1222
+ // Zero length element, corresponds to '::'
1223
+ if (s->zero_pos == -1) {
1224
+ s->zero_pos = s->total;
1225
+ } else if (s->zero_pos != s->total) {
1226
+ // If we've already got a :: its an error
1227
+ return 0;
1228
+ }
1229
+ if (s->zero_cnt >= 3) {
1230
+ // More than three zeros is an error.
1231
+ return 0;
1232
+ }
1233
+ s->zero_cnt++;
1234
+ } else {
1235
+ // If more than 4 characters could be final a.b.c.d form
1236
+ if (len > 4) {
1237
+ // Need at least 4 bytes left
1238
+ if (s->total > 12) {
1239
+ return 0;
1240
+ }
1241
+ // Must be end of string
1242
+ if (elem[len]) {
1243
+ return 0;
1244
+ }
1245
+ if (!ipv4_from_asc(s->tmp + s->total, elem)) {
1246
+ return 0;
1247
+ }
1248
+ s->total += 4;
1249
+ } else {
1250
+ if (!ipv6_hex(s->tmp + s->total, elem, len)) {
1251
+ return 0;
1252
+ }
1253
+ s->total += 2;
1254
+ }
1255
+ }
1256
+ return 1;
1257
+ }
1258
+
1259
+ // Convert a string of up to 4 hex digits into the corresponding IPv6 form.
1260
+
1261
+ static int ipv6_hex(uint8_t *out, const char *in, size_t inlen) {
1262
+ if (inlen > 4) {
1263
+ return 0;
1264
+ }
1265
+ uint16_t num = 0;
1266
+ while (inlen--) {
1267
+ uint8_t val;
1268
+ if (!OPENSSL_fromxdigit(&val, *in++)) {
1269
+ return 0;
1270
+ }
1271
+ num = (num << 4) | val;
1272
+ }
1273
+ out[0] = num >> 8;
1274
+ out[1] = num & 0xff;
1275
+ return 1;
1276
+ }
1277
+
1278
+ int bssl::X509V3_NAME_from_section(X509_NAME *nm,
1279
+ const STACK_OF(CONF_VALUE) *dn_sk,
1280
+ int chtype) {
1281
+ if (!nm) {
1282
+ return 0;
1283
+ }
1284
+
1285
+ for (size_t i = 0; i < sk_CONF_VALUE_num(dn_sk); i++) {
1286
+ const CONF_VALUE *v = sk_CONF_VALUE_value(dn_sk, i);
1287
+ const char *type = v->name;
1288
+ // Skip past any leading X. X: X, etc to allow for multiple instances
1289
+ for (const char *p = type; *p; p++) {
1290
+ if ((*p == ':') || (*p == ',') || (*p == '.')) {
1291
+ p++;
1292
+ if (*p) {
1293
+ type = p;
1294
+ }
1295
+ break;
1296
+ }
1297
+ }
1298
+ int mval;
1299
+ if (*type == '+') {
1300
+ mval = -1;
1301
+ type++;
1302
+ } else {
1303
+ mval = 0;
1304
+ }
1305
+ if (!X509_NAME_add_entry_by_txt(nm, type, chtype, (unsigned char *)v->value,
1306
+ -1, -1, mval)) {
1307
+ return 0;
1308
+ }
1309
+ }
1310
+ return 1;
1311
+ }