Compare commits

...

10 Commits

Author SHA1 Message Date
dignifiedquire
fba4d3cc0f chore: release version v0.4.0 2016-05-23 12:38:14 +02:00
dignifiedquire
d8f8717a16 chore: update contributors 2016-05-23 12:38:14 +02:00
Friedel Ziegelmayer
6b4a1ab7a3 Merge pull request #1 from ipfs/fixes
fix: some issues found when using in libp2p-secio
2016-05-23 12:36:53 +02:00
Friedel Ziegelmayer
18810aca86 fix: some issues found when using in libp2p-secio 2016-05-23 12:31:45 +02:00
Friedel Ziegelmayer
1f4823e202 chore: release version v0.3.1 2016-05-20 16:28:37 +02:00
Friedel Ziegelmayer
c33530186a chore: update contributors 2016-05-20 16:28:37 +02:00
Friedel Ziegelmayer
87a30e2e9b fix: workaround missing sha512 support in forge.hmac 2016-05-20 16:27:11 +02:00
Friedel Ziegelmayer
3037541d3c chore: release version v0.3.0 2016-05-20 16:05:12 +02:00
Friedel Ziegelmayer
c586a8825b chore: update contributors 2016-05-20 16:05:12 +02:00
Friedel Ziegelmayer
b07bca569c fix package name 2016-05-20 16:03:54 +02:00
6 changed files with 40 additions and 10 deletions

View File

@@ -1,6 +1,6 @@
{
"name": "js-libp2p-crypto",
"version": "0.2.0",
"name": "libp2p-crypto",
"version": "0.4.0",
"description": "Crypto primitives for libp2p",
"main": "lib/index.js",
"jsnext:main": "src/index.js",

View File

@@ -30,7 +30,7 @@ module.exports = (curveName) => {
}
return {
key: priv.getPublic(),
key: new Buffer(priv.getPublic('hex'), 'hex'),
genSharedKey
}
}

View File

@@ -21,7 +21,8 @@ const cipherMap = {
const hashMap = {
SHA1: 'sha1',
SHA256: 'sha256',
SHA512: 'sha512'
// workaround for https://github.com/digitalbazaar/forge/issues/401
SHA512: forge.md.sha512.create()
}
// Generates a set of keys for each party by stretching the shared key.

View File

@@ -19,7 +19,11 @@ class RsaPublicKey {
verify (data, sig) {
const md = forge.md.sha256.create()
md.update(data, 'utf8')
if (Buffer.isBuffer(data)) {
md.update(data.toString('binary'), 'binary')
} else {
md.update(data)
}
return this._key.verify(md.digest().bytes(), sig)
}
@@ -60,9 +64,13 @@ class RsaPrivateKey {
sign (message) {
const md = forge.md.sha256.create()
md.update(message, 'utf8')
return this._privateKey.sign(md)
if (Buffer.isBuffer(message)) {
md.update(message.toString('binary'), 'binary')
} else {
md.update(message)
}
const raw = this._privateKey.sign(md, 'RSASSA-PKCS1-V1_5')
return new Buffer(raw, 'binary')
}
get public () {

View File

@@ -9,8 +9,7 @@ const fixtures = require('./fixtures/go-stretch-key')
describe('keyStretcher', () => {
describe('generate', () => {
const ciphers = ['AES-128', 'AES-256', 'Blowfish']
const hashes = ['SHA1', 'SHA256']
// add 'SHA512' when https://github.com/digitalbazaar/forge/issues/401 is resolved
const hashes = ['SHA1', 'SHA256', 'SHA512']
const res = crypto.generateEphemeralKeyPair('P-256')
const secret = res.genSharedKey(res.key)

View File

@@ -112,4 +112,26 @@ describe('RSA', () => {
})
})
})
it('sign and verify', () => {
const data = new Buffer('hello world')
const sig = key.sign(data)
expect(
key.public.verify(data, sig)
).to.be.eql(
true
)
})
it('does fails to verify for different data', () => {
const data = new Buffer('hello world')
const sig = key.sign(data)
expect(
key.public.verify(new Buffer('hello'), sig)
).to.be.eql(
false
)
})
})