mirror of
https://github.com/fluencelabs/js-libp2p-crypto
synced 2025-04-02 03:41:16 +00:00
96 lines
2.5 KiB
JavaScript
96 lines
2.5 KiB
JavaScript
/* eslint max-nested-callbacks: ["error", 8] */
|
|
/* eslint-env mocha */
|
|
'use strict'
|
|
|
|
const expect = require('chai').expect
|
|
const crypto = require('../src')
|
|
const fixtures = require('./fixtures/go-elliptic-key')
|
|
|
|
const curves = ['P-256', 'P-384', 'P-521']
|
|
// const lengths = {
|
|
// 'P-256': 32,
|
|
// 'P-384': 48,
|
|
// 'P-521': 65
|
|
// }
|
|
|
|
describe('generateEphemeralKeyPair', () => {
|
|
curves.forEach((curve) => {
|
|
it(`generate and shared key ${curve}`, (done) => {
|
|
crypto.generateEphemeralKeyPair(curve, (err, ours) => {
|
|
if (err) {
|
|
return done(err)
|
|
}
|
|
|
|
crypto.generateEphemeralKeyPair(curve, (err, theirs) => {
|
|
if (err) {
|
|
return done(err)
|
|
}
|
|
|
|
ours.genSharedKey(theirs.key, (err, shared) => {
|
|
if (err) {
|
|
return done(err)
|
|
}
|
|
|
|
expect(shared).to.exist
|
|
// expect(shared).to.have.length(lengths[curve])
|
|
expect(ours.key).to.exist
|
|
done()
|
|
})
|
|
})
|
|
})
|
|
})
|
|
})
|
|
|
|
describe.skip('go interop', () => {
|
|
it('generates a shared secret', (done) => {
|
|
const curve = fixtures.curve
|
|
console.log('start', curve)
|
|
// crypto.webcrypto.subtle.importKey(
|
|
// 'pkcs8',
|
|
// Uint8Array.from(fixtures.bob.private),
|
|
// {
|
|
// name: 'ECDH',
|
|
// namedCurve: curve
|
|
// },
|
|
// false,
|
|
// ['deriveBits']
|
|
// ).then((bobPrivate) => {
|
|
// console.log('imported bobs key')
|
|
// checkKeys(bobPrivate)
|
|
// }).catch((err) => {
|
|
// done(err)
|
|
// })
|
|
checkKeys()
|
|
function checkKeys (bobPrivate) {
|
|
crypto.generateEphemeralKeyPair(curve, (err, alice) => {
|
|
if (err) {
|
|
return done(err)
|
|
}
|
|
console.log('genreated ephem pair')
|
|
const bob = {
|
|
key: fixtures.bob.public,
|
|
// this is using bobs private key from go ipfs
|
|
// instead of alices
|
|
genSharedKey: (key, cb) => alice.genSharedKey(key, bobPrivate, cb)
|
|
}
|
|
|
|
alice.genSharedKey(bob.key, (err, s1) => {
|
|
if (err) {
|
|
return done(err)
|
|
}
|
|
console.log('genshared alice')
|
|
bob.genSharedKey(alice.key, (err, s2) => {
|
|
if (err) {
|
|
return done(err)
|
|
}
|
|
console.log('genshared bob')
|
|
expect(s1.equals(s2)).to.be.eql(true)
|
|
done()
|
|
})
|
|
})
|
|
})
|
|
}
|
|
})
|
|
})
|
|
})
|