🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

@auxo-dev/o1js-encrypt

Package Overview
Dependencies
Maintainers
4
Versions
5
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@auxo-dev/o1js-encrypt - npm Package Compare versions

Comparing version
1.0.2
to
1.0.3
+61
-2
build/cjs/src/ecelgamal/lib.d.ts

@@ -0,5 +1,6 @@

import { Field, Group, Scalar } from 'o1js';
import { Bit255 } from '@auxo-dev/auxo-libs';
import { Field, Group, Scalar } from 'o1js';
export { encrypt, decrypt };
export { homomorphicEncrypt, homomorphicDecrypt, bruteForce };
export { homomorphicEncrypt, homomorphicDecrypt };
export { BabyStep, bruteForce, prepareBabySteps, loadBabySteps, babyStepGiantStep, };
declare function encrypt(m: Scalar, pbK: Group, b: Scalar, isCommitting?: boolean): {

@@ -20,2 +21,60 @@ c: Bit255;

declare function bruteForce(point: Group, step?: bigint, max?: bigint): Scalar;
declare const BabyStep_base: (new (value: {
pointHash: import("o1js/dist/node/lib/provable/field").Field;
scalar: Scalar;
}) => {
pointHash: import("o1js/dist/node/lib/provable/field").Field;
scalar: Scalar;
}) & {
_isStruct: true;
} & Omit<import("o1js/dist/node/lib/provable/types/provable-intf").Provable<{
pointHash: import("o1js/dist/node/lib/provable/field").Field;
scalar: Scalar;
}, {
pointHash: bigint;
scalar: bigint;
}>, "fromFields"> & {
fromFields: (fields: import("o1js/dist/node/lib/provable/field").Field[]) => {
pointHash: import("o1js/dist/node/lib/provable/field").Field;
scalar: Scalar;
};
} & {
fromValue: (value: {
pointHash: string | number | bigint | import("o1js/dist/node/lib/provable/field").Field;
scalar: bigint | Scalar;
}) => {
pointHash: import("o1js/dist/node/lib/provable/field").Field;
scalar: Scalar;
};
toInput: (x: {
pointHash: import("o1js/dist/node/lib/provable/field").Field;
scalar: Scalar;
}) => {
fields?: Field[] | undefined;
packed?: [Field, number][] | undefined;
};
toJSON: (x: {
pointHash: import("o1js/dist/node/lib/provable/field").Field;
scalar: Scalar;
}) => {
pointHash: string;
scalar: string;
};
fromJSON: (x: {
pointHash: string;
scalar: string;
}) => {
pointHash: import("o1js/dist/node/lib/provable/field").Field;
scalar: Scalar;
};
empty: () => {
pointHash: import("o1js/dist/node/lib/provable/field").Field;
scalar: Scalar;
};
};
declare class BabyStep extends BabyStep_base {
}
declare function prepareBabySteps(numSteps: number, file: string): void;
declare function loadBabySteps(file: string): Array<bigint[]>;
declare function babyStepGiantStep(point: Group, babySteps: Map<string, bigint>, step?: bigint, max?: bigint): Scalar;
declare function homomorphicDecrypt(ciphers: {

@@ -22,0 +81,0 @@ C: Group;

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.BabyStep = void 0;
exports.encrypt = encrypt;

@@ -8,4 +9,9 @@ exports.decrypt = decrypt;

exports.bruteForce = bruteForce;
exports.prepareBabySteps = prepareBabySteps;
exports.loadBabySteps = loadBabySteps;
exports.babyStepGiantStep = babyStepGiantStep;
const tslib_1 = require("tslib");
const fs = tslib_1.__importStar(require("fs"));
const o1js_1 = require("o1js");
const auxo_libs_1 = require("@auxo-dev/auxo-libs");
const o1js_1 = require("o1js");
function encrypt(m, pbK, b, isCommitting = false) {

@@ -55,3 +61,3 @@ let U = o1js_1.Group.generator.scale(b);

testValue = testValue.add(o1js_1.Scalar.from(step));
if (testValue.toBigInt() >= BigInt(max))
if (testValue.toBigInt() > BigInt(max))
throw new Error('No valid value found!');

@@ -61,2 +67,45 @@ }

}
class BabyStep extends (0, o1js_1.Struct)({
pointHash: o1js_1.Field,
scalar: o1js_1.Scalar,
}) {
}
exports.BabyStep = BabyStep;
function prepareBabySteps(numSteps, file) {
let text = '';
for (let i = 0; i < numSteps; i++) {
let babyStep = [
o1js_1.Poseidon.hash(o1js_1.Group.generator.scale(o1js_1.Scalar.from(i)).toFields()).toBigInt(),
BigInt(i),
];
text += babyStep.toString() + '\n';
}
fs.writeFileSync(file, text, 'utf8');
}
function loadBabySteps(file) {
let data;
try {
data = fs.readFileSync(file, 'utf8');
}
catch (err) {
console.error(err);
throw err;
}
const lines = data.split('\n').slice(0, -1);
return lines.map((line) => line.split(',').map((e) => BigInt(e)));
}
function babyStepGiantStep(point, babySteps, step = 1n, max = o1js_1.Scalar.ORDER) {
let m = Math.ceil(Math.sqrt(Number(max / step)));
console.log('m:', m);
console.log('Number of baby steps:', babySteps.size);
let testPoint = point;
let giantStep = o1js_1.Group.generator.scale(m).neg();
for (let i = 0; i < m; i++) {
let index = o1js_1.Poseidon.hash(testPoint.toFields()).toString();
if (babySteps.has(index))
return o1js_1.Scalar.from(BigInt(i * m) + babySteps.get(index));
testPoint = testPoint.add(giantStep);
}
throw new Error('No valid value found!');
}
function homomorphicDecrypt(ciphers, prvK, step, max, isCommitting = false, random = o1js_1.Scalar.from(0n)) {

@@ -63,0 +112,0 @@ let acc_cipher = accumulateCiphers(ciphers);

+1
-1

@@ -1,1 +0,1 @@

{"version":3,"file":"lib.js","sourceRoot":"","sources":["../../../../src/ecelgamal/lib.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"lib.js","sourceRoot":"","sources":["../../../../src/ecelgamal/lib.ts"],"names":[],"mappings":";;;AAIS,0BAAO;AAAE,0BAAO;AAChB,gDAAkB;AAAE,gDAAkB;AAG3C,gCAAU;AACV,4CAAgB;AAChB,sCAAa;AACb,8CAAiB;;AAXrB,+CAAyB;AACzB,+BAA8D;AAC9D,mDAA6C;AA8B7C,SAAS,OAAO,CACZ,CAAS,EACT,GAAU,EACV,CAAS,EACT,YAAY,GAAG,KAAK;IAMpB,IAAI,CAAC,GAAG,YAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjC,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACrB,IAAI,CAAC,GAAG,eAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3D,IAAI,CAAC,GAAG,kBAAM,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,kBAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAClE,IAAI,UAAU,GAAG,YAAY;QACzB,CAAC,CAAC,eAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACpD,CAAC,CAAC,IAAA,YAAK,EAAC,CAAC,CAAC,CAAC;IACf,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC;AAChC,CAAC;AAED,SAAS,OAAO,CACZ,CAAS,EACT,CAAQ,EACR,IAAY,EACZ,YAAY,GAAG,KAAK,EACpB,MAAM,GAAG,aAAM,CAAC,IAAI,CAAC,EAAE,CAAC;IAExB,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,YAAK,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,YAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5E,IAAI,CAAC,GAAG,eAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3D,IAAI,CAAC,GAAG,kBAAM,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC1D,IAAI,UAAU,GAAG,YAAY;QACzB,CAAC,CAAC,eAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACzD,CAAC,CAAC,IAAA,YAAK,EAAC,CAAC,CAAC,CAAC;IACf,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC;AAC7B,CAAC;AAED,SAAS,kBAAkB,CACvB,CAAS,EACT,GAAU,EACV,CAAS,EACT,YAAY,GAAG,KAAK;IAEpB,IAAI,CAAC,GAAG,YAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,IAAI,CAAC,GAAG,YAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjC,IAAI,UAAU,GAAG,YAAY;QACzB,CAAC,CAAC,eAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACpD,CAAC,CAAC,IAAA,YAAK,EAAC,CAAC,CAAC,CAAC;IACf,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC;AAChC,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAiC;IAIxD,OAAO,OAAO,CAAC,MAAM,CACjB,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;QACZ,OAAO,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9D,CAAC,EACD,EAAE,CAAC,EAAE,YAAK,CAAC,IAAI,EAAE,CAAC,EAAE,YAAK,CAAC,IAAI,EAAE,CACnC,CAAC;AACN,CAAC;AAED,SAAS,UAAU,CAAC,KAAY,EAAE,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,aAAM,CAAC,KAAK;IAC3D,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,IAAI,SAAS,GAAG,aAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChC,OAAO,IAAI,EAAE,CAAC;QACV,KAAK,GAAG,KAAK;aACR,GAAG,CAAC,YAAK,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;aACrC,MAAM,CAAC,YAAK,CAAC,IAAI,CAAC;aAClB,SAAS,EAAE,CAAC;QAEjB,IAAI,KAAK;YAAE,OAAO,SAAS,CAAC;aACvB,CAAC;YACF,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,aAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7C,IAAI,SAAS,CAAC,QAAQ,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC;gBAClC,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QACjD,CAAC;IACL,CAAC;AACL,CAAC;AAED,MAAM,QAAS,SAAQ,IAAA,aAAM,EAAC;IAC1B,SAAS,EAAE,YAAK;IAChB,MAAM,EAAE,aAAM;CACjB,CAAC;CAAG;AA5GD,4BAAQ;AA8GZ,SAAS,gBAAgB,CAAC,QAAgB,EAAE,IAAY;IACpD,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;QAChC,IAAI,QAAQ,GAAG;YACX,eAAQ,CAAC,IAAI,CACT,YAAK,CAAC,SAAS,CAAC,KAAK,CAAC,aAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CACnD,CAAC,QAAQ,EAAE;YACZ,MAAM,CAAC,CAAC,CAAC;SACZ,CAAC;QACF,IAAI,IAAI,QAAQ,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC;IACvC,CAAC;IACD,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,aAAa,CAAC,IAAY;IAC/B,IAAI,IAAI,CAAC;IACT,IAAI,CAAC;QACD,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnB,MAAM,GAAG,CAAC;IACd,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5C,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,iBAAiB,CACtB,KAAY,EACZ,SAA8B,EAC9B,IAAI,GAAG,EAAE,EACT,GAAG,GAAG,aAAM,CAAC,KAAK;IAElB,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACrB,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;IACrD,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,SAAS,GAAG,YAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACzB,IAAI,KAAK,GAAG,eAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC3D,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;YAEpB,OAAO,aAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC,CAAC;QAC9D,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACzC,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,kBAAkB,CACvB,OAAiC,EACjC,IAAY,EACZ,IAAY,EACZ,GAAW,EACX,YAAY,GAAG,KAAK,EACpB,MAAM,GAAG,aAAM,CAAC,IAAI,CAAC,EAAE,CAAC;IAMxB,IAAI,UAAU,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,SAAS,GAAG,UAAU,CACtB,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAC1C,IAAI,EACJ,GAAG,CACN,CAAC;IACF,IAAI,UAAU,GAAG,YAAY;QACzB,CAAC,CAAC,eAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACjE,CAAC,CAAC,IAAA,YAAK,EAAC,CAAC,CAAC,CAAC;IACf,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AACjD,CAAC"}

@@ -0,5 +1,6 @@

import { Field, Group, Scalar } from 'o1js';
import { Bit255 } from '@auxo-dev/auxo-libs';
import { Field, Group, Scalar } from 'o1js';
export { encrypt, decrypt };
export { homomorphicEncrypt, homomorphicDecrypt, bruteForce };
export { homomorphicEncrypt, homomorphicDecrypt };
export { BabyStep, bruteForce, prepareBabySteps, loadBabySteps, babyStepGiantStep, };
declare function encrypt(m: Scalar, pbK: Group, b: Scalar, isCommitting?: boolean): {

@@ -20,2 +21,60 @@ c: Bit255;

declare function bruteForce(point: Group, step?: bigint, max?: bigint): Scalar;
declare const BabyStep_base: (new (value: {
pointHash: import("o1js/dist/node/lib/provable/field").Field;
scalar: Scalar;
}) => {
pointHash: import("o1js/dist/node/lib/provable/field").Field;
scalar: Scalar;
}) & {
_isStruct: true;
} & Omit<import("o1js/dist/node/lib/provable/types/provable-intf").Provable<{
pointHash: import("o1js/dist/node/lib/provable/field").Field;
scalar: Scalar;
}, {
pointHash: bigint;
scalar: bigint;
}>, "fromFields"> & {
fromFields: (fields: import("o1js/dist/node/lib/provable/field").Field[]) => {
pointHash: import("o1js/dist/node/lib/provable/field").Field;
scalar: Scalar;
};
} & {
fromValue: (value: {
pointHash: string | number | bigint | import("o1js/dist/node/lib/provable/field").Field;
scalar: bigint | Scalar;
}) => {
pointHash: import("o1js/dist/node/lib/provable/field").Field;
scalar: Scalar;
};
toInput: (x: {
pointHash: import("o1js/dist/node/lib/provable/field").Field;
scalar: Scalar;
}) => {
fields?: Field[] | undefined;
packed?: [Field, number][] | undefined;
};
toJSON: (x: {
pointHash: import("o1js/dist/node/lib/provable/field").Field;
scalar: Scalar;
}) => {
pointHash: string;
scalar: string;
};
fromJSON: (x: {
pointHash: string;
scalar: string;
}) => {
pointHash: import("o1js/dist/node/lib/provable/field").Field;
scalar: Scalar;
};
empty: () => {
pointHash: import("o1js/dist/node/lib/provable/field").Field;
scalar: Scalar;
};
};
declare class BabyStep extends BabyStep_base {
}
declare function prepareBabySteps(numSteps: number, file: string): void;
declare function loadBabySteps(file: string): Array<bigint[]>;
declare function babyStepGiantStep(point: Group, babySteps: Map<string, bigint>, step?: bigint, max?: bigint): Scalar;
declare function homomorphicDecrypt(ciphers: {

@@ -22,0 +81,0 @@ C: Group;

@@ -0,5 +1,7 @@

import * as fs from 'fs';
import { Field, Group, Poseidon, Scalar, Struct } from 'o1js';
import { Bit255 } from '@auxo-dev/auxo-libs';
import { Field, Group, Poseidon, Scalar } from 'o1js';
export { encrypt, decrypt };
export { homomorphicEncrypt, homomorphicDecrypt, bruteForce };
export { homomorphicEncrypt, homomorphicDecrypt };
export { BabyStep, bruteForce, prepareBabySteps, loadBabySteps, babyStepGiantStep, };
function encrypt(m, pbK, b, isCommitting = false) {

@@ -49,3 +51,3 @@ let U = Group.generator.scale(b);

testValue = testValue.add(Scalar.from(step));
if (testValue.toBigInt() >= BigInt(max))
if (testValue.toBigInt() > BigInt(max))
throw new Error('No valid value found!');

@@ -55,2 +57,44 @@ }

}
class BabyStep extends Struct({
pointHash: Field,
scalar: Scalar,
}) {
}
function prepareBabySteps(numSteps, file) {
let text = '';
for (let i = 0; i < numSteps; i++) {
let babyStep = [
Poseidon.hash(Group.generator.scale(Scalar.from(i)).toFields()).toBigInt(),
BigInt(i),
];
text += babyStep.toString() + '\n';
}
fs.writeFileSync(file, text, 'utf8');
}
function loadBabySteps(file) {
let data;
try {
data = fs.readFileSync(file, 'utf8');
}
catch (err) {
console.error(err);
throw err;
}
const lines = data.split('\n').slice(0, -1);
return lines.map((line) => line.split(',').map((e) => BigInt(e)));
}
function babyStepGiantStep(point, babySteps, step = 1n, max = Scalar.ORDER) {
let m = Math.ceil(Math.sqrt(Number(max / step)));
console.log('m:', m);
console.log('Number of baby steps:', babySteps.size);
let testPoint = point;
let giantStep = Group.generator.scale(m).neg();
for (let i = 0; i < m; i++) {
let index = Poseidon.hash(testPoint.toFields()).toString();
if (babySteps.has(index))
return Scalar.from(BigInt(i * m) + babySteps.get(index));
testPoint = testPoint.add(giantStep);
}
throw new Error('No valid value found!');
}
function homomorphicDecrypt(ciphers, prvK, step, max, isCommitting = false, random = Scalar.from(0n)) {

@@ -57,0 +101,0 @@ let acc_cipher = accumulateCiphers(ciphers);

@@ -1,1 +0,1 @@

{"version":3,"file":"lib.js","sourceRoot":"","sources":["../../../../src/ecelgamal/lib.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"lib.js","sourceRoot":"","sources":["../../../../src/ecelgamal/lib.ts"],"names":[],"mappings":"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"}

@@ -0,5 +1,6 @@

import { Field, Group, Scalar } from 'o1js';
import { Bit255 } from '@auxo-dev/auxo-libs';
import { Field, Group, Scalar } from 'o1js';
export { encrypt, decrypt };
export { homomorphicEncrypt, homomorphicDecrypt, bruteForce };
export { homomorphicEncrypt, homomorphicDecrypt };
export { BabyStep, bruteForce, prepareBabySteps, loadBabySteps, babyStepGiantStep, };
declare function encrypt(m: Scalar, pbK: Group, b: Scalar, isCommitting?: boolean): {

@@ -20,2 +21,60 @@ c: Bit255;

declare function bruteForce(point: Group, step?: bigint, max?: bigint): Scalar;
declare const BabyStep_base: (new (value: {
pointHash: import("o1js/dist/node/lib/provable/field").Field;
scalar: Scalar;
}) => {
pointHash: import("o1js/dist/node/lib/provable/field").Field;
scalar: Scalar;
}) & {
_isStruct: true;
} & Omit<import("o1js/dist/node/lib/provable/types/provable-intf").Provable<{
pointHash: import("o1js/dist/node/lib/provable/field").Field;
scalar: Scalar;
}, {
pointHash: bigint;
scalar: bigint;
}>, "fromFields"> & {
fromFields: (fields: import("o1js/dist/node/lib/provable/field").Field[]) => {
pointHash: import("o1js/dist/node/lib/provable/field").Field;
scalar: Scalar;
};
} & {
fromValue: (value: {
pointHash: string | number | bigint | import("o1js/dist/node/lib/provable/field").Field;
scalar: bigint | Scalar;
}) => {
pointHash: import("o1js/dist/node/lib/provable/field").Field;
scalar: Scalar;
};
toInput: (x: {
pointHash: import("o1js/dist/node/lib/provable/field").Field;
scalar: Scalar;
}) => {
fields?: Field[] | undefined;
packed?: [Field, number][] | undefined;
};
toJSON: (x: {
pointHash: import("o1js/dist/node/lib/provable/field").Field;
scalar: Scalar;
}) => {
pointHash: string;
scalar: string;
};
fromJSON: (x: {
pointHash: string;
scalar: string;
}) => {
pointHash: import("o1js/dist/node/lib/provable/field").Field;
scalar: Scalar;
};
empty: () => {
pointHash: import("o1js/dist/node/lib/provable/field").Field;
scalar: Scalar;
};
};
declare class BabyStep extends BabyStep_base {
}
declare function prepareBabySteps(numSteps: number, file: string): void;
declare function loadBabySteps(file: string): Array<bigint[]>;
declare function babyStepGiantStep(point: Group, babySteps: Map<string, bigint>, step?: bigint, max?: bigint): Scalar;
declare function homomorphicDecrypt(ciphers: {

@@ -22,0 +81,0 @@ C: Group;

{
"name": "@auxo-dev/o1js-encrypt",
"version": "1.0.2",
"version": "1.0.3",
"description": "",

@@ -5,0 +5,0 @@ "author": "",