@keetanetwork/anchor 0.0.38 → 0.0.40

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 (103) hide show
  1. package/client/index.d.ts +6 -0
  2. package/client/index.d.ts.map +1 -1
  3. package/client/index.js +7 -0
  4. package/client/index.js.map +1 -1
  5. package/lib/block-listener.d.ts +93 -0
  6. package/lib/block-listener.d.ts.map +1 -0
  7. package/lib/block-listener.js +259 -0
  8. package/lib/block-listener.js.map +1 -0
  9. package/lib/encrypted-container.d.ts +53 -3
  10. package/lib/encrypted-container.d.ts.map +1 -1
  11. package/lib/encrypted-container.js +549 -93
  12. package/lib/encrypted-container.js.map +1 -1
  13. package/lib/error.d.ts.map +1 -1
  14. package/lib/error.js +3 -1
  15. package/lib/error.js.map +1 -1
  16. package/lib/http-server/index.d.ts +14 -1
  17. package/lib/http-server/index.d.ts.map +1 -1
  18. package/lib/http-server/index.js +144 -12
  19. package/lib/http-server/index.js.map +1 -1
  20. package/lib/queue/drivers/queue_firestore.d.ts +29 -0
  21. package/lib/queue/drivers/queue_firestore.d.ts.map +1 -0
  22. package/lib/queue/drivers/queue_firestore.js +279 -0
  23. package/lib/queue/drivers/queue_firestore.js.map +1 -0
  24. package/lib/queue/index.d.ts +74 -3
  25. package/lib/queue/index.d.ts.map +1 -1
  26. package/lib/queue/index.js +161 -36
  27. package/lib/queue/index.js.map +1 -1
  28. package/lib/resolver.d.ts +61 -15
  29. package/lib/resolver.d.ts.map +1 -1
  30. package/lib/resolver.js +1132 -686
  31. package/lib/resolver.js.map +1 -1
  32. package/lib/utils/signing.d.ts +12 -3
  33. package/lib/utils/signing.d.ts.map +1 -1
  34. package/lib/utils/signing.js +7 -13
  35. package/lib/utils/signing.js.map +1 -1
  36. package/npm-shrinkwrap.json +6 -6
  37. package/package.json +2 -1
  38. package/services/asset-movement/client.d.ts +10 -3
  39. package/services/asset-movement/client.d.ts.map +1 -1
  40. package/services/asset-movement/client.js +36 -3
  41. package/services/asset-movement/client.js.map +1 -1
  42. package/services/asset-movement/common.d.ts +57 -22
  43. package/services/asset-movement/common.d.ts.map +1 -1
  44. package/services/asset-movement/common.js +370 -70
  45. package/services/asset-movement/common.js.map +1 -1
  46. package/services/fx/client.d.ts +15 -3
  47. package/services/fx/client.d.ts.map +1 -1
  48. package/services/fx/client.js +18 -0
  49. package/services/fx/client.js.map +1 -1
  50. package/services/fx/common.d.ts +1 -1
  51. package/services/fx/common.js.map +1 -1
  52. package/services/fx/server.d.ts +59 -9
  53. package/services/fx/server.d.ts.map +1 -1
  54. package/services/fx/server.js +337 -140
  55. package/services/fx/server.js.map +1 -1
  56. package/services/fx/util.d.ts +26 -8
  57. package/services/fx/util.d.ts.map +1 -1
  58. package/services/fx/util.js +92 -4
  59. package/services/fx/util.js.map +1 -1
  60. package/services/storage/client.d.ts +322 -0
  61. package/services/storage/client.d.ts.map +1 -0
  62. package/services/storage/client.js +1058 -0
  63. package/services/storage/client.js.map +1 -0
  64. package/services/storage/common.d.ts +653 -0
  65. package/services/storage/common.d.ts.map +1 -0
  66. package/services/storage/common.generated.d.ts +17 -0
  67. package/services/storage/common.generated.d.ts.map +1 -0
  68. package/services/storage/common.generated.js +863 -0
  69. package/services/storage/common.generated.js.map +1 -0
  70. package/services/storage/common.js +587 -0
  71. package/services/storage/common.js.map +1 -0
  72. package/services/storage/lib/validators.d.ts +64 -0
  73. package/services/storage/lib/validators.d.ts.map +1 -0
  74. package/services/storage/lib/validators.js +82 -0
  75. package/services/storage/lib/validators.js.map +1 -0
  76. package/services/storage/server.d.ts +127 -0
  77. package/services/storage/server.d.ts.map +1 -0
  78. package/services/storage/server.js +626 -0
  79. package/services/storage/server.js.map +1 -0
  80. package/services/storage/test-utils.d.ts +70 -0
  81. package/services/storage/test-utils.d.ts.map +1 -0
  82. package/services/storage/test-utils.js +347 -0
  83. package/services/storage/test-utils.js.map +1 -0
  84. package/services/storage/utils.d.ts +3 -0
  85. package/services/storage/utils.d.ts.map +1 -0
  86. package/services/storage/utils.js +10 -0
  87. package/services/storage/utils.js.map +1 -0
  88. package/services/username/client.d.ts +145 -0
  89. package/services/username/client.d.ts.map +1 -0
  90. package/services/username/client.js +681 -0
  91. package/services/username/client.js.map +1 -0
  92. package/services/username/common.d.ts +136 -0
  93. package/services/username/common.d.ts.map +1 -0
  94. package/services/username/common.generated.d.ts +13 -0
  95. package/services/username/common.generated.d.ts.map +1 -0
  96. package/services/username/common.generated.js +256 -0
  97. package/services/username/common.generated.js.map +1 -0
  98. package/services/username/common.js +226 -0
  99. package/services/username/common.js.map +1 -0
  100. package/services/username/server.d.ts +51 -0
  101. package/services/username/server.d.ts.map +1 -0
  102. package/services/username/server.js +264 -0
  103. package/services/username/server.js.map +1 -0
