From 0132590829d575fa09fe0136ac8fe92edead9fb7 Mon Sep 17 00:00:00 2001 From: morrigan Date: Mon, 4 Nov 2019 17:06:31 +0100 Subject: [PATCH] Write test and resolve babel and ts compilation --- package.json | 8 ++++++-- src/xx.ts | 12 ++++++++---- test/xx.test.ts | 24 ++++++++++++++++++++++++ tsconfig.json | 8 +++++--- yarn.lock | 26 ++++++++++++++++++++++++-- 5 files changed, 67 insertions(+), 11 deletions(-) create mode 100644 test/xx.test.ts diff --git a/package.json b/package.json index cd740d7..a65556d 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "js-libp2p-noise", "version": "1.0.0", - "main": "index.js", + "main": "index", "repository": "git@github.com:NodeFactoryIo/js-libp2p-noise.git", "author": "NodeFactory ", "license": "MIT", @@ -16,9 +16,11 @@ "devDependencies": { "@babel/cli": "^7.6.4", "@babel/core": "^7.6.4", + "@babel/plugin-transform-runtime": "^7.6.2", "@babel/preset-env": "^7.6.3", "@babel/preset-typescript": "^7.6.0", "@babel/register": "^7.6.2", + "@babel/runtime": "^7.6.3", "@types/chai": "^4.2.4", "@types/mocha": "^5.2.7", "@typescript-eslint/eslint-plugin": "^2.6.0", @@ -34,7 +36,9 @@ "@babel/preset-env", "@babel/preset-typescript" ], - "plugins": [] + "plugins": [ + "@babel/plugin-transform-runtime" + ] }, "dependencies": { "bcrypto": "^4.2.3", diff --git a/src/xx.ts b/src/xx.ts index 0ac75b5..afd5097 100644 --- a/src/xx.ts +++ b/src/xx.ts @@ -1,9 +1,9 @@ import {bytes32, bytes16, uint32, uint64, bytes} from './types/basic' import { Buffer } from 'buffer'; import * as crypto from 'libp2p-crypto'; -import AEAD from 'bcrypto/aead-browser'; +import AEAD from 'bcrypto'; -interface KeyPair { +export interface KeyPair { publicKey: bytes32, privateKey: bytes32, } @@ -51,6 +51,7 @@ export class XXHandshake { const ss = await this.initializeSymmetric(name); await this.mixHash(ss, prologue); + // @ts-ignore-next-line return {ss, s, e, rs, re, psk}; } @@ -61,6 +62,7 @@ export class XXHandshake { const ss = await this.initializeSymmetric(name); await this.mixHash(ss, prologue); + // @ts-ignore-next-line return {ss, s, e, rs, re, psk}; } @@ -151,8 +153,10 @@ export class XXHandshake { return await crypto.hmac.create('sha256', Buffer.from([...a, ...b])) } - public async initSession(initiator: boolean, prologue: bytes32[], s: KeyPair, rs: bytes32) : Promise { - let session: NoiseSession; + public async initSession(initiator: boolean, prologue: bytes32, s: KeyPair, rs: bytes32) : Promise { + // TODO: Create noisesession object/class + // @ts-ignore-next-line + let session: NoiseSession = {}; const psk = this.createEmptyKey(); if (initiator) { diff --git a/test/xx.test.ts b/test/xx.test.ts new file mode 100644 index 0000000..5fd43b4 --- /dev/null +++ b/test/xx.test.ts @@ -0,0 +1,24 @@ +import { expect } from "chai"; +import { Buffer } from 'buffer'; +import * as crypto from 'libp2p-crypto'; + +import { XXHandshake, KeyPair } from "../src/xx"; + +// TODO: Move this to some protocol related file +async function generateKeypair() : Promise { + return await crypto.keys.generateKeyPair('ed25519'); +} + +describe("Index", () => { + const prologue = Buffer.from("/noise", "utf-8"); + + it("Test creating new XX session", async () => { + const kpInitiator: KeyPair = await generateKeypair(); + const kpResponder: KeyPair = await generateKeypair(); + + const xx = new XXHandshake(); + + const session = await xx.initSession(true, prologue, kpInitiator, kpResponder.publicKey); + console.log(session) + }) +}); diff --git a/tsconfig.json b/tsconfig.json index dd6aa73..f2a3ef9 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -4,13 +4,15 @@ "module": "commonjs", "strict": true, "esModuleInterop": true, + "noImplicitAny": false, "typeRoots": [ "./node_modules/@types" - ], - "include": [ - "./node_modules/bn.js-typings/index.d.ts" ] }, + "include": [ + "**/src/**/*.ts", + "./node_modules/bn.js-typings/index.d.ts" + ], "exclude": [ "node_modules" ] diff --git a/yarn.lock b/yarn.lock index 06bd243..4d57bf8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -538,6 +538,16 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" +"@babel/plugin-transform-runtime@^7.6.2": + version "7.6.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.6.2.tgz#2669f67c1fae0ae8d8bf696e4263ad52cb98b6f8" + integrity sha512-cqULw/QB4yl73cS5Y0TZlQSjDvNkzDbu0FurTZyHlJpWE5T3PCMdnyV+xXoH1opr1ldyHODe3QAX3OMAii5NxA== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + resolve "^1.8.1" + semver "^5.5.1" + "@babel/plugin-transform-shorthand-properties@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz#6333aee2f8d6ee7e28615457298934a3b46198f0" @@ -668,6 +678,13 @@ pirates "^4.0.0" source-map-support "^0.5.9" +"@babel/runtime@^7.6.3": + version "7.6.3" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.6.3.tgz#935122c74c73d2240cafd32ddb5fc2a6cd35cf1f" + integrity sha512-kq6anf9JGjW8Nt5rYfEuGRaEAaH1mkv3Bbu6rYvLOpPh/RusSJXuKPEAoZ7L7gybZkchE8+NV5g9vKF4AGAtsA== + dependencies: + regenerator-runtime "^0.13.2" + "@babel/template@^7.1.0", "@babel/template@^7.4.4", "@babel/template@^7.6.0": version "7.6.0" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.6.0.tgz#7f0159c7f5012230dad64cca42ec9bdb5c9536e6" @@ -3038,6 +3055,11 @@ regenerate@^1.4.0: resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== +regenerator-runtime@^0.13.2: + version "0.13.3" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz#7cf6a77d8f5c6f60eb73c5fc1955b2ceb01e6bf5" + integrity sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw== + regenerator-transform@^0.14.0: version "0.14.1" resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.1.tgz#3b2fce4e1ab7732c08f665dfdb314749c7ddd2fb" @@ -3117,7 +3139,7 @@ resolve-url@^0.2.1: resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= -resolve@^1.3.2: +resolve@^1.3.2, resolve@^1.8.1: version "1.12.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6" integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w== @@ -3229,7 +3251,7 @@ secp256k1@^3.6.2: nan "^2.14.0" safe-buffer "^5.1.2" -semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.6.0, semver@^5.7.0: +semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==