@agnostack/verifyd 2.4.1-alpha.1 → 2.5.0-alpha.1

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 (35) hide show
  1. package/dist/esm/lib/index.js +4 -0
  2. package/dist/esm/lib/index.js.map +1 -0
  3. package/dist/esm/lib/types.js +2 -0
  4. package/dist/esm/lib/types.js.map +1 -0
  5. package/dist/esm/lib/utils/index.js +2 -0
  6. package/dist/esm/lib/utils/index.js.map +1 -0
  7. package/dist/esm/lib/utils/rawbody.js +36 -0
  8. package/dist/esm/lib/utils/rawbody.js.map +1 -0
  9. package/dist/esm/lib/verification.js +95 -0
  10. package/dist/esm/lib/verification.js.map +1 -0
  11. package/dist/esm/react/hooks/index.js +2 -0
  12. package/dist/esm/react/hooks/index.js.map +1 -0
  13. package/dist/esm/react/hooks/useVerification.js +48 -0
  14. package/dist/esm/react/hooks/useVerification.js.map +1 -0
  15. package/dist/esm/react/index.js +3 -0
  16. package/dist/esm/react/index.js.map +1 -0
  17. package/dist/esm/react/types.js +1 -0
  18. package/dist/esm/react/types.js.map +1 -0
  19. package/dist/esm/shared/WebCrypto.js +351 -0
  20. package/dist/esm/shared/WebCrypto.js.map +1 -0
  21. package/dist/esm/shared/authorization.js +27 -0
  22. package/dist/esm/shared/authorization.js.map +1 -0
  23. package/dist/esm/shared/display.js +430 -0
  24. package/dist/esm/shared/display.js.map +1 -0
  25. package/dist/esm/shared/errors.js +38 -0
  26. package/dist/esm/shared/errors.js.map +1 -0
  27. package/dist/esm/shared/index.js +7 -0
  28. package/dist/esm/shared/index.js.map +1 -0
  29. package/dist/esm/shared/request.js +61 -0
  30. package/dist/esm/shared/request.js.map +1 -0
  31. package/dist/esm/shared/types.js +1 -0
  32. package/dist/esm/shared/types.js.map +1 -0
  33. package/dist/esm/shared/verification.js +95 -0
  34. package/dist/esm/shared/verification.js.map +1 -0
  35. package/package.json +17 -4
