@mainsail/crypto-signature-ecdsa 0.0.1-evm.1 → 0.0.1-evm.10

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 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../source/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAK7C,qBAAa,eAAgB,SAAQ,SAAS,CAAC,eAAe;IAChD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAqBtC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../source/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAI7C,qBAAa,eAAgB,SAAQ,SAAS,CAAC,eAAe;IAChD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAYtC"}
@@ -6,13 +6,7 @@ export class ServiceProvider extends Providers.ServiceProvider {
6
6
  async register() {
7
7
  this.app
8
8
  .bind(Identifiers.Cryptography.Signature.Size)
9
- .toFunction((buffer) => {
10
- buffer.mark();
11
- buffer.skip(1);
12
- const lengthHex = buffer.readBytes(1).toString("hex");
13
- buffer.reset();
14
- return Number.parseInt(lengthHex, 16) + 2;
15
- })
9
+ .toConstantValue(32 + /* r */ 32 + /* s */ +1 /* v */)
16
10
  .when(Selectors.anyAncestorOrTargetTaggedFirst("type", "wallet"));
17
11
  this.app
18
12
  .bind(Identifiers.Cryptography.Signature.Instance)
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../source/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG7C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,MAAM,OAAO,eAAgB,SAAQ,SAAS,CAAC,eAAe;IACtD,KAAK,CAAC,QAAQ;QACpB,IAAI,CAAC,GAAG;aACN,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC;aAC7C,UAAU,CAAC,CAAC,MAAkB,EAAE,EAAE;YAClC,MAAM,CAAC,IAAI,EAAE,CAAC;YACd,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAEf,MAAM,SAAS,GAAW,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAE9D,MAAM,CAAC,KAAK,EAAE,CAAC;YAEf,OAAO,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;QAC3C,CAAC,CAAC;aACD,IAAI,CAAC,SAAS,CAAC,8BAA8B,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;QAEnE,IAAI,CAAC,GAAG;aACN,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC;aACjD,EAAE,CAAC,SAAS,CAAC;aACb,gBAAgB,EAAE;aAClB,IAAI,CAAC,SAAS,CAAC,8BAA8B,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IACpE,CAAC;CACD"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../source/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,MAAM,OAAO,eAAgB,SAAQ,SAAS,CAAC,eAAe;IACtD,KAAK,CAAC,QAAQ;QACpB,IAAI,CAAC,GAAG;aACN,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC;aAC7C,eAAe,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;aACrD,IAAI,CAAC,SAAS,CAAC,8BAA8B,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;QAEnE,IAAI,CAAC,GAAG;aACN,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC;aACjD,EAAE,CAAC,SAAS,CAAC;aACb,gBAAgB,EAAE;aAClB,IAAI,CAAC,SAAS,CAAC,8BAA8B,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IACpE,CAAC;CACD"}
@@ -8,5 +8,8 @@ export declare class Signature implements Contracts.Crypto.Signature {
8
8
  serialize(buffer: ByteBuffer, signature: string): void;
9
9
  deserialize(buffer: ByteBuffer): Buffer;
10
10
  aggregate(signatures: Buffer[]): Promise<string>;
11
+ signRecoverable(message: Buffer, privateKey: Buffer): Promise<string>;
12
+ verifyRecoverable(signature: Buffer, message: Buffer, publicKey: Buffer): Promise<boolean>;
13
+ recoverPublicKey(message: Buffer, signature: Buffer): string;
11
14
  }
12
15
  //# sourceMappingURL=signature.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"signature.d.ts","sourceRoot":"","sources":["../source/signature.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAA2B,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAG7C,qBACa,SAAU,YAAW,SAAS,CAAC,MAAM,CAAC,SAAS;IAE3D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAY;IAE7B,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAI1D,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAsCrF,SAAS,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAItD,WAAW,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM;IAIjC,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;CAG7D"}
1
+ {"version":3,"file":"signature.d.ts","sourceRoot":"","sources":["../source/signature.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAA2B,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAG7C,qBACa,SAAU,YAAW,SAAS,CAAC,MAAM,CAAC,SAAS;IAE3D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAU;IAE3B,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAI1D,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAsCrF,SAAS,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAItD,WAAW,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM;IAIjC,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAIhD,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKrE,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAShG,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;CAInE"}
@@ -46,15 +46,30 @@ let Signature = class Signature {
46
46
  buffer.writeBytes(Buffer.from(signature, "hex"));
47
47
  }
48
48
  deserialize(buffer) {
49
- return buffer.readBytes(this.signatureSize(buffer));
49
+ return buffer.readBytes(this.signatureSize);
50
50
  }
51
51
  async aggregate(signatures) {
52
52
  throw new Exceptions.NotImplemented(this.constructor.name, "aggregate");
53
53
  }
54
+ async signRecoverable(message, privateKey) {
55
+ const [signature, recoverId] = secp256k1.signRecoverable(message, privateKey);
56
+ return Buffer.concat([signature, Buffer.from([recoverId])]).toString("hex");
57
+ }
58
+ async verifyRecoverable(signature, message, publicKey) {
59
+ const signatureRS = signature.subarray(0, 64);
60
+ if (!secp256k1.isLowS(signatureRS)) {
61
+ return false;
62
+ }
63
+ return secp256k1.verify(message, signatureRS, publicKey);
64
+ }
65
+ recoverPublicKey(message, signature) {
66
+ const v = signature.readUint8(64);
67
+ return secp256k1.recover(message, signature.subarray(0, 64), v, true).toString("hex");
68
+ }
54
69
  };
55
70
  __decorate([
56
71
  inject(Identifiers.Cryptography.Signature.Size),
57
- __metadata("design:type", Function)
72
+ __metadata("design:type", Number)
58
73
  ], Signature.prototype, "signatureSize", void 0);
59
74
  Signature = __decorate([
60
75
  injectable()
@@ -1 +1 @@
1
- {"version":3,"file":"signature.js","sourceRoot":"","sources":["../source/signature.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"signature.js","sourceRoot":"","sources":["../source/signature.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mainsail/crypto-signature-ecdsa",
3
- "version": "0.0.1-evm.1",
3
+ "version": "0.0.1-evm.10",
4
4
  "description": "Elliptic Curve Cryptography (ECDSA) signatures for the Mainsail blockchain",
5
5
  "license": "GPL-3.0-only",
6
6
  "contributors": [],
@@ -12,10 +12,10 @@
12
12
  ],
13
13
  "dependencies": {
14
14
  "bcrypto": "5.5.2",
15
- "@mainsail/contracts": "0.0.1-evm.1",
16
- "@mainsail/container": "0.0.1-evm.1",
17
- "@mainsail/kernel": "0.0.1-evm.1",
18
- "@mainsail/utils": "0.0.1-evm.1"
15
+ "@mainsail/container": "0.0.1-evm.10",
16
+ "@mainsail/kernel": "0.0.1-evm.10",
17
+ "@mainsail/utils": "0.0.1-evm.10",
18
+ "@mainsail/contracts": "0.0.1-evm.10"
19
19
  },
20
20
  "devDependencies": {
21
21
  "uvu": "^0.5.6"