@opentdf/sdk 0.4.1-rc.37 → 0.5.0-beta.42

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 (221) hide show
  1. package/dist/cjs/src/access/access-fetch.js +2 -1
  2. package/dist/cjs/src/access/access-rpc.js +11 -5
  3. package/dist/cjs/src/access/constants.js +6 -0
  4. package/dist/cjs/src/access.js +39 -4
  5. package/dist/cjs/src/auth/oidc-clientcredentials-provider.js +4 -2
  6. package/dist/cjs/src/auth/oidc-externaljwt-provider.js +5 -3
  7. package/dist/cjs/src/auth/oidc-refreshtoken-provider.js +19 -3
  8. package/dist/cjs/src/auth/oidc.js +9 -8
  9. package/dist/cjs/src/auth/providers.js +7 -1
  10. package/dist/cjs/src/index.js +4 -2
  11. package/dist/cjs/src/nanoclients.js +4 -4
  12. package/dist/cjs/src/nanotdf/Client.js +10 -6
  13. package/dist/cjs/src/opentdf.js +102 -13
  14. package/dist/cjs/src/platform/authorization/v2/authorization_pb.js +112 -0
  15. package/dist/cjs/src/platform/buf/validate/validate_pb.js +114 -170
  16. package/dist/cjs/src/platform/common/common_pb.js +16 -5
  17. package/dist/cjs/src/platform/entity/entity_pb.js +51 -0
  18. package/dist/cjs/src/platform/entityresolution/entity_resolution_pb.js +1 -1
  19. package/dist/cjs/src/platform/entityresolution/v2/entity_resolution_pb.js +49 -0
  20. package/dist/cjs/src/platform/google/api/annotations_pb.js +1 -1
  21. package/dist/cjs/src/platform/google/api/http_pb.js +3 -3
  22. package/dist/cjs/src/platform/kas/kas_pb.js +2 -2
  23. package/dist/cjs/src/platform/policy/attributes/attributes_pb.js +12 -2
  24. package/dist/cjs/src/platform/policy/kasregistry/key_access_server_registry_pb.js +57 -4
  25. package/dist/cjs/src/platform/policy/keymanagement/key_management_pb.js +2 -2
  26. package/dist/cjs/src/platform/policy/namespaces/namespaces_pb.js +31 -4
  27. package/dist/cjs/src/platform/policy/objects_pb.js +116 -42
  28. package/dist/cjs/src/platform/policy/obligations/obligations_pb.js +159 -0
  29. package/dist/cjs/src/platform/policy/registeredresources/registered_resources_pb.js +20 -15
  30. package/dist/cjs/src/platform/policy/resourcemapping/resource_mapping_pb.js +2 -3
  31. package/dist/cjs/src/platform/policy/selectors_pb.js +1 -1
  32. package/dist/cjs/src/platform/policy/subjectmapping/subject_mapping_pb.js +2 -3
  33. package/dist/cjs/src/platform/policy/unsafe/unsafe_pb.js +2 -4
  34. package/dist/cjs/src/platform.js +20 -3
  35. package/dist/cjs/src/policy/api.js +27 -7
  36. package/dist/cjs/src/policy/granter.js +75 -48
  37. package/dist/cjs/src/seekable.js +32 -1
  38. package/dist/cjs/src/utils.js +85 -3
  39. package/dist/cjs/src/version.js +1 -1
  40. package/dist/cjs/tdf3/src/assertions.js +39 -2
  41. package/dist/cjs/tdf3/src/client/DecoratedReadableStream.js +8 -1
  42. package/dist/cjs/tdf3/src/client/builders.js +13 -1
  43. package/dist/cjs/tdf3/src/client/index.js +213 -54
  44. package/dist/cjs/tdf3/src/client/validation.js +3 -3
  45. package/dist/cjs/tdf3/src/tdf.js +42 -9
  46. package/dist/cjs/tdf3/src/utils/unwrap.js +2 -2
  47. package/dist/types/src/access/access-fetch.d.ts +1 -0
  48. package/dist/types/src/access/access-fetch.d.ts.map +1 -1
  49. package/dist/types/src/access/access-rpc.d.ts +2 -1
  50. package/dist/types/src/access/access-rpc.d.ts.map +1 -1
  51. package/dist/types/src/access/constants.d.ts +3 -0
  52. package/dist/types/src/access/constants.d.ts.map +1 -0
  53. package/dist/types/src/access.d.ts +30 -1
  54. package/dist/types/src/access.d.ts.map +1 -1
  55. package/dist/types/src/auth/oidc-clientcredentials-provider.d.ts +1 -1
  56. package/dist/types/src/auth/oidc-clientcredentials-provider.d.ts.map +1 -1
  57. package/dist/types/src/auth/oidc-externaljwt-provider.d.ts +1 -1
  58. package/dist/types/src/auth/oidc-externaljwt-provider.d.ts.map +1 -1
  59. package/dist/types/src/auth/oidc-refreshtoken-provider.d.ts +15 -1
  60. package/dist/types/src/auth/oidc-refreshtoken-provider.d.ts.map +1 -1
  61. package/dist/types/src/auth/oidc.d.ts +4 -0
  62. package/dist/types/src/auth/oidc.d.ts.map +1 -1
  63. package/dist/types/src/auth/providers.d.ts.map +1 -1
  64. package/dist/types/src/index.d.ts +1 -0
  65. package/dist/types/src/index.d.ts.map +1 -1
  66. package/dist/types/src/nanotdf/Client.d.ts +8 -1
  67. package/dist/types/src/nanotdf/Client.d.ts.map +1 -1
  68. package/dist/types/src/opentdf.d.ts +137 -6
  69. package/dist/types/src/opentdf.d.ts.map +1 -1
  70. package/dist/types/src/platform/authorization/v2/authorization_pb.d.ts +439 -0
  71. package/dist/types/src/platform/authorization/v2/authorization_pb.d.ts.map +1 -0
  72. package/dist/types/src/platform/buf/validate/validate_pb.d.ts +495 -370
  73. package/dist/types/src/platform/buf/validate/validate_pb.d.ts.map +1 -1
  74. package/dist/types/src/platform/common/common_pb.d.ts +36 -0
  75. package/dist/types/src/platform/common/common_pb.d.ts.map +1 -1
  76. package/dist/types/src/platform/entity/entity_pb.d.ts +130 -0
  77. package/dist/types/src/platform/entity/entity_pb.d.ts.map +1 -0
  78. package/dist/types/src/platform/entityresolution/entity_resolution_pb.d.ts +4 -0
  79. package/dist/types/src/platform/entityresolution/entity_resolution_pb.d.ts.map +1 -1
  80. package/dist/types/src/platform/entityresolution/v2/entity_resolution_pb.d.ts +136 -0
  81. package/dist/types/src/platform/entityresolution/v2/entity_resolution_pb.d.ts.map +1 -0
  82. package/dist/types/src/platform/google/api/http_pb.d.ts.map +1 -1
  83. package/dist/types/src/platform/kas/kas_pb.d.ts +5 -0
  84. package/dist/types/src/platform/kas/kas_pb.d.ts.map +1 -1
  85. package/dist/types/src/platform/policy/attributes/attributes_pb.d.ts +44 -13
  86. package/dist/types/src/platform/policy/attributes/attributes_pb.d.ts.map +1 -1
  87. package/dist/types/src/platform/policy/kasregistry/key_access_server_registry_pb.d.ts +329 -24
  88. package/dist/types/src/platform/policy/kasregistry/key_access_server_registry_pb.d.ts.map +1 -1
  89. package/dist/types/src/platform/policy/keymanagement/key_management_pb.d.ts +20 -1
  90. package/dist/types/src/platform/policy/keymanagement/key_management_pb.d.ts.map +1 -1
  91. package/dist/types/src/platform/policy/namespaces/namespaces_pb.d.ts +143 -5
  92. package/dist/types/src/platform/policy/namespaces/namespaces_pb.d.ts.map +1 -1
  93. package/dist/types/src/platform/policy/objects_pb.d.ts +382 -33
  94. package/dist/types/src/platform/policy/objects_pb.d.ts.map +1 -1
  95. package/dist/types/src/platform/policy/obligations/obligations_pb.d.ts +670 -0
  96. package/dist/types/src/platform/policy/obligations/obligations_pb.d.ts.map +1 -0
  97. package/dist/types/src/platform/policy/registeredresources/registered_resources_pb.d.ts +67 -0
  98. package/dist/types/src/platform/policy/registeredresources/registered_resources_pb.d.ts.map +1 -1
  99. package/dist/types/src/platform/policy/resourcemapping/resource_mapping_pb.d.ts.map +1 -1
  100. package/dist/types/src/platform/policy/selectors_pb.d.ts +18 -0
  101. package/dist/types/src/platform/policy/selectors_pb.d.ts.map +1 -1
  102. package/dist/types/src/platform/policy/subjectmapping/subject_mapping_pb.d.ts.map +1 -1
  103. package/dist/types/src/platform/policy/unsafe/unsafe_pb.d.ts +18 -4
  104. package/dist/types/src/platform/policy/unsafe/unsafe_pb.d.ts.map +1 -1
  105. package/dist/types/src/platform.d.ts +21 -0
  106. package/dist/types/src/platform.d.ts.map +1 -1
  107. package/dist/types/src/policy/api.d.ts +2 -0
  108. package/dist/types/src/policy/api.d.ts.map +1 -1
  109. package/dist/types/src/policy/granter.d.ts +11 -6
  110. package/dist/types/src/policy/granter.d.ts.map +1 -1
  111. package/dist/types/src/seekable.d.ts +31 -0
  112. package/dist/types/src/seekable.d.ts.map +1 -1
  113. package/dist/types/src/utils.d.ts +61 -2
  114. package/dist/types/src/utils.d.ts.map +1 -1
  115. package/dist/types/src/version.d.ts +1 -1
  116. package/dist/types/tdf3/src/assertions.d.ts +4 -0
  117. package/dist/types/tdf3/src/assertions.d.ts.map +1 -1
  118. package/dist/types/tdf3/src/client/DecoratedReadableStream.d.ts +6 -0
  119. package/dist/types/tdf3/src/client/DecoratedReadableStream.d.ts.map +1 -1
  120. package/dist/types/tdf3/src/client/builders.d.ts +14 -0
  121. package/dist/types/tdf3/src/client/builders.d.ts.map +1 -1
  122. package/dist/types/tdf3/src/client/index.d.ts +25 -4
  123. package/dist/types/tdf3/src/client/index.d.ts.map +1 -1
  124. package/dist/types/tdf3/src/client/validation.d.ts +3 -3
  125. package/dist/types/tdf3/src/client/validation.d.ts.map +1 -1
  126. package/dist/types/tdf3/src/tdf.d.ts +3 -1
  127. package/dist/types/tdf3/src/tdf.d.ts.map +1 -1
  128. package/dist/types/tdf3/src/utils/unwrap.d.ts.map +1 -1
  129. package/dist/web/src/access/access-fetch.js +2 -1
  130. package/dist/web/src/access/access-rpc.js +11 -5
  131. package/dist/web/src/access/constants.js +3 -0
  132. package/dist/web/src/access.js +37 -3
  133. package/dist/web/src/auth/oidc-clientcredentials-provider.js +4 -2
  134. package/dist/web/src/auth/oidc-externaljwt-provider.js +5 -3
  135. package/dist/web/src/auth/oidc-refreshtoken-provider.js +19 -3
  136. package/dist/web/src/auth/oidc.js +9 -8
  137. package/dist/web/src/auth/providers.js +7 -1
  138. package/dist/web/src/index.js +2 -1
  139. package/dist/web/src/nanoclients.js +4 -4
  140. package/dist/web/src/nanotdf/Client.js +11 -7
  141. package/dist/web/src/opentdf.js +102 -13
  142. package/dist/web/src/platform/authorization/v2/authorization_pb.js +109 -0
  143. package/dist/web/src/platform/buf/validate/validate_pb.js +113 -169
  144. package/dist/web/src/platform/common/common_pb.js +15 -4
  145. package/dist/web/src/platform/entity/entity_pb.js +48 -0
  146. package/dist/web/src/platform/entityresolution/entity_resolution_pb.js +1 -1
  147. package/dist/web/src/platform/entityresolution/v2/entity_resolution_pb.js +46 -0
  148. package/dist/web/src/platform/google/api/annotations_pb.js +1 -1
  149. package/dist/web/src/platform/google/api/http_pb.js +3 -3
  150. package/dist/web/src/platform/kas/kas_pb.js +2 -2
  151. package/dist/web/src/platform/policy/attributes/attributes_pb.js +12 -2
  152. package/dist/web/src/platform/policy/kasregistry/key_access_server_registry_pb.js +55 -3
  153. package/dist/web/src/platform/policy/keymanagement/key_management_pb.js +2 -2
  154. package/dist/web/src/platform/policy/namespaces/namespaces_pb.js +30 -3
  155. package/dist/web/src/platform/policy/objects_pb.js +114 -41
  156. package/dist/web/src/platform/policy/obligations/obligations_pb.js +156 -0
  157. package/dist/web/src/platform/policy/registeredresources/registered_resources_pb.js +19 -14
  158. package/dist/web/src/platform/policy/resourcemapping/resource_mapping_pb.js +2 -3
  159. package/dist/web/src/platform/policy/selectors_pb.js +1 -1
  160. package/dist/web/src/platform/policy/subjectmapping/subject_mapping_pb.js +2 -3
  161. package/dist/web/src/platform/policy/unsafe/unsafe_pb.js +2 -4
  162. package/dist/web/src/platform.js +20 -3
  163. package/dist/web/src/policy/api.js +26 -7
  164. package/dist/web/src/policy/granter.js +75 -48
  165. package/dist/web/src/seekable.js +32 -1
  166. package/dist/web/src/utils.js +84 -3
  167. package/dist/web/src/version.js +1 -1
  168. package/dist/web/tdf3/src/assertions.js +38 -2
  169. package/dist/web/tdf3/src/client/DecoratedReadableStream.js +8 -1
  170. package/dist/web/tdf3/src/client/builders.js +13 -1
  171. package/dist/web/tdf3/src/client/index.js +215 -57
  172. package/dist/web/tdf3/src/client/validation.js +3 -3
  173. package/dist/web/tdf3/src/tdf.js +42 -9
  174. package/dist/web/tdf3/src/utils/unwrap.js +2 -2
  175. package/package.json +7 -5
  176. package/src/access/access-fetch.ts +1 -0
  177. package/src/access/access-rpc.ts +13 -4
  178. package/src/access/constants.ts +2 -0
  179. package/src/access.ts +54 -2
  180. package/src/auth/oidc-clientcredentials-provider.ts +4 -0
  181. package/src/auth/oidc-externaljwt-provider.ts +5 -1
  182. package/src/auth/oidc-refreshtoken-provider.ts +19 -1
  183. package/src/auth/oidc.ts +12 -7
  184. package/src/auth/providers.ts +6 -0
  185. package/src/index.ts +1 -0
  186. package/src/nanoclients.ts +3 -3
  187. package/src/nanotdf/Client.ts +28 -6
  188. package/src/opentdf.ts +205 -73
  189. package/src/platform/authorization/v2/authorization_pb.ts +503 -0
  190. package/src/platform/buf/validate/validate_pb.ts +529 -401
  191. package/src/platform/common/common_pb.ts +48 -3
  192. package/src/platform/entity/entity_pb.ts +154 -0
  193. package/src/platform/entityresolution/entity_resolution_pb.ts +4 -0
  194. package/src/platform/entityresolution/v2/entity_resolution_pb.ts +170 -0
  195. package/src/platform/google/api/annotations_pb.ts +1 -1
  196. package/src/platform/google/api/http_pb.ts +2 -2
  197. package/src/platform/kas/kas_pb.ts +6 -1
  198. package/src/platform/policy/attributes/attributes_pb.ts +46 -16
  199. package/src/platform/policy/kasregistry/key_access_server_registry_pb.ts +371 -27
  200. package/src/platform/policy/keymanagement/key_management_pb.ts +24 -2
  201. package/src/platform/policy/namespaces/namespaces_pb.ts +163 -7
  202. package/src/platform/policy/objects_pb.ts +474 -59
  203. package/src/platform/policy/obligations/obligations_pb.ts +788 -0
  204. package/src/platform/policy/registeredresources/registered_resources_pb.ts +80 -13
  205. package/src/platform/policy/resourcemapping/resource_mapping_pb.ts +1 -2
  206. package/src/platform/policy/selectors_pb.ts +18 -0
  207. package/src/platform/policy/subjectmapping/subject_mapping_pb.ts +1 -2
  208. package/src/platform/policy/unsafe/unsafe_pb.ts +21 -6
  209. package/src/platform.ts +29 -5
  210. package/src/policy/api.ts +37 -6
  211. package/src/policy/granter.ts +82 -56
  212. package/src/seekable.ts +31 -0
  213. package/src/utils.ts +88 -2
  214. package/src/version.ts +1 -1
  215. package/tdf3/src/assertions.ts +52 -1
  216. package/tdf3/src/client/DecoratedReadableStream.ts +9 -0
  217. package/tdf3/src/client/builders.ts +16 -0
  218. package/tdf3/src/client/index.ts +309 -73
  219. package/tdf3/src/client/validation.ts +2 -2
  220. package/tdf3/src/tdf.ts +53 -9
  221. package/tdf3/src/utils/unwrap.ts +2 -1
