pi-codex-auto-review 0.1.2 → 0.1.4

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 (1034) hide show
  1. package/README.md +19 -10
  2. package/dist/approval-commands.d.ts +4 -0
  3. package/dist/approval-commands.js +176 -0
  4. package/dist/approval-commands.js.map +1 -0
  5. package/dist/approval-settings.d.ts +9 -0
  6. package/dist/approval-settings.js +40 -0
  7. package/dist/approval-settings.js.map +1 -0
  8. package/dist/approvals.d.ts +2 -1
  9. package/dist/approvals.js +3 -2
  10. package/dist/approvals.js.map +1 -1
  11. package/dist/cli.js +5 -5
  12. package/dist/cli.js.map +1 -1
  13. package/dist/contracts.d.ts +2 -0
  14. package/dist/contracts.js.map +1 -1
  15. package/dist/index.d.ts +2 -2
  16. package/dist/index.js +26 -38
  17. package/dist/index.js.map +1 -1
  18. package/dist/policy/index.d.ts +0 -1
  19. package/dist/policy/index.js +11 -32
  20. package/dist/policy/index.js.map +1 -1
  21. package/dist/review/context.d.ts +14 -1
  22. package/dist/review/context.js +83 -13
  23. package/dist/review/context.js.map +1 -1
  24. package/dist/review/investigation.d.ts +3 -3
  25. package/dist/review/investigation.js +1 -1
  26. package/dist/review/investigation.js.map +1 -1
  27. package/dist/review/lifecycle.js +2 -2
  28. package/dist/review/lifecycle.js.map +1 -1
  29. package/dist/review/policy.js +20 -3
  30. package/dist/review/policy.js.map +1 -1
  31. package/dist/review/user-input.d.ts +5 -0
  32. package/dist/review/user-input.js +31 -0
  33. package/dist/review/user-input.js.map +1 -0
  34. package/dist/reviewer.d.ts +11 -1
  35. package/dist/reviewer.js +12 -2
  36. package/dist/reviewer.js.map +1 -1
  37. package/dist/tools/controller.d.ts +11 -6
  38. package/dist/tools/controller.js +102 -55
  39. package/dist/tools/controller.js.map +1 -1
  40. package/dist/tools/environment.d.ts +2 -0
  41. package/dist/tools/environment.js +9 -0
  42. package/dist/tools/environment.js.map +1 -0
  43. package/dist/tools/executor.d.ts +14 -0
  44. package/dist/tools/executor.js +75 -0
  45. package/dist/tools/executor.js.map +1 -0
  46. package/dist/tools/external.d.ts +1 -0
  47. package/dist/tools/external.js.map +1 -1
  48. package/dist/tools/mcp.js +1 -0
  49. package/dist/tools/mcp.js.map +1 -1
  50. package/dist/tools/mutation-queue.d.ts +1 -0
  51. package/dist/tools/mutation-queue.js +16 -0
  52. package/dist/tools/mutation-queue.js.map +1 -0
  53. package/docs/publishing.md +7 -7
  54. package/docs/security/dependencies.md +13 -3
  55. package/docs/testing/auto-review-protection.md +31 -8
  56. package/docs/usage.md +33 -18
  57. package/package.json +11 -14
  58. package/dist/sandbox/broker.d.ts +0 -1
  59. package/dist/sandbox/broker.js +0 -139
  60. package/dist/sandbox/broker.js.map +0 -1
  61. package/dist/sandbox/config.d.ts +0 -5
  62. package/dist/sandbox/config.js +0 -97
  63. package/dist/sandbox/config.js.map +0 -1
  64. package/dist/sandbox/directory-scan.d.ts +0 -1
  65. package/dist/sandbox/directory-scan.js +0 -32
  66. package/dist/sandbox/directory-scan.js.map +0 -1
  67. package/dist/sandbox/executor.d.ts +0 -20
  68. package/dist/sandbox/executor.js +0 -146
  69. package/dist/sandbox/executor.js.map +0 -1
  70. package/dist/sandbox/hard-links.d.ts +0 -4
  71. package/dist/sandbox/hard-links.js +0 -155
  72. package/dist/sandbox/hard-links.js.map +0 -1
  73. package/dist/sandbox/linux-read-paths.d.ts +0 -7
  74. package/dist/sandbox/linux-read-paths.js +0 -47
  75. package/dist/sandbox/linux-read-paths.js.map +0 -1
  76. package/dist/sandbox/paths.d.ts +0 -3
  77. package/dist/sandbox/paths.js +0 -10
  78. package/dist/sandbox/paths.js.map +0 -1
  79. package/dist/sandbox/runtime-write-paths.d.ts +0 -2
  80. package/dist/sandbox/runtime-write-paths.js +0 -8
  81. package/dist/sandbox/runtime-write-paths.js.map +0 -1
  82. package/dist/sandbox/seccomp.d.ts +0 -5
  83. package/dist/sandbox/seccomp.js +0 -16
  84. package/dist/sandbox/seccomp.js.map +0 -1
  85. package/dist/sandbox/worker.d.ts +0 -1
  86. package/dist/sandbox/worker.js +0 -78
  87. package/dist/sandbox/worker.js.map +0 -1
  88. package/node_modules/@anthropic-ai/sandbox-runtime/LICENSE +0 -201
  89. package/node_modules/@anthropic-ai/sandbox-runtime/README.md +0 -901
  90. package/node_modules/@anthropic-ai/sandbox-runtime/dist/cli.d.ts +0 -3
  91. package/node_modules/@anthropic-ai/sandbox-runtime/dist/cli.d.ts.map +0 -1
  92. package/node_modules/@anthropic-ai/sandbox-runtime/dist/cli.js +0 -472
  93. package/node_modules/@anthropic-ai/sandbox-runtime/dist/cli.js.map +0 -1
  94. package/node_modules/@anthropic-ai/sandbox-runtime/dist/index.d.ts +0 -19
  95. package/node_modules/@anthropic-ai/sandbox-runtime/dist/index.d.ts.map +0 -1
  96. package/node_modules/@anthropic-ai/sandbox-runtime/dist/index.js +0 -17
  97. package/node_modules/@anthropic-ai/sandbox-runtime/dist/index.js.map +0 -1
  98. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/address.d.ts +0 -52
  99. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/address.d.ts.map +0 -1
  100. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/address.js +0 -153
  101. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/address.js.map +0 -1
  102. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/aws-sigv4.d.ts +0 -164
  103. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/aws-sigv4.d.ts.map +0 -1
  104. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/aws-sigv4.js +0 -246
  105. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/aws-sigv4.js.map +0 -1
  106. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/body-substitution.d.ts +0 -58
  107. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/body-substitution.d.ts.map +0 -1
  108. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/body-substitution.js +0 -128
  109. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/body-substitution.js.map +0 -1
  110. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-aws-pairs.d.ts +0 -124
  111. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-aws-pairs.d.ts.map +0 -1
  112. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-aws-pairs.js +0 -258
  113. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-aws-pairs.js.map +0 -1
  114. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-decode.d.ts +0 -87
  115. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-decode.d.ts.map +0 -1
  116. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-decode.js +0 -138
  117. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-decode.js.map +0 -1
  118. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-extract.d.ts +0 -67
  119. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-extract.d.ts.map +0 -1
  120. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-extract.js +0 -113
  121. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-extract.js.map +0 -1
  122. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-mask-env.d.ts +0 -70
  123. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-mask-env.d.ts.map +0 -1
  124. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-mask-env.js +0 -171
  125. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-mask-env.js.map +0 -1
  126. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-mask-files.d.ts +0 -120
  127. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-mask-files.d.ts.map +0 -1
  128. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-mask-files.js +0 -281
  129. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-mask-files.js.map +0 -1
  130. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-sentinel.d.ts +0 -108
  131. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-sentinel.d.ts.map +0 -1
  132. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-sentinel.js +0 -208
  133. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-sentinel.js.map +0 -1
  134. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/domain-pattern.d.ts +0 -82
  135. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/domain-pattern.d.ts.map +0 -1
  136. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/domain-pattern.js +0 -155
  137. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/domain-pattern.js.map +0 -1
  138. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/generate-seccomp-filter.d.ts +0 -44
  139. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/generate-seccomp-filter.d.ts.map +0 -1
  140. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/generate-seccomp-filter.js +0 -220
  141. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/generate-seccomp-filter.js.map +0 -1
  142. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/http-proxy.d.ts +0 -150
  143. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/http-proxy.d.ts.map +0 -1
  144. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/http-proxy.js +0 -678
  145. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/http-proxy.js.map +0 -1
  146. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/java-proxy-agent.d.ts +0 -32
  147. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/java-proxy-agent.d.ts.map +0 -1
  148. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/java-proxy-agent.js +0 -111
  149. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/java-proxy-agent.js.map +0 -1
  150. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/linux-sandbox-utils.d.ts +0 -305
  151. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/linux-sandbox-utils.d.ts.map +0 -1
  152. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/linux-sandbox-utils.js +0 -2605
  153. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/linux-sandbox-utils.js.map +0 -1
  154. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/linux-violation-monitor.d.ts +0 -55
  155. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/linux-violation-monitor.d.ts.map +0 -1
  156. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/linux-violation-monitor.js +0 -152
  157. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/linux-violation-monitor.js.map +0 -1
  158. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/listen-in-range.d.ts +0 -12
  159. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/listen-in-range.d.ts.map +0 -1
  160. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/listen-in-range.js +0 -43
  161. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/listen-in-range.js.map +0 -1
  162. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/macos-sandbox-utils.d.ts +0 -116
  163. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/macos-sandbox-utils.d.ts.map +0 -1
  164. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/macos-sandbox-utils.js +0 -1195
  165. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/macos-sandbox-utils.js.map +0 -1
  166. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/mitm-ca.d.ts +0 -200
  167. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/mitm-ca.d.ts.map +0 -1
  168. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/mitm-ca.js +0 -443
  169. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/mitm-ca.js.map +0 -1
  170. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/mitm-leaf.d.ts +0 -28
  171. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/mitm-leaf.d.ts.map +0 -1
  172. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/mitm-leaf.js +0 -114
  173. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/mitm-leaf.js.map +0 -1
  174. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/mux-proxy.d.ts +0 -59
  175. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/mux-proxy.d.ts.map +0 -1
  176. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/mux-proxy.js +0 -159
  177. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/mux-proxy.js.map +0 -1
  178. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/parent-proxy.d.ts +0 -147
  179. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/parent-proxy.d.ts.map +0 -1
  180. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/parent-proxy.js +0 -445
  181. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/parent-proxy.js.map +0 -1
  182. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/read-deny-glob.d.ts +0 -17
  183. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/read-deny-glob.d.ts.map +0 -1
  184. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/read-deny-glob.js +0 -163
  185. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/read-deny-glob.js.map +0 -1
  186. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/request-filter.d.ts +0 -83
  187. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/request-filter.d.ts.map +0 -1
  188. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/request-filter.js +0 -212
  189. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/request-filter.js.map +0 -1
  190. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/resolved-address-guard.d.ts +0 -76
  191. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/resolved-address-guard.d.ts.map +0 -1
  192. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/resolved-address-guard.js +0 -221
  193. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/resolved-address-guard.js.map +0 -1
  194. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-config.d.ts +0 -1691
  195. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-config.d.ts.map +0 -1
  196. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-config.js +0 -1233
  197. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-config.js.map +0 -1
  198. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-manager.d.ts +0 -97
  199. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-manager.d.ts.map +0 -1
  200. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-manager.js +0 -1937
  201. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-manager.js.map +0 -1
  202. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-schemas.d.ts +0 -113
  203. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-schemas.d.ts.map +0 -1
  204. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-schemas.js +0 -3
  205. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-schemas.js.map +0 -1
  206. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-utils.d.ts +0 -411
  207. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-utils.d.ts.map +0 -1
  208. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-utils.js +0 -1408
  209. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-utils.js.map +0 -1
  210. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-violation-store.d.ts +0 -37
  211. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-violation-store.d.ts.map +0 -1
  212. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-violation-store.js +0 -125
  213. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-violation-store.js.map +0 -1
  214. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/socks-proxy.d.ts +0 -57
  215. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/socks-proxy.d.ts.map +0 -1
  216. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/socks-proxy.js +0 -332
  217. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/socks-proxy.js.map +0 -1
  218. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/tls-terminate-proxy.d.ts +0 -100
  219. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/tls-terminate-proxy.d.ts.map +0 -1
  220. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/tls-terminate-proxy.js +0 -546
  221. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/tls-terminate-proxy.js.map +0 -1
  222. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/windows-sandbox-utils.d.ts +0 -923
  223. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/windows-sandbox-utils.d.ts.map +0 -1
  224. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/windows-sandbox-utils.js +0 -1419
  225. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/windows-sandbox-utils.js.map +0 -1
  226. package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/config-loader.d.ts +0 -31
  227. package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/config-loader.d.ts.map +0 -1
  228. package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/config-loader.js +0 -69
  229. package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/config-loader.js.map +0 -1
  230. package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/debug.d.ts +0 -7
  231. package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/debug.d.ts.map +0 -1
  232. package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/debug.js +0 -25
  233. package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/debug.js.map +0 -1
  234. package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/platform.d.ts +0 -15
  235. package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/platform.d.ts.map +0 -1
  236. package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/platform.js +0 -49
  237. package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/platform.js.map +0 -1
  238. package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/ripgrep.d.ts +0 -17
  239. package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/ripgrep.d.ts.map +0 -1
  240. package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/ripgrep.js +0 -37
  241. package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/ripgrep.js.map +0 -1
  242. package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/shell-quote.d.ts +0 -27
  243. package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/shell-quote.d.ts.map +0 -1
  244. package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/shell-quote.js +0 -47
  245. package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/shell-quote.js.map +0 -1
  246. package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/which.d.ts +0 -9
  247. package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/which.d.ts.map +0 -1
  248. package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/which.js +0 -25
  249. package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/which.js.map +0 -1
  250. package/node_modules/@anthropic-ai/sandbox-runtime/package.json +0 -88
  251. package/node_modules/@anthropic-ai/sandbox-runtime/vendor/java-proxy-agent/build.ts +0 -95
  252. package/node_modules/@anthropic-ai/sandbox-runtime/vendor/java-proxy-agent/srt-proxy-agent.jar +0 -0
  253. package/node_modules/@anthropic-ai/sandbox-runtime/vendor/seccomp/arm64/apply-seccomp +0 -0
  254. package/node_modules/@anthropic-ai/sandbox-runtime/vendor/seccomp/build.ts +0 -69
  255. package/node_modules/@anthropic-ai/sandbox-runtime/vendor/seccomp/x64/apply-seccomp +0 -0
  256. package/node_modules/@anthropic-ai/sandbox-runtime/vendor/srt-win/arm64/srt-win.exe +0 -0
  257. package/node_modules/@anthropic-ai/sandbox-runtime/vendor/srt-win/build.ts +0 -28
  258. package/node_modules/@anthropic-ai/sandbox-runtime/vendor/srt-win/x64/srt-win.exe +0 -0
  259. package/node_modules/@pondwader/socks5-server/.github/workflows/ci.yml +0 -27
  260. package/node_modules/@pondwader/socks5-server/LICENSE +0 -20
  261. package/node_modules/@pondwader/socks5-server/README.md +0 -151
  262. package/node_modules/@pondwader/socks5-server/dist/index.d.mts +0 -87
  263. package/node_modules/@pondwader/socks5-server/dist/index.d.ts +0 -87
  264. package/node_modules/@pondwader/socks5-server/dist/index.js +0 -346
  265. package/node_modules/@pondwader/socks5-server/dist/index.mjs +0 -307
  266. package/node_modules/@pondwader/socks5-server/package.json +0 -31
  267. package/node_modules/commander/LICENSE +0 -22
  268. package/node_modules/commander/Readme.md +0 -1157
  269. package/node_modules/commander/esm.mjs +0 -16
  270. package/node_modules/commander/index.js +0 -24
  271. package/node_modules/commander/lib/argument.js +0 -149
  272. package/node_modules/commander/lib/command.js +0 -2509
  273. package/node_modules/commander/lib/error.js +0 -39
  274. package/node_modules/commander/lib/help.js +0 -520
  275. package/node_modules/commander/lib/option.js +0 -330
  276. package/node_modules/commander/lib/suggestSimilar.js +0 -101
  277. package/node_modules/commander/package-support.json +0 -16
  278. package/node_modules/commander/package.json +0 -84
  279. package/node_modules/commander/typings/esm.d.mts +0 -3
  280. package/node_modules/commander/typings/index.d.ts +0 -969
  281. package/node_modules/node-forge/.editorconfig +0 -17
  282. package/node_modules/node-forge/.eslintrc.js +0 -24
  283. package/node_modules/node-forge/.github/workflows/main.yaml +0 -96
  284. package/node_modules/node-forge/.istanbul.yml +0 -2
  285. package/node_modules/node-forge/.npmignore +0 -15
  286. package/node_modules/node-forge/CHANGELOG.md +0 -555
  287. package/node_modules/node-forge/CONTRIBUTING.md +0 -18
  288. package/node_modules/node-forge/LICENSE +0 -331
  289. package/node_modules/node-forge/README.md +0 -2071
  290. package/node_modules/node-forge/RELEASE.md +0 -19
  291. package/node_modules/node-forge/SECURITY.md +0 -5
  292. package/node_modules/node-forge/examples/create-cert.js +0 -110
  293. package/node_modules/node-forge/examples/create-csr.js +0 -66
  294. package/node_modules/node-forge/examples/create-pkcs12.js +0 -160
  295. package/node_modules/node-forge/examples/imap.js +0 -46
  296. package/node_modules/node-forge/examples/sign-p7.js +0 -115
  297. package/node_modules/node-forge/examples/tls.js +0 -189
  298. package/node_modules/node-forge/flash/PooledSocket.as +0 -18
  299. package/node_modules/node-forge/flash/README.md +0 -48
  300. package/node_modules/node-forge/flash/SocketEvent.as +0 -36
  301. package/node_modules/node-forge/flash/SocketPool.as +0 -754
  302. package/node_modules/node-forge/flash/mod_fsp/README +0 -135
  303. package/node_modules/node-forge/flash/mod_fsp/mod_fsp.c +0 -415
  304. package/node_modules/node-forge/flash/package.json +0 -28
  305. package/node_modules/node-forge/flash/policyserver.js +0 -65
  306. package/node_modules/node-forge/flash/policyserver.py +0 -112
  307. package/node_modules/node-forge/flash/swf/SocketPool.swf +0 -0
  308. package/node_modules/node-forge/karma-sauce.conf.js +0 -79
  309. package/node_modules/node-forge/karma.conf.js +0 -133
  310. package/node_modules/node-forge/lib/aes.js +0 -1091
  311. package/node_modules/node-forge/lib/aesCipherSuites.js +0 -282
  312. package/node_modules/node-forge/lib/asn1-validator.js +0 -91
  313. package/node_modules/node-forge/lib/asn1.js +0 -1503
  314. package/node_modules/node-forge/lib/baseN.js +0 -186
  315. package/node_modules/node-forge/lib/cipher.js +0 -230
  316. package/node_modules/node-forge/lib/cipherModes.js +0 -999
  317. package/node_modules/node-forge/lib/des.js +0 -496
  318. package/node_modules/node-forge/lib/ed25519.js +0 -1091
  319. package/node_modules/node-forge/lib/forge.js +0 -13
  320. package/node_modules/node-forge/lib/form.js +0 -149
  321. package/node_modules/node-forge/lib/hmac.js +0 -146
  322. package/node_modules/node-forge/lib/http.js +0 -1346
  323. package/node_modules/node-forge/lib/index.all.js +0 -16
  324. package/node_modules/node-forge/lib/index.js +0 -33
  325. package/node_modules/node-forge/lib/jsbn.js +0 -1294
  326. package/node_modules/node-forge/lib/kem.js +0 -168
  327. package/node_modules/node-forge/lib/log.js +0 -319
  328. package/node_modules/node-forge/lib/md.all.js +0 -13
  329. package/node_modules/node-forge/lib/md.js +0 -11
  330. package/node_modules/node-forge/lib/md5.js +0 -289
  331. package/node_modules/node-forge/lib/mgf.js +0 -12
  332. package/node_modules/node-forge/lib/mgf1.js +0 -57
  333. package/node_modules/node-forge/lib/oids.js +0 -180
  334. package/node_modules/node-forge/lib/pbe.js +0 -1023
  335. package/node_modules/node-forge/lib/pbkdf2.js +0 -211
  336. package/node_modules/node-forge/lib/pem.js +0 -237
  337. package/node_modules/node-forge/lib/pkcs1.js +0 -276
  338. package/node_modules/node-forge/lib/pkcs12.js +0 -1078
  339. package/node_modules/node-forge/lib/pkcs7.js +0 -1260
  340. package/node_modules/node-forge/lib/pkcs7asn1.js +0 -410
  341. package/node_modules/node-forge/lib/pki.js +0 -102
  342. package/node_modules/node-forge/lib/prime.js +0 -297
  343. package/node_modules/node-forge/lib/prime.worker.js +0 -168
  344. package/node_modules/node-forge/lib/prng.js +0 -419
  345. package/node_modules/node-forge/lib/pss.js +0 -241
  346. package/node_modules/node-forge/lib/random.js +0 -191
  347. package/node_modules/node-forge/lib/rc2.js +0 -410
  348. package/node_modules/node-forge/lib/rsa.js +0 -1973
  349. package/node_modules/node-forge/lib/sha1.js +0 -319
  350. package/node_modules/node-forge/lib/sha256.js +0 -327
  351. package/node_modules/node-forge/lib/sha512.js +0 -561
  352. package/node_modules/node-forge/lib/socket.js +0 -287
  353. package/node_modules/node-forge/lib/ssh.js +0 -236
  354. package/node_modules/node-forge/lib/tls.js +0 -4282
  355. package/node_modules/node-forge/lib/tlssocket.js +0 -249
  356. package/node_modules/node-forge/lib/util.js +0 -2652
  357. package/node_modules/node-forge/lib/x509.js +0 -3251
  358. package/node_modules/node-forge/lib/xhr.js +0 -738
  359. package/node_modules/node-forge/package.json +0 -123
  360. package/node_modules/node-forge/tests/.eslintrc.js +0 -5
  361. package/node_modules/node-forge/tests/README.md +0 -4
  362. package/node_modules/node-forge/tests/benchmarks/aes-speed.js +0 -62
  363. package/node_modules/node-forge/tests/benchmarks/so-44303784.js +0 -246
  364. package/node_modules/node-forge/tests/flash/README.md +0 -7
  365. package/node_modules/node-forge/tests/flash/Test.as +0 -96
  366. package/node_modules/node-forge/tests/flash/build-flash.xml +0 -7
  367. package/node_modules/node-forge/tests/flash/index.html +0 -28
  368. package/node_modules/node-forge/tests/index.html +0 -33
  369. package/node_modules/node-forge/tests/issues/heartbleed.js +0 -55
  370. package/node_modules/node-forge/tests/issues/issue-428.html +0 -95
  371. package/node_modules/node-forge/tests/issues/issue-428.js +0 -375
  372. package/node_modules/node-forge/tests/karma/index.js +0 -8
  373. package/node_modules/node-forge/tests/karma/testWorker.js +0 -65
  374. package/node_modules/node-forge/tests/karma/web-worker-rsa.js +0 -55
  375. package/node_modules/node-forge/tests/legacy/common.html +0 -65
  376. package/node_modules/node-forge/tests/legacy/common.js +0 -2199
  377. package/node_modules/node-forge/tests/legacy/form.html +0 -148
  378. package/node_modules/node-forge/tests/legacy/form.js +0 -40
  379. package/node_modules/node-forge/tests/legacy/http.html +0 -235
  380. package/node_modules/node-forge/tests/legacy/index.html +0 -70
  381. package/node_modules/node-forge/tests/legacy/keygen.html +0 -113
  382. package/node_modules/node-forge/tests/legacy/login.css +0 -26
  383. package/node_modules/node-forge/tests/legacy/loginDemo.html +0 -32
  384. package/node_modules/node-forge/tests/legacy/loginDemo.js +0 -149
  385. package/node_modules/node-forge/tests/legacy/performance.html +0 -533
  386. package/node_modules/node-forge/tests/legacy/result.txt +0 -1
  387. package/node_modules/node-forge/tests/legacy/socketPool.html +0 -302
  388. package/node_modules/node-forge/tests/legacy/tasks.html +0 -54
  389. package/node_modules/node-forge/tests/legacy/tasks.js +0 -378
  390. package/node_modules/node-forge/tests/legacy/tls.html +0 -389
  391. package/node_modules/node-forge/tests/legacy/webid.html +0 -89
  392. package/node_modules/node-forge/tests/legacy/webid.js +0 -313
  393. package/node_modules/node-forge/tests/legacy/ws-webid.js +0 -120
  394. package/node_modules/node-forge/tests/legacy/xhr.html +0 -67
  395. package/node_modules/node-forge/tests/legacy/xhr.js +0 -590
  396. package/node_modules/node-forge/tests/pocs/ghsa-2328-f5f3-gj25.js +0 -85
  397. package/node_modules/node-forge/tests/pocs/ghsa-ppp5-5v6c-4jwp.js +0 -166
  398. package/node_modules/node-forge/tests/pocs/ghsa-q67f-28xg-22rw.js +0 -103
  399. package/node_modules/node-forge/tests/security/cve-2025-12816.js +0 -75
  400. package/node_modules/node-forge/tests/security/ghsa-554w-wpv2-vw27.js +0 -81
  401. package/node_modules/node-forge/tests/security/index.js +0 -3
  402. package/node_modules/node-forge/tests/server.crt +0 -26
  403. package/node_modules/node-forge/tests/server.js +0 -87
  404. package/node_modules/node-forge/tests/server.key +0 -27
  405. package/node_modules/node-forge/tests/support/task.js +0 -718
  406. package/node_modules/node-forge/tests/tests.css +0 -61
  407. package/node_modules/node-forge/tests/unit/aes.js +0 -1498
  408. package/node_modules/node-forge/tests/unit/asn1.js +0 -1337
  409. package/node_modules/node-forge/tests/unit/csr.js +0 -129
  410. package/node_modules/node-forge/tests/unit/des.js +0 -231
  411. package/node_modules/node-forge/tests/unit/ed25519.js +0 -395
  412. package/node_modules/node-forge/tests/unit/forge.js +0 -2
  413. package/node_modules/node-forge/tests/unit/hmac.js +0 -64
  414. package/node_modules/node-forge/tests/unit/index.html +0 -20
  415. package/node_modules/node-forge/tests/unit/index.js +0 -27
  416. package/node_modules/node-forge/tests/unit/jsbn.js +0 -40
  417. package/node_modules/node-forge/tests/unit/kem.js +0 -167
  418. package/node_modules/node-forge/tests/unit/md5.js +0 -114
  419. package/node_modules/node-forge/tests/unit/mgf1.js +0 -16
  420. package/node_modules/node-forge/tests/unit/pbkdf2.js +0 -182
  421. package/node_modules/node-forge/tests/unit/pem.js +0 -159
  422. package/node_modules/node-forge/tests/unit/pkcs1.js +0 -1077
  423. package/node_modules/node-forge/tests/unit/pkcs12.js +0 -739
  424. package/node_modules/node-forge/tests/unit/pkcs7.js +0 -792
  425. package/node_modules/node-forge/tests/unit/random.js +0 -48
  426. package/node_modules/node-forge/tests/unit/rc2.js +0 -88
  427. package/node_modules/node-forge/tests/unit/rsa.js +0 -1278
  428. package/node_modules/node-forge/tests/unit/sha1.js +0 -72
  429. package/node_modules/node-forge/tests/unit/sha256.js +0 -79
  430. package/node_modules/node-forge/tests/unit/sha512.js +0 -200
  431. package/node_modules/node-forge/tests/unit/ssh.js +0 -175
  432. package/node_modules/node-forge/tests/unit/tls.js +0 -175
  433. package/node_modules/node-forge/tests/unit/util.js +0 -595
  434. package/node_modules/node-forge/tests/unit/x509.js +0 -1986
  435. package/node_modules/node-forge/tests/websockets/server-webid.js +0 -495
  436. package/node_modules/node-forge/tests/websockets/server-ws.js +0 -158
  437. package/node_modules/node-forge/webpack-tests.config.js +0 -26
  438. package/node_modules/node-forge/webpack.config.js +0 -130
  439. package/node_modules/zod/LICENSE +0 -21
  440. package/node_modules/zod/README.md +0 -208
  441. package/node_modules/zod/index.cjs +0 -33
  442. package/node_modules/zod/index.d.cts +0 -4
  443. package/node_modules/zod/index.d.ts +0 -4
  444. package/node_modules/zod/index.js +0 -4
  445. package/node_modules/zod/package.json +0 -118
  446. package/node_modules/zod/src/index.ts +0 -4
  447. package/node_modules/zod/src/v3/ZodError.ts +0 -330
  448. package/node_modules/zod/src/v3/benchmarks/datetime.ts +0 -58
  449. package/node_modules/zod/src/v3/benchmarks/discriminatedUnion.ts +0 -80
  450. package/node_modules/zod/src/v3/benchmarks/index.ts +0 -59
  451. package/node_modules/zod/src/v3/benchmarks/ipv4.ts +0 -57
  452. package/node_modules/zod/src/v3/benchmarks/object.ts +0 -69
  453. package/node_modules/zod/src/v3/benchmarks/primitives.ts +0 -162
  454. package/node_modules/zod/src/v3/benchmarks/realworld.ts +0 -63
  455. package/node_modules/zod/src/v3/benchmarks/string.ts +0 -55
  456. package/node_modules/zod/src/v3/benchmarks/union.ts +0 -80
  457. package/node_modules/zod/src/v3/errors.ts +0 -13
  458. package/node_modules/zod/src/v3/external.ts +0 -6
  459. package/node_modules/zod/src/v3/helpers/enumUtil.ts +0 -17
  460. package/node_modules/zod/src/v3/helpers/errorUtil.ts +0 -8
  461. package/node_modules/zod/src/v3/helpers/parseUtil.ts +0 -176
  462. package/node_modules/zod/src/v3/helpers/partialUtil.ts +0 -34
  463. package/node_modules/zod/src/v3/helpers/typeAliases.ts +0 -2
  464. package/node_modules/zod/src/v3/helpers/util.ts +0 -224
  465. package/node_modules/zod/src/v3/index.ts +0 -4
  466. package/node_modules/zod/src/v3/locales/en.ts +0 -124
  467. package/node_modules/zod/src/v3/standard-schema.ts +0 -113
  468. package/node_modules/zod/src/v3/tests/Mocker.ts +0 -54
  469. package/node_modules/zod/src/v3/tests/all-errors.test.ts +0 -157
  470. package/node_modules/zod/src/v3/tests/anyunknown.test.ts +0 -28
  471. package/node_modules/zod/src/v3/tests/array.test.ts +0 -71
  472. package/node_modules/zod/src/v3/tests/async-parsing.test.ts +0 -388
  473. package/node_modules/zod/src/v3/tests/async-refinements.test.ts +0 -46
  474. package/node_modules/zod/src/v3/tests/base.test.ts +0 -29
  475. package/node_modules/zod/src/v3/tests/bigint.test.ts +0 -55
  476. package/node_modules/zod/src/v3/tests/branded.test.ts +0 -53
  477. package/node_modules/zod/src/v3/tests/catch.test.ts +0 -220
  478. package/node_modules/zod/src/v3/tests/coerce.test.ts +0 -133
  479. package/node_modules/zod/src/v3/tests/complex.test.ts +0 -56
  480. package/node_modules/zod/src/v3/tests/custom.test.ts +0 -31
  481. package/node_modules/zod/src/v3/tests/date.test.ts +0 -32
  482. package/node_modules/zod/src/v3/tests/deepmasking.test.ts +0 -186
  483. package/node_modules/zod/src/v3/tests/default.test.ts +0 -112
  484. package/node_modules/zod/src/v3/tests/description.test.ts +0 -33
  485. package/node_modules/zod/src/v3/tests/discriminated-unions.test.ts +0 -315
  486. package/node_modules/zod/src/v3/tests/enum.test.ts +0 -80
  487. package/node_modules/zod/src/v3/tests/error.test.ts +0 -551
  488. package/node_modules/zod/src/v3/tests/firstparty.test.ts +0 -87
  489. package/node_modules/zod/src/v3/tests/firstpartyschematypes.test.ts +0 -21
  490. package/node_modules/zod/src/v3/tests/function.test.ts +0 -257
  491. package/node_modules/zod/src/v3/tests/generics.test.ts +0 -48
  492. package/node_modules/zod/src/v3/tests/instanceof.test.ts +0 -37
  493. package/node_modules/zod/src/v3/tests/intersection.test.ts +0 -110
  494. package/node_modules/zod/src/v3/tests/language-server.source.ts +0 -76
  495. package/node_modules/zod/src/v3/tests/language-server.test.ts +0 -207
  496. package/node_modules/zod/src/v3/tests/literal.test.ts +0 -36
  497. package/node_modules/zod/src/v3/tests/map.test.ts +0 -110
  498. package/node_modules/zod/src/v3/tests/masking.test.ts +0 -4
  499. package/node_modules/zod/src/v3/tests/mocker.test.ts +0 -19
  500. package/node_modules/zod/src/v3/tests/nan.test.ts +0 -21
  501. package/node_modules/zod/src/v3/tests/nativeEnum.test.ts +0 -87
  502. package/node_modules/zod/src/v3/tests/nullable.test.ts +0 -42
  503. package/node_modules/zod/src/v3/tests/number.test.ts +0 -176
  504. package/node_modules/zod/src/v3/tests/object-augmentation.test.ts +0 -29
  505. package/node_modules/zod/src/v3/tests/object-in-es5-env.test.ts +0 -29
  506. package/node_modules/zod/src/v3/tests/object.test.ts +0 -434
  507. package/node_modules/zod/src/v3/tests/optional.test.ts +0 -42
  508. package/node_modules/zod/src/v3/tests/parseUtil.test.ts +0 -23
  509. package/node_modules/zod/src/v3/tests/parser.test.ts +0 -41
  510. package/node_modules/zod/src/v3/tests/partials.test.ts +0 -243
  511. package/node_modules/zod/src/v3/tests/pickomit.test.ts +0 -111
  512. package/node_modules/zod/src/v3/tests/pipeline.test.ts +0 -29
  513. package/node_modules/zod/src/v3/tests/preprocess.test.ts +0 -186
  514. package/node_modules/zod/src/v3/tests/primitive.test.ts +0 -440
  515. package/node_modules/zod/src/v3/tests/promise.test.ts +0 -90
  516. package/node_modules/zod/src/v3/tests/readonly.test.ts +0 -194
  517. package/node_modules/zod/src/v3/tests/record.test.ts +0 -171
  518. package/node_modules/zod/src/v3/tests/recursive.test.ts +0 -197
  519. package/node_modules/zod/src/v3/tests/refine.test.ts +0 -313
  520. package/node_modules/zod/src/v3/tests/safeparse.test.ts +0 -27
  521. package/node_modules/zod/src/v3/tests/set.test.ts +0 -142
  522. package/node_modules/zod/src/v3/tests/standard-schema.test.ts +0 -83
  523. package/node_modules/zod/src/v3/tests/string.test.ts +0 -916
  524. package/node_modules/zod/src/v3/tests/transformer.test.ts +0 -233
  525. package/node_modules/zod/src/v3/tests/tuple.test.ts +0 -90
  526. package/node_modules/zod/src/v3/tests/unions.test.ts +0 -57
  527. package/node_modules/zod/src/v3/tests/validations.test.ts +0 -133
  528. package/node_modules/zod/src/v3/tests/void.test.ts +0 -15
  529. package/node_modules/zod/src/v3/types.ts +0 -5136
  530. package/node_modules/zod/src/v4/classic/checks.ts +0 -30
  531. package/node_modules/zod/src/v4/classic/coerce.ts +0 -27
  532. package/node_modules/zod/src/v4/classic/compat.ts +0 -66
  533. package/node_modules/zod/src/v4/classic/errors.ts +0 -75
  534. package/node_modules/zod/src/v4/classic/external.ts +0 -50
  535. package/node_modules/zod/src/v4/classic/index.ts +0 -5
  536. package/node_modules/zod/src/v4/classic/iso.ts +0 -90
  537. package/node_modules/zod/src/v4/classic/parse.ts +0 -33
  538. package/node_modules/zod/src/v4/classic/schemas.ts +0 -2054
  539. package/node_modules/zod/src/v4/classic/tests/anyunknown.test.ts +0 -26
  540. package/node_modules/zod/src/v4/classic/tests/array.test.ts +0 -264
  541. package/node_modules/zod/src/v4/classic/tests/assignability.test.ts +0 -210
  542. package/node_modules/zod/src/v4/classic/tests/async-parsing.test.ts +0 -381
  543. package/node_modules/zod/src/v4/classic/tests/async-refinements.test.ts +0 -68
  544. package/node_modules/zod/src/v4/classic/tests/base.test.ts +0 -7
  545. package/node_modules/zod/src/v4/classic/tests/bigint.test.ts +0 -54
  546. package/node_modules/zod/src/v4/classic/tests/brand.test.ts +0 -63
  547. package/node_modules/zod/src/v4/classic/tests/catch.test.ts +0 -252
  548. package/node_modules/zod/src/v4/classic/tests/coalesce.test.ts +0 -20
  549. package/node_modules/zod/src/v4/classic/tests/coerce.test.ts +0 -160
  550. package/node_modules/zod/src/v4/classic/tests/continuability.test.ts +0 -352
  551. package/node_modules/zod/src/v4/classic/tests/custom.test.ts +0 -40
  552. package/node_modules/zod/src/v4/classic/tests/date.test.ts +0 -31
  553. package/node_modules/zod/src/v4/classic/tests/datetime.test.ts +0 -296
  554. package/node_modules/zod/src/v4/classic/tests/default.test.ts +0 -313
  555. package/node_modules/zod/src/v4/classic/tests/description.test.ts +0 -32
  556. package/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +0 -619
  557. package/node_modules/zod/src/v4/classic/tests/enum.test.ts +0 -285
  558. package/node_modules/zod/src/v4/classic/tests/error-utils.test.ts +0 -527
  559. package/node_modules/zod/src/v4/classic/tests/error.test.ts +0 -711
  560. package/node_modules/zod/src/v4/classic/tests/file.test.ts +0 -91
  561. package/node_modules/zod/src/v4/classic/tests/firstparty.test.ts +0 -175
  562. package/node_modules/zod/src/v4/classic/tests/function.test.ts +0 -268
  563. package/node_modules/zod/src/v4/classic/tests/generics.test.ts +0 -72
  564. package/node_modules/zod/src/v4/classic/tests/index.test.ts +0 -829
  565. package/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +0 -34
  566. package/node_modules/zod/src/v4/classic/tests/intersection.test.ts +0 -171
  567. package/node_modules/zod/src/v4/classic/tests/json.test.ts +0 -108
  568. package/node_modules/zod/src/v4/classic/tests/lazy.test.ts +0 -227
  569. package/node_modules/zod/src/v4/classic/tests/literal.test.ts +0 -92
  570. package/node_modules/zod/src/v4/classic/tests/map.test.ts +0 -196
  571. package/node_modules/zod/src/v4/classic/tests/nan.test.ts +0 -21
  572. package/node_modules/zod/src/v4/classic/tests/nested-refine.test.ts +0 -168
  573. package/node_modules/zod/src/v4/classic/tests/nonoptional.test.ts +0 -86
  574. package/node_modules/zod/src/v4/classic/tests/nullable.test.ts +0 -22
  575. package/node_modules/zod/src/v4/classic/tests/number.test.ts +0 -247
  576. package/node_modules/zod/src/v4/classic/tests/object.test.ts +0 -563
  577. package/node_modules/zod/src/v4/classic/tests/optional.test.ts +0 -123
  578. package/node_modules/zod/src/v4/classic/tests/partial.test.ts +0 -147
  579. package/node_modules/zod/src/v4/classic/tests/pickomit.test.ts +0 -127
  580. package/node_modules/zod/src/v4/classic/tests/pipe.test.ts +0 -81
  581. package/node_modules/zod/src/v4/classic/tests/prefault.test.ts +0 -37
  582. package/node_modules/zod/src/v4/classic/tests/preprocess.test.ts +0 -298
  583. package/node_modules/zod/src/v4/classic/tests/primitive.test.ts +0 -175
  584. package/node_modules/zod/src/v4/classic/tests/promise.test.ts +0 -81
  585. package/node_modules/zod/src/v4/classic/tests/prototypes.test.ts +0 -23
  586. package/node_modules/zod/src/v4/classic/tests/readonly.test.ts +0 -252
  587. package/node_modules/zod/src/v4/classic/tests/record.test.ts +0 -342
  588. package/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +0 -356
  589. package/node_modules/zod/src/v4/classic/tests/refine.test.ts +0 -532
  590. package/node_modules/zod/src/v4/classic/tests/registries.test.ts +0 -204
  591. package/node_modules/zod/src/v4/classic/tests/set.test.ts +0 -179
  592. package/node_modules/zod/src/v4/classic/tests/standard-schema.test.ts +0 -57
  593. package/node_modules/zod/src/v4/classic/tests/string-formats.test.ts +0 -109
  594. package/node_modules/zod/src/v4/classic/tests/string.test.ts +0 -881
  595. package/node_modules/zod/src/v4/classic/tests/stringbool.test.ts +0 -66
  596. package/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +0 -758
  597. package/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +0 -2314
  598. package/node_modules/zod/src/v4/classic/tests/transform.test.ts +0 -250
  599. package/node_modules/zod/src/v4/classic/tests/tuple.test.ts +0 -163
  600. package/node_modules/zod/src/v4/classic/tests/union.test.ts +0 -94
  601. package/node_modules/zod/src/v4/classic/tests/validations.test.ts +0 -283
  602. package/node_modules/zod/src/v4/classic/tests/void.test.ts +0 -12
  603. package/node_modules/zod/src/v4/core/api.ts +0 -1594
  604. package/node_modules/zod/src/v4/core/checks.ts +0 -1283
  605. package/node_modules/zod/src/v4/core/config.ts +0 -15
  606. package/node_modules/zod/src/v4/core/core.ts +0 -134
  607. package/node_modules/zod/src/v4/core/doc.ts +0 -44
  608. package/node_modules/zod/src/v4/core/errors.ts +0 -424
  609. package/node_modules/zod/src/v4/core/function.ts +0 -176
  610. package/node_modules/zod/src/v4/core/index.ts +0 -15
  611. package/node_modules/zod/src/v4/core/json-schema.ts +0 -143
  612. package/node_modules/zod/src/v4/core/parse.ts +0 -94
  613. package/node_modules/zod/src/v4/core/regexes.ts +0 -135
  614. package/node_modules/zod/src/v4/core/registries.ts +0 -96
  615. package/node_modules/zod/src/v4/core/schemas.ts +0 -3842
  616. package/node_modules/zod/src/v4/core/standard-schema.ts +0 -64
  617. package/node_modules/zod/src/v4/core/tests/index.test.ts +0 -46
  618. package/node_modules/zod/src/v4/core/tests/locales/be.test.ts +0 -124
  619. package/node_modules/zod/src/v4/core/tests/locales/en.test.ts +0 -22
  620. package/node_modules/zod/src/v4/core/tests/locales/ru.test.ts +0 -128
  621. package/node_modules/zod/src/v4/core/tests/locales/tr.test.ts +0 -69
  622. package/node_modules/zod/src/v4/core/to-json-schema.ts +0 -977
  623. package/node_modules/zod/src/v4/core/util.ts +0 -775
  624. package/node_modules/zod/src/v4/core/versions.ts +0 -5
  625. package/node_modules/zod/src/v4/core/zsf.ts +0 -323
  626. package/node_modules/zod/src/v4/index.ts +0 -4
  627. package/node_modules/zod/src/v4/locales/ar.ts +0 -125
  628. package/node_modules/zod/src/v4/locales/az.ts +0 -121
  629. package/node_modules/zod/src/v4/locales/be.ts +0 -184
  630. package/node_modules/zod/src/v4/locales/ca.ts +0 -127
  631. package/node_modules/zod/src/v4/locales/cs.ts +0 -142
  632. package/node_modules/zod/src/v4/locales/de.ts +0 -124
  633. package/node_modules/zod/src/v4/locales/en.ts +0 -127
  634. package/node_modules/zod/src/v4/locales/eo.ts +0 -125
  635. package/node_modules/zod/src/v4/locales/es.ts +0 -125
  636. package/node_modules/zod/src/v4/locales/fa.ts +0 -134
  637. package/node_modules/zod/src/v4/locales/fi.ts +0 -131
  638. package/node_modules/zod/src/v4/locales/fr-CA.ts +0 -126
  639. package/node_modules/zod/src/v4/locales/fr.ts +0 -124
  640. package/node_modules/zod/src/v4/locales/he.ts +0 -125
  641. package/node_modules/zod/src/v4/locales/hu.ts +0 -126
  642. package/node_modules/zod/src/v4/locales/id.ts +0 -125
  643. package/node_modules/zod/src/v4/locales/index.ts +0 -39
  644. package/node_modules/zod/src/v4/locales/it.ts +0 -125
  645. package/node_modules/zod/src/v4/locales/ja.ts +0 -122
  646. package/node_modules/zod/src/v4/locales/kh.ts +0 -126
  647. package/node_modules/zod/src/v4/locales/ko.ts +0 -131
  648. package/node_modules/zod/src/v4/locales/mk.ts +0 -127
  649. package/node_modules/zod/src/v4/locales/ms.ts +0 -124
  650. package/node_modules/zod/src/v4/locales/nl.ts +0 -126
  651. package/node_modules/zod/src/v4/locales/no.ts +0 -124
  652. package/node_modules/zod/src/v4/locales/ota.ts +0 -125
  653. package/node_modules/zod/src/v4/locales/pl.ts +0 -126
  654. package/node_modules/zod/src/v4/locales/ps.ts +0 -133
  655. package/node_modules/zod/src/v4/locales/pt.ts +0 -123
  656. package/node_modules/zod/src/v4/locales/ru.ts +0 -184
  657. package/node_modules/zod/src/v4/locales/sl.ts +0 -126
  658. package/node_modules/zod/src/v4/locales/sv.ts +0 -127
  659. package/node_modules/zod/src/v4/locales/ta.ts +0 -125
  660. package/node_modules/zod/src/v4/locales/th.ts +0 -126
  661. package/node_modules/zod/src/v4/locales/tr.ts +0 -121
  662. package/node_modules/zod/src/v4/locales/ua.ts +0 -126
  663. package/node_modules/zod/src/v4/locales/ur.ts +0 -126
  664. package/node_modules/zod/src/v4/locales/vi.ts +0 -125
  665. package/node_modules/zod/src/v4/locales/zh-CN.ts +0 -123
  666. package/node_modules/zod/src/v4/locales/zh-TW.ts +0 -125
  667. package/node_modules/zod/src/v4/mini/checks.ts +0 -32
  668. package/node_modules/zod/src/v4/mini/coerce.ts +0 -22
  669. package/node_modules/zod/src/v4/mini/external.ts +0 -40
  670. package/node_modules/zod/src/v4/mini/index.ts +0 -3
  671. package/node_modules/zod/src/v4/mini/iso.ts +0 -62
  672. package/node_modules/zod/src/v4/mini/parse.ts +0 -1
  673. package/node_modules/zod/src/v4/mini/schemas.ts +0 -1579
  674. package/node_modules/zod/src/v4/mini/tests/assignability.test.ts +0 -129
  675. package/node_modules/zod/src/v4/mini/tests/brand.test.ts +0 -51
  676. package/node_modules/zod/src/v4/mini/tests/checks.test.ts +0 -144
  677. package/node_modules/zod/src/v4/mini/tests/computed.test.ts +0 -36
  678. package/node_modules/zod/src/v4/mini/tests/error.test.ts +0 -22
  679. package/node_modules/zod/src/v4/mini/tests/functions.test.ts +0 -43
  680. package/node_modules/zod/src/v4/mini/tests/index.test.ts +0 -871
  681. package/node_modules/zod/src/v4/mini/tests/number.test.ts +0 -95
  682. package/node_modules/zod/src/v4/mini/tests/object.test.ts +0 -185
  683. package/node_modules/zod/src/v4/mini/tests/prototypes.test.ts +0 -43
  684. package/node_modules/zod/src/v4/mini/tests/recursive-types.test.ts +0 -275
  685. package/node_modules/zod/src/v4/mini/tests/string.test.ts +0 -299
  686. package/node_modules/zod/src/v4-mini/index.ts +0 -1
  687. package/node_modules/zod/v3/ZodError.cjs +0 -138
  688. package/node_modules/zod/v3/ZodError.d.cts +0 -164
  689. package/node_modules/zod/v3/ZodError.d.ts +0 -164
  690. package/node_modules/zod/v3/ZodError.js +0 -133
  691. package/node_modules/zod/v3/errors.cjs +0 -17
  692. package/node_modules/zod/v3/errors.d.cts +0 -5
  693. package/node_modules/zod/v3/errors.d.ts +0 -5
  694. package/node_modules/zod/v3/errors.js +0 -9
  695. package/node_modules/zod/v3/external.cjs +0 -22
  696. package/node_modules/zod/v3/external.d.cts +0 -6
  697. package/node_modules/zod/v3/external.d.ts +0 -6
  698. package/node_modules/zod/v3/external.js +0 -6
  699. package/node_modules/zod/v3/helpers/enumUtil.cjs +0 -2
  700. package/node_modules/zod/v3/helpers/enumUtil.d.cts +0 -8
  701. package/node_modules/zod/v3/helpers/enumUtil.d.ts +0 -8
  702. package/node_modules/zod/v3/helpers/enumUtil.js +0 -1
  703. package/node_modules/zod/v3/helpers/errorUtil.cjs +0 -9
  704. package/node_modules/zod/v3/helpers/errorUtil.d.cts +0 -9
  705. package/node_modules/zod/v3/helpers/errorUtil.d.ts +0 -9
  706. package/node_modules/zod/v3/helpers/errorUtil.js +0 -6
  707. package/node_modules/zod/v3/helpers/parseUtil.cjs +0 -124
  708. package/node_modules/zod/v3/helpers/parseUtil.d.cts +0 -78
  709. package/node_modules/zod/v3/helpers/parseUtil.d.ts +0 -78
  710. package/node_modules/zod/v3/helpers/parseUtil.js +0 -109
  711. package/node_modules/zod/v3/helpers/partialUtil.cjs +0 -2
  712. package/node_modules/zod/v3/helpers/partialUtil.d.cts +0 -8
  713. package/node_modules/zod/v3/helpers/partialUtil.d.ts +0 -8
  714. package/node_modules/zod/v3/helpers/partialUtil.js +0 -1
  715. package/node_modules/zod/v3/helpers/typeAliases.cjs +0 -2
  716. package/node_modules/zod/v3/helpers/typeAliases.d.cts +0 -2
  717. package/node_modules/zod/v3/helpers/typeAliases.d.ts +0 -2
  718. package/node_modules/zod/v3/helpers/typeAliases.js +0 -1
  719. package/node_modules/zod/v3/helpers/util.cjs +0 -137
  720. package/node_modules/zod/v3/helpers/util.d.cts +0 -85
  721. package/node_modules/zod/v3/helpers/util.d.ts +0 -85
  722. package/node_modules/zod/v3/helpers/util.js +0 -133
  723. package/node_modules/zod/v3/index.cjs +0 -33
  724. package/node_modules/zod/v3/index.d.cts +0 -4
  725. package/node_modules/zod/v3/index.d.ts +0 -4
  726. package/node_modules/zod/v3/index.js +0 -4
  727. package/node_modules/zod/v3/locales/en.cjs +0 -111
  728. package/node_modules/zod/v3/locales/en.d.cts +0 -3
  729. package/node_modules/zod/v3/locales/en.d.ts +0 -3
  730. package/node_modules/zod/v3/locales/en.js +0 -109
  731. package/node_modules/zod/v3/standard-schema.cjs +0 -2
  732. package/node_modules/zod/v3/standard-schema.d.cts +0 -102
  733. package/node_modules/zod/v3/standard-schema.d.ts +0 -102
  734. package/node_modules/zod/v3/standard-schema.js +0 -1
  735. package/node_modules/zod/v3/types.cjs +0 -3775
  736. package/node_modules/zod/v3/types.d.cts +0 -1031
  737. package/node_modules/zod/v3/types.d.ts +0 -1031
  738. package/node_modules/zod/v3/types.js +0 -3693
  739. package/node_modules/zod/v4/classic/checks.cjs +0 -32
  740. package/node_modules/zod/v4/classic/checks.d.cts +0 -1
  741. package/node_modules/zod/v4/classic/checks.d.ts +0 -1
  742. package/node_modules/zod/v4/classic/checks.js +0 -1
  743. package/node_modules/zod/v4/classic/coerce.cjs +0 -47
  744. package/node_modules/zod/v4/classic/coerce.d.cts +0 -17
  745. package/node_modules/zod/v4/classic/coerce.d.ts +0 -17
  746. package/node_modules/zod/v4/classic/coerce.js +0 -17
  747. package/node_modules/zod/v4/classic/compat.cjs +0 -57
  748. package/node_modules/zod/v4/classic/compat.d.cts +0 -46
  749. package/node_modules/zod/v4/classic/compat.d.ts +0 -46
  750. package/node_modules/zod/v4/classic/compat.js +0 -27
  751. package/node_modules/zod/v4/classic/errors.cjs +0 -67
  752. package/node_modules/zod/v4/classic/errors.d.cts +0 -30
  753. package/node_modules/zod/v4/classic/errors.d.ts +0 -30
  754. package/node_modules/zod/v4/classic/errors.js +0 -41
  755. package/node_modules/zod/v4/classic/external.cjs +0 -70
  756. package/node_modules/zod/v4/classic/external.d.cts +0 -13
  757. package/node_modules/zod/v4/classic/external.d.ts +0 -13
  758. package/node_modules/zod/v4/classic/external.js +0 -18
  759. package/node_modules/zod/v4/classic/index.cjs +0 -33
  760. package/node_modules/zod/v4/classic/index.d.cts +0 -4
  761. package/node_modules/zod/v4/classic/index.d.ts +0 -4
  762. package/node_modules/zod/v4/classic/index.js +0 -4
  763. package/node_modules/zod/v4/classic/iso.cjs +0 -60
  764. package/node_modules/zod/v4/classic/iso.d.cts +0 -22
  765. package/node_modules/zod/v4/classic/iso.d.ts +0 -22
  766. package/node_modules/zod/v4/classic/iso.js +0 -30
  767. package/node_modules/zod/v4/classic/parse.cjs +0 -32
  768. package/node_modules/zod/v4/classic/parse.d.cts +0 -23
  769. package/node_modules/zod/v4/classic/parse.d.ts +0 -23
  770. package/node_modules/zod/v4/classic/parse.js +0 -6
  771. package/node_modules/zod/v4/classic/schemas.cjs +0 -1109
  772. package/node_modules/zod/v4/classic/schemas.d.cts +0 -630
  773. package/node_modules/zod/v4/classic/schemas.d.ts +0 -630
  774. package/node_modules/zod/v4/classic/schemas.js +0 -1006
  775. package/node_modules/zod/v4/core/api.cjs +0 -1039
  776. package/node_modules/zod/v4/core/api.d.cts +0 -284
  777. package/node_modules/zod/v4/core/api.d.ts +0 -284
  778. package/node_modules/zod/v4/core/api.js +0 -906
  779. package/node_modules/zod/v4/core/checks.cjs +0 -591
  780. package/node_modules/zod/v4/core/checks.d.cts +0 -278
  781. package/node_modules/zod/v4/core/checks.d.ts +0 -278
  782. package/node_modules/zod/v4/core/checks.js +0 -565
  783. package/node_modules/zod/v4/core/core.cjs +0 -67
  784. package/node_modules/zod/v4/core/core.d.cts +0 -49
  785. package/node_modules/zod/v4/core/core.d.ts +0 -49
  786. package/node_modules/zod/v4/core/core.js +0 -61
  787. package/node_modules/zod/v4/core/doc.cjs +0 -39
  788. package/node_modules/zod/v4/core/doc.d.cts +0 -14
  789. package/node_modules/zod/v4/core/doc.d.ts +0 -14
  790. package/node_modules/zod/v4/core/doc.js +0 -35
  791. package/node_modules/zod/v4/core/errors.cjs +0 -226
  792. package/node_modules/zod/v4/core/errors.d.cts +0 -208
  793. package/node_modules/zod/v4/core/errors.d.ts +0 -208
  794. package/node_modules/zod/v4/core/errors.js +0 -195
  795. package/node_modules/zod/v4/core/function.cjs +0 -102
  796. package/node_modules/zod/v4/core/function.d.cts +0 -52
  797. package/node_modules/zod/v4/core/function.d.ts +0 -52
  798. package/node_modules/zod/v4/core/function.js +0 -75
  799. package/node_modules/zod/v4/core/index.cjs +0 -44
  800. package/node_modules/zod/v4/core/index.d.cts +0 -15
  801. package/node_modules/zod/v4/core/index.d.ts +0 -15
  802. package/node_modules/zod/v4/core/index.js +0 -15
  803. package/node_modules/zod/v4/core/json-schema.cjs +0 -2
  804. package/node_modules/zod/v4/core/json-schema.d.cts +0 -87
  805. package/node_modules/zod/v4/core/json-schema.d.ts +0 -87
  806. package/node_modules/zod/v4/core/json-schema.js +0 -1
  807. package/node_modules/zod/v4/core/parse.cjs +0 -87
  808. package/node_modules/zod/v4/core/parse.d.cts +0 -25
  809. package/node_modules/zod/v4/core/parse.d.ts +0 -25
  810. package/node_modules/zod/v4/core/parse.js +0 -57
  811. package/node_modules/zod/v4/core/regexes.cjs +0 -103
  812. package/node_modules/zod/v4/core/regexes.d.cts +0 -62
  813. package/node_modules/zod/v4/core/regexes.d.ts +0 -62
  814. package/node_modules/zod/v4/core/regexes.js +0 -95
  815. package/node_modules/zod/v4/core/registries.cjs +0 -56
  816. package/node_modules/zod/v4/core/registries.d.cts +0 -35
  817. package/node_modules/zod/v4/core/registries.d.ts +0 -35
  818. package/node_modules/zod/v4/core/registries.js +0 -51
  819. package/node_modules/zod/v4/core/schemas.cjs +0 -1748
  820. package/node_modules/zod/v4/core/schemas.d.cts +0 -1041
  821. package/node_modules/zod/v4/core/schemas.d.ts +0 -1041
  822. package/node_modules/zod/v4/core/schemas.js +0 -1717
  823. package/node_modules/zod/v4/core/standard-schema.cjs +0 -2
  824. package/node_modules/zod/v4/core/standard-schema.d.cts +0 -55
  825. package/node_modules/zod/v4/core/standard-schema.d.ts +0 -55
  826. package/node_modules/zod/v4/core/standard-schema.js +0 -1
  827. package/node_modules/zod/v4/core/to-json-schema.cjs +0 -854
  828. package/node_modules/zod/v4/core/to-json-schema.d.cts +0 -88
  829. package/node_modules/zod/v4/core/to-json-schema.d.ts +0 -88
  830. package/node_modules/zod/v4/core/to-json-schema.js +0 -849
  831. package/node_modules/zod/v4/core/util.cjs +0 -539
  832. package/node_modules/zod/v4/core/util.d.cts +0 -183
  833. package/node_modules/zod/v4/core/util.d.ts +0 -183
  834. package/node_modules/zod/v4/core/util.js +0 -493
  835. package/node_modules/zod/v4/core/versions.cjs +0 -8
  836. package/node_modules/zod/v4/core/versions.d.cts +0 -5
  837. package/node_modules/zod/v4/core/versions.d.ts +0 -5
  838. package/node_modules/zod/v4/core/versions.js +0 -5
  839. package/node_modules/zod/v4/index.cjs +0 -22
  840. package/node_modules/zod/v4/index.d.cts +0 -3
  841. package/node_modules/zod/v4/index.d.ts +0 -3
  842. package/node_modules/zod/v4/index.js +0 -3
  843. package/node_modules/zod/v4/locales/ar.cjs +0 -142
  844. package/node_modules/zod/v4/locales/ar.d.cts +0 -4
  845. package/node_modules/zod/v4/locales/ar.d.ts +0 -4
  846. package/node_modules/zod/v4/locales/ar.js +0 -116
  847. package/node_modules/zod/v4/locales/az.cjs +0 -141
  848. package/node_modules/zod/v4/locales/az.d.cts +0 -4
  849. package/node_modules/zod/v4/locales/az.d.ts +0 -4
  850. package/node_modules/zod/v4/locales/az.js +0 -115
  851. package/node_modules/zod/v4/locales/be.cjs +0 -190
  852. package/node_modules/zod/v4/locales/be.d.cts +0 -4
  853. package/node_modules/zod/v4/locales/be.d.ts +0 -4
  854. package/node_modules/zod/v4/locales/be.js +0 -164
  855. package/node_modules/zod/v4/locales/ca.cjs +0 -144
  856. package/node_modules/zod/v4/locales/ca.d.cts +0 -4
  857. package/node_modules/zod/v4/locales/ca.d.ts +0 -4
  858. package/node_modules/zod/v4/locales/ca.js +0 -118
  859. package/node_modules/zod/v4/locales/cs.cjs +0 -161
  860. package/node_modules/zod/v4/locales/cs.d.cts +0 -4
  861. package/node_modules/zod/v4/locales/cs.d.ts +0 -4
  862. package/node_modules/zod/v4/locales/cs.js +0 -135
  863. package/node_modules/zod/v4/locales/de.cjs +0 -142
  864. package/node_modules/zod/v4/locales/de.d.cts +0 -4
  865. package/node_modules/zod/v4/locales/de.d.ts +0 -4
  866. package/node_modules/zod/v4/locales/de.js +0 -116
  867. package/node_modules/zod/v4/locales/en.cjs +0 -145
  868. package/node_modules/zod/v4/locales/en.d.cts +0 -5
  869. package/node_modules/zod/v4/locales/en.d.ts +0 -5
  870. package/node_modules/zod/v4/locales/en.js +0 -117
  871. package/node_modules/zod/v4/locales/eo.cjs +0 -144
  872. package/node_modules/zod/v4/locales/eo.d.cts +0 -5
  873. package/node_modules/zod/v4/locales/eo.d.ts +0 -5
  874. package/node_modules/zod/v4/locales/eo.js +0 -116
  875. package/node_modules/zod/v4/locales/es.cjs +0 -143
  876. package/node_modules/zod/v4/locales/es.d.cts +0 -4
  877. package/node_modules/zod/v4/locales/es.d.ts +0 -4
  878. package/node_modules/zod/v4/locales/es.js +0 -117
  879. package/node_modules/zod/v4/locales/fa.cjs +0 -148
  880. package/node_modules/zod/v4/locales/fa.d.cts +0 -4
  881. package/node_modules/zod/v4/locales/fa.d.ts +0 -4
  882. package/node_modules/zod/v4/locales/fa.js +0 -122
  883. package/node_modules/zod/v4/locales/fi.cjs +0 -148
  884. package/node_modules/zod/v4/locales/fi.d.cts +0 -4
  885. package/node_modules/zod/v4/locales/fi.d.ts +0 -4
  886. package/node_modules/zod/v4/locales/fi.js +0 -122
  887. package/node_modules/zod/v4/locales/fr-CA.cjs +0 -143
  888. package/node_modules/zod/v4/locales/fr-CA.d.cts +0 -4
  889. package/node_modules/zod/v4/locales/fr-CA.d.ts +0 -4
  890. package/node_modules/zod/v4/locales/fr-CA.js +0 -117
  891. package/node_modules/zod/v4/locales/fr.cjs +0 -142
  892. package/node_modules/zod/v4/locales/fr.d.cts +0 -4
  893. package/node_modules/zod/v4/locales/fr.d.ts +0 -4
  894. package/node_modules/zod/v4/locales/fr.js +0 -116
  895. package/node_modules/zod/v4/locales/he.cjs +0 -143
  896. package/node_modules/zod/v4/locales/he.d.cts +0 -4
  897. package/node_modules/zod/v4/locales/he.d.ts +0 -4
  898. package/node_modules/zod/v4/locales/he.js +0 -117
  899. package/node_modules/zod/v4/locales/hu.cjs +0 -143
  900. package/node_modules/zod/v4/locales/hu.d.cts +0 -4
  901. package/node_modules/zod/v4/locales/hu.d.ts +0 -4
  902. package/node_modules/zod/v4/locales/hu.js +0 -117
  903. package/node_modules/zod/v4/locales/id.cjs +0 -142
  904. package/node_modules/zod/v4/locales/id.d.cts +0 -4
  905. package/node_modules/zod/v4/locales/id.d.ts +0 -4
  906. package/node_modules/zod/v4/locales/id.js +0 -116
  907. package/node_modules/zod/v4/locales/index.cjs +0 -84
  908. package/node_modules/zod/v4/locales/index.d.cts +0 -39
  909. package/node_modules/zod/v4/locales/index.d.ts +0 -39
  910. package/node_modules/zod/v4/locales/index.js +0 -39
  911. package/node_modules/zod/v4/locales/it.cjs +0 -143
  912. package/node_modules/zod/v4/locales/it.d.cts +0 -4
  913. package/node_modules/zod/v4/locales/it.d.ts +0 -4
  914. package/node_modules/zod/v4/locales/it.js +0 -117
  915. package/node_modules/zod/v4/locales/ja.cjs +0 -141
  916. package/node_modules/zod/v4/locales/ja.d.cts +0 -4
  917. package/node_modules/zod/v4/locales/ja.d.ts +0 -4
  918. package/node_modules/zod/v4/locales/ja.js +0 -115
  919. package/node_modules/zod/v4/locales/kh.cjs +0 -143
  920. package/node_modules/zod/v4/locales/kh.d.cts +0 -4
  921. package/node_modules/zod/v4/locales/kh.d.ts +0 -4
  922. package/node_modules/zod/v4/locales/kh.js +0 -117
  923. package/node_modules/zod/v4/locales/ko.cjs +0 -147
  924. package/node_modules/zod/v4/locales/ko.d.cts +0 -4
  925. package/node_modules/zod/v4/locales/ko.d.ts +0 -4
  926. package/node_modules/zod/v4/locales/ko.js +0 -121
  927. package/node_modules/zod/v4/locales/mk.cjs +0 -144
  928. package/node_modules/zod/v4/locales/mk.d.cts +0 -4
  929. package/node_modules/zod/v4/locales/mk.d.ts +0 -4
  930. package/node_modules/zod/v4/locales/mk.js +0 -118
  931. package/node_modules/zod/v4/locales/ms.cjs +0 -142
  932. package/node_modules/zod/v4/locales/ms.d.cts +0 -4
  933. package/node_modules/zod/v4/locales/ms.d.ts +0 -4
  934. package/node_modules/zod/v4/locales/ms.js +0 -116
  935. package/node_modules/zod/v4/locales/nl.cjs +0 -143
  936. package/node_modules/zod/v4/locales/nl.d.cts +0 -4
  937. package/node_modules/zod/v4/locales/nl.d.ts +0 -4
  938. package/node_modules/zod/v4/locales/nl.js +0 -117
  939. package/node_modules/zod/v4/locales/no.cjs +0 -142
  940. package/node_modules/zod/v4/locales/no.d.cts +0 -4
  941. package/node_modules/zod/v4/locales/no.d.ts +0 -4
  942. package/node_modules/zod/v4/locales/no.js +0 -116
  943. package/node_modules/zod/v4/locales/ota.cjs +0 -143
  944. package/node_modules/zod/v4/locales/ota.d.cts +0 -4
  945. package/node_modules/zod/v4/locales/ota.d.ts +0 -4
  946. package/node_modules/zod/v4/locales/ota.js +0 -117
  947. package/node_modules/zod/v4/locales/pl.cjs +0 -143
  948. package/node_modules/zod/v4/locales/pl.d.cts +0 -4
  949. package/node_modules/zod/v4/locales/pl.d.ts +0 -4
  950. package/node_modules/zod/v4/locales/pl.js +0 -117
  951. package/node_modules/zod/v4/locales/ps.cjs +0 -148
  952. package/node_modules/zod/v4/locales/ps.d.cts +0 -4
  953. package/node_modules/zod/v4/locales/ps.d.ts +0 -4
  954. package/node_modules/zod/v4/locales/ps.js +0 -122
  955. package/node_modules/zod/v4/locales/pt.cjs +0 -142
  956. package/node_modules/zod/v4/locales/pt.d.cts +0 -4
  957. package/node_modules/zod/v4/locales/pt.d.ts +0 -4
  958. package/node_modules/zod/v4/locales/pt.js +0 -116
  959. package/node_modules/zod/v4/locales/ru.cjs +0 -190
  960. package/node_modules/zod/v4/locales/ru.d.cts +0 -4
  961. package/node_modules/zod/v4/locales/ru.d.ts +0 -4
  962. package/node_modules/zod/v4/locales/ru.js +0 -164
  963. package/node_modules/zod/v4/locales/sl.cjs +0 -143
  964. package/node_modules/zod/v4/locales/sl.d.cts +0 -4
  965. package/node_modules/zod/v4/locales/sl.d.ts +0 -4
  966. package/node_modules/zod/v4/locales/sl.js +0 -117
  967. package/node_modules/zod/v4/locales/sv.cjs +0 -144
  968. package/node_modules/zod/v4/locales/sv.d.cts +0 -4
  969. package/node_modules/zod/v4/locales/sv.d.ts +0 -4
  970. package/node_modules/zod/v4/locales/sv.js +0 -118
  971. package/node_modules/zod/v4/locales/ta.cjs +0 -143
  972. package/node_modules/zod/v4/locales/ta.d.cts +0 -4
  973. package/node_modules/zod/v4/locales/ta.d.ts +0 -4
  974. package/node_modules/zod/v4/locales/ta.js +0 -117
  975. package/node_modules/zod/v4/locales/th.cjs +0 -143
  976. package/node_modules/zod/v4/locales/th.d.cts +0 -4
  977. package/node_modules/zod/v4/locales/th.d.ts +0 -4
  978. package/node_modules/zod/v4/locales/th.js +0 -117
  979. package/node_modules/zod/v4/locales/tr.cjs +0 -143
  980. package/node_modules/zod/v4/locales/tr.d.cts +0 -5
  981. package/node_modules/zod/v4/locales/tr.d.ts +0 -5
  982. package/node_modules/zod/v4/locales/tr.js +0 -115
  983. package/node_modules/zod/v4/locales/ua.cjs +0 -143
  984. package/node_modules/zod/v4/locales/ua.d.cts +0 -4
  985. package/node_modules/zod/v4/locales/ua.d.ts +0 -4
  986. package/node_modules/zod/v4/locales/ua.js +0 -117
  987. package/node_modules/zod/v4/locales/ur.cjs +0 -143
  988. package/node_modules/zod/v4/locales/ur.d.cts +0 -4
  989. package/node_modules/zod/v4/locales/ur.d.ts +0 -4
  990. package/node_modules/zod/v4/locales/ur.js +0 -117
  991. package/node_modules/zod/v4/locales/vi.cjs +0 -142
  992. package/node_modules/zod/v4/locales/vi.d.cts +0 -4
  993. package/node_modules/zod/v4/locales/vi.d.ts +0 -4
  994. package/node_modules/zod/v4/locales/vi.js +0 -116
  995. package/node_modules/zod/v4/locales/zh-CN.cjs +0 -142
  996. package/node_modules/zod/v4/locales/zh-CN.d.cts +0 -4
  997. package/node_modules/zod/v4/locales/zh-CN.d.ts +0 -4
  998. package/node_modules/zod/v4/locales/zh-CN.js +0 -116
  999. package/node_modules/zod/v4/locales/zh-TW.cjs +0 -143
  1000. package/node_modules/zod/v4/locales/zh-TW.d.cts +0 -4
  1001. package/node_modules/zod/v4/locales/zh-TW.d.ts +0 -4
  1002. package/node_modules/zod/v4/locales/zh-TW.js +0 -117
  1003. package/node_modules/zod/v4/mini/checks.cjs +0 -34
  1004. package/node_modules/zod/v4/mini/checks.d.cts +0 -1
  1005. package/node_modules/zod/v4/mini/checks.d.ts +0 -1
  1006. package/node_modules/zod/v4/mini/checks.js +0 -1
  1007. package/node_modules/zod/v4/mini/coerce.cjs +0 -47
  1008. package/node_modules/zod/v4/mini/coerce.d.cts +0 -7
  1009. package/node_modules/zod/v4/mini/coerce.d.ts +0 -7
  1010. package/node_modules/zod/v4/mini/coerce.js +0 -17
  1011. package/node_modules/zod/v4/mini/external.cjs +0 -62
  1012. package/node_modules/zod/v4/mini/external.d.cts +0 -11
  1013. package/node_modules/zod/v4/mini/external.d.ts +0 -11
  1014. package/node_modules/zod/v4/mini/external.js +0 -13
  1015. package/node_modules/zod/v4/mini/index.cjs +0 -32
  1016. package/node_modules/zod/v4/mini/index.d.cts +0 -3
  1017. package/node_modules/zod/v4/mini/index.d.ts +0 -3
  1018. package/node_modules/zod/v4/mini/index.js +0 -3
  1019. package/node_modules/zod/v4/mini/iso.cjs +0 -60
  1020. package/node_modules/zod/v4/mini/iso.d.cts +0 -22
  1021. package/node_modules/zod/v4/mini/iso.d.ts +0 -22
  1022. package/node_modules/zod/v4/mini/iso.js +0 -30
  1023. package/node_modules/zod/v4/mini/parse.cjs +0 -8
  1024. package/node_modules/zod/v4/mini/parse.d.cts +0 -1
  1025. package/node_modules/zod/v4/mini/parse.d.ts +0 -1
  1026. package/node_modules/zod/v4/mini/parse.js +0 -1
  1027. package/node_modules/zod/v4/mini/schemas.cjs +0 -839
  1028. package/node_modules/zod/v4/mini/schemas.d.cts +0 -356
  1029. package/node_modules/zod/v4/mini/schemas.d.ts +0 -356
  1030. package/node_modules/zod/v4/mini/schemas.js +0 -732
  1031. package/node_modules/zod/v4-mini/index.cjs +0 -17
  1032. package/node_modules/zod/v4-mini/index.d.cts +0 -1
  1033. package/node_modules/zod/v4-mini/index.d.ts +0 -1
  1034. package/node_modules/zod/v4-mini/index.js +0 -1
