@scriptc/runtime 0.0.0 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (416) hide show
  1. package/LICENSE +202 -0
  2. package/package.json +16 -6
  3. package/src/scr_array.c +488 -0
  4. package/src/scr_assert.c +1393 -0
  5. package/src/scr_async.c +2593 -0
  6. package/src/scr_async_dyn.c +607 -0
  7. package/src/scr_bytes.c +1425 -0
  8. package/src/scr_bytes_io.c +161 -0
  9. package/src/scr_child.c +3587 -0
  10. package/src/scr_closure.c +214 -0
  11. package/src/scr_console.c +143 -0
  12. package/src/scr_cycle.c +218 -0
  13. package/src/scr_dc.c +805 -0
  14. package/src/scr_dgram.c +1007 -0
  15. package/src/scr_dyn_handle.c +154 -0
  16. package/src/scr_dyn_invoke.c +644 -0
  17. package/src/scr_error.c +332 -0
  18. package/src/scr_events.c +714 -0
  19. package/src/scr_events_emitter.c +699 -0
  20. package/src/scr_exception.c +242 -0
  21. package/src/scr_fetch.c +1130 -0
  22. package/src/scr_fetch_curl.c +654 -0
  23. package/src/scr_http.c +3482 -0
  24. package/src/scr_http2.c +3030 -0
  25. package/src/scr_inspect.c +803 -0
  26. package/src/scr_inspect_island.c +51 -0
  27. package/src/scr_island.c +9363 -0
  28. package/src/scr_json.c +2151 -0
  29. package/src/scr_lib.c +3612 -0
  30. package/src/scr_loop_epoll.c +241 -0
  31. package/src/scr_loop_kqueue.c +121 -0
  32. package/src/scr_loop_wsapoll.c +208 -0
  33. package/src/scr_map.c +591 -0
  34. package/src/scr_net.c +3017 -0
  35. package/src/scr_net_island.c +458 -0
  36. package/src/scr_number.c +115 -0
  37. package/src/scr_object.c +25 -0
  38. package/src/scr_path.c +1266 -0
  39. package/src/scr_platform.h +119 -0
  40. package/src/scr_readline.c +287 -0
  41. package/src/scr_regex.c +1080 -0
  42. package/src/scr_runtime.h +5046 -0
  43. package/src/scr_stream.c +2877 -0
  44. package/src/scr_string.c +1264 -0
  45. package/src/scr_symbol.c +132 -0
  46. package/src/scr_test.c +662 -0
  47. package/src/scr_tls.c +1520 -0
  48. package/src/scr_union.c +105 -0
  49. package/src/scr_url.c +911 -0
  50. package/src/scr_url_internal.h +29 -0
  51. package/src/scr_url_params.c +561 -0
  52. package/src/scr_watch.c +568 -0
  53. package/src/scr_web.c +1778 -0
  54. package/src/scr_win.c +76 -0
  55. package/src/scr_zlib.c +197 -0
  56. package/src/scr_zlib_island.c +15 -0
  57. package/vendor/README.md +52 -0
  58. package/vendor/curl/COPYRIGHT +534 -0
  59. package/vendor/curl/include/curl/curl.h +3214 -0
  60. package/vendor/curl/include/curl/curlver.h +79 -0
  61. package/vendor/curl/include/curl/easy.h +125 -0
  62. package/vendor/curl/include/curl/header.h +74 -0
  63. package/vendor/curl/include/curl/mprintf.h +52 -0
  64. package/vendor/curl/include/curl/multi.h +460 -0
  65. package/vendor/curl/include/curl/options.h +70 -0
  66. package/vendor/curl/include/curl/stdcheaders.h +35 -0
  67. package/vendor/curl/include/curl/system.h +508 -0
  68. package/vendor/curl/include/curl/typecheck-gcc.h +716 -0
  69. package/vendor/curl/include/curl/urlapi.h +149 -0
  70. package/vendor/curl/include/curl/websockets.h +84 -0
  71. package/vendor/mbedtls/LICENSE +553 -0
  72. package/vendor/mbedtls/include/CMakeLists.txt +22 -0
  73. package/vendor/mbedtls/include/mbedtls/aes.h +631 -0
  74. package/vendor/mbedtls/include/mbedtls/aria.h +343 -0
  75. package/vendor/mbedtls/include/mbedtls/asn1.h +642 -0
  76. package/vendor/mbedtls/include/mbedtls/asn1write.h +390 -0
  77. package/vendor/mbedtls/include/mbedtls/base64.h +82 -0
  78. package/vendor/mbedtls/include/mbedtls/bignum.h +1088 -0
  79. package/vendor/mbedtls/include/mbedtls/block_cipher.h +76 -0
  80. package/vendor/mbedtls/include/mbedtls/build_info.h +194 -0
  81. package/vendor/mbedtls/include/mbedtls/camellia.h +305 -0
  82. package/vendor/mbedtls/include/mbedtls/ccm.h +526 -0
  83. package/vendor/mbedtls/include/mbedtls/chacha20.h +209 -0
  84. package/vendor/mbedtls/include/mbedtls/chachapoly.h +351 -0
  85. package/vendor/mbedtls/include/mbedtls/check_config.h +1149 -0
  86. package/vendor/mbedtls/include/mbedtls/cipher.h +1250 -0
  87. package/vendor/mbedtls/include/mbedtls/cmac.h +246 -0
  88. package/vendor/mbedtls/include/mbedtls/compat-2.x.h +46 -0
  89. package/vendor/mbedtls/include/mbedtls/config_adjust_legacy_crypto.h +578 -0
  90. package/vendor/mbedtls/include/mbedtls/config_adjust_legacy_from_psa.h +873 -0
  91. package/vendor/mbedtls/include/mbedtls/config_adjust_psa_from_legacy.h +359 -0
  92. package/vendor/mbedtls/include/mbedtls/config_adjust_psa_superset_legacy.h +145 -0
  93. package/vendor/mbedtls/include/mbedtls/config_adjust_ssl.h +91 -0
  94. package/vendor/mbedtls/include/mbedtls/config_adjust_x509.h +35 -0
  95. package/vendor/mbedtls/include/mbedtls/config_psa.h +61 -0
  96. package/vendor/mbedtls/include/mbedtls/constant_time.h +36 -0
  97. package/vendor/mbedtls/include/mbedtls/ctr_drbg.h +596 -0
  98. package/vendor/mbedtls/include/mbedtls/debug.h +156 -0
  99. package/vendor/mbedtls/include/mbedtls/des.h +385 -0
  100. package/vendor/mbedtls/include/mbedtls/dhm.h +972 -0
  101. package/vendor/mbedtls/include/mbedtls/ecdh.h +455 -0
  102. package/vendor/mbedtls/include/mbedtls/ecdsa.h +674 -0
  103. package/vendor/mbedtls/include/mbedtls/ecjpake.h +298 -0
  104. package/vendor/mbedtls/include/mbedtls/ecp.h +1517 -0
  105. package/vendor/mbedtls/include/mbedtls/entropy.h +274 -0
  106. package/vendor/mbedtls/include/mbedtls/error.h +201 -0
  107. package/vendor/mbedtls/include/mbedtls/gcm.h +387 -0
  108. package/vendor/mbedtls/include/mbedtls/hkdf.h +124 -0
  109. package/vendor/mbedtls/include/mbedtls/hmac_drbg.h +434 -0
  110. package/vendor/mbedtls/include/mbedtls/lms.h +440 -0
  111. package/vendor/mbedtls/include/mbedtls/mbedtls_config.h +4446 -0
  112. package/vendor/mbedtls/include/mbedtls/md.h +526 -0
  113. package/vendor/mbedtls/include/mbedtls/md5.h +190 -0
  114. package/vendor/mbedtls/include/mbedtls/memory_buffer_alloc.h +142 -0
  115. package/vendor/mbedtls/include/mbedtls/net_sockets.h +299 -0
  116. package/vendor/mbedtls/include/mbedtls/nist_kw.h +166 -0
  117. package/vendor/mbedtls/include/mbedtls/oid.h +727 -0
  118. package/vendor/mbedtls/include/mbedtls/pem.h +160 -0
  119. package/vendor/mbedtls/include/mbedtls/pk.h +1303 -0
  120. package/vendor/mbedtls/include/mbedtls/pkcs12.h +186 -0
  121. package/vendor/mbedtls/include/mbedtls/pkcs5.h +198 -0
  122. package/vendor/mbedtls/include/mbedtls/pkcs7.h +252 -0
  123. package/vendor/mbedtls/include/mbedtls/platform.h +516 -0
  124. package/vendor/mbedtls/include/mbedtls/platform_time.h +79 -0
  125. package/vendor/mbedtls/include/mbedtls/platform_util.h +247 -0
  126. package/vendor/mbedtls/include/mbedtls/poly1305.h +168 -0
  127. package/vendor/mbedtls/include/mbedtls/private_access.h +20 -0
  128. package/vendor/mbedtls/include/mbedtls/psa_util.h +207 -0
  129. package/vendor/mbedtls/include/mbedtls/ripemd160.h +136 -0
  130. package/vendor/mbedtls/include/mbedtls/rsa.h +1170 -0
  131. package/vendor/mbedtls/include/mbedtls/sha1.h +219 -0
  132. package/vendor/mbedtls/include/mbedtls/sha256.h +200 -0
  133. package/vendor/mbedtls/include/mbedtls/sha3.h +172 -0
  134. package/vendor/mbedtls/include/mbedtls/sha512.h +208 -0
  135. package/vendor/mbedtls/include/mbedtls/ssl.h +5887 -0
  136. package/vendor/mbedtls/include/mbedtls/ssl_cache.h +187 -0
  137. package/vendor/mbedtls/include/mbedtls/ssl_ciphersuites.h +482 -0
  138. package/vendor/mbedtls/include/mbedtls/ssl_cookie.h +106 -0
  139. package/vendor/mbedtls/include/mbedtls/ssl_ticket.h +199 -0
  140. package/vendor/mbedtls/include/mbedtls/threading.h +167 -0
  141. package/vendor/mbedtls/include/mbedtls/timing.h +94 -0
  142. package/vendor/mbedtls/include/mbedtls/version.h +78 -0
  143. package/vendor/mbedtls/include/mbedtls/x509.h +500 -0
  144. package/vendor/mbedtls/include/mbedtls/x509_crl.h +184 -0
  145. package/vendor/mbedtls/include/mbedtls/x509_crt.h +1208 -0
  146. package/vendor/mbedtls/include/mbedtls/x509_csr.h +382 -0
  147. package/vendor/mbedtls/include/psa/build_info.h +20 -0
  148. package/vendor/mbedtls/include/psa/crypto.h +4998 -0
  149. package/vendor/mbedtls/include/psa/crypto_adjust_auto_enabled.h +31 -0
  150. package/vendor/mbedtls/include/psa/crypto_adjust_config_dependencies.h +51 -0
  151. package/vendor/mbedtls/include/psa/crypto_adjust_config_key_pair_types.h +101 -0
  152. package/vendor/mbedtls/include/psa/crypto_adjust_config_synonyms.h +49 -0
  153. package/vendor/mbedtls/include/psa/crypto_builtin_composites.h +214 -0
  154. package/vendor/mbedtls/include/psa/crypto_builtin_key_derivation.h +118 -0
  155. package/vendor/mbedtls/include/psa/crypto_builtin_primitives.h +114 -0
  156. package/vendor/mbedtls/include/psa/crypto_compat.h +230 -0
  157. package/vendor/mbedtls/include/psa/crypto_config.h +145 -0
  158. package/vendor/mbedtls/include/psa/crypto_driver_common.h +44 -0
  159. package/vendor/mbedtls/include/psa/crypto_driver_contexts_composites.h +151 -0
  160. package/vendor/mbedtls/include/psa/crypto_driver_contexts_key_derivation.h +52 -0
  161. package/vendor/mbedtls/include/psa/crypto_driver_contexts_primitives.h +105 -0
  162. package/vendor/mbedtls/include/psa/crypto_extra.h +2145 -0
  163. package/vendor/mbedtls/include/psa/crypto_legacy.h +88 -0
  164. package/vendor/mbedtls/include/psa/crypto_platform.h +102 -0
  165. package/vendor/mbedtls/include/psa/crypto_se_driver.h +1383 -0
  166. package/vendor/mbedtls/include/psa/crypto_sizes.h +1319 -0
  167. package/vendor/mbedtls/include/psa/crypto_struct.h +527 -0
  168. package/vendor/mbedtls/include/psa/crypto_types.h +508 -0
  169. package/vendor/mbedtls/include/psa/crypto_values.h +2782 -0
  170. package/vendor/mbedtls/library/aes.c +2294 -0
  171. package/vendor/mbedtls/library/aesce.c +624 -0
  172. package/vendor/mbedtls/library/aesce.h +136 -0
  173. package/vendor/mbedtls/library/aesni.c +846 -0
  174. package/vendor/mbedtls/library/aesni.h +162 -0
  175. package/vendor/mbedtls/library/alignment.h +704 -0
  176. package/vendor/mbedtls/library/aria.c +969 -0
  177. package/vendor/mbedtls/library/asn1parse.c +468 -0
  178. package/vendor/mbedtls/library/asn1write.c +440 -0
  179. package/vendor/mbedtls/library/base64.c +322 -0
  180. package/vendor/mbedtls/library/base64_internal.h +45 -0
  181. package/vendor/mbedtls/library/bignum.c +2583 -0
  182. package/vendor/mbedtls/library/bignum_core.c +1240 -0
  183. package/vendor/mbedtls/library/bignum_core.h +872 -0
  184. package/vendor/mbedtls/library/bignum_core_invasive.h +38 -0
  185. package/vendor/mbedtls/library/bignum_internal.h +122 -0
  186. package/vendor/mbedtls/library/bignum_mod.c +394 -0
  187. package/vendor/mbedtls/library/bignum_mod.h +452 -0
  188. package/vendor/mbedtls/library/bignum_mod_raw.c +276 -0
  189. package/vendor/mbedtls/library/bignum_mod_raw.h +416 -0
  190. package/vendor/mbedtls/library/bignum_mod_raw_invasive.h +34 -0
  191. package/vendor/mbedtls/library/block_cipher.c +207 -0
  192. package/vendor/mbedtls/library/block_cipher_internal.h +99 -0
  193. package/vendor/mbedtls/library/bn_mul.h +1094 -0
  194. package/vendor/mbedtls/library/camellia.c +1058 -0
  195. package/vendor/mbedtls/library/ccm.c +777 -0
  196. package/vendor/mbedtls/library/chacha20.c +563 -0
  197. package/vendor/mbedtls/library/chacha20_internal.h +23 -0
  198. package/vendor/mbedtls/library/chachapoly.c +487 -0
  199. package/vendor/mbedtls/library/check_crypto_config.h +136 -0
  200. package/vendor/mbedtls/library/cipher.c +1712 -0
  201. package/vendor/mbedtls/library/cipher_invasive.h +28 -0
  202. package/vendor/mbedtls/library/cipher_wrap.c +2482 -0
  203. package/vendor/mbedtls/library/cipher_wrap.h +178 -0
  204. package/vendor/mbedtls/library/cmac.c +1067 -0
  205. package/vendor/mbedtls/library/common.h +487 -0
  206. package/vendor/mbedtls/library/constant_time.c +247 -0
  207. package/vendor/mbedtls/library/constant_time_impl.h +541 -0
  208. package/vendor/mbedtls/library/constant_time_internal.h +579 -0
  209. package/vendor/mbedtls/library/ctr.h +35 -0
  210. package/vendor/mbedtls/library/ctr_drbg.c +1016 -0
  211. package/vendor/mbedtls/library/debug.c +475 -0
  212. package/vendor/mbedtls/library/debug_internal.h +185 -0
  213. package/vendor/mbedtls/library/des.c +1042 -0
  214. package/vendor/mbedtls/library/dhm.c +700 -0
  215. package/vendor/mbedtls/library/ecdh.c +696 -0
  216. package/vendor/mbedtls/library/ecdsa.c +858 -0
  217. package/vendor/mbedtls/library/ecjpake.c +1216 -0
  218. package/vendor/mbedtls/library/ecp.c +3674 -0
  219. package/vendor/mbedtls/library/ecp_curves.c +6125 -0
  220. package/vendor/mbedtls/library/ecp_curves_new.c +9 -0
  221. package/vendor/mbedtls/library/ecp_internal_alt.h +287 -0
  222. package/vendor/mbedtls/library/ecp_invasive.h +305 -0
  223. package/vendor/mbedtls/library/entropy.c +680 -0
  224. package/vendor/mbedtls/library/entropy_poll.c +233 -0
  225. package/vendor/mbedtls/library/entropy_poll.h +64 -0
  226. package/vendor/mbedtls/library/error.c +878 -0
  227. package/vendor/mbedtls/library/gcm.c +1330 -0
  228. package/vendor/mbedtls/library/hkdf.c +161 -0
  229. package/vendor/mbedtls/library/hmac_drbg.c +633 -0
  230. package/vendor/mbedtls/library/lmots.c +789 -0
  231. package/vendor/mbedtls/library/lmots.h +288 -0
  232. package/vendor/mbedtls/library/lms.c +778 -0
  233. package/vendor/mbedtls/library/md.c +1108 -0
  234. package/vendor/mbedtls/library/md5.c +426 -0
  235. package/vendor/mbedtls/library/md_psa.h +26 -0
  236. package/vendor/mbedtls/library/md_wrap.h +46 -0
  237. package/vendor/mbedtls/library/memory_buffer_alloc.c +751 -0
  238. package/vendor/mbedtls/library/mps_common.h +181 -0
  239. package/vendor/mbedtls/library/mps_error.h +89 -0
  240. package/vendor/mbedtls/library/mps_reader.c +538 -0
  241. package/vendor/mbedtls/library/mps_reader.h +366 -0
  242. package/vendor/mbedtls/library/mps_trace.c +112 -0
  243. package/vendor/mbedtls/library/mps_trace.h +154 -0
  244. package/vendor/mbedtls/library/net_sockets.c +694 -0
  245. package/vendor/mbedtls/library/nist_kw.c +729 -0
  246. package/vendor/mbedtls/library/oid.c +1166 -0
  247. package/vendor/mbedtls/library/padlock.c +157 -0
  248. package/vendor/mbedtls/library/padlock.h +111 -0
  249. package/vendor/mbedtls/library/pem.c +554 -0
  250. package/vendor/mbedtls/library/pk.c +1602 -0
  251. package/vendor/mbedtls/library/pk_ecc.c +261 -0
  252. package/vendor/mbedtls/library/pk_internal.h +241 -0
  253. package/vendor/mbedtls/library/pk_wrap.c +1618 -0
  254. package/vendor/mbedtls/library/pk_wrap.h +138 -0
  255. package/vendor/mbedtls/library/pkcs12.c +437 -0
  256. package/vendor/mbedtls/library/pkcs5.c +500 -0
  257. package/vendor/mbedtls/library/pkcs7.c +787 -0
  258. package/vendor/mbedtls/library/pkparse.c +1392 -0
  259. package/vendor/mbedtls/library/pkwrite.c +631 -0
  260. package/vendor/mbedtls/library/pkwrite.h +121 -0
  261. package/vendor/mbedtls/library/platform.c +402 -0
  262. package/vendor/mbedtls/library/platform_util.c +258 -0
  263. package/vendor/mbedtls/library/poly1305.c +492 -0
  264. package/vendor/mbedtls/library/psa_crypto.c +9532 -0
  265. package/vendor/mbedtls/library/psa_crypto_aead.c +646 -0
  266. package/vendor/mbedtls/library/psa_crypto_aead.h +499 -0
  267. package/vendor/mbedtls/library/psa_crypto_cipher.c +747 -0
  268. package/vendor/mbedtls/library/psa_crypto_cipher.h +316 -0
  269. package/vendor/mbedtls/library/psa_crypto_client.c +22 -0
  270. package/vendor/mbedtls/library/psa_crypto_core.h +983 -0
  271. package/vendor/mbedtls/library/psa_crypto_core_common.h +52 -0
  272. package/vendor/mbedtls/library/psa_crypto_driver_wrappers.h +2896 -0
  273. package/vendor/mbedtls/library/psa_crypto_driver_wrappers_no_static.c +256 -0
  274. package/vendor/mbedtls/library/psa_crypto_driver_wrappers_no_static.h +31 -0
  275. package/vendor/mbedtls/library/psa_crypto_ecp.c +594 -0
  276. package/vendor/mbedtls/library/psa_crypto_ecp.h +267 -0
  277. package/vendor/mbedtls/library/psa_crypto_ffdh.c +361 -0
  278. package/vendor/mbedtls/library/psa_crypto_ffdh.h +131 -0
  279. package/vendor/mbedtls/library/psa_crypto_hash.c +470 -0
  280. package/vendor/mbedtls/library/psa_crypto_hash.h +211 -0
  281. package/vendor/mbedtls/library/psa_crypto_invasive.h +92 -0
  282. package/vendor/mbedtls/library/psa_crypto_its.h +131 -0
  283. package/vendor/mbedtls/library/psa_crypto_mac.c +505 -0
  284. package/vendor/mbedtls/library/psa_crypto_mac.h +264 -0
  285. package/vendor/mbedtls/library/psa_crypto_pake.c +571 -0
  286. package/vendor/mbedtls/library/psa_crypto_pake.h +159 -0
  287. package/vendor/mbedtls/library/psa_crypto_random.c +181 -0
  288. package/vendor/mbedtls/library/psa_crypto_random.h +72 -0
  289. package/vendor/mbedtls/library/psa_crypto_random_impl.h +200 -0
  290. package/vendor/mbedtls/library/psa_crypto_rsa.c +714 -0
  291. package/vendor/mbedtls/library/psa_crypto_rsa.h +321 -0
  292. package/vendor/mbedtls/library/psa_crypto_se.c +373 -0
  293. package/vendor/mbedtls/library/psa_crypto_se.h +192 -0
  294. package/vendor/mbedtls/library/psa_crypto_slot_management.c +1137 -0
  295. package/vendor/mbedtls/library/psa_crypto_slot_management.h +344 -0
  296. package/vendor/mbedtls/library/psa_crypto_storage.c +481 -0
  297. package/vendor/mbedtls/library/psa_crypto_storage.h +392 -0
  298. package/vendor/mbedtls/library/psa_its_file.c +254 -0
  299. package/vendor/mbedtls/library/psa_util.c +614 -0
  300. package/vendor/mbedtls/library/psa_util_internal.h +100 -0
  301. package/vendor/mbedtls/library/ripemd160.c +490 -0
  302. package/vendor/mbedtls/library/rsa.c +3121 -0
  303. package/vendor/mbedtls/library/rsa_alt_helpers.c +455 -0
  304. package/vendor/mbedtls/library/rsa_alt_helpers.h +209 -0
  305. package/vendor/mbedtls/library/rsa_internal.h +188 -0
  306. package/vendor/mbedtls/library/sha1.c +480 -0
  307. package/vendor/mbedtls/library/sha256.c +983 -0
  308. package/vendor/mbedtls/library/sha3.c +721 -0
  309. package/vendor/mbedtls/library/sha512.c +1115 -0
  310. package/vendor/mbedtls/library/ssl_cache.c +410 -0
  311. package/vendor/mbedtls/library/ssl_ciphersuites.c +2050 -0
  312. package/vendor/mbedtls/library/ssl_ciphersuites_internal.h +154 -0
  313. package/vendor/mbedtls/library/ssl_client.c +1023 -0
  314. package/vendor/mbedtls/library/ssl_client.h +22 -0
  315. package/vendor/mbedtls/library/ssl_cookie.c +384 -0
  316. package/vendor/mbedtls/library/ssl_debug_helpers.h +85 -0
  317. package/vendor/mbedtls/library/ssl_debug_helpers_generated.c +251 -0
  318. package/vendor/mbedtls/library/ssl_misc.h +3198 -0
  319. package/vendor/mbedtls/library/ssl_msg.c +6619 -0
  320. package/vendor/mbedtls/library/ssl_ticket.c +556 -0
  321. package/vendor/mbedtls/library/ssl_tls.c +10234 -0
  322. package/vendor/mbedtls/library/ssl_tls12_client.c +3688 -0
  323. package/vendor/mbedtls/library/ssl_tls12_server.c +4311 -0
  324. package/vendor/mbedtls/library/ssl_tls13_client.c +3208 -0
  325. package/vendor/mbedtls/library/ssl_tls13_generic.c +1793 -0
  326. package/vendor/mbedtls/library/ssl_tls13_invasive.h +23 -0
  327. package/vendor/mbedtls/library/ssl_tls13_keys.c +1918 -0
  328. package/vendor/mbedtls/library/ssl_tls13_keys.h +668 -0
  329. package/vendor/mbedtls/library/ssl_tls13_server.c +3624 -0
  330. package/vendor/mbedtls/library/threading.c +193 -0
  331. package/vendor/mbedtls/library/threading_internal.h +28 -0
  332. package/vendor/mbedtls/library/timing.c +152 -0
  333. package/vendor/mbedtls/library/version.c +32 -0
  334. package/vendor/mbedtls/library/version_features.c +856 -0
  335. package/vendor/mbedtls/library/x509.c +1776 -0
  336. package/vendor/mbedtls/library/x509_create.c +570 -0
  337. package/vendor/mbedtls/library/x509_crl.c +708 -0
  338. package/vendor/mbedtls/library/x509_crt.c +3311 -0
  339. package/vendor/mbedtls/library/x509_csr.c +648 -0
  340. package/vendor/mbedtls/library/x509_internal.h +101 -0
  341. package/vendor/mbedtls/library/x509write.c +174 -0
  342. package/vendor/mbedtls/library/x509write_crt.c +688 -0
  343. package/vendor/mbedtls/library/x509write_csr.c +336 -0
  344. package/vendor/quickjs-ng/CMakeLists.txt +566 -0
  345. package/vendor/quickjs-ng/LICENSE +24 -0
  346. package/vendor/quickjs-ng/README.md +24 -0
  347. package/vendor/quickjs-ng/api-test.c +1195 -0
  348. package/vendor/quickjs-ng/builtin-array-fromasync.h +119 -0
  349. package/vendor/quickjs-ng/builtin-iterator-zip-keyed.h +332 -0
  350. package/vendor/quickjs-ng/builtin-iterator-zip.h +337 -0
  351. package/vendor/quickjs-ng/cutils.h +1998 -0
  352. package/vendor/quickjs-ng/dtoa.c +1619 -0
  353. package/vendor/quickjs-ng/dtoa.h +87 -0
  354. package/vendor/quickjs-ng/gen/function_source.c +81 -0
  355. package/vendor/quickjs-ng/gen/hello.c +53 -0
  356. package/vendor/quickjs-ng/gen/hello_module.c +106 -0
  357. package/vendor/quickjs-ng/gen/repl.c +3036 -0
  358. package/vendor/quickjs-ng/gen/standalone.c +323 -0
  359. package/vendor/quickjs-ng/gen/test_fib.c +81 -0
  360. package/vendor/quickjs-ng/libregexp-opcode.h +73 -0
  361. package/vendor/quickjs-ng/libregexp.c +3474 -0
  362. package/vendor/quickjs-ng/libregexp.h +101 -0
  363. package/vendor/quickjs-ng/libunicode-table.h +5173 -0
  364. package/vendor/quickjs-ng/libunicode.c +2069 -0
  365. package/vendor/quickjs-ng/libunicode.h +172 -0
  366. package/vendor/quickjs-ng/list.h +107 -0
  367. package/vendor/quickjs-ng/lre-test.c +52 -0
  368. package/vendor/quickjs-ng/qjs.c +762 -0
  369. package/vendor/quickjs-ng/qjsc.c +673 -0
  370. package/vendor/quickjs-ng/quickjs-atom.h +280 -0
  371. package/vendor/quickjs-ng/quickjs-c-atomics.h +54 -0
  372. package/vendor/quickjs-ng/quickjs-libc.c +5037 -0
  373. package/vendor/quickjs-ng/quickjs-libc.h +87 -0
  374. package/vendor/quickjs-ng/quickjs-opcode.h +377 -0
  375. package/vendor/quickjs-ng/quickjs.c +64041 -0
  376. package/vendor/quickjs-ng/quickjs.h +1447 -0
  377. package/vendor/quickjs-ng/run-test262.c +2374 -0
  378. package/vendor/quickjs-ng/unicode_gen.c +3121 -0
  379. package/vendor/quickjs-ng/unicode_gen_def.h +310 -0
  380. package/vendor/ryu/LICENSE-Boost +23 -0
  381. package/vendor/ryu/common.h +114 -0
  382. package/vendor/ryu/d2s.c +509 -0
  383. package/vendor/ryu/d2s_full_table.h +367 -0
  384. package/vendor/ryu/d2s_intrinsics.h +357 -0
  385. package/vendor/ryu/d2s_small_table.h +186 -0
  386. package/vendor/ryu/digit_table.h +35 -0
  387. package/vendor/ryu/ryu.h +46 -0
  388. package/vendor/zlib/LICENSE +22 -0
  389. package/vendor/zlib/adler32.c +164 -0
  390. package/vendor/zlib/compress.c +75 -0
  391. package/vendor/zlib/crc32.c +1049 -0
  392. package/vendor/zlib/crc32.h +9446 -0
  393. package/vendor/zlib/deflate.c +2139 -0
  394. package/vendor/zlib/deflate.h +377 -0
  395. package/vendor/zlib/gzclose.c +23 -0
  396. package/vendor/zlib/gzguts.h +214 -0
  397. package/vendor/zlib/gzlib.c +582 -0
  398. package/vendor/zlib/gzread.c +602 -0
  399. package/vendor/zlib/gzwrite.c +631 -0
  400. package/vendor/zlib/infback.c +628 -0
  401. package/vendor/zlib/inffast.c +320 -0
  402. package/vendor/zlib/inffast.h +11 -0
  403. package/vendor/zlib/inffixed.h +94 -0
  404. package/vendor/zlib/inflate.c +1526 -0
  405. package/vendor/zlib/inflate.h +126 -0
  406. package/vendor/zlib/inftrees.c +299 -0
  407. package/vendor/zlib/inftrees.h +62 -0
  408. package/vendor/zlib/trees.c +1117 -0
  409. package/vendor/zlib/trees.h +128 -0
  410. package/vendor/zlib/uncompr.c +85 -0
  411. package/vendor/zlib/zconf.h +543 -0
  412. package/vendor/zlib/zlib.h +1938 -0
  413. package/vendor/zlib/zutil.c +299 -0
  414. package/vendor/zlib/zutil.h +254 -0
  415. package/README.md +0 -3
  416. package/index.js +0 -2
