user před 5 roky
rodič
revize
c095b97029

+ 5 - 1
__tests__/crypto.test.ts

@@ -8,7 +8,9 @@ describe('crypto-node', () => {
 
     test('should generate keypair', async () => {
       const keyPair = await cryptoNode.generateRsaKeyPair(2048);
+      const exported = keyPair.export();
       expect(keyPair).toBeDefined();
+      expect(exported).toBeDefined();
     });
 
     test('should import generated keypair and generate correct hash', async () => {
@@ -27,7 +29,9 @@ describe('forge-crypto', () => {
 
   test('should generate keypair', async () => {
     const keyPair = await cryptoNode.generateRsaKeyPair(2048);
-    expect(keyPair).toBeDefined();
+      const exported = keyPair.export();
+      expect(keyPair).toBeDefined();
+      expect(exported).toBeDefined();
   });
 
   test('should import generated keypair and generate correct hash', async () => {

+ 16 - 3
lib/crypto-forge.js

@@ -13,6 +13,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
 Object.defineProperty(exports, "__esModule", { value: true });
 const bs58_1 = __importDefault(require("bs58"));
 const node_forge_1 = require("node-forge");
+function byteBufferToNumericArray(digested) {
+    const count = digested.length();
+    const arr = [];
+    for (let i = 0; i < count; i++) {
+        arr.push(digested.getByte());
+    }
+    return arr;
+}
 class CryptoForge {
     generateRsaKeyPair(bits) {
         return new Promise((resolve, reject) => {
@@ -21,6 +29,9 @@ class CryptoForge {
                     reject(err);
                     return;
                 }
+                this.export(privateKey, publicKey).then(generated => {
+                    console.log('generated keypair', generated);
+                });
                 resolve({
                     export: () => this.export(privateKey, publicKey),
                     getPublicHash: () => this.getPublicHash(publicKey),
@@ -58,8 +69,9 @@ class CryptoForge {
         const sha256 = node_forge_1.md.sha256.create();
         const buf = node_forge_1.util.hexToBytes(publicKeyHexString);
         sha256.update(buf);
-        const digested = sha256.digest().bytes();
-        const pubHash = bs58_1.default.encode(Buffer.from(digested, 'binary'));
+        const digested = sha256.digest();
+        const arr = byteBufferToNumericArray(digested);
+        const pubHash = bs58_1.default.encode(arr);
         return pubHash;
     }
     getPublicKey(publicKeyObj) {
@@ -71,7 +83,8 @@ class CryptoForge {
             const privateKey = node_forge_1.pki.privateKeyToPem(privateKeyObj);
             const publicKey = node_forge_1.pki.publicKeyToPem(publicKeyObj);
             const jsonString = JSON.stringify({ privateKey, publicKey });
-            return bs58_1.default.encode(Buffer.from(jsonString, 'utf-8'));
+            const uint8Array = node_forge_1.util.text.utf8.encode(jsonString);
+            return bs58_1.default.encode(uint8Array);
         });
     }
 }

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 1
lib/crypto-forge.js.map


+ 6 - 5
lib/sample.js

@@ -15,13 +15,15 @@ const index_1 = require("./index");
 const storage_node_1 = require("./storage-node");
 const webclient_node_1 = require("./webclient-node");
 const host = 'http://127.0.0.1:8082';
+const ipfsHost = 'http://127.0.0.1:5001';
 const crypto_node_1 = __importDefault(require("./../src/crypto-node"));
-const bankClient = new index_1.BankClient(host, 'https://distributing.fun', new storage_node_1.StorageNode('bankClient'), new webclient_node_1.WebClientNode(), new crypto_node_1.default());
+const bankClient = new index_1.BankClient(host, ipfsHost, new storage_node_1.StorageNode('bankClient'), new webclient_node_1.WebClientNode(), new crypto_node_1.default());
 (() => __awaiter(this, void 0, void 0, function* () {
     yield bankClient.bootstrap();
     const peerId = yield bankClient.getPub();
     console.log('peerId', peerId);
-    // const balance = await bankClient.getBalance();
+    const balance = yield bankClient.getBalance();
+    console.log('my balance', balance);
     // const uploadResult = await bankClient.upload({
     //     fileData: 't2',
     //     fileName: 't3.txt',
@@ -29,7 +31,6 @@ const bankClient = new index_1.BankClient(host, 'https://distributing.fun', new
     //     title: '442a',
     //     text: 'txt'
     // });
-    // console.log('my balance', balance);
     // console.log('upl', uploadResult);
     // await bankClient.appendBank('bank:qmlink/📥', uploadResult);
     // console.log('added.');
@@ -55,8 +56,8 @@ const bankClient = new index_1.BankClient(host, 'https://distributing.fun', new
     // console.log('subscribed');
     // const starting = await bankClient.retrievePrivate('QmXRkCwxqecBMXs4DQucS9w85pW16i26tdKcZHExt9z8s5', '📤');
     // console.log('inbox contents', starting);
-    const items = yield bankClient.getItemsForCommaList('1563498096_SL_bafkreiaocpbrzrc45xdkmnwobospujpewrb4t4hk2thqqs5kldtehy62qu');
-    console.log('items', items);
+    // const items = await bankClient.getItemsForCommaList('1563498096_SL_bafkreiaocpbrzrc45xdkmnwobospujpewrb4t4hk2thqqs5kldtehy62qu');
+    // console.log('items', items);
     // setTimeout(async () => {
     // const uploadResult = await bankClient.upload({
     //     type: 'file',

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 1
lib/sample.js.map


+ 23 - 3
src/crypto-forge.ts

@@ -3,6 +3,19 @@ import { asn1, md, pki, util } from 'node-forge';
 import { ICrypto } from './crypto';
 import { IKeyPair } from './key-pair';
 
+function byteBufferToNumericArray(digested: util.ByteStringBuffer): number[] {
+  const count = digested.length();
+
+  const arr: number[] = [];
+
+  for (let i = 0; i < count; i++) {
+    arr.push(digested.getByte());
+  }
+
+  return arr;
+
+}
+
 export default class CryptoForge implements ICrypto {
 
     public generateRsaKeyPair(bits: number): Promise<IKeyPair> {
@@ -13,6 +26,10 @@ export default class CryptoForge implements ICrypto {
                     return;
                 }
 
+                this.export(privateKey, publicKey).then(generated => {
+                  console.log('generated keypair', generated);
+                });
+
                 resolve({
                     export: () => this.export(privateKey, publicKey),
                     getPublicHash: () => this.getPublicHash(publicKey),
@@ -52,8 +69,9 @@ export default class CryptoForge implements ICrypto {
         const sha256 = md.sha256.create();
         const buf = util.hexToBytes(publicKeyHexString);
         sha256.update(buf);
-        const digested = sha256.digest().bytes();
-        const pubHash = bs58.encode(Buffer.from(digested, 'binary'));
+        const digested = sha256.digest();
+        const arr = byteBufferToNumericArray(digested);
+        const pubHash = bs58.encode(arr);
         return pubHash;
       }
   
@@ -67,6 +85,8 @@ export default class CryptoForge implements ICrypto {
       const publicKey = pki.publicKeyToPem(publicKeyObj);
 
         const jsonString = JSON.stringify({privateKey, publicKey});
-        return bs58.encode(Buffer.from(jsonString, 'utf-8'));
+        const uint8Array = util.text.utf8.encode(jsonString);
+
+        return bs58.encode(uint8Array);
     }
 }

+ 7 - 5
src/sample.ts

@@ -2,15 +2,17 @@ import { BankClient } from './index';
 import { StorageNode } from './storage-node';
 import { WebClientNode } from './webclient-node';
 const host = 'http://127.0.0.1:8082';
+const ipfsHost = 'http://127.0.0.1:5001';
 import CryptoNode from './../src/crypto-node';
 
-const bankClient = new BankClient(host, 'https://distributing.fun', new StorageNode('bankClient'), new WebClientNode(), new CryptoNode());
+const bankClient = new BankClient(host, ipfsHost, new StorageNode('bankClient'), new WebClientNode(), new CryptoNode());
 
 (async () => {
     await bankClient.bootstrap();
     const peerId = await bankClient.getPub();
     console.log('peerId', peerId);
-    // const balance = await bankClient.getBalance();
+    const balance = await bankClient.getBalance();
+    console.log('my balance', balance);
     // const uploadResult = await bankClient.upload({
     //     fileData: 't2',
     //     fileName: 't3.txt',
@@ -18,7 +20,7 @@ const bankClient = new BankClient(host, 'https://distributing.fun', new StorageN
     //     title: '442a',
     //     text: 'txt'
     // });
-    // console.log('my balance', balance);
+    
     // console.log('upl', uploadResult);
     // await bankClient.appendBank('bank:qmlink/📥', uploadResult);
     // console.log('added.');
@@ -46,8 +48,8 @@ const bankClient = new BankClient(host, 'https://distributing.fun', new StorageN
     // const starting = await bankClient.retrievePrivate('QmXRkCwxqecBMXs4DQucS9w85pW16i26tdKcZHExt9z8s5', '📤');
     // console.log('inbox contents', starting);
 
-    const items = await bankClient.getItemsForCommaList('1563498096_SL_bafkreiaocpbrzrc45xdkmnwobospujpewrb4t4hk2thqqs5kldtehy62qu');
-    console.log('items', items);
+    // const items = await bankClient.getItemsForCommaList('1563498096_SL_bafkreiaocpbrzrc45xdkmnwobospujpewrb4t4hk2thqqs5kldtehy62qu');
+    // console.log('items', items);
 
     // setTimeout(async () => {
     // const uploadResult = await bankClient.upload({