@xyo-network/core 2.20.31 → 2.20.32
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/cjs/BoundWitness/Builder/Builder.js +2 -2
- package/dist/cjs/BoundWitness/Builder/Builder.js.map +1 -1
- package/dist/cjs/BoundWitness/Validator/BodyValidator.js +1 -1
- package/dist/cjs/BoundWitness/Validator/BodyValidator.js.map +1 -1
- package/dist/cjs/BoundWitness/Validator/MetaValidator.js +2 -2
- package/dist/cjs/BoundWitness/Validator/MetaValidator.js.map +1 -1
- package/dist/cjs/Hasher/XyoAbstractHasher.d.ts +11 -0
- package/dist/cjs/Hasher/XyoAbstractHasher.js +34 -0
- package/dist/cjs/Hasher/XyoAbstractHasher.js.map +1 -0
- package/dist/cjs/Hasher/XyoHasher.d.ts +4 -6
- package/dist/cjs/Hasher/XyoHasher.js +6 -20
- package/dist/cjs/Hasher/XyoHasher.js.map +1 -1
- package/dist/cjs/Hasher/index.d.ts +1 -0
- package/dist/cjs/Hasher/index.js +1 -0
- package/dist/cjs/Hasher/index.js.map +1 -1
- package/dist/cjs/Payload/Builder/Builder.js +1 -1
- package/dist/cjs/Payload/Builder/Builder.js.map +1 -1
- package/dist/cjs/Payload/Validator/MetaValidator.js +1 -1
- package/dist/cjs/Payload/Validator/MetaValidator.js.map +1 -1
- package/dist/cjs/Payload/Wrapper/Wrapper.d.ts +4 -4
- package/dist/cjs/Payload/Wrapper/Wrapper.js +5 -2
- package/dist/cjs/Payload/Wrapper/Wrapper.js.map +1 -1
- package/dist/cjs/Schema/Payload.d.ts +1 -0
- package/dist/docs.json +2477 -1725
- package/dist/esm/BoundWitness/Builder/Builder.js +2 -2
- package/dist/esm/BoundWitness/Builder/Builder.js.map +1 -1
- package/dist/esm/BoundWitness/Validator/BodyValidator.js +1 -1
- package/dist/esm/BoundWitness/Validator/BodyValidator.js.map +1 -1
- package/dist/esm/BoundWitness/Validator/MetaValidator.js +2 -2
- package/dist/esm/BoundWitness/Validator/MetaValidator.js.map +1 -1
- package/dist/esm/Hasher/XyoAbstractHasher.d.ts +11 -0
- package/dist/esm/Hasher/XyoAbstractHasher.js +29 -0
- package/dist/esm/Hasher/XyoAbstractHasher.js.map +1 -0
- package/dist/esm/Hasher/XyoHasher.d.ts +4 -6
- package/dist/esm/Hasher/XyoHasher.js +6 -19
- package/dist/esm/Hasher/XyoHasher.js.map +1 -1
- package/dist/esm/Hasher/index.d.ts +1 -0
- package/dist/esm/Hasher/index.js +1 -0
- package/dist/esm/Hasher/index.js.map +1 -1
- package/dist/esm/Payload/Builder/Builder.js +1 -1
- package/dist/esm/Payload/Builder/Builder.js.map +1 -1
- package/dist/esm/Payload/Validator/MetaValidator.js +1 -1
- package/dist/esm/Payload/Validator/MetaValidator.js.map +1 -1
- package/dist/esm/Payload/Wrapper/Wrapper.d.ts +4 -4
- package/dist/esm/Payload/Wrapper/Wrapper.js +6 -4
- package/dist/esm/Payload/Wrapper/Wrapper.js.map +1 -1
- package/dist/esm/Schema/Payload.d.ts +1 -0
- package/package.json +1 -1
- package/src/BoundWitness/Builder/Builder.spec.ts +1 -1
- package/src/BoundWitness/Builder/Builder.ts +2 -2
- package/src/BoundWitness/Validator/BodyValidator.ts +1 -1
- package/src/BoundWitness/Validator/MetaValidator.ts +2 -2
- package/src/Hasher/XyoAbstractHasher.ts +37 -0
- package/src/Hasher/XyoHasher.ts +7 -24
- package/src/Hasher/index.ts +1 -0
- package/src/Payload/Builder/Builder.ts +1 -1
- package/src/Payload/Validator/MetaValidator.ts +1 -1
- package/src/Payload/Wrapper/Wrapper.ts +8 -6
- package/src/Schema/Payload.ts +1 -0
|
@@ -9,7 +9,7 @@ export class XyoBoundWitnessBuilder {
|
|
|
9
9
|
}
|
|
10
10
|
get _payload_hashes() {
|
|
11
11
|
return this._payloads.map((payload) => {
|
|
12
|
-
return new XyoHasher(payload).
|
|
12
|
+
return new XyoHasher(payload).hash;
|
|
13
13
|
});
|
|
14
14
|
}
|
|
15
15
|
witness(account) {
|
|
@@ -55,7 +55,7 @@ export class XyoBoundWitnessBuilder {
|
|
|
55
55
|
}
|
|
56
56
|
build() {
|
|
57
57
|
const hashableFields = this.hashableFields();
|
|
58
|
-
const _hash = new XyoHasher(hashableFields).
|
|
58
|
+
const _hash = new XyoHasher(hashableFields).hash;
|
|
59
59
|
const ret = { ...hashableFields, _client: 'js', _hash, _signatures: this.signatures(_hash), _timestamp: Date.now() };
|
|
60
60
|
if (this.config.inlinePayloads) {
|
|
61
61
|
ret._payloads = this.inlinePayloads();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Builder.js","sourceRoot":"","sources":["../../../../src/BoundWitness/Builder/Builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAEjD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAUpD,MAAM,OAAO,sBAAsB;IAKjC,YAA4B,SAAuC,EAAE,cAAc,EAAE,KAAK,EAAE;QAAhE,WAAM,GAAN,MAAM,CAA0D;QAJpF,cAAS,GAAiB,EAAE,CAAA;QAC5B,qBAAgB,GAAa,EAAE,CAAA;QAC/B,cAAS,GAAiB,EAAE,CAAA;IAE2D,CAAC;IAEhG,IAAY,eAAe;QACzB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;YACpC,OAAO,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"Builder.js","sourceRoot":"","sources":["../../../../src/BoundWitness/Builder/Builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -46,7 +46,7 @@ class XyoBoundWitnessBodyValidator {
|
|
|
46
46
|
const errors = [];
|
|
47
47
|
const passedHashes = this.body.payload_hashes;
|
|
48
48
|
this.payloads?.forEach((payload, index) => {
|
|
49
|
-
const calcHash = new XyoHasher(payload).
|
|
49
|
+
const calcHash = new XyoHasher(payload).hash;
|
|
50
50
|
const passedHash = passedHashes[index];
|
|
51
51
|
if (calcHash !== passedHash) {
|
|
52
52
|
errors.push(new Error(`hash mismatch [${calcHash} !== ${passedHash}]`));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BodyValidator.js","sourceRoot":"","sources":["../../../../src/BoundWitness/Validator/BodyValidator.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,aAAa,CAAA;AAE9B,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAGxC,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAA;AAGlE,MAAM,4BAA4B;IAGhC,YAAY,IAAyB,EAAE,QAAuB;QAC5D,IAAI,CAAC,IAAI,GAAG,IAA4C,CAAA;QACxD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAC1B,CAAC;IAEM,mBAAmB;QACxB,MAAM,MAAM,GAAY,EAAE,CAAA;QAC1B,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,IAAI,CAAA;QAC/B,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,CAAA;QACrC,IAAI,SAAS,EAAE,MAAM,KAAK,aAAa,EAAE,MAAM;YAAE,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAA;QACnG,OAAO,MAAM,CAAA;IACf,CAAC;IAEM,SAAS;QACd,MAAM,MAAM,GAAY,EAAE,CAAA;QAC1B,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,IAAI,CAAA;QAC/B,IAAI,CAAC,SAAS,EAAE,MAAM;YAAE,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC,CAAA;QACnG,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAA;QAC1C,OAAO,MAAM,CAAA;IACf,CAAC;IAEO,mBAAmB,CAAC,SAAiB,EAAE,gBAAwB;QACrE,MAAM,MAAM,GAAY,EAAE,CAAA;QAE1B,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,GAAG,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAO,EAAE,IAAI,CAAC,CAAA;QACpF,MAAM,CAAC,YAAY,EAAE,kBAAkB,CAAC,GAAG,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAO,EAAE,IAAI,CAAC,CAAA;QAEzG,IAAI,KAAK,EAAE,MAAM,KAAK,YAAY,EAAE,MAAM,EAAE;YAC1C,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,GAAG,SAAS,IAAI,gBAAgB,oBAAoB,KAAK,EAAE,MAAM,QAAQ,YAAY,EAAE,MAAM,GAAG,CAAC,CAAC,CAAA;SACzH;QAED,OAAO,CAAC,GAAG,WAAW,EAAE,GAAG,kBAAkB,EAAE,GAAG,MAAM,CAAC,CAAA;IAC3D,CAAC;IAEM,2BAA2B;QAChC,MAAM,MAAM,GAAY,EAAE,CAAA;QAC1B,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,CAAC,CAAA;QAC7E,OAAO,MAAM,CAAA;IACf,CAAC;IAEM,oBAAoB;QACzB,MAAM,MAAM,GAAY,EAAE,CAAA;QAC1B,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,2BAA2B,EAAE,CAAC,CAAA;QAClD,OAAO,MAAM,CAAA;IACf,CAAC;IAEM,aAAa;QAClB,MAAM,MAAM,GAAY,EAAE,CAAA;QAC1B,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAA;QAC7C,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;YACxC,MAAM,QAAQ,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"BodyValidator.js","sourceRoot":"","sources":["../../../../src/BoundWitness/Validator/BodyValidator.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,9 +13,9 @@ export class XyoBoundWitnessMetaValidator {
|
|
|
13
13
|
hash() {
|
|
14
14
|
const errors = [];
|
|
15
15
|
const hasher = new XyoHasher(this.bw);
|
|
16
|
-
const bodyHash = hasher.
|
|
16
|
+
const bodyHash = hasher.hash;
|
|
17
17
|
if (bodyHash !== this.bw._hash)
|
|
18
|
-
errors.push(new Error(`Body hash mismatch: [calculated: ${bodyHash}] [found: ${this.bw._hash}] [sortedStringify: ${hasher.
|
|
18
|
+
errors.push(new Error(`Body hash mismatch: [calculated: ${bodyHash}] [found: ${this.bw._hash}] [sortedStringify: ${hasher.stringified}]`));
|
|
19
19
|
return errors;
|
|
20
20
|
}
|
|
21
21
|
payloads() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MetaValidator.js","sourceRoot":"","sources":["../../../../src/BoundWitness/Validator/MetaValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAExC,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAE9B,MAAM,qBAAqB,GAAG,aAAa,CAAA;AAC3C,MAAM,qBAAqB,GAAG,aAAa,CAAA;AAE3C,MAAM,OAAO,4BAA4B;IAEvC,YAAY,EAAmB;QAC7B,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;IACd,CAAC;IAEM,MAAM;QACX,MAAM,MAAM,GAAY,EAAE,CAAA;QAC1B,OAAO,MAAM,CAAA;IACf,CAAC;IAEM,IAAI;QACT,MAAM,MAAM,GAAY,EAAE,CAAA;QAE1B,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAErC,MAAM,QAAQ,GAAG,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"MetaValidator.js","sourceRoot":"","sources":["../../../../src/BoundWitness/Validator/MetaValidator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare abstract class XyoAbstractHasher<T extends Record<string, unknown>> {
|
|
2
|
+
protected abstract get obj(): T;
|
|
3
|
+
get hashFields(): Record<string, unknown>;
|
|
4
|
+
/** @deprecated use stringified instead */
|
|
5
|
+
sortedStringify(): string;
|
|
6
|
+
get stringified(): string;
|
|
7
|
+
/** @deprecated use hash instead */
|
|
8
|
+
sortedHash(): string;
|
|
9
|
+
get hash(): string;
|
|
10
|
+
private sortedHashData;
|
|
11
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import shajs from 'sha.js';
|
|
2
|
+
import { removeEmptyFields } from './removeEmptyFields';
|
|
3
|
+
import { deepOmitUnderscoreFields } from './removeFields';
|
|
4
|
+
import { sortFields } from './sortFields';
|
|
5
|
+
export class XyoAbstractHasher {
|
|
6
|
+
get hashFields() {
|
|
7
|
+
return removeEmptyFields(deepOmitUnderscoreFields(this.obj));
|
|
8
|
+
}
|
|
9
|
+
/** @deprecated use stringified instead */
|
|
10
|
+
sortedStringify() {
|
|
11
|
+
return this.stringified;
|
|
12
|
+
}
|
|
13
|
+
get stringified() {
|
|
14
|
+
const sortedEntry = sortFields(this.hashFields);
|
|
15
|
+
return JSON.stringify(sortedEntry);
|
|
16
|
+
}
|
|
17
|
+
/** @deprecated use hash instead */
|
|
18
|
+
sortedHash() {
|
|
19
|
+
return this.hash;
|
|
20
|
+
}
|
|
21
|
+
get hash() {
|
|
22
|
+
return this.sortedHashData().toString('hex');
|
|
23
|
+
}
|
|
24
|
+
sortedHashData() {
|
|
25
|
+
const stringObject = this.stringified;
|
|
26
|
+
return shajs('sha256').update(stringObject).digest();
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=XyoAbstractHasher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"XyoAbstractHasher.js","sourceRoot":"","sources":["../../../src/Hasher/XyoAbstractHasher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,QAAQ,CAAA;AAE1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,MAAM,OAAgB,iBAAiB;IAGrC,IAAI,UAAU;QACZ,OAAO,iBAAiB,CAAC,wBAAwB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;IAC9D,CAAC;IAED,0CAA0C;IACnC,eAAe;QACpB,OAAO,IAAI,CAAC,WAAW,CAAA;IACzB,CAAC;IAED,IAAW,WAAW;QACpB,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC/C,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;IACpC,CAAC;IAED,mCAAmC;IAC5B,UAAU;QACf,OAAO,IAAI,CAAC,IAAI,CAAA;IAClB,CAAC;IAED,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC9C,CAAC;IAEO,cAAc;QACpB,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAA;QACrC,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,CAAA;IACtD,CAAC;CACF"}
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { XyoAbstractHasher } from './XyoAbstractHasher';
|
|
2
|
+
export declare class XyoHasher<T extends Record<string, unknown>> extends XyoAbstractHasher<T> {
|
|
3
|
+
private readonly memoryObj;
|
|
3
4
|
constructor(obj: T);
|
|
4
|
-
get
|
|
5
|
-
sortedStringify(): string;
|
|
6
|
-
sortedHash(): string;
|
|
7
|
-
private sortedHashData;
|
|
5
|
+
protected get obj(): T;
|
|
8
6
|
}
|
|
@@ -1,24 +1,11 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
import { deepOmitUnderscoreFields } from './removeFields';
|
|
4
|
-
import { sortFields } from './sortFields';
|
|
5
|
-
export class XyoHasher {
|
|
1
|
+
import { XyoAbstractHasher } from './XyoAbstractHasher';
|
|
2
|
+
export class XyoHasher extends XyoAbstractHasher {
|
|
6
3
|
constructor(obj) {
|
|
7
|
-
|
|
4
|
+
super();
|
|
5
|
+
this.memoryObj = obj;
|
|
8
6
|
}
|
|
9
|
-
get
|
|
10
|
-
return
|
|
11
|
-
}
|
|
12
|
-
sortedStringify() {
|
|
13
|
-
const sortedEntry = sortFields(this.hashFields);
|
|
14
|
-
return JSON.stringify(sortedEntry);
|
|
15
|
-
}
|
|
16
|
-
sortedHash() {
|
|
17
|
-
return this.sortedHashData().toString('hex');
|
|
18
|
-
}
|
|
19
|
-
sortedHashData() {
|
|
20
|
-
const stringObject = this.sortedStringify();
|
|
21
|
-
return shajs('sha256').update(stringObject).digest();
|
|
7
|
+
get obj() {
|
|
8
|
+
return this.memoryObj;
|
|
22
9
|
}
|
|
23
10
|
}
|
|
24
11
|
//# sourceMappingURL=XyoHasher.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XyoHasher.js","sourceRoot":"","sources":["../../../src/Hasher/XyoHasher.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"XyoHasher.js","sourceRoot":"","sources":["../../../src/Hasher/XyoHasher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAEvD,MAAM,OAAO,SAA6C,SAAQ,iBAAoB;IAEpF,YAAY,GAAM;QAChB,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,SAAS,GAAG,GAAG,CAAA;IACtB,CAAC;IAED,IAAc,GAAG;QACf,OAAO,IAAI,CAAC,SAAS,CAAA;IACvB,CAAC;CACF"}
|
package/dist/esm/Hasher/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Hasher/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Hasher/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,qBAAqB,CAAA;AACnC,cAAc,aAAa,CAAA"}
|
|
@@ -22,7 +22,7 @@ export class XyoPayloadBuilder {
|
|
|
22
22
|
}
|
|
23
23
|
build() {
|
|
24
24
|
const hashableFields = this.hashableFields();
|
|
25
|
-
const _hash = new XyoHasher(hashableFields).
|
|
25
|
+
const _hash = new XyoHasher(hashableFields).hash;
|
|
26
26
|
const _timestamp = Date.now();
|
|
27
27
|
return { ...hashableFields, _client: 'js', _hash, _timestamp, schema: this._schema };
|
|
28
28
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Builder.js","sourceRoot":"","sources":["../../../../src/Payload/Builder/Builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAOrF,MAAM,OAAO,iBAAiB;IAK5B,YAAY,EAAE,MAAM,EAA4B;QAJxC,YAAO,GAAe,EAAE,CAAA;QAK9B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;IACvB,CAAC;IAEM,MAAM,CAAC,MAAmB;QAC/B,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAA;SACjE;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAEM,YAAY,CAAC,IAAa;QAC/B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAA;QACzB,OAAO,IAAI,CAAA;IACb,CAAC;IAEM,cAAc;QACnB,OAAO;YACL,GAAG,iBAAiB,CAAC,wBAAwB,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;YACrG,MAAM,EAAE,IAAI,CAAC,OAAO;SAChB,CAAA;IACR,CAAC;IAEM,KAAK;QACV,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,EAAE,CAAA;QAC5C,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,cAAc,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"Builder.js","sourceRoot":"","sources":["../../../../src/Payload/Builder/Builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAOrF,MAAM,OAAO,iBAAiB;IAK5B,YAAY,EAAE,MAAM,EAA4B;QAJxC,YAAO,GAAe,EAAE,CAAA;QAK9B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;IACvB,CAAC;IAEM,MAAM,CAAC,MAAmB;QAC/B,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAA;SACjE;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAEM,YAAY,CAAC,IAAa;QAC/B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAA;QACzB,OAAO,IAAI,CAAA;IACb,CAAC;IAEM,cAAc;QACnB,OAAO;YACL,GAAG,iBAAiB,CAAC,wBAAwB,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;YACrG,MAAM,EAAE,IAAI,CAAC,OAAO;SAChB,CAAA;IACR,CAAC;IAEM,KAAK;QACV,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,EAAE,CAAA;QAC5C,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,cAAc,CAAC,CAAC,IAAI,CAAA;QAChD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAC7B,OAAO,EAAE,GAAG,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,CAAA;IACtF,CAAC;CACF"}
|
|
@@ -8,7 +8,7 @@ class XyoPayloadMetaValidator {
|
|
|
8
8
|
hash() {
|
|
9
9
|
const errors = [];
|
|
10
10
|
const wrapper = new XyoHasher(this.payload);
|
|
11
|
-
const bodyHash = wrapper.
|
|
11
|
+
const bodyHash = wrapper.hash;
|
|
12
12
|
if (bodyHash !== this.payload._hash)
|
|
13
13
|
errors.push(new Error(`Body hash mismatch: [calculated: ${bodyHash}] [found: ${this.payload._hash}]`));
|
|
14
14
|
return errors;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MetaValidator.js","sourceRoot":"","sources":["../../../../src/Payload/Validator/MetaValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAGxC,MAAM,qBAAqB,GAAG,aAAa,CAAA;AAC3C,MAAM,qBAAqB,GAAG,aAAa,CAAA;AAE3C,MAAM,uBAAuB;IAE3B,YAAY,OAAmB;QAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAEM,IAAI;QACT,MAAM,MAAM,GAAY,EAAE,CAAA;QAC1B,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAE3C,MAAM,QAAQ,GAAG,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"MetaValidator.js","sourceRoot":"","sources":["../../../../src/Payload/Validator/MetaValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAGxC,MAAM,qBAAqB,GAAG,aAAa,CAAA;AAC3C,MAAM,qBAAqB,GAAG,aAAa,CAAA;AAE3C,MAAM,uBAAuB;IAE3B,YAAY,OAAmB;QAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAEM,IAAI;QACT,MAAM,MAAM,GAAY,EAAE,CAAA;QAC1B,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAE3C,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAA;QAC7B,IAAI,QAAQ,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK;YAAE,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,oCAAoC,QAAQ,aAAa,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;QAC3I,OAAO,MAAM,CAAA;IACf,CAAC;IAEM,SAAS;QACd,MAAM,MAAM,GAAY,EAAE,CAAA;QAC1B,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,OAAO,CAAA;QACnC,IAAI,UAAU,KAAK,SAAS;YAAE,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAA;aACrE,IAAI,UAAU,GAAG,qBAAqB;YAAE,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC,CAAA;aAChG,IAAI,UAAU,GAAG,qBAAqB;YAAE,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC,CAAA;QACpG,OAAO,MAAM,CAAA;IACf,CAAC;IAEM,GAAG;QACR,MAAM,MAAM,GAAY,EAAE,CAAA;QAC1B,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,CAAA;QAChD,OAAO,MAAM,CAAA;IACf,CAAC;CACF;AAED,OAAO,EAAE,uBAAuB,EAAE,CAAA"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { XyoAbstractHasher } from '../../Hasher';
|
|
2
2
|
import { XyoPayload } from '../models';
|
|
3
|
-
declare class XyoPayloadWrapper<T extends XyoPayload> extends
|
|
4
|
-
|
|
3
|
+
export declare class XyoPayloadWrapper<T extends XyoPayload> extends XyoAbstractHasher<T> {
|
|
4
|
+
payload: T;
|
|
5
5
|
constructor(payload: T);
|
|
6
|
+
protected get obj(): T;
|
|
6
7
|
get body(): T;
|
|
7
8
|
get meta(): T;
|
|
8
9
|
}
|
|
9
|
-
export { XyoPayloadWrapper };
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
import { deepOmitUnderscoreFields, deepPickUnderscoreFields,
|
|
2
|
-
class XyoPayloadWrapper extends
|
|
1
|
+
import { deepOmitUnderscoreFields, deepPickUnderscoreFields, XyoAbstractHasher } from '../../Hasher';
|
|
2
|
+
export class XyoPayloadWrapper extends XyoAbstractHasher {
|
|
3
3
|
constructor(payload) {
|
|
4
|
-
super(
|
|
4
|
+
super();
|
|
5
5
|
this.payload = payload;
|
|
6
6
|
}
|
|
7
|
+
get obj() {
|
|
8
|
+
return this.payload;
|
|
9
|
+
}
|
|
7
10
|
get body() {
|
|
8
11
|
return deepOmitUnderscoreFields(this.payload);
|
|
9
12
|
}
|
|
@@ -11,5 +14,4 @@ class XyoPayloadWrapper extends XyoHasher {
|
|
|
11
14
|
return deepPickUnderscoreFields(this.payload);
|
|
12
15
|
}
|
|
13
16
|
}
|
|
14
|
-
export { XyoPayloadWrapper };
|
|
15
17
|
//# sourceMappingURL=Wrapper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Wrapper.js","sourceRoot":"","sources":["../../../../src/Payload/Wrapper/Wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,
|
|
1
|
+
{"version":3,"file":"Wrapper.js","sourceRoot":"","sources":["../../../../src/Payload/Wrapper/Wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAGpG,MAAM,OAAO,iBAAwC,SAAQ,iBAAoB;IAE/E,YAAY,OAAU;QACpB,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAED,IAAc,GAAG;QACf,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAED,IAAW,IAAI;QACb,OAAO,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC/C,CAAC;IAED,IAAW,IAAI;QACb,OAAO,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC/C,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -32,7 +32,7 @@ const payloadHash = '3c817871cbf24708703e907dbc344b1b2aefcc3603d14d59c3a35a5c446
|
|
|
32
32
|
describe('XyoBoundWitnessBuilder', () => {
|
|
33
33
|
describe('hash', () => {
|
|
34
34
|
it.each(payloads)('consistently hashes equivalent payload independent of the order of the keys', (payload) => {
|
|
35
|
-
const hash = new XyoHasher(payload).
|
|
35
|
+
const hash = new XyoHasher(payload).hash
|
|
36
36
|
expect(hash).toEqual(payloadHash)
|
|
37
37
|
})
|
|
38
38
|
})
|
|
@@ -19,7 +19,7 @@ export class XyoBoundWitnessBuilder {
|
|
|
19
19
|
|
|
20
20
|
private get _payload_hashes(): string[] {
|
|
21
21
|
return this._payloads.map((payload) => {
|
|
22
|
-
return new XyoHasher(payload).
|
|
22
|
+
return new XyoHasher(payload).hash
|
|
23
23
|
})
|
|
24
24
|
}
|
|
25
25
|
|
|
@@ -72,7 +72,7 @@ export class XyoBoundWitnessBuilder {
|
|
|
72
72
|
|
|
73
73
|
public build(): XyoBoundWitness {
|
|
74
74
|
const hashableFields = this.hashableFields() as unknown as Record<string, unknown>
|
|
75
|
-
const _hash = new XyoHasher(hashableFields).
|
|
75
|
+
const _hash = new XyoHasher(hashableFields).hash
|
|
76
76
|
|
|
77
77
|
const ret = { ...hashableFields, _client: 'js', _hash, _signatures: this.signatures(_hash), _timestamp: Date.now() } as XyoBoundWitness
|
|
78
78
|
if (this.config.inlinePayloads) {
|
|
@@ -60,7 +60,7 @@ class XyoBoundWitnessBodyValidator {
|
|
|
60
60
|
const errors: Error[] = []
|
|
61
61
|
const passedHashes = this.body.payload_hashes
|
|
62
62
|
this.payloads?.forEach((payload, index) => {
|
|
63
|
-
const calcHash = new XyoHasher(payload).
|
|
63
|
+
const calcHash = new XyoHasher(payload).hash
|
|
64
64
|
const passedHash = passedHashes[index]
|
|
65
65
|
if (calcHash !== passedHash) {
|
|
66
66
|
errors.push(new Error(`hash mismatch [${calcHash} !== ${passedHash}]`))
|
|
@@ -21,8 +21,8 @@ export class XyoBoundWitnessMetaValidator {
|
|
|
21
21
|
|
|
22
22
|
const hasher = new XyoHasher(this.bw)
|
|
23
23
|
|
|
24
|
-
const bodyHash = hasher.
|
|
25
|
-
if (bodyHash !== this.bw._hash) errors.push(new Error(`Body hash mismatch: [calculated: ${bodyHash}] [found: ${this.bw._hash}] [sortedStringify: ${hasher.
|
|
24
|
+
const bodyHash = hasher.hash
|
|
25
|
+
if (bodyHash !== this.bw._hash) errors.push(new Error(`Body hash mismatch: [calculated: ${bodyHash}] [found: ${this.bw._hash}] [sortedStringify: ${hasher.stringified}]`))
|
|
26
26
|
return errors
|
|
27
27
|
}
|
|
28
28
|
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import shajs from 'sha.js'
|
|
2
|
+
|
|
3
|
+
import { removeEmptyFields } from './removeEmptyFields'
|
|
4
|
+
import { deepOmitUnderscoreFields } from './removeFields'
|
|
5
|
+
import { sortFields } from './sortFields'
|
|
6
|
+
|
|
7
|
+
export abstract class XyoAbstractHasher<T extends Record<string, unknown>> {
|
|
8
|
+
protected abstract get obj(): T
|
|
9
|
+
|
|
10
|
+
get hashFields() {
|
|
11
|
+
return removeEmptyFields(deepOmitUnderscoreFields(this.obj))
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/** @deprecated use stringified instead */
|
|
15
|
+
public sortedStringify() {
|
|
16
|
+
return this.stringified
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
public get stringified() {
|
|
20
|
+
const sortedEntry = sortFields(this.hashFields)
|
|
21
|
+
return JSON.stringify(sortedEntry)
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/** @deprecated use hash instead */
|
|
25
|
+
public sortedHash() {
|
|
26
|
+
return this.hash
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
public get hash() {
|
|
30
|
+
return this.sortedHashData().toString('hex')
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
private sortedHashData() {
|
|
34
|
+
const stringObject = this.stringified
|
|
35
|
+
return shajs('sha256').update(stringObject).digest()
|
|
36
|
+
}
|
|
37
|
+
}
|
package/src/Hasher/XyoHasher.ts
CHANGED
|
@@ -1,30 +1,13 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { XyoAbstractHasher } from './XyoAbstractHasher'
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
import { sortFields } from './sortFields'
|
|
6
|
-
|
|
7
|
-
export class XyoHasher<T extends Record<string, unknown>> {
|
|
8
|
-
public readonly obj: T
|
|
3
|
+
export class XyoHasher<T extends Record<string, unknown>> extends XyoAbstractHasher<T> {
|
|
4
|
+
private readonly memoryObj: T
|
|
9
5
|
constructor(obj: T) {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
get hashFields() {
|
|
14
|
-
return removeEmptyFields(deepOmitUnderscoreFields(this.obj))
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
public sortedStringify() {
|
|
18
|
-
const sortedEntry = sortFields(this.hashFields)
|
|
19
|
-
return JSON.stringify(sortedEntry)
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
public sortedHash() {
|
|
23
|
-
return this.sortedHashData().toString('hex')
|
|
6
|
+
super()
|
|
7
|
+
this.memoryObj = obj
|
|
24
8
|
}
|
|
25
9
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
return shajs('sha256').update(stringObject).digest()
|
|
10
|
+
protected get obj() {
|
|
11
|
+
return this.memoryObj
|
|
29
12
|
}
|
|
30
13
|
}
|
package/src/Hasher/index.ts
CHANGED
|
@@ -35,7 +35,7 @@ export class XyoPayloadBuilder<T extends XyoPayload> {
|
|
|
35
35
|
|
|
36
36
|
public build(): T {
|
|
37
37
|
const hashableFields = this.hashableFields()
|
|
38
|
-
const _hash = new XyoHasher(hashableFields).
|
|
38
|
+
const _hash = new XyoHasher(hashableFields).hash
|
|
39
39
|
const _timestamp = Date.now()
|
|
40
40
|
return { ...hashableFields, _client: 'js', _hash, _timestamp, schema: this._schema }
|
|
41
41
|
}
|
|
@@ -14,7 +14,7 @@ class XyoPayloadMetaValidator {
|
|
|
14
14
|
const errors: Error[] = []
|
|
15
15
|
const wrapper = new XyoHasher(this.payload)
|
|
16
16
|
|
|
17
|
-
const bodyHash = wrapper.
|
|
17
|
+
const bodyHash = wrapper.hash
|
|
18
18
|
if (bodyHash !== this.payload._hash) errors.push(new Error(`Body hash mismatch: [calculated: ${bodyHash}] [found: ${this.payload._hash}]`))
|
|
19
19
|
return errors
|
|
20
20
|
}
|
|
@@ -1,13 +1,17 @@
|
|
|
1
|
-
import { deepOmitUnderscoreFields, deepPickUnderscoreFields,
|
|
1
|
+
import { deepOmitUnderscoreFields, deepPickUnderscoreFields, XyoAbstractHasher } from '../../Hasher'
|
|
2
2
|
import { XyoPayload } from '../models'
|
|
3
3
|
|
|
4
|
-
class XyoPayloadWrapper<T extends XyoPayload> extends
|
|
5
|
-
public
|
|
4
|
+
export class XyoPayloadWrapper<T extends XyoPayload> extends XyoAbstractHasher<T> {
|
|
5
|
+
public payload: T
|
|
6
6
|
constructor(payload: T) {
|
|
7
|
-
super(
|
|
7
|
+
super()
|
|
8
8
|
this.payload = payload
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
+
protected get obj() {
|
|
12
|
+
return this.payload
|
|
13
|
+
}
|
|
14
|
+
|
|
11
15
|
public get body() {
|
|
12
16
|
return deepOmitUnderscoreFields(this.payload)
|
|
13
17
|
}
|
|
@@ -16,5 +20,3 @@ class XyoPayloadWrapper<T extends XyoPayload> extends XyoHasher<T> {
|
|
|
16
20
|
return deepPickUnderscoreFields(this.payload)
|
|
17
21
|
}
|
|
18
22
|
}
|
|
19
|
-
|
|
20
|
-
export { XyoPayloadWrapper }
|