UNPKG

@zkpersona/noir-ring-signatures

Version:

Implementation of Ring Signatures in Noir

23 lines (21 loc) 4.56 kB
import { GrumpkinScalar, Grumpkin } from '@aztec/aztec.js'; import { pedersenHash } from '@aztec/foundation/crypto'; // src/helpers.ts var mod = (value, modulus = GrumpkinScalar.MODULUS) => { const result = value % modulus; return result >= 0n ? result : result + modulus; }; var randomScalar = () => GrumpkinScalar.random(); var generateKeyPair = async () => { const privateKey = GrumpkinScalar.random(); const Curve = new Grumpkin(); const publicKey = await Curve.mul(Grumpkin.generator, privateKey); return { privateKey, publicKey }; }; var hashToScalar = async (input) => { const hash = await pedersenHash(input); return GrumpkinScalar.fromBuffer(hash.toBuffer()); }; export { generateKeyPair, hashToScalar, mod, randomScalar }; //# sourceMappingURL=index.mjs.map //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFZTyxJQUFNLEdBQU0sR0FBQSxDQUNqQixLQUNBLEVBQUEsT0FBQSxHQUFVLGVBQWUsT0FDZCxLQUFBO0FBQ1gsRUFBQSxNQUFNLFNBQVMsS0FBUSxHQUFBLE9BQUE7QUFDdkIsRUFBTyxPQUFBLE1BQUEsSUFBVSxFQUFLLEdBQUEsTUFBQSxHQUFTLE1BQVMsR0FBQSxPQUFBO0FBQzFDO0FBUWEsSUFBQSxZQUFBLEdBQWUsTUFBTSxjQUFBLENBQWUsTUFBTztBQVVqRCxJQUFNLGtCQUFrQixZQUFZO0FBQ3pDLEVBQU0sTUFBQSxVQUFBLEdBQWEsZUFBZSxNQUFPLEVBQUE7QUFDekMsRUFBTSxNQUFBLEtBQUEsR0FBUSxJQUFJLFFBQVMsRUFBQTtBQUMzQixFQUFBLE1BQU0sWUFBWSxNQUFNLEtBQUEsQ0FBTSxHQUFJLENBQUEsUUFBQSxDQUFTLFdBQVcsVUFBVSxDQUFBO0FBQ2hFLEVBQU8sT0FBQSxFQUFFLFlBQVksU0FBVSxFQUFBO0FBQ2pDO0FBU2EsSUFBQSxZQUFBLEdBQWUsT0FDMUIsS0FDNEIsS0FBQTtBQUM1QixFQUFNLE1BQUEsSUFBQSxHQUFPLE1BQU0sWUFBQSxDQUFhLEtBQUssQ0FBQTtBQUNyQyxFQUFBLE9BQU8sY0FBZSxDQUFBLFVBQUEsQ0FBVyxJQUFLLENBQUEsUUFBQSxFQUFVLENBQUE7QUFDbEQiLCJmaWxlIjoiaW5kZXgubWpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR3J1bXBraW4sIEdydW1wa2luU2NhbGFyIH0gZnJvbSAnQGF6dGVjL2F6dGVjLmpzJztcbmltcG9ydCB7IHBlZGVyc2VuSGFzaCB9IGZyb20gJ0BhenRlYy9mb3VuZGF0aW9uL2NyeXB0byc7XG5pbXBvcnQgdHlwZSB7IEZpZWxkYWJsZSB9IGZyb20gJ0BhenRlYy9mb3VuZGF0aW9uL3NlcmlhbGl6ZSc7XG5cbi8qKlxuICogQ29tcHV0ZXMgdGhlIG1vZHVsbyBvcGVyYXRpb24gb24gYSBiaWdpbnQgdmFsdWUgd2l0aCBhIHNwZWNpZmllZCBtb2R1bHVzLlxuICogRW5zdXJlcyB0aGUgcmVzdWx0IGlzIGFsd2F5cyBub24tbmVnYXRpdmUgYW5kIHdpdGhpbiB0aGUgcmFuZ2UgWzAsIG1vZHVsdXMpLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBjb21wdXRlIG1vZHVsbyBvblxuICogQHBhcmFtIG1vZHVsdXMgLSBUaGUgbW9kdWx1cyB0byB1c2UgKGRlZmF1bHRzIHRvIEdydW1wa2luU2NhbGFyLk1PRFVMVVMpXG4gKiBAcmV0dXJucyBUaGUgcmVzdWx0IG9mIHZhbHVlIG1vZCBtb2R1bHVzLCBndWFyYW50ZWVkIHRvIGJlIG5vbi1uZWdhdGl2ZVxuICovXG5leHBvcnQgY29uc3QgbW9kID0gKFxuICB2YWx1ZTogYmlnaW50LFxuICBtb2R1bHVzID0gR3J1bXBraW5TY2FsYXIuTU9EVUxVU1xuKTogYmlnaW50ID0+IHtcbiAgY29uc3QgcmVzdWx0ID0gdmFsdWUgJSBtb2R1bHVzO1xuICByZXR1cm4gcmVzdWx0ID49IDBuID8gcmVzdWx0IDogcmVzdWx0ICsgbW9kdWx1cztcbn07XG5cbi8qKlxuICogR2VuZXJhdGVzIGEgcmFuZG9tIHNjYWxhciB2YWx1ZSBvbiB0aGUgR3J1bXBraW4gY3VydmUuXG4gKiBUaGlzIGlzIHVzZWZ1bCBmb3IgY3JlYXRpbmcgcHJpdmF0ZSBrZXlzIGFuZCByYW5kb20gdmFsdWVzIGluIGNyeXB0b2dyYXBoaWMgb3BlcmF0aW9ucy5cbiAqXG4gKiBAcmV0dXJucyBBIHJhbmRvbSBHcnVtcGtpblNjYWxhciB2YWx1ZVxuICovXG5leHBvcnQgY29uc3QgcmFuZG9tU2NhbGFyID0gKCkgPT4gR3J1bXBraW5TY2FsYXIucmFuZG9tKCk7XG5cbi8qKlxuICogR2VuZXJhdGVzIGEgbmV3IGtleSBwYWlyIGZvciB0aGUgR3J1bXBraW4gY3VydmUuXG4gKiBUaGUga2V5IHBhaXIgY29uc2lzdHMgb2YgYSBwcml2YXRlIGtleSAoc2NhbGFyKSBhbmQgaXRzIGNvcnJlc3BvbmRpbmcgcHVibGljIGtleSAocG9pbnQpLlxuICpcbiAqIEByZXR1cm5zIEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGFuIG9iamVjdCBjb250YWluaW5nOlxuICogICAtIHByaXZhdGVLZXk6IEEgcmFuZG9tIEdydW1wa2luU2NhbGFyIHZhbHVlXG4gKiAgIC0gcHVibGljS2V5OiBUaGUgY29ycmVzcG9uZGluZyBwdWJsaWMga2V5IHBvaW50IG9uIHRoZSBHcnVtcGtpbiBjdXJ2ZVxuICovXG5leHBvcnQgY29uc3QgZ2VuZXJhdGVLZXlQYWlyID0gYXN5bmMgKCkgPT4ge1xuICBjb25zdCBwcml2YXRlS2V5ID0gR3J1bXBraW5TY2FsYXIucmFuZG9tKCk7XG4gIGNvbnN0IEN1cnZlID0gbmV3IEdydW1wa2luKCk7XG4gIGNvbnN0IHB1YmxpY0tleSA9IGF3YWl0IEN1cnZlLm11bChHcnVtcGtpbi5nZW5lcmF0b3IsIHByaXZhdGVLZXkpO1xuICByZXR1cm4geyBwcml2YXRlS2V5LCBwdWJsaWNLZXkgfTtcbn07XG5cbi8qKlxuICogSGFzaGVzIGFuIGFycmF5IG9mIGZpZWxkIGVsZW1lbnRzIHRvIGEgc2NhbGFyIHZhbHVlIG9uIHRoZSBHcnVtcGtpbiBjdXJ2ZS5cbiAqIFRoaXMgaXMgdXNlZnVsIGZvciBjb252ZXJ0aW5nIGFyYml0cmFyeSBkYXRhIGludG8gYSBzY2FsYXIgdmFsdWUgZm9yIGNyeXB0b2dyYXBoaWMgb3BlcmF0aW9ucy5cbiAqXG4gKiBAcGFyYW0gaW5wdXQgLSBBbiBhcnJheSBvZiBmaWVsZCBlbGVtZW50cyB0byBoYXNoXG4gKiBAcmV0dXJucyBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhIEdydW1wa2luU2NhbGFyIHZhbHVlXG4gKi9cbmV4cG9ydCBjb25zdCBoYXNoVG9TY2FsYXIgPSBhc3luYyAoXG4gIGlucHV0OiBGaWVsZGFibGVbXVxuKTogUHJvbWlzZTxHcnVtcGtpblNjYWxhcj4gPT4ge1xuICBjb25zdCBoYXNoID0gYXdhaXQgcGVkZXJzZW5IYXNoKGlucHV0KTtcbiAgcmV0dXJuIEdydW1wa2luU2NhbGFyLmZyb21CdWZmZXIoaGFzaC50b0J1ZmZlcigpKTtcbn07XG4iXX0=