@peerbit/crypto 2.3.13 → 2.4.1-e209d2e

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.
@@ -1,11 +1,36 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
1
+ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
2
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
3
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
4
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
5
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
6
+ var _, done = false;
7
+ for (var i = decorators.length - 1; i >= 0; i--) {
8
+ var context = {};
9
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
10
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
11
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
12
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
13
+ if (kind === "accessor") {
14
+ if (result === void 0) continue;
15
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
16
+ if (_ = accept(result.get)) descriptor.get = _;
17
+ if (_ = accept(result.set)) descriptor.set = _;
18
+ if (_ = accept(result.init)) initializers.unshift(_);
19
+ }
20
+ else if (_ = accept(result)) {
21
+ if (kind === "field") initializers.unshift(_);
22
+ else descriptor[key] = _;
23
+ }
24
+ }
25
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
26
+ done = true;
6
27
  };
7
- var __metadata = (this && this.__metadata) || function (k, v) {
8
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
28
+ var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
29
+ var useValue = arguments.length > 2;
30
+ for (var i = 0; i < initializers.length; i++) {
31
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
32
+ }
33
+ return useValue ? value : void 0;
9
34
  };
10
35
  import { deserialize, field, option, serialize, variant, } from "@dao-xyz/borsh";
11
36
  import { compare, equals } from "uint8arrays";
@@ -15,91 +40,119 @@ import { PublicSignKey } from "./key.js";
15
40
  import { PreHash } from "./prehash.js";
16
41
  import { Secp256k1PublicKey, verifySignatureSecp256k1 } from "./sepc256k1.js";
17
42
  import {} from "./signer.js";