@@ -1,1986 +0,0 @@
1
- var ASSERT = require('assert');
2
- var ASN1 = require('../../lib/asn1');
3
- var MD = require('../../lib/md.all');
4
- var PKI = require('../../lib/pki');
5
- var UTIL = require('../../lib/util');
6
-
7
- (function() {
8
- var _pem = {
9
- privateKey: '-----BEGIN RSA PRIVATE KEY-----\r\n' +
10
- 'MIICXQIBAAKBgQDL0EugUiNGMWscLAVM0VoMdhDZEJOqdsUMpx9U0YZI7szokJqQ\r\n' +
11
- 'NIwokiQ6EonNnWSMlIvy46AhnlRYn+ezeTeU7eMGTkP3VF29vXBo+dLq5e+8VyAy\r\n' +
12
- 'Q3FzM1wI4ts4hRACF8w6mqygXQ7i/SDu8/rXqRGtvnM+z0MYDdKo80efzwIDAQAB\r\n' +
13
- 'AoGAIzkGONi5G+JifmXlLJdplom486p3upf4Ce2/7mqfaG9MnkyPSairKD/JXvfh\r\n' +
14
- 'NNWkkN8DKKDKBcVVElPgORYT0qwrWc7ueLBMUCbRXb1ZyfEulimG0R3kjUh7NYau\r\n' +
15
- 'DaIkVgfykXGSQMZx8FoaT6L080zd+0emKDDYRrb+/kgJNJECQQDoUZoiC2K/DWNY\r\n' +
16
- 'h3/ppZ0ane2y4SBmJUHJVMPQ2CEgxsrJTxet668ckNCKaOP/3VFPoWC41f17DvKq\r\n' +
17
- 'noYINNntAkEA4JbZBZBVUrQFhHlrpXT4jzqtO2RlKZzEq8qmFZfEErxOT1WMyyCi\r\n' +
18
- 'lAQ5gUKardo1Kf0omC8Xq/uO9ZYdED55KwJBALs6cJ65UFaq4oLJiQPzLd7yokuE\r\n' +
19
- 'dcj8g71PLBTW6jPxIiMFNA89nz3FU9wIVp+xbMNhSoMMKqIPVPC+m0Rn260CQQDA\r\n' +
20
- 'I83fWK/mZWUjBM33a68KumRiH238v8XyQxj7+C8i6D8G2GXvkigFAehAkb7LZZd+\r\n' +
21
- 'KLuGFyPlWv3fVWHf99KpAkBQFKk3MRMl6IGJZUEFQe4l5whm8LkGU4acSqv9B3xt\r\n' +
22
- 'qROkCrsFrMPqjuuzEmyHoQZ64r2PLJg7FOuyhBnQUOt4\r\n' +
23
- '-----END RSA PRIVATE KEY-----\r\n',
24
- publicKey: '-----BEGIN PUBLIC KEY-----\r\n' +
25
- 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDL0EugUiNGMWscLAVM0VoMdhDZ\r\n' +
26
- 'EJOqdsUMpx9U0YZI7szokJqQNIwokiQ6EonNnWSMlIvy46AhnlRYn+ezeTeU7eMG\r\n' +
27
- 'TkP3VF29vXBo+dLq5e+8VyAyQ3FzM1wI4ts4hRACF8w6mqygXQ7i/SDu8/rXqRGt\r\n' +
28
- 'vnM+z0MYDdKo80efzwIDAQAB\r\n' +
29
- '-----END PUBLIC KEY-----\r\n',
30
- certificate: '-----BEGIN CERTIFICATE-----\r\n' +
31
- 'MIIDIjCCAougAwIBAgIJANE2aHSbwpaRMA0GCSqGSIb3DQEBBQUAMGoxCzAJBgNV\r\n' +
32
- 'BAYTAlVTMREwDwYDVQQIEwhWaXJnaW5pYTETMBEGA1UEBxMKQmxhY2tzYnVyZzEN\r\n' +
33
- 'MAsGA1UEChMEVGVzdDENMAsGA1UECxMEVGVzdDEVMBMGA1UEAxMMbXlzZXJ2ZXIu\r\n' +
34
- 'Y29tMB4XDTEwMDYxOTE3MzYyOFoXDTExMDYxOTE3MzYyOFowajELMAkGA1UEBhMC\r\n' +
35
- 'VVMxETAPBgNVBAgTCFZpcmdpbmlhMRMwEQYDVQQHEwpCbGFja3NidXJnMQ0wCwYD\r\n' +
36
- 'VQQKEwRUZXN0MQ0wCwYDVQQLEwRUZXN0MRUwEwYDVQQDEwxteXNlcnZlci5jb20w\r\n' +
37
- 'gZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMvQS6BSI0YxaxwsBUzRWgx2ENkQ\r\n' +
38
- 'k6p2xQynH1TRhkjuzOiQmpA0jCiSJDoSic2dZIyUi/LjoCGeVFif57N5N5Tt4wZO\r\n' +
39
- 'Q/dUXb29cGj50url77xXIDJDcXMzXAji2ziFEAIXzDqarKBdDuL9IO7z+tepEa2+\r\n' +
40
- 'cz7PQxgN0qjzR5/PAgMBAAGjgc8wgcwwHQYDVR0OBBYEFPV1Y+DHXW6bA/r9sv1y\r\n' +
41
- 'NJ8jAwMAMIGcBgNVHSMEgZQwgZGAFPV1Y+DHXW6bA/r9sv1yNJ8jAwMAoW6kbDBq\r\n' +
42
- 'MQswCQYDVQQGEwJVUzERMA8GA1UECBMIVmlyZ2luaWExEzARBgNVBAcTCkJsYWNr\r\n' +
43
- 'c2J1cmcxDTALBgNVBAoTBFRlc3QxDTALBgNVBAsTBFRlc3QxFTATBgNVBAMTDG15\r\n' +
44
- 'c2VydmVyLmNvbYIJANE2aHSbwpaRMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEF\r\n' +
45
- 'BQADgYEARdH2KOlJWTC1CS2y/PAvg4uiM31PXMC1hqSdJlnLM1MY4hRfuf9VyTeX\r\n' +
46
- 'Y6FdybcyDLSxKn9id+g9229ci9/s9PI+QmD5vXd8yZyScLc2JkYB4GC6+9D1+/+x\r\n' +
47
- 's2hzMxuK6kzZlP+0l9LGcraMQPGRydjCARZZm4Uegln9rh85XFQ=\r\n' +
48
- '-----END CERTIFICATE-----\r\n'
49
- };
50
-
51
- var _pem_sha256 = {
52
- privateKey: '-----BEGIN RSA PRIVATE KEY-----\r\n' +
53
- 'MIIEpAIBAAKCAQEAgqu7/2ntXa9rzqiUvDD2swStK8w7MFtha/OiwzEDJng7mZUs\r\n' +
54
- 'uy7Neqh5S1Z+nWq7NP51ol//tnNCrWM6VozrJKTAEC2qj3k+bMWnjuTU7sTJHpoZ\r\n' +
55
- '9wdCqS9q7oOJhqwBxS7M9l8LNA+6I4Qj1bY1g2XeZsxEjJfCvILa3yBzztL3CxSF\r\n' +
56
- 'R36FoOo9IpzYlVcE9mqTdJgTwR43ZsFNCRAkfSqJjLKy1A2+aDxUcrom2OrLSITI\r\n' +
57
- 'CWqz5R1hFIIIB0aprjpz5F2MunciUAhTjUqrQPCtw17wmwmaeXZsu0zoq9P/VtKE\r\n' +
58
- 'AxtQkS4tqgnodBzmmgM8YemjkJAVHQzkH8jiGQIDAQABAoIBAQAMuYiPMNOKogCP\r\n' +
59
- 'mV8SjHoZqMTsVPEWnm94QbuB4o35+w9iv2IhwEcGQM2/BmdCERi16mmuLEcMj2DY\r\n' +
60
- '3abastJbOSfy61+GpTntAbp1cddCgStMrZkFs1FMhG+XVnvX/3wUpaAUBeFjanyn\r\n' +
61
- '5MBQmXPQneTwgcfTIRw3m06RF+nvI/ssIz6oHTDTTwRanTa64KYCww/fcX0XCLGw\r\n' +
62
- 'D4GYaRrBLvglp27omQCLuCBp1Dedwx5+JRnybyQm1ZYVJ0kirD/qVDRJqQN6z2N/\r\n' +
63
- '3XmvOc6yNnzNQwKDlFFs6VxLG/i/sv+TekiPIP2LIQ1V/0ojUJriRdPAe/dhER5E\r\n' +
64
- 'ku2n+k75AoGBAPDUZNyqPqFTUaLj6mdTEIvLbG0Dx0/EZTalUohFUBpJSxSUuNIS\r\n' +
65
- '6z+2dohTO5qj6Mv1JpXqXEWmRQisBl8ibizD5KJkgQW0EptmJf5BU9bnqYllgjZj\r\n' +
66
- 'jJsBixFFcwbFUwD4vg7NjYrxEv2Wjv8II0rVNbEh61F35vMNdmgMsu0TAoGBAIrm\r\n' +
67
- '7NbFDDBWREyFZKZdVhTo2AR8JyWuWdOO7EFbv+mzHy7TkgscwYlV4yeU/+TG6KLG\r\n' +
68
- 'WPo5AX2mWL/zI2Zjd2Quw002e6Y9ZIO8CUK8iocrvhNy+Bfli2XyjYZxRIILQeKX\r\n' +
69
- 'ID/h+gyzViKOXFclbUkubnm/kEGwWO8hRQvh/TWjAoGAUwbGZxUCVpfk8yVkMI8A\r\n' +
70
- 'i1FsZgEBe8yXoElKtNRAk29lRQko1rPTCrobD1CyodOUdIxl6xVLDnAOKLk10SKL\r\n' +
71
- 'nT9D2YCQwqicKZsDyi43e0WOu2GVjK6xUNctXJz21QS+Yv1eeLgA7j/Cbk6zqdTi\r\n' +
72
- 'ZfAvfIvXFtUhd/XSNnj6TqUCgYBKGrE4U6ARGbUObgwohZsrRJ4apnHsNHxP1exN\r\n' +
73
- 'Yjmc4Kc+QDmmHA1Uy7GIqIFs+IGcdd16gXc+JcUrgvfb5C0KEbi4NNz67730WhlG\r\n' +
74
- 'tXfibX/WuHuLpDceiKzgkQVPq9nWnXHjIxhYNkU54mF5TMplRJRD9+NqaD7KNSG1\r\n' +
75
- 'GTgRqQKBgQCSJ2W29p2uOrl+OcogFMSfZYkwJsKR25S/c7BAvsH7dVdtqSdBsRg2\r\n' +
76
- 'zWEwWAGyd7BJsZd0gVCea9CHfZYwDoCC4nA7sRFVLAqWfRsmrALORIiXHBYD6SrL\r\n' +
77
- 'H1G4nr6HK6/Ur0WTQQmwyz1Yw+ZhyShVRo+9NN2a3gA1n25wP3n6gQ==\r\n' +
78
- '-----END RSA PRIVATE KEY-----\r\n',
79
- publicKey: '-----BEGIN PUBLIC KEY-----\r\n' +
80
- 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAgqu7/2ntXa9rzqiUvDD2\r\n' +
81
- 'swStK8w7MFtha/OiwzEDJng7mZUsuy7Neqh5S1Z+nWq7NP51ol//tnNCrWM6Vozr\r\n' +
82
- 'JKTAEC2qj3k+bMWnjuTU7sTJHpoZ9wdCqS9q7oOJhqwBxS7M9l8LNA+6I4Qj1bY1\r\n' +
83
- 'g2XeZsxEjJfCvILa3yBzztL3CxSFR36FoOo9IpzYlVcE9mqTdJgTwR43ZsFNCRAk\r\n' +
84
- 'fSqJjLKy1A2+aDxUcrom2OrLSITICWqz5R1hFIIIB0aprjpz5F2MunciUAhTjUqr\r\n' +
85
- 'QPCtw17wmwmaeXZsu0zoq9P/VtKEAxtQkS4tqgnodBzmmgM8YemjkJAVHQzkH8ji\r\n' +
86
- 'GQIDAQAB\r\n' +
87
- '-----END PUBLIC KEY-----\r\n',
88
- certificate: '-----BEGIN CERTIFICATE-----\r\n' +
89
- 'MIIECTCCAvGgAwIBAgIBATANBgkqhkiG9w0BAQsFADBpMRQwEgYDVQQDEwtleGFt\r\n' +
90
- 'cGxlLm9yZzELMAkGA1UEBhMCVVMxETAPBgNVBAgTCFZpcmdpbmlhMRMwEQYDVQQH\r\n' +
91
- 'EwpCbGFja3NidXJnMQ0wCwYDVQQKEwRUZXN0MQ0wCwYDVQQLEwRUZXN0MB4XDTE1\r\n' +
92
- 'MTAwOTE3NTc1NloXDTE2MTAwOTE3NTc1NlowaTEUMBIGA1UEAxMLZXhhbXBsZS5v\r\n' +
93
- 'cmcxCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhWaXJnaW5pYTETMBEGA1UEBxMKQmxh\r\n' +
94
- 'Y2tzYnVyZzENMAsGA1UEChMEVGVzdDENMAsGA1UECxMEVGVzdDCCASIwDQYJKoZI\r\n' +
95
- 'hvcNAQEBBQADggEPADCCAQoCggEBAIKru/9p7V2va86olLww9rMErSvMOzBbYWvz\r\n' +
96
- 'osMxAyZ4O5mVLLsuzXqoeUtWfp1quzT+daJf/7ZzQq1jOlaM6ySkwBAtqo95PmzF\r\n' +
97
- 'p47k1O7EyR6aGfcHQqkvau6DiYasAcUuzPZfCzQPuiOEI9W2NYNl3mbMRIyXwryC\r\n' +
98
- '2t8gc87S9wsUhUd+haDqPSKc2JVXBPZqk3SYE8EeN2bBTQkQJH0qiYyystQNvmg8\r\n' +
99
- 'VHK6Jtjqy0iEyAlqs+UdYRSCCAdGqa46c+RdjLp3IlAIU41Kq0DwrcNe8JsJmnl2\r\n' +
100
- 'bLtM6KvT/1bShAMbUJEuLaoJ6HQc5poDPGHpo5CQFR0M5B/I4hkCAwEAAaOBuzCB\r\n' +
101
- 'uDAMBgNVHRMEBTADAQH/MAsGA1UdDwQEAwIC9DA7BgNVHSUENDAyBggrBgEFBQcD\r\n' +
102
- 'AQYIKwYBBQUHAwIGCCsGAQUFBwMDBggrBgEFBQcDBAYIKwYBBQUHAwgwEQYJYIZI\r\n' +
103
- 'AYb4QgEBBAQDAgD3MCwGA1UdEQQlMCOGG2h0dHA6Ly9leGFtcGxlLm9yZy93ZWJp\r\n' +
104
- 'ZCNtZYcEfwAAATAdBgNVHQ4EFgQUyX839dHHD+pAfU9F5t/rpQaq3LQwDQYJKoZI\r\n' +
105
- 'hvcNAQELBQADggEBAGfr9yMwTXoHbZAj/8bRCfKUUg/xIbQY0RtuDwGKBnzVcz7r\r\n' +
106
- 'NpocyEBUFvlbsXK4Dwpql41nYPwEpmm486gpWDqSBB0p0jF3HNHihKhCcR0LDQLt\r\n' +
107
- 'hBP7SbX76uL4cHoJkbAVbc4FGARCkE7eVZ0sBWUPmLqVh2JmzlC3geq7Obs7HCvq\r\n' +
108
- 'eStorsBlDZt27/N+xhvxdUTGJgiTBxk6BrRLGxUeor9TLRpZ2wsoMSnkIcQyooZ4\r\n' +
109
- 'iGAZsqUyanWODz0o6R02kSpTA3zx6LssLuLdnxfi1EmHMSM27Lxuw308XzirTxM2\r\n' +
110
- '/N0H5AwUc057+HoygLPfddxOfxHGXz4VmEKMcJ8=\r\n' +
111
- '-----END CERTIFICATE-----\r\n'
112
- };
113
-
114
- var _pem_sha512 = {
115
- privateKey: '-----BEGIN RSA PRIVATE KEY-----\r\n' +
116
- 'MIIEowIBAAKCAQEAmy+xwQpZMYkMWHhw+kh2TDGbG+AF1w6BFVQ6CduEjUzD5d/j\r\n' +
117
- 'URtkaeb0RO/uba+J92DMgJJLWlcTe5FpQMb2lxOrNoYP+suWnNxU7QD5vQ4OiJ+i\r\n' +
118
- '3nTMly9LMB3BEEea2ZJRpVboJxRBeGl6pKz4obFfoFxqtSww38Cw8h5Nplt+LXR/\r\n' +
119
- 'wq8yCpmN9hTE4CSw8iioIqxOZem3sz4//jcMHJ5/aiTjXwseE8eWjaVfvpDESuwQ\r\n' +
120
- 'MNjfJYYP0onzEZmTtztyAspsyf0GZBjd1ew2nVCY0cCkQ1+tqYk7H9rjlj1PxduC\r\n' +
121
- 'a4aGVKZjIBFnZXhCE23znOgVt9PxFMPUrmHwqwIDAQABAoIBAC68UWMak7wIUxB9\r\n' +
122
- 'zUCC/CV8NwNRF1EqDBP5VrVLSAMp4EFliNcPUdFW/a+ZNowP9pPqsgvygwEFAlgP\r\n' +
123
- 'dcxNX0wmX0S/YSadk5FQBb+OsKeQCS56LRmjwU2yr4khHNijR+5IU5BguO+z+Pej\r\n' +
124
- 'hIz9jq9bdLoduwEu+tUX+fIg0C/OGfxKQrOXIW3hiJDilx2Bt+eyUYrtIxBhwNC9\r\n' +
125
- 'jwwMCUFlcbvQSwq+Vx50v2LVjqalJMdMLQiULsF9nPw7EdUJz+aoM4STv7l4miXi\r\n' +
126
- 'utkF4xlAl8lnJKOycsFPbqBBaypZoY3O3mKkWtSFRjD4oNW/juBGHTimPWRYgW3V\r\n' +
127
- 'Q+IVHpkCgYEA75+vMp2Expq+iCa+UoV48HIVdiCaCk4vRedVe4IHyWxEkaliCHga\r\n' +
128
- 'e9wAsxWipDxROv3yoLxlbddnZSD2YaYaIALH/xpSWlcBHZupyq6jNF7R+14Yx155\r\n' +
129
- '88iGyoYKNE2VrcVlL164LIqaEB4lxYanhotwqcC5O6IOhpZZ7jSC/H8CgYEApcq9\r\n' +
130
- '/G5po1BgYVZ2hdxTqdx8wniWaQNd7EVpogBhJ4KLC+tN42+vBHJT6BQp/PFRWjY5\r\n' +
131
- 'fiC1zwI8ufL12F4T8+ZcQVZkHpLjKporYolYmQm/T8wNDwOziYB67Jp9M2EHdei/\r\n' +
132
- 'HNo2FUsXRm+Tb1utiQn7AyJ6PHwwJAU1LbtYpdUCgYEAg4R/YiZ2c5MHNC8fkqdT\r\n' +
133
- 'Q5U6FkW6hiF3bMSVdF5f67uSvufauI9C6exMLf6X79BzPQ+YlYQRn4H0a9r1n47N\r\n' +
134
- 'E/iy0F8gCBlssVV4kZfcV6gbU/3HV9WQ1a6f3JRJEX/rwR5wdNll+HxyJpqFXK6V\r\n' +
135
- 'UBFEWsc+Y26EznXDEiycH/0CgYBxwfMqSfhh/ryjDVi18L/XRVq1dVh/JbhEbjxU\r\n' +
136
- '1D3VhlUyEHqZHADS5D9+dpd433wakipQyND3AWn5jSPzGlpGeEHE8yovcEo+6Rnr\r\n' +
137
- 'uqH4ICAM+M3dB4UhS+8MedR+dI1R8ilv+qoxYhzOT7CyMA2agiaht/53kh7WGFys\r\n' +
138
- 'zGe/IQKBgALJnE5CVQLaJgFcWGH2rnD6hWVh1DdV8ockzLg7ulUW0U5gueHWnaWv\r\n' +
139
- 'PhP/P0YWF250IWmEm73LCZi3Cv3gBIwvn5pV3GHjMUexTQ3iODsGC8SdL0svnUTc\r\n' +
140
- '5/VlSjAKS4Mn9gwutcXX9/Y2AJa4O6S/QfAQeU5aqkk/Fs+31ose\r\n' +
141
- '-----END RSA PRIVATE KEY-----\r\n',
142
- publicKey: '-----BEGIN PUBLIC KEY-----\r\n' +
143
- 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmy+xwQpZMYkMWHhw+kh2\r\n' +
144
- 'TDGbG+AF1w6BFVQ6CduEjUzD5d/jURtkaeb0RO/uba+J92DMgJJLWlcTe5FpQMb2\r\n' +
145
- 'lxOrNoYP+suWnNxU7QD5vQ4OiJ+i3nTMly9LMB3BEEea2ZJRpVboJxRBeGl6pKz4\r\n' +
146
- 'obFfoFxqtSww38Cw8h5Nplt+LXR/wq8yCpmN9hTE4CSw8iioIqxOZem3sz4//jcM\r\n' +
147
- 'HJ5/aiTjXwseE8eWjaVfvpDESuwQMNjfJYYP0onzEZmTtztyAspsyf0GZBjd1ew2\r\n' +
148
- 'nVCY0cCkQ1+tqYk7H9rjlj1PxduCa4aGVKZjIBFnZXhCE23znOgVt9PxFMPUrmHw\r\n' +
149
- 'qwIDAQAB\r\n' +
150
- '-----END PUBLIC KEY-----\r\n',
151
- certificate: '-----BEGIN CERTIFICATE-----\r\n' +
152
- 'MIIECTCCAvGgAwIBAgIBATANBgkqhkiG9w0BAQ0FADBpMRQwEgYDVQQDEwtleGFt\r\n' +
153
- 'cGxlLm9yZzELMAkGA1UEBhMCVVMxETAPBgNVBAgTCFZpcmdpbmlhMRMwEQYDVQQH\r\n' +
154
- 'EwpCbGFja3NidXJnMQ0wCwYDVQQKEwRUZXN0MQ0wCwYDVQQLEwRUZXN0MB4XDTE1\r\n' +
155
- 'MTAwOTE4MDEwOVoXDTE2MTAwOTE4MDEwOVowaTEUMBIGA1UEAxMLZXhhbXBsZS5v\r\n' +
156
- 'cmcxCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhWaXJnaW5pYTETMBEGA1UEBxMKQmxh\r\n' +
157
- 'Y2tzYnVyZzENMAsGA1UEChMEVGVzdDENMAsGA1UECxMEVGVzdDCCASIwDQYJKoZI\r\n' +
158
- 'hvcNAQEBBQADggEPADCCAQoCggEBAJsvscEKWTGJDFh4cPpIdkwxmxvgBdcOgRVU\r\n' +
159
- 'OgnbhI1Mw+Xf41EbZGnm9ETv7m2vifdgzICSS1pXE3uRaUDG9pcTqzaGD/rLlpzc\r\n' +
160
- 'VO0A+b0ODoifot50zJcvSzAdwRBHmtmSUaVW6CcUQXhpeqSs+KGxX6BcarUsMN/A\r\n' +
161
- 'sPIeTaZbfi10f8KvMgqZjfYUxOAksPIoqCKsTmXpt7M+P/43DByef2ok418LHhPH\r\n' +
162
- 'lo2lX76QxErsEDDY3yWGD9KJ8xGZk7c7cgLKbMn9BmQY3dXsNp1QmNHApENframJ\r\n' +
163
- 'Ox/a45Y9T8XbgmuGhlSmYyARZ2V4QhNt85zoFbfT8RTD1K5h8KsCAwEAAaOBuzCB\r\n' +
164
- 'uDAMBgNVHRMEBTADAQH/MAsGA1UdDwQEAwIC9DA7BgNVHSUENDAyBggrBgEFBQcD\r\n' +
165
- 'AQYIKwYBBQUHAwIGCCsGAQUFBwMDBggrBgEFBQcDBAYIKwYBBQUHAwgwEQYJYIZI\r\n' +
166
- 'AYb4QgEBBAQDAgD3MCwGA1UdEQQlMCOGG2h0dHA6Ly9leGFtcGxlLm9yZy93ZWJp\r\n' +
167
- 'ZCNtZYcEfwAAATAdBgNVHQ4EFgQUaC1StQewfZ4bMUDUsnpzy/4+CZ8wDQYJKoZI\r\n' +
168
- 'hvcNAQENBQADggEBAGy58GzpSG3KAv0DILJPWhtxTRvbnd02AWO6fhCdx+siyQ02\r\n' +
169
- 'aKgkf1sAS0MGDDMGiwMKvBTz8+8HnfFx6cA7NG7xtuw9m8yb1LeNLbOc3/TCrG/U\r\n' +
170
- 'A27ZediP+hCqElB9MtNHyOx/vv+gdKXTFDG4PlykNFmFsGjrA+sA0OtwKRLPQCxp\r\n' +
171
- 'rUtGw+cw+xy3O68/unCl86wc8PA5r4uAaQBXdWThpAL0KJI1ky7auUwpsR+aWILJ\r\n' +
172
- '0x6a9LOUnCMbbOTN31vRweFxD0qS2J8QMDkfNflvEWmpIZHF4UEoietXk+suP9tc\r\n' +
173
- '87rtT63BEY6KcZJJ+oDnKiZuAujmf1iezC+YORs=\r\n' +
174
- '-----END CERTIFICATE-----\r\n'
175
- };
176
-
177
- var _pem_same_subject = [
178
- '-----BEGIN CERTIFICATE-----\r\n' +
179
- 'MIIBrDCCARWgAwIBAgIBATANBgkqhkiG9w0BAQUFADAAMB4XDTE2MDgwNDE0NDcw\r\n' +
180
- 'MFoXDTE3MDgwNDE0NDcwMFowGTEXMBUGA1UEAxMOQ2VydCBBdXRob3JpdHkwgZ8w\r\n' +
181
- 'DQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMsBaqRGPC6bZh22NMmATSZq6E70SLfN\r\n' +
182
- 'esKFOG337k2belUHr9tXU2699p0fJjNgDntNTo+0Sfu5mMa+zAUqJ3PzQcJ2NVY7\r\n' +
183
- 'tYPqhDoPPooi8gv5F7EZZzZZ1FfkdHMSJVOwEn2ZAskN7eJyycibKIwRWu1ky8AK\r\n' +
184
- 'M6lZvzGgDaORAgMBAAGjHTAbMAwGA1UdEwQFMAMBAf8wCwYDVR0PBAQDAgLEMA0G\r\n' +
185
- 'CSqGSIb3DQEBBQUAA4GBACYSi4PVsQVBu8vgUwDWNJs6+Qvuo4FtRuQNDg+aOa/O\r\n' +
186
- 'MyOQBv3flEHNGrg7BN72tAdmlZLjp/dz87u8AwRNdW0KqF3zYI9Hsni3JDQjC/ga\r\n' +
187
- '//Si48IbHpJrApQD7y9wwO4xjZbHQPRQ8BUJZgg57xeQqDe95vnQ62c7Eqdt97e9\r\n' +
188
- '-----END CERTIFICATE-----\r\n',
189
- '-----BEGIN CERTIFICATE-----\r\n' +
190
- 'MIIBrzCCARigAwIBAgIBAjANBgkqhkiG9w0BAQUFADAAMB4XDTE2MDgwNDE0NDcw\r\n' +
191
- 'MFoXDTE4MDgwNDE0NDcwMFowGTEXMBUGA1UEAxMOQ2VydCBBdXRob3JpdHkwgZ8w\r\n' +
192
- 'DQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAOepv6vtleShp+A4XwJwqVAoAkEeR3dG\r\n' +
193
- '6ogwYTNMTtLMXoYYXPj3UnKSUbK0XiCY/UK1rSC6/jp8OMb9xvVZ5+AH3y7h2FRm\r\n' +
194
- 'gNLGGjuBPnfBea6FEuptk+//eheAQ0wl6Wre96zxILSyrPzBy8F91Ht/psO0WXIl\r\n' +
195
- 'dfh/XHhBY3D1AgMBAAGjIDAeMA8GA1UdEwQIMAYBAf8CAQIwCwYDVR0PBAQDAgKE\r\n' +
196
- 'MA0GCSqGSIb3DQEBBQUAA4GBAIYjbuzf2dANljhEgAWVPeu50OJJYLoV5umRQjXF\r\n' +
197
- 'WfXc53ODU0usuHeeH14a63zW1jqfHgc475WEMgMLL/k0FechIuC9AdcDEgzGmBSG\r\n' +
198
- 'PDV8nxhU98gpj6I7ewsVk31WDQhFYeSuYJiDiiL47P0BXJLWb+86fFiQklsm5y0h\r\n' +
199
- 'Xt0s\r\n' +
200
- '-----END CERTIFICATE-----\r\n'
201
- ];
202
-
203
- var _pem_past_2050 = {
204
- privateKey: '-----BEGIN PRIVATE KEY-----\r\n' +
205
- 'MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCtQM1R5VoB8Hrr\r\n' +
206
- 'hdL514H+oQN/FSIiHXsdoZlQqUEQ7yUBgC2c7fbq4Wm9AUHBkc/KfUGb9+ZeX6xo\r\n' +
207
- '6L06M57QBD8nkSTStNHozlOwjnKu7DnlyW4j3ej9rBZzshLzAvWGZkx5sR1Eyz/2\r\n' +
208
- '2Ns9PL+S4h3eiRGpTw3g3geI1wxBv3CCb/LUF5Wa4NWwIU1GP9S6d8MrOb3WGhR3\r\n' +
209
- '64ZxajxSeX8R9WLsAo1Qx0dhsJ/UMwIibZ3hA9y1VBma2QyqQMzdY9OYC4oyE646\r\n' +
210
- 'WfyJzHscpc6KNiVsWnYDP9+NStQlvaXMwhaPFpyVkLLB0vHho4oMXgEDTCH1iIe4\r\n' +
211
- 'YGw01wQ/AgMBAAECggEAdx1wjHfFNEQkHr25WbDDXU9SWhMrjoz6UlsCT6SuaXgh\r\n' +
212
- '1zBLK/OnqcEks5+jl/QqCqunahY8OnJI1S/+uX84Fwh0az2tNXjAQPFqNJ8bVgxv\r\n' +
213
- 'mf6tTNeLEq04Gn856/4C1E6NEbWly+B5r7tUsHuNsuznYFKY4/DIN+wu/fPsJ17X\r\n' +
214
- 'vbZiev6+OID/XCKPYWNRYiszBcmktGM5L+JLcYYPpxFYGFtw+khhUlazx0OmIuDB\r\n' +
215
- 'AaePTtyXb1qQNKHv6wy7l+BTBKAlxoQQHMCw5qsnCr9RHed7LJr0kssUbVaseUOg\r\n' +
216
- 'KMWtRG0Ms3ovOPWsVFC509gbGal8q+NSwyKd07SlQQKBgQDZX6bwE1H+V7r5GJwz\r\n' +
217
- 'EGRLrMUDbbCb2qqZcSn+TCk9hsJ6jeSwz9KjZ2qONcmMl3WY6XAOdTjmJZl20wF9\r\n' +
218
- 'GV58pZAoPhLh6tByX9RlUffXz+1KKMP0/5cxmwV8N0RBWrHcmRc6yMwJGZE7qBUh\r\n' +
219
- 'JX/77xj9yPoDW+uOSGp+f0nZMQKBgQDMChqQF1cw7iIljzmtOhSnSEiCH7WYCJgp\r\n' +
220
- 'um7KEGfFXxbNX07g6pojdjVFFf9uA6tPaiTnwXLc8wI8yiuwt8yPh60QTrcW/E/0\r\n' +
221
- '+iQQGkwrFvWybbEuI++K6rOXdNMq7FEU467qN26lzHpagSEn6bXdss8L7AOcGRif\r\n' +
222
- '0E/rSXlYbwKBgQDHFAA6vScJzmUxvyVG6ws/90IT6sClbHVzxB1WhX/7llDElvFM\r\n' +
223
- 'MXlTJ+KBzacB+LC904VJ6Hes5+CN35/sZ3COrb7B7F+0wi4XocZO6OwYnZhPo9gb\r\n' +
224
- 'qH1a9APpCGCdjid4xkhtEPs0llLZlQ2M5uA45ng37Xlz3Bp2m8HUilUi8QKBgQCa\r\n' +
225
- 'RpV5F7zciWIWRipVGZJePeBdSz6SOwVan9V/QVJFQTXLiWHp3Fk5sPpsR0rAU1Pn\r\n' +
226
- 'kxlehr2j5LZvYmoQj5jDedHYf7weTB7k23IDHu8ysYSLKjeK7K8FuZqbTUERtmdE\r\n' +
227
- 'RTePbuRhxq9I2VRJioPxom680/KSx8L/q5GSFRcETwKBgDZhnBZ7+dIKlPAgfwPC\r\n' +
228
- 'OCA2kKE+5UxyeAUeojNrSfHGdzF891PX+90D7sPfJi7SJU4E/UOMG/u8wUv5i2/+\r\n' +
229
- '/nKOI6NwKB/m0FqpvxamuNJapn9RQ9bC7oz0Rj2Tho90mohwQG4DHF2uO8364Wb+\r\n' +
230
- '9Bu1FCWmILPGcJM5iw6TJPA0\r\n' +
231
- '-----END PRIVATE KEY-----\r\n',
232
- certificate: '-----BEGIN CERTIFICATE-----\r\n' +
233
- 'MIIDqjCCApKgAwIBAgIJAJvrXrdlRWTTMA0GCSqGSIb3DQEBCwUAMGgxCzAJBgNV\r\n' +
234
- 'BAYTAlVTMRAwDgYDVQQIDAdWaXJnaW5hMRMwEQYDVQQHDApCbGFja3NidXJnMQ0w\r\n' +
235
- 'CwYDVQQKDARUZXN0MQ0wCwYDVQQLDARUZXN0MRQwEgYDVQQDDAtleGFtcGxlLm9y\r\n' +
236
- 'ZzAiGA8yMDUwMDIwMTIzMDAyOVoYDzIwNTEwMjAxMjMwMDI5WjBoMQswCQYDVQQG\r\n' +
237
- 'EwJVUzEQMA4GA1UECAwHVmlyZ2luYTETMBEGA1UEBwwKQmxhY2tzYnVyZzENMAsG\r\n' +
238
- 'A1UECgwEVGVzdDENMAsGA1UECwwEVGVzdDEUMBIGA1UEAwwLZXhhbXBsZS5vcmcw\r\n' +
239
- 'ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtQM1R5VoB8HrrhdL514H+\r\n' +
240
- 'oQN/FSIiHXsdoZlQqUEQ7yUBgC2c7fbq4Wm9AUHBkc/KfUGb9+ZeX6xo6L06M57Q\r\n' +
241
- 'BD8nkSTStNHozlOwjnKu7DnlyW4j3ej9rBZzshLzAvWGZkx5sR1Eyz/22Ns9PL+S\r\n' +
242
- '4h3eiRGpTw3g3geI1wxBv3CCb/LUF5Wa4NWwIU1GP9S6d8MrOb3WGhR364ZxajxS\r\n' +
243
- 'eX8R9WLsAo1Qx0dhsJ/UMwIibZ3hA9y1VBma2QyqQMzdY9OYC4oyE646WfyJzHsc\r\n' +
244
- 'pc6KNiVsWnYDP9+NStQlvaXMwhaPFpyVkLLB0vHho4oMXgEDTCH1iIe4YGw01wQ/\r\n' +
245
- 'AgMBAAGjUzBRMB0GA1UdDgQWBBRxifZwjEsDjYgbajBq+e1r4krdwjAfBgNVHSME\r\n' +
246
- 'GDAWgBRxifZwjEsDjYgbajBq+e1r4krdwjAPBgNVHRMBAf8EBTADAQH/MA0GCSqG\r\n' +
247
- 'SIb3DQEBCwUAA4IBAQB0V8zdJ1WebOvZNwl6WcbzNJRQePPnGp9pAbGuqpLZHvs6\r\n' +
248
- 'geAocgmEqleGOsU9GT30MV1vtkR1IY6CWkVPeSiXS43HT8enoYCJX3AZd6ItUrQH\r\n' +
249
- '8UonY8UqAmzsGLO+ttO5o6kEY6K0e1QUdmFkOh9Z6M9U3s3DASwrKQ/xFlHQ2mNi\r\n' +
250
- 'h7pKaH2+XlDTrCjhO1ip0n4AwG5lgFJpJlVOZ9+Axzc146q/YZqrhXHYU152Wqo/\r\n' +
251
- 'mFlygydsKNwWdpK5fwGBZkBR8AsZvNZaQ9Rr3Rr3y5Xz7+aPfLfWF5hW+d11ghuy\r\n' +
252
- 'FDeZMUBehXXEJLXrirfmO2KFmy3iKrniJDDa35Lg\r\n' +
253
- '-----END CERTIFICATE-----\r\n'
254
- };
255
-
256
- describe('x509', function() {
257
- it('should convert SHA-1 based certificate to/from PEM', function() {
258
- var certificate = PKI.certificateFromPem(_pem.certificate);
259
- ASSERT.equal(PKI.certificateToPem(certificate), _pem.certificate);
260
- });
261
-
262
- it('should convert SHA-256 based certificate to/from PEM', function() {
263
- var certificate = PKI.certificateFromPem(_pem_sha256.certificate);
264
- ASSERT.equal(PKI.certificateToPem(certificate), _pem_sha256.certificate);
265
- });
266
-
267
- it('should convert certificate not before < 2050 < not after to/from PEM', function() {
268
- var certificate = PKI.certificateFromPem(_pem_past_2050.certificate);
269
- ASSERT.equal(PKI.certificateToPem(certificate), _pem_past_2050.certificate);
270
- });
271
-
272
- it('should convert SHA-512 based certificate to/from PEM', function() {
273
- var certificate = PKI.certificateFromPem(_pem_sha512.certificate);
274
- ASSERT.equal(PKI.certificateToPem(certificate), _pem_sha512.certificate);
275
- });
276
-
277
- it('should verify SHA-1 based self-signed certificate', function() {
278
- var certificate = PKI.certificateFromPem(_pem.certificate);
279
- ASSERT.ok(certificate.verify(certificate));
280
- });
281
-
282
- it('should verify SHA-256 based self-signed certificate', function() {
283
- var certificate = PKI.certificateFromPem(_pem_sha256.certificate);
284
- ASSERT.ok(certificate.verify(certificate));
285
- });
286
-
287
- it('should verify SHA-512 based self-signed certificate', function() {
288
- var certificate = PKI.certificateFromPem(_pem_sha512.certificate);
289
- ASSERT.ok(certificate.verify(certificate));
290
- });
291
-
292
- it('should verify not before < 2050 < not after self-signed certificate', function() {
293
- var certificate = PKI.certificateFromPem(_pem_past_2050.certificate);
294
- ASSERT.ok(certificate.verify(certificate));
295
- });
296
-
297
- it('should generate a certificate with authorityKeyIdentifier extension', function() {
298
- var keys = {
299
- privateKey: PKI.privateKeyFromPem(_pem.privateKey),
300
- publicKey: PKI.publicKeyFromPem(_pem.publicKey)
301
- };
302
- var attrs = [{
303
- name: 'commonName',
304
- value: 'example.org'
305
- }, {
306
- name: 'countryName',
307
- value: 'US'
308
- }, {
309
- shortName: 'ST',
310
- value: 'Virginia'
311
- }, {
312
- name: 'localityName',
313
- value: 'Blacksburg'
314
- }, {
315
- name: 'organizationName',
316
- value: 'Test'
317
- }, {
318
- shortName: 'OU',
319
- value: 'Test'
320
- }];
321
- var cert = createCertificate({
322
- publicKey: keys.publicKey,
323
- signingKey: keys.privateKey,
324
- extensions: [{
325
- name: 'authorityKeyIdentifier',
326
- keyIdentifier: true,
327
- authorityCertIssuer: true,
328
- serialNumber: true
329
- }],
330
- serialNumber: '01',
331
- subject: attrs,
332
- issuer: attrs,
333
- isCA: true
334
- });
335
-
336
- // verify certificate encoding/parsing
337
- var pem = PKI.certificateToPem(cert);
338
- cert = PKI.certificateFromPem(pem);
339
-
340
- // verify authorityKeyIdentifier extension
341
- var index = findIndex(cert.extensions, {id: '2.5.29.35'});
342
- ASSERT.ok(index !== -1);
343
- var ext = cert.extensions[index];
344
- ASSERT.equal(ext.name, 'authorityKeyIdentifier');
345
- ASSERT.equal(ext.value, UTIL.hexToBytes(
346
- '3081888014f57563e0c75d6e9b03fafdb2fd72349f23030300a16da46b30693114' +
347
- '30120603550403130b6578616d706c652e6f7267310b3009060355040613025553' +
348
- '3111300f0603550408130856697267696e6961311330110603550407130a426c61' +
349
- '636b7362757267310d300b060355040a130454657374310d300b060355040b1304' +
350
- '54657374820101'));
351
-
352
- // verify certificate chain
353
- var caStore = PKI.createCaStore();
354
- caStore.addCertificate(cert);
355
- PKI.verifyCertificateChain(caStore, [cert], function(vfd, depth, chain) {
356
- ASSERT.equal(vfd, true);
357
- ASSERT.ok(cert.verifySubjectKeyIdentifier());
358
- return true;
359
- });
360
- });
361
-
362
- it('should generate a certificate with cRLDistributionPoints extension', function() {
363
- var keys = {
364
- privateKey: PKI.privateKeyFromPem(_pem.privateKey),
365
- publicKey: PKI.publicKeyFromPem(_pem.publicKey)
366
- };
367
- var attrs = [{
368
- name: 'commonName',
369
- value: 'example.org'
370
- }, {
371
- name: 'countryName',
372
- value: 'US'
373
- }, {
374
- shortName: 'ST',
375
- value: 'Virginia'
376
- }, {
377
- name: 'localityName',
378
- value: 'Blacksburg'
379
- }, {
380
- name: 'organizationName',
381
- value: 'Test'
382
- }, {
383
- shortName: 'OU',
384
- value: 'Test'
385
- }];
386
- var cert = createCertificate({
387
- publicKey: keys.publicKey,
388
- signingKey: keys.privateKey,
389
- extensions: [{
390
- id: '2.5.29.31',
391
- altNames: [{
392
- type: 6,
393
- value: 'https://test-organisation.com/test-organisation/crl/test_organisation_ca.crl.der'
394
- }]
395
- }],
396
- serialNumber: '01',
397
- subject: attrs,
398
- issuer: attrs,
399
- isCA: true
400
- });
401
-
402
- // verify certificate encoding/parsing
403
- var pem = PKI.certificateToPem(cert);
404
- cert = PKI.certificateFromPem(pem);
405
-
406
- // verify cRLDistributionPoints extension
407
- var index = findIndex(cert.extensions, {id: '2.5.29.31'});
408
- ASSERT.ok(index !== -1);
409
- var ext = cert.extensions[index];
410
- ASSERT.equal(ext.name, 'cRLDistributionPoints');
411
- ASSERT.equal(ext.value, UTIL.hexToBytes(
412
- '30583056a054a052865068747470733a2f2f746573742d6f7267616e6973617469' +
413
- '6f6e2e636f6d2f746573742d6f7267616e69736174696f6e2f63726c2f74657374' +
414
- '5f6f7267616e69736174696f6e5f63612e63726c2e646572'));
415
-
416
- // verify certificate chain
417
- var caStore = PKI.createCaStore();
418
- caStore.addCertificate(cert);
419
- PKI.verifyCertificateChain(caStore, [cert], function(vfd, depth, chain) {
420
- ASSERT.equal(vfd, true);
421
- ASSERT.ok(cert.verifySubjectKeyIdentifier());
422
- return true;
423
- });
424
- });
425
-
426
- it('should generate a certificate with nsComment extension', function() {
427
- var keys = {
428
- privateKey: PKI.privateKeyFromPem(_pem.privateKey),
429
- publicKey: PKI.publicKeyFromPem(_pem.publicKey)
430
- };
431
- var attrs = [{
432
- name: 'commonName',
433
- value: 'example.org'
434
- }, {
435
- name: 'countryName',
436
- value: 'US'
437
- }, {
438
- shortName: 'ST',
439
- value: 'Virginia'
440
- }, {
441
- name: 'localityName',
442
- value: 'Blacksburg'
443
- }, {
444
- name: 'organizationName',
445
- value: 'Test'
446
- }, {
447
- shortName: 'OU',
448
- value: 'Test'
449
- }];
450
- var dummyTestStr = 'node-forge is awesome';
451
- var cert = createCertificate({
452
- publicKey: keys.publicKey,
453
- signingKey: keys.privateKey,
454
- extensions: [{
455
- name: 'nsComment',
456
- comment: dummyTestStr
457
- }],
458
- serialNumber: '01',
459
- subject: attrs,
460
- issuer: attrs,
461
- isCA: true
462
- });
463
-
464
- // verify certificate encoding/parsing
465
- var pem = PKI.certificateToPem(cert);
466
- cert = PKI.certificateFromPem(pem);
467
-
468
- // verify nsComment extension
469
- var index = findIndex(cert.extensions, {id: '2.16.840.1.113730.1.13'});
470
- ASSERT.ok(index !== -1);
471
- var ext = cert.extensions[index];
472
- ASSERT.equal(ASN1.fromDer(ext.value).value, dummyTestStr);
473
-
474
- // verify certificate chain
475
- var caStore = PKI.createCaStore();
476
- caStore.addCertificate(cert);
477
- PKI.verifyCertificateChain(caStore, [cert], function(vfd, depth, chain) {
478
- ASSERT.equal(vfd, true);
479
- ASSERT.ok(cert.verifySubjectKeyIdentifier());
480
- return true;
481
- });
482
- });
483
-
484
- it('should generate a certificate with postalCode attribute', function() {
485
- var keys = {
486
- privateKey: PKI.privateKeyFromPem(_pem.privateKey),
487
- publicKey: PKI.publicKeyFromPem(_pem.publicKey)
488
- };
489
- var attrs = [{
490
- name: 'commonName',
491
- value: 'example.org'
492
- }, {
493
- name: 'countryName',
494
- value: 'US'
495
- }, {
496
- shortName: 'ST',
497
- value: 'Virginia'
498
- }, {
499
- name: 'localityName',
500
- value: 'Blacksburg'
501
- }, {
502
- name: 'organizationName',
503
- value: 'Test'
504
- }, {
505
- shortName: 'OU',
506
- value: 'Test'
507
- }, {
508
- name: 'postalCode',
509
- value: '24060'
510
- }];
511
- var cert = createCertificate({
512
- publicKey: keys.publicKey,
513
- signingKey: keys.privateKey,
514
- serialNumber: '01',
515
- subject: attrs,
516
- issuer: attrs,
517
- isCA: true
518
- });
519
-
520
- var pem = PKI.certificateToPem(cert);
521
- cert = PKI.certificateFromPem(pem);
522
- var index = findIndex(cert.subject.attributes, {type: '2.5.4.17'});
523
- ASSERT.ok(index !== -1);
524
- var attribute = cert.subject.attributes[index];
525
- ASSERT.equal(attribute.name, 'postalCode');
526
- ASSERT.equal(attribute.value, '24060');
527
- });
528
-
529
- it('should generate a certificate with businessCategory attribute', function() {
530
- var keys = {
531
- privateKey: PKI.privateKeyFromPem(_pem.privateKey),
532
- publicKey: PKI.publicKeyFromPem(_pem.publicKey)
533
- };
534
- var attrs = [{
535
- name: 'commonName',
536
- value: 'example.org'
537
- }, {
538
- name: 'countryName',
539
- value: 'US'
540
- }, {
541
- shortName: 'ST',
542
- value: 'Virginia'
543
- }, {
544
- name: 'localityName',
545
- value: 'Blacksburg'
546
- }, {
547
- name: 'organizationName',
548
- value: 'Test'
549
- }, {
550
- shortName: 'OU',
551
- value: 'Test'
552
- }, {
553
- name: 'businessCategory',
554
- value: 'Test Organization'
555
- }];
556
- var cert = createCertificate({
557
- publicKey: keys.publicKey,
558
- signingKey: keys.privateKey,
559
- serialNumber: '01',
560
- subject: attrs,
561
- issuer: attrs,
562
- isCA: true
563
- });
564
-
565
- var pem = PKI.certificateToPem(cert);
566
- cert = PKI.certificateFromPem(pem);
567
- var index = findIndex(cert.subject.attributes, {type: '2.5.4.15'});
568
- ASSERT.ok(index !== -1);
569
- var attribute = cert.subject.attributes[index];
570
- ASSERT.equal(attribute.name, 'businessCategory');
571
- ASSERT.equal(attribute.value, 'Test Organization');
572
- });
573
-
574
- it('should generate a certificate with streetAddress attribute', function() {
575
- var keys = {
576
- privateKey: PKI.privateKeyFromPem(_pem.privateKey),
577
- publicKey: PKI.publicKeyFromPem(_pem.publicKey)
578
- };
579
- var attrs = [{
580
- name: 'commonName',
581
- value: 'example.org'
582
- }, {
583
- name: 'countryName',
584
- value: 'US'
585
- }, {
586
- shortName: 'ST',
587
- value: 'Virginia'
588
- }, {
589
- name: 'localityName',
590
- value: 'Blacksburg'
591
- }, {
592
- name: 'organizationName',
593
- value: 'Test'
594
- }, {
595
- shortName: 'OU',
596
- value: 'Test'
597
- }, {
598
- name: 'streetAddress',
599
- value: 'Test Avenue'
600
- }];
601
- var cert = createCertificate({
602
- publicKey: keys.publicKey,
603
- signingKey: keys.privateKey,
604
- serialNumber: '01',
605
- subject: attrs,
606
- issuer: attrs,
607
- isCA: true
608
- });
609
-
610
- var pem = PKI.certificateToPem(cert);
611
- cert = PKI.certificateFromPem(pem);
612
- var index = findIndex(cert.subject.attributes, {type: '2.5.4.9'});
613
- ASSERT.ok(index !== -1);
614
- var attribute = cert.subject.attributes[index];
615
- ASSERT.equal(attribute.name, 'streetAddress');
616
- ASSERT.equal(attribute.value, 'Test Avenue');
617
- });
618
-
619
- it('should generate a certificate with pseudonym attribute', function() {
620
- var keys = {
621
- privateKey: PKI.privateKeyFromPem(_pem.privateKey),
622
- publicKey: PKI.publicKeyFromPem(_pem.publicKey)
623
- };
624
- var attrs = [{
625
- name: 'commonName',
626
- value: 'example.org'
627
- }, {
628
- name: 'countryName',
629
- value: 'US'
630
- }, {
631
- shortName: 'ST',
632
- value: 'Virginia'
633
- }, {
634
- name: 'localityName',
635
- value: 'Blacksburg'
636
- }, {
637
- name: 'organizationName',
638
- value: 'Test'
639
- }, {
640
- shortName: 'OU',
641
- value: 'Test'
642
- }, {
643
- name: 'pseudonym',
644
- value: 'Satoshi Nakamato'
645
- }];
646
- var cert = createCertificate({
647
- publicKey: keys.publicKey,
648
- signingKey: keys.privateKey,
649
- serialNumber: '01',
650
- subject: attrs,
651
- issuer: attrs,
652
- isCA: true
653
- });
654
-
655
- var pem = PKI.certificateToPem(cert);
656
- cert = PKI.certificateFromPem(pem);
657
- var index = findIndex(cert.subject.attributes, {type: '2.5.4.65'});
658
- ASSERT.ok(index !== -1);
659
- var attribute = cert.subject.attributes[index];
660
- ASSERT.equal(attribute.name, 'pseudonym');
661
- ASSERT.equal(attribute.value, 'Satoshi Nakamato');
662
- });
663
-
664
-
665
- it('should generate a certificate with jurisdictionOfIncorporationStateOrProvinceName attribute', function() {
666
- var keys = {
667
- privateKey: PKI.privateKeyFromPem(_pem.privateKey),
668
- publicKey: PKI.publicKeyFromPem(_pem.publicKey)
669
- };
670
- var attrs = [{
671
- name: 'commonName',
672
- value: 'example.org'
673
- }, {
674
- name: 'countryName',
675
- value: 'US'
676
- }, {
677
- shortName: 'ST',
678
- value: 'Virginia'
679
- }, {
680
- name: 'localityName',
681
- value: 'Blacksburg'
682
- }, {
683
- name: 'organizationName',
684
- value: 'Test'
685
- }, {
686
- shortName: 'OU',
687
- value: 'Test'
688
- }, {
689
- name: 'jurisdictionOfIncorporationStateOrProvinceName',
690
- value: 'Delaware'
691
- }];
692
- var cert = createCertificate({
693
- publicKey: keys.publicKey,
694
- signingKey: keys.privateKey,
695
- serialNumber: '01',
696
- subject: attrs,
697
- issuer: attrs,
698
- isCA: true
699
- });
700
-
701
- var pem = PKI.certificateToPem(cert);
702
- cert = PKI.certificateFromPem(pem);
703
- var index = findIndex(cert.subject.attributes, {type: '1.3.6.1.4.1.311.60.2.1.2'});
704
- ASSERT.ok(index !== -1);
705
- var attribute = cert.subject.attributes[index];
706
- ASSERT.equal(attribute.name, 'jurisdictionOfIncorporationStateOrProvinceName');
707
- ASSERT.equal(attribute.value, 'Delaware');
708
- });
709
-
710
- it('should generate a certificate with jurisdictionOfIncorporationCountryName attribute', function() {
711
- var keys = {
712
- privateKey: PKI.privateKeyFromPem(_pem.privateKey),
713
- publicKey: PKI.publicKeyFromPem(_pem.publicKey)
714
- };
715
- var attrs = [{
716
- name: 'commonName',
717
- value: 'example.org'
718
- }, {
719
- name: 'countryName',
720
- value: 'US'
721
- }, {
722
- shortName: 'ST',
723
- value: 'Virginia'
724
- }, {
725
- name: 'localityName',
726
- value: 'Blacksburg'
727
- }, {
728
- name: 'organizationName',
729
- value: 'Test'
730
- }, {
731
- shortName: 'OU',
732
- value: 'Test'
733
- }, {
734
- name: 'jurisdictionOfIncorporationCountryName',
735
- value: 'US'
736
- }];
737
- var cert = createCertificate({
738
- publicKey: keys.publicKey,
739
- signingKey: keys.privateKey,
740
- serialNumber: '01',
741
- subject: attrs,
742
- issuer: attrs,
743
- isCA: true
744
- });
745
-
746
- var pem = PKI.certificateToPem(cert);
747
- cert = PKI.certificateFromPem(pem);
748
- var index = findIndex(cert.subject.attributes, {type: '1.3.6.1.4.1.311.60.2.1.3'});
749
- ASSERT.ok(index !== -1);
750
- var attribute = cert.subject.attributes[index];
751
- ASSERT.equal(attribute.name, 'jurisdictionOfIncorporationCountryName');
752
- ASSERT.equal(attribute.value, 'US');
753
- });
754
-
755
- it('should generate and verify a self-signed certificate', function() {
756
- var keys = {
757
- privateKey: PKI.privateKeyFromPem(_pem.privateKey),
758
- publicKey: PKI.publicKeyFromPem(_pem.publicKey)
759
- };
760
- var attrs = [{
761
- name: 'commonName',
762
- value: 'example.org'
763
- }, {
764
- name: 'countryName',
765
- value: 'US'
766
- }, {
767
- shortName: 'ST',
768
- value: 'Virginia'
769
- }, {
770
- name: 'localityName',
771
- value: 'Blacksburg'
772
- }, {
773
- name: 'organizationName',
774
- value: 'Test'
775
- }, {
776
- shortName: 'OU',
777
- value: 'Test'
778
- }];
779
- var cert = createCertificate({
780
- publicKey: keys.publicKey,
781
- signingKey: keys.privateKey,
782
- serialNumber: '01',
783
- subject: attrs,
784
- issuer: attrs,
785
- isCA: true
786
- });
787
-
788
- var pem = PKI.certificateToPem(cert);
789
- cert = PKI.certificateFromPem(pem);
790
-
791
- // verify certificate chain
792
- var caStore = PKI.createCaStore();
793
- caStore.addCertificate(cert);
794
- PKI.verifyCertificateChain(caStore, [cert], function(vfd, depth, chain) {
795
- ASSERT.equal(vfd, true);
796
- ASSERT.ok(cert.verifySubjectKeyIdentifier());
797
- return true;
798
- });
799
- });
800
-
801
- it('should generate a self-signed certificate after 2050', function() {
802
- var keys = {
803
- privateKey: PKI.privateKeyFromPem(_pem.privateKey),
804
- publicKey: PKI.publicKeyFromPem(_pem.publicKey)
805
- };
806
- var attrs = [{
807
- name: 'commonName',
808
- value: 'example.org'
809
- }, {
810
- name: 'countryName',
811
- value: 'US'
812
- }, {
813
- shortName: 'ST',
814
- value: 'Virginia'
815
- }, {
816
- name: 'localityName',
817
- value: 'Blacksburg'
818
- }, {
819
- name: 'organizationName',
820
- value: 'Test'
821
- }, {
822
- shortName: 'OU',
823
- value: 'Test'
824
- }];
825
- var notBefore = new Date('2050-02-02');
826
- var cert = createCertificate({
827
- publicKey: keys.publicKey,
828
- signingKey: keys.privateKey,
829
- serialNumber: '01',
830
- subject: attrs,
831
- issuer: attrs,
832
- isCA: true,
833
- notBefore: notBefore
834
- });
835
-
836
- var pem = PKI.certificateToPem(cert);
837
- cert = PKI.certificateFromPem(pem);
838
-
839
- var notAfter = new Date('2051-02-02');
840
- ASSERT.equal(cert.validity.notBefore.toString(), notBefore.toString());
841
- ASSERT.equal(cert.validity.notAfter.toString(), notAfter.toString());
842
- });
843
-
844
- it('should generate and fail to verify a self-signed certificate that is not in the CA store', function() {
845
- var keys = {
846
- privateKey: PKI.privateKeyFromPem(_pem.privateKey),
847
- publicKey: PKI.publicKeyFromPem(_pem.publicKey)
848
- };
849
- var attrs = [{
850
- name: 'commonName',
851
- value: 'example.org'
852
- }, {
853
- name: 'countryName',
854
- value: 'US'
855
- }, {
856
- shortName: 'ST',
857
- value: 'Virginia'
858
- }, {
859
- name: 'localityName',
860
- value: 'Blacksburg'
861
- }, {
862
- name: 'organizationName',
863
- value: 'Test'
864
- }, {
865
- shortName: 'OU',
866
- value: 'Test'
867
- }];
868
- var cert = createCertificate({
869
- publicKey: keys.publicKey,
870
- signingKey: keys.privateKey,
871
- serialNumber: '01',
872
- subject: attrs,
873
- issuer: attrs,
874
- isCA: true
875
- });
876
-
877
- var pem = PKI.certificateToPem(cert);
878
- cert = PKI.certificateFromPem(pem);
879
-
880
- // verify certificate chain
881
- var caStore = PKI.createCaStore();
882
- PKI.verifyCertificateChain(caStore, [cert], function(vfd, depth, chain) {
883
- ASSERT.equal(vfd, PKI.certificateError.unknown_ca);
884
- return true;
885
- });
886
- });
887
-
888
- it('should verify certificate chain ending with intermediate certificate from CA store', function() {
889
- var keys = {
890
- privateKey: PKI.privateKeyFromPem(_pem.privateKey),
891
- publicKey: PKI.publicKeyFromPem(_pem.publicKey)
892
- };
893
- var entity = [{
894
- name: 'commonName',
895
- value: 'example.org'
896
- }, {
897
- name: 'countryName',
898
- value: 'US'
899
- }, {
900
- shortName: 'ST',
901
- value: 'Virginia'
902
- }, {
903
- name: 'localityName',
904
- value: 'Blacksburg'
905
- }, {
906
- name: 'organizationName',
907
- value: 'Test'
908
- }, {
909
- shortName: 'OU',
910
- value: 'Test'
911
- }];
912
- var intermediate = [{
913
- name: 'commonName',
914
- value: 'intermediate'
915
- }, {
916
- name: 'countryName',
917
- value: 'US'
918
- }, {
919
- shortName: 'ST',
920
- value: 'Virginia'
921
- }, {
922
- name: 'localityName',
923
- value: 'Blacksburg'
924
- }, {
925
- name: 'organizationName',
926
- value: 'Test'
927
- }, {
928
- shortName: 'OU',
929
- value: 'Test'
930
- }];
931
- var root = [{
932
- name: 'commonName',
933
- value: 'root'
934
- }, {
935
- name: 'countryName',
936
- value: 'US'
937
- }, {
938
- shortName: 'ST',
939
- value: 'Virginia'
940
- }, {
941
- name: 'localityName',
942
- value: 'Blacksburg'
943
- }, {
944
- name: 'organizationName',
945
- value: 'Test'
946
- }, {
947
- shortName: 'OU',
948
- value: 'Test'
949
- }];
950
-
951
- var intermediateCert = createCertificate({
952
- publicKey: keys.publicKey,
953
- signingKey: keys.privateKey,
954
- serialNumber: '01',
955
- subject: intermediate,
956
- issuer: root,
957
- isCA: true
958
- });
959
-
960
- var entityCert = createCertificate({
961
- publicKey: keys.publicKey,
962
- signingKey: keys.privateKey,
963
- serialNumber: '01',
964
- subject: entity,
965
- issuer: intermediate,
966
- isCA: false
967
- });
968
-
969
- // verify certificate chain
970
- var caStore = PKI.createCaStore();
971
- caStore.addCertificate(intermediateCert);
972
- var chain = [entityCert, intermediateCert];
973
- PKI.verifyCertificateChain(caStore, chain, function(vfd, depth, chain) {
974
- ASSERT.equal(vfd, true);
975
- return true;
976
- });
977
- });
978
-
979
- it('should fail to verify certificate chain ending with non-CA intermediate certificate from CA store', function() {
980
- var keys = {
981
- privateKey: PKI.privateKeyFromPem(_pem.privateKey),
982
- publicKey: PKI.publicKeyFromPem(_pem.publicKey)
983
- };
984
- var entity = [{
985
- name: 'commonName',
986
- value: 'example.org'
987
- }, {
988
- name: 'countryName',
989
- value: 'US'
990
- }, {
991
- shortName: 'ST',
992
- value: 'Virginia'
993
- }, {
994
- name: 'localityName',
995
- value: 'Blacksburg'
996
- }, {
997
- name: 'organizationName',
998
- value: 'Test'
999
- }, {
1000
- shortName: 'OU',
1001
- value: 'Test'
1002
- }];
1003
- var intermediate = [{
1004
- name: 'commonName',
1005
- value: 'intermediate'
1006
- }, {
1007
- name: 'countryName',
1008
- value: 'US'
1009
- }, {
1010
- shortName: 'ST',
1011
- value: 'Virginia'
1012
- }, {
1013
- name: 'localityName',
1014
- value: 'Blacksburg'
1015
- }, {
1016
- name: 'organizationName',
1017
- value: 'Test'
1018
- }, {
1019
- shortName: 'OU',
1020
- value: 'Test'
1021
- }];
1022
- var root = [{
1023
- name: 'commonName',
1024
- value: 'root'
1025
- }, {
1026
- name: 'countryName',
1027
- value: 'US'
1028
- }, {
1029
- shortName: 'ST',
1030
- value: 'Virginia'
1031
- }, {
1032
- name: 'localityName',
1033
- value: 'Blacksburg'
1034
- }, {
1035
- name: 'organizationName',
1036
- value: 'Test'
1037
- }, {
1038
- shortName: 'OU',
1039
- value: 'Test'
1040
- }];
1041
-
1042
- var intermediateCert = createCertificate({
1043
- publicKey: keys.publicKey,
1044
- signingKey: keys.privateKey,
1045
- serialNumber: '01',
1046
- subject: intermediate,
1047
- issuer: root,
1048
- isCA: false
1049
- });
1050
-
1051
- var entityCert = createCertificate({
1052
- publicKey: keys.publicKey,
1053
- signingKey: keys.privateKey,
1054
- serialNumber: '01',
1055
- subject: entity,
1056
- issuer: intermediate,
1057
- isCA: false
1058
- });
1059
-
1060
- // verify certificate chain
1061
- var caStore = PKI.createCaStore();
1062
- caStore.addCertificate(intermediateCert);
1063
- var chain = [entityCert, intermediateCert];
1064
- PKI.verifyCertificateChain(caStore, chain, function(vfd, depth, chain) {
1065
- if(depth === 0) {
1066
- ASSERT.equal(vfd, true);
1067
- } else {
1068
- ASSERT.equal(vfd, PKI.certificateError.bad_certificate);
1069
- }
1070
- return true;
1071
- });
1072
- });
1073
-
1074
- it('should verify based on a custom specified validity date', function() {
1075
- var keys = {
1076
- privateKey: PKI.privateKeyFromPem(_pem.privateKey),
1077
- publicKey: PKI.publicKeyFromPem(_pem.publicKey)
1078
- };
1079
-
1080
- var attrs = [{
1081
- name: 'commonName',
1082
- value: 'example.org'
1083
- }, {
1084
- name: 'countryName',
1085
- value: 'US'
1086
- }, {
1087
- shortName: 'ST',
1088
- value: 'Virginia'
1089
- }, {
1090
- name: 'localityName',
1091
- value: 'Blacksburg'
1092
- }, {
1093
- name: 'organizationName',
1094
- value: 'Test'
1095
- }, {
1096
- shortName: 'OU',
1097
- value: 'Test'
1098
- }];
1099
-
1100
- var cert = createCertificate({
1101
- publicKey: keys.publicKey,
1102
- signingKey: keys.privateKey,
1103
- extensions: [{
1104
- name: 'authorityKeyIdentifier',
1105
- keyIdentifier: true,
1106
- authorityCertIssuer: true,
1107
- serialNumber: true
1108
- }],
1109
- serialNumber: '01',
1110
- subject: attrs,
1111
- issuer: attrs,
1112
- isCA: true
1113
- });
1114
- var caStore = PKI.createCaStore();
1115
- caStore.addCertificate(cert);
1116
-
1117
- var verifyDate = new Date();
1118
- PKI.verifyCertificateChain(caStore, [cert], {
1119
- validityCheckDate: verifyDate,
1120
- verify: function(vfd, depth, chain) {
1121
- ASSERT.equal(vfd, true);
1122
- return true;
1123
- }
1124
- });
1125
-
1126
- verifyDate = new Date();
1127
- verifyDate.setFullYear(verifyDate.getFullYear() + 2);
1128
- PKI.verifyCertificateChain(caStore, [cert], {
1129
- validityCheckDate: verifyDate,
1130
- verify: function(vfd, depth, chain) {
1131
- ASSERT.equal(vfd, 'forge.pki.CertificateExpired');
1132
- return true;
1133
- }
1134
- });
1135
-
1136
- verifyDate = new Date();
1137
- verifyDate.setFullYear(verifyDate.getFullYear() - 1);
1138
- PKI.verifyCertificateChain(caStore, [cert], {
1139
- validityCheckDate: verifyDate,
1140
- verify: function(vfd, depth, chain) {
1141
- ASSERT.equal(vfd, 'forge.pki.CertificateExpired');
1142
- return true;
1143
- }
1144
- });
1145
- });
1146
-
1147
- it('should not verify the validity period if null is passed as validityCheckDate', function() {
1148
- var keys = {
1149
- privateKey: PKI.privateKeyFromPem(_pem.privateKey),
1150
- publicKey: PKI.publicKeyFromPem(_pem.publicKey)
1151
- };
1152
-
1153
- var attrs = [{
1154
- name: 'commonName',
1155
- value: 'example.org'
1156
- }, {
1157
- name: 'countryName',
1158
- value: 'US'
1159
- }, {
1160
- shortName: 'ST',
1161
- value: 'Virginia'
1162
- }, {
1163
- name: 'localityName',
1164
- value: 'Blacksburg'
1165
- }, {
1166
- name: 'organizationName',
1167
- value: 'Test'
1168
- }, {
1169
- shortName: 'OU',
1170
- value: 'Test'
1171
- }];
1172
-
1173
- var pastDate = new Date();
1174
- pastDate.setFullYear(pastDate.getFullYear() - 1);
1175
-
1176
- var cert = createCertificate({
1177
- publicKey: keys.publicKey,
1178
- signingKey: keys.privateKey,
1179
- extensions: [{
1180
- name: 'authorityKeyIdentifier',
1181
- keyIdentifier: true,
1182
- authorityCertIssuer: true,
1183
- serialNumber: true
1184
- }],
1185
- serialNumber: '01',
1186
- subject: attrs,
1187
- issuer: attrs,
1188
- isCA: true,
1189
- notBefore: pastDate,
1190
- notAfter: pastDate
1191
- });
1192
- var caStore = PKI.createCaStore();
1193
- caStore.addCertificate(cert);
1194
-
1195
- PKI.verifyCertificateChain(caStore, [cert], {
1196
- verify: function(vfd, depth, chain) {
1197
- ASSERT.equal(vfd, 'forge.pki.CertificateExpired');
1198
- return true;
1199
- }
1200
- });
1201
-
1202
- PKI.verifyCertificateChain(caStore, [cert], {
1203
- validityCheckDate: null,
1204
- verify: function(vfd, depth, chain) {
1205
- ASSERT.equal(vfd, true);
1206
- return true;
1207
- }
1208
- });
1209
- });
1210
-
1211
- it('should verify certificate with sha1WithRSAEncryption signature', function() {
1212
- var certPem = '-----BEGIN CERTIFICATE-----\r\n' +
1213
- 'MIIDZDCCAs2gAwIBAgIKQ8fjjgAAAABh3jANBgkqhkiG9w0BAQUFADBGMQswCQYD\r\n' +
1214
- 'VQQGEwJVUzETMBEGA1UEChMKR29vZ2xlIEluYzEiMCAGA1UEAxMZR29vZ2xlIElu\r\n' +
1215
- 'dGVybmV0IEF1dGhvcml0eTAeFw0xMjA2MjcxMzU5MTZaFw0xMzA2MDcxOTQzMjda\r\n' +
1216
- 'MGcxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1N\r\n' +
1217
- 'b3VudGFpbiBWaWV3MRMwEQYDVQQKEwpHb29nbGUgSW5jMRYwFAYDVQQDEw13d3cu\r\n' +
1218
- 'Z29vZ2xlLmRlMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCw2Hw3vNy5QMSd\r\n' +
1219
- '0/iMCS8lwZk9lnEk2NmrJt6vGJfRGlBprtHp5lpMFMoi+x8m8EwGVxXHGp7hLyN/\r\n' +
1220
- 'gXuUjL7/DY9fxxx9l77D+sDZz7jfUfWmhS03Ra1FbT6myF8miVZFChJ8XgWzioJY\r\n' +
1221
- 'gyNdRUC9149yrXdPWrSmSVaT0+tUCwIDAQABo4IBNjCCATIwHQYDVR0lBBYwFAYI\r\n' +
1222
- 'KwYBBQUHAwEGCCsGAQUFBwMCMB0GA1UdDgQWBBTiQGhrO3785rMPIKZ/zQEl5RyS\r\n' +
1223
- '0TAfBgNVHSMEGDAWgBS/wDDr9UMRPme6npH7/Gra42sSJDBbBgNVHR8EVDBSMFCg\r\n' +
1224
- 'TqBMhkpodHRwOi8vd3d3LmdzdGF0aWMuY29tL0dvb2dsZUludGVybmV0QXV0aG9y\r\n' +
1225
- 'aXR5L0dvb2dsZUludGVybmV0QXV0aG9yaXR5LmNybDBmBggrBgEFBQcBAQRaMFgw\r\n' +
1226
- 'VgYIKwYBBQUHMAKGSmh0dHA6Ly93d3cuZ3N0YXRpYy5jb20vR29vZ2xlSW50ZXJu\r\n' +
1227
- 'ZXRBdXRob3JpdHkvR29vZ2xlSW50ZXJuZXRBdXRob3JpdHkuY3J0MAwGA1UdEwEB\r\n' +
1228
- '/wQCMAAwDQYJKoZIhvcNAQEFBQADgYEAVJ0qt/MBvHEPuWHeH51756qy+lBNygLA\r\n' +
1229
- 'Xp5Gq+xHUTOzRty61BR05zv142hYAGWvpvnEOJ/DI7V3QlXK8a6dQ+du97obQJJx\r\n' +
1230
- '7ekqtfxVzmlSb23halYSoXmWgP8Tq0VUDsgsSLE7fS8JuO1soXUVKj1/6w189HL6\r\n' +
1231
- 'LsngXwZSuL0=\r\n' +
1232
- '-----END CERTIFICATE-----\r\n';
1233
- var issuerPem = '-----BEGIN CERTIFICATE-----\r\n' +
1234
- 'MIICsDCCAhmgAwIBAgIDC2dxMA0GCSqGSIb3DQEBBQUAME4xCzAJBgNVBAYTAlVT\r\n' +
1235
- 'MRAwDgYDVQQKEwdFcXVpZmF4MS0wKwYDVQQLEyRFcXVpZmF4IFNlY3VyZSBDZXJ0\r\n' +
1236
- 'aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDkwNjA4MjA0MzI3WhcNMTMwNjA3MTk0MzI3\r\n' +
1237
- 'WjBGMQswCQYDVQQGEwJVUzETMBEGA1UEChMKR29vZ2xlIEluYzEiMCAGA1UEAxMZ\r\n' +
1238
- 'R29vZ2xlIEludGVybmV0IEF1dGhvcml0eTCBnzANBgkqhkiG9w0BAQEFAAOBjQAw\r\n' +
1239
- 'gYkCgYEAye23pIucV+eEPkB9hPSP0XFjU5nneXQUr0SZMyCSjXvlKAy6rWxJfoNf\r\n' +
1240
- 'NFlOCnowzdDXxFdF7dWq1nMmzq0yE7jXDx07393cCDaob1FEm8rWIFJztyaHNWrb\r\n' +
1241
- 'qeXUWaUr/GcZOfqTGBhs3t0lig4zFEfC7wFQeeT9adGnwKziV28CAwEAAaOBozCB\r\n' +
1242
- 'oDAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFL/AMOv1QxE+Z7qekfv8atrjaxIk\r\n' +
1243
- 'MB8GA1UdIwQYMBaAFEjmaPkr0rKV10fYIyAQTzOYkJ/UMBIGA1UdEwEB/wQIMAYB\r\n' +
1244
- 'Af8CAQAwOgYDVR0fBDMwMTAvoC2gK4YpaHR0cDovL2NybC5nZW90cnVzdC5jb20v\r\n' +
1245
- 'Y3Jscy9zZWN1cmVjYS5jcmwwDQYJKoZIhvcNAQEFBQADgYEAuIojxkiWsRF8YHde\r\n' +
1246
- 'BZqrocb6ghwYB8TrgbCoZutJqOkM0ymt9e8kTP3kS8p/XmOrmSfLnzYhLLkQYGfN\r\n' +
1247
- '0rTw8Ktx5YtaiScRhKqOv5nwnQkhClIZmloJ0pC3+gz4fniisIWvXEyZ2VxVKfml\r\n' +
1248
- 'UUIuOss4jHg7y/j7lYe8vJD5UDI=\r\n' +
1249
- '-----END CERTIFICATE-----\r\n';
1250
- var cert = PKI.certificateFromPem(certPem, true);
1251
- var issuer = PKI.certificateFromPem(issuerPem);
1252
- ASSERT.ok(issuer.verify(cert));
1253
- });
1254
-
1255
- it('should calculate a certificate subject and issuer hash', function() {
1256
- var certPem = '-----BEGIN CERTIFICATE-----\r\n' +
1257
- 'MIIDZDCCAs2gAwIBAgIKQ8fjjgAAAABh3jANBgkqhkiG9w0BAQUFADBGMQswCQYD\r\n' +
1258
- 'VQQGEwJVUzETMBEGA1UEChMKR29vZ2xlIEluYzEiMCAGA1UEAxMZR29vZ2xlIElu\r\n' +
1259
- 'dGVybmV0IEF1dGhvcml0eTAeFw0xMjA2MjcxMzU5MTZaFw0xMzA2MDcxOTQzMjda\r\n' +
1260
- 'MGcxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1N\r\n' +
1261
- 'b3VudGFpbiBWaWV3MRMwEQYDVQQKEwpHb29nbGUgSW5jMRYwFAYDVQQDEw13d3cu\r\n' +
1262
- 'Z29vZ2xlLmRlMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCw2Hw3vNy5QMSd\r\n' +
1263
- '0/iMCS8lwZk9lnEk2NmrJt6vGJfRGlBprtHp5lpMFMoi+x8m8EwGVxXHGp7hLyN/\r\n' +
1264
- 'gXuUjL7/DY9fxxx9l77D+sDZz7jfUfWmhS03Ra1FbT6myF8miVZFChJ8XgWzioJY\r\n' +
1265
- 'gyNdRUC9149yrXdPWrSmSVaT0+tUCwIDAQABo4IBNjCCATIwHQYDVR0lBBYwFAYI\r\n' +
1266
- 'KwYBBQUHAwEGCCsGAQUFBwMCMB0GA1UdDgQWBBTiQGhrO3785rMPIKZ/zQEl5RyS\r\n' +
1267
- '0TAfBgNVHSMEGDAWgBS/wDDr9UMRPme6npH7/Gra42sSJDBbBgNVHR8EVDBSMFCg\r\n' +
1268
- 'TqBMhkpodHRwOi8vd3d3LmdzdGF0aWMuY29tL0dvb2dsZUludGVybmV0QXV0aG9y\r\n' +
1269
- 'aXR5L0dvb2dsZUludGVybmV0QXV0aG9yaXR5LmNybDBmBggrBgEFBQcBAQRaMFgw\r\n' +
1270
- 'VgYIKwYBBQUHMAKGSmh0dHA6Ly93d3cuZ3N0YXRpYy5jb20vR29vZ2xlSW50ZXJu\r\n' +
1271
- 'ZXRBdXRob3JpdHkvR29vZ2xlSW50ZXJuZXRBdXRob3JpdHkuY3J0MAwGA1UdEwEB\r\n' +
1272
- '/wQCMAAwDQYJKoZIhvcNAQEFBQADgYEAVJ0qt/MBvHEPuWHeH51756qy+lBNygLA\r\n' +
1273
- 'Xp5Gq+xHUTOzRty61BR05zv142hYAGWvpvnEOJ/DI7V3QlXK8a6dQ+du97obQJJx\r\n' +
1274
- '7ekqtfxVzmlSb23halYSoXmWgP8Tq0VUDsgsSLE7fS8JuO1soXUVKj1/6w189HL6\r\n' +
1275
- 'LsngXwZSuL0=\r\n' +
1276
- '-----END CERTIFICATE-----\r\n';
1277
- var issuerPem = '-----BEGIN CERTIFICATE-----\r\n' +
1278
- 'MIICsDCCAhmgAwIBAgIDC2dxMA0GCSqGSIb3DQEBBQUAME4xCzAJBgNVBAYTAlVT\r\n' +
1279
- 'MRAwDgYDVQQKEwdFcXVpZmF4MS0wKwYDVQQLEyRFcXVpZmF4IFNlY3VyZSBDZXJ0\r\n' +
1280
- 'aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDkwNjA4MjA0MzI3WhcNMTMwNjA3MTk0MzI3\r\n' +
1281
- 'WjBGMQswCQYDVQQGEwJVUzETMBEGA1UEChMKR29vZ2xlIEluYzEiMCAGA1UEAxMZ\r\n' +
1282
- 'R29vZ2xlIEludGVybmV0IEF1dGhvcml0eTCBnzANBgkqhkiG9w0BAQEFAAOBjQAw\r\n' +
1283
- 'gYkCgYEAye23pIucV+eEPkB9hPSP0XFjU5nneXQUr0SZMyCSjXvlKAy6rWxJfoNf\r\n' +
1284
- 'NFlOCnowzdDXxFdF7dWq1nMmzq0yE7jXDx07393cCDaob1FEm8rWIFJztyaHNWrb\r\n' +
1285
- 'qeXUWaUr/GcZOfqTGBhs3t0lig4zFEfC7wFQeeT9adGnwKziV28CAwEAAaOBozCB\r\n' +
1286
- 'oDAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFL/AMOv1QxE+Z7qekfv8atrjaxIk\r\n' +
1287
- 'MB8GA1UdIwQYMBaAFEjmaPkr0rKV10fYIyAQTzOYkJ/UMBIGA1UdEwEB/wQIMAYB\r\n' +
1288
- 'Af8CAQAwOgYDVR0fBDMwMTAvoC2gK4YpaHR0cDovL2NybC5nZW90cnVzdC5jb20v\r\n' +
1289
- 'Y3Jscy9zZWN1cmVjYS5jcmwwDQYJKoZIhvcNAQEFBQADgYEAuIojxkiWsRF8YHde\r\n' +
1290
- 'BZqrocb6ghwYB8TrgbCoZutJqOkM0ymt9e8kTP3kS8p/XmOrmSfLnzYhLLkQYGfN\r\n' +
1291
- '0rTw8Ktx5YtaiScRhKqOv5nwnQkhClIZmloJ0pC3+gz4fniisIWvXEyZ2VxVKfml\r\n' +
1292
- 'UUIuOss4jHg7y/j7lYe8vJD5UDI=\r\n' +
1293
- '-----END CERTIFICATE-----\r\n';
1294
- var cert = PKI.certificateFromPem(certPem, true);
1295
- var issuer = PKI.certificateFromPem(issuerPem);
1296
- ASSERT.strictEqual(issuer.subject.hash, 'd43b6713ab1a8679f0b70e169e9df889ed387a4b');
1297
- ASSERT.strictEqual(cert.subject.hash, 'fd90a93e35c96cd6959f45ec60ca76faa4ce8926');
1298
- ASSERT.strictEqual(cert.issuer.hash, 'd43b6713ab1a8679f0b70e169e9df889ed387a4b');
1299
- });
1300
-
1301
- it('should verify certificate with sha1WithRSASignature signature', function() {
1302
- var certPem = '-----BEGIN CERTIFICATE-----\r\n' +
1303
- 'MIIBwjCCAS+gAwIBAgIQj2d4hVEz0L1DYFVhA9CxCzAJBgUrDgMCHQUAMA8xDTAL\r\n' +
1304
- 'BgNVBAMTBFZQUzEwHhcNMDcwODE4MDkyODUzWhcNMDgwODE3MDkyODUzWjAPMQ0w\r\n' +
1305
- 'CwYDVQQDEwRWUFMxMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDaqKn40uaU\r\n' +
1306
- 'DbFL1NXXZ8/b4ZqDJ6eSI5lysMZHfZDs60G3ocbNKofBvURIutabrFuBCB2S5f/z\r\n' +
1307
- 'ICan0LR4uFpGuZ2I/PuVaU8X5fT8gBh7L636cWzHPPScYts00OyywEq381UB7XwX\r\n' +
1308
- 'YuWpM5kUW5rkbq1JV3ystTR/4YnLl48YtQIDAQABoycwJTATBgNVHSUEDDAKBggr\r\n' +
1309
- 'BgEFBQcDATAOBgNVHQ8EBwMFALAAAAAwCQYFKw4DAh0FAAOBgQBuUrU+J2Z5WKcO\r\n' +
1310
- 'VNjJHFUKo8qpbn8jKQZDl2nvVaXCTXQZblz/qxOm4FaGGzJ/m3GybVZNVfdyHg+U\r\n' +
1311
- 'lmDpFpOITkvcyNc3xjJCf2GVBo/VvdtVt7Myq0IQtAi/CXRK22BRNhSt9uu2EcRu\r\n' +
1312
- 'HIXdFWHEzi6eD4PpNw/0X3ID6Gxk4A==\r\n' +
1313
- '-----END CERTIFICATE-----\r\n';
1314
- var cert = PKI.certificateFromPem(certPem, true);
1315
- ASSERT.equal(cert.signatureOid, PKI.oids['sha1WithRSASignature']);
1316
- ASSERT.equal(cert.md.algorithm, 'sha1');
1317
- });
1318
-
1319
- it('should verify certificate with sha256WithRSAEncryption signature', function() {
1320
- var certPem = '-----BEGIN CERTIFICATE-----\r\n' +
1321
- 'MIIDuzCCAqOgAwIBAgIEO5vZjDANBgkqhkiG9w0BAQsFADBGMQswCQYDVQQGEwJE\r\n' +
1322
- 'RTEPMA0GA1UEChMGRWxzdGVyMQswCQYDVQQLEwJDQTEZMBcGA1UEAxMQRWxzdGVy\r\n' +
1323
- 'U29mdFRlc3RDQTAeFw0xMDA5MTUwNTM4MjRaFw0xMzA5MTUwNTM4MjRaMCsxFDAS\r\n' +
1324
- 'BgNVBAUTCzEwMDIzMTQ5OTRDMRMwEQYDVQQDEwoxMDAyMzE0OTk0MIGfMA0GCSqG\r\n' +
1325
- 'SIb3DQEBAQUAA4GNADCBiQKBgQCLPqjbwjsugzw6+qwwm/pdzDwk7ASIsBYJ17GT\r\n' +
1326
- 'qyT0zCnYmdDDGWsYc+xxFVVIi8xBt6Mlq8Rwj+02UJhY9qm6zRA9MqFZC3ih+HoW\r\n' +
1327
- 'xq7H8N2d10N0rX6h5PSjkF5fU5ugncZmppsRGJ9DNXgwjpf/CsH2rqThUzK4xfrq\r\n' +
1328
- 'jpDS/wIDAQABo4IBTjCCAUowDgYDVR0PAQH/BAQDAgUgMAwGA1UdEwEB/wQCMAAw\r\n' +
1329
- 'HQYDVR0OBBYEFF1h7H37OQivS57GD8+nK6VsgMPTMIGXBgNVHR8EgY8wgYwwgYmg\r\n' +
1330
- 'gYaggYOGgYBsZGFwOi8vMTkyLjE2OC42LjI0OjM4OS9sJTNkQ0ElMjBaZXJ0aWZp\r\n' +
1331
- 'a2F0ZSxvdSUzZENBLGNuJTNkRWxzdGVyU29mdFRlc3RDQSxkYyUzZHdpZXNlbCxk\r\n' +
1332
- 'YyUzZGVsc3RlcixkYyUzZGRlPz9iYXNlPyhvYmplY3RDbGFzcz0qKTBxBgNVHSME\r\n' +
1333
- 'ajBogBRBILMYmlZu//pj3wjDe2UPkq7jk6FKpEgwRjELMAkGA1UEBhMCREUxDzAN\r\n' +
1334
- 'BgNVBAoTBkVsc3RlcjEPMA0GA1UECxMGUm9vdENBMRUwEwYDVQQDEwxFbHN0ZXJS\r\n' +
1335
- 'b290Q0GCBDuayikwDQYJKoZIhvcNAQELBQADggEBAK8Z1+/VNyU5w/EiyhFH5aRE\r\n' +
1336
- 'Mzxo0DahqKEm4pW5haBgKubJwZGs+CrBZR70TPbZGgJd36eyMgeXb/06lBnxewii\r\n' +
1337
- 'I/aY6wMTviQTpqFnz5m0Le8UhH+hY1bqNG/vf6J+1gbOSrZyhAUV+MDJbL/OkzX4\r\n' +
1338
- 'voVAfUBqSODod0f5wCW2RhvBmB9E62baP6qizdxyPA4iV16H4C0etd/7coLX6NZC\r\n' +
1339
- 'oz3Yu0IRTQCH+YrpfIbxGb0grNhtCTfFpa287fuzu8mIEvLNr8GibhBXmQg7iJ+y\r\n' +
1340
- 'q0VIyZLY8k6jEPrUB5Iv5ouSR19Dda/2+xJPlT/bosuNcErEuk/yKAHWAzwm1wQ=\r\n' +
1341
- '-----END CERTIFICATE-----\r\n';
1342
- var issuerPem = '-----BEGIN CERTIFICATE-----\r\n' +
1343
- 'MIIESjCCAzKgAwIBAgIEO5rKKTANBgkqhkiG9w0BAQsFADBGMQswCQYDVQQGEwJE\r\n' +
1344
- 'RTEPMA0GA1UEChMGRWxzdGVyMQ8wDQYDVQQLEwZSb290Q0ExFTATBgNVBAMTDEVs\r\n' +
1345
- 'c3RlclJvb3RDQTAeFw0wOTA3MjgwODE5MTFaFw0xNDA3MjgwODE5MTFaMEYxCzAJ\r\n' +
1346
- 'BgNVBAYTAkRFMQ8wDQYDVQQKEwZFbHN0ZXIxCzAJBgNVBAsTAkNBMRkwFwYDVQQD\r\n' +
1347
- 'ExBFbHN0ZXJTb2Z0VGVzdENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC\r\n' +
1348
- 'AQEAv5uoKLnxXQe75iqwqgyt3H6MDAx/wvUVs26+2+yHpEUb/2gA3L8E+NChSb9E\r\n' +
1349
- 'aNgxxoac3Yhvxzq2mPpih3vkY7Xw512Tm8l/OPbT8kbmBJmYZneFALXHytAIZiEf\r\n' +
1350
- 'e0ZYNKAlClFIgNP5bE9UjTqVEEoSiUhpTubM6c5xEYVznnwPBoYQ0ari7RTDYnME\r\n' +
1351
- 'HK4vMfoeBeWHYPiEygNHnGUG8d3merRC/lQASUtL6ikmLWKCKHfyit5ACzPNKAtw\r\n' +
1352
- 'IzHAzD5ek0BpcUTci8hUsKz2ZvmoZcjPyj63veQuMYS5cTMgr3bfz9uz1xuoEDsb\r\n' +
1353
- 'Sv9rQX9Iw3N7yMpxTDJTqGKhYwIDAQABo4IBPjCCATowDgYDVR0PAQH/BAQDAgEG\r\n' +
1354
- 'MBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFEEgsxiaVm7/+mPfCMN7ZQ+S\r\n' +
1355
- 'ruOTMIGXBgNVHR8EgY8wgYwwgYmggYaggYOGgYBsZGFwOi8vMTkyLjE2OC42LjI0\r\n' +
1356
- 'OjM4OS9sJTNkQ0ElMjBaZXJ0aWZpa2F0ZSxvdSUzZFJvb3RDQSxjbiUzZEVsc3Rl\r\n' +
1357
- 'clJvb3RDQSxkYyUzZHdpZXNlbCxkYyUzZGVsc3RlcixkYyUzZGRlPz9iYXNlPyhv\r\n' +
1358
- 'YmplY3RDbGFzcz0qKTBbBgNVHSMEVDBSoUqkSDBGMQswCQYDVQQGEwJERTEPMA0G\r\n' +
1359
- 'A1UEChMGRWxzdGVyMQ8wDQYDVQQLEwZSb290Q0ExFTATBgNVBAMTDEVsc3RlclJv\r\n' +
1360
- 'b3RDQYIEO5rKADANBgkqhkiG9w0BAQsFAAOCAQEAFauDnfHSbgRmbFkpQUXM5wKi\r\n' +
1361
- 'K5STAaVps201iAjacX5EsOs5L37VUMoT9G2DAE8Z6B1pIiR3zcd3UpiHnFlUTC0f\r\n' +
1362
- 'ZdOCXzDkOfziKY/RzuUsLNFUhBizCIA0+XcKgm3dSA5ex8fChLJddSYheSLuPua7\r\n' +
1363
- 'iNMuzaU2YnevbMwpdEsl55Qr/uzcc0YM/mCuM4vsNFyFml91SQyPPmdR3VvGOoGl\r\n' +
1364
- 'qS1R0HSoPJUvr0N0kARwD7kO3ikcJ6FxBCsgVLZHGJC+q8PQNZmVMbfgjH4nAyP8\r\n' +
1365
- 'u7Qe03v2WLW0UgKu2g0UcQXWXbovktpZoK0fUOwv3bqsZ0K1IjVvMKG8OysUvA==\r\n' +
1366
- '-----END CERTIFICATE-----\r\n';
1367
- var cert = PKI.certificateFromPem(certPem, true);
1368
- var issuer = PKI.certificateFromPem(issuerPem);
1369
- ASSERT.ok(issuer.verify(cert));
1370
- });
1371
-
1372
- it('should import certificate with sha256 RSASSA-PSS signature', function() {
1373
- var certPem = '-----BEGIN CERTIFICATE-----\r\n' +
1374
- 'MIIERzCCAvugAwIBAgIEO50CcjBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQC\r\n' +
1375
- 'AQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASAwRjELMAkGA1UE\r\n' +
1376
- 'BhMCREUxDzANBgNVBAoTBkVsc3RlcjELMAkGA1UECxMCQ0ExGTAXBgNVBAMTEEVs\r\n' +
1377
- 'c3RlclNvZnRUZXN0Q0EwHhcNMTEwNzI4MTIxMzU3WhcNMTQwNzI4MTIxMzU3WjAr\r\n' +
1378
- 'MRQwEgYDVQQFEwsxMDAyNzUzMzI1QzETMBEGA1UEAxMKMTAwMjc1MzMyNTCCASIw\r\n' +
1379
- 'DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALHCogo7LVUkxWsMIc/0jgH2PCLt\r\n' +
1380
- 'ukbATPehxWBG1XUPrz53lWgFJzlZaKLlLVVnXrfULaifuOKlZP6SM1JQlL1JuYgY\r\n' +
1381
- 'AdgZyHjderNIk5NsSTmefwonSn/ukri5IRTH420oHtSjxk6+/DXlWnQy5OzTN6Bq\r\n' +
1382
- 'jVJo8L+TTmf2jWuEam5cWa+YVP2k3tIqX5yMUDFjKO4znHdtIkHnBE0Kx03rWQRB\r\n' +
1383
- 'TSYWDgDm2gttdOs9JVeuW0nnwQj27uo9gOR0iyaUjVrKLZ95p6zpXhM4uMSVRNeo\r\n' +
1384
- 'LqkdqP2n+4pDXZVqLNgjkHQUS/xq9Q/kYgT2J7wkGfYxP9to7TG7vra1eOECAwEA\r\n' +
1385
- 'AaOB7zCB7DAOBgNVHQ8BAf8EBAMCBSAwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQU\r\n' +
1386
- 'NDJ2BZIk6ukLqkdmttH12bu2leswOgYDVR0fBDMwMTAvoC2gK4YpaHR0cDovL2Ny\r\n' +
1387
- 'bC5lbHN0ZXIuZGUvRWxzdGVyU29mdFRlc3RDQS5jcmwwcQYDVR0jBGowaIAU1R9A\r\n' +
1388
- 'HmpdzaxK3v+ihQsEpAFgzOKhSqRIMEYxCzAJBgNVBAYTAkRFMQ8wDQYDVQQKEwZF\r\n' +
1389
- 'bHN0ZXIxDzANBgNVBAsTBlJvb3RDQTEVMBMGA1UEAxMMRWxzdGVyUm9vdENBggQ7\r\n' +
1390
- 'msqPMEEGCSqGSIb3DQEBCjA0oA8wDQYJYIZIAWUDBAIBBQChHDAaBgkqhkiG9w0B\r\n' +
1391
- 'AQgwDQYJYIZIAWUDBAIBBQCiAwIBIAOCAQEAJBYNRZpe+z3yPPLV539Yci6OfjVg\r\n' +
1392
- 'vs1e3rvSvcpFaqRJ8vZ8WNx3uuRQZ6B4Z3YEc00UJAOl3wU6KhamyryK2YvCrPg+\r\n' +
1393
- 'TS5QDXNaO2z/rAnY1wWSlwBPlhqpMRrNv9cRXBcgK5YxprjytCVYN0UHdintgYxG\r\n' +
1394
- 'fg7QYiFb00UXxAza1AFrpG+RqySFfO1scmu4kgpeb6A3USnQ0r6rZz6dt6NqgZZ6\r\n' +
1395
- 'oUpDOCvnS9XSOWuvJirV8hIU0KAagguTbwfTqt9nt0wDlwZpemsJZ4Vvnvy8d9Jf\r\n' +
1396
- 'zA68EWHbZLr2QP9hb3sHCWJgplMsTJnUwRfi2hf5KNtP8Xg5DSLMfTEbhw==\r\n' +
1397
- '-----END CERTIFICATE-----\r\n';
1398
- var cert = PKI.certificateFromPem(certPem, true);
1399
-
1400
- ASSERT.equal(cert.signatureOid, PKI.oids['RSASSA-PSS']);
1401
- ASSERT.equal(cert.signatureParameters.hash.algorithmOid, PKI.oids['sha256']);
1402
- ASSERT.equal(cert.signatureParameters.mgf.algorithmOid, PKI.oids['mgf1']);
1403
- ASSERT.equal(cert.signatureParameters.mgf.hash.algorithmOid, PKI.oids['sha256']);
1404
- ASSERT.equal(cert.siginfo.algorithmOid, PKI.oids['RSASSA-PSS']);
1405
- ASSERT.equal(cert.siginfo.parameters.hash.algorithmOid, PKI.oids['sha256']);
1406
- ASSERT.equal(cert.siginfo.parameters.mgf.algorithmOid, PKI.oids['mgf1']);
1407
- ASSERT.equal(cert.siginfo.parameters.mgf.hash.algorithmOid, PKI.oids['sha256']);
1408
- });
1409
-
1410
- it('should export certificate with sha256 RSASSA-PSS signature', function() {
1411
- var certPem = '-----BEGIN CERTIFICATE-----\r\n' +
1412
- 'MIIERzCCAvugAwIBAgIEO50CcjBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQC\r\n' +
1413
- 'AQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASAwRjELMAkGA1UE\r\n' +
1414
- 'BhMCREUxDzANBgNVBAoTBkVsc3RlcjELMAkGA1UECxMCQ0ExGTAXBgNVBAMTEEVs\r\n' +
1415
- 'c3RlclNvZnRUZXN0Q0EwHhcNMTEwNzI4MTIxMzU3WhcNMTQwNzI4MTIxMzU3WjAr\r\n' +
1416
- 'MRQwEgYDVQQFEwsxMDAyNzUzMzI1QzETMBEGA1UEAxMKMTAwMjc1MzMyNTCCASIw\r\n' +
1417
- 'DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALHCogo7LVUkxWsMIc/0jgH2PCLt\r\n' +
1418
- 'ukbATPehxWBG1XUPrz53lWgFJzlZaKLlLVVnXrfULaifuOKlZP6SM1JQlL1JuYgY\r\n' +
1419
- 'AdgZyHjderNIk5NsSTmefwonSn/ukri5IRTH420oHtSjxk6+/DXlWnQy5OzTN6Bq\r\n' +
1420
- 'jVJo8L+TTmf2jWuEam5cWa+YVP2k3tIqX5yMUDFjKO4znHdtIkHnBE0Kx03rWQRB\r\n' +
1421
- 'TSYWDgDm2gttdOs9JVeuW0nnwQj27uo9gOR0iyaUjVrKLZ95p6zpXhM4uMSVRNeo\r\n' +
1422
- 'LqkdqP2n+4pDXZVqLNgjkHQUS/xq9Q/kYgT2J7wkGfYxP9to7TG7vra1eOECAwEA\r\n' +
1423
- 'AaOB7zCB7DAOBgNVHQ8BAf8EBAMCBSAwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQU\r\n' +
1424
- 'NDJ2BZIk6ukLqkdmttH12bu2leswOgYDVR0fBDMwMTAvoC2gK4YpaHR0cDovL2Ny\r\n' +
1425
- 'bC5lbHN0ZXIuZGUvRWxzdGVyU29mdFRlc3RDQS5jcmwwcQYDVR0jBGowaIAU1R9A\r\n' +
1426
- 'HmpdzaxK3v+ihQsEpAFgzOKhSqRIMEYxCzAJBgNVBAYTAkRFMQ8wDQYDVQQKEwZF\r\n' +
1427
- 'bHN0ZXIxDzANBgNVBAsTBlJvb3RDQTEVMBMGA1UEAxMMRWxzdGVyUm9vdENBggQ7\r\n' +
1428
- 'msqPMEEGCSqGSIb3DQEBCjA0oA8wDQYJYIZIAWUDBAIBBQChHDAaBgkqhkiG9w0B\r\n' +
1429
- 'AQgwDQYJYIZIAWUDBAIBBQCiAwIBIAOCAQEAJBYNRZpe+z3yPPLV539Yci6OfjVg\r\n' +
1430
- 'vs1e3rvSvcpFaqRJ8vZ8WNx3uuRQZ6B4Z3YEc00UJAOl3wU6KhamyryK2YvCrPg+\r\n' +
1431
- 'TS5QDXNaO2z/rAnY1wWSlwBPlhqpMRrNv9cRXBcgK5YxprjytCVYN0UHdintgYxG\r\n' +
1432
- 'fg7QYiFb00UXxAza1AFrpG+RqySFfO1scmu4kgpeb6A3USnQ0r6rZz6dt6NqgZZ6\r\n' +
1433
- 'oUpDOCvnS9XSOWuvJirV8hIU0KAagguTbwfTqt9nt0wDlwZpemsJZ4Vvnvy8d9Jf\r\n' +
1434
- 'zA68EWHbZLr2QP9hb3sHCWJgplMsTJnUwRfi2hf5KNtP8Xg5DSLMfTEbhw==\r\n' +
1435
- '-----END CERTIFICATE-----\r\n';
1436
- var cert = PKI.certificateFromPem(certPem, true);
1437
- ASSERT.equal(PKI.certificateToPem(cert), certPem);
1438
- });
1439
-
1440
- it('should verify certificate with sha256 RSASSA-PSS signature', function() {
1441
- var certPem = '-----BEGIN CERTIFICATE-----\r\n' +
1442
- 'MIIERzCCAvugAwIBAgIEO50CcjBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQC\r\n' +
1443
- 'AQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASAwRjELMAkGA1UE\r\n' +
1444
- 'BhMCREUxDzANBgNVBAoTBkVsc3RlcjELMAkGA1UECxMCQ0ExGTAXBgNVBAMTEEVs\r\n' +
1445
- 'c3RlclNvZnRUZXN0Q0EwHhcNMTEwNzI4MTIxMzU3WhcNMTQwNzI4MTIxMzU3WjAr\r\n' +
1446
- 'MRQwEgYDVQQFEwsxMDAyNzUzMzI1QzETMBEGA1UEAxMKMTAwMjc1MzMyNTCCASIw\r\n' +
1447
- 'DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALHCogo7LVUkxWsMIc/0jgH2PCLt\r\n' +
1448
- 'ukbATPehxWBG1XUPrz53lWgFJzlZaKLlLVVnXrfULaifuOKlZP6SM1JQlL1JuYgY\r\n' +
1449
- 'AdgZyHjderNIk5NsSTmefwonSn/ukri5IRTH420oHtSjxk6+/DXlWnQy5OzTN6Bq\r\n' +
1450
- 'jVJo8L+TTmf2jWuEam5cWa+YVP2k3tIqX5yMUDFjKO4znHdtIkHnBE0Kx03rWQRB\r\n' +
1451
- 'TSYWDgDm2gttdOs9JVeuW0nnwQj27uo9gOR0iyaUjVrKLZ95p6zpXhM4uMSVRNeo\r\n' +
1452
- 'LqkdqP2n+4pDXZVqLNgjkHQUS/xq9Q/kYgT2J7wkGfYxP9to7TG7vra1eOECAwEA\r\n' +
1453
- 'AaOB7zCB7DAOBgNVHQ8BAf8EBAMCBSAwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQU\r\n' +
1454
- 'NDJ2BZIk6ukLqkdmttH12bu2leswOgYDVR0fBDMwMTAvoC2gK4YpaHR0cDovL2Ny\r\n' +
1455
- 'bC5lbHN0ZXIuZGUvRWxzdGVyU29mdFRlc3RDQS5jcmwwcQYDVR0jBGowaIAU1R9A\r\n' +
1456
- 'HmpdzaxK3v+ihQsEpAFgzOKhSqRIMEYxCzAJBgNVBAYTAkRFMQ8wDQYDVQQKEwZF\r\n' +
1457
- 'bHN0ZXIxDzANBgNVBAsTBlJvb3RDQTEVMBMGA1UEAxMMRWxzdGVyUm9vdENBggQ7\r\n' +
1458
- 'msqPMEEGCSqGSIb3DQEBCjA0oA8wDQYJYIZIAWUDBAIBBQChHDAaBgkqhkiG9w0B\r\n' +
1459
- 'AQgwDQYJYIZIAWUDBAIBBQCiAwIBIAOCAQEAJBYNRZpe+z3yPPLV539Yci6OfjVg\r\n' +
1460
- 'vs1e3rvSvcpFaqRJ8vZ8WNx3uuRQZ6B4Z3YEc00UJAOl3wU6KhamyryK2YvCrPg+\r\n' +
1461
- 'TS5QDXNaO2z/rAnY1wWSlwBPlhqpMRrNv9cRXBcgK5YxprjytCVYN0UHdintgYxG\r\n' +
1462
- 'fg7QYiFb00UXxAza1AFrpG+RqySFfO1scmu4kgpeb6A3USnQ0r6rZz6dt6NqgZZ6\r\n' +
1463
- 'oUpDOCvnS9XSOWuvJirV8hIU0KAagguTbwfTqt9nt0wDlwZpemsJZ4Vvnvy8d9Jf\r\n' +
1464
- 'zA68EWHbZLr2QP9hb3sHCWJgplMsTJnUwRfi2hf5KNtP8Xg5DSLMfTEbhw==\r\n' +
1465
- '-----END CERTIFICATE-----\r\n';
1466
- var issuerPem = '-----BEGIN CERTIFICATE-----\r\n' +
1467
- 'MIIEZDCCAxigAwIBAgIEO5rKjzBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQC\r\n' +
1468
- 'AQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASAwRjELMAkGA1UE\r\n' +
1469
- 'BhMCREUxDzANBgNVBAoTBkVsc3RlcjEPMA0GA1UECxMGUm9vdENBMRUwEwYDVQQD\r\n' +
1470
- 'EwxFbHN0ZXJSb290Q0EwHhcNMTEwNzI4MTExNzI4WhcNMTYwNzI4MTExNzI4WjBG\r\n' +
1471
- 'MQswCQYDVQQGEwJERTEPMA0GA1UEChMGRWxzdGVyMQswCQYDVQQLEwJDQTEZMBcG\r\n' +
1472
- 'A1UEAxMQRWxzdGVyU29mdFRlc3RDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC\r\n' +
1473
- 'AQoCggEBAMFpz3sXnXq4ZUBdYdpG5DJVfITLXYwXPfEJzr1pLRfJ2eMPn7k3B/2g\r\n' +
1474
- 'bvuH30zKmDRjlfV51sFw4l1l+cQugzy5FEOrfE6g7IvhpBUf9SQujVWtE3BoSRR5\r\n' +
1475
- 'pSGbIWC7sm2SG0drpoCRpL0xmWZlAUS5mz7hBecJC/kKkKeOxUg5h492XQgWd0ow\r\n' +
1476
- '6GlyQBxJCmxgQBMnLS0stecs234hR5gvTHic50Ey+gRMPsTyco2Fm0FqvXtBuOsj\r\n' +
1477
- 'zAW7Nk2hnM6awFHVMDBLm+ClE1ww0dLW0ujkdoGsTEbvmM/w8MBI6WAiWaanjK/x\r\n' +
1478
- 'lStmQeUVXKd+AfuzT/FIPrwANcC1qGUCAwEAAaOB8TCB7jAOBgNVHQ8BAf8EBAMC\r\n' +
1479
- 'AQYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQU1R9AHmpdzaxK3v+ihQsE\r\n' +
1480
- 'pAFgzOIwNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5lbHN0ZXIuZGUvRWxz\r\n' +
1481
- 'dGVyUm9vdENBLmNybDBxBgNVHSMEajBogBS3zfTokckL2H/fTojW02K+metEcaFK\r\n' +
1482
- 'pEgwRjELMAkGA1UEBhMCREUxDzANBgNVBAoTBkVsc3RlcjEPMA0GA1UECxMGUm9v\r\n' +
1483
- 'dENBMRUwEwYDVQQDEwxFbHN0ZXJSb290Q0GCBDuaylowQQYJKoZIhvcNAQEKMDSg\r\n' +
1484
- 'DzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKID\r\n' +
1485
- 'AgEgA4IBAQBjT107fBmSfQNUYCpXIlaS/pogPoCahuC1g8QDtq6IEVXoEgXCzfVN\r\n' +
1486
- 'JYHyYOQOraP4O2LEcXpo/oc0MMpVF06QLKG/KieUE0mrZnsCJ3GLSJkM8tI8bRHj\r\n' +
1487
- '8tAhlViMacUqnKKufCs/rIN25JB57+sCyFqjtRbSt88e+xqFJ5I79Btp/bNtoj2G\r\n' +
1488
- 'OJGl997EPua9/yJuvdA9W67WO/KwEh+FqylB1pAapccOHqttwu4QJIc/XJfG5rrf\r\n' +
1489
- '8QZz8HIuOcroA4zIrprQ1nJRCuMII04ueDtBVz1eIEmqNEUkr09JdK8M0LKH0lMK\r\n' +
1490
- 'Ysgjai/P2mPVVwhVw6dHzUVRLXh3xIQr\r\n' +
1491
- '-----END CERTIFICATE-----\r\n';
1492
- var cert = PKI.certificateFromPem(certPem, true);
1493
- var issuer = PKI.certificateFromPem(issuerPem);
1494
- ASSERT.ok(issuer.verify(cert));
1495
- });
1496
-
1497
- it('should parse certificate with ASN.1 signature data', function() {
1498
- // signature has bytes that could look like ASN.1 data
1499
- // TODO: add more similar tests with possible ASN.1 data in BIT
1500
- // .. STRINGS that are just data.
1501
- var certPem =
1502
- '-----BEGIN CERTIFICATE-----\r\n' +
1503
- 'MIIDsjCCApqgAwIBAgIUR+JnrOX42d+AXaXwLDWYsxmr+DwwDQYJKoZIhvcNAQEL\r\n' +
1504
- 'BQAwgYgxJjAkBgNVBAMMHVRlc3QgSW50ZXJtZWRpYXRlIENlcnRpZmljYXRlMSEw\r\n' +
1505
- 'HwYDVQQLDBhUZXN0IE9yZ2FuaXphdGlvbmFsIFVuaXQxGjAYBgNVBAoMEVRlc3Qg\r\n' +
1506
- 'T3JnYW5pemF0aW9uMRIwEAYDVQQHDAlUZXN0IENpdHkxCzAJBgNVBAYTAlVTMB4X\r\n' +
1507
- 'DTE3MDEzMDE1NTk0MloXDTIyMDEzMDE1NTk0MlowezEZMBcGA1UEAwwQVGVzdCBD\r\n' +
1508
- 'ZXJ0aWZpY2F0ZTEhMB8GA1UECwwYVGVzdCBPcmdhbml6YXRpb25hbCBVbml0MRow\r\n' +
1509
- 'GAYDVQQKDBFUZXN0IE9yZ2FuaXphdGlvbjESMBAGA1UEBwwJVGVzdCBDaXR5MQsw\r\n' +
1510
- 'CQYDVQQGEwJVUzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMEBoBE9\r\n' +
1511
- 'Kprzj7LRbK0JHKSNI93eKFDgkRc1lQWVf2cVyU6bncBDdxrCFLG6vadpQzPQDCJs\r\n' +
1512
- 'ePlzM4J2TueTtbNTgLj3EBwwB1Ju9kOidxn5hCASWR0EObLiHSq3zlM/ABZOEOtz\r\n' +
1513
- 'hPTGWnp7jfoDeTgK/zNnCsqdT1w1nzsz1u8zZ+96dEul6RC313CxV5Xq+Qacky8f\r\n' +
1514
- '2tug0wgvmcYqfd6AIg0btIjhREsulJK0QqSjqmzkLiDBJRsOHzi9zAusYBkvqUMj\r\n' +
1515
- '9ae2j4adIHKNzzgRAif8Bu9yXZ0iK3im6BQhBiC+unwMRAjbHdPI73ASJFdqjHb0\r\n' +
1516
- 'uAkno0WIORHnQvECAwEAAaMgMB4wDgYDVR0PAQH/BAQDAgbAMAwGA1UdEwEB/wQC\r\n' +
1517
- 'MAAwDQYJKoZIhvcNAQELBQADggEBACsFnYH7ByzOFQo5zdOJp4NcmV6yDaTgJoEg\r\n' +
1518
- '71oPI0bgRkpde2rJT7E41fxxajIGbGgVnvIT2yo2QZNRTJjrnzIoVAfOsgWSp8jf\r\n' +
1519
- 'L6HjyZwK5L6ziBfPYnCAzRC4mwjgR2EkEhbA/HDZCko5CfRR8WIKVmtGweIL/5I+\r\n' +
1520
- '9aUG7lUKbf3aGLnBMG6YzThNnMW1a4EZt7EZUlz4mZ3C7KH1lqdmeaZT+BdnZFL2\r\n' +
1521
- 'Mjf0zXRaL1k1BpBrzPfmfWfE+gx7EAWF6E/iDu+g1PhX678vFEJiAQkINVwkjA1d\r\n' +
1522
- '/fpSWNjJEEVPrhWwmoK5+xfM5qC9una9BfFwaUOdYDH59BN6jHE=\r\n' +
1523
- '-----END CERTIFICATE-----\r\n';
1524
- // round trip pem -> cert -> asn1 -> der -> asn1 -> cert -> pem
1525
- var inCert = PKI.certificateFromPem(certPem);
1526
- var inAsn1 = PKI.certificateToAsn1(inCert);
1527
- var inDer = ASN1.toDer(inAsn1);
1528
- var outAsn1 = ASN1.fromDer(inDer);
1529
- var outCert = PKI.certificateFromAsn1(outAsn1);
1530
- var outPem = PKI.certificateToPem(outCert);
1531
- ASSERT.equal(certPem, outPem);
1532
- });
1533
-
1534
- it('should require basicConstraints on non-leaf certificates', function() {
1535
- // see GHSA-2328-f5f3-gj25 and PoC in /tests/pocs/
1536
- function generateKeyPair() {
1537
- return PKI.rsa.generateKeyPair({bits: 2048, e: 0x10001});
1538
- }
1539
-
1540
- // 1. Create a legitimate Root CA (self-signed, with basicConstraints
1541
- // cA=true)
1542
- var rootKeys = generateKeyPair();
1543
- var rootCert = PKI.createCertificate();
1544
- rootCert.publicKey = rootKeys.publicKey;
1545
- rootCert.serialNumber = '01';
1546
- rootCert.validity.notBefore = new Date();
1547
- rootCert.validity.notAfter = new Date();
1548
- rootCert.validity.notAfter.setFullYear(rootCert.validity.notBefore.getFullYear() + 10);
1549
-
1550
- var rootAttrs = [
1551
- {name: 'commonName', value: 'Legitimate Root CA'},
1552
- {name: 'organizationName', value: 'PoC Security Test'}
1553
- ];
1554
- rootCert.setSubject(rootAttrs);
1555
- rootCert.setIssuer(rootAttrs);
1556
- rootCert.setExtensions([
1557
- {name: 'basicConstraints', cA: true, critical: true},
1558
- {name: 'keyUsage', keyCertSign: true, cRLSign: true, critical: true}
1559
- ]);
1560
- rootCert.sign(rootKeys.privateKey, MD.sha256.create());
1561
-
1562
- // 2. Create a "leaf" certificate signed by root — NO basicConstraints,
1563
- // NO keyUsage This certificate should NOT be allowed to sign other
1564
- // certificates
1565
- var leafKeys = generateKeyPair();
1566
- var leafCert = PKI.createCertificate();
1567
- leafCert.publicKey = leafKeys.publicKey;
1568
- leafCert.serialNumber = '02';
1569
- leafCert.validity.notBefore = new Date();
1570
- leafCert.validity.notAfter = new Date();
1571
- leafCert.validity.notAfter.setFullYear(leafCert.validity.notBefore.getFullYear() + 5);
1572
-
1573
- var leafAttrs = [
1574
- {name: 'commonName', value: 'Non-CA Leaf Certificate'},
1575
- {name: 'organizationName', value: 'PoC Security Test'}
1576
- ];
1577
- leafCert.setSubject(leafAttrs);
1578
- leafCert.setIssuer(rootAttrs);
1579
- // NO basicConstraints extension — NO keyUsage extension
1580
- leafCert.sign(rootKeys.privateKey, MD.sha256.create());
1581
-
1582
- // 3. Create a "victim" certificate signed by the leaf
1583
- // This simulates an attacker using a non-CA cert to forge certificates
1584
- var victimKeys = generateKeyPair();
1585
- var victimCert = PKI.createCertificate();
1586
- victimCert.publicKey = victimKeys.publicKey;
1587
- victimCert.serialNumber = '03';
1588
- victimCert.validity.notBefore = new Date();
1589
- victimCert.validity.notAfter = new Date();
1590
- victimCert.validity.notAfter.setFullYear(victimCert.validity.notBefore.getFullYear() + 1);
1591
-
1592
- var victimAttrs = [
1593
- {name: 'commonName', value: 'victim.example.com'},
1594
- {name: 'organizationName', value: 'Victim Corp'}
1595
- ];
1596
- victimCert.setSubject(victimAttrs);
1597
- victimCert.setIssuer(leafAttrs);
1598
- victimCert.sign(leafKeys.privateKey, MD.sha256.create());
1599
-
1600
- // 4. Verify the chain: root -> leaf -> victim
1601
- var caStore = PKI.createCaStore([rootCert]);
1602
-
1603
- ASSERT.throws(
1604
- function() {
1605
- PKI.verifyCertificateChain(caStore, [victimCert, leafCert]);
1606
- },
1607
- function(err) {
1608
- var exMsg =
1609
- 'Certificate is missing basicConstraints extension and cannot ' +
1610
- 'be used as a CA.';
1611
- var exErr = 'forge.pki.BadCertificate';
1612
- return err.message === exMsg && err.error === exErr;
1613
- }
1614
- );
1615
- });
1616
- });
1617
-
1618
- // TODO: add sha-512 and sha-256 fingerprint tests
1619
-
1620
- describe('public key fingerprints', function() {
1621
- it('should get a SHA-1 RSAPublicKey fingerprint', function() {
1622
- var publicKey = PKI.publicKeyFromPem(_pem.publicKey);
1623
- var fp = PKI.getPublicKeyFingerprint(publicKey, {type: 'RSAPublicKey'});
1624
- ASSERT.equal(fp.toHex(), 'f57563e0c75d6e9b03fafdb2fd72349f23030300');
1625
- });
1626
-
1627
- it('should get a SHA-1 SubjectPublicKeyInfo fingerprint', function() {
1628
- var publicKey = PKI.publicKeyFromPem(_pem.publicKey);
1629
- var fp = PKI.getPublicKeyFingerprint(
1630
- publicKey, {type: 'SubjectPublicKeyInfo'});
1631
- ASSERT.equal(fp.toHex(), '984724bc548bbc2c8acbac044bd8d518abd26dd8');
1632
- });
1633
-
1634
- it('should get a hex SHA-1 RSAPublicKey fingerprint', function() {
1635
- var publicKey = PKI.publicKeyFromPem(_pem.publicKey);
1636
- var fp = PKI.getPublicKeyFingerprint(
1637
- publicKey, {type: 'RSAPublicKey', encoding: 'hex'});
1638
- ASSERT.equal(fp, 'f57563e0c75d6e9b03fafdb2fd72349f23030300');
1639
- });
1640
-
1641
- it('should get a hex, colon-delimited SHA-1 RSAPublicKey fingerprint', function() {
1642
- var publicKey = PKI.publicKeyFromPem(_pem.publicKey);
1643
- var fp = PKI.getPublicKeyFingerprint(
1644
- publicKey, {type: 'RSAPublicKey', encoding: 'hex', delimiter: ':'});
1645
- ASSERT.equal(
1646
- fp, 'f5:75:63:e0:c7:5d:6e:9b:03:fa:fd:b2:fd:72:34:9f:23:03:03:00');
1647
- });
1648
-
1649
- it('should get a hex, colon-delimited SHA-1 SubjectPublicKeyInfo fingerprint', function() {
1650
- var publicKey = PKI.publicKeyFromPem(_pem.publicKey);
1651
- var fp = PKI.getPublicKeyFingerprint(
1652
- publicKey, {
1653
- type: 'SubjectPublicKeyInfo',
1654
- encoding: 'hex',
1655
- delimiter: ':'
1656
- });
1657
- ASSERT.equal(
1658
- fp, '98:47:24:bc:54:8b:bc:2c:8a:cb:ac:04:4b:d8:d5:18:ab:d2:6d:d8');
1659
- });
1660
-
1661
- it('should get an MD5 RSAPublicKey fingerprint', function() {
1662
- var publicKey = PKI.publicKeyFromPem(_pem.publicKey);
1663
- var fp = PKI.getPublicKeyFingerprint(
1664
- publicKey, {md: MD.md5.create(), type: 'RSAPublicKey'});
1665
- ASSERT.equal(fp.toHex(), 'c7da180cc48d31a071d31a78bc43d9d7');
1666
- });
1667
-
1668
- it('should get an MD5 SubjectPublicKeyInfo fingerprint', function() {
1669
- var publicKey = PKI.publicKeyFromPem(_pem.publicKey);
1670
- var fp = PKI.getPublicKeyFingerprint(
1671
- publicKey, {md: MD.md5.create(), type: 'SubjectPublicKeyInfo'});
1672
- ASSERT.equal(fp.toHex(), 'e5c5ba577fe24fb8a678d8d58f539cd7');
1673
- });
1674
-
1675
- it('should get a hex MD5 RSAPublicKey fingerprint', function() {
1676
- var publicKey = PKI.publicKeyFromPem(_pem.publicKey);
1677
- var fp = PKI.getPublicKeyFingerprint(
1678
- publicKey,
1679
- {md: MD.md5.create(), type: 'RSAPublicKey', encoding: 'hex'});
1680
- ASSERT.equal(fp, 'c7da180cc48d31a071d31a78bc43d9d7');
1681
- });
1682
-
1683
- it('should get a hex, colon-delimited MD5 RSAPublicKey fingerprint', function() {
1684
- var publicKey = PKI.publicKeyFromPem(_pem.publicKey);
1685
- var fp = PKI.getPublicKeyFingerprint(
1686
- publicKey, {
1687
- md: MD.md5.create(),
1688
- type: 'RSAPublicKey',
1689
- encoding: 'hex',
1690
- delimiter: ':'
1691
- });
1692
- ASSERT.equal(fp, 'c7:da:18:0c:c4:8d:31:a0:71:d3:1a:78:bc:43:d9:d7');
1693
- });
1694
-
1695
- it('should get a hex, colon-delimited MD5 SubjectPublicKeyInfo fingerprint', function() {
1696
- var publicKey = PKI.publicKeyFromPem(_pem.publicKey);
1697
- var fp = PKI.getPublicKeyFingerprint(
1698
- publicKey, {
1699
- md: MD.md5.create(),
1700
- type: 'SubjectPublicKeyInfo',
1701
- encoding: 'hex',
1702
- delimiter: ':'
1703
- });
1704
- ASSERT.equal(fp, 'e5:c5:ba:57:7f:e2:4f:b8:a6:78:d8:d5:8f:53:9c:d7');
1705
- });
1706
- });
1707
-
1708
- describe('CA store', function() {
1709
- it('should add a certificate object to a store', function() {
1710
- var cert = PKI.certificateFromPem(_pem.certificate);
1711
- var caStore = PKI.createCaStore();
1712
- caStore.addCertificate(cert);
1713
- ASSERT.ok(caStore.hasCertificate(cert));
1714
- ASSERT.equal(caStore.listAllCertificates().length, 1);
1715
- });
1716
-
1717
- it('should add a PEM certificate to a store', function() {
1718
- var caStore = PKI.createCaStore();
1719
- caStore.addCertificate(_pem.certificate);
1720
- ASSERT.ok(caStore.hasCertificate(_pem.certificate));
1721
- ASSERT.equal(caStore.listAllCertificates().length, 1);
1722
- });
1723
-
1724
- it('should add two certificate objects to a store', function() {
1725
- var cert1 = PKI.certificateFromPem(_pem.certificate);
1726
- var cert2 = PKI.certificateFromPem(_pem_sha256.certificate);
1727
- var caStore = PKI.createCaStore();
1728
- caStore.addCertificate(cert1);
1729
- caStore.addCertificate(cert2);
1730
- ASSERT.ok(caStore.hasCertificate(cert1));
1731
- ASSERT.ok(caStore.hasCertificate(cert2));
1732
- ASSERT.equal(caStore.listAllCertificates().length, 2);
1733
- });
1734
-
1735
- it('should add two PEM certificates to a store', function() {
1736
- var cert1 = _pem.certificate;
1737
- var cert2 = _pem_sha256.certificate;
1738
- var caStore = PKI.createCaStore();
1739
- caStore.addCertificate(cert1);
1740
- caStore.addCertificate(cert2);
1741
- ASSERT.ok(caStore.hasCertificate(cert1));
1742
- ASSERT.ok(caStore.hasCertificate(cert2));
1743
- ASSERT.equal(caStore.listAllCertificates().length, 2);
1744
- });
1745
-
1746
- it('should remove a certificate object from a store', function() {
1747
- var cert1 = PKI.certificateFromPem(_pem.certificate);
1748
- var cert2 = PKI.certificateFromPem(_pem_sha256.certificate);
1749
- var caStore = PKI.createCaStore();
1750
- caStore.addCertificate(cert1);
1751
- caStore.addCertificate(cert2);
1752
- var result = caStore.removeCertificate(cert1);
1753
- ASSERT.equal(PKI.certificateToPem(result), PKI.certificateToPem(cert1));
1754
- ASSERT.ok(!caStore.hasCertificate(cert1));
1755
- ASSERT.ok(caStore.hasCertificate(cert2));
1756
- ASSERT.equal(caStore.listAllCertificates().length, 1);
1757
- });
1758
-
1759
- it('should remove a PEM certificate from a store', function() {
1760
- var cert1 = _pem.certificate;
1761
- var cert2 = _pem_sha256.certificate;
1762
- var caStore = PKI.createCaStore();
1763
- caStore.addCertificate(cert1);
1764
- caStore.addCertificate(cert2);
1765
- var result = caStore.removeCertificate(cert1);
1766
- ASSERT.equal(PKI.certificateToPem(result), cert1);
1767
- ASSERT.ok(!caStore.hasCertificate(cert1));
1768
- ASSERT.ok(caStore.hasCertificate(cert2));
1769
- ASSERT.equal(caStore.listAllCertificates().length, 1);
1770
- });
1771
-
1772
- it('should remove a certificate object from a store with two remaining', function() {
1773
- var cert1 = PKI.certificateFromPem(_pem.certificate);
1774
- var cert2 = PKI.certificateFromPem(_pem_sha256.certificate);
1775
- var cert3 = PKI.certificateFromPem(_pem_sha512.certificate);
1776
- var caStore = PKI.createCaStore();
1777
- caStore.addCertificate(cert1);
1778
- caStore.addCertificate(cert2);
1779
- caStore.addCertificate(cert3);
1780
- var result = caStore.removeCertificate(cert1);
1781
- ASSERT.equal(PKI.certificateToPem(result), PKI.certificateToPem(cert1));
1782
- ASSERT.ok(!caStore.hasCertificate(cert1));
1783
- ASSERT.ok(caStore.hasCertificate(cert2));
1784
- ASSERT.ok(caStore.hasCertificate(cert3));
1785
- ASSERT.equal(caStore.listAllCertificates().length, 2);
1786
- });
1787
-
1788
- it('should remove a PEM certificate from a store with two remaining', function() {
1789
- var cert1 = _pem.certificate;
1790
- var cert2 = _pem_sha256.certificate;
1791
- var cert3 = _pem_sha512.certificate;
1792
- var caStore = PKI.createCaStore();
1793
- caStore.addCertificate(cert1);
1794
- caStore.addCertificate(cert2);
1795
- caStore.addCertificate(cert3);
1796
- var result = caStore.removeCertificate(cert1);
1797
- ASSERT.equal(PKI.certificateToPem(result), cert1);
1798
- ASSERT.ok(!caStore.hasCertificate(cert1));
1799
- ASSERT.ok(caStore.hasCertificate(cert2));
1800
- ASSERT.ok(caStore.hasCertificate(cert3));
1801
- ASSERT.equal(caStore.listAllCertificates().length, 2);
1802
- });
1803
-
1804
- it('should add two certificate objects with the same subject to a store', function() {
1805
- var cert1 = PKI.certificateFromPem(_pem_same_subject[0]);
1806
- var cert2 = PKI.certificateFromPem(_pem_same_subject[1]);
1807
- var caStore = PKI.createCaStore();
1808
- caStore.addCertificate(cert1);
1809
- caStore.addCertificate(cert2);
1810
- ASSERT.ok(caStore.hasCertificate(cert1));
1811
- ASSERT.ok(caStore.hasCertificate(cert2));
1812
- ASSERT.equal(caStore.listAllCertificates().length, 2);
1813
- });
1814
-
1815
- it('should add two PEM certificates with the same subject to a store', function() {
1816
- var cert1 = _pem_same_subject[0];
1817
- var cert2 = _pem_same_subject[1];
1818
- var caStore = PKI.createCaStore();
1819
- caStore.addCertificate(cert1);
1820
- caStore.addCertificate(cert2);
1821
- ASSERT.ok(caStore.hasCertificate(cert1));
1822
- ASSERT.ok(caStore.hasCertificate(cert2));
1823
- ASSERT.equal(caStore.listAllCertificates().length, 2);
1824
- });
1825
-
1826
- it('should remove a certificate object with the same subject from a store', function() {
1827
- var cert1 = PKI.certificateFromPem(_pem_same_subject[0]);
1828
- var cert2 = PKI.certificateFromPem(_pem_same_subject[1]);
1829
- var caStore = PKI.createCaStore();
1830
- caStore.addCertificate(cert1);
1831
- caStore.addCertificate(cert2);
1832
- caStore.removeCertificate(cert1);
1833
- ASSERT.ok(!caStore.hasCertificate(cert1));
1834
- ASSERT.ok(caStore.hasCertificate(cert2));
1835
- ASSERT.equal(caStore.listAllCertificates().length, 1);
1836
- });
1837
-
1838
- it('should remove a PEM certificate with the same subject from a store', function() {
1839
- var cert1 = _pem_same_subject[0];
1840
- var cert2 = _pem_same_subject[1];
1841
- var caStore = PKI.createCaStore();
1842
- caStore.addCertificate(cert1);
1843
- caStore.addCertificate(cert2);
1844
- caStore.removeCertificate(cert1);
1845
- ASSERT.ok(!caStore.hasCertificate(cert1));
1846
- ASSERT.ok(caStore.hasCertificate(cert2));
1847
- ASSERT.equal(caStore.listAllCertificates().length, 1);
1848
- });
1849
-
1850
- it('should remove a certificate object from a store with the same subject with two remaining', function() {
1851
- var cert1 = PKI.certificateFromPem(_pem_same_subject[0]);
1852
- var cert2 = PKI.certificateFromPem(_pem_same_subject[1]);
1853
- var cert3 = PKI.certificateFromPem(_pem_sha512.certificate);
1854
- var caStore = PKI.createCaStore();
1855
- caStore.addCertificate(cert1);
1856
- caStore.addCertificate(cert2);
1857
- caStore.addCertificate(cert3);
1858
- caStore.removeCertificate(cert1);
1859
- ASSERT.ok(!caStore.hasCertificate(cert1));
1860
- ASSERT.ok(caStore.hasCertificate(cert2));
1861
- ASSERT.ok(caStore.hasCertificate(cert3));
1862
- ASSERT.equal(caStore.listAllCertificates().length, 2);
1863
- });
1864
-
1865
- it('should remove a PEM certificate from a store with the same subject with two remaining', function() {
1866
- var cert1 = _pem_same_subject[0];
1867
- var cert2 = _pem_same_subject[1];
1868
- var cert3 = _pem_sha512.certificate;
1869
- var caStore = PKI.createCaStore();
1870
- caStore.addCertificate(cert1);
1871
- caStore.addCertificate(cert2);
1872
- caStore.addCertificate(cert3);
1873
- caStore.removeCertificate(cert1);
1874
- ASSERT.ok(!caStore.hasCertificate(cert1));
1875
- ASSERT.ok(caStore.hasCertificate(cert2));
1876
- ASSERT.ok(caStore.hasCertificate(cert3));
1877
- ASSERT.equal(caStore.listAllCertificates().length, 2);
1878
- });
1879
-
1880
- it('should fail to remove a PEM certificate from a store', function() {
1881
- var cert1 = _pem.certificate;
1882
- var cert2 = _pem_sha256.certificate;
1883
- var cert3 = _pem_sha512.certificate;
1884
- var caStore = PKI.createCaStore();
1885
- caStore.addCertificate(cert1);
1886
- caStore.addCertificate(cert2);
1887
- caStore.addCertificate(cert3);
1888
- var result = caStore.removeCertificate(cert1);
1889
- ASSERT.equal(PKI.certificateToPem(result), cert1);
1890
- result = caStore.removeCertificate(cert2);
1891
- ASSERT.equal(PKI.certificateToPem(result), cert2);
1892
- result = caStore.removeCertificate(cert3);
1893
- ASSERT.equal(PKI.certificateToPem(result), cert3);
1894
- result = caStore.removeCertificate(cert1);
1895
- ASSERT.equal(result, null);
1896
- result = caStore.removeCertificate(cert2);
1897
- ASSERT.equal(result, null);
1898
- result = caStore.removeCertificate(cert3);
1899
- ASSERT.equal(result, null);
1900
- ASSERT.equal(caStore.listAllCertificates().length, 0);
1901
- });
1902
- });
1903
-
1904
- function findIndex(array, predicateObj) {
1905
- var result = -1;
1906
- array.forEach(function(el, index) {
1907
- var match = Object.keys(predicateObj).reduce(function(soFar, key) {
1908
- return soFar && el[key] === predicateObj[key];
1909
- }, true);
1910
- if(match) {
1911
- result = index;
1912
- }
1913
- });
1914
- return result;
1915
- }
1916
-
1917
- function createCertificate(options) {
1918
- var publicKey = options.publicKey;
1919
- var signingKey = options.signingKey;
1920
- var subject = options.subject;
1921
- var issuer = options.issuer;
1922
- var isCA = options.isCA;
1923
- var serialNumber = options.serialNumber || '01';
1924
- var notBefore = options.notBefore || new Date();
1925
- var notAfter;
1926
- if(options.notAfter) {
1927
- notAfter = options.notAfter;
1928
- } else {
1929
- notAfter = new Date(notBefore);
1930
- notAfter.setFullYear(notAfter.getFullYear() + 1);
1931
- }
1932
-
1933
- var cert = PKI.createCertificate();
1934
- cert.publicKey = publicKey;
1935
- cert.serialNumber = serialNumber;
1936
- cert.validity.notBefore = notBefore;
1937
- cert.validity.notAfter = notAfter;
1938
- cert.setSubject(subject);
1939
- cert.setIssuer(issuer);
1940
- var extensions = options.extensions || [];
1941
- if(isCA) {
1942
- extensions.push({
1943
- name: 'basicConstraints',
1944
- cA: true
1945
- });
1946
- }
1947
- extensions.push({
1948
- name: 'keyUsage',
1949
- keyCertSign: true,
1950
- digitalSignature: true,
1951
- nonRepudiation: true,
1952
- keyEncipherment: true,
1953
- dataEncipherment: true
1954
- }, {
1955
- name: 'extKeyUsage',
1956
- serverAuth: true,
1957
- clientAuth: true,
1958
- codeSigning: true,
1959
- emailProtection: true,
1960
- timeStamping: true
1961
- }, {
1962
- name: 'nsCertType',
1963
- client: true,
1964
- server: true,
1965
- email: true,
1966
- objsign: true,
1967
- sslCA: true,
1968
- emailCA: true,
1969
- objCA: true
1970
- }, {
1971
- name: 'subjectAltName',
1972
- altNames: [{
1973
- type: 6, // URI
1974
- value: 'http://example.org/webid#me'
1975
- }]
1976
- }, {
1977
- name: 'subjectKeyIdentifier'
1978
- });
1979
- // FIXME: add authorityKeyIdentifier extension
1980
- cert.setExtensions(extensions);
1981
-
1982
- cert.sign(signingKey);
1983
-
1984
- return cert;
1985
- }
1986
- })();