mist-chainz-client 1.0.2 → 1.0.3

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.
@@ -15,8 +15,7 @@ export interface Transaction {
15
15
  data: any;
16
16
  };
17
17
  }
18
- export interface CreateTransactionBody {
19
- senderAddress: string;
18
+ export interface RawTransaction {
20
19
  recipient: string;
21
20
  data: Record<string, any> & {
22
21
  id: string;
@@ -35,9 +34,13 @@ export declare class MistClient {
35
34
  private _readStore;
36
35
  private _writeStore;
37
36
  createWallet(): Promise<Wallet>;
38
- createTransaction(body: CreateTransactionBody): Promise<Transaction>;
37
+ createTransaction(rawTransaction: RawTransaction): Promise<Transaction>;
39
38
  getTransaction(transactionId: string): Promise<Transaction>;
40
39
  validateTransaction(transactionId: string, rawData: any): Promise<VerifyResult>;
41
40
  getTransactionUuid(objectId: string): string | null;
41
+ encrypt(data: unknown): {
42
+ cipher: string;
43
+ };
44
+ private sign;
42
45
  }
43
46
  //# sourceMappingURL=MistClient.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MistClient.d.ts","sourceRoot":"","sources":["../src/MistClient.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,MAAM;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE;QACL,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,SAAS,EAAE;QACT,WAAW,EAAE,MAAM,CAAC;QACpB,IAAI,EAAE,GAAG,CAAC;KACX,CAAC;CACH;AAED,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5C;AAED,MAAM,WAAW,YAAY;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,IAAI,CAAgB;IAC5B,OAAO,CAAC,SAAS,CAAS;IACnB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAQ;gBAExB,OAAO,EAAE,MAAM,EAAE,aAAa,GAAE,MAA+B;IAM3E,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,UAAU;IAKlB,OAAO,CAAC,WAAW;IAIb,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAM/B,iBAAiB,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,WAAW,CAAC;IAQpE,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAK3D,mBAAmB,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC;IAQrF,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;CAIpD"}
1
+ {"version":3,"file":"MistClient.d.ts","sourceRoot":"","sources":["../src/MistClient.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,MAAM;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE;QACL,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,SAAS,EAAE;QACT,WAAW,EAAE,MAAM,CAAC;QACpB,IAAI,EAAE,GAAG,CAAC;KACX,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5C;AAED,MAAM,WAAW,YAAY;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;CAClB;AASD,qBAAa,UAAU;IACrB,OAAO,CAAC,IAAI,CAAgB;IAC5B,OAAO,CAAC,SAAS,CAAS;IACnB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAQ;gBAExB,OAAO,EAAE,MAAM,EAAE,aAAa,GAAE,MAA+B;IAM3E,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,UAAU;IAKlB,OAAO,CAAC,WAAW;IAIb,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAM/B,iBAAiB,CAAC,cAAc,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC;IA4BvE,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAK3D,mBAAmB,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC;IAQrF,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAKnD,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE;IAU1C,OAAO,CAAC,IAAI;CAUb"}
@@ -38,9 +38,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.MistClient = void 0;
40
40
  const axios_1 = __importDefault(require("axios"));
41
+ const crypto_1 = __importDefault(require("crypto"));
41
42
  const fs = __importStar(require("fs"));
42
43
  const path = __importStar(require("path"));
43
44
  const config_1 = require("./config");
45
+ const AES_ENCRYPTION_KEY = process.env.AES_KEY ?? 'a3f8e2d14c7b6509f0e21a34b56c78d90e1f2a3b4c5d6e7f8091a2b3c4d5e6f';
44
46
  class MistClient {
45
47
  constructor(baseUrl, storeFilename = config_1.DEFAULT_STORE_FILENAME) {
46
48
  this.wallet = null;
@@ -65,10 +67,25 @@ class MistClient {
65
67
  this.wallet = data;
66
68
  return data;
67
69
  }
68
- async createTransaction(body) {
69
- const { data: transaction } = await this.http.post('/transactions', body);
70
+ async createTransaction(rawTransaction) {
71
+ if (!this.wallet)
72
+ throw new Error('No wallet loaded. Call createWallet() first.');
73
+ const outputMap = {
74
+ destination: rawTransaction.recipient,
75
+ data: this.encrypt(rawTransaction.data),
76
+ };
77
+ const signature = this.sign(this.wallet.privateKey, outputMap);
78
+ const signedTransaction = {
79
+ input: {
80
+ timestamp: Date.now(),
81
+ address: this.wallet.address,
82
+ signature,
83
+ },
84
+ outputMap,
85
+ };
86
+ const { data: transaction } = await this.http.post('/transactions/receive', signedTransaction);
70
87
  const store = this._readStore();
71
- store[body.data.id] = transaction.id;
88
+ store[rawTransaction.data.id] = transaction.id;
72
89
  this._writeStore(store);
73
90
  return transaction;
74
91
  }
@@ -87,6 +104,25 @@ class MistClient {
87
104
  const store = this._readStore();
88
105
  return store[objectId] ?? null;
89
106
  }
107
+ encrypt(data) {
108
+ //const key = this._loadOrCreateKey();
109
+ const iv = crypto_1.default.randomBytes(12);
110
+ const c = crypto_1.default.createCipheriv('aes-256-gcm', AES_ENCRYPTION_KEY, iv);
111
+ const plaintext = Buffer.from(JSON.stringify(data), 'utf-8');
112
+ const ciphertext = Buffer.concat([c.update(plaintext), c.final()]);
113
+ const authTag = c.getAuthTag();
114
+ return { cipher: Buffer.concat([iv, authTag, ciphertext]).toString('base64') };
115
+ }
116
+ sign(privateKeyBase64, data) {
117
+ const key = crypto_1.default.createPrivateKey({
118
+ key: Buffer.from(privateKeyBase64, 'base64'),
119
+ format: 'der',
120
+ type: 'pkcs8',
121
+ });
122
+ const signer = crypto_1.default.createSign('sha256');
123
+ signer.update(JSON.stringify(data));
124
+ return signer.sign(key, 'hex');
125
+ }
90
126
  }
91
127
  exports.MistClient = MistClient;
92
128
  //# sourceMappingURL=MistClient.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MistClient.js","sourceRoot":"","sources":["../src/MistClient.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAA6C;AAC7C,uCAAyB;AACzB,2CAA6B;AAC7B,qCAAkD;AAgClD,MAAa,UAAU;IAKrB,YAAY,OAAe,EAAE,gBAAwB,+BAAsB;QAFpE,WAAM,GAAkB,IAAI,CAAC;QAGlC,IAAI,CAAC,IAAI,GAAG,eAAK,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAC7C,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YACnC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAEO,UAAU;QAChB,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAA2B,CAAC;IACnD,CAAC;IAEO,WAAW,CAAC,KAA6B;QAC/C,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAS,iBAAiB,CAAC,CAAC;QACjE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,IAA2B;QACjD,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAc,eAAe,EAAE,IAAI,CAAC,CAAC;QACvF,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,EAAE,CAAC;QACrC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACxB,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,aAAqB;QACxC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAc,iBAAiB,aAAa,EAAE,CAAC,CAAC;QACpF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,aAAqB,EAAE,OAAY;QAC3D,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAe,+BAA+B,EAAE;YACnF,aAAa;YACb,OAAO;SACR,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,kBAAkB,CAAC,QAAgB;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAChC,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC;IACjC,CAAC;CACF;AAzDD,gCAyDC"}
1
+ {"version":3,"file":"MistClient.js","sourceRoot":"","sources":["../src/MistClient.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  export { MistClient } from './MistClient';
2
- export type { Wallet, Transaction, CreateTransactionBody, VerifyResult } from './MistClient';
2
+ export type { Wallet, Transaction, RawTransaction, VerifyResult } from './MistClient';
3
3
  export { DEFAULT_STORE_FILENAME } from './config';
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC7F,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACtF,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mist-chainz-client",
3
- "version": "1.0.2",
3
+ "version": "1.0.3",
4
4
  "description": "TypeScript client library for the GGL-DS-MIST blockchain system",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -20,7 +20,8 @@
20
20
  "author": "",
21
21
  "license": "ISC",
22
22
  "dependencies": {
23
- "axios": "^1.7.9"
23
+ "axios": "^1.7.9",
24
+ "crypto": "^1.0.1"
24
25
  },
25
26
  "devDependencies": {
26
27
  "@types/node": "^22.20.0",