* 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)
| 1643 | * @returns |
| 1644 | */ |
| 1645 | function generateKeyPair(seed) { |
| 1646 | checkArrayTypes(seed); |
| 1647 | if (seed.length !== 32) |
| 1648 | throw new Error('wrong seed length'); |
| 1649 | var sk = new Uint8Array(32); |
| 1650 | var pk = new Uint8Array(32); |
| 1651 | for (var i = 0; i < 32; i++) |
| 1652 | sk[i] = seed[i]; |
| 1653 | crypto_scalarmult_base(pk, sk); |
| 1654 | // Turn secret key into the correct format. |
| 1655 | sk[0] &= 248; |
| 1656 | sk[31] &= 127; |
| 1657 | sk[31] |= 64; |
| 1658 | // Remove sign bit from public key. |
| 1659 | pk[31] &= 127; |
| 1660 | return { |
| 1661 | public: pk, |
| 1662 | private: sk, |
| 1663 | }; |
| 1664 | } |
| 1665 | |
| 1666 | globalThis.x25519 = { |
| 1667 | sharedKey, |
nothing calls this directly
no test coverage detected