package/tdf3/src/tdf.ts CHANGED
@@ -55,6 +55,7 @@ import { ZipReader, ZipWriter, keyMerge, concatUint8, buffToString } from './uti
55
55
  import { CentralDirectory } from './utils/zip-reader.js';
56
56
  import { ztdfSalt } from './crypto/salt.js';
57
57
  import { Payload } from './models/payload.js';
58
+ import { getRequiredObligationFQNs } from '../../src/utils.js';
58
59
 
59
60
  // TODO: input validation on manifest JSON
60
61
  const DEFAULT_SEGMENT_SIZE = 1024 * 1024;
@@ -147,10 +148,12 @@ export type EncryptConfiguration = {
147
148
  keyForEncryption: KeyInfo;
148
149
  keyForManifest: KeyInfo;
149
150
  assertionConfigs?: AssertionConfig[];
151
+ systemMetadataAssertion?: boolean;
150
152
  tdfSpecVersion?: string;
151
153
  };
152
154
 
153
155
  export type DecryptConfiguration = {
156
+ fulfillableObligations: string[];
154
157
  allowedKases?: string[];
155
158
  allowList?: OriginAllowList;
156
159
  authProvider: AuthProvider;
@@ -197,8 +200,15 @@ export type RewrapResponse = {
197
200
  */
198
201
  export async function fetchKasPublicKey(
199
202
  kas: string,
200
- algorithm?: KasPublicKeyAlgorithm
203
+ algorithm?: KasPublicKeyAlgorithm,
204
+ kid?: string
201
205
  ): Promise<KasPublicKeyInfo> {
206
+ if (kid) {
207
+ // Some specific thing for fetching a key by kid?
208
+ // Currently this is just "using" `kid` so TypeScript doesn't complain and
209
+ // we can use the type for our cache parameters.
210
+ // So this empty `if` is actually doing something.
211
+ }
202
212
  return fetchKasPubKeyV2(kas, algorithm);
203
213
  }
204
214
 
@@ -527,8 +537,24 @@ export async function writeStream(cfg: EncryptConfiguration): Promise<DecoratedR
527
537
  manifest.encryptionInformation.integrityInformation.segments = segmentInfos;
528
538
 
529
539
  manifest.encryptionInformation.method.isStreamable = true;
530
-
531
540
  const signedAssertions: assertions.Assertion[] = [];
541
+ if (cfg.systemMetadataAssertion) {
542
+ const systemMetadataConfigBase = assertions.getSystemMetadataAssertionConfig();
543
+ const signingKeyForSystemMetadata: AssertionKey = {
544
+ alg: 'HS256', // Default algorithm, can be configured if needed
545
+ key: new Uint8Array(cfg.keyForEncryption.unwrappedKeyBinary.asArrayBuffer()),
546
+ };
547
+ signedAssertions.push(
548
+ await assertions.CreateAssertion(
549
+ aggregateHash,
550
+ {
551
+ ...systemMetadataConfigBase, // Spread the properties from the base config
552
+ signingKey: signingKeyForSystemMetadata, // Add the signing key
553
+ },
554
+ cfg.tdfSpecVersion // Pass the TDF spec version
555
+ )
556
+ );
557
+ }
532
558
  if (cfg.assertionConfigs && cfg.assertionConfigs.length > 0) {
533
559
  await Promise.all(
534
560
  cfg.assertionConfigs.map(async (assertionConfig) => {
@@ -711,6 +737,7 @@ export function splitLookupTableFactory(
711
737
  type RewrapResponseData = {
712
738
  key: Uint8Array;
713
739
  metadata: Record<string, unknown>;
740
+ requiredObligations: string[];
714
741
  };
715
742
 
716
743
  async function unwrapKey({
@@ -721,6 +748,7 @@ async function unwrapKey({
721
748
  concurrencyLimit,
722
749
  cryptoService,
723
750
  wrappingKeyAlgorithm,
751
+ fulfillableObligations,
724
752
  }: {
725
753
  manifest: Manifest;
726
754
  allowedKases: OriginAllowList;
@@ -729,6 +757,7 @@ async function unwrapKey({
729
757
  dpopKeys: CryptoKeyPair;
730
758
  cryptoService: CryptoService;
731
759
  wrappingKeyAlgorithm?: KasPublicKeyAlgorithm;
760
+ fulfillableObligations: string[];
732
761
  }) {
733
762
  if (authProvider === undefined) {
734
763
  throw new ConfigurationError(
@@ -764,11 +793,14 @@ async function unwrapKey({
764
793
  const jwtPayload = { requestBody: requestBodyStr };
765
794
  const signedRequestToken = await reqSignature(jwtPayload, dpopKeys.privateKey);
766
795
 
767
- const { entityWrappedKey, metadata, sessionPublicKey } = await fetchWrappedKey(
796
+ const rewrapResp = await fetchWrappedKey(
768
797
  url,
769
798
  signedRequestToken,
770
- authProvider
799
+ authProvider,
800
+ fulfillableObligations
771
801
  );
802
+ const { entityWrappedKey, metadata, sessionPublicKey } = rewrapResp;
803
+ const requiredObligations = getRequiredObligationFQNs(rewrapResp);
772
804
 
773
805
  if (wrappingKeyAlgorithm === 'ec:secp256r1') {
774
806
  const serverEphemeralKey: CryptoKey = await pemPublicToCrypto(sessionPublicKey);
@@ -786,6 +818,7 @@ async function unwrapKey({
786
818
  return {
787
819
  key: new Uint8Array(dek),
788
820
  metadata,
821
+ requiredObligations,
789
822
  };
790
823
  }
791
824
  const key = Binary.fromArrayBuffer(entityWrappedKey);
@@ -797,6 +830,7 @@ async function unwrapKey({
797
830
  return {
798
831
  key: new Uint8Array(decryptedKeyBinary.asByteArray()),
799
832
  metadata,
833
+ requiredObligations,
800
834
  };
801
835
  }
802
836
 
@@ -826,12 +860,20 @@ async function unwrapKey({
826
860
  splitPromises[splitId] = () => anyPool(poolSize, anyPromises);
827
861
  }
828
862
  try {
829
- const splitResults = await allPool(poolSize, splitPromises);
830
- // Merge all the split keys
831
- const reconstructedKey = keyMerge(splitResults.map((r) => r.key));
863
+ const rewrapResponseData = await allPool(poolSize, splitPromises);
864
+ const splitKeys = [];
865
+ const requiredObligations = new Set<string>();
866
+ for (const resp of rewrapResponseData) {
867
+ splitKeys.push(resp.key);
868
+ for (const requiredObligation of resp.requiredObligations) {
869
+ requiredObligations.add(requiredObligation.toLowerCase());
870
+ }
871
+ }
872
+ const reconstructedKey = keyMerge(splitKeys);
832
873
  return {
833
874
  reconstructedKeyBinary: Binary.fromArrayBuffer(reconstructedKey),
834
- metadata: splitResults[0].metadata, // Use metadata from first split
875
+ metadata: rewrapResponseData[0].metadata, // Use metadata from first split
876
+ requiredObligations: [...requiredObligations],
835
877
  };
836
878
  } catch (e) {
837
879
  if (e instanceof AggregateError) {
@@ -1015,7 +1057,8 @@ export async function decryptStreamFrom(
1015
1057
  segmentSizeDefault,
1016
1058
  segments,
1017
1059
  } = manifest.encryptionInformation.integrityInformation;
1018
- const { metadata, reconstructedKeyBinary } = await unwrapKey({
1060
+ const { metadata, reconstructedKeyBinary, requiredObligations } = await unwrapKey({
1061
+ fulfillableObligations: cfg.fulfillableObligations,
1019
1062
  manifest,
1020
1063
  authProvider: cfg.authProvider,
1021
1064
  allowedKases: allowList,
@@ -1138,6 +1181,7 @@ export async function decryptStreamFrom(
1138
1181
 
1139
1182
  const outputStream = new DecoratedReadableStream(underlyingSource);
1140
1183
 
1184
+ outputStream.requiredObligations = requiredObligations;
1141
1185
  outputStream.manifest = manifest;
1142
1186
  outputStream.metadata = metadata;
1143
1187
  return outputStream;
@@ -3,7 +3,8 @@ import { InvalidFileError } from '../../../src/errors.js';
3
3
 
4
4
  export function unwrapHtml(htmlPayload: Uint8Array): Uint8Array {
5
5
  const html = new TextDecoder().decode(htmlPayload);
6
- const payloadRe = /<input id=['"]?data-input['"]?[^>]*?value=['"]?([a-zA-Z0-9+/=]+)['"]?/;
6
+ const payloadRe =
7
+ /<input\s+[^>]*id=(?:['"]?)data-input(?:['"]?)[^>]*value=(?:['"]?)([a-zA-Z0-9+/=\-_]+)(?:['"]?)/;
7
8
  const reResult = payloadRe.exec(html);
8
9
  if (!reResult) {
9
10
  throw new InvalidFileError('Payload is missing');