@@ -0,0 +1,688 @@
1
+ /*
2
+ * X.509 certificate writing
3
+ *
4
+ * Copyright The Mbed TLS Contributors
5
+ * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
6
+ */
7
+ /*
8
+ * References:
9
+ * - certificates: RFC 5280, updated by RFC 6818
10
+ * - CSRs: PKCS#10 v1.7 aka RFC 2986
11
+ * - attributes: PKCS#9 v2.0 aka RFC 2985
12
+ */
13
+
14
+ #include "common.h"
15
+
16
+ #if defined(MBEDTLS_X509_CRT_WRITE_C)
17
+
18
+ #include "mbedtls/x509_crt.h"
19
+ #include "x509_internal.h"
20
+ #include "mbedtls/asn1write.h"
21
+ #include "mbedtls/error.h"
22
+ #include "mbedtls/oid.h"
23
+ #include "mbedtls/platform.h"
24
+ #include "mbedtls/platform_util.h"
25
+ #include "mbedtls/md.h"
26
+
27
+ #include <string.h>
28
+ #include <stdint.h>
29
+
30
+ #if defined(MBEDTLS_PEM_WRITE_C)
31
+ #include "mbedtls/pem.h"
32
+ #endif /* MBEDTLS_PEM_WRITE_C */
33
+
34
+ #if defined(MBEDTLS_USE_PSA_CRYPTO)
35
+ #include "psa/crypto.h"
36
+ #include "psa_util_internal.h"
37
+ #include "mbedtls/psa_util.h"
38
+ #endif /* MBEDTLS_USE_PSA_CRYPTO */
39
+
40
+ void mbedtls_x509write_crt_init(mbedtls_x509write_cert *ctx)
41
+ {
42
+ memset(ctx, 0, sizeof(mbedtls_x509write_cert));
43
+
44
+ ctx->version = MBEDTLS_X509_CRT_VERSION_3;
45
+ }
46
+
47
+ void mbedtls_x509write_crt_free(mbedtls_x509write_cert *ctx)
48
+ {
49
+ if (ctx == NULL) {
50
+ return;
51
+ }
52
+
53
+ mbedtls_asn1_free_named_data_list(&ctx->subject);
54
+ mbedtls_asn1_free_named_data_list(&ctx->issuer);
55
+ mbedtls_asn1_free_named_data_list(&ctx->extensions);
56
+
57
+ mbedtls_platform_zeroize(ctx, sizeof(mbedtls_x509write_cert));
58
+ }
59
+
60
+ void mbedtls_x509write_crt_set_version(mbedtls_x509write_cert *ctx,
61
+ int version)
62
+ {
63
+ ctx->version = version;
64
+ }
65
+
66
+ void mbedtls_x509write_crt_set_md_alg(mbedtls_x509write_cert *ctx,
67
+ mbedtls_md_type_t md_alg)
68
+ {
69
+ ctx->md_alg = md_alg;
70
+ }
71
+
72
+ void mbedtls_x509write_crt_set_subject_key(mbedtls_x509write_cert *ctx,
73
+ mbedtls_pk_context *key)
74
+ {
75
+ ctx->subject_key = key;
76
+ }
77
+
78
+ void mbedtls_x509write_crt_set_issuer_key(mbedtls_x509write_cert *ctx,
79
+ mbedtls_pk_context *key)
80
+ {
81
+ ctx->issuer_key = key;
82
+ }
83
+
84
+ int mbedtls_x509write_crt_set_subject_name(mbedtls_x509write_cert *ctx,
85
+ const char *subject_name)
86
+ {
87
+ mbedtls_asn1_free_named_data_list(&ctx->subject);
88
+ return mbedtls_x509_string_to_names(&ctx->subject, subject_name);
89
+ }
90
+
91
+ int mbedtls_x509write_crt_set_issuer_name(mbedtls_x509write_cert *ctx,
92
+ const char *issuer_name)
93
+ {
94
+ mbedtls_asn1_free_named_data_list(&ctx->issuer);
95
+ return mbedtls_x509_string_to_names(&ctx->issuer, issuer_name);
96
+ }
97
+
98
+ #if defined(MBEDTLS_BIGNUM_C) && !defined(MBEDTLS_DEPRECATED_REMOVED)
99
+ int mbedtls_x509write_crt_set_serial(mbedtls_x509write_cert *ctx,
100
+ const mbedtls_mpi *serial)
101
+ {
102
+ int ret;
103
+ size_t tmp_len;
104
+
105
+ /* Ensure that the MPI value fits into the buffer */
106
+ tmp_len = mbedtls_mpi_size(serial);
107
+ if (tmp_len > MBEDTLS_X509_RFC5280_MAX_SERIAL_LEN) {
108
+ return MBEDTLS_ERR_X509_BAD_INPUT_DATA;
109
+ }
110
+
111
+ ctx->serial_len = tmp_len;
112
+
113
+ ret = mbedtls_mpi_write_binary(serial, ctx->serial, tmp_len);
114
+ if (ret < 0) {
115
+ return ret;
116
+ }
117
+
118
+ return 0;
119
+ }
120
+ #endif // MBEDTLS_BIGNUM_C && !MBEDTLS_DEPRECATED_REMOVED
121
+
122
+ int mbedtls_x509write_crt_set_serial_raw(mbedtls_x509write_cert *ctx,
123
+ unsigned char *serial, size_t serial_len)
124
+ {
125
+ if (serial_len > MBEDTLS_X509_RFC5280_MAX_SERIAL_LEN) {
126
+ return MBEDTLS_ERR_X509_BAD_INPUT_DATA;
127
+ }
128
+
129
+ ctx->serial_len = serial_len;
130
+ memcpy(ctx->serial, serial, serial_len);
131
+
132
+ return 0;
133
+ }
134
+
135
+ int mbedtls_x509write_crt_set_validity(mbedtls_x509write_cert *ctx,
136
+ const char *not_before,
137
+ const char *not_after)
138
+ {
139
+ if (strlen(not_before) != MBEDTLS_X509_RFC5280_UTC_TIME_LEN - 1 ||
140
+ strlen(not_after) != MBEDTLS_X509_RFC5280_UTC_TIME_LEN - 1) {
141
+ return MBEDTLS_ERR_X509_BAD_INPUT_DATA;
142
+ }
143
+ strncpy(ctx->not_before, not_before, MBEDTLS_X509_RFC5280_UTC_TIME_LEN);
144
+ strncpy(ctx->not_after, not_after, MBEDTLS_X509_RFC5280_UTC_TIME_LEN);
145
+ ctx->not_before[MBEDTLS_X509_RFC5280_UTC_TIME_LEN - 1] = 'Z';
146
+ ctx->not_after[MBEDTLS_X509_RFC5280_UTC_TIME_LEN - 1] = 'Z';
147
+
148
+ return 0;
149
+ }
150
+
151
+ int mbedtls_x509write_crt_set_subject_alternative_name(mbedtls_x509write_cert *ctx,
152
+ const mbedtls_x509_san_list *san_list)
153
+ {
154
+ return mbedtls_x509_write_set_san_common(&ctx->extensions, san_list);
155
+ }
156
+
157
+
158
+ int mbedtls_x509write_crt_set_extension(mbedtls_x509write_cert *ctx,
159
+ const char *oid, size_t oid_len,
160
+ int critical,
161
+ const unsigned char *val, size_t val_len)
162
+ {
163
+ return mbedtls_x509_set_extension(&ctx->extensions, oid, oid_len,
164
+ critical, val, val_len);
165
+ }
166
+
167
+ int mbedtls_x509write_crt_set_basic_constraints(mbedtls_x509write_cert *ctx,
168
+ int is_ca, int max_pathlen)
169
+ {
170
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
171
+ unsigned char buf[9];
172
+ unsigned char *c = buf + sizeof(buf);
173
+ size_t len = 0;
174
+
175
+ memset(buf, 0, sizeof(buf));
176
+
177
+ if (is_ca && max_pathlen > 127) {
178
+ return MBEDTLS_ERR_X509_BAD_INPUT_DATA;
179
+ }
180
+
181
+ if (is_ca) {
182
+ if (max_pathlen >= 0) {
183
+ MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_int(&c, buf,
184
+ max_pathlen));
185
+ }
186
+ MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_bool(&c, buf, 1));
187
+ }
188
+
189
+ MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_len(&c, buf, len));
190
+ MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_tag(&c, buf,
191
+ MBEDTLS_ASN1_CONSTRUCTED |
192
+ MBEDTLS_ASN1_SEQUENCE));
193
+
194
+ return
195
+ mbedtls_x509write_crt_set_extension(ctx, MBEDTLS_OID_BASIC_CONSTRAINTS,
196
+ MBEDTLS_OID_SIZE(MBEDTLS_OID_BASIC_CONSTRAINTS),
197
+ is_ca, buf + sizeof(buf) - len, len);
198
+ }
199
+
200
+ #if defined(MBEDTLS_MD_CAN_SHA1)
201
+ static int mbedtls_x509write_crt_set_key_identifier(mbedtls_x509write_cert *ctx,
202
+ int is_ca,
203
+ unsigned char tag)
204
+ {
205
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
206
+ unsigned char buf[MBEDTLS_MPI_MAX_SIZE * 2 + 20]; /* tag, length + 2xMPI */
207
+ unsigned char *c = buf + sizeof(buf);
208
+ size_t len = 0;
209
+ #if defined(MBEDTLS_USE_PSA_CRYPTO)
210
+ psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED;
211
+ size_t hash_length;
212
+ #endif /* MBEDTLS_USE_PSA_CRYPTO */
213
+
214
+ memset(buf, 0, sizeof(buf));
215
+ MBEDTLS_ASN1_CHK_ADD(len,
216
+ mbedtls_pk_write_pubkey(&c,
217
+ buf,
218
+ is_ca ?
219
+ ctx->issuer_key :
220
+ ctx->subject_key));
221
+
222
+
223
+ #if defined(MBEDTLS_USE_PSA_CRYPTO)
224
+ status = psa_hash_compute(PSA_ALG_SHA_1,
225
+ buf + sizeof(buf) - len,
226
+ len,
227
+ buf + sizeof(buf) - 20,
228
+ 20,
229
+ &hash_length);
230
+ if (status != PSA_SUCCESS) {
231
+ return MBEDTLS_ERR_PLATFORM_HW_ACCEL_FAILED;
232
+ }
233
+ #else
234
+ ret = mbedtls_md(mbedtls_md_info_from_type(MBEDTLS_MD_SHA1),
235
+ buf + sizeof(buf) - len, len,
236
+ buf + sizeof(buf) - 20);
237
+ if (ret != 0) {
238
+ return ret;
239
+ }
240
+ #endif /* MBEDTLS_USE_PSA_CRYPTO */
241
+
242
+ c = buf + sizeof(buf) - 20;
243
+ len = 20;
244
+
245
+ MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_len(&c, buf, len));
246
+ MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_tag(&c, buf, tag));
247
+
248
+ if (is_ca) { // writes AuthorityKeyIdentifier sequence
249
+ MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_len(&c, buf, len));
250
+ MBEDTLS_ASN1_CHK_ADD(len,
251
+ mbedtls_asn1_write_tag(&c,
252
+ buf,
253
+ MBEDTLS_ASN1_CONSTRUCTED |
254
+ MBEDTLS_ASN1_SEQUENCE));
255
+ }
256
+
257
+ if (is_ca) {
258
+ return mbedtls_x509write_crt_set_extension(ctx,
259
+ MBEDTLS_OID_AUTHORITY_KEY_IDENTIFIER,
260
+ MBEDTLS_OID_SIZE(
261
+ MBEDTLS_OID_AUTHORITY_KEY_IDENTIFIER),
262
+ 0, buf + sizeof(buf) - len, len);
263
+ } else {
264
+ return mbedtls_x509write_crt_set_extension(ctx,
265
+ MBEDTLS_OID_SUBJECT_KEY_IDENTIFIER,
266
+ MBEDTLS_OID_SIZE(
267
+ MBEDTLS_OID_SUBJECT_KEY_IDENTIFIER),
268
+ 0, buf + sizeof(buf) - len, len);
269
+ }
270
+ }
271
+
272
+ int mbedtls_x509write_crt_set_subject_key_identifier(mbedtls_x509write_cert *ctx)
273
+ {
274
+ return mbedtls_x509write_crt_set_key_identifier(ctx,
275
+ 0,
276
+ MBEDTLS_ASN1_OCTET_STRING);
277
+ }
278
+
279
+ int mbedtls_x509write_crt_set_authority_key_identifier(mbedtls_x509write_cert *ctx)
280
+ {
281
+ return mbedtls_x509write_crt_set_key_identifier(ctx,
282
+ 1,
283
+ (MBEDTLS_ASN1_CONTEXT_SPECIFIC | 0));
284
+ }
285
+ #endif /* MBEDTLS_MD_CAN_SHA1 */
286
+
287
+ int mbedtls_x509write_crt_set_key_usage(mbedtls_x509write_cert *ctx,
288
+ unsigned int key_usage)
289
+ {
290
+ unsigned char buf[5] = { 0 }, ku[2] = { 0 };
291
+ unsigned char *c;
292
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
293
+ const unsigned int allowed_bits = MBEDTLS_X509_KU_DIGITAL_SIGNATURE |
294
+ MBEDTLS_X509_KU_NON_REPUDIATION |
295
+ MBEDTLS_X509_KU_KEY_ENCIPHERMENT |
296
+ MBEDTLS_X509_KU_DATA_ENCIPHERMENT |
297
+ MBEDTLS_X509_KU_KEY_AGREEMENT |
298
+ MBEDTLS_X509_KU_KEY_CERT_SIGN |
299
+ MBEDTLS_X509_KU_CRL_SIGN |
300
+ MBEDTLS_X509_KU_ENCIPHER_ONLY |
301
+ MBEDTLS_X509_KU_DECIPHER_ONLY;
302
+
303
+ /* Check that nothing other than the allowed flags is set */
304
+ if ((key_usage & ~allowed_bits) != 0) {
305
+ return MBEDTLS_ERR_X509_FEATURE_UNAVAILABLE;
306
+ }
307
+
308
+ c = buf + 5;
309
+ MBEDTLS_PUT_UINT16_LE(key_usage, ku, 0);
310
+ ret = mbedtls_asn1_write_named_bitstring(&c, buf, ku, 9);
311
+
312
+ if (ret < 0) {
313
+ return ret;
314
+ } else if (ret < 3 || ret > 5) {
315
+ return MBEDTLS_ERR_X509_INVALID_FORMAT;
316
+ }
317
+
318
+ ret = mbedtls_x509write_crt_set_extension(ctx, MBEDTLS_OID_KEY_USAGE,
319
+ MBEDTLS_OID_SIZE(MBEDTLS_OID_KEY_USAGE),
320
+ 1, c, (size_t) ret);
321
+ if (ret != 0) {
322
+ return ret;
323
+ }
324
+
325
+ return 0;
326
+ }
327
+
328
+ int mbedtls_x509write_crt_set_ext_key_usage(mbedtls_x509write_cert *ctx,
329
+ const mbedtls_asn1_sequence *exts)
330
+ {
331
+ unsigned char buf[256];
332
+ unsigned char *c = buf + sizeof(buf);
333
+ int ret;
334
+ size_t len = 0;
335
+ const mbedtls_asn1_sequence *last_ext = NULL;
336
+ const mbedtls_asn1_sequence *ext;
337
+
338
+ memset(buf, 0, sizeof(buf));
339
+
340
+ /* We need at least one extension: SEQUENCE SIZE (1..MAX) OF KeyPurposeId */
341
+ if (exts == NULL) {
342
+ return MBEDTLS_ERR_X509_BAD_INPUT_DATA;
343
+ }
344
+
345
+ /* Iterate over exts backwards, so we write them out in the requested order */
346
+ while (last_ext != exts) {
347
+ for (ext = exts; ext->next != last_ext; ext = ext->next) {
348
+ }
349
+ if (ext->buf.tag != MBEDTLS_ASN1_OID) {
350
+ return MBEDTLS_ERR_X509_BAD_INPUT_DATA;
351
+ }
352
+ MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_raw_buffer(&c, buf, ext->buf.p, ext->buf.len));
353
+ MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_len(&c, buf, ext->buf.len));
354
+ MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_tag(&c, buf, MBEDTLS_ASN1_OID));
355
+ last_ext = ext;
356
+ }
357
+
358
+ MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_len(&c, buf, len));
359
+ MBEDTLS_ASN1_CHK_ADD(len,
360
+ mbedtls_asn1_write_tag(&c, buf,
361
+ MBEDTLS_ASN1_CONSTRUCTED | MBEDTLS_ASN1_SEQUENCE));
362
+
363
+ return mbedtls_x509write_crt_set_extension(ctx,
364
+ MBEDTLS_OID_EXTENDED_KEY_USAGE,
365
+ MBEDTLS_OID_SIZE(MBEDTLS_OID_EXTENDED_KEY_USAGE),
366
+ 1, c, len);
367
+ }
368
+
369
+ int mbedtls_x509write_crt_set_ns_cert_type(mbedtls_x509write_cert *ctx,
370
+ unsigned char ns_cert_type)
371
+ {
372
+ unsigned char buf[4] = { 0 };
373
+ unsigned char *c;
374
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
375
+
376
+ c = buf + 4;
377
+
378
+ ret = mbedtls_asn1_write_named_bitstring(&c, buf, &ns_cert_type, 8);
379
+ if (ret < 3 || ret > 4) {
380
+ return ret;
381
+ }
382
+
383
+ ret = mbedtls_x509write_crt_set_extension(ctx, MBEDTLS_OID_NS_CERT_TYPE,
384
+ MBEDTLS_OID_SIZE(MBEDTLS_OID_NS_CERT_TYPE),
385
+ 0, c, (size_t) ret);
386
+ if (ret != 0) {
387
+ return ret;
388
+ }
389
+
390
+ return 0;
391
+ }
392
+
393
+ static int x509_write_time(unsigned char **p, unsigned char *start,
394
+ const char *t, size_t size)
395
+ {
396
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
397
+ size_t len = 0;
398
+
399
+ /*
400
+ * write MBEDTLS_ASN1_UTC_TIME if year < 2050 (2 bytes shorter)
401
+ */
402
+ if (t[0] < '2' || (t[0] == '2' && t[1] == '0' && t[2] < '5')) {
403
+ MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_raw_buffer(p, start,
404
+ (const unsigned char *) t + 2,
405
+ size - 2));
406
+ MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_len(p, start, len));
407
+ MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_tag(p, start,
408
+ MBEDTLS_ASN1_UTC_TIME));
409
+ } else {
410
+ MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_raw_buffer(p, start,
411
+ (const unsigned char *) t,
412
+ size));
413
+ MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_len(p, start, len));
414
+ MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_tag(p, start,
415
+ MBEDTLS_ASN1_GENERALIZED_TIME));
416
+ }
417
+
418
+ return (int) len;
419
+ }
420
+
421
+ int mbedtls_x509write_crt_der(mbedtls_x509write_cert *ctx,
422
+ unsigned char *buf, size_t size,
423
+ int (*f_rng)(void *, unsigned char *, size_t),
424
+ void *p_rng)
425
+ {
426
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
427
+ const char *sig_oid;
428
+ size_t sig_oid_len = 0;
429
+ unsigned char *c, *c2;
430
+ unsigned char sig[MBEDTLS_PK_SIGNATURE_MAX_SIZE];
431
+ size_t hash_length = 0;
432
+ unsigned char hash[MBEDTLS_MD_MAX_SIZE];
433
+ #if defined(MBEDTLS_USE_PSA_CRYPTO)
434
+ psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED;
435
+ psa_algorithm_t psa_algorithm;
436
+ #endif /* MBEDTLS_USE_PSA_CRYPTO */
437
+
438
+ size_t sub_len = 0, pub_len = 0, sig_and_oid_len = 0, sig_len;
439
+ size_t len = 0;
440
+ mbedtls_pk_type_t pk_alg;
441
+ int write_sig_null_par;
442
+
443
+ /*
444
+ * Prepare data to be signed at the end of the target buffer
445
+ */
446
+ c = buf + size;
447
+
448
+ /* Signature algorithm needed in TBS, and later for actual signature */
449
+
450
+ /* There's no direct way of extracting a signature algorithm
451
+ * (represented as an element of mbedtls_pk_type_t) from a PK instance. */
452
+ if (mbedtls_pk_can_do(ctx->issuer_key, MBEDTLS_PK_RSA)) {
453
+ pk_alg = MBEDTLS_PK_RSA;
454
+ } else if (mbedtls_pk_can_do(ctx->issuer_key, MBEDTLS_PK_ECDSA)) {
455
+ pk_alg = MBEDTLS_PK_ECDSA;
456
+ } else {
457
+ return MBEDTLS_ERR_X509_INVALID_ALG;
458
+ }
459
+
460
+ if ((ret = mbedtls_oid_get_oid_by_sig_alg(pk_alg, ctx->md_alg,
461
+ &sig_oid, &sig_oid_len)) != 0) {
462
+ return ret;
463
+ }
464
+
465
+ /*
466
+ * Extensions ::= SEQUENCE SIZE (1..MAX) OF Extension
467
+ */
468
+
469
+ /* Only for v3 */
470
+ if (ctx->version == MBEDTLS_X509_CRT_VERSION_3) {
471
+ MBEDTLS_ASN1_CHK_ADD(len,
472
+ mbedtls_x509_write_extensions(&c,
473
+ buf, ctx->extensions));
474
+ MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_len(&c, buf, len));
475
+ MBEDTLS_ASN1_CHK_ADD(len,
476
+ mbedtls_asn1_write_tag(&c, buf,
477
+ MBEDTLS_ASN1_CONSTRUCTED |
478
+ MBEDTLS_ASN1_SEQUENCE));
479
+ MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_len(&c, buf, len));
480
+ MBEDTLS_ASN1_CHK_ADD(len,
481
+ mbedtls_asn1_write_tag(&c, buf,
482
+ MBEDTLS_ASN1_CONTEXT_SPECIFIC |
483
+ MBEDTLS_ASN1_CONSTRUCTED | 3));
484
+ }
485
+
486
+ /*
487
+ * SubjectPublicKeyInfo
488
+ */
489
+ MBEDTLS_ASN1_CHK_ADD(pub_len,
490
+ mbedtls_pk_write_pubkey_der(ctx->subject_key,
491
+ buf, (size_t) (c - buf)));
492
+ c -= pub_len;
493
+ len += pub_len;
494
+
495
+ /*
496
+ * Subject ::= Name
497
+ */
498
+ MBEDTLS_ASN1_CHK_ADD(len,
499
+ mbedtls_x509_write_names(&c, buf,
500
+ ctx->subject));
501
+
502
+ /*
503
+ * Validity ::= SEQUENCE {
504
+ * notBefore Time,
505
+ * notAfter Time }
506
+ */
507
+ sub_len = 0;
508
+
509
+ MBEDTLS_ASN1_CHK_ADD(sub_len,
510
+ x509_write_time(&c, buf, ctx->not_after,
511
+ MBEDTLS_X509_RFC5280_UTC_TIME_LEN));
512
+
513
+ MBEDTLS_ASN1_CHK_ADD(sub_len,
514
+ x509_write_time(&c, buf, ctx->not_before,
515
+ MBEDTLS_X509_RFC5280_UTC_TIME_LEN));
516
+
517
+ len += sub_len;
518
+ MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_len(&c, buf, sub_len));
519
+ MBEDTLS_ASN1_CHK_ADD(len,
520
+ mbedtls_asn1_write_tag(&c, buf,
521
+ MBEDTLS_ASN1_CONSTRUCTED |
522
+ MBEDTLS_ASN1_SEQUENCE));
523
+
524
+ /*
525
+ * Issuer ::= Name
526
+ */
527
+ MBEDTLS_ASN1_CHK_ADD(len, mbedtls_x509_write_names(&c, buf,
528
+ ctx->issuer));
529
+
530
+ /*
531
+ * Signature ::= AlgorithmIdentifier
532
+ */
533
+ if (pk_alg == MBEDTLS_PK_ECDSA) {
534
+ /*
535
+ * The AlgorithmIdentifier's parameters field must be absent for DSA/ECDSA signature
536
+ * algorithms, see https://www.rfc-editor.org/rfc/rfc5480#page-17 and
537
+ * https://www.rfc-editor.org/rfc/rfc5758#section-3.
538
+ */
539
+ write_sig_null_par = 0;
540
+ } else {
541
+ write_sig_null_par = 1;
542
+ }
543
+ MBEDTLS_ASN1_CHK_ADD(len,
544
+ mbedtls_asn1_write_algorithm_identifier_ext(&c, buf,
545
+ sig_oid, strlen(sig_oid),
546
+ 0, write_sig_null_par));
547
+
548
+ /*
549
+ * Serial ::= INTEGER
550
+ *
551
+ * Written data is:
552
+ * - "ctx->serial_len" bytes for the raw serial buffer
553
+ * - if MSb of "serial" is 1, then prepend an extra 0x00 byte
554
+ * - 1 byte for the length
555
+ * - 1 byte for the TAG
556
+ */
557
+ MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_raw_buffer(&c, buf,
558
+ ctx->serial, ctx->serial_len));
559
+ if (*c & 0x80) {
560
+ if (c - buf < 1) {
561
+ return MBEDTLS_ERR_X509_BUFFER_TOO_SMALL;
562
+ }
563
+ *(--c) = 0x0;
564
+ len++;
565
+ MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_len(&c, buf,
566
+ ctx->serial_len + 1));
567
+ } else {
568
+ MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_len(&c, buf,
569
+ ctx->serial_len));
570
+ }
571
+ MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_tag(&c, buf,
572
+ MBEDTLS_ASN1_INTEGER));
573
+
574
+ /*
575
+ * Version ::= INTEGER { v1(0), v2(1), v3(2) }
576
+ */
577
+
578
+ /* Can be omitted for v1 */
579
+ if (ctx->version != MBEDTLS_X509_CRT_VERSION_1) {
580
+ sub_len = 0;
581
+ MBEDTLS_ASN1_CHK_ADD(sub_len,
582
+ mbedtls_asn1_write_int(&c, buf, ctx->version));
583
+ len += sub_len;
584
+ MBEDTLS_ASN1_CHK_ADD(len,
585
+ mbedtls_asn1_write_len(&c, buf, sub_len));
586
+ MBEDTLS_ASN1_CHK_ADD(len,
587
+ mbedtls_asn1_write_tag(&c, buf,
588
+ MBEDTLS_ASN1_CONTEXT_SPECIFIC |
589
+ MBEDTLS_ASN1_CONSTRUCTED | 0));
590
+ }
591
+
592
+ MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_len(&c, buf, len));
593
+ MBEDTLS_ASN1_CHK_ADD(len,
594
+ mbedtls_asn1_write_tag(&c, buf, MBEDTLS_ASN1_CONSTRUCTED |
595
+ MBEDTLS_ASN1_SEQUENCE));
596
+
597
+ /*
598
+ * Make signature
599
+ */
600
+
601
+ /* Compute hash of CRT. */
602
+ #if defined(MBEDTLS_USE_PSA_CRYPTO)
603
+ psa_algorithm = mbedtls_md_psa_alg_from_type(ctx->md_alg);
604
+
605
+ status = psa_hash_compute(psa_algorithm,
606
+ c,
607
+ len,
608
+ hash,
609
+ sizeof(hash),
610
+ &hash_length);
611
+ if (status != PSA_SUCCESS) {
612
+ return MBEDTLS_ERR_PLATFORM_HW_ACCEL_FAILED;
613
+ }
614
+ #else
615
+ if ((ret = mbedtls_md(mbedtls_md_info_from_type(ctx->md_alg), c,
616
+ len, hash)) != 0) {
617
+ return ret;
618
+ }
619
+ #endif /* MBEDTLS_USE_PSA_CRYPTO */
620
+
621
+
622
+ if ((ret = mbedtls_pk_sign(ctx->issuer_key, ctx->md_alg,
623
+ hash, hash_length, sig, sizeof(sig), &sig_len,
624
+ f_rng, p_rng)) != 0) {
625
+ return ret;
626
+ }
627
+
628
+ /* Move CRT to the front of the buffer to have space
629
+ * for the signature. */
630
+ memmove(buf, c, len);
631
+ c = buf + len;
632
+
633
+ /* Add signature at the end of the buffer,
634
+ * making sure that it doesn't underflow
635
+ * into the CRT buffer. */
636
+ c2 = buf + size;
637
+ MBEDTLS_ASN1_CHK_ADD(sig_and_oid_len, mbedtls_x509_write_sig(&c2, c,
638
+ sig_oid, sig_oid_len,
639
+ sig, sig_len, pk_alg));
640
+
641
+ /*
642
+ * Memory layout after this step:
643
+ *
644
+ * buf c=buf+len c2 buf+size
645
+ * [CRT0,...,CRTn, UNUSED, ..., UNUSED, SIG0, ..., SIGm]
646
+ */
647
+
648
+ /* Move raw CRT to just before the signature. */
649
+ c = c2 - len;
650
+ memmove(c, buf, len);
651
+
652
+ len += sig_and_oid_len;
653
+ MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_len(&c, buf, len));
654
+ MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_tag(&c, buf,
655
+ MBEDTLS_ASN1_CONSTRUCTED |
656
+ MBEDTLS_ASN1_SEQUENCE));
657
+
658
+ return (int) len;
659
+ }
660
+
661
+ #define PEM_BEGIN_CRT "-----BEGIN CERTIFICATE-----\n"
662
+ #define PEM_END_CRT "-----END CERTIFICATE-----\n"
663
+
664
+ #if defined(MBEDTLS_PEM_WRITE_C)
665
+ int mbedtls_x509write_crt_pem(mbedtls_x509write_cert *crt,
666
+ unsigned char *buf, size_t size,
667
+ int (*f_rng)(void *, unsigned char *, size_t),
668
+ void *p_rng)
669
+ {
670
+ int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
671
+ size_t olen;
672
+
673
+ if ((ret = mbedtls_x509write_crt_der(crt, buf, size,
674
+ f_rng, p_rng)) < 0) {
675
+ return ret;
676
+ }
677
+
678
+ if ((ret = mbedtls_pem_write_buffer(PEM_BEGIN_CRT, PEM_END_CRT,
679
+ buf + size - ret, ret,
680
+ buf, size, &olen)) != 0) {
681
+ return ret;
682
+ }
683
+
684
+ return 0;
685
+ }
686
+ #endif /* MBEDTLS_PEM_WRITE_C */
687
+
688
+ #endif /* MBEDTLS_X509_CRT_WRITE_C */