@peac/protocol 0.16.3 → 0.16.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -16,7 +16,7 @@
16
16
  *
17
17
  * 1. kid presence and length:
18
18
  * - missing kid (undefined / non-string / empty) -> CRYPTO_JWS_MISSING_KID
19
- * - kid length > 256 chars -> CRYPTO_JWS_MISSING_KID
19
+ * - kid malformed, or longer than 256 UTF-8 bytes -> CRYPTO_JWS_MISSING_KID
20
20
  *
21
21
  * 2. embedded key material (jwk, x5c, x5u, jku):
22
22
  * - any of the four set -> CRYPTO_JWS_EMBEDDED_KEY
@@ -1 +1 @@
1
- {"version":3,"file":"jose-hardening.d.ts","sourceRoot":"","sources":["../../../../src/_internal/record-core/validators/jose-hardening.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH,qEAAqE;AACrE,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEzD;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAC3B;IAAE,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAA;CAAE,GAC3B;IAAE,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAU7D,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,kBAAkB,GAAG,mBAAmB,CAqC7F"}
1
+ {"version":3,"file":"jose-hardening.d.ts","sourceRoot":"","sources":["../../../../src/_internal/record-core/validators/jose-hardening.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH,qEAAqE;AACrE,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEzD;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAC3B;IAAE,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAA;CAAE,GAC3B;IAAE,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AA4C7D,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,kBAAkB,GAAG,mBAAmB,CAgC7F"}
@@ -1 +1 @@
1
- {"version":3,"file":"fixture-manifest.d.ts","sourceRoot":"","sources":["../../../src/_internal/test-helpers/fixture-manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEjE,MAAM,MAAM,gBAAgB,GACxB,4BAA4B,GAC5B,8BAA8B,GAC9B,gCAAgC,GAChC,yBAAyB,GACzB,yCAAyC,GACzC,sBAAsB,GACtB,2BAA2B,CAAC;AAEhC,MAAM,MAAM,gBAAgB,GACxB,gCAAgC,GAChC,6BAA6B,GAC7B,2BAA2B,GAC3B,kDAAkD,GAClD,8CAA8C,GAC9C,gDAAgD,GAChD,yCAAyC,GACzC,2CAA2C,GAC3C,kDAAkD,GAClD,2CAA2C,GAC3C,iDAAiD,CAAC;AAEtD,MAAM,MAAM,gBAAgB,GAAG,gBAAgB,GAAG,gBAAgB,CAAC;AAEnE,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,eAAe,GAAG,qBAAqB,CAAC;IACzD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,mBAAmB,CAAC;IACzC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,eAAe,GAAG,qBAAqB,GAAG,gBAAgB,CAAC;IAC5E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,SAAS,aAAa,EAAE,CAAC;IAC5C,QAAQ,CAAC,QAAQ,EAAE,SAAS,aAAa,EAAE,CAAC;IAC5C,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;KACxB,CAAC;CACH;AA+eD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,uBAAuB,CAAC,EAAE,MAAM,GAAG,eAAe,CA6ErF"}
1
+ {"version":3,"file":"fixture-manifest.d.ts","sourceRoot":"","sources":["../../../src/_internal/test-helpers/fixture-manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEjE,MAAM,MAAM,gBAAgB,GACxB,4BAA4B,GAC5B,8BAA8B,GAC9B,gCAAgC,GAChC,yBAAyB,GACzB,yCAAyC,GACzC,sBAAsB,GACtB,2BAA2B,CAAC;AAEhC,MAAM,MAAM,gBAAgB,GACxB,gCAAgC,GAChC,6BAA6B,GAC7B,2BAA2B,GAC3B,kDAAkD,GAClD,8CAA8C,GAC9C,gDAAgD,GAChD,yCAAyC,GACzC,2CAA2C,GAC3C,kDAAkD,GAClD,2CAA2C,GAC3C,iDAAiD,CAAC;AAEtD,MAAM,MAAM,gBAAgB,GAAG,gBAAgB,GAAG,gBAAgB,CAAC;AAEnE,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,eAAe,GAAG,qBAAqB,CAAC;IACzD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,mBAAmB,CAAC;IACzC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,eAAe,GAAG,qBAAqB,GAAG,gBAAgB,CAAC;IAC5E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,SAAS,aAAa,EAAE,CAAC;IAC5C,QAAQ,CAAC,QAAQ,EAAE,SAAS,aAAa,EAAE,CAAC;IAC5C,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;KACxB,CAAC;CACH;AAkfD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,uBAAuB,CAAC,EAAE,MAAM,GAAG,eAAe,CA6ErF"}
package/dist/index.cjs CHANGED
@@ -211,13 +211,32 @@ function validateTypeExtensionMappingInternal(input) {
211
211
  }
212
212
 
213
213
  // src/_internal/record-core/validators/jose-hardening.ts
214
- var KID_MAX_LENGTH = 256;
214
+ var KID_MAX_UTF8_BYTES = 256;
215
+ function isAcceptableKid(kid) {
216
+ if (typeof kid !== "string" || kid.length === 0) return false;
217
+ let bytes = 0;
218
+ for (let i = 0; i < kid.length; i++) {
219
+ const c = kid.charCodeAt(i);
220
+ if (c < 128) bytes += 1;
221
+ else if (c < 2048) bytes += 2;
222
+ else if (c >= 55296 && c <= 56319) {
223
+ const next = i + 1 < kid.length ? kid.charCodeAt(i + 1) : 0;
224
+ if (next < 56320 || next > 57343) return false;
225
+ bytes += 4;
226
+ i++;
227
+ } else if (c >= 56320 && c <= 57343) {
228
+ return false;
229
+ } else bytes += 3;
230
+ if (bytes > KID_MAX_UTF8_BYTES) return false;
231
+ }
232
+ return true;
233
+ }
215
234
  var ACCEPTED = { accepted: true };
216
235
  function rejected(errorCode) {
217
236
  return { accepted: false, errorCode };
218
237
  }
219
238
  function validateJoseHardeningInternal(header) {
220
- if (!header.kid || typeof header.kid !== "string" || header.kid.length === 0 || header.kid.length > KID_MAX_LENGTH) {
239
+ if (!isAcceptableKid(header.kid)) {
221
240
  return rejected("CRYPTO_JWS_MISSING_KID");
222
241
  }
223
242
  if (header.jwk !== void 0 || header.x5c !== void 0 || header.x5u !== void 0 || header.jku !== void 0) {
@@ -942,6 +961,25 @@ var IssueError = class extends Error {
942
961
  this.peacError = peacError;
943
962
  }
944
963
  };
964
+ var CRYPTO_ISSUANCE_CODE_MAP = {
965
+ CRYPTO_JWS_MISSING_KID: "E_JWS_MISSING_KID",
966
+ CRYPTO_IJSON_INVALID_STRING: "E_IJSON_INVALID_STRING",
967
+ CRYPTO_IJSON_NUMBER_OUT_OF_RANGE: "E_IJSON_NUMBER_OUT_OF_RANGE",
968
+ CRYPTO_IJSON_DUPLICATE_MEMBER_NAME: "E_IJSON_DUPLICATE_MEMBER_NAME"
969
+ };
970
+ function issueErrorFromCryptoError(err) {
971
+ const code = CRYPTO_ISSUANCE_CODE_MAP[err.code] ?? "E_INVALID_FORMAT";
972
+ const issueError = new IssueError({
973
+ code,
974
+ category: "validation",
975
+ severity: "error",
976
+ retryable: false,
977
+ http_status: 400,
978
+ details: { message: err.message }
979
+ });
980
+ issueError.cause = err;
981
+ return issueError;
982
+ }
945
983
  async function issueWire01(options) {
946
984
  if (!options.iss.startsWith("https://")) {
947
985
  throw new Error("Issuer URL must start with https://");
@@ -1150,7 +1188,15 @@ async function issueWire02(options) {
1150
1188
  });
1151
1189
  }
1152
1190
  }
1153
- const jws = await defaultCodec.encode(claims, options.privateKey, options.kid);
1191
+ let jws;
1192
+ try {
1193
+ jws = await defaultCodec.encode(claims, options.privateKey, options.kid);
1194
+ } catch (err) {
1195
+ if (err instanceof crypto$1.CryptoError) {
1196
+ throw issueErrorFromCryptoError(err);
1197
+ }
1198
+ throw err;
1199
+ }
1154
1200
  if (legacyPath && isShadowEnabled(options)) {
1155
1201
  scheduleShadow({
1156
1202
  call: "issue",