@naylence/advanced-security 0.3.7 → 0.3.8

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 (292) hide show
  1. package/dist/browser/index.cjs +9865 -0
  2. package/dist/browser/index.mjs +9812 -0
  3. package/dist/cjs/advanced-security-isomorphic.js +82 -0
  4. package/dist/cjs/advanced-security-isomorphic.js.map +1 -0
  5. package/dist/cjs/browser.js +24 -5
  6. package/dist/cjs/browser.js.map +1 -1
  7. package/dist/cjs/index.js +1 -6
  8. package/dist/cjs/index.js.map +1 -1
  9. package/dist/cjs/install-env.js +2 -0
  10. package/dist/cjs/install-env.js.map +1 -0
  11. package/dist/cjs/naylence/fame/factory-manifest.js +19 -4
  12. package/dist/cjs/naylence/fame/factory-manifest.js.map +1 -1
  13. package/dist/cjs/naylence/fame/security/cert/browser-csr.js +103 -0
  14. package/dist/cjs/naylence/fame/security/cert/browser-csr.js.map +1 -0
  15. package/dist/cjs/naylence/fame/security/cert/ca-server-cli.js +30 -0
  16. package/dist/cjs/naylence/fame/security/cert/ca-server-cli.js.map +1 -0
  17. package/dist/cjs/naylence/fame/security/cert/ca-server.js +223 -0
  18. package/dist/cjs/naylence/fame/security/cert/ca-server.js.map +1 -0
  19. package/dist/cjs/naylence/fame/security/cert/ca-service-client.js +340 -39
  20. package/dist/cjs/naylence/fame/security/cert/ca-service-client.js.map +1 -1
  21. package/dist/cjs/naylence/fame/security/cert/ca-service-factory.js +7 -11
  22. package/dist/cjs/naylence/fame/security/cert/ca-service-factory.js.map +1 -1
  23. package/dist/cjs/naylence/fame/security/cert/ca-types.js +10 -7
  24. package/dist/cjs/naylence/fame/security/cert/ca-types.js.map +1 -1
  25. package/dist/cjs/naylence/fame/security/cert/csr-types.js +2 -0
  26. package/dist/cjs/naylence/fame/security/cert/csr-types.js.map +1 -0
  27. package/dist/cjs/naylence/fame/security/cert/default-ca-service-factory.js +6 -10
  28. package/dist/cjs/naylence/fame/security/cert/default-ca-service-factory.js.map +1 -1
  29. package/dist/cjs/naylence/fame/security/cert/default-ca-service.js +151 -66
  30. package/dist/cjs/naylence/fame/security/cert/default-ca-service.js.map +1 -1
  31. package/dist/cjs/naylence/fame/security/cert/default-certificate-manager-factory.js +17 -19
  32. package/dist/cjs/naylence/fame/security/cert/default-certificate-manager-factory.js.map +1 -1
  33. package/dist/cjs/naylence/fame/security/cert/default-certificate-manager.js +250 -129
  34. package/dist/cjs/naylence/fame/security/cert/default-certificate-manager.js.map +1 -1
  35. package/dist/cjs/naylence/fame/security/cert/grants.js +1 -4
  36. package/dist/cjs/naylence/fame/security/cert/grants.js.map +1 -1
  37. package/dist/cjs/naylence/fame/security/cert/index.js +16 -50
  38. package/dist/cjs/naylence/fame/security/cert/index.js.map +1 -1
  39. package/dist/cjs/naylence/fame/security/cert/internal-ca-service.js +77 -123
  40. package/dist/cjs/naylence/fame/security/cert/internal-ca-service.js.map +1 -1
  41. package/dist/cjs/naylence/fame/security/cert/node-ed25519-csr.js +156 -0
  42. package/dist/cjs/naylence/fame/security/cert/node-ed25519-csr.js.map +1 -0
  43. package/dist/cjs/naylence/fame/security/cert/oid-constants.js +7 -0
  44. package/dist/cjs/naylence/fame/security/cert/oid-constants.js.map +1 -0
  45. package/dist/cjs/naylence/fame/security/cert/trust-store/anchor-utils.js +119 -0
  46. package/dist/cjs/naylence/fame/security/cert/trust-store/anchor-utils.js.map +1 -0
  47. package/dist/cjs/naylence/fame/security/cert/trust-store/browser-trust-store-provider-factory.js +82 -0
  48. package/dist/cjs/naylence/fame/security/cert/trust-store/browser-trust-store-provider-factory.js.map +1 -0
  49. package/dist/cjs/naylence/fame/security/cert/trust-store/env-provider.js +168 -0
  50. package/dist/cjs/naylence/fame/security/cert/trust-store/env-provider.js.map +1 -0
  51. package/dist/cjs/naylence/fame/security/cert/trust-store/fame-ca-certs-parser.js +257 -0
  52. package/dist/cjs/naylence/fame/security/cert/trust-store/fame-ca-certs-parser.js.map +1 -0
  53. package/dist/cjs/naylence/fame/security/cert/trust-store/http-bundle-provider.js +530 -0
  54. package/dist/cjs/naylence/fame/security/cert/trust-store/http-bundle-provider.js.map +1 -0
  55. package/dist/cjs/naylence/fame/security/cert/trust-store/http-signed-bundle-provider.js +2 -0
  56. package/dist/cjs/naylence/fame/security/cert/trust-store/http-signed-bundle-provider.js.map +1 -0
  57. package/dist/cjs/naylence/fame/security/cert/trust-store/node-trust-store-provider-factory.js +61 -0
  58. package/dist/cjs/naylence/fame/security/cert/trust-store/node-trust-store-provider-factory.js.map +1 -0
  59. package/dist/cjs/naylence/fame/security/cert/trust-store/static-bundle-provider.js +44 -0
  60. package/dist/cjs/naylence/fame/security/cert/trust-store/static-bundle-provider.js.map +1 -0
  61. package/dist/cjs/naylence/fame/security/cert/trust-store/trust-store-provider-factory.js +40 -0
  62. package/dist/cjs/naylence/fame/security/cert/trust-store/trust-store-provider-factory.js.map +1 -0
  63. package/dist/cjs/naylence/fame/security/cert/trust-store/trust-store-provider.js +2 -0
  64. package/dist/cjs/naylence/fame/security/cert/trust-store/trust-store-provider.js.map +1 -0
  65. package/dist/cjs/naylence/fame/security/cert/util.js +25 -30
  66. package/dist/cjs/naylence/fame/security/cert/util.js.map +1 -1
  67. package/dist/cjs/naylence/fame/security/encryption/channel/channel-encryption-manager-factory.js +10 -14
  68. package/dist/cjs/naylence/fame/security/encryption/channel/channel-encryption-manager-factory.js.map +1 -1
  69. package/dist/cjs/naylence/fame/security/encryption/channel/channel-encryption-manager.js +59 -48
  70. package/dist/cjs/naylence/fame/security/encryption/channel/channel-encryption-manager.js.map +1 -1
  71. package/dist/cjs/naylence/fame/security/encryption/channel/index.js +2 -7
  72. package/dist/cjs/naylence/fame/security/encryption/channel/index.js.map +1 -1
  73. package/dist/cjs/naylence/fame/security/encryption/composite-encryption-manager-factory.js +10 -14
  74. package/dist/cjs/naylence/fame/security/encryption/composite-encryption-manager-factory.js.map +1 -1
  75. package/dist/cjs/naylence/fame/security/encryption/composite-encryption-manager.js +7 -11
  76. package/dist/cjs/naylence/fame/security/encryption/composite-encryption-manager.js.map +1 -1
  77. package/dist/cjs/naylence/fame/security/encryption/default-secure-channel-manager-factory.js +7 -11
  78. package/dist/cjs/naylence/fame/security/encryption/default-secure-channel-manager-factory.js.map +1 -1
  79. package/dist/cjs/naylence/fame/security/encryption/default-secure-channel-manager.js +19 -23
  80. package/dist/cjs/naylence/fame/security/encryption/default-secure-channel-manager.js.map +1 -1
  81. package/dist/cjs/naylence/fame/security/encryption/encryption-manager-registry.js +9 -15
  82. package/dist/cjs/naylence/fame/security/encryption/encryption-manager-registry.js.map +1 -1
  83. package/dist/cjs/naylence/fame/security/encryption/index.js +6 -15
  84. package/dist/cjs/naylence/fame/security/encryption/index.js.map +1 -1
  85. package/dist/cjs/naylence/fame/security/encryption/sealed/index.js +2 -7
  86. package/dist/cjs/naylence/fame/security/encryption/sealed/index.js.map +1 -1
  87. package/dist/cjs/naylence/fame/security/encryption/sealed/x25519-encryption-manager-factory.js +8 -12
  88. package/dist/cjs/naylence/fame/security/encryption/sealed/x25519-encryption-manager-factory.js.map +1 -1
  89. package/dist/cjs/naylence/fame/security/encryption/sealed/x25519-encryption-manager.js +26 -30
  90. package/dist/cjs/naylence/fame/security/encryption/sealed/x25519-encryption-manager.js.map +1 -1
  91. package/dist/cjs/naylence/fame/security/index.js +5 -10
  92. package/dist/cjs/naylence/fame/security/index.js.map +1 -1
  93. package/dist/cjs/naylence/fame/security/keys/index.js +2 -8
  94. package/dist/cjs/naylence/fame/security/keys/index.js.map +1 -1
  95. package/dist/cjs/naylence/fame/security/keys/x5c-key-manager-factory.js +9 -13
  96. package/dist/cjs/naylence/fame/security/keys/x5c-key-manager-factory.js.map +1 -1
  97. package/dist/cjs/naylence/fame/security/keys/x5c-key-manager.js +17 -53
  98. package/dist/cjs/naylence/fame/security/keys/x5c-key-manager.js.map +1 -1
  99. package/dist/cjs/naylence/fame/security/register-advanced-security-factories.js +223 -68
  100. package/dist/cjs/naylence/fame/security/register-advanced-security-factories.js.map +1 -1
  101. package/dist/cjs/naylence/fame/security/signing/eddsa-envelope-signer-factory.js +6 -43
  102. package/dist/cjs/naylence/fame/security/signing/eddsa-envelope-signer-factory.js.map +1 -1
  103. package/dist/cjs/naylence/fame/security/signing/eddsa-envelope-verifier-factory.js +16 -13
  104. package/dist/cjs/naylence/fame/security/signing/eddsa-envelope-verifier-factory.js.map +1 -1
  105. package/dist/cjs/naylence/fame/security/signing/eddsa-envelope-verifier.js +69 -125
  106. package/dist/cjs/naylence/fame/security/signing/eddsa-envelope-verifier.js.map +1 -1
  107. package/dist/cjs/naylence/fame/stickiness/aft-helper.js +8 -13
  108. package/dist/cjs/naylence/fame/stickiness/aft-helper.js.map +1 -1
  109. package/dist/cjs/naylence/fame/stickiness/aft-load-balancer-stickiness-manager-factory.js +12 -16
  110. package/dist/cjs/naylence/fame/stickiness/aft-load-balancer-stickiness-manager-factory.js.map +1 -1
  111. package/dist/cjs/naylence/fame/stickiness/aft-load-balancer-stickiness-manager.js +10 -14
  112. package/dist/cjs/naylence/fame/stickiness/aft-load-balancer-stickiness-manager.js.map +1 -1
  113. package/dist/cjs/naylence/fame/stickiness/aft-model.js +6 -14
  114. package/dist/cjs/naylence/fame/stickiness/aft-model.js.map +1 -1
  115. package/dist/cjs/naylence/fame/stickiness/aft-replica-stickiness-manager-factory.js +12 -16
  116. package/dist/cjs/naylence/fame/stickiness/aft-replica-stickiness-manager-factory.js.map +1 -1
  117. package/dist/cjs/naylence/fame/stickiness/aft-replica-stickiness-manager.js +13 -18
  118. package/dist/cjs/naylence/fame/stickiness/aft-replica-stickiness-manager.js.map +1 -1
  119. package/dist/cjs/naylence/fame/stickiness/aft-signer.js +23 -30
  120. package/dist/cjs/naylence/fame/stickiness/aft-signer.js.map +1 -1
  121. package/dist/cjs/naylence/fame/stickiness/aft-utils.js +3 -8
  122. package/dist/cjs/naylence/fame/stickiness/aft-utils.js.map +1 -1
  123. package/dist/cjs/naylence/fame/stickiness/aft-verifier.js +21 -28
  124. package/dist/cjs/naylence/fame/stickiness/aft-verifier.js.map +1 -1
  125. package/dist/cjs/naylence/fame/stickiness/index.js +10 -39
  126. package/dist/cjs/naylence/fame/stickiness/index.js.map +1 -1
  127. package/dist/cjs/naylence/fame/stickiness/stickiness-mode.js +3 -7
  128. package/dist/cjs/naylence/fame/stickiness/stickiness-mode.js.map +1 -1
  129. package/dist/cjs/naylence/fame/welcome/advanced-welcome-service-factory.js +14 -18
  130. package/dist/cjs/naylence/fame/welcome/advanced-welcome-service-factory.js.map +1 -1
  131. package/dist/cjs/naylence/fame/welcome/advanced-welcome-service.js +14 -18
  132. package/dist/cjs/naylence/fame/welcome/advanced-welcome-service.js.map +1 -1
  133. package/dist/cjs/naylence/fame/welcome/index.js +2 -8
  134. package/dist/cjs/naylence/fame/welcome/index.js.map +1 -1
  135. package/dist/cjs/node.js +11 -0
  136. package/dist/cjs/node.js.map +1 -0
  137. package/dist/cjs/plugin.js +8 -10
  138. package/dist/cjs/plugin.js.map +1 -1
  139. package/dist/cjs/version.js +8 -0
  140. package/dist/cjs/version.js.map +1 -0
  141. package/dist/esm/advanced-security-isomorphic.js +82 -0
  142. package/dist/esm/advanced-security-isomorphic.js.map +1 -0
  143. package/dist/esm/browser.js +24 -2
  144. package/dist/esm/browser.js.map +1 -1
  145. package/dist/esm/index.js +1 -3
  146. package/dist/esm/index.js.map +1 -1
  147. package/dist/esm/install-env.js +2 -0
  148. package/dist/esm/install-env.js.map +1 -0
  149. package/dist/esm/naylence/fame/factory-manifest.js +18 -0
  150. package/dist/esm/naylence/fame/factory-manifest.js.map +1 -1
  151. package/dist/esm/naylence/fame/security/cert/browser-csr.js +103 -0
  152. package/dist/esm/naylence/fame/security/cert/browser-csr.js.map +1 -0
  153. package/dist/esm/naylence/fame/security/cert/ca-server-cli.js +30 -0
  154. package/dist/esm/naylence/fame/security/cert/ca-server-cli.js.map +1 -0
  155. package/dist/esm/naylence/fame/security/cert/ca-server.js +87 -17
  156. package/dist/esm/naylence/fame/security/cert/ca-server.js.map +1 -1
  157. package/dist/esm/naylence/fame/security/cert/ca-service-client.js +331 -24
  158. package/dist/esm/naylence/fame/security/cert/ca-service-client.js.map +1 -1
  159. package/dist/esm/naylence/fame/security/cert/ca-types.js +8 -0
  160. package/dist/esm/naylence/fame/security/cert/ca-types.js.map +1 -1
  161. package/dist/esm/naylence/fame/security/cert/csr-types.js +2 -0
  162. package/dist/esm/naylence/fame/security/cert/csr-types.js.map +1 -0
  163. package/dist/esm/naylence/fame/security/cert/default-ca-service.js +123 -1
  164. package/dist/esm/naylence/fame/security/cert/default-ca-service.js.map +1 -1
  165. package/dist/esm/naylence/fame/security/cert/default-certificate-manager-factory.js +7 -5
  166. package/dist/esm/naylence/fame/security/cert/default-certificate-manager-factory.js.map +1 -1
  167. package/dist/esm/naylence/fame/security/cert/default-certificate-manager.js +229 -71
  168. package/dist/esm/naylence/fame/security/cert/default-certificate-manager.js.map +1 -1
  169. package/dist/esm/naylence/fame/security/cert/index.js +7 -1
  170. package/dist/esm/naylence/fame/security/cert/index.js.map +1 -1
  171. package/dist/esm/naylence/fame/security/cert/internal-ca-service.js +2 -5
  172. package/dist/esm/naylence/fame/security/cert/internal-ca-service.js.map +1 -1
  173. package/dist/esm/naylence/fame/security/cert/node-ed25519-csr.js +156 -0
  174. package/dist/esm/naylence/fame/security/cert/node-ed25519-csr.js.map +1 -0
  175. package/dist/esm/naylence/fame/security/cert/oid-constants.js +7 -0
  176. package/dist/esm/naylence/fame/security/cert/oid-constants.js.map +1 -0
  177. package/dist/esm/naylence/fame/security/cert/trust-store/anchor-utils.js +119 -0
  178. package/dist/esm/naylence/fame/security/cert/trust-store/anchor-utils.js.map +1 -0
  179. package/dist/esm/naylence/fame/security/cert/trust-store/browser-trust-store-provider-factory.js +82 -0
  180. package/dist/esm/naylence/fame/security/cert/trust-store/browser-trust-store-provider-factory.js.map +1 -0
  181. package/dist/esm/naylence/fame/security/cert/trust-store/env-provider.js +168 -0
  182. package/dist/esm/naylence/fame/security/cert/trust-store/env-provider.js.map +1 -0
  183. package/dist/esm/naylence/fame/security/cert/trust-store/fame-ca-certs-parser.js +257 -0
  184. package/dist/esm/naylence/fame/security/cert/trust-store/fame-ca-certs-parser.js.map +1 -0
  185. package/dist/esm/naylence/fame/security/cert/trust-store/http-bundle-provider.js +530 -0
  186. package/dist/esm/naylence/fame/security/cert/trust-store/http-bundle-provider.js.map +1 -0
  187. package/dist/esm/naylence/fame/security/cert/trust-store/http-signed-bundle-provider.js +2 -0
  188. package/dist/esm/naylence/fame/security/cert/trust-store/http-signed-bundle-provider.js.map +1 -0
  189. package/dist/esm/naylence/fame/security/cert/trust-store/node-trust-store-provider-factory.js +61 -0
  190. package/dist/esm/naylence/fame/security/cert/trust-store/node-trust-store-provider-factory.js.map +1 -0
  191. package/dist/esm/naylence/fame/security/cert/trust-store/static-bundle-provider.js +44 -0
  192. package/dist/esm/naylence/fame/security/cert/trust-store/static-bundle-provider.js.map +1 -0
  193. package/dist/esm/naylence/fame/security/cert/trust-store/trust-store-provider-factory.js +40 -0
  194. package/dist/esm/naylence/fame/security/cert/trust-store/trust-store-provider-factory.js.map +1 -0
  195. package/dist/esm/naylence/fame/security/cert/trust-store/trust-store-provider.js +2 -0
  196. package/dist/esm/naylence/fame/security/cert/trust-store/trust-store-provider.js.map +1 -0
  197. package/dist/esm/naylence/fame/security/cert/util.js +1 -2
  198. package/dist/esm/naylence/fame/security/cert/util.js.map +1 -1
  199. package/dist/esm/naylence/fame/security/encryption/channel/channel-encryption-manager.js +27 -12
  200. package/dist/esm/naylence/fame/security/encryption/channel/channel-encryption-manager.js.map +1 -1
  201. package/dist/esm/naylence/fame/security/keys/x5c-key-manager.js +1 -1
  202. package/dist/esm/naylence/fame/security/keys/x5c-key-manager.js.map +1 -1
  203. package/dist/esm/naylence/fame/security/register-advanced-security-factories.js +217 -26
  204. package/dist/esm/naylence/fame/security/register-advanced-security-factories.js.map +1 -1
  205. package/dist/esm/naylence/fame/security/signing/eddsa-envelope-signer-factory.js +1 -1
  206. package/dist/esm/naylence/fame/security/signing/eddsa-envelope-signer-factory.js.map +1 -1
  207. package/dist/esm/naylence/fame/security/signing/eddsa-envelope-verifier-factory.js +9 -2
  208. package/dist/esm/naylence/fame/security/signing/eddsa-envelope-verifier-factory.js.map +1 -1
  209. package/dist/esm/naylence/fame/security/signing/eddsa-envelope-verifier.js +44 -63
  210. package/dist/esm/naylence/fame/security/signing/eddsa-envelope-verifier.js.map +1 -1
  211. package/dist/esm/node.js +11 -0
  212. package/dist/esm/node.js.map +1 -0
  213. package/dist/esm/plugin.js +2 -0
  214. package/dist/esm/plugin.js.map +1 -1
  215. package/dist/esm/version.js +8 -0
  216. package/dist/esm/version.js.map +1 -0
  217. package/dist/node/index.cjs +9856 -0
  218. package/dist/node/index.mjs +9801 -0
  219. package/dist/node/node.cjs +10179 -0
  220. package/dist/node/node.mjs +10086 -0
  221. package/dist/types/advanced-security-isomorphic.d.ts +24 -0
  222. package/dist/types/advanced-security-isomorphic.d.ts.map +1 -0
  223. package/dist/types/browser.d.ts +18 -1
  224. package/dist/types/browser.d.ts.map +1 -1
  225. package/dist/types/index.d.ts +1 -3
  226. package/dist/types/index.d.ts.map +1 -1
  227. package/dist/types/install-env.d.ts +3 -0
  228. package/dist/types/install-env.d.ts.map +1 -0
  229. package/dist/types/naylence/fame/factory-manifest.d.ts +3 -1
  230. package/dist/types/naylence/fame/factory-manifest.d.ts.map +1 -1
  231. package/dist/types/naylence/fame/security/cert/browser-csr.d.ts +9 -0
  232. package/dist/types/naylence/fame/security/cert/browser-csr.d.ts.map +1 -0
  233. package/dist/types/naylence/fame/security/cert/ca-server-cli.d.ts +3 -0
  234. package/dist/types/naylence/fame/security/cert/ca-server-cli.d.ts.map +1 -0
  235. package/dist/types/naylence/fame/security/cert/ca-server.d.ts +2 -2
  236. package/dist/types/naylence/fame/security/cert/ca-server.d.ts.map +1 -1
  237. package/dist/types/naylence/fame/security/cert/ca-service-client.d.ts.map +1 -1
  238. package/dist/types/naylence/fame/security/cert/ca-types.d.ts +32 -0
  239. package/dist/types/naylence/fame/security/cert/ca-types.d.ts.map +1 -1
  240. package/dist/types/naylence/fame/security/cert/csr-types.d.ts +5 -0
  241. package/dist/types/naylence/fame/security/cert/csr-types.d.ts.map +1 -0
  242. package/dist/types/naylence/fame/security/cert/default-ca-service.d.ts +2 -1
  243. package/dist/types/naylence/fame/security/cert/default-ca-service.d.ts.map +1 -1
  244. package/dist/types/naylence/fame/security/cert/default-certificate-manager-factory.d.ts +2 -4
  245. package/dist/types/naylence/fame/security/cert/default-certificate-manager-factory.d.ts.map +1 -1
  246. package/dist/types/naylence/fame/security/cert/default-certificate-manager.d.ts +32 -0
  247. package/dist/types/naylence/fame/security/cert/default-certificate-manager.d.ts.map +1 -1
  248. package/dist/types/naylence/fame/security/cert/index.d.ts +9 -1
  249. package/dist/types/naylence/fame/security/cert/index.d.ts.map +1 -1
  250. package/dist/types/naylence/fame/security/cert/internal-ca-service.d.ts +0 -3
  251. package/dist/types/naylence/fame/security/cert/internal-ca-service.d.ts.map +1 -1
  252. package/dist/types/naylence/fame/security/cert/node-ed25519-csr.d.ts +9 -0
  253. package/dist/types/naylence/fame/security/cert/node-ed25519-csr.d.ts.map +1 -0
  254. package/dist/types/naylence/fame/security/cert/oid-constants.d.ts +7 -0
  255. package/dist/types/naylence/fame/security/cert/oid-constants.d.ts.map +1 -0
  256. package/dist/types/naylence/fame/security/cert/trust-store/anchor-utils.d.ts +12 -0
  257. package/dist/types/naylence/fame/security/cert/trust-store/anchor-utils.d.ts.map +1 -0
  258. package/dist/types/naylence/fame/security/cert/trust-store/browser-trust-store-provider-factory.d.ts +28 -0
  259. package/dist/types/naylence/fame/security/cert/trust-store/browser-trust-store-provider-factory.d.ts.map +1 -0
  260. package/dist/types/naylence/fame/security/cert/trust-store/env-provider.d.ts +7 -0
  261. package/dist/types/naylence/fame/security/cert/trust-store/env-provider.d.ts.map +1 -0
  262. package/dist/types/naylence/fame/security/cert/trust-store/fame-ca-certs-parser.d.ts +9 -0
  263. package/dist/types/naylence/fame/security/cert/trust-store/fame-ca-certs-parser.d.ts.map +1 -0
  264. package/dist/types/naylence/fame/security/cert/trust-store/http-bundle-provider.d.ts +35 -0
  265. package/dist/types/naylence/fame/security/cert/trust-store/http-bundle-provider.d.ts.map +1 -0
  266. package/dist/types/naylence/fame/security/cert/trust-store/http-signed-bundle-provider.d.ts +2 -0
  267. package/dist/types/naylence/fame/security/cert/trust-store/http-signed-bundle-provider.d.ts.map +1 -0
  268. package/dist/types/naylence/fame/security/cert/trust-store/node-trust-store-provider-factory.d.ts +22 -0
  269. package/dist/types/naylence/fame/security/cert/trust-store/node-trust-store-provider-factory.d.ts.map +1 -0
  270. package/dist/types/naylence/fame/security/cert/trust-store/static-bundle-provider.d.ts +15 -0
  271. package/dist/types/naylence/fame/security/cert/trust-store/static-bundle-provider.d.ts.map +1 -0
  272. package/dist/types/naylence/fame/security/cert/trust-store/trust-store-provider-factory.d.ts +28 -0
  273. package/dist/types/naylence/fame/security/cert/trust-store/trust-store-provider-factory.d.ts.map +1 -0
  274. package/dist/types/naylence/fame/security/cert/trust-store/trust-store-provider.d.ts +43 -0
  275. package/dist/types/naylence/fame/security/cert/trust-store/trust-store-provider.d.ts.map +1 -0
  276. package/dist/types/naylence/fame/security/cert/util.d.ts.map +1 -1
  277. package/dist/types/naylence/fame/security/encryption/channel/channel-encryption-manager.d.ts.map +1 -1
  278. package/dist/types/naylence/fame/security/register-advanced-security-factories.d.ts.map +1 -1
  279. package/dist/types/naylence/fame/security/signing/eddsa-envelope-signer-factory.d.ts +1 -2
  280. package/dist/types/naylence/fame/security/signing/eddsa-envelope-signer-factory.d.ts.map +1 -1
  281. package/dist/types/naylence/fame/security/signing/eddsa-envelope-verifier-factory.d.ts +2 -2
  282. package/dist/types/naylence/fame/security/signing/eddsa-envelope-verifier-factory.d.ts.map +1 -1
  283. package/dist/types/naylence/fame/security/signing/eddsa-envelope-verifier.d.ts +5 -0
  284. package/dist/types/naylence/fame/security/signing/eddsa-envelope-verifier.d.ts.map +1 -1
  285. package/dist/types/node.d.ts +11 -0
  286. package/dist/types/node.d.ts.map +1 -0
  287. package/dist/types/plugin.d.ts.map +1 -1
  288. package/dist/types/version.d.ts +6 -0
  289. package/dist/types/version.d.ts.map +1 -0
  290. package/package.json +88 -14
  291. package/dist/browser/index.js +0 -25070
  292. package/dist/browser/index.js.map +0 -1
