saro-dat 3.0.0 → 3.1.0
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/README.md +31 -15
- package/dist/dat.certificate.d.ts +2 -2
- package/dist/dat.certificate.d.ts.map +1 -1
- package/dist/dat.certificate.js +9 -9
- package/dist/dat.certificate.js.map +1 -1
- package/dist/dat.d.ts +1 -1
- package/dist/dat.d.ts.map +1 -1
- package/dist/dat.js +2 -2
- package/dist/dat.js.map +1 -1
- package/dist/dat.manager.d.ts +1 -1
- package/dist/dat.manager.d.ts.map +1 -1
- package/dist/dat.manager.js +8 -8
- package/dist/dat.manager.js.map +1 -1
- package/package.json +5 -2
package/README.md
CHANGED
|
@@ -25,20 +25,36 @@
|
|
|
25
25
|
# Performance
|
|
26
26
|
- random plain and secure test
|
|
27
27
|
- mac mini m4 2024 basic (10 core)
|
|
28
|
-
- [
|
|
28
|
+
- [bench.test.ts](src/bench.test.ts)
|
|
29
29
|
```
|
|
30
|
-
plain:
|
|
31
|
-
secure:
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
P256
|
|
35
|
-
P256
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
P384
|
|
39
|
-
P384
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
P521
|
|
43
|
-
P521
|
|
30
|
+
plain: DUOLyFJcrYDzdNK2FdADCJahjrWdbbtahFZszhTpxN8hOzhHuJOiDB436uzpY7cWwlWWrjyY7CxWhPalNEwQDXsHAUJMNW7feU3O
|
|
31
|
+
secure: VyxyrpfzpEJBaGfwxp7doVdEBT8Sg0vqFFLYpWV87b3q2sUfiflOIRsb8lxcQuvZCTgs0Bx7xEDns4iHbuGILX7s2bOz26Zy6RBB
|
|
32
|
+
|
|
33
|
+
Multi-Thread
|
|
34
|
+
P256 AES128GCMN Issue * 10000 : 214ms
|
|
35
|
+
P256 AES128GCMN Parse * 10000 : 219ms
|
|
36
|
+
P256 AES256GCMN Issue * 10000 : 193ms
|
|
37
|
+
P256 AES256GCMN Parse * 10000 : 181ms
|
|
38
|
+
P384 AES128GCMN Issue * 10000 : 1028ms
|
|
39
|
+
P384 AES128GCMN Parse * 10000 : 868ms
|
|
40
|
+
P384 AES256GCMN Issue * 10000 : 1105ms
|
|
41
|
+
P384 AES256GCMN Parse * 10000 : 865ms
|
|
42
|
+
P521 AES128GCMN Issue * 10000 : 2602ms
|
|
43
|
+
P521 AES128GCMN Parse * 10000 : 1893ms
|
|
44
|
+
P521 AES256GCMN Issue * 10000 : 2624ms
|
|
45
|
+
P521 AES256GCMN Parse * 10000 : 1922ms
|
|
46
|
+
|
|
47
|
+
Single-Thread
|
|
48
|
+
P256 AES128GCMN Issue * 10000 : 452ms
|
|
49
|
+
P256 AES128GCMN Parse * 10000 : 709ms
|
|
50
|
+
P256 AES256GCMN Issue * 10000 : 465ms
|
|
51
|
+
P256 AES256GCMN Parse * 10000 : 744ms
|
|
52
|
+
P384 AES128GCMN Issue * 10000 : 4592ms
|
|
53
|
+
P384 AES128GCMN Parse * 10000 : 3656ms
|
|
54
|
+
P384 AES256GCMN Issue * 10000 : 4412ms
|
|
55
|
+
P384 AES256GCMN Parse * 10000 : 3682ms
|
|
56
|
+
P521 AES128GCMN Issue * 10000 : 10517ms
|
|
57
|
+
P521 AES128GCMN Parse * 10000 : 7502ms
|
|
58
|
+
P521 AES256GCMN Issue * 10000 : 10444ms
|
|
59
|
+
P521 AES256GCMN Parse * 10000 : 7541ms
|
|
44
60
|
```
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { DatCryptoKey, DatSignatureKey, DatSignatureKeyOutOption } from "./index.js";
|
|
2
2
|
export declare class DatCertificate {
|
|
3
|
-
readonly
|
|
3
|
+
readonly cid: number;
|
|
4
4
|
readonly _signatureKey: DatSignatureKey;
|
|
5
5
|
readonly _cryptoKey: DatCryptoKey;
|
|
6
6
|
readonly _datIssueBegin: number;
|
|
7
7
|
readonly _datIssueEnd: number;
|
|
8
8
|
readonly _datTtl: number;
|
|
9
|
-
constructor(
|
|
9
|
+
constructor(cid: number, signatureKey: DatSignatureKey, cryptoKey: DatCryptoKey, datIssueBegin: number, datIssueEnd: number, datTtl: number);
|
|
10
10
|
exports(datSignatureKeyOutOption: DatSignatureKeyOutOption): Promise<string>;
|
|
11
11
|
static imports(format: string): Promise<DatCertificate>;
|
|
12
12
|
issuable(): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dat.certificate.d.ts","sourceRoot":"","sources":["../src/dat.certificate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAc,eAAe,EAAE,wBAAwB,EAAe,MAAM,YAAY,CAAC;AAE7G,qBAAa,cAAc;IACvB,SAAgB,
|
|
1
|
+
{"version":3,"file":"dat.certificate.d.ts","sourceRoot":"","sources":["../src/dat.certificate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAc,eAAe,EAAE,wBAAwB,EAAe,MAAM,YAAY,CAAC;AAE7G,qBAAa,cAAc;IACvB,SAAgB,GAAG,EAAE,MAAM,CAAC;IAC5B,SAAgB,aAAa,EAAE,eAAe,CAAC;IAC/C,SAAgB,UAAU,EAAE,YAAY,CAAC;IACzC,SAAgB,cAAc,EAAE,MAAM,CAAC;IACvC,SAAgB,YAAY,EAAE,MAAM,CAAC;IACrC,SAAgB,OAAO,EAAE,MAAM,CAAC;gBAG5B,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,eAAe,EAC7B,SAAS,EAAE,YAAY,EACvB,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM;IAsBZ,OAAO,CAAC,wBAAwB,EAAE,wBAAwB,GAAG,OAAO,CAAC,MAAM,CAAC;WAYrE,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAc7D,QAAQ,IAAI,OAAO;IAKnB,OAAO,IAAI,OAAO;IAIlB,aAAa,IAAI,OAAO;CAG3B"}
|
package/dist/dat.certificate.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { DatCryptoKey, DatInteger, DatSignatureKey, DatUnixtime, } from "./index.js";
|
|
2
2
|
export class DatCertificate {
|
|
3
|
-
|
|
3
|
+
cid;
|
|
4
4
|
_signatureKey;
|
|
5
5
|
_cryptoKey;
|
|
6
6
|
_datIssueBegin;
|
|
7
7
|
_datIssueEnd;
|
|
8
8
|
_datTtl;
|
|
9
|
-
constructor(
|
|
10
|
-
if (!DatInteger.isBetween(
|
|
11
|
-
throw new Error(`Invalid
|
|
9
|
+
constructor(cid, signatureKey, cryptoKey, datIssueBegin, datIssueEnd, datTtl) {
|
|
10
|
+
if (!DatInteger.isBetween(cid, 0)) {
|
|
11
|
+
throw new Error(`Invalid cid(Certificate ID) is HEX ${cid}`);
|
|
12
12
|
}
|
|
13
13
|
if (!DatInteger.isBetween(datIssueBegin, 0)) {
|
|
14
14
|
throw new Error(`Invalid issueBegin: issueBegin is positive int or 0 ${datIssueBegin}`);
|
|
@@ -19,7 +19,7 @@ export class DatCertificate {
|
|
|
19
19
|
if (!DatInteger.isBetween(datTtl, 1)) {
|
|
20
20
|
throw new Error(`Invalid datTtl: datTtl is positive int ${datTtl}`);
|
|
21
21
|
}
|
|
22
|
-
this.
|
|
22
|
+
this.cid = cid;
|
|
23
23
|
this._signatureKey = signatureKey;
|
|
24
24
|
this._cryptoKey = cryptoKey;
|
|
25
25
|
this._datIssueBegin = Math.floor(datIssueBegin);
|
|
@@ -27,7 +27,7 @@ export class DatCertificate {
|
|
|
27
27
|
this._datTtl = Math.floor(datTtl);
|
|
28
28
|
}
|
|
29
29
|
async exports(datSignatureKeyOutOption) {
|
|
30
|
-
const
|
|
30
|
+
const cid = this.cid.toString(16);
|
|
31
31
|
const signatureAlgorithm = this._signatureKey.algorithm;
|
|
32
32
|
const signatureKey = await this._signatureKey.exports(datSignatureKeyOutOption);
|
|
33
33
|
const cryptoAlg = this._cryptoKey.algorithm;
|
|
@@ -35,18 +35,18 @@ export class DatCertificate {
|
|
|
35
35
|
const datIssueBegin = this._datIssueBegin;
|
|
36
36
|
const datIssueEnd = this._datIssueEnd;
|
|
37
37
|
const datTtl = this._datTtl;
|
|
38
|
-
return `${
|
|
38
|
+
return `${cid}.${signatureAlgorithm}.${signatureKey}.${cryptoAlg}.${cryptoKey}.${datIssueBegin}.${datIssueEnd}.${datTtl}`;
|
|
39
39
|
}
|
|
40
40
|
static async imports(format) {
|
|
41
41
|
const split = format.split(".");
|
|
42
42
|
if (split.length == 8) {
|
|
43
|
-
const
|
|
43
|
+
const cid = Number.parseInt(split[0], 16);
|
|
44
44
|
const signatureKey = await DatSignatureKey.imports(split[1], split[2]);
|
|
45
45
|
const cryptoKey = await DatCryptoKey.imports(split[3], split[4]);
|
|
46
46
|
const datIssueBegin = Number(split[5]);
|
|
47
47
|
const datIssueEnd = Number(split[6]);
|
|
48
48
|
const datTtl = Number(split[7]);
|
|
49
|
-
return new DatCertificate(
|
|
49
|
+
return new DatCertificate(cid, signatureKey, cryptoKey, datIssueBegin, datIssueEnd, datTtl);
|
|
50
50
|
}
|
|
51
51
|
throw new Error("Invalid Certificate format");
|
|
52
52
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dat.certificate.js","sourceRoot":"","sources":["../src/dat.certificate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAE,UAAU,EAAE,eAAe,EAA4B,WAAW,GAAE,MAAM,YAAY,CAAC;AAE7G,MAAM,OAAO,cAAc;IACP,
|
|
1
|
+
{"version":3,"file":"dat.certificate.js","sourceRoot":"","sources":["../src/dat.certificate.ts"],"names":[],"mappings":"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"}
|
package/dist/dat.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ export declare class Dat {
|
|
|
2
2
|
readonly dat: string;
|
|
3
3
|
readonly _format: boolean;
|
|
4
4
|
readonly _expire: number;
|
|
5
|
-
readonly
|
|
5
|
+
readonly _cid: number;
|
|
6
6
|
readonly _plain: ArrayBuffer;
|
|
7
7
|
readonly _secure: ArrayBuffer;
|
|
8
8
|
readonly _signature: ArrayBuffer;
|
package/dist/dat.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dat.d.ts","sourceRoot":"","sources":["../src/dat.ts"],"names":[],"mappings":"AAOA,qBAAa,GAAG;IACZ,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAM;IAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAS;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAK;IAC7B,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"dat.d.ts","sourceRoot":"","sources":["../src/dat.ts"],"names":[],"mappings":"AAOA,qBAAa,GAAG;IACZ,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAM;IAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAS;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAK;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAK;IAC1B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAsB;IAClD,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAsB;IACnD,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAsB;gBAE1C,GAAG,EAAE,MAAM,GAAC,SAAS,GAAC,IAAI;IAgBtC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,GAAC,MAAM,GAAC,SAAS,GAAC,IAAI,GAAG,GAAG;IAOhD,OAAO,IAAI,OAAO;IAIlB,KAAK,IAAI,MAAM;CAGlB;AAED,qBAAa,UAAU;IACnB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;gBAEtB,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW;IAMnE,IAAI,KAAK,IAAI,MAAM,CAElB;IACD,IAAI,MAAM,IAAI,MAAM,CAEnB;CACJ"}
|
package/dist/dat.js
CHANGED
|
@@ -3,7 +3,7 @@ export class Dat {
|
|
|
3
3
|
dat = '';
|
|
4
4
|
_format = false;
|
|
5
5
|
_expire = 0;
|
|
6
|
-
|
|
6
|
+
_cid = 0;
|
|
7
7
|
_plain = new ArrayBuffer(0);
|
|
8
8
|
_secure = new ArrayBuffer(0);
|
|
9
9
|
_signature = new ArrayBuffer(0);
|
|
@@ -13,7 +13,7 @@ export class Dat {
|
|
|
13
13
|
if (dat && parts.length == 5) {
|
|
14
14
|
try {
|
|
15
15
|
this._expire = DatInteger.parse(parts[0]);
|
|
16
|
-
this.
|
|
16
|
+
this._cid = Number.parseInt(parts[1], 16);
|
|
17
17
|
this._plain = DatArrayBuffer.fromBase64Url(parts[2]);
|
|
18
18
|
this._secure = DatArrayBuffer.fromBase64Url(parts[3]);
|
|
19
19
|
this._signature = DatArrayBuffer.fromBase64Url(parts[4]);
|
package/dist/dat.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dat.js","sourceRoot":"","sources":["../src/dat.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,QAAQ,EACR,cAAc,EACd,UAAU,EACV,WAAW,GACd,MAAM,YAAY,CAAC;AAEpB,MAAM,OAAO,GAAG;IACH,GAAG,GAAW,EAAE,CAAC;IACjB,OAAO,GAAY,KAAK,CAAC;IACzB,OAAO,GAAW,CAAC,CAAC;IACpB,
|
|
1
|
+
{"version":3,"file":"dat.js","sourceRoot":"","sources":["../src/dat.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,QAAQ,EACR,cAAc,EACd,UAAU,EACV,WAAW,GACd,MAAM,YAAY,CAAC;AAEpB,MAAM,OAAO,GAAG;IACH,GAAG,GAAW,EAAE,CAAC;IACjB,OAAO,GAAY,KAAK,CAAC;IACzB,OAAO,GAAW,CAAC,CAAC;IACpB,IAAI,GAAW,CAAC,CAAC;IACjB,MAAM,GAAgB,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;IACzC,OAAO,GAAgB,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;IAC1C,UAAU,GAAgB,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;IAEtD,YAAY,GAA0B;QAClC,IAAI,GAAG,EAAE,CAAC;YACN,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAChD,IAAI,GAAG,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBAC3B,IAAI,CAAC;oBACD,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC1C,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC1C,IAAI,CAAC,MAAM,GAAG,cAAc,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;oBACrD,IAAI,CAAC,OAAO,GAAG,cAAc,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;oBACtD,IAAI,CAAC,UAAU,GAAG,cAAc,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;oBACzD,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;gBACzE,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC,CAAA,CAAC;YAClB,CAAC;QACL,CAAC;IACL,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,GAA8B;QACtC,IAAI,GAAG,YAAY,GAAG,EAAE,CAAC;YACrB,OAAO,GAAG,CAAC;QACf,CAAC;QACD,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;IAED,OAAO;QACH,OAAO,CAAC,IAAI,CAAC,OAAO,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK;QACD,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5D,CAAC;CACJ;AAED,MAAM,OAAO,UAAU;IACV,MAAM,CAAS;IACf,UAAU,CAAc;IACxB,WAAW,CAAc;IAElC,YAAY,MAAc,EAAE,KAAkB,EAAE,MAAmB;QAC/D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;IAC9B,CAAC;IAED,IAAI,KAAK;QACL,OAAO,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC5C,CAAC;IACD,IAAI,MAAM;QACN,OAAO,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC7C,CAAC;CACJ"}
|
package/dist/dat.manager.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ export declare class DatManager {
|
|
|
6
6
|
static from(inputCertificates: DatCertificate[]): DatManager;
|
|
7
7
|
static imports(format: string): Promise<DatManager>;
|
|
8
8
|
exports(datSignatureKeyOutOption: DatSignatureKeyOutOption): Promise<string>;
|
|
9
|
-
find(
|
|
9
|
+
find(cid: number): DatCertificate | null;
|
|
10
10
|
issue(plain: ArrayBufferLike | Uint8Array | string | null | undefined, secure: ArrayBufferLike | Uint8Array | string | null | undefined): Promise<string>;
|
|
11
11
|
parse(dat: Dat | string | undefined | null): Promise<DatPayload>;
|
|
12
12
|
static issue(certificate: DatCertificate, plain: ArrayBufferLike | Uint8Array | string | null | undefined, secure: ArrayBufferLike | Uint8Array | string | null | undefined): Promise<string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dat.manager.d.ts","sourceRoot":"","sources":["../src/dat.manager.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,GAAG,EAGH,cAAc,EACd,UAAU,EACV,wBAAwB,EAE3B,MAAM,YAAY,CAAC;AAEpB,qBAAa,UAAU;IACnB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwB;IAC/C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmB;gBAEpC,MAAM,GAAE,cAAc,GAAG,IAAW,EAAE,YAAY,GAAE,cAAc,EAAO;IAKrF,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,cAAc,EAAE,GAAG,UAAU;WAoB/C,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IASnD,OAAO,CAAC,wBAAwB,EAAE,wBAAwB,GAAG,OAAO,CAAC,MAAM,CAAC;IAIlF,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"dat.manager.d.ts","sourceRoot":"","sources":["../src/dat.manager.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,GAAG,EAGH,cAAc,EACd,UAAU,EACV,wBAAwB,EAE3B,MAAM,YAAY,CAAC;AAEpB,qBAAa,UAAU;IACnB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwB;IAC/C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmB;gBAEpC,MAAM,GAAE,cAAc,GAAG,IAAW,EAAE,YAAY,GAAE,cAAc,EAAO;IAKrF,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,cAAc,EAAE,GAAG,UAAU;WAoB/C,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IASnD,OAAO,CAAC,wBAAwB,EAAE,wBAAwB,GAAG,OAAO,CAAC,MAAM,CAAC;IAIlF,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAIlC,KAAK,CAAC,KAAK,EAAE,eAAe,GAAC,UAAU,GAAC,MAAM,GAAC,IAAI,GAAC,SAAS,EAAE,MAAM,EAAE,eAAe,GAAC,UAAU,GAAC,MAAM,GAAC,IAAI,GAAC,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;IAOzI,KAAK,CAAC,GAAG,EAAE,GAAG,GAAC,MAAM,GAAC,SAAS,GAAC,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC;WAWnD,KAAK,CAAC,WAAW,EAAE,cAAc,EAAE,KAAK,EAAE,eAAe,GAAC,UAAU,GAAC,MAAM,GAAC,IAAI,GAAC,SAAS,EAAE,MAAM,EAAE,eAAe,GAAC,UAAU,GAAC,MAAM,GAAC,IAAI,GAAC,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;WAWtK,KAAK,CAAC,WAAW,EAAE,cAAc,EAAE,GAAG,EAAE,GAAG,GAAC,MAAM,GAAC,SAAS,GAAC,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC;CAavG"}
|
package/dist/dat.manager.js
CHANGED
|
@@ -9,8 +9,8 @@ export class DatManager {
|
|
|
9
9
|
static from(inputCertificates) {
|
|
10
10
|
let certificates = [];
|
|
11
11
|
for (const certificate of inputCertificates) {
|
|
12
|
-
if (certificates.find(e => e.
|
|
13
|
-
throw new Error(`Invalid DAT Certificates - Duplicate Certificate
|
|
12
|
+
if (certificates.find(e => e.cid === certificate.cid)) {
|
|
13
|
+
throw new Error(`Invalid DAT Certificates - Duplicate CID(Certificate ID) ${certificate.cid}`);
|
|
14
14
|
}
|
|
15
15
|
if (certificate.expired()) {
|
|
16
16
|
continue;
|
|
@@ -30,8 +30,8 @@ export class DatManager {
|
|
|
30
30
|
async exports(datSignatureKeyOutOption) {
|
|
31
31
|
return (await Promise.all(this.certificates.map(e => e.exports(datSignatureKeyOutOption)))).join('\n');
|
|
32
32
|
}
|
|
33
|
-
find(
|
|
34
|
-
return this.certificates.find(e => e.
|
|
33
|
+
find(cid) {
|
|
34
|
+
return this.certificates.find(e => e.cid === cid) || null;
|
|
35
35
|
}
|
|
36
36
|
async issue(plain, secure) {
|
|
37
37
|
if (this.issuer) {
|
|
@@ -43,19 +43,19 @@ export class DatManager {
|
|
|
43
43
|
if (!(dat = Dat.from(dat))._format) {
|
|
44
44
|
throw new Error("Invalid DAT: Format");
|
|
45
45
|
}
|
|
46
|
-
const certificate = this.find(dat.
|
|
46
|
+
const certificate = this.find(dat._cid);
|
|
47
47
|
if (certificate != null) {
|
|
48
48
|
return DatManager.parse(certificate, dat);
|
|
49
49
|
}
|
|
50
|
-
throw new Error("Invalid DAT: Certificate
|
|
50
|
+
throw new Error("Invalid DAT: CID(Certificate ID) Not Found");
|
|
51
51
|
}
|
|
52
52
|
static async issue(certificate, plain, secure) {
|
|
53
53
|
const now = DatUnixtime.now();
|
|
54
54
|
const expire = now + certificate._datTtl;
|
|
55
|
-
const
|
|
55
|
+
const cid = certificate.cid.toString(16);
|
|
56
56
|
const plainBase64 = DatBytes.toBase64Url(plain);
|
|
57
57
|
const securedBase64 = DatArrayBuffer.toBase64Url(await certificate._cryptoKey.encrypt(DatArrayBuffer.from(secure)));
|
|
58
|
-
const body = `${expire}.${
|
|
58
|
+
const body = `${expire}.${cid}.${plainBase64}.${securedBase64}`;
|
|
59
59
|
const signature = DatArrayBuffer.toBase64Url(await certificate._signatureKey.sign(body));
|
|
60
60
|
return `${body}.${signature}`;
|
|
61
61
|
}
|
package/dist/dat.manager.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dat.manager.js","sourceRoot":"","sources":["../src/dat.manager.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,GAAG,EACH,cAAc,EACd,QAAQ,EACR,cAAc,EACd,UAAU,EAEV,WAAW,GACd,MAAM,YAAY,CAAC;AAEpB,MAAM,OAAO,UAAU;IACF,MAAM,CAAwB;IAC9B,YAAY,CAAmB;IAEhD,YAAY,SAAgC,IAAI,EAAE,eAAiC,EAAE;QACjF,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACrC,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,iBAAmC;QAC3C,IAAI,YAAY,GAAqB,EAAE,CAAC;QAExC,KAAK,MAAM,WAAW,IAAI,iBAAiB,EAAE,CAAC;YAC1C,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"dat.manager.js","sourceRoot":"","sources":["../src/dat.manager.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,GAAG,EACH,cAAc,EACd,QAAQ,EACR,cAAc,EACd,UAAU,EAEV,WAAW,GACd,MAAM,YAAY,CAAC;AAEpB,MAAM,OAAO,UAAU;IACF,MAAM,CAAwB;IAC9B,YAAY,CAAmB;IAEhD,YAAY,SAAgC,IAAI,EAAE,eAAiC,EAAE;QACjF,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACrC,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,iBAAmC;QAC3C,IAAI,YAAY,GAAqB,EAAE,CAAC;QAExC,KAAK,MAAM,WAAW,IAAI,iBAAiB,EAAE,CAAC;YAC1C,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;gBACpD,MAAM,IAAI,KAAK,CAAC,4DAA4D,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC;YACnG,CAAC;YACD,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC;gBACxB,SAAS;YACb,CAAC;YACD,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACnC,CAAC;QAED,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC;QAE7D,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,IAAI,CAAC;QAEhE,OAAO,IAAI,UAAU,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IAC/C,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAc;QAC/B,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CAClC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;aACb,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;aACxD,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CACxB,CAAC;QACF,OAAO,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,wBAAkD;QAC5D,OAAO,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC1G,CAAC;IAED,IAAI,CAAC,GAAW;QACZ,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,KAAuD,EAAE,MAAwD;QACzH,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,OAAO,MAAM,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QAC9D,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC/D,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,GAA8B;QACtC,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;QAC3C,CAAC;QACD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;YACtB,OAAO,UAAU,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QAC9C,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,WAA2B,EAAE,KAAuD,EAAE,MAAwD;QAC7J,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC;QACzC,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACzC,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAChD,MAAM,aAAa,GAAG,cAAc,CAAC,WAAW,CAAC,MAAM,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACpH,MAAM,IAAI,GAAG,GAAG,MAAM,IAAI,GAAG,IAAI,WAAW,IAAI,aAAa,EAAE,CAAC;QAChE,MAAM,SAAS,GAAG,cAAc,CAAC,WAAW,CAAC,MAAM,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACzF,OAAO,GAAG,IAAI,IAAI,SAAS,EAAE,CAAC;IAClC,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,WAA2B,EAAE,GAA8B;QAC1E,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,CAAC,MAAM,WAAW,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YACvE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC9C,CAAC;QACD,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;IACrG,CAAC;CACJ"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "saro-dat",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.1.0",
|
|
4
4
|
"description": "Distributed Access Token",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"dat",
|
|
@@ -36,6 +36,7 @@
|
|
|
36
36
|
"scripts": {
|
|
37
37
|
"build": "tsc && tsc -p tsconfig.json",
|
|
38
38
|
"test": "vitest run",
|
|
39
|
+
"bench": "cross-env BENCH=TEST vitest run bench.test.ts --reporter=dot",
|
|
39
40
|
"prepublishOnly": "npm run build"
|
|
40
41
|
},
|
|
41
42
|
"dependencies": {
|
|
@@ -44,6 +45,8 @@
|
|
|
44
45
|
"devDependencies": {
|
|
45
46
|
"@types/node": "^25.6.0",
|
|
46
47
|
"typescript": "^6.0.3",
|
|
47
|
-
"vitest": "^4.1.5"
|
|
48
|
+
"vitest": "^4.1.5",
|
|
49
|
+
"cross-env": "^10.1.0",
|
|
50
|
+
"@types/p-limit": "^2.2.0"
|
|
48
51
|
}
|
|
49
52
|
}
|