Only include tweetnacl functions we need
This commit is contained in:
parent
caa712c337
commit
ffa8344809
5
npm-shrinkwrap.json
generated
5
npm-shrinkwrap.json
generated
|
@ -7235,9 +7235,8 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"tweetnacl": {
|
"tweetnacl": {
|
||||||
"version": "1.0.1",
|
"version": "github:openpgpjs/tweetnacl-js#1ef755f2b252a3e328ac739848d00e0dad76be2d",
|
||||||
"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.1.tgz",
|
"from": "github:openpgpjs/tweetnacl-js#1ef755f2b252a3e328ac739848d00e0dad76be2d",
|
||||||
"integrity": "sha512-kcoMoKTPYnoeS50tzoqjPY3Uv9axeuuFAZY9M/9zFnhoVvRfxz9K29IMPD7jGmt2c8SW7i3gT9WqDl2+nV7p4A==",
|
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"type-check": {
|
"type-check": {
|
||||||
|
|
|
@ -80,7 +80,7 @@
|
||||||
"hash.js": "^1.1.3",
|
"hash.js": "^1.1.3",
|
||||||
"pako": "^1.0.6",
|
"pako": "^1.0.6",
|
||||||
"seek-bzip": "github:openpgpjs/seek-bzip#3aca608ffedc055a1da1d898ecb244804ef32209",
|
"seek-bzip": "github:openpgpjs/seek-bzip#3aca608ffedc055a1da1d898ecb244804ef32209",
|
||||||
"tweetnacl": "^1.0.1",
|
"tweetnacl": "github:openpgpjs/tweetnacl-js#1ef755f2b252a3e328ac739848d00e0dad76be2d",
|
||||||
"web-stream-tools": "github:openpgpjs/web-stream-tools#84a497715c9df271a673f8616318264ab42ab3cc"
|
"web-stream-tools": "github:openpgpjs/web-stream-tools#84a497715c9df271a673f8616318264ab42ab3cc"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import BN from 'bn.js';
|
import BN from 'bn.js';
|
||||||
import nacl from 'tweetnacl';
|
import nacl from 'tweetnacl/nacl-fast-light.js';
|
||||||
import Curve from './curves';
|
import Curve from './curves';
|
||||||
import aes_kw from '../../aes_kw';
|
import aes_kw from '../../aes_kw';
|
||||||
import cipher from '../../cipher';
|
import cipher from '../../cipher';
|
||||||
|
@ -133,7 +133,7 @@ async function encrypt(oid, cipher_algo, hash_algo, m, Q, fingerprint) {
|
||||||
*/
|
*/
|
||||||
async function genPrivateEphemeralKey(curve, V, d) {
|
async function genPrivateEphemeralKey(curve, V, d) {
|
||||||
if (curve.name === 'curve25519') {
|
if (curve.name === 'curve25519') {
|
||||||
const one = curve.curve.curve.one;
|
const one = new BN(1);
|
||||||
const mask = one.ushln(255 - 3).sub(one).ushln(3);
|
const mask = one.ushln(255 - 3).sub(one).ushln(3);
|
||||||
let secretKey = new BN(d);
|
let secretKey = new BN(d);
|
||||||
secretKey = secretKey.or(one.ushln(255 - 1));
|
secretKey = secretKey.or(one.ushln(255 - 1));
|
||||||
|
|
|
@ -17,16 +17,19 @@
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @fileoverview Implementation of EdDSA following RFC4880bis-03 for OpenPGP
|
* @fileoverview Implementation of EdDSA following RFC4880bis-03 for OpenPGP
|
||||||
|
* @requires hash.js
|
||||||
* @requires tweetnacl
|
* @requires tweetnacl
|
||||||
* @requires crypto/public_key/elliptic/curve
|
* @requires crypto/public_key/elliptic/curve
|
||||||
* @requires util
|
* @requires util
|
||||||
* @module crypto/public_key/elliptic/eddsa
|
* @module crypto/public_key/elliptic/eddsa
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import nacl from 'tweetnacl';
|
import sha512 from 'hash.js/lib/hash/sha/512';
|
||||||
import Curve from './curves';
|
import nacl from 'tweetnacl/nacl-fast-light.js';
|
||||||
import util from '../../../util';
|
import util from '../../../util';
|
||||||
|
|
||||||
|
nacl.hash = bytes => new Uint8Array(sha512().update(bytes).digest());
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sign a message using the provided key
|
* Sign a message using the provided key
|
||||||
* @param {module:type/oid} oid Elliptic curve object identifier
|
* @param {module:type/oid} oid Elliptic curve object identifier
|
||||||
|
@ -63,10 +66,6 @@ async function sign(oid, hash_algo, m, d, hashed) {
|
||||||
async function verify(oid, hash_algo, { R, S }, m, publicKey, hashed) {
|
async function verify(oid, hash_algo, { R, S }, m, publicKey, hashed) {
|
||||||
const signature = util.concatUint8Array([R, S]);
|
const signature = util.concatUint8Array([R, S]);
|
||||||
return nacl.sign.detached.verify(hashed, signature, publicKey.subarray(1));
|
return nacl.sign.detached.verify(hashed, signature, publicKey.subarray(1));
|
||||||
|
|
||||||
const curve = new Curve(oid);
|
|
||||||
const key = curve.keyFromPublic(Q);
|
|
||||||
return key.verify(m, signature, hash_algo, hashed);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export default { sign, verify };
|
export default { sign, verify };
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
* @module crypto/public_key
|
* @module crypto/public_key
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import nacl from 'tweetnacl';
|
import nacl from 'tweetnacl/nacl-fast-light.js';
|
||||||
import rsa from './rsa';
|
import rsa from './rsa';
|
||||||
import elgamal from './elgamal';
|
import elgamal from './elgamal';
|
||||||
import elliptic from './elliptic';
|
import elliptic from './elliptic';
|
||||||
|
|
Loading…
Reference in New Issue
Block a user