@@ -0,0 +1,530 @@
1
+ import { sha256 } from "@noble/hashes/sha2.js";
2
+ import { getLogger } from "@naylence/runtime";
3
+ import { anchorsToPem, computeSpkiSha256, normalizePem, pemChainToAnchors, toBase64Url, withComputedSpki, } from "./anchor-utils.js";
4
+ const DEFAULT_REFRESH_INTERVAL_MS = 86400000; // 24 hours
5
+ const MIN_REFRESH_INTERVAL_MS = 60000; // 1 minute
6
+ const logger = getLogger("naylence.fame.security.cert.trust_store.http_bundle_provider");
7
+ function isTruthyFlag(value) {
8
+ if (typeof value === "boolean") {
9
+ return value;
10
+ }
11
+ if (typeof value === "string") {
12
+ const normalized = value.trim().toLowerCase();
13
+ if (!normalized) {
14
+ return false;
15
+ }
16
+ return normalized !== "false" && normalized !== "0";
17
+ }
18
+ return false;
19
+ }
20
+ function isCacheDisabled() {
21
+ if (isNodeEnvironment() && typeof process !== "undefined") {
22
+ const flag = process.env?.NAYLENCE_TRUST_BUNDLE_DISABLE_CACHE;
23
+ if (flag !== undefined) {
24
+ return isTruthyFlag(flag);
25
+ }
26
+ }
27
+ if (typeof globalThis !== "undefined") {
28
+ const globalFlag = globalThis.NAYLENCE_TRUST_BUNDLE_DISABLE_CACHE;
29
+ if (globalFlag !== undefined) {
30
+ return isTruthyFlag(globalFlag);
31
+ }
32
+ }
33
+ return false;
34
+ }
35
+ export class HttpBundleProvider {
36
+ constructor(options) {
37
+ this.lastFetched = 0;
38
+ this.etag = null;
39
+ this.lastKnownHash = null;
40
+ this.version = null;
41
+ this.anchors = null;
42
+ this.inflight = null;
43
+ this.listeners = new Set();
44
+ this.initialized = false;
45
+ this.pemChain = null;
46
+ if (!options.url) {
47
+ throw new Error("HTTP trust bundle requires a URL");
48
+ }
49
+ const parsed = new URL(options.url);
50
+ const allowInsecureEnv = isTruthyFlag(getGlobalFlag("FAME_TRUST_BUNDLE_ALLOW_HTTP"));
51
+ const allowInsecureOption = options.allowInsecureHttp === true;
52
+ this.allowInsecureHttp = allowInsecureEnv || allowInsecureOption;
53
+ if (parsed.protocol !== "https:") {
54
+ const isLoopbackHost = isLoopbackHostname(parsed.hostname);
55
+ const devMode = !isProductionEnvironment();
56
+ if (!(this.allowInsecureHttp && devMode && isLoopbackHost)) {
57
+ throw new Error("Trust bundle URL must use HTTPS (set allowInsecureHttp or FAME_TRUST_BUNDLE_ALLOW_HTTP for dev-only http)");
58
+ }
59
+ logger.warning("allowing_insecure_trust_bundle_url", {
60
+ url: parsed.toString(),
61
+ devMode,
62
+ isLoopbackHost,
63
+ });
64
+ }
65
+ this.url = parsed;
66
+ this.refreshIntervalMs = normalizeRefreshInterval(options.refreshIntervalMs);
67
+ this.hashPins = normalizeHashPins(options.hashPins);
68
+ this.allowedSpkis = normalizeAllowedSpkis(options.allowedSpkis);
69
+ this.allowTofu = options.allowTofu === true;
70
+ this.enforceBrowserPins = options.enforcePinsInBrowser !== false;
71
+ this.cacheKey =
72
+ options.cacheKey ?? computeCacheKey(`${parsed.origin}${parsed.pathname}`);
73
+ if (isBrowserEnvironment() && !this.allowTofu && this.enforceBrowserPins) {
74
+ if (this.hashPins.length === 0 && this.allowedSpkis.length === 0) {
75
+ throw new Error("Browser environments require hash pin, SPKI allowlist, or TOFU");
76
+ }
77
+ }
78
+ }
79
+ async getRoots() {
80
+ if (!this.initialized) {
81
+ await this.initialize();
82
+ }
83
+ if (this.inflight) {
84
+ return this.inflight;
85
+ }
86
+ const now = Date.now();
87
+ const stale = now - this.lastFetched >= this.refreshIntervalMs;
88
+ if (stale || !this.anchors) {
89
+ this.inflight = this.fetchLatest()
90
+ .catch((error) => {
91
+ logger.warning("trust_bundle_refresh_failed", {
92
+ error: error instanceof Error ? error.message : String(error),
93
+ });
94
+ if (this.anchors) {
95
+ return this.anchors;
96
+ }
97
+ throw error;
98
+ })
99
+ .finally(() => {
100
+ this.inflight = null;
101
+ });
102
+ return this.inflight;
103
+ }
104
+ return this.anchors;
105
+ }
106
+ async getTrustStorePem() {
107
+ const anchors = await this.getRoots();
108
+ if (!anchors || anchors.length === 0) {
109
+ throw new Error("Trust bundle does not contain any certificates");
110
+ }
111
+ if (!this.pemChain || this.pemChain.trim().length === 0) {
112
+ this.pemChain = anchorsToPem(anchors);
113
+ }
114
+ if (!this.pemChain) {
115
+ throw new Error("Trust bundle PEM resolution failed");
116
+ }
117
+ return this.pemChain;
118
+ }
119
+ onUpdate(callback) {
120
+ this.listeners.add(callback);
121
+ return () => {
122
+ this.listeners.delete(callback);
123
+ };
124
+ }
125
+ async initialize() {
126
+ if (this.initialized) {
127
+ return;
128
+ }
129
+ try {
130
+ const cached = await loadCache(this.cacheKey);
131
+ if (cached) {
132
+ this.applyCachedEntry(cached);
133
+ logger.debug("loaded_trust_bundle_from_cache", {
134
+ url: this.url.href,
135
+ anchorCount: cached.anchors.length,
136
+ });
137
+ }
138
+ }
139
+ catch (error) {
140
+ logger.warning("failed_to_load_cached_trust_bundle", {
141
+ error: error instanceof Error ? error.message : String(error),
142
+ });
143
+ }
144
+ this.initialized = true;
145
+ }
146
+ applyCachedEntry(entry) {
147
+ this.anchors = withComputedSpki(entry.anchors);
148
+ this.etag = entry.etag;
149
+ this.lastFetched = entry.fetchedAt;
150
+ this.lastKnownHash = entry.hash;
151
+ this.version = entry.version;
152
+ this.pemChain = this.anchors ? anchorsToPem(this.anchors) : null;
153
+ }
154
+ async fetchLatest() {
155
+ const headers = {
156
+ "Accept": "application/json, application/pem-certificate-chain, text/plain",
157
+ };
158
+ if (this.etag) {
159
+ headers["If-None-Match"] = this.etag;
160
+ }
161
+ const response = await fetch(this.url, {
162
+ method: "GET",
163
+ headers,
164
+ cache: "no-store",
165
+ });
166
+ if (response.status === 304 && this.anchors) {
167
+ this.lastFetched = Date.now();
168
+ return this.anchors;
169
+ }
170
+ if (!response.ok) {
171
+ throw new Error(`Failed to download trust bundle: ${response.status} ${response.statusText}`);
172
+ }
173
+ const arrayBuffer = await response.arrayBuffer();
174
+ const payload = new Uint8Array(arrayBuffer);
175
+ const hash = computeHash(payload);
176
+ const pins = this.hashPins.length > 0 ? this.hashPins : null;
177
+ if (pins && !pins.includes(hash)) {
178
+ throw new Error("Trust bundle hash mismatch");
179
+ }
180
+ const bundle = parseBundlePayload(payload, this.url.href);
181
+ // Version-based updates: if bundle has version field and it increased, allow hash change
182
+ const isVersionUpgrade = bundle.version !== null && this.version !== null && bundle.version > this.version;
183
+ let expectedHash = pins ? hash : null;
184
+ if (!pins) {
185
+ if (this.allowTofu) {
186
+ // TOFU mode: trust on first use, or if version increased
187
+ if (!this.lastKnownHash || isVersionUpgrade) {
188
+ expectedHash = hash;
189
+ if (this.lastKnownHash && this.lastKnownHash !== hash && isVersionUpgrade) {
190
+ logger.info("trust_bundle_updated_via_version", {
191
+ url: this.url.href,
192
+ previousVersion: this.version,
193
+ newVersion: bundle.version,
194
+ previousHash: this.lastKnownHash,
195
+ newHash: hash,
196
+ });
197
+ }
198
+ }
199
+ else if (this.lastKnownHash !== hash) {
200
+ throw new Error("Trust bundle hash changed without version upgrade");
201
+ }
202
+ else {
203
+ expectedHash = hash;
204
+ }
205
+ }
206
+ else if (this.lastKnownHash) {
207
+ // No TOFU, no pins: hash must not change once established, unless version increased
208
+ if (this.lastKnownHash !== hash) {
209
+ if (isVersionUpgrade) {
210
+ logger.info("trust_bundle_updated_via_version", {
211
+ url: this.url.href,
212
+ previousVersion: this.version,
213
+ newVersion: bundle.version,
214
+ });
215
+ expectedHash = hash;
216
+ }
217
+ else {
218
+ throw new Error("Trust bundle hash changed without pin or version upgrade");
219
+ }
220
+ }
221
+ else {
222
+ expectedHash = hash;
223
+ }
224
+ }
225
+ else if (isBrowserEnvironment() && this.enforceBrowserPins) {
226
+ throw new Error("Browser download without pins or TOFU is blocked");
227
+ }
228
+ }
229
+ if (bundle.version !== null && this.version !== null) {
230
+ if (bundle.version < this.version) {
231
+ throw new Error("Trust bundle downgrade detected");
232
+ }
233
+ }
234
+ if (this.allowedSpkis.length > 0) {
235
+ enforceSpkiAllowlist(bundle.anchors, this.allowedSpkis);
236
+ }
237
+ const etagHeader = response.headers.get("etag");
238
+ this.anchors = withComputedSpki(bundle.anchors);
239
+ this.etag = etagHeader;
240
+ this.lastFetched = Date.now();
241
+ this.lastKnownHash = expectedHash;
242
+ this.version = bundle.version;
243
+ this.pemChain = anchorsToPem(this.anchors);
244
+ const cacheEntry = {
245
+ anchors: this.anchors,
246
+ etag: this.etag,
247
+ fetchedAt: this.lastFetched,
248
+ hash: this.lastKnownHash,
249
+ version: this.version,
250
+ };
251
+ await saveCache(this.cacheKey, cacheEntry);
252
+ this.notifyListeners();
253
+ return this.anchors;
254
+ }
255
+ notifyListeners() {
256
+ for (const callback of this.listeners) {
257
+ try {
258
+ callback();
259
+ }
260
+ catch (error) {
261
+ logger.warning("trust_bundle_listener_failed", {
262
+ error: error instanceof Error ? error.message : String(error),
263
+ });
264
+ }
265
+ }
266
+ }
267
+ }
268
+ function getGlobalFlag(name) {
269
+ if (typeof process !== "undefined" && process.env) {
270
+ const envValue = process.env[name];
271
+ if (envValue !== undefined) {
272
+ return envValue;
273
+ }
274
+ }
275
+ if (typeof globalThis !== "undefined") {
276
+ return globalThis[name];
277
+ }
278
+ return undefined;
279
+ }
280
+ function isLoopbackHostname(hostname) {
281
+ if (hostname === "localhost" || hostname === "[::1]") {
282
+ return true;
283
+ }
284
+ if (/^127(?:\.\d{1,3}){3}$/.test(hostname)) {
285
+ return true;
286
+ }
287
+ return false;
288
+ }
289
+ function parseBundlePayload(payload, sourceUrl) {
290
+ const text = bytesToUtf8(payload);
291
+ const trimmed = text.trim();
292
+ if (trimmed.startsWith("{")) {
293
+ const parsed = JSON.parse(trimmed);
294
+ const version = typeof parsed.version === "number" ? parsed.version : null;
295
+ const roots = Array.isArray(parsed.roots) ? parsed.roots : [];
296
+ const anchors = roots
297
+ .map((root) => {
298
+ const record = root;
299
+ const pem = normalizePem(String(record.pem ?? ""));
300
+ if (!pem) {
301
+ return null;
302
+ }
303
+ const anchor = {
304
+ pem,
305
+ ...(typeof record.kid === "string" ? { kid: record.kid } : {}),
306
+ ...(typeof record.validUntil === "string"
307
+ ? { notAfter: record.validUntil }
308
+ : {}),
309
+ ...(typeof record.notBefore === "string"
310
+ ? { notBefore: record.notBefore }
311
+ : {}),
312
+ };
313
+ return anchor;
314
+ })
315
+ .filter((anchor) => anchor !== null);
316
+ if (anchors.length === 0) {
317
+ throw new Error("Trust bundle JSON does not contain any roots");
318
+ }
319
+ return { anchors, version };
320
+ }
321
+ if (trimmed.includes("-----BEGIN")) {
322
+ return { anchors: pemChainToAnchors(trimmed), version: null };
323
+ }
324
+ throw new Error(`Unsupported trust bundle format from ${sourceUrl}`);
325
+ }
326
+ function enforceSpkiAllowlist(anchors, allowlist) {
327
+ const missing = [];
328
+ for (const anchor of anchors) {
329
+ const spki = anchor.spkiSha256 ?? computeSpkiSha256(anchor.pem);
330
+ if (!spki || !allowlist.includes(spki)) {
331
+ missing.push(anchor.kid ?? spki ?? "unknown");
332
+ }
333
+ }
334
+ if (missing.length > 0) {
335
+ throw new Error(`Trust bundle contains roots not present in SPKI allowlist: ${missing.join(",")}`);
336
+ }
337
+ }
338
+ function normalizeHashPins(pins) {
339
+ if (!pins || pins.length === 0) {
340
+ return [];
341
+ }
342
+ return pins
343
+ .map((pin) => pin.trim())
344
+ .filter((pin) => pin.length > 0)
345
+ .map((pin) => {
346
+ if (/^[0-9a-fA-F]{64}$/u.test(pin)) {
347
+ return hexToBase64Url(pin);
348
+ }
349
+ return pin;
350
+ });
351
+ }
352
+ function normalizeAllowedSpkis(entries) {
353
+ if (!entries || entries.length === 0) {
354
+ return [];
355
+ }
356
+ return entries.map((entry) => entry.trim()).filter((entry) => entry.length);
357
+ }
358
+ function normalizeRefreshInterval(value) {
359
+ if (typeof value !== "number" || Number.isNaN(value) || value <= 0) {
360
+ return DEFAULT_REFRESH_INTERVAL_MS;
361
+ }
362
+ return Math.max(MIN_REFRESH_INTERVAL_MS, Math.floor(value));
363
+ }
364
+ function computeHash(payload) {
365
+ const digest = sha256(payload);
366
+ return toBase64Url(digest);
367
+ }
368
+ function hexToBase64Url(hex) {
369
+ const bytes = new Uint8Array(hex.length / 2);
370
+ for (let index = 0; index < bytes.length; index += 1) {
371
+ bytes[index] = parseInt(hex.slice(index * 2, index * 2 + 2), 16);
372
+ }
373
+ return toBase64Url(bytes);
374
+ }
375
+ function bytesToUtf8(data) {
376
+ if (typeof TextDecoder !== "undefined") {
377
+ return new TextDecoder().decode(data);
378
+ }
379
+ if (typeof Buffer !== "undefined") {
380
+ return Buffer.from(data).toString("utf8");
381
+ }
382
+ return String.fromCharCode(...Array.from(data));
383
+ }
384
+ function computeCacheKey(value) {
385
+ const digest = sha256(new TextEncoder().encode(value));
386
+ return Array.from(digest)
387
+ .map((byte) => byte.toString(16).padStart(2, "0"))
388
+ .join("");
389
+ }
390
+ async function loadCache(key) {
391
+ if (isCacheDisabled()) {
392
+ return null;
393
+ }
394
+ if (isNodeEnvironment()) {
395
+ return loadCacheFromFile(key);
396
+ }
397
+ return loadCacheFromBrowser(key);
398
+ }
399
+ async function saveCache(key, entry) {
400
+ if (isCacheDisabled()) {
401
+ return;
402
+ }
403
+ if (isNodeEnvironment()) {
404
+ await saveCacheToFile(key, entry);
405
+ }
406
+ else {
407
+ await saveCacheToBrowser(key, entry);
408
+ }
409
+ }
410
+ async function loadCacheFromFile(key) {
411
+ try {
412
+ const { default: path } = await import("node:path");
413
+ const fs = await import("node:fs/promises");
414
+ const os = await import("node:os");
415
+ const dir = path.join(os.homedir(), ".naylence", "trust-bundles");
416
+ const filePath = path.join(dir, `${key}.json`);
417
+ const content = await fs.readFile(filePath, "utf8");
418
+ const parsed = JSON.parse(content);
419
+ return parsed;
420
+ }
421
+ catch (error) {
422
+ if (error?.code === "ENOENT") {
423
+ return null;
424
+ }
425
+ throw error;
426
+ }
427
+ }
428
+ async function saveCacheToFile(key, entry) {
429
+ const { default: path } = await import("node:path");
430
+ const fs = await import("node:fs/promises");
431
+ const os = await import("node:os");
432
+ const dir = path.join(os.homedir(), ".naylence", "trust-bundles");
433
+ await fs.mkdir(dir, { recursive: true });
434
+ const filePath = path.join(dir, `${key}.json`);
435
+ const payload = JSON.stringify(entry, null, 2);
436
+ await fs.writeFile(filePath, payload, "utf8");
437
+ }
438
+ const BROWSER_CACHE_NAMESPACE = "naylence.trustBundles";
439
+ async function loadCacheFromBrowser(key) {
440
+ const store = await openBrowserStore();
441
+ if (!store) {
442
+ return null;
443
+ }
444
+ return store.get(key);
445
+ }
446
+ async function saveCacheToBrowser(key, entry) {
447
+ const store = await openBrowserStore();
448
+ if (!store) {
449
+ return;
450
+ }
451
+ await store.set(key, entry);
452
+ }
453
+ async function openBrowserStore() {
454
+ if (typeof indexedDB !== "undefined") {
455
+ return openIndexedDbStore();
456
+ }
457
+ if (typeof localStorage !== "undefined") {
458
+ return {
459
+ async get(key) {
460
+ const payload = localStorage.getItem(`${BROWSER_CACHE_NAMESPACE}:${key}`);
461
+ if (!payload) {
462
+ return null;
463
+ }
464
+ return JSON.parse(payload);
465
+ },
466
+ async set(key, value) {
467
+ localStorage.setItem(`${BROWSER_CACHE_NAMESPACE}:${key}`, JSON.stringify(value));
468
+ },
469
+ };
470
+ }
471
+ return null;
472
+ }
473
+ async function openIndexedDbStore() {
474
+ return new Promise((resolve) => {
475
+ const request = indexedDB.open("naylence_trust_bundles", 1);
476
+ request.onupgradeneeded = () => {
477
+ const db = request.result;
478
+ if (!db.objectStoreNames.contains("bundles")) {
479
+ db.createObjectStore("bundles");
480
+ }
481
+ };
482
+ request.onsuccess = () => {
483
+ const db = request.result;
484
+ resolve({
485
+ get: (key) => new Promise((storeResolve, storeReject) => {
486
+ const transaction = db.transaction("bundles", "readonly");
487
+ const store = transaction.objectStore("bundles");
488
+ const getRequest = store.get(key);
489
+ getRequest.onsuccess = () => {
490
+ storeResolve(getRequest.result ?? null);
491
+ };
492
+ getRequest.onerror = () => {
493
+ storeReject(getRequest.error ?? new Error("IndexedDB get failed"));
494
+ };
495
+ }),
496
+ set: (key, value) => new Promise((storeResolve, storeReject) => {
497
+ const transaction = db.transaction("bundles", "readwrite");
498
+ const store = transaction.objectStore("bundles");
499
+ const putRequest = store.put(value, key);
500
+ putRequest.onsuccess = () => {
501
+ storeResolve();
502
+ };
503
+ putRequest.onerror = () => {
504
+ storeReject(putRequest.error ?? new Error("IndexedDB put failed"));
505
+ };
506
+ }),
507
+ });
508
+ };
509
+ request.onerror = () => {
510
+ logger.warning("indexeddb_unavailable_for_trust_bundle_caching", {
511
+ error: request.error ? String(request.error) : "unknown",
512
+ });
513
+ resolve(null);
514
+ };
515
+ });
516
+ }
517
+ function isBrowserEnvironment() {
518
+ return typeof window !== "undefined" && typeof window.document !== "undefined";
519
+ }
520
+ function isNodeEnvironment() {
521
+ return (typeof process !== "undefined" &&
522
+ typeof process.versions !== "undefined" &&
523
+ typeof process.versions.node === "string");
524
+ }
525
+ function isProductionEnvironment() {
526
+ return (typeof process !== "undefined" &&
527
+ typeof process.env !== "undefined" &&
528
+ process.env.NODE_ENV === "production");
529
+ }
530
+ //# sourceMappingURL=http-bundle-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-bundle-provider.js","sourceRoot":"","sources":["../../../../../../../src/naylence/fame/security/cert/trust-store/http-bundle-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { HttpBundleProvider } from "./http-bundle-provider.js";
2
+ //# sourceMappingURL=http-signed-bundle-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-signed-bundle-provider.js","sourceRoot":"","sources":["../../../../../../../src/naylence/fame/security/cert/trust-store/http-signed-bundle-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,61 @@
1
+ import { TRUST_STORE_PROVIDER_FACTORY_BASE_TYPE, TrustStoreProviderFactory, } from "@naylence/runtime";
2
+ import { createTrustStoreProviderFromEnv } from "./env-provider.js";
3
+ export const FACTORY_META = {
4
+ base: TRUST_STORE_PROVIDER_FACTORY_BASE_TYPE,
5
+ key: "EnvTrustStoreProvider",
6
+ isDefault: isNodeEnvironment(),
7
+ priority: isNodeEnvironment() ? 100 : 0,
8
+ };
9
+ export class EnvTrustStoreProviderFactory extends TrustStoreProviderFactory {
10
+ constructor() {
11
+ super(...arguments);
12
+ this.type = "EnvTrustStoreProvider";
13
+ this.isDefault = FACTORY_META.isDefault;
14
+ this.priority = FACTORY_META.priority;
15
+ }
16
+ async create(config, ...factoryArgs) {
17
+ const normalizedConfig = this.normalizeConfig(config);
18
+ const dependencies = this.extractDependencies(factoryArgs);
19
+ const envOverride = normalizedConfig.env ?? dependencies?.env ?? null;
20
+ const requirePinsInBrowser = normalizedConfig.requirePinsInBrowser ?? false;
21
+ const provider = await createTrustStoreProviderFromEnv({
22
+ env: envOverride ?? undefined,
23
+ requirePinsInBrowser,
24
+ });
25
+ if (provider) {
26
+ return provider;
27
+ }
28
+ return this.createUnconfiguredProvider("Trust store is not configured. For Node.js, set FAME_CA_CERTS to a PEM string, a file path, a data URI, or an HTTPS URL.");
29
+ }
30
+ normalizeConfig(config) {
31
+ if (!config) {
32
+ return {
33
+ type: "EnvTrustStoreProvider",
34
+ };
35
+ }
36
+ if (config.type === "EnvTrustStoreProvider") {
37
+ return config;
38
+ }
39
+ return {
40
+ ...config,
41
+ type: "EnvTrustStoreProvider",
42
+ };
43
+ }
44
+ extractDependencies(factoryArgs) {
45
+ if (factoryArgs.length === 0) {
46
+ return null;
47
+ }
48
+ const candidate = factoryArgs[0];
49
+ if (candidate && typeof candidate === "object") {
50
+ return candidate;
51
+ }
52
+ return null;
53
+ }
54
+ }
55
+ function isNodeEnvironment() {
56
+ return (typeof process !== "undefined" &&
57
+ typeof process.versions !== "undefined" &&
58
+ typeof process.versions.node === "string");
59
+ }
60
+ export default EnvTrustStoreProviderFactory;
61
+ //# sourceMappingURL=node-trust-store-provider-factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-trust-store-provider-factory.js","sourceRoot":"","sources":["../../../../../../../src/naylence/fame/security/cert/trust-store/node-trust-store-provider-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sCAAsC,EACtC,yBAAyB,GAI1B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,+BAA+B,EAAE,MAAM,mBAAmB,CAAC;AAQpE,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,IAAI,EAAE,sCAAsC;IAC5C,GAAG,EAAE,uBAAuB;IAC5B,SAAS,EAAE,iBAAiB,EAAE;IAC9B,QAAQ,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAC/B,CAAC;AAEX,MAAM,OAAO,4BAA6B,SAAQ,yBAAsD;IAAxG;;QACkB,SAAI,GAAG,uBAAuB,CAAC;QAC/B,cAAS,GAAG,YAAY,CAAC,SAAS,CAAC;QACnC,aAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC;IA2DnD,CAAC;IAzDQ,KAAK,CAAC,MAAM,CACjB,MAAqE,EACrE,GAAG,WAAsB;QAEzB,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QACtD,MAAM,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;QAE3D,MAAM,WAAW,GAAG,gBAAgB,CAAC,GAAG,IAAI,YAAY,EAAE,GAAG,IAAI,IAAI,CAAC;QACtE,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,oBAAoB,IAAI,KAAK,CAAC;QAE5E,MAAM,QAAQ,GAAG,MAAM,+BAA+B,CAAC;YACrD,GAAG,EAAE,WAAW,IAAI,SAAS;YAC7B,oBAAoB;SACrB,CAAC,CAAC;QAEH,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,OAAO,IAAI,CAAC,0BAA0B,CACpC,0HAA0H,CAC3H,CAAC;IACJ,CAAC;IAEO,eAAe,CACrB,MAAqE;QAErE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;gBACL,IAAI,EAAE,uBAAuB;aAC9B,CAAC;QACJ,CAAC;QAED,IAAK,MAAsC,CAAC,IAAI,KAAK,uBAAuB,EAAE,CAAC;YAC7E,OAAO,MAAqC,CAAC;QAC/C,CAAC;QAED,OAAO;YACL,GAAG,MAAM;YACT,IAAI,EAAE,uBAAuB;SACC,CAAC;IACnC,CAAC;IAEO,mBAAmB,CACzB,WAA+B;QAE/B,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QACjC,IAAI,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;YAC/C,OAAO,SAA2C,CAAC;QACrD,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED,SAAS,iBAAiB;IACxB,OAAO,CACL,OAAO,OAAO,KAAK,WAAW;QAC9B,OAAO,OAAO,CAAC,QAAQ,KAAK,WAAW;QACvC,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAC1C,CAAC;AACJ,CAAC;AAED,eAAe,4BAA4B,CAAC"}