Skip to content
This repository has been archived by the owner on Jul 21, 2023. It is now read-only.

Commit

Permalink
chore: upgrades to new multiformats module (#192)
Browse files Browse the repository at this point in the history
Removes multibase/multicodec/multihashing in favour of the implementations
in the new multiformats module.
  • Loading branch information
achingbrain committed Jul 7, 2021
1 parent 117b520 commit 94966df
Show file tree
Hide file tree
Showing 18 changed files with 51 additions and 86 deletions.
15 changes: 3 additions & 12 deletions package.json
Expand Up @@ -43,10 +43,7 @@
"is-typedarray": "^1.0.0",
"iso-random-stream": "^2.0.0",
"keypair": "^1.0.1",
"multibase": "^4.0.3",
"multicodec": "^3.0.1",
"multihashes": "^4.0.2",
"multihashing-async": "^2.1.2",
"multiformats": "^9.1.2",
"node-forge": "^0.10.0",
"pem-jwk": "^2.0.0",
"protobufjs": "^6.10.2",
Expand All @@ -55,21 +52,15 @@
"ursa-optional": "^0.10.1"
},
"devDependencies": {
"@types/chai": "^4.2.12",
"@types/chai-string": "^1.4.2",
"@types/dirty-chai": "^2.0.2",
"@types/mocha": "^8.0.1",
"aegir": "^33.0.0",
"benchmark": "^2.1.4",
"chai": "^4.2.0",
"chai-string": "^1.5.0",
"dirty-chai": "^2.0.1",
"sinon": "^10.0.0",
"sinon": "^11.1.1",
"util": "^0.12.3"
},
"aegir": {
"build": {
"bundlesizeMax": "118kB"
"bundlesizeMax": "116kB"
}
},
"engines": {
Expand Down
23 changes: 14 additions & 9 deletions src/keys/ed25519-class.js
@@ -1,9 +1,10 @@
'use strict'

const sha = require('multihashing-async/src/sha')
const errcode = require('err-code')
const uint8ArrayEquals = require('uint8arrays/equals')
const mh = require('multihashes')
const { sha256 } = require('multiformats/hashes/sha2')
const { base58btc } = require('multiformats/bases/base58')
const { identity } = require('multiformats/hashes/identity')
const crypto = require('./ed25519')
const pbm = require('./keys')
const exporter = require('./exporter')
Expand Down Expand Up @@ -32,8 +33,10 @@ class Ed25519PublicKey {
return uint8ArrayEquals(this.bytes, key.bytes)
}

async hash () { // eslint-disable-line require-await
return sha.multihashing(this.bytes, 'sha2-256')
async hash () {
const { bytes } = await sha256.digest(this.bytes)

return bytes
}
}

Expand Down Expand Up @@ -68,22 +71,24 @@ class Ed25519PrivateKey {
return uint8ArrayEquals(this.bytes, key.bytes)
}

async hash () { // eslint-disable-line require-await
return sha.multihashing(this.bytes, 'sha2-256')
async hash () {
const { bytes } = await sha256.digest(this.bytes)

return bytes
}

/**
* Gets the ID of the key.
*
* The key id is the base58 encoding of the SHA-256 multihash of its public key.
* The key id is the base58 encoding of the identity multihash containing its public key.
* The public key is a protobuf encoding containing a type and the DER encoding
* of the PKCS SubjectPublicKeyInfo.
*
* @returns {Promise<string>}
*/
async id () {
const encoding = mh.encode(this.public.bytes, 'identity')
return await mh.toB58String(encoding)
const encoding = await identity.digest(this.public.bytes)
return base58btc.encode(encoding.bytes).substring(1)
}

/**
Expand Down
14 changes: 9 additions & 5 deletions src/keys/rsa-class.js
@@ -1,6 +1,6 @@
'use strict'

const sha = require('multihashing-async/src/sha')
const { sha256 } = require('multiformats/hashes/sha2')
const errcode = require('err-code')
const uint8ArrayEquals = require('uint8arrays/equals')
const uint8ArrayToString = require('uint8arrays/to-string')
Expand Down Expand Up @@ -41,8 +41,10 @@ class RsaPublicKey {
return uint8ArrayEquals(this.bytes, key.bytes)
}

async hash () { // eslint-disable-line require-await
return sha.multihashing(this.bytes, 'sha2-256')
async hash () {
const { bytes } = await sha256.digest(this.bytes)

return bytes
}
}

Expand Down Expand Up @@ -89,8 +91,10 @@ class RsaPrivateKey {
return uint8ArrayEquals(this.bytes, key.bytes)
}

async hash () { // eslint-disable-line require-await
return sha.multihashing(this.bytes, 'sha2-256')
async hash () {
const { bytes } = await sha256.digest(this.bytes)

return bytes
}

/**
Expand Down
14 changes: 9 additions & 5 deletions src/keys/secp256k1-class.js
@@ -1,6 +1,6 @@
'use strict'

const sha = require('multihashing-async/src/sha')
const { sha256 } = require('multiformats/hashes/sha2')
const errcode = require('err-code')
const uint8ArrayEquals = require('uint8arrays/equals')
const uint8ArrayToString = require('uint8arrays/to-string')
Expand Down Expand Up @@ -35,8 +35,10 @@ module.exports = (keysProtobuf, randomBytes, crypto) => {
return uint8ArrayEquals(this.bytes, key.bytes)
}

hash () {
return sha.multihashing(this.bytes, 'sha2-256')
async hash () {
const { bytes } = await sha256.digest(this.bytes)

return bytes
}
}

Expand Down Expand Up @@ -71,8 +73,10 @@ module.exports = (keysProtobuf, randomBytes, crypto) => {
return uint8ArrayEquals(this.bytes, key.bytes)
}

hash () {
return sha.multihashing(this.bytes, 'sha2-256')
async hash () {
const { bytes } = await sha256.digest(this.bytes)

return bytes
}

/**
Expand Down
7 changes: 3 additions & 4 deletions src/keys/secp256k1.js
@@ -1,8 +1,7 @@
'use strict'

const secp256k1 = require('secp256k1')
const sha = require('multihashing-async/src/sha')
const HASH_ALGORITHM = 'sha2-256'
const { sha256 } = require('multiformats/hashes/sha2')

module.exports = (randomBytes) => {
const privateKeyLength = 32
Expand All @@ -16,13 +15,13 @@ module.exports = (randomBytes) => {
}

async function hashAndSign (key, msg) {
const digest = await sha.digest(msg, HASH_ALGORITHM)
const { digest } = await sha256.digest(msg)
const sig = secp256k1.ecdsaSign(digest, key)
return secp256k1.signatureExport(sig.signature)
}

async function hashAndVerify (key, sig, msg) {
const digest = await sha.digest(msg, HASH_ALGORITHM)
const { digest } = await sha256.digest(msg)
sig = secp256k1.signatureImport(sig)
return secp256k1.ecdsaVerify(sig, digest, key)
}
Expand Down
5 changes: 1 addition & 4 deletions test/aes/aes.spec.js
Expand Up @@ -3,10 +3,7 @@
/* eslint-env mocha */
'use strict'

const chai = require('chai')
const dirtyChai = require('dirty-chai')
const expect = chai.expect
chai.use(dirtyChai)
const { expect } = require('aegir/utils/chai')
const { expectErrCode } = require('../util')

const crypto = require('../../src')
Expand Down
4 changes: 1 addition & 3 deletions test/browser.js
@@ -1,9 +1,7 @@
/* eslint-env mocha */
'use strict'

const chai = require('chai')
chai.use(require('dirty-chai'))
const expect = chai.expect
const { expect } = require('aegir/utils/chai')
const uint8ArrayFromString = require('uint8arrays/from-string')

const crypto = require('../')
Expand Down
5 changes: 1 addition & 4 deletions test/crypto.spec.js
Expand Up @@ -2,10 +2,7 @@
/* eslint-env mocha */
'use strict'

const chai = require('chai')
const dirtyChai = require('dirty-chai')
const expect = chai.expect
chai.use(dirtyChai)
const { expect } = require('aegir/utils/chai')
const crypto = require('../src')
const fixtures = require('./fixtures/go-key-rsa')
const { expectErrCode } = require('./util')
Expand Down
5 changes: 1 addition & 4 deletions test/hmac/hmac.spec.js
Expand Up @@ -2,10 +2,7 @@
/* eslint-env mocha */
'use strict'

const chai = require('chai')
const dirtyChai = require('dirty-chai')
const expect = chai.expect
chai.use(dirtyChai)
const { expect } = require('aegir/utils/chai')
const uint8ArrayFromString = require('uint8arrays/from-string')

const crypto = require('../../src')
Expand Down
5 changes: 1 addition & 4 deletions test/keys/ed25519.spec.js
@@ -1,10 +1,7 @@
/* eslint-env mocha */
'use strict'

const chai = require('chai')
const dirtyChai = require('dirty-chai')
const expect = chai.expect
chai.use(dirtyChai)
const { expect } = require('aegir/utils/chai')
const uint8ArrayFromString = require('uint8arrays/from-string')

const crypto = require('../../src')
Expand Down
5 changes: 1 addition & 4 deletions test/keys/ephemeral-keys.spec.js
Expand Up @@ -2,10 +2,7 @@
/* eslint-env mocha */
'use strict'

const chai = require('chai')
const dirtyChai = require('dirty-chai')
const expect = chai.expect
chai.use(dirtyChai)
const { expect } = require('aegir/utils/chai')

const fixtures = require('../fixtures/go-elliptic-key')
const crypto = require('../../src')
Expand Down
5 changes: 1 addition & 4 deletions test/keys/key-stretcher.spec.js
Expand Up @@ -2,10 +2,7 @@
/* eslint-env mocha */
'use strict'

const chai = require('chai')
const dirtyChai = require('dirty-chai')
const expect = chai.expect
chai.use(dirtyChai)
const { expect } = require('aegir/utils/chai')
const { expectErrCode } = require('../util')
const crypto = require('../../src')
const fixtures = require('../fixtures/go-stretch-key')
Expand Down
6 changes: 1 addition & 5 deletions test/keys/rsa-crypto-libs.js
Expand Up @@ -3,11 +3,7 @@
/* eslint-env mocha */
/* eslint max-nested-callbacks: ["error", 8] */

const chai = require('chai')
const dirtyChai = require('dirty-chai')
const expect = chai.expect
chai.use(dirtyChai)
chai.use(require('chai-string'))
const { expect } = require('aegir/utils/chai')

const LIBS = ['ursa', 'keypair']

Expand Down
6 changes: 1 addition & 5 deletions test/keys/rsa.spec.js
Expand Up @@ -2,11 +2,7 @@
/* eslint-env mocha */
'use strict'

const chai = require('chai')
const dirtyChai = require('dirty-chai')
const expect = chai.expect
chai.use(dirtyChai)
chai.use(require('chai-string'))
const { expect } = require('aegir/utils/chai')
const { expectErrCode } = require('../util')
const uint8ArrayFromString = require('uint8arrays/from-string')

Expand Down
5 changes: 1 addition & 4 deletions test/keys/secp256k1.spec.js
@@ -1,10 +1,7 @@
/* eslint-env mocha */
'use strict'

const chai = require('chai')
const dirtyChai = require('dirty-chai')
const expect = chai.expect
chai.use(dirtyChai)
const { expect } = require('aegir/utils/chai')
const crypto = require('../../src')
const secp256k1 = crypto.keys.supportedKeys.secp256k1
const keysPBM = crypto.keys.keysPBM
Expand Down
5 changes: 1 addition & 4 deletions test/random-bytes.spec.js
@@ -1,10 +1,7 @@
/* eslint-env mocha */
'use strict'

const chai = require('chai')
const dirtyChai = require('dirty-chai')
const expect = chai.expect
chai.use(dirtyChai)
const { expect } = require('aegir/utils/chai')

const randomBytes = require('../src/random-bytes')

Expand Down
5 changes: 1 addition & 4 deletions test/util.spec.js
Expand Up @@ -2,10 +2,7 @@
/* eslint-env mocha */
'use strict'

const chai = require('chai')
const dirtyChai = require('dirty-chai')
const expect = chai.expect
chai.use(dirtyChai)
const { expect } = require('aegir/utils/chai')
require('node-forge/lib/jsbn')
const forge = require('node-forge/lib/forge')
const util = require('../src/util')
Expand Down
3 changes: 1 addition & 2 deletions test/util/index.js
@@ -1,8 +1,7 @@
/* eslint-disable valid-jsdoc */
'use strict'

const chai = require('chai')
const expect = chai.expect
const { expect } = require('aegir/utils/chai')

// @ts-check
/**
Expand Down

0 comments on commit 94966df

Please sign in to comment.