@@ -0,0 +1,95 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ var __rest = (this && this.__rest) || function (s, e) {
11
+ var t = {};
12
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
13
+ t[p] = s[p];
14
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
15
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
16
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
17
+ t[p[i]] = s[p[i]];
18
+ }
19
+ return t;
20
+ };
21
+ import { VerificationError } from './errors';
22
+ import { normalizeURIParts, prepareRequestOptions, getRequestMethod, } from './request';
23
+ import { isTrue, safeParse, stringEmpty, objectToSortedString, } from './display';
24
+ import { WebCrypto } from './WebCrypto';
25
+ const getUnixString = () => {
26
+ const currentDate = new Date();
27
+ const unixTimestamp = currentDate.getTime();
28
+ return Math.floor(unixTimestamp / 1000).toString();
29
+ };
30
+ export const getVerificationKeysData = (publicKey_1, ...args_1) => __awaiter(void 0, [publicKey_1, ...args_1], void 0, function* (publicKey, { crypto: _crypto, util: _util } = {}) {
31
+ if (stringEmpty(publicKey)) {
32
+ return {};
33
+ }
34
+ const webCrypto = new WebCrypto({ crypto: _crypto, util: _util });
35
+ const _ephemeralStoreableKeyPair = yield webCrypto.getStorableKeyPair(yield webCrypto.generateKeyPair());
36
+ const _verificationKeyPair = yield webCrypto.getVerificationKeys({
37
+ publicKey,
38
+ privateKey: _ephemeralStoreableKeyPair.privateKey,
39
+ });
40
+ return {
41
+ publicKey,
42
+ ephemeral: _ephemeralStoreableKeyPair,
43
+ verification: _verificationKeyPair,
44
+ };
45
+ });
46
+ // eslint-disable-next-line arrow-body-style
47
+ export const prepareVerificationRequest = ({ keysData: _keysData, disableRecryption: _disableRecryption, crypto: _crypto, util: _util } = {}) => {
48
+ const webCrypto = new WebCrypto({ crypto: _crypto, util: _util });
49
+ const disableRecryption = isTrue(_disableRecryption);
50
+ return (requestPath_1, ...args_1) => __awaiter(void 0, [requestPath_1, ...args_1], void 0, function* (requestPath, _a = {}) {
51
+ var { method: rawMethod, body: rawBody, headers: rawHeaders } = _a, requestOptions = __rest(_a, ["method", "body", "headers"]);
52
+ let parsedBody = safeParse(rawBody);
53
+ const method = getRequestMethod(parsedBody, rawMethod);
54
+ if (disableRecryption || stringEmpty(_keysData === null || _keysData === void 0 ? void 0 : _keysData.publicKey)) {
55
+ return [
56
+ requestPath,
57
+ prepareRequestOptions(Object.assign({ method, body: parsedBody, headers: rawHeaders }, requestOptions), requestPath)
58
+ ];
59
+ }
60
+ const { verification: { derivedHMACKey, derivedSecretKey, } = {}, ephemeral: { publicKey: ephemeralPublicKey, } = {}, } = _keysData !== null && _keysData !== void 0 ? _keysData : {};
61
+ if (!derivedHMACKey || !ephemeralPublicKey) {
62
+ return undefined;
63
+ }
64
+ if (parsedBody && derivedSecretKey) {
65
+ parsedBody = yield webCrypto.encryptMessage(JSON.stringify(parsedBody), derivedSecretKey);
66
+ }
67
+ const timestamp = getUnixString();
68
+ const computedHMAC = yield webCrypto.generateHMAC(objectToSortedString(Object.assign({ body: parsedBody, method,
69
+ timestamp }, normalizeURIParts(requestPath))), derivedHMACKey);
70
+ return [
71
+ requestPath,
72
+ prepareRequestOptions(Object.assign({ method, body: parsedBody, headers: Object.assign({ 'X-Authorization': `HMAC-SHA256 ${computedHMAC}`, 'X-Authorization-Timestamp': timestamp, 'X-Ephemeral-Key': ephemeralPublicKey, 'X-Public-Key': _keysData.publicKey }, rawHeaders) }, requestOptions), requestPath),
73
+ derivedSecretKey
74
+ ];
75
+ });
76
+ };
77
+ export const processVerificationResponse = ({ keysData, disableRecryption: _disableRecryption, crypto: _crypto, util: _util } = {}) => {
78
+ const webCrypto = new WebCrypto({ crypto: _crypto, util: _util });
79
+ const disableRecryption = isTrue(_disableRecryption);
80
+ return (encryptedResponse, _derivedSecretKey) => __awaiter(void 0, void 0, void 0, function* () {
81
+ var _a;
82
+ const derivedSecretKey = _derivedSecretKey !== null && _derivedSecretKey !== void 0 ? _derivedSecretKey : (_a = keysData.verification) === null || _a === void 0 ? void 0 : _a.derivedSecretKey;
83
+ if (disableRecryption || !encryptedResponse || !derivedSecretKey) {
84
+ return encryptedResponse;
85
+ }
86
+ try {
87
+ const decryptedMessage = yield webCrypto.decryptMessage(encryptedResponse, derivedSecretKey);
88
+ return safeParse(decryptedMessage);
89
+ }
90
+ catch (_b) {
91
+ throw new VerificationError('Error decrypting response', { code: 400 });
92
+ }
93
+ });
94
+ };
95
+ //# sourceMappingURL=verification.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verification.js","sourceRoot":"","sources":["../../../src/shared/verification.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAC5C,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,WAAW,CAAA;AAClB,OAAO,EACL,MAAM,EACN,SAAS,EACT,WAAW,EACX,oBAAoB,GACrB,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,MAAM,aAAa,GAAG,GAAG,EAAE;IACzB,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAA;IAC9B,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,EAAE,CAAA;IAC3C,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAA;AACpD,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAG,yBAAyD,EAAE,gEAApD,SAAS,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE;IAC5F,IAAI,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,OAAO,EAAE,CAAA;IACX,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;IAEjE,MAAM,0BAA0B,GAAG,MAAM,SAAS,CAAC,kBAAkB,CACnE,MAAM,SAAS,CAAC,eAAe,EAAE,CAClC,CAAA;IAED,MAAM,oBAAoB,GAAG,MAAM,SAAS,CAAC,mBAAmB,CAAC;QAC/D,SAAS;QACT,UAAU,EAAE,0BAA0B,CAAC,UAAU;KAClD,CAAC,CAAA;IAEF,OAAO;QACL,SAAS;QACT,SAAS,EAAE,0BAA0B;QACrC,YAAY,EAAE,oBAAoB;KACnC,CAAA;AACH,CAAC,CAAA,CAAA;AAED,4CAA4C;AAC5C,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE;IAC9I,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;IACjE,MAAM,iBAAiB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAA;IAEpD,OAAO,2BAAwG,EAAE,kEAAnG,WAAW,EAAE,KAAgF,EAAE;YAAlF,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,OAA2B,EAArB,cAAc,cAA3E,6BAA6E,CAAF;QACpG,IAAI,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC,CAAA;QACnC,MAAM,MAAM,GAAG,gBAAgB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;QAEtD,IAAI,iBAAiB,IAAI,WAAW,CAAC,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,SAAS,CAAC,EAAE,CAAC;YAC3D,OAAO;gBACL,WAAW;gBACX,qBAAqB,iBACnB,MAAM,EACN,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,UAAU,IAChB,cAAc,GAChB,WAAW,CAAC;aAChB,CAAA;QACH,CAAC;QAED,MAAM,EACJ,YAAY,EAAE,EACZ,cAAc,EACd,gBAAgB,GACjB,GAAG,EAAE,EACN,SAAS,EAAE,EACT,SAAS,EAAE,kBAAkB,GAC9B,GAAG,EAAE,GACP,GAAG,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,EAAE,CAAA;QAEnB,IAAI,CAAC,cAAc,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC3C,OAAO,SAAS,CAAA;QAClB,CAAC;QAED,IAAI,UAAU,IAAI,gBAAgB,EAAE,CAAC;YACnC,UAAU,GAAG,MAAM,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC,CAAA;QAC3F,CAAC;QAED,MAAM,SAAS,GAAG,aAAa,EAAE,CAAA;QACjC,MAAM,YAAY,GAAG,MAAM,SAAS,CAAC,YAAY,CAC/C,oBAAoB,iBAClB,IAAI,EAAE,UAAU,EAChB,MAAM;YACN,SAAS,IACN,iBAAiB,CAAC,WAAW,CAAC,EACjC,EACF,cAAc,CACf,CAAA;QAED,OAAO;YACL,WAAW;YACX,qBAAqB,iBACnB,MAAM,EACN,IAAI,EAAE,UAAU,EAChB,OAAO,kBACL,iBAAiB,EAAE,eAAe,YAAY,EAAE,EAChD,2BAA2B,EAAE,SAAS,EACtC,iBAAiB,EAAE,kBAAkB,EACrC,cAAc,EAAE,SAAS,CAAC,SAAS,IAChC,UAAU,KAEZ,cAAc,GAChB,WAAW,CAAC;YACf,gBAAgB;SACjB,CAAA;IACH,CAAC,CAAA,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,EAAE,QAAQ,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE;IACpI,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;IACjE,MAAM,iBAAiB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAA;IAEpD,OAAO,CAAO,iBAAiB,EAAE,iBAAiB,EAAE,EAAE;;QACpD,MAAM,gBAAgB,GAAG,iBAAiB,aAAjB,iBAAiB,cAAjB,iBAAiB,GAAI,MAAA,QAAQ,CAAC,YAAY,0CAAE,gBAAgB,CAAA;QACrF,IAAI,iBAAiB,IAAI,CAAC,iBAAiB,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACjE,OAAO,iBAAiB,CAAA;QAC1B,CAAC;QAED,IAAI,CAAC;YACH,MAAM,gBAAgB,GAAG,MAAM,SAAS,CAAC,cAAc,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAAA;YAC5F,OAAO,SAAS,CAAC,gBAAgB,CAAC,CAAA;QACpC,CAAC;QAAC,WAAM,CAAC;YACP,MAAM,IAAI,iBAAiB,CAAC,2BAA2B,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAA;QACzE,CAAC;IACH,CAAC,CAAA,CAAA;AACH,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agnostack/verifyd",
3
- "version": "2.4.1-alpha.1",
3
+ "version": "2.5.0-alpha.1",
4
4
  "author": "agnoStack Dev <developers@agnostack.com> (https://agnostack.com)",
