@socket.tech/dl-common 1.0.13 → 1.0.15

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 (79) hide show
  1. package/package.json +3 -3
  2. package/dist/constants/confirmations.d.ts +0 -5
  3. package/dist/constants/confirmations.js +0 -17
  4. package/dist/constants/enums.d.ts +0 -38
  5. package/dist/constants/enums.js +0 -45
  6. package/dist/constants/index.d.ts +0 -3
  7. package/dist/constants/index.js +0 -19
  8. package/dist/constants/types.d.ts +0 -126
  9. package/dist/constants/types.js +0 -45
  10. package/dist/constants/waitTime.d.ts +0 -8
  11. package/dist/constants/waitTime.js +0 -49
  12. package/dist/index.d.ts +0 -4
  13. package/dist/index.js +0 -36
  14. package/dist/models/attestSignature.d.ts +0 -35
  15. package/dist/models/attestSignature.js +0 -53
  16. package/dist/models/attestation.d.ts +0 -70
  17. package/dist/models/attestation.js +0 -86
  18. package/dist/models/index.d.ts +0 -6
  19. package/dist/models/index.js +0 -22
  20. package/dist/models/message.d.ts +0 -166
  21. package/dist/models/message.js +0 -183
  22. package/dist/models/packet.d.ts +0 -241
  23. package/dist/models/packet.js +0 -250
  24. package/dist/models/proposal.d.ts +0 -127
  25. package/dist/models/proposal.js +0 -141
  26. package/dist/models/switchboard.d.ts +0 -69
  27. package/dist/models/switchboard.js +0 -92
  28. package/dist/services/cacheService.d.ts +0 -14
  29. package/dist/services/cacheService.js +0 -77
  30. package/dist/services/eventBridgeService.d.ts +0 -8
  31. package/dist/services/eventBridgeService.js +0 -39
  32. package/dist/services/index.d.ts +0 -3
  33. package/dist/services/index.js +0 -20
  34. package/dist/services/queueService.d.ts +0 -10
  35. package/dist/services/queueService.js +0 -54
  36. package/dist/utils/address.d.ts +0 -2
  37. package/dist/utils/address.js +0 -8
  38. package/dist/utils/axios.d.ts +0 -2
  39. package/dist/utils/axios.js +0 -54
  40. package/dist/utils/dataStructHelper.d.ts +0 -2
  41. package/dist/utils/dataStructHelper.js +0 -10
  42. package/dist/utils/discord.d.ts +0 -2
  43. package/dist/utils/discord.js +0 -35
  44. package/dist/utils/ethersAwsKmsSigner.d.ts +0 -2
  45. package/dist/utils/ethersAwsKmsSigner.js +0 -26
  46. package/dist/utils/eventGetter.d.ts +0 -4
  47. package/dist/utils/eventGetter.js +0 -50
  48. package/dist/utils/extraUtils.d.ts +0 -32
  49. package/dist/utils/extraUtils.js +0 -103
  50. package/dist/utils/idUtils.d.ts +0 -14
  51. package/dist/utils/idUtils.js +0 -50
  52. package/dist/utils/index.d.ts +0 -13
  53. package/dist/utils/index.js +0 -29
  54. package/dist/utils/relaySigner.d.ts +0 -21
  55. package/dist/utils/relaySigner.js +0 -68
  56. package/dist/utils/s3Service.d.ts +0 -4
  57. package/dist/utils/s3Service.js +0 -41
  58. package/dist/utils/secretManagerService.d.ts +0 -2
  59. package/dist/utils/secretManagerService.js +0 -33
  60. package/dist/utils/signer/adapter.d.ts +0 -18
  61. package/dist/utils/signer/adapter.js +0 -71
  62. package/dist/utils/signer/address.d.ts +0 -10
  63. package/dist/utils/signer/address.js +0 -42
  64. package/dist/utils/signer/asn1-parser.d.ts +0 -11
  65. package/dist/utils/signer/asn1-parser.js +0 -80
  66. package/dist/utils/signer/crypto.d.ts +0 -6
  67. package/dist/utils/signer/crypto.js +0 -34
  68. package/dist/utils/signer/index.d.ts +0 -4
  69. package/dist/utils/signer/index.js +0 -20
  70. package/dist/utils/signer/kms-ethers-signer.d.ts +0 -19
  71. package/dist/utils/signer/kms-ethers-signer.js +0 -32
  72. package/dist/utils/signer/kms-signer.d.ts +0 -14
  73. package/dist/utils/signer/kms-signer.js +0 -46
  74. package/dist/utils/signer/signature.d.ts +0 -17
  75. package/dist/utils/signer/signature.js +0 -65
  76. package/dist/utils/signer/signer.d.ts +0 -7
  77. package/dist/utils/signer/signer.js +0 -2
  78. package/dist/utils/time.d.ts +0 -2
  79. package/dist/utils/time.js +0 -7