@@ -1 +1 @@
1
- {"version":3,"file":"encrypted-container.js","sourceRoot":"","sources":["../../src/lib/encrypted-container.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAAE,GAAG,IAAI,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAKnE,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACrF,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,MAAM,gBAAgB,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC;AACnE,MAAM,gBAAgB,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC;AACnE,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;AACjD,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;AACjD,MAAM,OAAO,GAA+B,WAAW,CAAC,OAAO,CAAC;AAgHhE,MAAM,KAAK,GAAG;IACb,aAAa,EAAE,yBAAyB;CAC/B,CAAC;AAEX;;;;EAIE;AACF,KAAK,UAAU,SAAS,CAAC,SAAiB,EAAE,iBAA+B;IAC1E,MAAM,mBAAmB,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;IAE3E,MAAM,QAAQ,GAA8B,EAAE,CAAC;IAE/C;;OAEG;IACH,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAEhB;;OAEG;IACH,IAAI,iBAAiB,EAAE,CAAC;QACvB,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,iBAAiB,CAAC;QAEpE,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC9H,MAAK,CAAC,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC,CAAC;QACnE,CAAC;QAED,IAAI,CAAC,CAAC,UAAU,IAAI,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAK,CAAC,IAAI,KAAK,CAAC,0BAA0B,UAAU,EAAE,CAAC,CAAC,CAAC;QAC1D,CAAC;QAED,yEAAyE;QACzE,MAAM,YAAY,GAAG,KAAK,CAAC,UAAgC,CAAC,CAAC;QAE7D,MAAM,MAAM,GAAG,MAAM,CAAC,cAAc,CACnC,UAAU,EACV,SAAS,EACT,QAAQ,CACR,CAAC;QAEF,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC;YACnC,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC;YAClC,MAAM,CAAC,KAAK,EAAE;SACd,CAAC,CAAC;QAEH,MAAM,oBAAoB,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;QAE5D,MAAM,sBAAsB,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,WAAU,GAAG;YAC3E,MAAM,qBAAqB,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC;YACnF,MAAM,MAAM,GAA+B;gBAC1C,GAAG,CAAC,gBAAgB;gBACpB,qBAAqB;aACrB,CAAC;YAEF,OAAM,CAAC,MAAM,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC,CAAC;QAEJ,QAAQ,CAAC,CAAC,CAAC,GAAG;YACb,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,CAAC;YACR,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE;gBACT,sBAAsB;gBACtB,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE;gBAClC,QAAQ;gBACR,aAAa;aACb;SACD,CAAC;IACH,CAAC;SAAM,CAAC;QACP;;WAEG;QACH,QAAQ,CAAC,CAAC,CAAC,GAAG;YACb,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,CAAC;YACR,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE,CAAC,mBAAmB,CAAC;SAC/B,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAEvD,OAAM,CAAC,SAAS,CAAC,CAAC;AACnB,CAAC;AAED,SAAS,aAAa,CAAC,KAAa,EAAE,8BAA8B,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC;IAC7F,MAAM,aAAa,GAAG,QAAQ,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3D,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE,CAAC;QAChC,MAAK,CAAC,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IACjC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QACjC,MAAK,CAAC,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;QACpB,MAAK,CAAC,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAClC,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACvD,MAAK,CAAC,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED,IAAI,CAAC,CAAC,MAAM,IAAI,QAAQ,CAAC,IAAI,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAChE,MAAK,CAAC,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACjC,MAAK,CAAC,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,IAAI,CAAC,CAAC,OAAO,IAAI,QAAQ,CAAC,IAAI,OAAO,QAAQ,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QAClE,MAAK,CAAC,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC,CAAC;IACpF,CAAC;IAED,IAAI,QAAQ,CAAC,KAAK,KAAK,CAAC,IAAI,QAAQ,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;QAClD,MAAK,CAAC,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC,CAAC;IAChF,CAAC;IAED,IAAI,CAAC,CAAC,UAAU,IAAI,QAAQ,CAAC,IAAI,OAAO,QAAQ,CAAC,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtG,MAAK,CAAC,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC,CAAC;IAC/E,CAAC;IAED,IAAI,WAAW,CAAC;IAChB,IAAI,QAAQ,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;QAC1B,WAAW,GAAG,IAAI,CAAC;IACpB,CAAC;SAAM,CAAC;QACP,WAAW,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC;IAChC,IAAI,mBAA2B,CAAC;IAChC,IAAI,UAAU,CAAC;IACf,IAAI,WAAW,EAAE,CAAC;QACjB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC;YACxB,MAAK,CAAC,IAAI,KAAK,CAAC,+EAA+E,CAAC,CAAC,CAAC;QACnG,CAAC;QAED,MAAM,gBAAgB,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAClC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAChC,MAAK,CAAC,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC,CAAC;QACxE,CAAC;QAED,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,UAAS,YAAY;YACzD,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC;gBAC/B,MAAK,CAAC,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC,CAAC;YAC1F,CAAC;YAED,MAAM,eAAe,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YACxC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;gBACvC,MAAK,CAAC,IAAI,KAAK,CAAC,oFAAoF,CAAC,CAAC,CAAC;YACxG,CAAC;YACD,MAAM,SAAS,GAAG,OAAO,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC;YAEhE,MAAM,qBAAqB,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YAC9C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,CAAC;gBAC7C,MAAK,CAAC,IAAI,KAAK,CAAC,oFAAoF,CAAC,CAAC,CAAC;YACxG,CAAC;YAED,OAAM,CAAC;gBACN,SAAS;gBACT,qBAAqB;aACrB,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,6DAA6D;QAC7D,MAAM,sBAAsB,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACxC,6DAA6D;QAC7D,MAAM,mBAAmB,GAAG,aAAa,CAAC;QAE1C,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChC,MAAK,CAAC,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC,CAAC;QACzE,CAAC;QAED,MAAM,wBAAwB,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,wBAAwB,CAAC,EAAE,CAAC;YAChD,MAAK,CAAC,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAC,CAAC;QAC3F,CAAC;QAED,UAAU,GAAG;YACZ,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,QAAQ;YAClB,aAAa,EAAE,wBAAwB;YACvC,mBAAmB,EAAE,mBAAmB;SACxC,CAAC;QAEF,mBAAmB,GAAG,wBAAwB,CAAC;IAChD,CAAC;SAAM,CAAC;QACP,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC;YACxB,MAAK,CAAC,IAAI,KAAK,CAAC,+EAA+E,CAAC,CAAC,CAAC;QACnG,CAAC;QAED,MAAM,4BAA4B,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC9C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,4BAA4B,CAAC,EAAE,CAAC;YACpD,MAAK,CAAC,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC,CAAC;QACjF,CAAC;QAED,IAAI,CAAC,8BAA8B,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACtD,MAAK,CAAC,IAAI,KAAK,CAAC,sFAAsF,CAAC,CAAC,CAAC;QAC1G,CAAC;QAED,mBAAmB,GAAG,4BAA4B,CAAC;IACpD,CAAC;IAED,OAAM,CAAC;QACN,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,WAAW;QACxB,UAAU,EAAE,mBAAmB;QAC/B,GAAG,UAAU;KACb,CAAC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,SAA2C,EAAE,IAAgB;IAC5F,IAAI,mBAA2B,CAAC;IAChC,IAAI,UAAU,CAAC;IACf,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC;QAC3B,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7C,MAAK,CAAC,IAAI,KAAK,CAAC,+EAA+E,CAAC,CAAC,CAAC;QACnG,CAAC;QAED,MAAM,SAAS,GAAG,SAAS,CAAC,mBAAmB,CAAC;QAChD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC7B,MAAK,CAAC,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC,CAAC;QACzF,CAAC;QAED,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC;QAC/B,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAK,CAAC,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC,CAAC;QACjF,CAAC;QAED,IAAI,iBAAiB,CAAC;QACtB,KAAK,MAAM,YAAY,IAAI,OAAO,EAAE,CAAC;YACpC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACxB,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;oBACxB,SAAS;gBACV,CAAC;gBAED,IAAI,GAAG,CAAC,gBAAgB,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC;oBAClD,iBAAiB,GAAG;wBACnB,GAAG,YAAY;wBACf,UAAU,EAAE,GAAG;qBACf,CAAC;oBAEF,MAAM;gBACP,CAAC;YACF,CAAC;QACF,CAAC;QAED,IAAI,iBAAiB,KAAK,SAAS,EAAE,CAAC;YACrC,MAAK,CAAC,IAAI,KAAK,CAAC,2EAA2E,CAAC,CAAC,CAAC;QAC/F,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,iBAAiB,CAAC,UAAU,CAAC,OAAO,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAExI,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;QACpC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC5B,MAAK,CAAC,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC,CAAC;QACxD,CAAC;QAED,MAAM,wBAAwB,GAAG,SAAS,CAAC,UAAU,CAAC;QACtD,MAAM,QAAQ,GAAG,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QACzE,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC;YACnC,QAAQ,CAAC,MAAM,CAAC,wBAAwB,CAAC;YACzC,QAAQ,CAAC,KAAK,EAAE;SAChB,CAAC,CAAC;QAEH,UAAU,GAAG;YACZ,WAAW,EAAE,IAAI;YACjB,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,QAAQ;YAClB,SAAS,EAAE,SAAS;YACpB,aAAa,EAAE,wBAAwB;SACvC,CAAC;IACH,CAAC;SAAM,CAAC;QACP,mBAAmB,GAAG,SAAS,CAAC,UAAU,CAAC;QAC3C,UAAU,GAAG;YACZ,WAAW,EAAE,KAAK;SAClB,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,gBAAgB,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAE3E,OAAM,CAAC;QACN,OAAO,EAAE,SAAS,CAAC,OAAO;QAC1B,SAAS,EAAE,SAAS;QACpB,GAAG,UAAU;KACb,CAAC,CAAC;AAEJ,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,KAAa,EAAE,IAAgB;IACvD,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAEvD,OAAM,CAAC,MAAM,CAAC,CAAC;AAChB,CAAC;AAED,SAAS,aAAa,CAAC,IAAmC;IACzD,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IACpC,CAAC;SAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAClC,OAAM,CAAC,IAAI,CAAC,CAAC;IACd,CAAC;SAAM,CAAC;QACP,OAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC;IACnC,CAAC;AACF,CAAC;AAgBD,MAAM,OAAO,kBAAkB;IACtB,MAAM,CAAU,SAAS,GAAG,aAAa,CAAC;IAElD;;OAEG;IACH,mBAAmB,GAAG,IAAI,CAAC;IAE3B;;OAEG;IACO,cAAc,CAAoD;IAE5E;;OAEG;IACH,KAAK,CAGmC;IAExC,YAAY,UAA4B;QACvC,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;YACzB,IAAI,CAAC,cAAc,GAAG;gBACrB,UAAU,EAAE,IAAI;aAChB,CAAC;QACH,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,cAAc,GAAG;gBACrB,UAAU,EAAE,UAAU;gBACtB,UAAU,EAAE,kBAAkB,CAAC,SAAS;aACxC,CAAA;QACF,CAAC;QAAA,CAAC;QACF,IAAI,CAAC,KAAK,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7C,CAAC;IAED,IAAI,SAAS;QACZ,OAAM,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC;IACjD,CAAC;IAED,YAAY;QACX,OAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACxB,CAAC;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,mBAAmB,CAAC,IAA0B,EAAE,UAAqB;QAC3E,MAAM,MAAM,GAAG,IAAI,kBAAkB,CAAC,UAAU,CAAC,CAAC;QAElD,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAEnC,OAAM,CAAC,MAAM,CAAC,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,iBAAiB,CAAC,IAA0B,EAAE,UAA4B;QAChF,MAAM,MAAM,GAAG,IAAI,kBAAkB,CAAC,UAAU,CAAC,CAAC;QAElD,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAEpC,OAAM,CAAC,MAAM,CAAC,CAAC;IAChB,CAAC;IAED;;;;;;;;;OASG;IACH,MAAM,CAAC,aAAa,CAAC,IAAmC,EAAE,UAA4B,EAAE,MAAgB;QACvG,MAAM,MAAM,GAAG,IAAI,kBAAkB,CAAC,UAAU,CAAC,CAAC;QAElD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM,GAAG,IAAI,CAAC;YACd,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;gBACzB,MAAM,GAAG,KAAK,CAAC;YAChB,CAAC;QACF,CAAC;QAED,IAAI,MAAM,EAAE,CAAC;YACZ,MAAM,CAAC,gBAAgB,EAAE,CAAC;QAC3B,CAAC;QAED,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAE1B,OAAM,CAAC,MAAM,CAAC,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,IAAmC;QAC/C,IAAI,CAAC,KAAK,GAAG,EAAE,SAAS,EAAE,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;IACjD,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,IAA0B;QAC3C,IAAI,CAAC,KAAK,GAAG,EAAE,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;IAC/C,CAAC;IAED,IAAY,QAAQ;QACnB,IAAI,SAAS,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YACjE,OAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC;QAED,OAAM,CAAC,SAAS,CAAC,CAAC;IACnB,CAAC;IAED,IAAY,UAAU;QACrB,IAAI,WAAW,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACrE,OAAM,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC9B,CAAC;QAED,OAAM,CAAC,SAAS,CAAC,CAAC;IACnB,CAAC;IAED;;;OAGG;IACH,qBAAqB,CAAC,eAAwB;QAC7C,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACjC,MAAK,CAAC,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,gBAAgB,GAAG,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEtD,IAAI,eAAe,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC;YACtD,MAAK,CAAC,IAAI,KAAK,CAAC,2FAA2F,CAAC,CAAC,CAAC;QAC/G,CAAC;QAED,IAAI,gBAAgB,CAAC,WAAW,EAAE,CAAC;YAClC,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC;YAClD,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;gBACzB,MAAK,CAAC,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC,CAAC;YACxE,CAAC;YAED;;;eAGG;YACH;;;eAGG;YACH,MAAM,cAAc,GAAG,CAAC,gBAAgB,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;gBACpE,MAAM,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC;gBAC3C,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,EAAE,CAAC;oBACnC,MAAK,CAAC,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC,CAAC;gBACtF,CAAC;gBAED,KAAK,MAAM,gBAAgB,IAAI,UAAU,EAAE,CAAC;oBAC3C,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,EAAE,CAAC;wBACzD,OAAM,CAAC,gBAAgB,CAAC,CAAC;oBAC1B,CAAC;gBACF,CAAC;gBAED,OAAM,CAAC,gBAAgB,CAAC,CAAC;YAC1B,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,cAAc,CAAC,UAAU,GAAG,cAAc,CAAC;YAEhD,uFAAuF;YACvF,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACrB,MAAK,CAAC,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC,CAAC;YACtF,CAAC;QACF,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,cAAc,CAAC,UAAU,GAAG,IAAI,CAAC;YAEtC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACpB,MAAK,CAAC,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC,CAAC;YAClF,CAAC;QACF,CAAC;QAED,OAAM,CAAC,gBAAgB,CAAC,CAAC;IAC1B,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,iBAAiB;QACtB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,OAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzB,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACjC,MAAK,CAAC,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC,CAAC;QAC5D,CAAC;QAGD,MAAM,IAAI,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAExD,IAAI,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC;QAChD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;gBACzB,MAAK,CAAC,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC,CAAC;YACxE,CAAC;QACF,CAAC;aAAM,CAAC;YACP,UAAU,GAAG,EAAE,CAAC;QACjB,CAAC;QAED,MAAM,gBAAgB,GAAG,MAAM,gBAAgB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAClE,MAAM,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAC;QAE7C,IAAI,CAAC,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC;QAE1C,OAAM,CAAC,SAAS,CAAC,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,wBAAwB;QAC7B,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACnC,MAAK,CAAC,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC,CAAC;QACjD,CAAC;QAED,MAAM,cAAc,GAAG,MAAM,SAAS,CACrC,IAAI,CAAC,UAAU,CACf,CAAC;QAEF,OAAM,CAAC,cAAc,CAAC,CAAC;IACxB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,wBAAwB;QAC7B,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACnC,MAAK,CAAC,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC,CAAC;QAC/D,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;YAC1B,MAAK,CAAC,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC,CAAC;QACzE,CAAC;QAED;;WAEG;QACH,MAAM,cAAc,GAAG,MAAM,SAAS,CACrC,IAAI,CAAC,UAAU,EACf;YACC,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,UAAU;YACpC,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;YACjC,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;YAChC,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,UAAU;SAC1C,CACD,CAAC;QAEF,OAAM,CAAC,cAAc,CAAC,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,eAAe;QACpB,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACjC,OAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvB,CAAC;QAED,IAAI,QAAgB,CAAC;QACrB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACrB,QAAQ,GAAG,MAAM,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAClD,CAAC;aAAM,CAAC;YACP,QAAQ,GAAG,MAAM,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAClD,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;QAElD,OAAM,CAAC,QAAQ,CAAC,CAAC;IAClB,CAAC;IAED;;;;OAIG;IACH,eAAe,CAAC,QAA6B;QAC5C,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACnC,MAAK,CAAC,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC,CAAC;QACrE,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;YAC1B,MAAK,CAAC,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC,CAAC;QACpE,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9B,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC;QACvB,CAAC;QAED,sFAAsF;QACtF,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEnC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;QAEjD,OAAM,CAAC,IAAI,CAAC,CAAC;IACd,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,QAA6B;QAC9C,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAE/B,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAE/B,OAAM,CAAC,IAAI,CAAC,CAAC;IACd,CAAC;IAED;;;;OAIG;IACH,gBAAgB,CAAC,OAAgB;QAChC,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACnC,MAAK,CAAC,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC,CAAC;QACtE,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;YAC1B,MAAK,CAAC,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC,CAAC;QACpE,CAAC;QAED,sFAAsF;QACtF,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEnC,IAAI,CAAC,cAAc,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,UAAS,YAAY;YAC3F,OAAM,CAAC,CAAC,YAAY,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,OAAM,CAAC,IAAI,CAAC,CAAC;IACd,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,OAAgB;QAClC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAE/B,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAE/B,OAAM,CAAC,IAAI,CAAC,CAAC;IACd,CAAC;IAED;;OAEG;IACH,gBAAgB;QACf,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;QAEjC,OAAM,CAAC,IAAI,CAAC,CAAC;IACd,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY;QACjB,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC/B,MAAK,CAAC,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAC;QAC9C,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEjD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC7B,MAAK,CAAC,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC,CAAC;QACpE,CAAC;QAED;;;;WAIG;QACH,OAAM,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB;QACrB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAEhD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC9B,MAAK,CAAC,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC,CAAC;QAC3D,CAAC;QAED;;;;WAIG;QACH,OAAM,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAC;IACzC,CAAC;IAED;;;OAGG;IACH,IAAI,UAAU;QACb,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;YAC1B,MAAK,CAAC,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC,CAAC;QACpE,CAAC;QAED,OAAM,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;IACxC,CAAC;;AAGF,gBAAgB;AAChB,MAAM,CAAC,MAAM,QAAQ,GAAG;IACvB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;CACpB,CAAC;AAEF,eAAe,kBAAkB,CAAC","sourcesContent":["import crypto from './utils/crypto.js';\nimport { lib as KeetaNetLib } from '@keetanetwork/keetanet-client';\n\nimport type {\n\tASN1OID\n} from '@keetanetwork/keetanet-client/lib/utils/asn1.js';\nimport { Buffer, arrayBufferToBuffer, bufferToArrayBuffer } from './utils/buffer.js';\nimport { isArray } from './utils/array.js';\n\nconst zlibDeflateAsync = KeetaNetLib.Utils.Buffer.ZlibDeflateAsync;\nconst zlibInflateAsync = KeetaNetLib.Utils.Buffer.ZlibInflateAsync;\nconst ASN1toJS = KeetaNetLib.Utils.ASN1.ASN1toJS;\nconst JStoASN1 = KeetaNetLib.Utils.ASN1.JStoASN1;\nconst Account: typeof KeetaNetLib.Account = KeetaNetLib.Account;\ntype Account = InstanceType<typeof KeetaNetLib.Account>;\n\n/*\n * ASN.1 Schema\n *\n * EncryptedContainer DEFINITIONS ::=\n * BEGIN\n * Version ::= INTEGER { v2(1) }\n *\n * KeyStore ::= SEQUENCE {\n * publicKey OCTET STRING,\n * encryptedSymmetricKey OCTET STRING,\n * ...\n * }\n *\n * EncryptedContainerBox ::= SEQUENCE {\n * keys SEQUENCE OF KeyStore,\n * encryptionAlgorithm OBJECT IDENTIFIER,\n * initializationVector OCTET STRING,\n * encryptedValue OCTET STRING,\n * ...\n * }\n *\n * PlaintextContainerBox ::= SEQUENCE {\n * plainValue OCTET STRING,\n * ...\n * }\n *\n * ContainerPackage ::= SEQUENCE {\n * version Version (v2),\n * encryptedContainer [0] EXPLICIT EncryptedContainerBox OPTIONAL,\n * plaintextContainer [1] EXPLICIT PlaintextContainerBox OPTIONAL,\n * ...\n * } (WITH COMPONENTS {\n * encryptedContainer PRESENT,\n * plaintextContainer ABSENT\n * } |\n * WITH COMPONENTS {\n * encryptedContainer ABSENT,\n * plaintextContainer PRESENT\n * })\n * END\n *\n */\n\ntype EncryptedContainerKeyStore = [\n\t/* publicKey */\n\tBuffer,\n\n\t/* encryptedSymmetricKey */\n\tBuffer\n];\n\ntype EncryptedContainerBoxEncrypted = [\n\t/* keys */\n\tEncryptedContainerKeyStore[],\n\n\t/* encryptionAlgorithm */\n\tASN1OID,\n\n\t/* initializationVector */\n\tBuffer,\n\n\t/* value */\n\tBuffer\n];\n\ntype EncryptedContainerBoxPlaintext = [\n\t/* value */\n\tBuffer\n];\n\ntype ContainerPackage = [\n\t/* version */\n\tnumber,\n\n\t{\n\t\ttype: 'context'\n\t\tvalue: 0,\n\t\tkind: 'explicit',\n\t\tcontains: EncryptedContainerBoxEncrypted\n\t} | {\n\t\ttype: 'context',\n\t\tvalue: 1,\n\t\tkind: 'explicit',\n\t\tcontains: EncryptedContainerBoxPlaintext\n\t}\n];\n\ntype CipherOptions = {\n\t/**\n\t * The symmetric cipher key (if any)\n\t */\n\tcipherKey: Buffer | undefined;\n\t/**\n\t * The symmetric cipher IV (if any)\n\t */\n\tcipherIV: Buffer | undefined;\n\t/**\n\t * The symmetric cipher algorithm\n\t */\n\tcipherAlgo: string;\n}\n\ntype ASN1Options = Required<CipherOptions> & {\n\t/**\n\t * The set of accounts to encrypt the formatted data\n\t */\n\tkeys: Account[];\n}\n\nconst oidDB = {\n\t'aes-256-cbc': '2.16.840.1.101.3.4.1.42'\n} as const;\n\n/**\n* Compiles the ASN.1 for the container\n*\n* @returns The ASN.1 DER data\n*/\nasync function buildASN1(plaintext: Buffer, encryptionOptions?: ASN1Options): Promise<Buffer> {\n\tconst compressedPlaintext = Buffer.from(await zlibDeflateAsync(plaintext));\n\n\tconst sequence: Partial<ContainerPackage> = [];\n\n\t/*\n\t * Version v2 (1)\n\t */\n\tsequence[0] = 1;\n\n\t/*\n\t * Encrypted container box\n\t */\n\tif (encryptionOptions) {\n\t\tconst { keys, cipherKey, cipherIV, cipherAlgo } = encryptionOptions;\n\n\t\tif (keys === undefined || keys.length === 0 || cipherKey === undefined || cipherIV === undefined || cipherAlgo === undefined) {\n\t\t\tthrow(new Error('internal error: Unsupported method invocation'));\n\t\t}\n\n\t\tif (!(cipherAlgo in oidDB)) {\n\t\t\tthrow(new Error(`Unsupported algorithm: ${cipherAlgo}`));\n\t\t}\n\n\t\t// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n\t\tconst algorithmOID = oidDB[cipherAlgo as keyof typeof oidDB];\n\n\t\tconst cipher = crypto.createCipheriv(\n\t\t\tcipherAlgo,\n\t\t\tcipherKey,\n\t\t\tcipherIV\n\t\t);\n\n\t\tconst encryptedData = Buffer.concat([\n\t\t\tcipher.update(compressedPlaintext),\n\t\t\tcipher.final()\n\t\t]);\n\n\t\tconst cipherKeyArrayBuffer = bufferToArrayBuffer(cipherKey);\n\n\t\tconst encryptionKeysSequence = await Promise.all(keys.map(async function(key) {\n\t\t\tconst encryptedSymmetricKey = Buffer.from(await key.encrypt(cipherKeyArrayBuffer));\n\t\t\tconst retval: EncryptedContainerKeyStore = [\n\t\t\t\tkey.publicKeyAndType,\n\t\t\t\tencryptedSymmetricKey\n\t\t\t];\n\n\t\t\treturn(retval);\n\t\t}));\n\n\t\tsequence[1] = {\n\t\t\ttype: 'context',\n\t\t\tvalue: 0,\n\t\t\tkind: 'explicit',\n\t\t\tcontains: [\n\t\t\t\tencryptionKeysSequence,\n\t\t\t\t{ type: 'oid', oid: algorithmOID },\n\t\t\t\tcipherIV,\n\t\t\t\tencryptedData\n\t\t\t]\n\t\t};\n\t} else {\n\t\t/*\n\t\t * Otherwise we simply pass in the compressed data\n\t\t */\n\t\tsequence[1] = {\n\t\t\ttype: 'context',\n\t\t\tvalue: 1,\n\t\t\tkind: 'explicit',\n\t\t\tcontains: [compressedPlaintext]\n\t\t};\n\t}\n\n\tconst outputASN1 = JStoASN1(sequence);\n\tconst outputDER = Buffer.from(outputASN1.toBER(false));\n\n\treturn(outputDER);\n}\n\nfunction parseASN1Bare(input: Buffer, acceptableEncryptionAlgorithms = ['aes-256-cbc', 'null']) {\n\tconst inputSequence = ASN1toJS(bufferToArrayBuffer(input));\n\tif (!isArray(inputSequence, 2)) {\n\t\tthrow(new Error('Malformed data detected (incorrect base format)'));\n\t}\n\n\tconst version = inputSequence[0];\n\tif (typeof version !== 'bigint') {\n\t\tthrow(new Error('Malformed data detected (version expected at position 0)'));\n\t}\n\n\tif (version !== 1n) {\n\t\tthrow(new Error('Malformed data detected (unsupported version)'));\n\t}\n\n\tconst valueBox = inputSequence[1];\n\tif (typeof valueBox !== 'object' || valueBox === null) {\n\t\tthrow(new Error('Malformed data detected (data expected at position 1)'));\n\t}\n\n\tif (!('type' in valueBox) || typeof valueBox.type !== 'string') {\n\t\tthrow(new Error('Malformed data detected (expected type at position 1)'));\n\t}\n\n\tif (valueBox.type !== 'context') {\n\t\tthrow(new Error('Malformed data detected (expected context at position 1)'));\n\t}\n\n\tif (!('value' in valueBox) || typeof valueBox.value !== 'number') {\n\t\tthrow(new Error('Malformed data detected (expected context value at position 1)'));\n\t}\n\n\tif (valueBox.value !== 0 && valueBox.value !== 1) {\n\t\tthrow(new Error('Malformed data detected (expected context value of 0 or 1)'));\n\t}\n\n\tif (!('contains' in valueBox) || typeof valueBox.contains !== 'object' || valueBox.contains === null) {\n\t\tthrow(new Error('Malformed data detected (expected contents at position 1)'));\n\t}\n\n\tlet isEncrypted;\n\tif (valueBox.value === 0) {\n\t\tisEncrypted = true;\n\t} else {\n\t\tisEncrypted = false;\n\t}\n\n\tconst value = valueBox.contains;\n\tlet containedCompressed: Buffer;\n\tlet cipherInfo;\n\tif (isEncrypted) {\n\t\tif (!isArray(value, 4)) {\n\t\t\tthrow(new Error('Malformed data (incorrect number of elements within position 1 -- expected 4)'));\n\t\t}\n\n\t\tconst keyInfoUnchecked = value[0];\n\t\tif (!isArray(keyInfoUnchecked)) {\n\t\t\tthrow(new Error('Malformed data (expected sequence at position 2.0)'));\n\t\t}\n\n\t\tconst keyInfo = keyInfoUnchecked.map(function(checkKeyInfo) {\n\t\t\tif (!isArray(checkKeyInfo, 2)) {\n\t\t\t\tthrow(new Error('Malformed key information (expected sequence of 2 at position 1.0.x)'));\n\t\t\t}\n\n\t\t\tconst publicKeyBuffer = checkKeyInfo[0];\n\t\t\tif (!Buffer.isBuffer(publicKeyBuffer)) {\n\t\t\t\tthrow(new Error('Malformed key information (expected octet string for public key at position 1.0.x)'));\n\t\t\t}\n\t\t\tconst publicKey = Account.fromPublicKeyAndType(publicKeyBuffer);\n\n\t\t\tconst encryptedSymmetricKey = checkKeyInfo[1];\n\t\t\tif (!Buffer.isBuffer(encryptedSymmetricKey)) {\n\t\t\t\tthrow(new Error('Malformed key information (expected octet string for cipher key at position 1.0.x)'));\n\t\t\t}\n\n\t\t\treturn({\n\t\t\t\tpublicKey,\n\t\t\t\tencryptedSymmetricKey\n\t\t\t});\n\t\t});\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\t\tconst encryptionAlgorithmOID = value[1];\n\t\t/* XXX:TODO: Lookup the encryption algorithm from the OID */\n\t\tconst encryptionAlgorithm = 'aes-256-cbc';\n\n\t\tconst cipherIV = value[2];\n\t\tif (!Buffer.isBuffer(cipherIV)) {\n\t\t\tthrow(new Error('Malformed data (cipher IV expected at position 1.2)'));\n\t\t}\n\n\t\tconst encryptedCompressedValue = value[3];\n\t\tif (!Buffer.isBuffer(encryptedCompressedValue)) {\n\t\t\tthrow(new Error('Malformed data (encrypted compressed buffer expected at position 1.3)'));\n\t\t}\n\n\t\tcipherInfo = {\n\t\t\tkeys: keyInfo,\n\t\t\tcipherIV: cipherIV,\n\t\t\tencryptedData: encryptedCompressedValue,\n\t\t\tencryptionAlgorithm: encryptionAlgorithm\n\t\t};\n\n\t\tcontainedCompressed = encryptedCompressedValue;\n\t} else {\n\t\tif (!isArray(value, 1)) {\n\t\t\tthrow(new Error('Malformed data (incorrect number of elements within position 1 -- expected 1)'));\n\t\t}\n\n\t\tconst containedCompressedUnchecked = value[0];\n\t\tif (!Buffer.isBuffer(containedCompressedUnchecked)) {\n\t\t\tthrow(new Error('Malformed data (compressed buffer expected at position 1.0)'));\n\t\t}\n\n\t\tif (!acceptableEncryptionAlgorithms.includes('null')) {\n\t\t\tthrow(new Error('Malformed data (plaintext found but the null encryption algorithm is not acceptable)'));\n\t\t}\n\n\t\tcontainedCompressed = containedCompressedUnchecked;\n\t}\n\n\treturn({\n\t\tversion: version,\n\t\tisEncrypted: isEncrypted,\n\t\tinnerValue: containedCompressed,\n\t\t...cipherInfo\n\t});\n}\n\nasync function parseASN1Decrypt(inputInfo: ReturnType<typeof parseASN1Bare>, keys?: Account[]) {\n\tlet containedCompressed: Buffer;\n\tlet cipherInfo;\n\tif (inputInfo.isEncrypted) {\n\t\tif (keys === undefined || keys.length === 0) {\n\t\t\tthrow(new Error('Encrypted Container found with encryption but no keys for decryption supplied'));\n\t\t}\n\n\t\tconst algorithm = inputInfo.encryptionAlgorithm;\n\t\tif (algorithm === undefined) {\n\t\t\tthrow(new Error('Encrypted Container found with encryption but no algorithm supplied'));\n\t\t}\n\n\t\tconst keyInfo = inputInfo.keys;\n\t\tif (keyInfo === undefined) {\n\t\t\tthrow(new Error('internal error: Encrypted container found with missing keys'));\n\t\t}\n\n\t\tlet decryptionKeyInfo;\n\t\tfor (const checkKeyInfo of keyInfo) {\n\t\t\tfor (const key of keys) {\n\t\t\t\tif (!key.hasPrivateKey) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (key.comparePublicKey(checkKeyInfo.publicKey)) {\n\t\t\t\t\tdecryptionKeyInfo = {\n\t\t\t\t\t\t...checkKeyInfo,\n\t\t\t\t\t\tprivateKey: key\n\t\t\t\t\t};\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (decryptionKeyInfo === undefined) {\n\t\t\tthrow(new Error('No keys found which can perform decryption on the supplied encryption box'));\n\t\t}\n\n\t\tconst cipherKey = Buffer.from(await decryptionKeyInfo.privateKey.decrypt(bufferToArrayBuffer(decryptionKeyInfo.encryptedSymmetricKey)));\n\n\t\tconst cipherIV = inputInfo.cipherIV;\n\t\tif (cipherIV === undefined) {\n\t\t\tthrow(new Error('internal error: No Cipher IV found'));\n\t\t}\n\n\t\tconst encryptedCompressedValue = inputInfo.innerValue;\n\t\tconst decipher = crypto.createDecipheriv(algorithm, cipherKey, cipherIV);\n\t\tcontainedCompressed = Buffer.concat([\n\t\t\tdecipher.update(encryptedCompressedValue),\n\t\t\tdecipher.final()\n\t\t]);\n\n\t\tcipherInfo = {\n\t\t\tisEncrypted: true,\n\t\t\tkeys: keyInfo,\n\t\t\tcipherIV: cipherIV,\n\t\t\tcipherKey: cipherKey,\n\t\t\tencryptedData: encryptedCompressedValue\n\t\t};\n\t} else {\n\t\tcontainedCompressed = inputInfo.innerValue;\n\t\tcipherInfo = {\n\t\t\tisEncrypted: false\n\t\t};\n\t}\n\n\tconst plaintext = Buffer.from(await zlibInflateAsync(containedCompressed));\n\n\treturn({\n\t\tversion: inputInfo.version,\n\t\tplaintext: plaintext,\n\t\t...cipherInfo\n\t});\n\n}\n\nasync function parseASN1(input: Buffer, keys?: Account[]) {\n\tconst inputInfo = parseASN1Bare(input);\n\tconst retval = await parseASN1Decrypt(inputInfo, keys);\n\n\treturn(retval);\n}\n\nfunction inputToBuffer(data: string | ArrayBuffer | Buffer): Buffer {\n\tif (typeof data === 'string') {\n\t\treturn(Buffer.from(data, 'utf-8'));\n\t} else if (Buffer.isBuffer(data)) {\n\t\treturn(data);\n\t} else {\n\t\treturn(arrayBufferToBuffer(data));\n\t}\n}\n\ntype EncryptedContainerInfo = Pick<CipherOptions, 'cipherAlgo'> & {\n\t/**\n\t * Set of accounts which can access the data\n\t */\n\tprincipals: Account[];\n}\n\ntype UnencryptedContainerInfo = {\n\t/**\n\t * Unencrypted container should not have any principals\n\t */\n\tprincipals: null;\n}\n\nexport class EncryptedContainer {\n\tprivate static readonly algorithm = 'aes-256-cbc';\n\n\t/**\n\t * Flag indicating whether we support exporting the plaintext\n\t */\n\t#mayAccessPlaintext = true;\n\n\t/**\n\t * Encryption details\n\t */\n\tprotected _internalState: EncryptedContainerInfo | UnencryptedContainerInfo;\n\n\t/**\n\t * The plaintext or encoded (and possibly encrypted) data\n\t */\n\t#data:\n\t\t{ plaintext: Buffer } |\n\t\t{ encoded: Buffer } |\n\t\t{ plaintext: Buffer, encoded: Buffer };\n\n\tconstructor(principals: Account[] | null) {\n\t\tif (principals === null) {\n\t\t\tthis._internalState = {\n\t\t\t\tprincipals: null\n\t\t\t};\n\t\t} else {\n\t\t\tthis._internalState = {\n\t\t\t\tprincipals: principals,\n\t\t\t\tcipherAlgo: EncryptedContainer.algorithm\n\t\t\t}\n\t\t};\n\t\tthis.#data = { plaintext: Buffer.alloc(0) };\n\t}\n\n\tget encrypted(): boolean {\n\t\treturn(this._internalState.principals !== null);\n\t}\n\n\t#isEncrypted(): this is { _internalState: EncryptedContainerInfo } {\n\t\treturn(this.encrypted);\n\t}\n\n\t/**\n\t * Create an instance of the EncryptedContainer from an encrypted blob,\n\t * it will need to be decryptable with one of the specified principals\n\t *\n\t * After decryption happens, the list of principals with access to the\n\t * resource will be reset to what is contained within the encrypted\n\t * container\n\t */\n\tstatic fromEncryptedBuffer(data: ArrayBuffer | Buffer, principals: Account[]): EncryptedContainer {\n\t\tconst retval = new EncryptedContainer(principals);\n\n\t\tretval.#setEncodedBuffer(data);\n\t\tretval.#computeAndSetKeyInfo(true);\n\n\t\treturn(retval);\n\t}\n\n\tstatic fromEncodedBuffer(data: ArrayBuffer | Buffer, principals: Account[] | null): EncryptedContainer {\n\t\tconst retval = new EncryptedContainer(principals);\n\n\t\tretval.#setEncodedBuffer(data);\n\t\tretval.#computeAndSetKeyInfo(false);\n\n\t\treturn(retval);\n\t}\n\n\t/**\n\t * Create an instance of the EncryptedContainer from a plaintext.\n\t *\n\t * It will be decryptable by any one of the specified principals\n\t *\n\t * @param data The plaintext data to encrypt or encode\n\t * @param principals The list of principals who can access the data if it is null then the data is not encrypted\n\t * @param locked If true, the plaintext data will not be accessible from this instance; otherwise it will be -- default depends on principals\n\t * @returns The EncryptedContainer instance with the plaintext data and principals set\n\t */\n\tstatic fromPlaintext(data: string | ArrayBuffer | Buffer, principals: Account[] | null, locked?: boolean): EncryptedContainer {\n\t\tconst retval = new EncryptedContainer(principals);\n\n\t\tif (locked === undefined) {\n\t\t\tlocked = true;\n\t\t\tif (principals === null) {\n\t\t\t\tlocked = false;\n\t\t\t}\n\t\t}\n\n\t\tif (locked) {\n\t\t\tretval.disablePlaintext();\n\t\t}\n\n\t\tretval.setPlaintext(data);\n\n\t\treturn(retval);\n\t}\n\n\t/**\n\t * Set the plaintext buffer to the specified value\n\t */\n\tsetPlaintext(data: string | ArrayBuffer | Buffer): void {\n\t\tthis.#data = { plaintext: inputToBuffer(data) };\n\t}\n\n\t/**\n\t * Set the encoded blob to the specified value\n\t */\n\t#setEncodedBuffer(data: ArrayBuffer | Buffer): void {\n\t\tthis.#data = { encoded: inputToBuffer(data) };\n\t}\n\n\tprivate get _encoded(): Buffer | undefined {\n\t\tif ('encoded' in this.#data && this.#data.encoded !== undefined) {\n\t\t\treturn(this.#data.encoded);\n\t\t}\n\n\t\treturn(undefined);\n\t}\n\n\tprivate get _plaintext(): Buffer | undefined {\n\t\tif ('plaintext' in this.#data && this.#data.plaintext !== undefined) {\n\t\t\treturn(this.#data.plaintext);\n\t\t}\n\n\t\treturn(undefined);\n\t}\n\n\t/*\n\t * Return the decoded data from the encoded blob\n\t * and populate the symmetric key parameters from the encoded blob if it is encrypted\n\t */\n\t#computeAndSetKeyInfo(mustBeEncrypted: boolean) {\n\t\tif (this._encoded === undefined) {\n\t\t\tthrow(new Error('No encoded data available'));\n\t\t}\n\n\t\tconst plaintextWrapper = parseASN1Bare(this._encoded);\n\n\t\tif (mustBeEncrypted && !plaintextWrapper.isEncrypted) {\n\t\t\tthrow(new Error('Unable to set key information from plaintext -- it is not encrypted but that was required'));\n\t\t}\n\n\t\tif (plaintextWrapper.isEncrypted) {\n\t\t\tconst principals = this._internalState.principals;\n\t\t\tif (principals === null) {\n\t\t\t\tthrow(new Error('May not encrypt data with a null set of principals'));\n\t\t\t}\n\n\t\t\t/*\n\t\t\t * Compute the new accounts by merging the input from the\n\t\t\t * data and the existing list of principals\n\t\t\t */\n\t\t\t/**\n\t\t\t * The existing principals from the blob, with existing\n\t\t\t * principals substituted in where appropriate\n\t\t\t */\n\t\t\tconst blobPrincipals = (plaintextWrapper.keys ?? []).map((keyInfo) => {\n\t\t\t\tconst currentPublicKey = keyInfo.publicKey;\n\t\t\t\tif (!currentPublicKey.isAccount()) {\n\t\t\t\t\tthrow(new Error('internal error: Non-account found within the encryption key list'));\n\t\t\t\t}\n\n\t\t\t\tfor (const checkExistingKey of principals) {\n\t\t\t\t\tif (checkExistingKey.comparePublicKey(currentPublicKey)) {\n\t\t\t\t\t\treturn(checkExistingKey);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn(currentPublicKey);\n\t\t\t});\n\n\t\t\tthis._internalState.principals = blobPrincipals;\n\n\t\t\t// Confirm updated principals are populated correctly which sets container to encrypted\n\t\t\tif (!this.encrypted) {\n\t\t\t\tthrow(new Error('internal error: Encrypted data found but not marked as encrypted'));\n\t\t\t}\n\t\t} else {\n\t\t\tthis._internalState.principals = null;\n\n\t\t\tif (this.encrypted) {\n\t\t\t\tthrow(new Error('internal error: Plaintext data found but marked as encrypted'));\n\t\t\t}\n\t\t}\n\n\t\treturn(plaintextWrapper);\n\t}\n\n\t/**\n\t * Populate the plaintext (as well as symmetric key parameters) from\n\t * the encoded blob\n\t */\n\tasync #computePlaintext() {\n\t\tif (this._plaintext) {\n\t\t\treturn(this._plaintext);\n\t\t}\n\n\t\tif (this._encoded === undefined) {\n\t\t\tthrow(new Error('No plaintext or encoded data available'));\n\t\t}\n\n\n\t\tconst info = this.#computeAndSetKeyInfo(this.encrypted);\n\n\t\tlet principals = this._internalState.principals;\n\t\tif (info.isEncrypted) {\n\t\t\tif (principals === null) {\n\t\t\t\tthrow(new Error('May not decrypt data with a null set of principals'));\n\t\t\t}\n\t\t} else {\n\t\t\tprincipals = [];\n\t\t}\n\n\t\tconst plaintextWrapper = await parseASN1Decrypt(info, principals);\n\t\tconst plaintext = plaintextWrapper.plaintext;\n\n\t\tthis.#data = { ...this.#data, plaintext };\n\n\t\treturn(plaintext);\n\t}\n\n\t/**\n\t * Compute the encoded version of the plaintext data\n\t */\n\tasync #computePlaintextEncoded() {\n\t\tif (this._plaintext === undefined) {\n\t\t\tthrow(new Error('No plaintext data available'));\n\t\t}\n\n\t\tconst structuredData = await buildASN1(\n\t\t\tthis._plaintext\n\t\t);\n\n\t\treturn(structuredData);\n\t}\n\n\t/**\n\t * Populate the encrypted blob from the plaintext and symmetric key\n\t * parameters. If the symmetric key parameters have not been\n\t * initialized they will be initialized at this time.\n\t */\n\tasync #computeEncryptedEncoded() {\n\t\tif (this._plaintext === undefined) {\n\t\t\tthrow(new Error('No encrypted nor plaintext data available'));\n\t\t}\n\n\t\tif (!this.#isEncrypted()) {\n\t\t\tthrow(new Error('internal error: Asked to encrypt a plaintext buffer'));\n\t\t}\n\n\t\t/**\n\t\t * structured data is the ASN.1 encoded structure\n\t\t */\n\t\tconst structuredData = await buildASN1(\n\t\t\tthis._plaintext,\n\t\t\t{\n\t\t\t\tkeys: this._internalState.principals,\n\t\t\t\tcipherKey: crypto.randomBytes(32),\n\t\t\t\tcipherIV: crypto.randomBytes(16),\n\t\t\t\tcipherAlgo: this._internalState.cipherAlgo\n\t\t\t}\n\t\t);\n\n\t\treturn(structuredData);\n\t}\n\n\tasync #computeEncoded() {\n\t\tif (this._encoded !== undefined) {\n\t\t\treturn(this._encoded);\n\t\t}\n\n\t\tlet computed: Buffer;\n\t\tif (!this.encrypted) {\n\t\t\tcomputed = await this.#computePlaintextEncoded();\n\t\t} else {\n\t\t\tcomputed = await this.#computeEncryptedEncoded();\n\t\t}\n\n\t\tthis.#data = { ...this.#data, encoded: computed };\n\n\t\treturn(computed);\n\t}\n\n\t/**\n\t * Grant access to the secret for account(s) synchronously. This\n\t * assumes the plaintext has already been computed and will fail\n\t * if it is not\n\t */\n\tgrantAccessSync(accounts: Account[] | Account): this {\n\t\tif (this._plaintext === undefined) {\n\t\t\tthrow(new Error('Unable to grant access, plaintext not available'));\n\t\t}\n\n\t\tif (!this.#isEncrypted()) {\n\t\t\tthrow(new Error('May not manage access to a plaintext container'));\n\t\t}\n\n\t\tif (!Array.isArray(accounts)) {\n\t\t\taccounts = [accounts];\n\t\t}\n\n\t\t// Encoded data is invalidated with the new permissions so set only the plaintext data\n\t\tthis.setPlaintext(this._plaintext);\n\n\t\tthis._internalState.principals.push(...accounts);\n\n\t\treturn(this);\n\t}\n\n\t/**\n\t * Grant access to the secret for account(s).\n\t */\n\tasync grantAccess(accounts: Account[] | Account): Promise<this> {\n\t\tawait this.#computePlaintext();\n\n\t\tthis.grantAccessSync(accounts);\n\n\t\treturn(this);\n\t}\n\n\t/**\n\t * Revoke access to the secret for an account synchronously. This\n\t * assumes the plaintext has already been computed and will fail\n\t * if it is not\n\t */\n\trevokeAccessSync(account: Account): this {\n\t\tif (this._plaintext === undefined) {\n\t\t\tthrow(new Error('Unable to revoke access, plaintext not available'));\n\t\t}\n\n\t\tif (!this.#isEncrypted()) {\n\t\t\tthrow(new Error('May not manage access to a plaintext container'));\n\t\t}\n\n\t\t// Encoded data is invalidated with the new permissions so set only the plaintext data\n\t\tthis.setPlaintext(this._plaintext);\n\n\t\tthis._internalState.principals = this._internalState.principals.filter(function(checkAccount) {\n\t\t\treturn(!checkAccount.comparePublicKey(account));\n\t\t});\n\n\t\treturn(this);\n\t}\n\n\t/**\n\t * Revoke access to the secret for an account\n\t */\n\tasync revokeAccess(account: Account): Promise<this> {\n\t\tawait this.#computePlaintext();\n\n\t\tthis.revokeAccessSync(account);\n\n\t\treturn(this);\n\t}\n\n\t/**\n\t * Disable access to the plaintext from this instance\n\t */\n\tdisablePlaintext(): this {\n\t\tthis.#mayAccessPlaintext = false;\n\n\t\treturn(this);\n\t}\n\n\t/**\n\t * Get the plaintext for this instance\n\t */\n\tasync getPlaintext(): Promise<ArrayBuffer> {\n\t\tif (!this.#mayAccessPlaintext) {\n\t\t\tthrow(new Error('May not access plaintext'));\n\t\t}\n\n\t\tconst plaintext = await this.#computePlaintext();\n\n\t\tif (plaintext === undefined) {\n\t\t\tthrow(new Error('internal error: Plaintext could not be decoded'));\n\t\t}\n\n\t\t/*\n\t\t * Make a copy of our internal buffer so that any changes made\n\t\t * to either our internal buffer or by our caller do not\n\t\t * interfere\n\t\t */\n\t\treturn(bufferToArrayBuffer(plaintext));\n\t}\n\n\t/**\n\t * Get the serializable buffer which can be stored and reconstructed\n\t */\n\tasync getEncodedBuffer(): Promise<ArrayBuffer> {\n\t\tconst serialized = await this.#computeEncoded();\n\n\t\tif (serialized === undefined) {\n\t\t\tthrow(new Error('internal error: Could not encode data'));\n\t\t}\n\n\t\t/*\n\t\t * Make a copy of our internal buffer so that any changes made\n\t\t * to either our internal buffer or by our caller do not\n\t\t * interfere\n\t\t */\n\t\treturn(bufferToArrayBuffer(serialized));\n\t}\n\n\t/**\n\t * Get the list of accounts which have access to read the plaintext of\n\t * this container\n\t */\n\tget principals(): Account[] {\n\t\tif (!this.#isEncrypted()) {\n\t\t\tthrow(new Error('May not manage access to a plaintext container'));\n\t\t}\n\n\t\treturn(this._internalState.principals);\n\t}\n}\n\n/** @internal */\nexport const _Testing = {\n\tbuildASN1: buildASN1,\n\tparseASN1: parseASN1\n};\n\nexport default EncryptedContainer;\n"]}
1
+ {"version":3,"file":"encrypted-container.js","sourceRoot":"","sources":["../../src/lib/encrypted-container.ts"],"names":[],"mappings":"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","sourcesContent":["import crypto from './utils/crypto.js';\nimport { lib as KeetaNetLib } from '@keetanetwork/keetanet-client';\n\nimport type {\n\tASN1OID\n} from '@keetanetwork/keetanet-client/lib/utils/asn1.js';\nimport { Buffer, arrayBufferToBuffer, arrayBufferLikeToBuffer, bufferToArrayBuffer } from './utils/buffer.js';\nimport { isArray } from './utils/array.js';\nimport { KeetaAnchorError } from './error.js';\n\n// #region Error Handling\n\n/**\n * Error codes for EncryptedContainer operations\n */\nexport const EncryptedContainerErrorCodes = [\n\t// Parsing/Malformed data\n\t'MALFORMED_BASE_FORMAT',\n\t'MALFORMED_VERSION',\n\t'MALFORMED_DATA_STRUCTURE',\n\t'MALFORMED_KEY_INFO',\n\t'MALFORMED_SIGNER_INFO',\n\n\t// Algorithm issues\n\t'UNSUPPORTED_VERSION',\n\t'UNSUPPORTED_CIPHER_ALGORITHM',\n\t'UNSUPPORTED_DIGEST_ALGORITHM',\n\t'UNSUPPORTED_SIGNATURE_ALGORITHM',\n\t'UNSUPPORTED_KEY_TYPE',\n\n\t// Key/Decryption issues\n\t'NO_KEYS_PROVIDED',\n\t'NO_MATCHING_KEY',\n\t'DECRYPTION_FAILED',\n\t'DECOMPRESSION_FAILED',\n\n\t// Signing issues\n\t'SIGNER_REQUIRES_PRIVATE_KEY',\n\t'NOT_SIGNED',\n\t'SIGNATURE_VERIFICATION_FAILED',\n\n\t// State issues\n\t'NO_PLAINTEXT_AVAILABLE',\n\t'NO_ENCODED_DATA_AVAILABLE',\n\t'PLAINTEXT_DISABLED',\n\n\t// Access management\n\t'ENCRYPTION_REQUIRED',\n\t'INVALID_PRINCIPALS',\n\t'ACCESS_MANAGEMENT_NOT_ALLOWED',\n\n\t// Internal errors\n\t'INTERNAL_ERROR'\n] as const;\n\n/**\n * Error code type\n */\nexport type EncryptedContainerErrorCode = typeof EncryptedContainerErrorCodes[number];\n\n/**\n * Error class for EncryptedContainer operations\n */\nexport class EncryptedContainerError extends KeetaAnchorError {\n\tstatic override readonly name: string = 'EncryptedContainerError';\n\n\tprivate readonly encryptedContainerErrorObjectTypeID!: string;\n\tprivate static readonly encryptedContainerErrorObjectTypeID = 'f4a8c2e1-7b3d-4f9a-8c5e-2d1f0a9b8c7e';\n\n\treadonly code: EncryptedContainerErrorCode;\n\n\t/**\n\t * Check if a string is a valid EncryptedContainerErrorCode\n\t */\n\tstatic isValidCode(code: string): code is EncryptedContainerErrorCode {\n\t\t// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n\t\treturn(EncryptedContainerErrorCodes.includes(code as EncryptedContainerErrorCode));\n\t}\n\n\tconstructor(code: EncryptedContainerErrorCode, message: string) {\n\t\tsuper(message);\n\t\tthis.code = code;\n\t\t// EncryptedContainerError is not a user error\n\t\tthis.userError = false;\n\n\t\tObject.defineProperty(this, 'encryptedContainerErrorObjectTypeID', {\n\t\t\tvalue: EncryptedContainerError.encryptedContainerErrorObjectTypeID,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tstatic isInstance(input: unknown): input is EncryptedContainerError {\n\t\treturn(this.hasPropWithValue(input, 'encryptedContainerErrorObjectTypeID', EncryptedContainerError.encryptedContainerErrorObjectTypeID));\n\t}\n\n\toverride toJSON(): ReturnType<KeetaAnchorError['toJSON']> & { code: EncryptedContainerErrorCode } {\n\t\treturn({\n\t\t\t...super.toJSON(),\n\t\t\tcode: this.code\n\t\t});\n\t}\n\n\tstatic async fromJSON(input: unknown): Promise<EncryptedContainerError> {\n\t\tconst { message, other } = this.extractErrorProperties(input, this);\n\n\t\t// Extract and validate code\n\t\tif (!('code' in other) || typeof other.code !== 'string') {\n\t\t\tthrow(new Error('Invalid EncryptedContainerError JSON: missing code property'));\n\t\t}\n\n\t\t// Validate code is a valid EncryptedContainerErrorCode\n\t\tconst code = other.code;\n\t\tif (!this.isValidCode(code)) {\n\t\t\tthrow(new Error(`Invalid EncryptedContainerError JSON: unknown code ${code}`));\n\t\t}\n\n\t\tconst error = new this(code, message);\n\t\terror.restoreFromJSON(other);\n\t\treturn(error);\n\t}\n}\n\n// #endregion\n\nconst zlibDeflateAsync = KeetaNetLib.Utils.Buffer.ZlibDeflateAsync;\nconst zlibInflateAsync = KeetaNetLib.Utils.Buffer.ZlibInflateAsync;\nconst ASN1toJS = KeetaNetLib.Utils.ASN1.ASN1toJS;\nconst JStoASN1 = KeetaNetLib.Utils.ASN1.JStoASN1;\nconst Account: typeof KeetaNetLib.Account = KeetaNetLib.Account;\ntype Account = InstanceType<typeof KeetaNetLib.Account>;\n\n/**\n * Options for creating an EncryptedContainer from plaintext\n */\nexport type FromPlaintextOptions = {\n\tlocked?: boolean;\n\tsigner?: Account;\n};\n\n/*\n * ASN.1 Schema\n *\n * EncryptedContainer DEFINITIONS ::=\n * BEGIN\n * Version ::= INTEGER { v2(1) }\n *\n * KeyStore ::= SEQUENCE {\n * publicKey OCTET STRING,\n * encryptedSymmetricKey OCTET STRING,\n * ...\n * }\n *\n * EncryptedContainerBox ::= SEQUENCE {\n * keys SEQUENCE OF KeyStore,\n * encryptionAlgorithm OBJECT IDENTIFIER,\n * initializationVector OCTET STRING,\n * encryptedValue OCTET STRING,\n * ...\n * }\n *\n * PlaintextContainerBox ::= SEQUENCE {\n * plainValue OCTET STRING,\n * ...\n * }\n *\n * -- RFC 5652 Section 5.3 SignerInfo (adapted for KeetaNet)\n * SignerInfo ::= SEQUENCE {\n * version CMSVersion, -- INTEGER (3 for subjectKeyIdentifier)\n * sid [0] SubjectKeyIdentifier, -- OCTET STRING (publicKeyAndType)\n * digestAlgorithm OBJECT IDENTIFIER, -- SHA3-256: 2.16.840.1.101.3.4.2.8\n * signatureAlgorithm OBJECT IDENTIFIER, -- Derived from account type\n * signature OCTET STRING,\n * ...\n * }\n *\n * ContainerPackage ::= SEQUENCE {\n * version Version,\n * encryptedContainer [0] EXPLICIT EncryptedContainerBox OPTIONAL,\n * plaintextContainer [1] EXPLICIT PlaintextContainerBox OPTIONAL,\n * signerInfo [2] EXPLICIT SignerInfo OPTIONAL,\n * ...\n * } (WITH COMPONENTS {\n * encryptedContainer PRESENT,\n * plaintextContainer ABSENT\n * } |\n * WITH COMPONENTS {\n * encryptedContainer ABSENT,\n * plaintextContainer PRESENT\n * })\n * END\n *\n */\n\n/**\n * OID constants for cryptographic algorithms\n * // XXX:TODO: We should standardize this somewhere centralized\n */\nconst oidDB = {\n\t// Digest algorithms\n\t'sha3-256': '2.16.840.1.101.3.4.2.8',\n\n\t// Signature algorithms\n\t'ed25519': '1.3.101.112',\n\t'secp256k1': '1.3.132.0.10',\n\t'secp256r1': '1.2.840.10045.3.1.7',\n\n\t// Encryption algorithms\n\t'aes-256-cbc': '2.16.840.1.101.3.4.1.42'\n} as const;\n\n/**\n * Supported algorithms\n * These are the canonical names as defined in oidDB\n */\nconst SUPPORTED_DIGEST_ALGORITHMS = ['sha3-256'] as const;\nconst SUPPORTED_SIGNATURE_ALGORITHMS = ['ed25519', 'secp256k1', 'secp256r1'] as const;\n\n/**\n * Known OID aliases that ASN1 parsers may return instead of our canonical names\n */\nconst OID_ALIASES: { [alias: string]: keyof typeof oidDB } = {\n\t'prime256v1': 'secp256r1'\n};\n\n/**\n * Build reverse lookup: name/alias -> numeric OID\n */\nconst nameToNumericOID: { [name: string]: string } = {};\nfor (const [name, numericOID] of Object.entries(oidDB)) {\n\tnameToNumericOID[name] = numericOID;\n}\nfor (const [alias, canonicalName] of Object.entries(OID_ALIASES)) {\n\tnameToNumericOID[alias] = oidDB[canonicalName];\n}\n\n/**\n * Normalize an OID (name, alias, or already numeric) to its numeric form.\n * Returns undefined if the OID is not recognized.\n */\nfunction normalizeToNumericOID(oid: string): string | undefined {\n\tif (/^\\d+(\\.\\d+)*$/.test(oid)) {\n\t\treturn(oid);\n\t}\n\n\t// Otherwise look up the name/alias\n\treturn(nameToNumericOID[oid]);\n}\n\n// Pre-compute supported numeric OIDs for validation\nconst supportedDigestOIDs = new Set<string>(SUPPORTED_DIGEST_ALGORITHMS.map(name => oidDB[name]));\nconst supportedSignatureOIDs = new Set<string>(SUPPORTED_SIGNATURE_ALGORITHMS.map(name => oidDB[name]));\n\n/**\n * Map account key algorithm to signature algorithm OID\n */\nfunction getSignatureAlgorithmOID(account: Account): string {\n\tconst keyType = account.keyType;\n\tconst KeyAlgo = Account.AccountKeyAlgorithm;\n\n\tif (keyType === KeyAlgo.ECDSA_SECP256K1) {\n\t\treturn(oidDB['secp256k1']);\n\t} else if (keyType === KeyAlgo.ED25519) {\n\t\treturn(oidDB['ed25519']);\n\t} else if (keyType === KeyAlgo.ECDSA_SECP256R1) {\n\t\treturn(oidDB['secp256r1']);\n\t}\n\n\tthrow(new EncryptedContainerError('UNSUPPORTED_KEY_TYPE', `Unsupported key type for signing: ${keyType}`));\n}\n\n/**\n * SignerInfo structure for RFC 5652 CMS compatibility\n */\ntype SignerInfoASN1 = [\n\t/* version - CMSVersion (3 for subjectKeyIdentifier) */\n\tnumber,\n\n\t/* sid - SubjectKeyIdentifier wrapped in context tag [0] */\n\t{\n\t\ttype: 'context',\n\t\tvalue: 0,\n\t\tkind: 'implicit',\n\t\tcontains: Buffer\n\t},\n\n\t/* digestAlgorithm */\n\tASN1OID,\n\n\t/* signatureAlgorithm */\n\tASN1OID,\n\n\t/* signature */\n\tBuffer\n];\n\n/**\n * Parsed SignerInfo data\n */\ntype ParsedSignerInfo = {\n\tversion: number;\n\tsignerPublicKeyAndType: Buffer;\n\tdigestAlgorithmOID: string;\n\tsignatureAlgorithmOID: string;\n\tsignature: Buffer;\n};\n\ntype EncryptedContainerKeyStore = [\n\t/* publicKey */\n\tBuffer,\n\n\t/* encryptedSymmetricKey */\n\tBuffer\n];\n\ntype EncryptedContainerBoxEncrypted = [\n\t/* keys */\n\tEncryptedContainerKeyStore[],\n\n\t/* encryptionAlgorithm */\n\tASN1OID,\n\n\t/* initializationVector */\n\tBuffer,\n\n\t/* value */\n\tBuffer\n];\n\ntype EncryptedContainerBoxPlaintext = [\n\t/* value */\n\tBuffer\n];\n\ntype SignerInfoBoxContext = {\n\ttype: 'context',\n\tvalue: 2,\n\tkind: 'explicit',\n\tcontains: SignerInfoASN1\n};\n\ntype ContainerPackage = [\n\t/* version */\n\tnumber,\n\n\t/* container */\n\tContainerBox,\n\n\t/* signerInfo (optional) */\n\tSignerInfoBoxContext?\n];\n\ntype EncryptedBoxContext = {\n\ttype: 'context',\n\tvalue: 0,\n\tkind: 'explicit',\n\tcontains: EncryptedContainerBoxEncrypted\n};\n\ntype PlaintextBoxContext = {\n\ttype: 'context',\n\tvalue: 1,\n\tkind: 'explicit',\n\tcontains: EncryptedContainerBoxPlaintext\n};\n\ntype ContainerBox = EncryptedBoxContext | PlaintextBoxContext;\n\n/**\n * Build a typed encrypted container box with context tag [0].\n */\nfunction buildEncryptedBox(\n\tkeys: EncryptedContainerKeyStore[],\n\talgorithmOID: string,\n\tiv: Buffer,\n\tencryptedData: Buffer\n): EncryptedBoxContext {\n\treturn({\n\t\ttype: 'context',\n\t\tvalue: 0,\n\t\tkind: 'explicit',\n\t\tcontains: [keys, { type: 'oid', oid: algorithmOID }, iv, encryptedData]\n\t});\n}\n\n/**\n * Build a typed plaintext container box with context tag [1].\n */\nfunction buildPlaintextBox(\n\tdata: Buffer\n): PlaintextBoxContext {\n\treturn({\n\t\ttype: 'context',\n\t\tvalue: 1,\n\t\tkind: 'explicit',\n\t\tcontains: [data]\n\t});\n}\n\n/**\n * Build a typed signer info box with context tag [2].\n */\nfunction buildSignerInfoBox(\n\tsignerInfo: SignerInfoASN1\n): SignerInfoBoxContext {\n\treturn({\n\t\ttype: 'context',\n\t\tvalue: 2,\n\t\tkind: 'explicit',\n\t\tcontains: signerInfo\n\t});\n}\n\ntype CipherOptions = {\n\t/**\n\t * The symmetric cipher key (if any)\n\t */\n\tcipherKey: Buffer | undefined;\n\t/**\n\t * The symmetric cipher IV (if any)\n\t */\n\tcipherIV: Buffer | undefined;\n\t/**\n\t * The symmetric cipher algorithm\n\t */\n\tcipherAlgo: string;\n}\n\ntype ASN1Options = Required<CipherOptions> & {\n\t/**\n\t * The set of accounts to encrypt the formatted data\n\t */\n\tkeys: Account[];\n}\n\ntype SigningOptions = {\n\t/**\n\t * The account to sign the container with\n\t */\n\tsigner: Account;\n}\n\n/**\n* Compiles the ASN.1 for the container\n*\n* @param plaintext The plaintext data to encode\n* @param encryptionOptions Optional encryption options\n* @param signingOptions Optional signing options (will include SignerInfo)\n* @returns The ASN.1 DER data\n*/\nasync function buildASN1(plaintext: Buffer, encryptionOptions?: ASN1Options, signingOptions?: SigningOptions): Promise<Buffer> {\n\tconst compressedPlaintext = Buffer.from(await zlibDeflateAsync(bufferToArrayBuffer(plaintext)));\n\n\t/*\n\t * Build the container box (encrypted or plaintext)\n\t */\n\tlet containerBox: ContainerBox;\n\tif (encryptionOptions) {\n\t\tconst { keys, cipherKey, cipherIV, cipherAlgo } = encryptionOptions;\n\t\tif (keys === undefined || keys.length === 0 || cipherKey === undefined || cipherIV === undefined || cipherAlgo === undefined) {\n\t\t\tthrow(new EncryptedContainerError('INTERNAL_ERROR', 'Unsupported method invocation'));\n\t\t}\n\t\tif (!(cipherAlgo in oidDB)) {\n\t\t\tthrow(new EncryptedContainerError('UNSUPPORTED_CIPHER_ALGORITHM', `Unsupported algorithm: ${cipherAlgo}`));\n\t\t}\n\n\t\t// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n\t\tconst algorithmOID = oidDB[cipherAlgo as keyof typeof oidDB];\n\t\tconst cipher = crypto.createCipheriv(\n\t\t\tcipherAlgo,\n\t\t\tcipherKey,\n\t\t\tcipherIV\n\t\t);\n\n\t\tconst encryptedData = Buffer.concat([\n\t\t\tcipher.update(compressedPlaintext),\n\t\t\tcipher.final()\n\t\t]);\n\n\t\tconst cipherKeyArrayBuffer = bufferToArrayBuffer(cipherKey);\n\t\tconst encryptionKeysSequence = await Promise.all(keys.map(async function(key) {\n\t\t\tconst encryptedSymmetricKey = Buffer.from(await key.encrypt(cipherKeyArrayBuffer));\n\t\t\tconst retval: EncryptedContainerKeyStore = [\n\t\t\t\tBuffer.from(key.publicKeyAndType),\n\t\t\t\tBuffer.from(encryptedSymmetricKey)\n\t\t\t];\n\n\t\t\treturn(retval);\n\t\t}));\n\n\t\tcontainerBox = buildEncryptedBox(encryptionKeysSequence, algorithmOID, cipherIV, encryptedData);\n\t} else {\n\t\t/*\n\t\t * Otherwise we simply pass in the compressed data\n\t\t */\n\t\tcontainerBox = buildPlaintextBox(Buffer.from(compressedPlaintext));\n\t}\n\n\t/*\n\t * Build the typed container package\n\t */\n\tconst container: ContainerPackage = [1, containerBox];\n\n\tif (signingOptions) {\n\t\t/*\n\t\t * Sign the compressed plaintext (before encryption) so signature is verifiable after decryption\n\t\t */\n\t\tconst { signer } = signingOptions;\n\n\t\tif (!signer.hasPrivateKey) {\n\t\t\tthrow(new EncryptedContainerError('SIGNER_REQUIRES_PRIVATE_KEY', 'Signer account must have a private key'));\n\t\t}\n\n\t\t// Hash the compressed plaintext with SHA3-256\n\t\tconst digestHash = crypto.createHash('sha3-256');\n\t\tdigestHash.update(compressedPlaintext);\n\t\tconst digest = digestHash.digest();\n\n\t\t// Sign the digest\n\t\tconst signatureBuffer = await signer.sign(bufferToArrayBuffer(digest), { raw: true });\n\n\t\t// Get signature as Buffer\n\t\tlet signature: Buffer;\n\t\tif (Buffer.isBuffer(signatureBuffer)) {\n\t\t\tsignature = Buffer.from(signatureBuffer);\n\t\t} else if ('get' in signatureBuffer && typeof signatureBuffer.get === 'function') {\n\t\t\tsignature = arrayBufferToBuffer(signatureBuffer.get());\n\t\t} else {\n\t\t\t// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n\t\t\tsignature = arrayBufferToBuffer(signatureBuffer as unknown as ArrayBuffer);\n\t\t}\n\n\t\tconst signerInfoASN1: SignerInfoASN1 = [\n\t\t\t3, // CMSVersion 3 for subjectKeyIdentifier\n\t\t\t{\n\t\t\t\ttype: 'context',\n\t\t\t\tvalue: 0,\n\t\t\t\tkind: 'implicit',\n\t\t\t\tcontains: Buffer.from(signer.publicKeyAndType)\n\t\t\t},\n\t\t\t{ type: 'oid', oid: oidDB['sha3-256'] },\n\t\t\t{ type: 'oid', oid: getSignatureAlgorithmOID(signer) },\n\t\t\tsignature\n\t\t];\n\n\t\tcontainer.push(buildSignerInfoBox(signerInfoASN1));\n\t}\n\n\tconst outputASN1 = JStoASN1(container);\n\tconst outputDER = arrayBufferToBuffer(outputASN1.toBER(false));\n\treturn(outputDER);\n}\n\nfunction parseASN1Bare(input: Buffer, acceptableEncryptionAlgorithms = ['aes-256-cbc', 'null']) {\n\tconst inputSequence = ASN1toJS(bufferToArrayBuffer(input));\n\tif (!isArray(inputSequence) || inputSequence.length < 2) {\n\t\tthrow(new EncryptedContainerError('MALFORMED_BASE_FORMAT', 'Malformed data detected (incorrect base format)'));\n\t}\n\n\tconst version = inputSequence[0];\n\tif (typeof version !== 'bigint') {\n\t\tthrow(new EncryptedContainerError('MALFORMED_VERSION', 'Malformed data detected (version expected at position 0)'));\n\t}\n\n\tif (version !== 1n) {\n\t\tthrow(new EncryptedContainerError('UNSUPPORTED_VERSION', 'Malformed data detected (unsupported version)'));\n\t}\n\n\tconst valueBox = inputSequence[1];\n\tif (typeof valueBox !== 'object' || valueBox === null) {\n\t\tthrow(new EncryptedContainerError('MALFORMED_DATA_STRUCTURE', 'Malformed data detected (data expected at position 1)'));\n\t}\n\n\tif (!('type' in valueBox) || typeof valueBox.type !== 'string') {\n\t\tthrow(new EncryptedContainerError('MALFORMED_DATA_STRUCTURE', 'Malformed data detected (expected type at position 1)'));\n\t}\n\n\tif (valueBox.type !== 'context') {\n\t\tthrow(new EncryptedContainerError('MALFORMED_DATA_STRUCTURE', 'Malformed data detected (expected context at position 1)'));\n\t}\n\n\tif (!('value' in valueBox) || typeof valueBox.value !== 'number') {\n\t\tthrow(new EncryptedContainerError('MALFORMED_DATA_STRUCTURE', 'Malformed data detected (expected context value at position 1)'));\n\t}\n\n\tif (valueBox.value !== 0 && valueBox.value !== 1) {\n\t\tthrow(new EncryptedContainerError('MALFORMED_DATA_STRUCTURE', 'Malformed data detected (expected context value of 0 or 1)'));\n\t}\n\n\tif (!('contains' in valueBox) || typeof valueBox.contains !== 'object' || valueBox.contains === null) {\n\t\tthrow(new EncryptedContainerError('MALFORMED_DATA_STRUCTURE', 'Malformed data detected (expected contents at position 1)'));\n\t}\n\n\tlet isEncrypted;\n\tif (valueBox.value === 0) {\n\t\tisEncrypted = true;\n\t} else {\n\t\tisEncrypted = false;\n\t}\n\n\tconst value = valueBox.contains;\n\tlet containedCompressed: Buffer;\n\tlet cipherInfo;\n\tif (isEncrypted) {\n\t\tif (!isArray(value, 4)) {\n\t\t\tthrow(new EncryptedContainerError('MALFORMED_DATA_STRUCTURE', 'Malformed data (incorrect number of elements within position 1 -- expected 4)'));\n\t\t}\n\n\t\tconst keyInfoUnchecked = value[0];\n\t\tif (!isArray(keyInfoUnchecked)) {\n\t\t\tthrow(new EncryptedContainerError('MALFORMED_DATA_STRUCTURE', 'Malformed data (expected sequence at position 2.0)'));\n\t\t}\n\n\t\tconst keyInfo = keyInfoUnchecked.map(function(checkKeyInfo) {\n\t\t\tif (!isArray(checkKeyInfo, 2)) {\n\t\t\t\tthrow(new EncryptedContainerError('MALFORMED_KEY_INFO', 'Malformed key information (expected sequence of 2 at position 1.0.x)'));\n\t\t\t}\n\n\t\t\tconst publicKeyBuffer = checkKeyInfo[0];\n\t\t\tif (!Buffer.isBuffer(publicKeyBuffer)) {\n\t\t\t\tthrow(new EncryptedContainerError('MALFORMED_KEY_INFO', 'Malformed key information (expected octet string for public key at position 1.0.x)'));\n\t\t\t}\n\t\t\tconst publicKey = Account.fromPublicKeyAndType(publicKeyBuffer);\n\n\t\t\tconst encryptedSymmetricKey = checkKeyInfo[1];\n\t\t\tif (!Buffer.isBuffer(encryptedSymmetricKey)) {\n\t\t\t\tthrow(new EncryptedContainerError('MALFORMED_KEY_INFO', 'Malformed key information (expected octet string for cipher key at position 1.0.x)'));\n\t\t\t}\n\n\t\t\treturn({\n\t\t\t\tpublicKey,\n\t\t\t\tencryptedSymmetricKey\n\t\t\t});\n\t\t});\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\t\tconst encryptionAlgorithmOID = value[1];\n\t\t/* XXX:TODO: Lookup the encryption algorithm from the OID */\n\t\tconst encryptionAlgorithm = 'aes-256-cbc';\n\n\t\tconst cipherIV = value[2];\n\t\tif (!Buffer.isBuffer(cipherIV)) {\n\t\t\tthrow(new EncryptedContainerError('MALFORMED_DATA_STRUCTURE', 'Malformed data (cipher IV expected at position 1.2)'));\n\t\t}\n\n\t\tconst encryptedCompressedValue = value[3];\n\t\tif (!Buffer.isBuffer(encryptedCompressedValue)) {\n\t\t\tthrow(new EncryptedContainerError('MALFORMED_DATA_STRUCTURE', 'Malformed data (encrypted compressed buffer expected at position 1.3)'));\n\t\t}\n\n\t\tcipherInfo = {\n\t\t\tkeys: keyInfo,\n\t\t\tcipherIV: cipherIV,\n\t\t\tencryptedData: encryptedCompressedValue,\n\t\t\tencryptionAlgorithm: encryptionAlgorithm\n\t\t};\n\n\t\tcontainedCompressed = Buffer.from(encryptedCompressedValue);\n\t} else {\n\t\tif (!isArray(value, 1)) {\n\t\t\tthrow(new EncryptedContainerError('MALFORMED_DATA_STRUCTURE', 'Malformed data (incorrect number of elements within position 1 -- expected 1)'));\n\t\t}\n\n\t\tconst containedCompressedUnchecked = value[0];\n\t\tif (!Buffer.isBuffer(containedCompressedUnchecked)) {\n\t\t\tthrow(new EncryptedContainerError('MALFORMED_DATA_STRUCTURE', 'Malformed data (compressed buffer expected at position 1.0)'));\n\t\t}\n\n\t\tif (!acceptableEncryptionAlgorithms.includes('null')) {\n\t\t\tthrow(new EncryptedContainerError('ENCRYPTION_REQUIRED', 'Malformed data (plaintext found but the null encryption algorithm is not acceptable)'));\n\t\t}\n\n\t\tcontainedCompressed = Buffer.from(containedCompressedUnchecked);\n\t}\n\n\t// Parse SignerInfo if present\n\tlet signerInfo: ParsedSignerInfo | undefined;\n\tif (inputSequence.length >= 3) {\n\t\tconst signerInfoBox = inputSequence[2];\n\t\tif (typeof signerInfoBox === 'object' && signerInfoBox !== null &&\n\t\t\t'type' in signerInfoBox && signerInfoBox.type === 'context' &&\n\t\t\t'value' in signerInfoBox && signerInfoBox.value === 2 &&\n\t\t\t'contains' in signerInfoBox && isArray(signerInfoBox.contains, 5)) {\n\n\t\t\tconst signerInfoData = signerInfoBox.contains;\n\n\t\t\t// Parse version\n\t\t\tconst signerVersion = signerInfoData[0];\n\t\t\tif (typeof signerVersion !== 'bigint') {\n\t\t\t\tthrow(new EncryptedContainerError('MALFORMED_SIGNER_INFO', 'Malformed SignerInfo (version expected at position 0)'));\n\t\t\t}\n\n\t\t\t// Parse sid (subjectKeyIdentifier in context tag [0])\n\t\t\tconst sidBox = signerInfoData[1];\n\t\t\tlet signerPublicKeyAndType: Buffer;\n\t\t\tif (typeof sidBox === 'object' && sidBox !== null &&\n\t\t\t\t'type' in sidBox && sidBox.type === 'context' &&\n\t\t\t\t'value' in sidBox && sidBox.value === 0 &&\n\t\t\t\t'contains' in sidBox && (Buffer.isBuffer(sidBox.contains) || sidBox.contains instanceof ArrayBuffer)) {\n\t\t\t\tsignerPublicKeyAndType = arrayBufferLikeToBuffer(sidBox.contains);\n\t\t\t} else if (Buffer.isBuffer(sidBox)) {\n\t\t\t\t// Handle case where ASN.1 parser unwraps the context tag\n\t\t\t\tsignerPublicKeyAndType = Buffer.from(sidBox);\n\t\t\t} else {\n\t\t\t\tthrow(new EncryptedContainerError('MALFORMED_SIGNER_INFO', 'Malformed SignerInfo (sid expected at position 1)'));\n\t\t\t}\n\n\t\t\t// Parse digestAlgorithm\n\t\t\tconst digestAlgoRaw = signerInfoData[2];\n\t\t\tlet digestAlgorithmOID: string;\n\t\t\tif (typeof digestAlgoRaw === 'object' && digestAlgoRaw !== null &&\n\t\t\t\t'type' in digestAlgoRaw && digestAlgoRaw.type === 'oid' &&\n\t\t\t\t'oid' in digestAlgoRaw && typeof digestAlgoRaw.oid === 'string') {\n\t\t\t\tconst normalized = normalizeToNumericOID(digestAlgoRaw.oid);\n\t\t\t\tif (!normalized) {\n\t\t\t\t\tthrow(new EncryptedContainerError('MALFORMED_SIGNER_INFO', `Unknown digest algorithm: ${digestAlgoRaw.oid}`));\n\t\t\t\t}\n\t\t\t\tdigestAlgorithmOID = normalized;\n\t\t\t} else {\n\t\t\t\tthrow(new EncryptedContainerError('MALFORMED_SIGNER_INFO', 'Malformed SignerInfo (digestAlgorithm expected at position 2)'));\n\t\t\t}\n\n\t\t\t// Parse signatureAlgorithm\n\t\t\tconst sigAlgoRaw = signerInfoData[3];\n\t\t\tlet signatureAlgorithmOID: string;\n\t\t\tif (typeof sigAlgoRaw === 'object' && sigAlgoRaw !== null &&\n\t\t\t\t'type' in sigAlgoRaw && sigAlgoRaw.type === 'oid' &&\n\t\t\t\t'oid' in sigAlgoRaw && typeof sigAlgoRaw.oid === 'string') {\n\t\t\t\tconst normalized = normalizeToNumericOID(sigAlgoRaw.oid);\n\t\t\t\tif (!normalized) {\n\t\t\t\t\tthrow(new EncryptedContainerError('MALFORMED_SIGNER_INFO', `Unknown signature algorithm: ${sigAlgoRaw.oid}`));\n\t\t\t\t}\n\t\t\t\tsignatureAlgorithmOID = normalized;\n\t\t\t} else {\n\t\t\t\tthrow(new EncryptedContainerError('MALFORMED_SIGNER_INFO', 'Malformed SignerInfo (signatureAlgorithm expected at position 3)'));\n\t\t\t}\n\n\t\t\t// Parse signature\n\t\t\tconst signatureRaw = signerInfoData[4];\n\t\t\tif (!Buffer.isBuffer(signatureRaw)) {\n\t\t\t\tthrow(new EncryptedContainerError('MALFORMED_SIGNER_INFO', 'Malformed SignerInfo (signature expected at position 4)'));\n\t\t\t}\n\n\t\t\tsignerInfo = {\n\t\t\t\tversion: Number(signerVersion),\n\t\t\t\tsignerPublicKeyAndType,\n\t\t\t\tdigestAlgorithmOID,\n\t\t\t\tsignatureAlgorithmOID,\n\t\t\t\tsignature: Buffer.from(signatureRaw)\n\t\t\t};\n\t\t}\n\t}\n\n\treturn({\n\t\tversion: version,\n\t\tisEncrypted: isEncrypted,\n\t\tinnerValue: containedCompressed,\n\t\tsignerInfo,\n\t\t...cipherInfo\n\t});\n}\n\nasync function parseASN1Decrypt(inputInfo: ReturnType<typeof parseASN1Bare>, keys?: Account[]) {\n\tlet containedCompressed: Buffer;\n\tlet cipherInfo;\n\tif (inputInfo.isEncrypted) {\n\t\tif (keys === undefined || keys.length === 0) {\n\t\t\tthrow(new EncryptedContainerError('NO_KEYS_PROVIDED', 'Encrypted Container found with encryption but no keys for decryption supplied'));\n\t\t}\n\n\t\tconst algorithm = inputInfo.encryptionAlgorithm;\n\t\tif (algorithm === undefined) {\n\t\t\tthrow(new EncryptedContainerError('MALFORMED_DATA_STRUCTURE', 'Encrypted Container found with encryption but no algorithm supplied'));\n\t\t}\n\n\t\tconst keyInfo = inputInfo.keys;\n\t\tif (keyInfo === undefined) {\n\t\t\tthrow(new EncryptedContainerError('INTERNAL_ERROR', 'Encrypted container found with missing keys'));\n\t\t}\n\n\t\tlet decryptionKeyInfo;\n\t\tfor (const checkKeyInfo of keyInfo) {\n\t\t\tfor (const key of keys) {\n\t\t\t\tif (!key.hasPrivateKey) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (key.comparePublicKey(checkKeyInfo.publicKey)) {\n\t\t\t\t\tdecryptionKeyInfo = {\n\t\t\t\t\t\t...checkKeyInfo,\n\t\t\t\t\t\tprivateKey: key\n\t\t\t\t\t};\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (decryptionKeyInfo === undefined) {\n\t\t\tthrow(new EncryptedContainerError('NO_MATCHING_KEY', 'No keys found which can perform decryption on the supplied encryption box'));\n\t\t}\n\n\t\tlet cipherKey: Buffer;\n\t\ttry {\n\t\t\tconst dataToDecrypt = bufferToArrayBuffer(decryptionKeyInfo.encryptedSymmetricKey);\n\t\t\tcipherKey = arrayBufferLikeToBuffer(await decryptionKeyInfo.privateKey.decrypt(dataToDecrypt));\n\t\t} catch (err) {\n\t\t\tthrow(new EncryptedContainerError('DECRYPTION_FAILED', `Key decryption failed: ${err instanceof Error ? err.message : String(err)}`));\n\t\t}\n\n\t\tconst cipherIV = inputInfo.cipherIV;\n\t\tif (cipherIV === undefined) {\n\t\t\tthrow(new EncryptedContainerError('INTERNAL_ERROR', 'No Cipher IV found'));\n\t\t}\n\n\t\tconst encryptedCompressedValue = inputInfo.innerValue;\n\t\tconst decipher = crypto.createDecipheriv(algorithm, cipherKey, cipherIV);\n\t\ttry {\n\t\t\tcontainedCompressed = Buffer.concat([\n\t\t\t\tdecipher.update(encryptedCompressedValue),\n\t\t\t\tdecipher.final()\n\t\t\t]);\n\t\t} catch (err) {\n\t\t\tthrow(new EncryptedContainerError('DECRYPTION_FAILED', `Cipher decryption failed: ${err instanceof Error ? err.message : String(err)}`));\n\t\t}\n\n\t\tcipherInfo = {\n\t\t\tisEncrypted: true,\n\t\t\tkeys: keyInfo,\n\t\t\tcipherIV: cipherIV,\n\t\t\tcipherKey: cipherKey,\n\t\t\tencryptedData: encryptedCompressedValue\n\t\t};\n\t} else {\n\t\tcontainedCompressed = inputInfo.innerValue;\n\t\tcipherInfo = {\n\t\t\tisEncrypted: false\n\t\t};\n\t}\n\n\tlet plaintext: Buffer;\n\ttry {\n\t\tconst inflated = await zlibInflateAsync(bufferToArrayBuffer(containedCompressed));\n\t\tplaintext = arrayBufferLikeToBuffer(inflated);\n\t} catch (err) {\n\t\tthrow(new EncryptedContainerError('DECOMPRESSION_FAILED', `Inflate failed: ${err instanceof Error ? err.message : String(err)}`));\n\t}\n\n\treturn({\n\t\tversion: inputInfo.version,\n\t\tplaintext: plaintext,\n\t\t...cipherInfo\n\t});\n\n}\n\nasync function parseASN1(input: Buffer, keys?: Account[]) {\n\tconst inputInfo = parseASN1Bare(input);\n\tconst retval = await parseASN1Decrypt(inputInfo, keys);\n\n\treturn(retval);\n}\n\nfunction inputToBuffer(data: string | ArrayBuffer | Buffer): Buffer {\n\tif (typeof data === 'string') {\n\t\treturn(Buffer.from(data, 'utf-8'));\n\t} else if (Buffer.isBuffer(data)) {\n\t\treturn(data);\n\t} else {\n\t\treturn(arrayBufferToBuffer(data));\n\t}\n}\n\ntype EncryptedContainerInfo = Pick<CipherOptions, 'cipherAlgo'> & {\n\t/**\n\t * Set of accounts which can access the data\n\t */\n\tprincipals: Account[];\n}\n\ntype UnencryptedContainerInfo = {\n\t/**\n\t * Unencrypted container should not have any principals\n\t */\n\tprincipals: null;\n}\n\ntype ContainerSigningInfo = {\n\t/**\n\t * The account to sign the container with (for new containers)\n\t */\n\tsigner?: Account;\n\n\t/**\n\t * Parsed signer info from an existing container\n\t */\n\tparsedSignerInfo?: ParsedSignerInfo;\n}\n\nexport class EncryptedContainer {\n\tprivate static readonly algorithm = 'aes-256-cbc';\n\n\t/**\n\t * Flag indicating whether we support exporting the plaintext\n\t */\n\t#mayAccessPlaintext = true;\n\n\t/**\n\t * Encryption details\n\t */\n\tprotected _internalState: EncryptedContainerInfo | UnencryptedContainerInfo;\n\n\t/**\n\t * Signing information\n\t */\n\t#signingInfo: ContainerSigningInfo = {};\n\n\t/**\n\t * The plaintext or encoded (and possibly encrypted) data\n\t */\n\t#data:\n\t\t{ plaintext: Buffer } |\n\t\t{ encoded: Buffer } |\n\t\t{ plaintext: Buffer, encoded: Buffer };\n\n\tconstructor(principals: Account[] | null, signer?: Account) {\n\t\tif (principals === null) {\n\t\t\tthis._internalState = {\n\t\t\t\tprincipals: null\n\t\t\t};\n\t\t} else {\n\t\t\tthis._internalState = {\n\t\t\t\tprincipals: principals,\n\t\t\t\tcipherAlgo: EncryptedContainer.algorithm\n\t\t\t}\n\t\t};\n\t\tthis.#data = { plaintext: Buffer.alloc(0) };\n\n\t\tif (signer) {\n\t\t\tthis.#signingInfo.signer = signer;\n\t\t}\n\t}\n\n\tget encrypted(): boolean {\n\t\treturn(this._internalState.principals !== null);\n\t}\n\n\t#isEncrypted(): this is { _internalState: EncryptedContainerInfo } {\n\t\treturn(this.encrypted);\n\t}\n\n\t/**\n\t * Create an instance of the EncryptedContainer from an encrypted blob,\n\t * it will need to be decryptable with one of the specified principals\n\t *\n\t * After decryption happens, the list of principals with access to the\n\t * resource will be reset to what is contained within the encrypted\n\t * container\n\t */\n\tstatic fromEncryptedBuffer(data: ArrayBuffer | Buffer, principals: Account[]): EncryptedContainer {\n\t\tconst retval = new EncryptedContainer(principals);\n\n\t\tretval.#setEncodedBuffer(data);\n\t\tretval.#computeAndSetKeyInfo(true);\n\n\t\treturn(retval);\n\t}\n\n\tstatic fromEncodedBuffer(data: ArrayBuffer | Buffer, principals: Account[] | null): EncryptedContainer {\n\t\tconst retval = new EncryptedContainer(principals);\n\n\t\tretval.#setEncodedBuffer(data);\n\t\tretval.#computeAndSetKeyInfo(false);\n\n\t\treturn(retval);\n\t}\n\n\t/**\n\t * Create an instance of the EncryptedContainer from a plaintext.\n\t *\n\t * It will be decryptable by any one of the specified principals\n\t *\n\t * @param data The plaintext data to encrypt or encode\n\t * @param principals The list of principals who can access the data if it is null then the data is not encrypted\n\t * @param options Options including locked (plaintext accessibility) and signer (for RFC 5652 signing). For backward compatibility, can also be a boolean for locked.\n\t * @returns The EncryptedContainer instance with the plaintext data and principals set\n\t */\n\tstatic fromPlaintext(data: string | ArrayBuffer | Buffer, principals: Account[] | null, options?: boolean | FromPlaintextOptions): EncryptedContainer {\n\t\t// Handle backward compatibility - if options is a boolean, treat it as the locked flag\n\t\tlet lockedOpt: boolean | undefined;\n\t\tlet signer: Account | undefined;\n\n\t\tif (typeof options === 'boolean') {\n\t\t\tlockedOpt = options;\n\t\t} else if (options !== undefined) {\n\t\t\tlockedOpt = options.locked;\n\t\t\tsigner = options.signer;\n\t\t}\n\n\t\tconst retval = new EncryptedContainer(principals, signer);\n\n\t\tlet locked = lockedOpt;\n\t\tif (locked === undefined) {\n\t\t\tlocked = true;\n\t\t\tif (principals === null) {\n\t\t\t\tlocked = false;\n\t\t\t}\n\t\t}\n\n\t\tif (locked) {\n\t\t\tretval.disablePlaintext();\n\t\t}\n\n\t\tretval.setPlaintext(data);\n\n\t\treturn(retval);\n\t}\n\n\t/**\n\t * Set the plaintext buffer to the specified value\n\t */\n\tsetPlaintext(data: string | ArrayBuffer | Buffer): void {\n\t\tthis.#data = { plaintext: inputToBuffer(data) };\n\t}\n\n\t/**\n\t * Set the encoded blob to the specified value\n\t */\n\t#setEncodedBuffer(data: ArrayBuffer | Buffer): void {\n\t\tthis.#data = { encoded: inputToBuffer(data) };\n\t}\n\n\tprivate get _encoded(): Buffer | undefined {\n\t\tif ('encoded' in this.#data && this.#data.encoded !== undefined) {\n\t\t\treturn(this.#data.encoded);\n\t\t}\n\n\t\treturn(undefined);\n\t}\n\n\tprivate get _plaintext(): Buffer | undefined {\n\t\tif ('plaintext' in this.#data && this.#data.plaintext !== undefined) {\n\t\t\treturn(this.#data.plaintext);\n\t\t}\n\n\t\treturn(undefined);\n\t}\n\n\t/*\n\t * Return the decoded data from the encoded blob\n\t * and populate the symmetric key parameters from the encoded blob if it is encrypted\n\t */\n\t#computeAndSetKeyInfo(mustBeEncrypted: boolean) {\n\t\tif (this._encoded === undefined) {\n\t\t\tthrow(new EncryptedContainerError('NO_ENCODED_DATA_AVAILABLE', 'No encoded data available'));\n\t\t}\n\n\t\tconst plaintextWrapper = parseASN1Bare(this._encoded);\n\n\t\tif (mustBeEncrypted && !plaintextWrapper.isEncrypted) {\n\t\t\tthrow(new EncryptedContainerError('ENCRYPTION_REQUIRED', 'Unable to set key information from plaintext -- it is not encrypted but that was required'));\n\t\t}\n\n\t\tif (plaintextWrapper.isEncrypted) {\n\t\t\tconst principals = this._internalState.principals;\n\t\t\tif (principals === null) {\n\t\t\t\tthrow(new EncryptedContainerError('INVALID_PRINCIPALS', 'May not encrypt data with a null set of principals'));\n\t\t\t}\n\n\t\t\t/*\n\t\t\t * Compute the new accounts by merging the input from the\n\t\t\t * data and the existing list of principals\n\t\t\t */\n\t\t\t/**\n\t\t\t * The existing principals from the blob, with existing\n\t\t\t * principals substituted in where appropriate\n\t\t\t */\n\t\t\tconst blobPrincipals = (plaintextWrapper.keys ?? []).map((keyInfo) => {\n\t\t\t\tconst currentPublicKey = keyInfo.publicKey;\n\t\t\t\tif (!currentPublicKey.isAccount()) {\n\t\t\t\t\tthrow(new EncryptedContainerError('INTERNAL_ERROR', 'Non-account found within the encryption key list'));\n\t\t\t\t}\n\n\t\t\t\tfor (const checkExistingKey of principals) {\n\t\t\t\t\tif (checkExistingKey.comparePublicKey(currentPublicKey)) {\n\t\t\t\t\t\treturn(checkExistingKey);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn(currentPublicKey);\n\t\t\t});\n\n\t\t\tthis._internalState.principals = blobPrincipals;\n\n\t\t\t// Confirm updated principals are populated correctly which sets container to encrypted\n\t\t\tif (!this.encrypted) {\n\t\t\t\tthrow(new EncryptedContainerError('INTERNAL_ERROR', 'Encrypted data found but not marked as encrypted'));\n\t\t\t}\n\t\t} else {\n\t\t\tthis._internalState.principals = null;\n\n\t\t\tif (this.encrypted) {\n\t\t\t\tthrow(new EncryptedContainerError('INTERNAL_ERROR', 'Plaintext data found but marked as encrypted'));\n\t\t\t}\n\t\t}\n\n\t\t// Store parsed signer info if present\n\t\tif (plaintextWrapper.signerInfo) {\n\t\t\tthis.#signingInfo.parsedSignerInfo = plaintextWrapper.signerInfo;\n\t\t}\n\n\t\treturn(plaintextWrapper);\n\t}\n\n\t/**\n\t * Populate the plaintext (as well as symmetric key parameters) from\n\t * the encoded blob\n\t */\n\tasync #computePlaintext() {\n\t\tif (this._plaintext) {\n\t\t\treturn(this._plaintext);\n\t\t}\n\n\t\tif (this._encoded === undefined) {\n\t\t\tthrow(new EncryptedContainerError('NO_ENCODED_DATA_AVAILABLE', 'No plaintext or encoded data available'));\n\t\t}\n\n\n\t\tconst info = this.#computeAndSetKeyInfo(this.encrypted);\n\n\t\tlet principals = this._internalState.principals;\n\t\tif (info.isEncrypted) {\n\t\t\tif (principals === null) {\n\t\t\t\tthrow(new EncryptedContainerError('INVALID_PRINCIPALS', 'May not decrypt data with a null set of principals'));\n\t\t\t}\n\t\t} else {\n\t\t\tprincipals = [];\n\t\t}\n\n\t\tconst plaintextWrapper = await parseASN1Decrypt(info, principals);\n\t\tconst plaintext = Buffer.from(plaintextWrapper.plaintext);\n\n\t\tthis.#data = { ...this.#data, plaintext };\n\n\t\treturn(plaintext);\n\t}\n\n\t/**\n\t * Compute the encoded version of the plaintext data\n\t */\n\tasync #computePlaintextEncoded() {\n\t\tif (this._plaintext === undefined) {\n\t\t\tthrow(new EncryptedContainerError('NO_PLAINTEXT_AVAILABLE', 'No plaintext data available'));\n\t\t}\n\n\t\tconst signingOptions = this.#signingInfo.signer\n\t\t\t? { signer: this.#signingInfo.signer }\n\t\t\t: undefined;\n\n\t\tconst structuredData = await buildASN1(\n\t\t\tthis._plaintext,\n\t\t\tundefined,\n\t\t\tsigningOptions\n\t\t);\n\n\t\treturn(structuredData);\n\t}\n\n\t/**\n\t * Populate the encrypted blob from the plaintext and symmetric key\n\t * parameters. If the symmetric key parameters have not been\n\t * initialized they will be initialized at this time.\n\t */\n\tasync #computeEncryptedEncoded() {\n\t\tif (this._plaintext === undefined) {\n\t\t\tthrow(new EncryptedContainerError('NO_PLAINTEXT_AVAILABLE', 'No encrypted nor plaintext data available'));\n\t\t}\n\n\t\tif (!this.#isEncrypted()) {\n\t\t\tthrow(new EncryptedContainerError('INTERNAL_ERROR', 'Asked to encrypt a plaintext buffer'));\n\t\t}\n\n\t\tconst signingOptions = this.#signingInfo.signer\n\t\t\t? { signer: this.#signingInfo.signer }\n\t\t\t: undefined;\n\n\t\t/**\n\t\t * structured data is the ASN.1 encoded structure\n\t\t */\n\t\tconst structuredData = await buildASN1(\n\t\t\tthis._plaintext,\n\t\t\t{\n\t\t\t\tkeys: this._internalState.principals,\n\t\t\t\tcipherKey: Buffer.from(crypto.randomBytes(32)),\n\t\t\t\tcipherIV: Buffer.from(crypto.randomBytes(16)),\n\t\t\t\tcipherAlgo: this._internalState.cipherAlgo\n\t\t\t},\n\t\t\tsigningOptions\n\t\t);\n\n\t\treturn(structuredData);\n\t}\n\n\tasync #computeEncoded() {\n\t\tif (this._encoded !== undefined) {\n\t\t\treturn(this._encoded);\n\t\t}\n\n\t\tlet computed: Buffer;\n\t\tif (!this.encrypted) {\n\t\t\tcomputed = await this.#computePlaintextEncoded();\n\t\t} else {\n\t\t\tcomputed = await this.#computeEncryptedEncoded();\n\t\t}\n\n\t\tthis.#data = { ...this.#data, encoded: computed };\n\n\t\treturn(computed);\n\t}\n\n\t/**\n\t * Grant access to the secret for account(s) synchronously. This\n\t * assumes the plaintext has already been computed and will fail\n\t * if it is not\n\t */\n\tgrantAccessSync(accounts: Account[] | Account): this {\n\t\tif (this._plaintext === undefined) {\n\t\t\tthrow(new EncryptedContainerError('NO_PLAINTEXT_AVAILABLE', 'Unable to grant access, plaintext not available'));\n\t\t}\n\n\t\tif (!this.#isEncrypted()) {\n\t\t\tthrow(new EncryptedContainerError('ACCESS_MANAGEMENT_NOT_ALLOWED', 'May not manage access to a plaintext container'));\n\t\t}\n\n\t\tif (!Array.isArray(accounts)) {\n\t\t\taccounts = [accounts];\n\t\t}\n\n\t\t// Encoded data is invalidated with the new permissions so set only the plaintext data\n\t\tthis.setPlaintext(this._plaintext);\n\n\t\tthis._internalState.principals.push(...accounts);\n\n\t\treturn(this);\n\t}\n\n\t/**\n\t * Grant access to the secret for account(s).\n\t */\n\tasync grantAccess(accounts: Account[] | Account): Promise<this> {\n\t\tawait this.#computePlaintext();\n\n\t\tthis.grantAccessSync(accounts);\n\n\t\treturn(this);\n\t}\n\n\t/**\n\t * Revoke access to the secret for an account synchronously. This\n\t * assumes the plaintext has already been computed and will fail\n\t * if it is not\n\t */\n\trevokeAccessSync(account: Account): this {\n\t\tif (this._plaintext === undefined) {\n\t\t\tthrow(new EncryptedContainerError('NO_PLAINTEXT_AVAILABLE', 'Unable to revoke access, plaintext not available'));\n\t\t}\n\n\t\tif (!this.#isEncrypted()) {\n\t\t\tthrow(new EncryptedContainerError('ACCESS_MANAGEMENT_NOT_ALLOWED', 'May not manage access to a plaintext container'));\n\t\t}\n\n\t\t// Encoded data is invalidated with the new permissions so set only the plaintext data\n\t\tthis.setPlaintext(this._plaintext);\n\n\t\tthis._internalState.principals = this._internalState.principals.filter(function(checkAccount) {\n\t\t\treturn(!checkAccount.comparePublicKey(account));\n\t\t});\n\n\t\treturn(this);\n\t}\n\n\t/**\n\t * Revoke access to the secret for an account\n\t */\n\tasync revokeAccess(account: Account): Promise<this> {\n\t\tawait this.#computePlaintext();\n\n\t\tthis.revokeAccessSync(account);\n\n\t\treturn(this);\n\t}\n\n\t/**\n\t * Disable access to the plaintext from this instance\n\t */\n\tdisablePlaintext(): this {\n\t\tthis.#mayAccessPlaintext = false;\n\n\t\treturn(this);\n\t}\n\n\t/**\n\t * Get the plaintext for this instance\n\t */\n\tasync getPlaintext(): Promise<ArrayBuffer> {\n\t\tif (!this.#mayAccessPlaintext) {\n\t\t\tthrow(new EncryptedContainerError('PLAINTEXT_DISABLED', 'May not access plaintext'));\n\t\t}\n\n\t\tconst plaintext = await this.#computePlaintext();\n\n\t\tif (plaintext === undefined) {\n\t\t\tthrow(new EncryptedContainerError('INTERNAL_ERROR', 'Plaintext could not be decoded'));\n\t\t}\n\n\t\t/*\n\t\t * Make a copy of our internal buffer so that any changes made\n\t\t * to either our internal buffer or by our caller do not\n\t\t * interfere\n\t\t */\n\t\treturn(bufferToArrayBuffer(plaintext));\n\t}\n\n\t/**\n\t * Get the serializable buffer which can be stored and reconstructed\n\t */\n\tasync getEncodedBuffer(): Promise<ArrayBuffer> {\n\t\tconst serialized = await this.#computeEncoded();\n\n\t\tif (serialized === undefined) {\n\t\t\tthrow(new EncryptedContainerError('INTERNAL_ERROR', 'Could not encode data'));\n\t\t}\n\n\t\t/*\n\t\t * Make a copy of our internal buffer so that any changes made\n\t\t * to either our internal buffer or by our caller do not\n\t\t * interfere\n\t\t */\n\t\treturn(bufferToArrayBuffer(serialized));\n\t}\n\n\t/**\n\t * Get the list of accounts which have access to read the plaintext of\n\t * this container\n\t */\n\tget principals(): Account[] {\n\t\tif (!this.#isEncrypted()) {\n\t\t\tthrow(new EncryptedContainerError('ACCESS_MANAGEMENT_NOT_ALLOWED', 'May not manage access to a plaintext container'));\n\t\t}\n\n\t\treturn(this._internalState.principals);\n\t}\n\n\t/**\n\t * Check if this container is signed\n\t */\n\tget isSigned(): boolean {\n\t\treturn(this.#signingInfo.signer !== undefined || this.#signingInfo.parsedSignerInfo !== undefined);\n\t}\n\n\t/**\n\t * Get the signing account of this container.\n\t */\n\tgetSigningAccount(): Account | undefined {\n\t\t// If we have a signer account set (for new containers), return it\n\t\tif (this.#signingInfo.signer) {\n\t\t\treturn(this.#signingInfo.signer);\n\t\t}\n\n\t\t// If we have parsed signer info (from encoded container), construct account from it\n\t\tif (this.#signingInfo.parsedSignerInfo) {\n\t\t\tconst { signerPublicKeyAndType } = this.#signingInfo.parsedSignerInfo;\n\t\t\treturn(Account.fromPublicKeyAndType(signerPublicKeyAndType));\n\t\t}\n\n\t\treturn(undefined);\n\t}\n\n\t/**\n\t * Verify the signature on this container.\n\t * This requires decrypting the container first to access the compressed plaintext.\n\t *\n\t * @returns true if signature is valid, false if invalid, or throws if not signed or plaintext unavailable\n\t */\n\tasync verifySignature(): Promise<boolean> {\n\t\t// If we have a signer but no parsed info yet, encode first to produce the signed DER\n\t\tif (!this.#signingInfo.parsedSignerInfo && this.#signingInfo.signer) {\n\t\t\tconst encoded = await this.#computeEncoded();\n\t\t\tif (encoded) {\n\t\t\t\tconst parsed = parseASN1Bare(encoded);\n\t\t\t\tif (parsed.signerInfo) {\n\t\t\t\t\tthis.#signingInfo.parsedSignerInfo = parsed.signerInfo;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (!this.#signingInfo.parsedSignerInfo) {\n\t\t\tthrow(new EncryptedContainerError('NOT_SIGNED', 'Container is not signed'));\n\t\t}\n\n\t\tconst signerInfo = this.#signingInfo.parsedSignerInfo;\n\n\t\t// Validate digest algorithm OID\n\t\tif (!supportedDigestOIDs.has(signerInfo.digestAlgorithmOID)) {\n\t\t\tthrow(new EncryptedContainerError(\n\t\t\t\t'UNSUPPORTED_DIGEST_ALGORITHM',\n\t\t\t\t`Unsupported digest algorithm OID: ${signerInfo.digestAlgorithmOID}`\n\t\t\t));\n\t\t}\n\n\t\t// Validate signature algorithm OID\n\t\tif (!supportedSignatureOIDs.has(signerInfo.signatureAlgorithmOID)) {\n\t\t\tthrow(new EncryptedContainerError(\n\t\t\t\t'UNSUPPORTED_SIGNATURE_ALGORITHM',\n\t\t\t\t`Unsupported signature algorithm OID: ${signerInfo.signatureAlgorithmOID}`\n\t\t\t));\n\t\t}\n\n\t\t// We need the plaintext to verify the signature\n\t\tconst plaintext = await this.#computePlaintext();\n\t\tif (!plaintext) {\n\t\t\tthrow(new EncryptedContainerError('NO_PLAINTEXT_AVAILABLE', 'Unable to compute plaintext for signature verification'));\n\t\t}\n\n\t\t// Recompute the digest of the compressed plaintext\n\t\tconst compressedPlaintext = Buffer.from(await zlibDeflateAsync(bufferToArrayBuffer(plaintext)));\n\t\tconst digestHash = crypto.createHash('sha3-256');\n\t\tdigestHash.update(compressedPlaintext);\n\t\tconst digest = digestHash.digest();\n\n\t\t// Get the signer's account (public key only)\n\t\tconst signerAccount = Account.fromPublicKeyAndType(signerInfo.signerPublicKeyAndType);\n\n\t\t// Verify the signature\n\t\tconst signature = signerInfo.signature;\n\t\tconst isValid = signerAccount.verify(\n\t\t\tbufferToArrayBuffer(digest),\n\t\t\tbufferToArrayBuffer(signature),\n\t\t\t{ raw: true }\n\t\t);\n\n\t\treturn(isValid);\n\t}\n}\n\n/** @internal */\nexport const _Testing = {\n\tbuildASN1: buildASN1,\n\tparseASN1: parseASN1\n};\n\nexport default EncryptedContainer;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../src/lib/error.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../src/lib/error.ts"],"names":[],"mappings":"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"}
package/lib/error.js CHANGED
@@ -22,7 +22,9 @@ async function getErrorClassMapping() {
22
22
  const importPromises = await Promise.all([
23
23
  import('../services/kyc/common.js'),
24
24
  import('../services/fx/common.js'),
25
- import('../services/asset-movement/common.js')
25
+ import('../services/asset-movement/common.js'),
26
+ import('../services/storage/common.js'),
27
+ import('../services/username/common.js')
26
28
  ]);
27
29
  for (const module of importPromises) {
28
30
  const classes = Object.values(module.Errors);
package/lib/error.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"error.js","sourceRoot":"","sources":["../../src/lib/error.ts"],"names":[],"mappings":"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","sourcesContent":["import type { IValidation, TypeGuardError } from 'typia';\nimport { createAssertEquals, createIs } from 'typia';\nimport type { LogLevel } from './log/index.ts';\n/**\n * Type for error classes that can be deserialized\n */\ninterface DeserializableErrorClass {\n\treadonly name: string;\n\tfromJSON: (input: unknown) => Promise<KeetaAnchorError>;\n}\n\n/**\n * Lazy-loaded error classes to avoid circular dependencies\n * The classes are loaded on first use\n */\nlet ERROR_CLASS_MAPPING: { [key: string]: (input: unknown) => Promise<KeetaAnchorError> } | null = null;\n\nasync function getErrorClassMapping(): Promise<{ [key: string]: (input: unknown) => Promise<KeetaAnchorError> }> {\n\tif (ERROR_CLASS_MAPPING) {\n\t\treturn(ERROR_CLASS_MAPPING);\n\t}\n\n\tconst ERROR_CLASSES: DeserializableErrorClass[] = [\n\t\t/*\n\t\t * We purposefully leave out KeetaAnchorError here since it\n\t\t * is the base error class and could cause circular resolution\n\t\t */\n\t\t// eslint-disable-next-line @typescript-eslint/no-use-before-define\n\t\tKeetaAnchorUserError, KeetaAnchorUserValidationError\n\t];\n\n\t// Dynamically import errors to avoid circular dependencies\n\tconst importPromises: { Errors: { [key: string]: DeserializableErrorClass }}[] = await Promise.all([\n\t\timport('../services/kyc/common.js'),\n\t\timport('../services/fx/common.js'),\n\t\timport('../services/asset-movement/common.js')\n\t]);\n\n\tfor (const module of importPromises) {\n\t\tconst classes = Object.values(module.Errors);\n\t\tERROR_CLASSES.push(...classes);\n\t}\n\n\tconst mapping: { [key: string]: (input: unknown) => Promise<KeetaAnchorError> } = {};\n\tfor (const errorClass of ERROR_CLASSES) {\n\t\tmapping[errorClass.name] = errorClass.fromJSON.bind(errorClass);\n\t}\n\n\tERROR_CLASS_MAPPING = mapping;\n\treturn(mapping);\n}\n\n/**\n * Base error class for all Keeta Anchor errors\n */\nexport class KeetaAnchorError extends Error {\n\tstatic override readonly name: string = 'KeetaAnchorError';\n\t#name: string;\n\t#statusCode = 400;\n\t#retryable = false;\n\tprivate readonly keetaAnchorErrorObjectTypeID!: string;\n\tprivate static readonly keetaAnchorErrorObjectTypeID = '5d7f1578-e887-4104-bab0-4115ae33b08f';\n\tprotected userError = false;\n\treadonly logLevel: LogLevel = 'ERROR';\n\n\tget name(): string {\n\t\treturn(this.#name);\n\t}\n\n\tprotected set name(value: string) {\n\t\tthis.#name = value;\n\t}\n\n\tget statusCode(): number {\n\t\treturn(this.#statusCode);\n\t}\n\n\tprotected set statusCode(value: number) {\n\t\tthis.#statusCode = value;\n\t}\n\n\tget retryable(): boolean {\n\t\treturn(this.#retryable);\n\t}\n\n\tprotected set retryable(value: boolean) {\n\t\tthis.#retryable = value;\n\t}\n\n\tconstructor(message: string) {\n\t\tsuper(message);\n\n\t\t// Need to cast to access the static name property from the constructor\n\t\t// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n\t\tthis.#name = (this.constructor as typeof KeetaAnchorError).name;\n\n\t\tObject.defineProperty(this, 'keetaAnchorErrorObjectTypeID', {\n\t\t\tvalue: KeetaAnchorError.keetaAnchorErrorObjectTypeID,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\t/**\n\t * Protected method to restore error properties from JSON\n\t * This allows subclasses to properly restore properties without using any\n\t */\n\tprotected restoreFromJSON(other: { [key: string]: unknown }): void {\n\t\t// Restore statusCode if present\n\t\tif ('statusCode' in other) {\n\t\t\tif (typeof other.statusCode !== 'number') {\n\t\t\t\tthrow(new TypeError('Invalid statusCode: expected number'));\n\t\t\t}\n\t\t\tthis.statusCode = other.statusCode;\n\t\t}\n\n\t\t// Restore retryable if present\n\t\tif ('retryable' in other) {\n\t\t\tif (typeof other.retryable !== 'boolean') {\n\t\t\t\tthrow(new TypeError('Invalid retryable: expected boolean'));\n\t\t\t}\n\t\t\tthis.retryable = other.retryable;\n\t\t}\n\t}\n\n\tstatic isInstance(input: unknown): input is KeetaAnchorError {\n\t\treturn(this.hasPropWithValue(input, 'keetaAnchorErrorObjectTypeID', KeetaAnchorError.keetaAnchorErrorObjectTypeID));\n\t}\n\n\tasErrorResponse(contentType: 'text/plain' | 'application/json', message?: string): { error: string; statusCode: number; contentType: string } {\n\t\tmessage ??= 'Internal error';\n\t\tif (contentType === 'application/json') {\n\t\t\tmessage = JSON.stringify({\n\t\t\t\t...this.toJSON(),\n\t\t\t\tstatusCode: undefined\n\t\t\t});\n\t\t}\n\n\t\treturn({\n\t\t\terror: message,\n\t\t\tstatusCode: this.statusCode,\n\t\t\tcontentType: contentType\n\t\t});\n\t}\n\n\ttoJSON(): { ok: false; retryable: boolean; error: string; name: string; statusCode: number } {\n\t\tlet message = 'Internal error';\n\t\tif (this.userError) {\n\t\t\tmessage = this.message;\n\t\t}\n\n\t\treturn({\n\t\t\tok: false,\n\t\t\tretryable: this.retryable,\n\t\t\terror: message,\n\t\t\tname: this.#name,\n\t\t\tstatusCode: this.statusCode\n\t\t});\n\t}\n\n\tprotected static hasPropWithValue<PROP extends string, VALUE extends string | number | boolean>(input: unknown, prop: PROP, value: VALUE): input is { [key in PROP]: VALUE } {\n\t\tif (typeof input !== 'object' || input === null) {\n\t\t\treturn(false);\n\t\t}\n\n\t\tif (!(prop in input)) {\n\t\t\treturn(false);\n\t\t}\n\n\t\t// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n\t\tconst inputValue = input[prop as keyof typeof input] as unknown;\n\t\tif (inputValue !== value) {\n\t\t\treturn(false);\n\t\t}\n\n\t\treturn(true);\n\t}\n\n\t/**\n\t * Extract common error properties from JSON input\n\t * This validates the structure and extracts properties needed for construction\n\t */\n\tprotected static extractErrorProperties(input: unknown, expectedClass?: { name: string }): { message: string; other: { [key: string]: unknown }} {\n\t\tif (!this.hasPropWithValue(input, 'ok', false)) {\n\t\t\tthrow(new Error('Invalid error JSON object'));\n\t\t}\n\n\t\tif (typeof input !== 'object' || input === null) {\n\t\t\tthrow(new Error('Invalid error JSON object'));\n\t\t}\n\n\t\t// Verify the name matches if an expected class is provided\n\t\tif (expectedClass && 'name' in input && input.name !== expectedClass.name) {\n\t\t\tthrow(new Error(`Error name mismatch: expected ${expectedClass.name}, got ${input.name}`));\n\t\t}\n\n\t\t// Extract error message\n\t\tlet message = 'Internal error';\n\t\tif ('error' in input && typeof input.error === 'string') {\n\t\t\tmessage = input.error;\n\t\t}\n\n\t\t// Extract other properties\n\t\tconst other: { [key: string]: unknown } = {};\n\t\tfor (const key in input) {\n\t\t\tif (key !== 'error' && key !== 'ok') {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n\t\t\t\tother[key] = input[key as keyof typeof input];\n\t\t\t}\n\t\t}\n\n\t\treturn({ message, other });\n\t}\n\n\tstatic async fromJSON(input: unknown): Promise<KeetaAnchorError> {\n\t\t// Try to use the deserializer mapping if available for subclasses\n\t\tif (typeof input !== 'object' || input === null) {\n\t\t\tthrow(new Error('Invalid error JSON object'));\n\t\t}\n\n\t\tif (!('ok' in input) || input.ok !== false) {\n\t\t\tthrow(new Error('Invalid error JSON object: expected ok: false'));\n\t\t}\n\n\t\t// Check if there's a specific error class name\n\t\tif ('name' in input && typeof input.name === 'string') {\n\t\t\tif (input.name === 'KeetaAnchorError') {\n\t\t\t\tconst { message, other } = KeetaAnchorError.extractErrorProperties(input, this);\n\t\t\t\tconst error = new this(message);\n\t\t\t\terror.restoreFromJSON(other);\n\t\t\t\treturn(error);\n\t\t\t}\n\t\t\tconst mapping = await getErrorClassMapping();\n\t\t\tconst deserializer = mapping[input.name];\n\t\t\tif (deserializer) {\n\t\t\t\treturn(await deserializer(input));\n\t\t\t}\n\t\t}\n\n\t\tthrow(new Error('Invalid error JSON object: unknown error class'));\n\t}\n}\n\n/**\n * User-facing error class that extends KeetaAnchorError\n */\nexport class KeetaAnchorUserError extends KeetaAnchorError {\n\tstatic readonly name: string = 'KeetaAnchorUserError';\n\tprivate readonly keetaAnchorUserErrorObjectTypeID!: string;\n\tprivate static readonly keetaAnchorUserErrorObjectTypeID = 'a1e64819-14b6-45ac-a1ec-b9c0bdd51e7b';\n\tprotected override userError = true;\n\n\tstatic isInstance(input: unknown): input is KeetaAnchorUserError {\n\t\treturn(this.hasPropWithValue(input, 'keetaAnchorUserErrorObjectTypeID', KeetaAnchorUserError.keetaAnchorUserErrorObjectTypeID));\n\t}\n\n\tconstructor(message: string) {\n\t\tsuper(message);\n\n\t\tObject.defineProperty(this, 'keetaAnchorUserErrorObjectTypeID', {\n\t\t\tvalue: KeetaAnchorUserError.keetaAnchorUserErrorObjectTypeID,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tasErrorResponse(contentType: 'text/plain' | 'application/json'): { error: string; statusCode: number; contentType: string } {\n\t\treturn(super.asErrorResponse(contentType, this.message));\n\t}\n\n\tstatic async fromJSON(input: unknown): Promise<InstanceType<typeof this>> {\n\t\tconst { message, other } = this.extractErrorProperties(input, this);\n\t\tconst error = new this(message);\n\t\terror.restoreFromJSON(other);\n\t\treturn(error);\n\t}\n}\n\ninterface KeetaAnchorUserValidationErrorDetails {\n\tfields: {\n\t\tpath?: string | undefined;\n\t\tmessage: string;\n\t\tallowedValues?: string[];\n\t\texpected?: string;\n\t\treceivedValue?: unknown;\n\t\tvalueRules?: { minimum?: string | undefined; maximum?: string | undefined };\n\t}[];\n}\n\nconst assertKeetaAnchorUserValidationErrorDetails: (input: unknown) => KeetaAnchorUserValidationErrorDetails = createAssertEquals<KeetaAnchorUserValidationErrorDetails>();\ntype KeetaAnchorUserValidationErrorJSON = ReturnType<KeetaAnchorUserError['toJSON']> & KeetaAnchorUserValidationErrorDetails;\n\ntype TypeGuardErrorLike = Pick<TypeGuardError.IProps | IValidation.IError, 'path' | 'expected' | 'value'>;\n\nconst isTypeGuardErrorLike: (error: unknown) => error is TypeGuardErrorLike = createIs<TypeGuardErrorLike>();\n\nexport class KeetaAnchorUserValidationError extends KeetaAnchorUserError implements KeetaAnchorUserValidationErrorDetails {\n\tstatic readonly isTypeGuardErrorLike: typeof isTypeGuardErrorLike = isTypeGuardErrorLike;\n\n\tstatic override readonly name: string = 'KeetaAnchorUserValidationError';\n\tprivate readonly KeetaAnchorUserValidationErrorObjectTypeID!: string;\n\tprivate static readonly KeetaAnchorUserValidationErrorObjectTypeID = '5fa46799-48b8-4cf2-a3de-9c01418d3ba0';\n\tprotected override userError = true;\n\n\treadonly fields: KeetaAnchorUserValidationErrorDetails['fields'];\n\n\tstatic isInstance(input: unknown): input is KeetaAnchorUserValidationError {\n\t\treturn(this.hasPropWithValue(input, 'KeetaAnchorUserValidationErrorObjectTypeID', KeetaAnchorUserValidationError.KeetaAnchorUserValidationErrorObjectTypeID));\n\t}\n\n\tconstructor(args: KeetaAnchorUserValidationErrorDetails, message?: string) {\n\t\tsuper(message ?? `Validation error on fields ${args.fields.map((f) => f.path).join(', ')}`);\n\n\t\tObject.defineProperty(this, 'KeetaAnchorUserValidationErrorObjectTypeID', {\n\t\t\tvalue: KeetaAnchorUserValidationError.KeetaAnchorUserValidationErrorObjectTypeID,\n\t\t\tenumerable: false\n\t\t});\n\n\t\tthis.fields = args.fields;\n\t}\n\n\toverride get statusCode() {\n\t\treturn(400);\n\t}\n\n\tasErrorResponse(contentType: 'text/plain' | 'application/json'): { error: string; statusCode: number; contentType: string } {\n\t\tlet message = this.message;\n\t\tif (contentType === 'application/json') {\n\t\t\tmessage = JSON.stringify({\n\t\t\t\tok: false,\n\t\t\t\tname: this.name,\n\t\t\t\tdata: { fields: this.fields },\n\t\t\t\terror: this.message\n\t\t\t});\n\t\t}\n\n\t\treturn({\n\t\t\terror: message,\n\t\t\tstatusCode: this.statusCode,\n\t\t\tcontentType: contentType\n\t\t});\n\t}\n\n\ttoJSON(): KeetaAnchorUserValidationErrorJSON {\n\t\treturn({\n\t\t\t...super.toJSON(),\n\t\t\tfields: this.fields\n\t\t});\n\t}\n\n\n\tstatic async fromJSON(input: unknown): Promise<KeetaAnchorUserValidationError> {\n\t\tconst { message, other } = this.extractErrorProperties(input, this);\n\n\t\tif (!('data' in other)) {\n\t\t\tthrow(new Error('Invalid KeetaAnchorUserValidationError JSON: missing data property'));\n\t\t}\n\n\t\tconst parsed = assertKeetaAnchorUserValidationErrorDetails(other.data);\n\n\t\tconst error = new this(\n\t\t\t{ fields: parsed.fields },\n\t\t\tmessage\n\t\t);\n\n\t\terror.restoreFromJSON(other);\n\t\treturn(error);\n\t}\n\n\tstatic fromTypeGuardError(input: TypeGuardErrorLike | TypeGuardErrorLike[], message?: string): KeetaAnchorUserValidationError {\n\t\tlet asArr;\n\n\t\tif (Array.isArray(input)) {\n\t\t\tasArr = input;\n\t\t} else {\n\t\t\tasArr = [ input ];\n\t\t}\n\n\t\treturn(new this({\n\t\t\tfields: asArr.map(function(single) {\n\t\t\t\tlet path;\n\t\t\t\tif (single.path !== undefined) {\n\t\t\t\t\tconst split = single.path.split('.');\n\n\t\t\t\t\tif (split[0] === '$input') {\n\t\t\t\t\t\tsplit.shift();\n\t\t\t\t\t}\n\n\t\t\t\t\tif (split.length > 0) {\n\t\t\t\t\t\tpath = split.join('.');\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn({\n\t\t\t\t\tpath,\n\t\t\t\t\tmessage: message ?? 'Invalid value',\n\t\t\t\t\texpected: single.expected,\n\t\t\t\t\treceivedValue: single.value\n\t\t\t\t});\n\t\t\t})\n\t\t}, message))\n\t}\n}\n"]}
1
+ {"version":3,"file":"error.js","sourceRoot":"","sources":["../../src/lib/error.ts"],"names":[],"mappings":"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","sourcesContent":["import type { IValidation, TypeGuardError } from 'typia';\nimport { createAssertEquals, createIs } from 'typia';\nimport type { LogLevel } from './log/index.ts';\n/**\n * Type for error classes that can be deserialized\n */\ninterface DeserializableErrorClass {\n\treadonly name: string;\n\tfromJSON: (input: unknown) => Promise<KeetaAnchorError>;\n}\n\n/**\n * Lazy-loaded error classes to avoid circular dependencies\n * The classes are loaded on first use\n */\nlet ERROR_CLASS_MAPPING: { [key: string]: (input: unknown) => Promise<KeetaAnchorError> } | null = null;\n\nasync function getErrorClassMapping(): Promise<{ [key: string]: (input: unknown) => Promise<KeetaAnchorError> }> {\n\tif (ERROR_CLASS_MAPPING) {\n\t\treturn(ERROR_CLASS_MAPPING);\n\t}\n\n\tconst ERROR_CLASSES: DeserializableErrorClass[] = [\n\t\t/*\n\t\t * We purposefully leave out KeetaAnchorError here since it\n\t\t * is the base error class and could cause circular resolution\n\t\t */\n\t\t// eslint-disable-next-line @typescript-eslint/no-use-before-define\n\t\tKeetaAnchorUserError, KeetaAnchorUserValidationError\n\t];\n\n\t// Dynamically import errors to avoid circular dependencies\n\tconst importPromises: { Errors: { [key: string]: DeserializableErrorClass }}[] = await Promise.all([\n\t\timport('../services/kyc/common.js'),\n\t\timport('../services/fx/common.js'),\n\t\timport('../services/asset-movement/common.js'),\n\t\timport('../services/storage/common.js'),\n\t\timport('../services/username/common.js')\n\t]);\n\n\tfor (const module of importPromises) {\n\t\tconst classes = Object.values(module.Errors);\n\t\tERROR_CLASSES.push(...classes);\n\t}\n\n\tconst mapping: { [key: string]: (input: unknown) => Promise<KeetaAnchorError> } = {};\n\tfor (const errorClass of ERROR_CLASSES) {\n\t\tmapping[errorClass.name] = errorClass.fromJSON.bind(errorClass);\n\t}\n\n\tERROR_CLASS_MAPPING = mapping;\n\treturn(mapping);\n}\n\n/**\n * Base error class for all Keeta Anchor errors\n */\nexport class KeetaAnchorError extends Error {\n\tstatic override readonly name: string = 'KeetaAnchorError';\n\t#name: string;\n\t#statusCode = 400;\n\t#retryable = false;\n\tprivate readonly keetaAnchorErrorObjectTypeID!: string;\n\tprivate static readonly keetaAnchorErrorObjectTypeID = '5d7f1578-e887-4104-bab0-4115ae33b08f';\n\tprotected userError = false;\n\treadonly logLevel: LogLevel = 'ERROR';\n\n\tget name(): string {\n\t\treturn(this.#name);\n\t}\n\n\tprotected set name(value: string) {\n\t\tthis.#name = value;\n\t}\n\n\tget statusCode(): number {\n\t\treturn(this.#statusCode);\n\t}\n\n\tprotected set statusCode(value: number) {\n\t\tthis.#statusCode = value;\n\t}\n\n\tget retryable(): boolean {\n\t\treturn(this.#retryable);\n\t}\n\n\tprotected set retryable(value: boolean) {\n\t\tthis.#retryable = value;\n\t}\n\n\tconstructor(message: string) {\n\t\tsuper(message);\n\n\t\t// Need to cast to access the static name property from the constructor\n\t\t// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n\t\tthis.#name = (this.constructor as typeof KeetaAnchorError).name;\n\n\t\tObject.defineProperty(this, 'keetaAnchorErrorObjectTypeID', {\n\t\t\tvalue: KeetaAnchorError.keetaAnchorErrorObjectTypeID,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\t/**\n\t * Protected method to restore error properties from JSON\n\t * This allows subclasses to properly restore properties without using any\n\t */\n\tprotected restoreFromJSON(other: { [key: string]: unknown }): void {\n\t\t// Restore statusCode if present\n\t\tif ('statusCode' in other) {\n\t\t\tif (typeof other.statusCode !== 'number') {\n\t\t\t\tthrow(new TypeError('Invalid statusCode: expected number'));\n\t\t\t}\n\t\t\tthis.statusCode = other.statusCode;\n\t\t}\n\n\t\t// Restore retryable if present\n\t\tif ('retryable' in other) {\n\t\t\tif (typeof other.retryable !== 'boolean') {\n\t\t\t\tthrow(new TypeError('Invalid retryable: expected boolean'));\n\t\t\t}\n\t\t\tthis.retryable = other.retryable;\n\t\t}\n\t}\n\n\tstatic isInstance(input: unknown): input is KeetaAnchorError {\n\t\treturn(this.hasPropWithValue(input, 'keetaAnchorErrorObjectTypeID', KeetaAnchorError.keetaAnchorErrorObjectTypeID));\n\t}\n\n\tasErrorResponse(contentType: 'text/plain' | 'application/json', message?: string): { error: string; statusCode: number; contentType: string } {\n\t\tmessage ??= 'Internal error';\n\t\tif (contentType === 'application/json') {\n\t\t\tmessage = JSON.stringify({\n\t\t\t\t...this.toJSON(),\n\t\t\t\tstatusCode: undefined\n\t\t\t});\n\t\t}\n\n\t\treturn({\n\t\t\terror: message,\n\t\t\tstatusCode: this.statusCode,\n\t\t\tcontentType: contentType\n\t\t});\n\t}\n\n\ttoJSON(): { ok: false; retryable: boolean; error: string; name: string; statusCode: number } {\n\t\tlet message = 'Internal error';\n\t\tif (this.userError) {\n\t\t\tmessage = this.message;\n\t\t}\n\n\t\treturn({\n\t\t\tok: false,\n\t\t\tretryable: this.retryable,\n\t\t\terror: message,\n\t\t\tname: this.#name,\n\t\t\tstatusCode: this.statusCode\n\t\t});\n\t}\n\n\tprotected static hasPropWithValue<PROP extends string, VALUE extends string | number | boolean>(input: unknown, prop: PROP, value: VALUE): input is { [key in PROP]: VALUE } {\n\t\tif (typeof input !== 'object' || input === null) {\n\t\t\treturn(false);\n\t\t}\n\n\t\tif (!(prop in input)) {\n\t\t\treturn(false);\n\t\t}\n\n\t\t// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n\t\tconst inputValue = input[prop as keyof typeof input] as unknown;\n\t\tif (inputValue !== value) {\n\t\t\treturn(false);\n\t\t}\n\n\t\treturn(true);\n\t}\n\n\t/**\n\t * Extract common error properties from JSON input\n\t * This validates the structure and extracts properties needed for construction\n\t */\n\tprotected static extractErrorProperties(input: unknown, expectedClass?: { name: string }): { message: string; other: { [key: string]: unknown }} {\n\t\tif (!this.hasPropWithValue(input, 'ok', false)) {\n\t\t\tthrow(new Error('Invalid error JSON object'));\n\t\t}\n\n\t\tif (typeof input !== 'object' || input === null) {\n\t\t\tthrow(new Error('Invalid error JSON object'));\n\t\t}\n\n\t\t// Verify the name matches if an expected class is provided\n\t\tif (expectedClass && 'name' in input && input.name !== expectedClass.name) {\n\t\t\tthrow(new Error(`Error name mismatch: expected ${expectedClass.name}, got ${input.name}`));\n\t\t}\n\n\t\t// Extract error message\n\t\tlet message = 'Internal error';\n\t\tif ('error' in input && typeof input.error === 'string') {\n\t\t\tmessage = input.error;\n\t\t}\n\n\t\t// Extract other properties\n\t\tconst other: { [key: string]: unknown } = {};\n\t\tfor (const key in input) {\n\t\t\tif (key !== 'error' && key !== 'ok') {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n\t\t\t\tother[key] = input[key as keyof typeof input];\n\t\t\t}\n\t\t}\n\n\t\treturn({ message, other });\n\t}\n\n\tstatic async fromJSON(input: unknown): Promise<KeetaAnchorError> {\n\t\t// Try to use the deserializer mapping if available for subclasses\n\t\tif (typeof input !== 'object' || input === null) {\n\t\t\tthrow(new Error('Invalid error JSON object'));\n\t\t}\n\n\t\tif (!('ok' in input) || input.ok !== false) {\n\t\t\tthrow(new Error('Invalid error JSON object: expected ok: false'));\n\t\t}\n\n\t\t// Check if there's a specific error class name\n\t\tif ('name' in input && typeof input.name === 'string') {\n\t\t\tif (input.name === 'KeetaAnchorError') {\n\t\t\t\tconst { message, other } = KeetaAnchorError.extractErrorProperties(input, this);\n\t\t\t\tconst error = new this(message);\n\t\t\t\terror.restoreFromJSON(other);\n\t\t\t\treturn(error);\n\t\t\t}\n\t\t\tconst mapping = await getErrorClassMapping();\n\t\t\tconst deserializer = mapping[input.name];\n\t\t\tif (deserializer) {\n\t\t\t\treturn(await deserializer(input));\n\t\t\t}\n\t\t}\n\n\t\tthrow(new Error('Invalid error JSON object: unknown error class'));\n\t}\n}\n\n/**\n * User-facing error class that extends KeetaAnchorError\n */\nexport class KeetaAnchorUserError extends KeetaAnchorError {\n\tstatic readonly name: string = 'KeetaAnchorUserError';\n\tprivate readonly keetaAnchorUserErrorObjectTypeID!: string;\n\tprivate static readonly keetaAnchorUserErrorObjectTypeID = 'a1e64819-14b6-45ac-a1ec-b9c0bdd51e7b';\n\tprotected override userError = true;\n\n\tstatic isInstance(input: unknown): input is KeetaAnchorUserError {\n\t\treturn(this.hasPropWithValue(input, 'keetaAnchorUserErrorObjectTypeID', KeetaAnchorUserError.keetaAnchorUserErrorObjectTypeID));\n\t}\n\n\tconstructor(message: string) {\n\t\tsuper(message);\n\n\t\tObject.defineProperty(this, 'keetaAnchorUserErrorObjectTypeID', {\n\t\t\tvalue: KeetaAnchorUserError.keetaAnchorUserErrorObjectTypeID,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tasErrorResponse(contentType: 'text/plain' | 'application/json'): { error: string; statusCode: number; contentType: string } {\n\t\treturn(super.asErrorResponse(contentType, this.message));\n\t}\n\n\tstatic async fromJSON(input: unknown): Promise<InstanceType<typeof this>> {\n\t\tconst { message, other } = this.extractErrorProperties(input, this);\n\t\tconst error = new this(message);\n\t\terror.restoreFromJSON(other);\n\t\treturn(error);\n\t}\n}\n\ninterface KeetaAnchorUserValidationErrorDetails {\n\tfields: {\n\t\tpath?: string | undefined;\n\t\tmessage: string;\n\t\tallowedValues?: string[];\n\t\texpected?: string;\n\t\treceivedValue?: unknown;\n\t\tvalueRules?: { minimum?: string | undefined; maximum?: string | undefined };\n\t}[];\n}\n\nconst assertKeetaAnchorUserValidationErrorDetails: (input: unknown) => KeetaAnchorUserValidationErrorDetails = createAssertEquals<KeetaAnchorUserValidationErrorDetails>();\ntype KeetaAnchorUserValidationErrorJSON = ReturnType<KeetaAnchorUserError['toJSON']> & KeetaAnchorUserValidationErrorDetails;\n\ntype TypeGuardErrorLike = Pick<TypeGuardError.IProps | IValidation.IError, 'path' | 'expected' | 'value'>;\n\nconst isTypeGuardErrorLike: (error: unknown) => error is TypeGuardErrorLike = createIs<TypeGuardErrorLike>();\n\nexport class KeetaAnchorUserValidationError extends KeetaAnchorUserError implements KeetaAnchorUserValidationErrorDetails {\n\tstatic readonly isTypeGuardErrorLike: typeof isTypeGuardErrorLike = isTypeGuardErrorLike;\n\n\tstatic override readonly name: string = 'KeetaAnchorUserValidationError';\n\tprivate readonly KeetaAnchorUserValidationErrorObjectTypeID!: string;\n\tprivate static readonly KeetaAnchorUserValidationErrorObjectTypeID = '5fa46799-48b8-4cf2-a3de-9c01418d3ba0';\n\tprotected override userError = true;\n\n\treadonly fields: KeetaAnchorUserValidationErrorDetails['fields'];\n\n\tstatic isInstance(input: unknown): input is KeetaAnchorUserValidationError {\n\t\treturn(this.hasPropWithValue(input, 'KeetaAnchorUserValidationErrorObjectTypeID', KeetaAnchorUserValidationError.KeetaAnchorUserValidationErrorObjectTypeID));\n\t}\n\n\tconstructor(args: KeetaAnchorUserValidationErrorDetails, message?: string) {\n\t\tsuper(message ?? `Validation error on fields ${args.fields.map((f) => f.path).join(', ')}`);\n\n\t\tObject.defineProperty(this, 'KeetaAnchorUserValidationErrorObjectTypeID', {\n\t\t\tvalue: KeetaAnchorUserValidationError.KeetaAnchorUserValidationErrorObjectTypeID,\n\t\t\tenumerable: false\n\t\t});\n\n\t\tthis.fields = args.fields;\n\t}\n\n\toverride get statusCode() {\n\t\treturn(400);\n\t}\n\n\tasErrorResponse(contentType: 'text/plain' | 'application/json'): { error: string; statusCode: number; contentType: string } {\n\t\tlet message = this.message;\n\t\tif (contentType === 'application/json') {\n\t\t\tmessage = JSON.stringify({\n\t\t\t\tok: false,\n\t\t\t\tname: this.name,\n\t\t\t\tdata: { fields: this.fields },\n\t\t\t\terror: this.message\n\t\t\t});\n\t\t}\n\n\t\treturn({\n\t\t\terror: message,\n\t\t\tstatusCode: this.statusCode,\n\t\t\tcontentType: contentType\n\t\t});\n\t}\n\n\ttoJSON(): KeetaAnchorUserValidationErrorJSON {\n\t\treturn({\n\t\t\t...super.toJSON(),\n\t\t\tfields: this.fields\n\t\t});\n\t}\n\n\n\tstatic async fromJSON(input: unknown): Promise<KeetaAnchorUserValidationError> {\n\t\tconst { message, other } = this.extractErrorProperties(input, this);\n\n\t\tif (!('data' in other)) {\n\t\t\tthrow(new Error('Invalid KeetaAnchorUserValidationError JSON: missing data property'));\n\t\t}\n\n\t\tconst parsed = assertKeetaAnchorUserValidationErrorDetails(other.data);\n\n\t\tconst error = new this(\n\t\t\t{ fields: parsed.fields },\n\t\t\tmessage\n\t\t);\n\n\t\terror.restoreFromJSON(other);\n\t\treturn(error);\n\t}\n\n\tstatic fromTypeGuardError(input: TypeGuardErrorLike | TypeGuardErrorLike[], message?: string): KeetaAnchorUserValidationError {\n\t\tlet asArr;\n\n\t\tif (Array.isArray(input)) {\n\t\t\tasArr = input;\n\t\t} else {\n\t\t\tasArr = [ input ];\n\t\t}\n\n\t\treturn(new this({\n\t\t\tfields: asArr.map(function(single) {\n\t\t\t\tlet path;\n\t\t\t\tif (single.path !== undefined) {\n\t\t\t\t\tconst split = single.path.split('.');\n\n\t\t\t\t\tif (split[0] === '$input') {\n\t\t\t\t\t\tsplit.shift();\n\t\t\t\t\t}\n\n\t\t\t\t\tif (split.length > 0) {\n\t\t\t\t\t\tpath = split.join('.');\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn({\n\t\t\t\t\tpath,\n\t\t\t\t\tmessage: message ?? 'Invalid value',\n\t\t\t\t\texpected: single.expected,\n\t\t\t\t\treceivedValue: single.value\n\t\t\t\t});\n\t\t\t})\n\t\t}, message))\n\t}\n}\n"]}
@@ -16,9 +16,11 @@ type RouteHandlerMethod<BodyDataType = JSONSerializable | undefined> = (urlParam
16
16
  }>;
17
17
  type RouteHandlerWithConfig = {
18
18
  bodyType: 'raw';
19
+ maxBodySize?: number;
19
20
  handler: RouteHandlerMethod<Buffer>;
20
21
  } | {
21
22
  bodyType: 'parsed';
23
+ maxBodySize?: number;
22
24
  handler: RouteHandlerMethod;
23
25
  } | {
24
26
  bodyType: 'none';
@@ -45,6 +47,17 @@ export interface KeetaAnchorHTTPServerConfig {
45
47
  * Enable debug logging
46
48
  */
47
49
  logger?: Logger | undefined;
50
+ /**
51
+ * The URL for the server. By default, this will be generated based on
52
+ * the port and will use "localhost" as the hostname, but it can be
53
+ * overridden by setting this to a string, URL, or function that
54
+ * generates the URL
55
+ */
56
+ url?: undefined | string | URL | ((object: KeetaNetAnchorHTTPServer) => string) | {
57
+ hostname?: string;
58
+ port?: number;
59
+ protocol?: string;
60
+ };
48
61
  }
49
62
  export declare abstract class KeetaNetAnchorHTTPServer<ConfigType extends KeetaAnchorHTTPServerConfig = KeetaAnchorHTTPServerConfig> implements Required<KeetaAnchorHTTPServerConfig> {
50
63
  #private;
@@ -77,7 +90,7 @@ export declare abstract class KeetaNetAnchorHTTPServer<ConfigType extends KeetaA
77
90
  * setting a custom URL.
78
91
  */
79
92
  get url(): string;
80
- set url(value: string | URL | ((object: this) => string));
93
+ set url(value: undefined | string | URL | ((object: this) => string));
81
94
  [Symbol.asyncDispose](): Promise<void>;
82
95
  }
83
96
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/http-server/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/http-server/index.ts"],"names":[],"mappings":"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"}