5
5
  "owner": "agnoStack",
6
6
  "description": "Please contact agnoStack via info@agnostack.com for any questions",
@@ -22,6 +22,10 @@
22
22
  "require": "./dist/lib/index.js",
23
23
  "default": "./dist/lib/index.js"
24
24
  },
25
+ "./esm": {
26
+ "types": "./dist/lib/index.d.ts",
27
+ "import": "./dist/esm/lib/index.js"
28
+ },
25
29
  "./external": {
26
30
  "types": "./dist/umd/lib/index.d.ts",
27
31
  "require": "./dist/umd/lib/index.js",
@@ -32,6 +36,10 @@
32
36
  "require": "./dist/react/index.js",
33
37
  "import": "./dist/react/index.js"
34
38
  },
39
+ "./react/esm": {
40
+ "types": "./dist/react/index.d.ts",
41
+ "import": "./dist/esm/react/index.js"
42
+ },
35
43
  "./package.json": "./package.json"
36
44
  },
37
45
  "files": [
@@ -48,8 +56,8 @@
48
56
  "prebuild": "yarn tsc --build --clean && npx rimraf@4.4.1 dist _storage",
49
57
  "prebuild:staging": "yarn tsc --build --clean && npx rimraf@4.4.1 dist _storage",
50
58
  "watch": "yarn tsc -w",
51
- "build": "yarn tsc && ENVIRONMENT=production rollup -c",
52
- "build:staging": "yarn tsc && ENVIRONMENT=staging rollup -c",
59
+ "build": "yarn tsc && yarn tsc -p tsconfig.esm.json && ENVIRONMENT=production rollup -c",
60
+ "build:staging": "yarn tsc && yarn tsc -p tsconfig.esm.json && ENVIRONMENT=staging rollup -c",
53
61
  "clean": "npx rimraf@4.4.1 dist node_modules _storage",
54
62
  "clean:install": "yarn clean && yarn install --force",
55
63
  "lint": "eslint 'src/**' --fix",
@@ -63,6 +71,12 @@
63
71
  "eslint --fix"
64
72
  ]
65
73
  },
74
+ "sideEffects": [
75
+ "./dist/lib/**",
76
+ "./dist/react/**",
77
+ "./dist/shared/**",
78
+ "./dist/umd/**"
79
+ ],
66
80
  "browser": {
67
81
  "isomorphic-webcrypto": false,
68
82
  "crypto": false,
@@ -134,7 +148,6 @@
134
148
  "ts-node": "10.9.2",
135
149
  "typescript": "5.4.2"
136
150
  },
137
- "bundledDependencies": [],
138
151
  "resolutions": {
139
152
  "**/npm": "10.8.2",
140
153
  "**/rimraf": "4.4.1"