@peac/protocol 0.16.2 → 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.
- package/dist/_internal/record-core/validators/jose-hardening.d.ts +1 -1
- package/dist/_internal/record-core/validators/jose-hardening.d.ts.map +1 -1
- package/dist/_internal/test-helpers/fixture-manifest.d.ts.map +1 -1
- package/dist/index.cjs +49 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +50 -4
- package/dist/index.mjs.map +1 -1
- package/dist/issue.d.ts +2 -2
- package/dist/issue.d.ts.map +1 -1
- package/dist/verify-local.cjs +21 -2
- package/dist/verify-local.cjs.map +1 -1
- package/dist/verify-local.mjs +21 -2
- package/dist/verify-local.mjs.map +1 -1
- package/package.json +4 -4
|
@@ -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
|
|
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;
|
|
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;
|
|
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
|
|
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
|
|
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
|
-
|
|
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",
|