18
- let SignatureWithKey = class SignatureWithKey {
19
- signature;
20
- publicKey;
21
- prehash = PreHash.NONE; // 0 no prehash, 1 sha256, 2 blake3?
22
- constructor(props) {
23
- this.signature = props.signature;
24
- this.publicKey = props.publicKey;
25
- this.prehash = props.prehash;
26
- }
27
- equals(other) {
28
- if (!equals(this.signature, other.signature)) {
29
- return false;
43
+ let SignatureWithKey = (() => {
44
+ let _classDecorators = [variant(0)];
45
+ let _classDescriptor;
46
+ let _classExtraInitializers = [];
47
+ let _classThis;
48
+ let _signature_decorators;
49
+ let _signature_initializers = [];
50
+ let _signature_extraInitializers = [];
51
+ let _publicKey_decorators;
52
+ let _publicKey_initializers = [];
53
+ let _publicKey_extraInitializers = [];
54
+ let _prehash_decorators;
55
+ let _prehash_initializers = [];
56
+ let _prehash_extraInitializers = [];
57
+ var SignatureWithKey = class {
58
+ static { _classThis = this; }
59
+ static {
60
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
61
+ _signature_decorators = [field({ type: Uint8Array })];
62
+ _publicKey_decorators = [field({ type: PublicSignKey })];
63
+ _prehash_decorators = [field({ type: "u8" })];
64
+ __esDecorate(null, null, _signature_decorators, { kind: "field", name: "signature", static: false, private: false, access: { has: obj => "signature" in obj, get: obj => obj.signature, set: (obj, value) => { obj.signature = value; } }, metadata: _metadata }, _signature_initializers, _signature_extraInitializers);
65
+ __esDecorate(null, null, _publicKey_decorators, { kind: "field", name: "publicKey", static: false, private: false, access: { has: obj => "publicKey" in obj, get: obj => obj.publicKey, set: (obj, value) => { obj.publicKey = value; } }, metadata: _metadata }, _publicKey_initializers, _publicKey_extraInitializers);
66
+ __esDecorate(null, null, _prehash_decorators, { kind: "field", name: "prehash", static: false, private: false, access: { has: obj => "prehash" in obj, get: obj => obj.prehash, set: (obj, value) => { obj.prehash = value; } }, metadata: _metadata }, _prehash_initializers, _prehash_extraInitializers);
67
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
68
+ SignatureWithKey = _classThis = _classDescriptor.value;
69
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
70
+ __runInitializers(_classThis, _classExtraInitializers);
30
71
  }
31
- return (compare(serialize(this.publicKey), serialize(other.publicKey)) === 0 &&
32
- this.prehash === other.prehash);
33
- }
34
- };
35
- __decorate([
36
- field({ type: Uint8Array }),
37
- __metadata("design:type", Uint8Array)
38
- ], SignatureWithKey.prototype, "signature", void 0);
39
- __decorate([
40
- field({ type: PublicSignKey }),
41
- __metadata("design:type", PublicSignKey)
42
- ], SignatureWithKey.prototype, "publicKey", void 0);
43
- __decorate([
44
- field({ type: "u8" }),
45
- __metadata("design:type", Number)
46
- ], SignatureWithKey.prototype, "prehash", void 0);
47
- SignatureWithKey = __decorate([
48
- variant(0),
49
- __metadata("design:paramtypes", [Object])
50
- ], SignatureWithKey);
72
+ signature = __runInitializers(this, _signature_initializers, void 0);
73
+ publicKey = (__runInitializers(this, _signature_extraInitializers), __runInitializers(this, _publicKey_initializers, void 0));
74
+ prehash = (__runInitializers(this, _publicKey_extraInitializers), __runInitializers(this, _prehash_initializers, PreHash.NONE)); // 0 no prehash, 1 sha256, 2 blake3?
75
+ constructor(props) {
76
+ __runInitializers(this, _prehash_extraInitializers);
77
+ this.signature = props.signature;
78
+ this.publicKey = props.publicKey;
79
+ this.prehash = props.prehash;
80
+ }
81
+ equals(other) {
82
+ if (!equals(this.signature, other.signature)) {
83
+ return false;
84
+ }
85
+ return (compare(serialize(this.publicKey), serialize(other.publicKey)) === 0 &&
86
+ this.prehash === other.prehash);
87
+ }
88
+ };
89
+ return SignatureWithKey = _classThis;
90
+ })();
51
91
  export { SignatureWithKey };
52
- let MaybeSigned = class MaybeSigned {
53
- data;
54
- signature;
55
- constructor(props) {
56
- this.data = props.data;
57
- this.signature = props.signature;
58
- this._value = props.value;
59
- }
60
- _value;
61
- getValue(constructor) {
62
- return deserialize(this.data, constructor);
63
- }
64
- async verify() {
65
- if (!this.signature) {
66
- return true;
92
+ let MaybeSigned = (() => {
93
+ let _classDecorators = [variant(0)];
94
+ let _classDescriptor;
95
+ let _classExtraInitializers = [];
96
+ let _classThis;
97
+ let _data_decorators;
98
+ let _data_initializers = [];
99
+ let _data_extraInitializers = [];
100
+ let _signature_decorators;
101
+ let _signature_initializers = [];
102
+ let _signature_extraInitializers = [];
103
+ var MaybeSigned = class {
104
+ static { _classThis = this; }
105
+ static {
106
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
107
+ _data_decorators = [field({ type: Uint8Array })];
108
+ _signature_decorators = [field({ type: option(SignatureWithKey) })];
109
+ __esDecorate(null, null, _data_decorators, { kind: "field", name: "data", static: false, private: false, access: { has: obj => "data" in obj, get: obj => obj.data, set: (obj, value) => { obj.data = value; } }, metadata: _metadata }, _data_initializers, _data_extraInitializers);
110
+ __esDecorate(null, null, _signature_decorators, { kind: "field", name: "signature", static: false, private: false, access: { has: obj => "signature" in obj, get: obj => obj.signature, set: (obj, value) => { obj.signature = value; } }, metadata: _metadata }, _signature_initializers, _signature_extraInitializers);
111
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
112
+ MaybeSigned = _classThis = _classDescriptor.value;
113
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
114
+ __runInitializers(_classThis, _classExtraInitializers);
67
115
  }
68
- return verify(this.signature, this.data);
69
- }
70
- equals(other) {
71
- if (!equals(this.data, other.data)) {
72
- return false;
116
+ data = __runInitializers(this, _data_initializers, void 0);
117
+ signature = (__runInitializers(this, _data_extraInitializers), __runInitializers(this, _signature_initializers, void 0));
118
+ constructor(props) {
119
+ this.data = props.data;
120
+ this.signature = props.signature;
121
+ this._value = props.value;
73
122
  }
74
- if (!this.signature !== !other.signature) {
75
- return false;
123
+ _value = __runInitializers(this, _signature_extraInitializers);
124
+ getValue(constructor) {
125
+ return deserialize(this.data, constructor);
76
126
  }
77
- if (this.signature && other.signature) {
78
- return this.signature.equals(other.signature);
127
+ async verify() {
128
+ if (!this.signature) {
129
+ return true;
130
+ }
131
+ return verify(this.signature, this.data);
79
132
  }
80
- return true;
81
- }
82
- /*
83
- In place signing
84
- */
85
- async sign(signer) {
86
- const signatureResult = await signer(this.data);
87
- this.signature = signatureResult;
88
- return this;
89
- }
90
- };
91
- __decorate([
92
- field({ type: Uint8Array }),
93
- __metadata("design:type", Uint8Array)
94
- ], MaybeSigned.prototype, "data", void 0);
95
- __decorate([
96
- field({ type: option(SignatureWithKey) }),
97
- __metadata("design:type", SignatureWithKey)
98
- ], MaybeSigned.prototype, "signature", void 0);
99
- MaybeSigned = __decorate([
100
- variant(0),
101
- __metadata("design:paramtypes", [Object])
102
- ], MaybeSigned);
133
+ equals(other) {
134
+ if (!equals(this.data, other.data)) {
135
+ return false;
136
+ }
137
+ if (!this.signature !== !other.signature) {
138
+ return false;
139
+ }
140
+ if (this.signature && other.signature) {
141
+ return this.signature.equals(other.signature);
142
+ }
143
+ return true;
144
+ }
145
+ /*
146
+ In place signing
147
+ */
148
+ async sign(signer) {
149
+ const signatureResult = await signer(this.data);
150
+ this.signature = signatureResult;
151
+ return this;
152
+ }
153
+ };
154
+ return MaybeSigned = _classThis;
155
+ })();
103
156
  export { MaybeSigned };
104
157
  export const verify = async (signature, data) => {
105
158
  if (signature.publicKey instanceof Ed25519PublicKey) {
@@ -1 +1 @@
1
- {"version":3,"file":"signature.js","sourceRoot":"","sources":["../../src/signature.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"signature.js","sourceRoot":"","sources":["../../src/signature.ts"],"names":[],"mappings":"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"}