clamp(sk)\r
\r
ge_scalarmult_base_tobytes(pk, sk)\r
- memory.copy(changetype<usize>(sk), changetype<usize>(seed), PRIVATEKEY_BYTES)\r
- memory.copy(changetype<usize>(sk) + 32, changetype<usize>(pk), PUBLICKEY_BYTES)\r
+ memory.copy(changetype<usize>(sk), changetype<usize>(pk), PUBLICKEY_BYTES)\r
}\r
\r
const crypto_sign_az = new StaticArray<u8>(64)\r
}\r
\r
/**\r
- * Derives a Nano public key from a private key and writes it to the static\r
- * output buffer. This mirrors the functionality of\r
- * `nacl.sign.keyPair.fromSeed()`, returning both private and public keys as a\r
- * concatenated `secretKey` property.\r
+ * Uses a private key to derive a Nano public key which is then written to the\r
+ * static output buffer.\r
*/\r
export function derive (): void {\r
- const sk = changetype<StaticArray<u8>>(OUTPUT_BUFFER)\r
+ const pk = changetype<StaticArray<u8>>(OUTPUT_BUFFER)\r
const seed = changetype<StaticArray<u8>>(INPUT_BUFFER)\r
memory.fill(OUTPUT_BUFFER, 0, SECRETKEY_BYTES)\r
- crypto_derive(sk, seed)\r
+ crypto_derive(pk, seed)\r
memory.fill(INPUT_BUFFER, 0, PRIVATEKEY_BYTES)\r
}\r
\r
const outPtr = exports.getOutputPointer()
buffer = new DataView(exports.memory.buffer)
for (let i = 0; i < 32; i++) {
- out[i] = buffer.getUint8(outPtr + i + 32)
+ out[i] = buffer.getUint8(outPtr + i)
}
clear(buffer)
if (typeof k === 'string') {