mirror of
https://github.com/danbulant/jose
synced 2026-05-25 04:51:47 +00:00
refactor: ecdh derive
This commit is contained in:
parent
5f6f3920a2
commit
91c7b5009d
1 changed files with 5 additions and 6 deletions
|
|
@ -1,4 +1,4 @@
|
|||
const { createECDH, createHash } = require('crypto')
|
||||
const { createECDH, createHash, constants: { POINT_CONVERSION_UNCOMPRESSED } } = require('crypto')
|
||||
|
||||
const base64url = require('../../help/base64url')
|
||||
|
||||
|
|
@ -13,16 +13,15 @@ const crvToCurve = (crv) => {
|
|||
}
|
||||
}
|
||||
|
||||
const UNCOMPRESSED = Buffer.alloc(1, 4)
|
||||
const toPubBuffer = (x, y) => Buffer.concat([UNCOMPRESSED, base64url.decodeToBuffer(x), base64url.decodeToBuffer(y)])
|
||||
const toPrivBuffer = d => base64url.decodeToBuffer(d)
|
||||
const UNCOMPRESSED = Buffer.alloc(1, POINT_CONVERSION_UNCOMPRESSED)
|
||||
const pubToBuffer = (x, y) => Buffer.concat([UNCOMPRESSED, base64url.decodeToBuffer(x), base64url.decodeToBuffer(y)])
|
||||
|
||||
const computeSecret = ({ crv, d }, { x, y }) => {
|
||||
const curve = crvToCurve(crv)
|
||||
const exchange = createECDH(curve)
|
||||
|
||||
exchange.setPrivateKey(toPrivBuffer(d))
|
||||
let secret = exchange.computeSecret(toPubBuffer(x, y))
|
||||
exchange.setPrivateKey(base64url.decodeToBuffer(d))
|
||||
let secret = exchange.computeSecret(pubToBuffer(x, y))
|
||||
return secret
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue