sdfsdfs
This commit is contained in:
124
node_modules/create-ecdh/browser.js
generated
vendored
Normal file
124
node_modules/create-ecdh/browser.js
generated
vendored
Normal file
@@ -0,0 +1,124 @@
|
||||
var elliptic = require('elliptic')
|
||||
var BN = require('bn.js')
|
||||
|
||||
module.exports = function createECDH (curve) {
|
||||
return new ECDH(curve)
|
||||
}
|
||||
|
||||
var aliases = {
|
||||
secp256k1: {
|
||||
name: 'secp256k1',
|
||||
byteLength: 32
|
||||
},
|
||||
secp224r1: {
|
||||
name: 'p224',
|
||||
byteLength: 28
|
||||
},
|
||||
prime256v1: {
|
||||
name: 'p256',
|
||||
byteLength: 32
|
||||
},
|
||||
prime192v1: {
|
||||
name: 'p192',
|
||||
byteLength: 24
|
||||
},
|
||||
ed25519: {
|
||||
name: 'ed25519',
|
||||
byteLength: 32
|
||||
},
|
||||
secp384r1: {
|
||||
name: 'p384',
|
||||
byteLength: 48
|
||||
},
|
||||
secp521r1: {
|
||||
name: 'p521',
|
||||
byteLength: 66
|
||||
}
|
||||
}
|
||||
|
||||
aliases.p224 = aliases.secp224r1
|
||||
aliases.p256 = aliases.secp256r1 = aliases.prime256v1
|
||||
aliases.p192 = aliases.secp192r1 = aliases.prime192v1
|
||||
aliases.p384 = aliases.secp384r1
|
||||
aliases.p521 = aliases.secp521r1
|
||||
|
||||
function ECDH (curve) {
|
||||
this.curveType = aliases[curve]
|
||||
if (!this.curveType) {
|
||||
this.curveType = {
|
||||
name: curve
|
||||
}
|
||||
}
|
||||
this.curve = new elliptic.ec(this.curveType.name) // eslint-disable-line new-cap
|
||||
this.keys = void 0
|
||||
}
|
||||
|
||||
ECDH.prototype.generateKeys = function (enc, format) {
|
||||
this.keys = this.curve.genKeyPair()
|
||||
return this.getPublicKey(enc, format)
|
||||
}
|
||||
|
||||
ECDH.prototype.computeSecret = function (other, inenc, enc) {
|
||||
inenc = inenc || 'utf8'
|
||||
if (!Buffer.isBuffer(other)) {
|
||||
other = new Buffer(other, inenc)
|
||||
}
|
||||
var otherPub = this.curve.keyFromPublic(other).getPublic()
|
||||
var out = otherPub.mul(this.keys.getPrivate()).getX()
|
||||
return formatReturnValue(out, enc, this.curveType.byteLength)
|
||||
}
|
||||
|
||||
ECDH.prototype.getPublicKey = function (enc, format) {
|
||||
var key = this.keys.getPublic(format === 'compressed', true)
|
||||
if (format === 'hybrid') {
|
||||
if (key[key.length - 1] % 2) {
|
||||
key[0] = 7
|
||||
} else {
|
||||
key[0] = 6
|
||||
}
|
||||
}
|
||||
return formatReturnValue(key, enc)
|
||||
}
|
||||
|
||||
ECDH.prototype.getPrivateKey = function (enc) {
|
||||
return formatReturnValue(this.keys.getPrivate(), enc)
|
||||
}
|
||||
|
||||
ECDH.prototype.setPublicKey = function (pub, enc) {
|
||||
enc = enc || 'utf8'
|
||||
if (!Buffer.isBuffer(pub)) {
|
||||
pub = new Buffer(pub, enc)
|
||||
}
|
||||
this.keys._importPublic(pub)
|
||||
return this
|
||||
}
|
||||
|
||||
ECDH.prototype.setPrivateKey = function (priv, enc) {
|
||||
enc = enc || 'utf8'
|
||||
if (!Buffer.isBuffer(priv)) {
|
||||
priv = new Buffer(priv, enc)
|
||||
}
|
||||
|
||||
var _priv = new BN(priv)
|
||||
_priv = _priv.toString(16)
|
||||
this.keys = this.curve.genKeyPair()
|
||||
this.keys._importPrivate(_priv)
|
||||
return this
|
||||
}
|
||||
|
||||
function formatReturnValue (bn, enc, len) {
|
||||
if (!Array.isArray(bn)) {
|
||||
bn = bn.toArray()
|
||||
}
|
||||
var buf = new Buffer(bn)
|
||||
if (len && buf.length < len) {
|
||||
var zeros = new Buffer(len - buf.length)
|
||||
zeros.fill(0)
|
||||
buf = Buffer.concat([zeros, buf])
|
||||
}
|
||||
if (!enc) {
|
||||
return buf
|
||||
} else {
|
||||
return buf.toString(enc)
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user