@@ -1,29 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./axios"), exports);
18
- __exportStar(require("./discord"), exports);
19
- __exportStar(require("./relaySigner"), exports);
20
- __exportStar(require("./idUtils"), exports);
21
- __exportStar(require("./address"), exports);
22
- __exportStar(require("./dataStructHelper"), exports);
23
- __exportStar(require("./extraUtils"), exports);
24
- __exportStar(require("./time"), exports);
25
- __exportStar(require("./signer"), exports);
26
- __exportStar(require("./ethersAwsKmsSigner"), exports);
27
- __exportStar(require("./secretManagerService"), exports);
28
- __exportStar(require("./eventGetter"), exports);
29
- __exportStar(require("./s3Service"), exports);
@@ -1,21 +0,0 @@
1
- import { Provider, TransactionRequest, TransactionResponse } from "@ethersproject/abstract-provider";
2
- import { Signer } from "@ethersproject/abstract-signer";
3
- import { Bytes } from "@ethersproject/bytes";
4
- import { Deferrable } from "@ethersproject/properties";
5
- export declare class SocketRelaySigner extends Signer {
6
- readonly provider: Provider;
7
- readonly chainId: number;
8
- readonly relayUrl: string;
9
- readonly relayerAPIKey: string;
10
- readonly sequential: boolean;
11
- readonly isCritical: boolean;
12
- readonly metadata: object;
13
- constructor(provider: Provider, chainId: number, relayUrl: string, relayerAPIKey: string, sequential?: boolean, isCritical?: boolean, metadata?: object);
14
- getAddress(): Promise<string>;
15
- signMessage(message: string | Bytes): Promise<string>;
16
- connect(provider: Provider): SocketRelaySigner;
17
- setCritical(isCritical: boolean): SocketRelaySigner;
18
- addMetadata(metadata: object): SocketRelaySigner;
19
- signTransaction(transaction: Deferrable<TransactionRequest>): Promise<string>;
20
- sendTransaction(transaction: Deferrable<TransactionRequest>): Promise<TransactionResponse>;
21
- }
@@ -1,68 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SocketRelaySigner = void 0;
4
- const abstract_signer_1 = require("@ethersproject/abstract-signer");
5
- const axios_1 = require("./axios");
6
- class SocketRelaySigner extends abstract_signer_1.Signer {
7
- constructor(provider, chainId, relayUrl, relayerAPIKey, sequential = false,
8
- // if isCritical is set to true, will try multiple relayers
9
- // to get the transaction included
10
- isCritical = false, metadata = {}) {
11
- super();
12
- this.provider = provider;
13
- this.chainId = chainId;
14
- this.relayUrl = relayUrl;
15
- this.relayerAPIKey = relayerAPIKey;
16
- this.sequential = sequential;
17
- this.isCritical = isCritical;
18
- this.metadata = metadata;
19
- }
20
- async getAddress() {
21
- // some random address
22
- return "0x5367Efc17020Aa1CF0943bA7eD17f1D3e4c7d7EE";
23
- }
24
- async signMessage(message) {
25
- throw new Error(" signMessage not Implemented");
26
- }
27
- connect(provider) {
28
- return new SocketRelaySigner(provider, this.chainId, this.relayUrl, this.relayerAPIKey, this.sequential, this.isCritical, this.metadata);
29
- }
30
- setCritical(isCritical) {
31
- return new SocketRelaySigner(this.provider, this.chainId, this.relayUrl, this.relayerAPIKey, this.sequential, isCritical, this.metadata);
32
- }
33
- addMetadata(metadata) {
34
- return new SocketRelaySigner(this.provider, this.chainId, this.relayUrl, this.relayerAPIKey, this.sequential, this.isCritical, metadata);
35
- }
36
- async signTransaction(transaction) {
37
- throw new Error(" signTransaction not Implemented");
38
- }
39
- async sendTransaction(transaction) {
40
- try {
41
- if (!this.relayerAPIKey)
42
- throw new Error("relayerAPIKey not provided");
43
- if (!this.relayUrl)
44
- throw new Error("relayUrl not provided");
45
- let payload = {
46
- chainId: this.chainId,
47
- sequential: this.sequential,
48
- isCritical: this.isCritical,
49
- metadata: this.metadata,
50
- ...transaction,
51
- };
52
- const config = {
53
- headers: {
54
- "x-api-key": this.relayerAPIKey,
55
- },
56
- };
57
- let result = await (0, axios_1.axiosPost)(this.relayUrl, payload, config);
58
- if (!result.success)
59
- throw result;
60
- let tx = result === null || result === void 0 ? void 0 : result.data;
61
- return this.provider._wrapTransaction(tx);
62
- }
63
- catch (error) {
64
- throw error;
65
- }
66
- }
67
- }
68
- exports.SocketRelaySigner = SocketRelaySigner;
@@ -1,4 +0,0 @@
1
- import { type DeploymentMode } from "@socket.tech/dl-core";
2
- export declare const initS3Client: (region: string) => Promise<void>;
3
- export declare const getFileFromS3: (bucket: string, filePath: string) => Promise<any>;
4
- export declare const getS3Config: (deploymentMode: DeploymentMode, region?: string) => Promise<any>;
@@ -1,41 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getS3Config = exports.getFileFromS3 = exports.initS3Client = void 0;
4
- const client_s3_1 = require("@aws-sdk/client-s3");
5
- // Set your AWS credentials and region
6
- let s3Client;
7
- const initS3Client = async (region) => {
8
- s3Client = new client_s3_1.S3Client({
9
- region,
10
- });
11
- };
12
- exports.initS3Client = initS3Client;
13
- const getFileFromS3 = async (bucket, filePath) => {
14
- var _a;
15
- try {
16
- // Create an S3 GET operation command
17
- const getObjectCommand = new client_s3_1.GetObjectCommand({
18
- Bucket: bucket,
19
- Key: filePath,
20
- });
21
- // Execute the command and get the response
22
- const s3Response = await s3Client.send(getObjectCommand);
23
- const jsonStr = await ((_a = s3Response.Body) === null || _a === void 0 ? void 0 : _a.transformToString());
24
- let response;
25
- if (jsonStr)
26
- response = JSON.parse(jsonStr);
27
- return response;
28
- }
29
- catch (error) {
30
- console.error("Error downloading file from S3:", error);
31
- throw error;
32
- }
33
- };
34
- exports.getFileFromS3 = getFileFromS3;
35
- const getS3Config = async (deploymentMode, region = "us-east-1") => {
36
- const S3_BUCKET_NAME = "socket-dl-" + deploymentMode;
37
- const S3_RPC_CONFIG_FILE_PATH = deploymentMode + "RpcConfig.json";
38
- (0, exports.initS3Client)(region);
39
- return await (0, exports.getFileFromS3)(S3_BUCKET_NAME, S3_RPC_CONFIG_FILE_PATH);
40
- };
41
- exports.getS3Config = getS3Config;
@@ -1,2 +0,0 @@
1
- export declare const getAllSecrets: (secretName: string, region?: string) => Promise<any>;
2
- export declare const getSecret: (secretName: string, secretKey: string, region?: string) => Promise<any>;
@@ -1,33 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getSecret = exports.getAllSecrets = void 0;
4
- const client_secrets_manager_1 = require("@aws-sdk/client-secrets-manager");
5
- const defaultRegion = "us-east-1";
6
- const getAllSecrets = async (secretName, region = defaultRegion) => {
7
- try {
8
- const client = new client_secrets_manager_1.SecretsManagerClient({
9
- region,
10
- });
11
- let response = await client.send(new client_secrets_manager_1.GetSecretValueCommand({
12
- SecretId: secretName,
13
- VersionStage: "AWSCURRENT", // VersionStage defaults to AWSCURRENT if unspecified
14
- }));
15
- if (!(response === null || response === void 0 ? void 0 : response.SecretString))
16
- throw new Error("No secret found");
17
- return JSON.parse(response.SecretString);
18
- }
19
- catch (error) {
20
- throw error;
21
- }
22
- };
23
- exports.getAllSecrets = getAllSecrets;
24
- const getSecret = async (secretName, secretKey, region = defaultRegion) => {
25
- try {
26
- let secrets = await (0, exports.getAllSecrets)(secretName, region);
27
- return secrets === null || secrets === void 0 ? void 0 : secrets[secretKey];
28
- }
29
- catch (error) {
30
- throw error;
31
- }
32
- };
33
- exports.getSecret = getSecret;
@@ -1,18 +0,0 @@
1
- import type { Signer as ISigner } from "./signer";
2
- import { Signer } from "@ethersproject/abstract-signer";
3
- import { Deferrable } from "@ethersproject/properties";
4
- import { Bytes } from "@ethersproject/bytes";
5
- import type { Provider, TransactionRequest } from "@ethersproject/abstract-provider";
6
- export type AdapterConfig = {
7
- signer: ISigner;
8
- version: string;
9
- };
10
- export declare class Adapter extends Signer {
11
- private readonly signer;
12
- private readonly logger;
13
- constructor(config: AdapterConfig, provider?: Provider);
14
- getAddress(): Promise<string>;
15
- signMessage(message: Bytes | string): Promise<string>;
16
- signTransaction(deferrableTransaction: Deferrable<TransactionRequest>): Promise<string>;
17
- connect(provider: Provider): Adapter;
18
- }
@@ -1,71 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Adapter = void 0;
4
- const abstract_signer_1 = require("@ethersproject/abstract-signer");
5
- const properties_1 = require("@ethersproject/properties");
6
- const bytes_1 = require("@ethersproject/bytes");
7
- const hash_1 = require("@ethersproject/hash");
8
- const logger_1 = require("@ethersproject/logger");
9
- const address_1 = require("@ethersproject/address");
10
- const keccak256_1 = require("@ethersproject/keccak256");
11
- const bignumber_1 = require("@ethersproject/bignumber");
12
- const transactions_1 = require("@ethersproject/transactions");
13
- class Adapter extends abstract_signer_1.Signer {
14
- constructor(config, provider) {
15
- super();
16
- this.signer = config.signer;
17
- (0, properties_1.defineReadOnly)(this, "provider", provider);
18
- this.logger = new logger_1.Logger(config.version);
19
- }
20
- async getAddress() {
21
- const address = await this.signer.getAddress();
22
- return (0, address_1.getAddress)(address.toString());
23
- }
24
- async signMessage(message) {
25
- const digest = (0, hash_1.hashMessage)(message);
26
- const signature = await this.signer.sign(Buffer.from(digest.slice(2), "hex"));
27
- return "0x" + signature.toString();
28
- }
29
- async signTransaction(deferrableTransaction) {
30
- const transaction = await (0, properties_1.resolveProperties)(deferrableTransaction);
31
- const address = await this.getAddress();
32
- if (transaction.from != null) {
33
- if ((0, address_1.getAddress)(transaction.from) !== address) {
34
- this.logger.throwArgumentError("transaction from address mismatch", "transaction.from", transaction.from);
35
- }
36
- }
37
- const nonce = transaction.nonce
38
- ? bignumber_1.BigNumber.from(transaction.nonce).toNumber()
39
- : undefined;
40
- const unsignedTransaction = {
41
- to: transaction.to,
42
- nonce,
43
- gasLimit: transaction.gasLimit,
44
- gasPrice: transaction.gasPrice,
45
- data: transaction.data,
46
- value: transaction.value,
47
- chainId: transaction.chainId,
48
- type: transaction.type,
49
- accessList: transaction.accessList,
50
- maxPriorityFeePerGas: transaction.maxPriorityFeePerGas,
51
- maxFeePerGas: transaction.maxFeePerGas,
52
- };
53
- Object.keys(unsignedTransaction).forEach((key) => {
54
- if (key in unsignedTransaction && unsignedTransaction[key] == undefined) {
55
- delete unsignedTransaction[key];
56
- }
57
- });
58
- const digest = (0, keccak256_1.keccak256)((0, transactions_1.serialize)(unsignedTransaction));
59
- const signature = await this.signer.sign(Buffer.from(digest.slice(2), "hex"));
60
- const ethersSignature = (0, bytes_1.splitSignature)({
61
- v: signature.v,
62
- r: `0x${signature.r.toString("hex")}`,
63
- s: `0x${signature.s.toString("hex")}`,
64
- });
65
- return (0, transactions_1.serialize)(unsignedTransaction, ethersSignature);
66
- }
67
- connect(provider) {
68
- return new Adapter({ signer: this.signer, version: this.logger.version }, provider);
69
- }
70
- }
71
- exports.Adapter = Adapter;
@@ -1,10 +0,0 @@
1
- /// <reference types="node" />
2
- export declare class Address {
3
- private readonly buffer;
4
- private constructor();
5
- private static toAddress;
6
- static fromPublicKey(publicKey: Buffer): Address;
7
- private toChecksumAddress;
8
- toString(): string;
9
- equals(other: Address): boolean;
10
- }
@@ -1,42 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.Address = void 0;
7
- const keccak_1 = __importDefault(require("keccak"));
8
- class Address {
9
- constructor(buffer) {
10
- this.buffer = buffer;
11
- }
12
- static toAddress(publicKey) {
13
- const address = (0, keccak_1.default)("keccak256")
14
- .update(publicKey)
15
- .digest()
16
- .slice(12, 32);
17
- return address;
18
- }
19
- static fromPublicKey(publicKey) {
20
- if (publicKey.length !== 64) {
21
- throw TypeError(`Address: invalid public key. buffer length must be 64. actual: ${publicKey.length}`);
22
- }
23
- return new Address(this.toAddress(publicKey));
24
- }
25
- toChecksumAddress(address) {
26
- // EIP-55 https://github.com/ethereum/EIPs/blob/master/EIPS/eip-55.md#implementation
27
- const hash = (0, keccak_1.default)("keccak256").update(address).digest("hex");
28
- return address
29
- .split("")
30
- .map((c, i) => {
31
- return Number.parseInt(hash[i], 16) > 7 ? c.toUpperCase() : c;
32
- })
33
- .join("");
34
- }
35
- toString() {
36
- return this.toChecksumAddress(this.buffer.toString("hex"));
37
- }
38
- equals(other) {
39
- return this.buffer.equals(other.buffer);
40
- }
41
- }
42
- exports.Address = Address;
@@ -1,11 +0,0 @@
1
- /// <reference types="node" />
2
- export declare function parsePublicKey(buf: Buffer): Buffer;
3
- /**
4
- * Parse signature from the given signature.
5
- * @param buf The buffer of the signature which following ASN.1 format.
6
- * @returns The set consists of, `r` and `s`. The `r` and `s` are parsed from the given signature and converted to 32 statically sized format from ASN.1 format. For example, if there is 33-bytes unsigned integer formatted by ASN.1, it will be converted into 32-length bytes which dropped the first byte. (e.g. `00e26f7c547cf497959af070ec7c43ebdbb3e4341395912d6ccc950b43e886781b` → `e26f7c547cf497959af070ec7c43ebdbb3e4341395912d6ccc950b43e886781b`). And, if there is 31-bytes integer formatted by ASN.1, it will be padded into 32-length bytes with `0` byte. (e.g. `74e3e4d71e7385ae71042b0f99f7fbbf66e7760dd513ed2fcea754e2a9131c` → `0074e3e4d71e7385ae71042b0f99f7fbbf66e7760dd513ed2fcea754e2a9131c`).
7
- */
8
- export declare function parseSignature(buf: Buffer): {
9
- r: Buffer;
10
- s: Buffer;
11
- };
@@ -1,80 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.parseSignature = exports.parsePublicKey = void 0;
27
- const asn1js = __importStar(require("asn1js"));
28
- function toArrayBuffer(buffer) {
29
- const ab = new ArrayBuffer(buffer.length);
30
- const view = new Uint8Array(ab);
31
- for (let i = 0; i < buffer.length; ++i) {
32
- view[i] = buffer[i];
33
- }
34
- return ab;
35
- }
36
- function isUnsignedInteger(buffer) {
37
- return buffer[0] === 0;
38
- }
39
- function pad(params) {
40
- const { buffer, length, element } = params;
41
- const padding = Buffer.alloc(length - buffer.length, element);
42
- return Buffer.concat([padding, buffer]);
43
- }
44
- function parsePublicKey(buf) {
45
- const { result } = asn1js.fromBER(toArrayBuffer(buf));
46
- const values = result.valueBlock.value;
47
- const value = values[1];
48
- return Buffer.from(value.valueBlock.valueHex.slice(1));
49
- }
50
- exports.parsePublicKey = parsePublicKey;
51
- /**
52
- * Parse signature from the given signature.
53
- * @param buf The buffer of the signature which following ASN.1 format.
54
- * @returns The set consists of, `r` and `s`. The `r` and `s` are parsed from the given signature and converted to 32 statically sized format from ASN.1 format. For example, if there is 33-bytes unsigned integer formatted by ASN.1, it will be converted into 32-length bytes which dropped the first byte. (e.g. `00e26f7c547cf497959af070ec7c43ebdbb3e4341395912d6ccc950b43e886781b` → `e26f7c547cf497959af070ec7c43ebdbb3e4341395912d6ccc950b43e886781b`). And, if there is 31-bytes integer formatted by ASN.1, it will be padded into 32-length bytes with `0` byte. (e.g. `74e3e4d71e7385ae71042b0f99f7fbbf66e7760dd513ed2fcea754e2a9131c` → `0074e3e4d71e7385ae71042b0f99f7fbbf66e7760dd513ed2fcea754e2a9131c`).
55
- */
56
- function parseSignature(buf) {
57
- const { result } = asn1js.fromBER(toArrayBuffer(buf));
58
- const values = result.valueBlock.value;
59
- const getHex = (value) => Buffer.from(value.valueBlock.valueHex);
60
- let r = getHex(values[0]);
61
- let s = getHex(values[1]);
62
- if (isUnsignedInteger(r)) {
63
- r = r.slice(1);
64
- }
65
- if (isUnsignedInteger(s)) {
66
- s = s.slice(1);
67
- }
68
- r = pad({
69
- buffer: r,
70
- length: 32,
71
- element: 0,
72
- });
73
- s = pad({
74
- buffer: s,
75
- length: 32,
76
- element: 0,
77
- });
78
- return { r, s };
79
- }
80
- exports.parseSignature = parseSignature;
@@ -1,6 +0,0 @@
1
- /// <reference types="node" />
2
- export type Hash = string;
3
- export type Address = string;
4
- export declare function removeHexadecimalPrefix(x: string): string;
5
- export declare function addHexadecimalPrefix(x: string): string;
6
- export declare function recover(digest: Buffer, r: Buffer, s: Buffer, v: number): Buffer;
@@ -1,34 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.recover = exports.addHexadecimalPrefix = exports.removeHexadecimalPrefix = void 0;
7
- const secp256k1_1 = __importDefault(require("secp256k1"));
8
- function removeHexadecimalPrefix(x) {
9
- if (x.startsWith("0x")) {
10
- return x.slice(2);
11
- }
12
- return x;
13
- }
14
- exports.removeHexadecimalPrefix = removeHexadecimalPrefix;
15
- function addHexadecimalPrefix(x) {
16
- if (x.startsWith("0x")) {
17
- return x;
18
- }
19
- return `0x${x}`;
20
- }
21
- exports.addHexadecimalPrefix = addHexadecimalPrefix;
22
- function recover(digest, r, s, v) {
23
- if (r.length !== 32) {
24
- throw new Error("invalid signature length");
25
- }
26
- if (s.length !== 32) {
27
- throw new Error("invalid signature length");
28
- }
29
- const publicKey = secp256k1_1.default
30
- .ecdsaRecover(Uint8Array.from(Buffer.concat([r, s])), v, Uint8Array.from(digest), false)
31
- .slice(1);
32
- return Buffer.from(publicKey);
33
- }
34
- exports.recover = recover;
@@ -1,4 +0,0 @@
1
- export * from "./address";
2
- export * from "./signature";
3
- export * from "./kms-signer";
4
- export * from "./kms-ethers-signer";
@@ -1,20 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./address"), exports);
18
- __exportStar(require("./signature"), exports);
19
- __exportStar(require("./kms-signer"), exports);
20
- __exportStar(require("./kms-ethers-signer"), exports);
@@ -1,19 +0,0 @@
1
- import { Signer } from "@ethersproject/abstract-signer";
2
- import type { Deferrable } from "@ethersproject/properties";
3
- import type { Bytes } from "@ethersproject/bytes";
4
- import type { Provider, TransactionRequest } from "@ethersproject/abstract-provider";
5
- import type { KMSClientConfig } from "@aws-sdk/client-kms";
6
- export type KmsEthersSignerConfig = {
7
- keyId: string;
8
- kmsClientConfig?: KMSClientConfig;
9
- };
10
- export declare class KmsEthersSigner extends Signer {
11
- private readonly config;
12
- private readonly kmsSigner;
13
- private readonly adapter;
14
- constructor(config: KmsEthersSignerConfig, provider?: Provider);
15
- getAddress(): Promise<string>;
16
- signMessage(message: Bytes | string): Promise<string>;
17
- signTransaction(deferrableTransaction: Deferrable<TransactionRequest>): Promise<string>;
18
- connect(provider: Provider): KmsEthersSigner;
19
- }
@@ -1,32 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.KmsEthersSigner = void 0;
4
- const abstract_signer_1 = require("@ethersproject/abstract-signer");
5
- const properties_1 = require("@ethersproject/properties");
6
- const kms_signer_1 = require("./kms-signer");
7
- const adapter_1 = require("./adapter");
8
- // eslint-disable-next-line @typescript-eslint/no-var-requires
9
- const version = "1.0.3";
10
- class KmsEthersSigner extends abstract_signer_1.Signer {
11
- constructor(config, provider) {
12
- var _a;
13
- super();
14
- this.config = config;
15
- (0, properties_1.defineReadOnly)(this, "provider", provider);
16
- this.kmsSigner = new kms_signer_1.KmsSigner(config.keyId, (_a = config.kmsClientConfig) !== null && _a !== void 0 ? _a : {});
17
- this.adapter = new adapter_1.Adapter({ signer: this.kmsSigner, version }, provider);
18
- }
19
- async getAddress() {
20
- return this.adapter.getAddress();
21
- }
22
- async signMessage(message) {
23
- return this.adapter.signMessage(message);
24
- }
25
- async signTransaction(deferrableTransaction) {
26
- return this.adapter.signTransaction(deferrableTransaction);
27
- }
28
- connect(provider) {
29
- return new KmsEthersSigner(this.config, provider);
30
- }
31
- }
32
- exports.KmsEthersSigner = KmsEthersSigner;
@@ -1,14 +0,0 @@
1
- /// <reference types="node" />
2
- import { KMSClientConfig } from "@aws-sdk/client-kms";
3
- import { Signature } from "./signature";
4
- import { Address } from "./address";
5
- import { Signer } from "./signer";
6
- export declare class KmsSigner implements Signer {
7
- private readonly keyId;
8
- private readonly client;
9
- constructor(keyId: string, config?: KMSClientConfig);
10
- sign(digest: Buffer): Promise<Signature>;
11
- getAddress(): Promise<Address>;
12
- getPublicKey(): Promise<Buffer>;
13
- private _sign;
14
- }
@@ -1,46 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.KmsSigner = void 0;
4
- const client_kms_1 = require("@aws-sdk/client-kms");
5
- const signature_1 = require("./signature");
6
- const asn1_parser_1 = require("./asn1-parser");
7
- const address_1 = require("./address");
8
- class KmsSigner {
9
- constructor(keyId, config) {
10
- this.keyId = keyId;
11
- this.client = new client_kms_1.KMSClient(config !== null && config !== void 0 ? config : {});
12
- }
13
- async sign(digest) {
14
- const asn1Signature = await this._sign(digest);
15
- const address = await this.getAddress();
16
- const { r, s } = (0, asn1_parser_1.parseSignature)(asn1Signature);
17
- return signature_1.Signature.fromDigest(digest, address, r, s);
18
- }
19
- async getAddress() {
20
- const asn1PublicKey = await this.getPublicKey();
21
- const publicKey = (0, asn1_parser_1.parsePublicKey)(asn1PublicKey);
22
- return address_1.Address.fromPublicKey(publicKey);
23
- }
24
- async getPublicKey() {
25
- const command = new client_kms_1.GetPublicKeyCommand({ KeyId: this.keyId });
26
- const response = await this.client.send(command);
27
- if (!response.PublicKey) {
28
- throw new TypeError("PublicKey is undefined");
29
- }
30
- return Buffer.from(response.PublicKey);
31
- }
32
- async _sign(digest) {
33
- const command = new client_kms_1.SignCommand({
34
- KeyId: this.keyId,
35
- Message: digest,
36
- MessageType: "DIGEST",
37
- SigningAlgorithm: "ECDSA_SHA_256",
38
- });
39
- const response = await this.client.send(command);
40
- if (!response.Signature) {
41
- throw new TypeError("Signature is undefined");
42
- }
43
- return Buffer.from(response.Signature);
44
- }
45
- }
46
- exports.KmsSigner = KmsSigner;
@@ -1,17 +0,0 @@
1
- /// <reference types="node" />
2
- import BN from "bn.js";
3
- import { Address } from "./address";
4
- export declare const secp256k1N: BN;
5
- export declare const secp256k1halfN: BN;
6
- export declare class Signature {
7
- private readonly buffer;
8
- constructor(buffer: Buffer);
9
- static fromRSV(r: Buffer, s: Buffer, v: number): Signature;
10
- static fromDigest(digest: Buffer, address: Address, r: Buffer, s: Buffer): Signature;
11
- get r(): Buffer;
12
- get s(): Buffer;
13
- get v(): number;
14
- get recovery(): number;
15
- isCompatibleEip2(): boolean;
16
- toString(): string;
17
- }