mist-chainz-client 1.0.3 → 1.0.5
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/MistClient.d.ts +6 -0
- package/dist/MistClient.d.ts.map +1 -1
- package/dist/MistClient.js +56 -8
- package/dist/MistClient.js.map +1 -1
- package/package.json +1 -1
package/dist/MistClient.d.ts
CHANGED
|
@@ -42,5 +42,11 @@ export declare class MistClient {
|
|
|
42
42
|
cipher: string;
|
|
43
43
|
};
|
|
44
44
|
private sign;
|
|
45
|
+
generateKeyPair(): Promise<{
|
|
46
|
+
publicKey: string;
|
|
47
|
+
privateKey: string;
|
|
48
|
+
}>;
|
|
49
|
+
private signData;
|
|
50
|
+
private verifySignature;
|
|
45
51
|
}
|
|
46
52
|
//# sourceMappingURL=MistClient.d.ts.map
|
package/dist/MistClient.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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;
|
|
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;IAkBrF,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;IAWN,eAAe,IAAI,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;YAY/D,QAAQ;YAiBR,eAAe;CAgB5B"}
|
package/dist/MistClient.js
CHANGED
|
@@ -63,9 +63,9 @@ class MistClient {
|
|
|
63
63
|
fs.writeFileSync(this.storePath, JSON.stringify(store, null, 2), 'utf8');
|
|
64
64
|
}
|
|
65
65
|
async createWallet() {
|
|
66
|
-
const {
|
|
67
|
-
this.wallet =
|
|
68
|
-
return
|
|
66
|
+
const { publicKey, privateKey } = await this.generateKeyPair();
|
|
67
|
+
this.wallet = { address: publicKey, privateKey };
|
|
68
|
+
return this.wallet;
|
|
69
69
|
}
|
|
70
70
|
async createTransaction(rawTransaction) {
|
|
71
71
|
if (!this.wallet)
|
|
@@ -94,11 +94,14 @@ class MistClient {
|
|
|
94
94
|
return data;
|
|
95
95
|
}
|
|
96
96
|
async validateTransaction(transactionId, rawData) {
|
|
97
|
-
const
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
97
|
+
const transaction = await this.getTransaction(transactionId);
|
|
98
|
+
const { cipher } = this.encrypt(rawData);
|
|
99
|
+
const updatedOutputMap = {
|
|
100
|
+
...transaction.outputMap,
|
|
101
|
+
data: { ...transaction.outputMap.data, cipher },
|
|
102
|
+
};
|
|
103
|
+
const isValid = await this.verifySignature(transaction.input.address, updatedOutputMap, transaction.input.signature);
|
|
104
|
+
return { transactionId, isValid };
|
|
102
105
|
}
|
|
103
106
|
getTransactionUuid(objectId) {
|
|
104
107
|
const store = this._readStore();
|
|
@@ -123,6 +126,51 @@ class MistClient {
|
|
|
123
126
|
signer.update(JSON.stringify(data));
|
|
124
127
|
return signer.sign(key, 'hex');
|
|
125
128
|
}
|
|
129
|
+
async generateKeyPair() {
|
|
130
|
+
const { publicKey, privateKey } = crypto_1.default.generateKeyPairSync('ec', {
|
|
131
|
+
namedCurve: 'prime256v1',
|
|
132
|
+
publicKeyEncoding: { type: 'spki', format: 'der' },
|
|
133
|
+
privateKeyEncoding: { type: 'pkcs8', format: 'der' },
|
|
134
|
+
});
|
|
135
|
+
return {
|
|
136
|
+
publicKey: publicKey.toString('base64'),
|
|
137
|
+
privateKey: privateKey.toString('base64'),
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
async signData(privateKey, data) {
|
|
141
|
+
try {
|
|
142
|
+
const keyObject = crypto_1.default.createPrivateKey({
|
|
143
|
+
key: Buffer.from(privateKey, 'base64'),
|
|
144
|
+
format: 'der',
|
|
145
|
+
type: 'pkcs8',
|
|
146
|
+
});
|
|
147
|
+
const signer = crypto_1.default.createSign('sha256');
|
|
148
|
+
const dataString = typeof data === 'string' ? data : JSON.stringify(data);
|
|
149
|
+
signer.update(dataString);
|
|
150
|
+
return signer.sign(keyObject, 'hex');
|
|
151
|
+
}
|
|
152
|
+
catch (error) {
|
|
153
|
+
console.error('Error signing data:', error);
|
|
154
|
+
throw new Error('Failed to sign data');
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
async verifySignature(publicKey, data, signature) {
|
|
158
|
+
try {
|
|
159
|
+
const keyObject = crypto_1.default.createPublicKey({
|
|
160
|
+
key: Buffer.from(publicKey, 'base64'),
|
|
161
|
+
format: 'der',
|
|
162
|
+
type: 'spki',
|
|
163
|
+
});
|
|
164
|
+
const verifier = crypto_1.default.createVerify('sha256');
|
|
165
|
+
const dataString = typeof data === 'string' ? data : JSON.stringify(data);
|
|
166
|
+
verifier.update(dataString);
|
|
167
|
+
return verifier.verify(keyObject, signature, 'hex');
|
|
168
|
+
}
|
|
169
|
+
catch (error) {
|
|
170
|
+
console.error('Error verifying signature:', error);
|
|
171
|
+
return false;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
126
174
|
}
|
|
127
175
|
exports.MistClient = MistClient;
|
|
128
176
|
//# sourceMappingURL=MistClient.js.map
|
package/dist/MistClient.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MistClient.js","sourceRoot":"","sources":["../src/MistClient.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAA6C;AAC7C,oDAA4B;AAC5B,uCAAyB;AACzB,2CAA6B;AAC7B,qCAAkD;AAClD,MAAM,kBAAkB,GACtB,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,iEAAiE,CAAC;AAsC3F,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,
|
|
1
|
+
{"version":3,"file":"MistClient.js","sourceRoot":"","sources":["../src/MistClient.ts"],"names":[],"mappings":"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"}
|