* Generates a new key pair from the given 32-byte secret seed (which should be generated with a CSPRNG) and returns it as object. * * The returned keys can be used for signing and key agreement. * * @export * @param {Uint8Array} seed required * @returns
(seed)
| 1642 | * @returns |
| 1643 | */ |
| 1644 | function generateKeyPair(seed) { |
| 1645 | checkArrayTypes(seed); |
| 1646 | if (seed.length !== 32) |
| 1647 | throw new Error('wrong seed length'); |
| 1648 | var sk = new Uint8Array(32); |
| 1649 | var pk = new Uint8Array(32); |
| 1650 | for (var i = 0; i < 32; i++) |
| 1651 | sk[i] = seed[i]; |
| 1652 | crypto_scalarmult_base(pk, sk); |
| 1653 | // Turn secret key into the correct format. |
| 1654 | sk[0] &= 248; |
| 1655 | sk[31] &= 127; |
| 1656 | sk[31] |= 64; |
| 1657 | // Remove sign bit from public key. |
| 1658 | pk[31] &= 127; |
| 1659 | return { |
| 1660 | public: pk, |
| 1661 | private: sk, |
| 1662 | }; |
| 1663 | } |
| 1664 | |
| 1665 | module.exports = { |
| 1666 | sharedKey, |
nothing calls this directly
no test coverage detected