mirror of
https://github.com/zama-ai/tfhe-rs.git
synced 2026-01-08 22:28:01 -05:00
chore: formatting uniformization for c and js
This commit is contained in:
committed by
Nicolas Sarlin
parent
c9eef7d193
commit
ee1a534584
6
Makefile
6
Makefile
@@ -243,7 +243,8 @@ fmt_js: check_nvm_installed
|
||||
source ~/.nvm/nvm.sh && \
|
||||
nvm install $(NODE_VERSION) && \
|
||||
nvm use $(NODE_VERSION) && \
|
||||
$(MAKE) -C tfhe/web_wasm_parallel_tests fmt
|
||||
$(MAKE) -C tfhe/web_wasm_parallel_tests fmt && \
|
||||
$(MAKE) -C tfhe/js_on_wasm_tests fmt
|
||||
|
||||
.PHONY: fmt_gpu # Format rust and cuda code
|
||||
fmt_gpu: install_rs_check_toolchain
|
||||
@@ -272,7 +273,8 @@ check_fmt_js: check_nvm_installed
|
||||
source ~/.nvm/nvm.sh && \
|
||||
nvm install $(NODE_VERSION) && \
|
||||
nvm use $(NODE_VERSION) && \
|
||||
$(MAKE) -C tfhe/web_wasm_parallel_tests check_fmt
|
||||
$(MAKE) -C tfhe/web_wasm_parallel_tests check_fmt && \
|
||||
$(MAKE) -C tfhe/js_on_wasm_tests check_fmt
|
||||
|
||||
.PHONY: check_typos # Check for typos in codebase
|
||||
check_typos: install_typos_checker
|
||||
|
||||
@@ -11,7 +11,7 @@ int main(void) {
|
||||
ShortintPBSParameters params = SHORTINT_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64;
|
||||
assert(params.encryption_key_choice == ShortintEncryptionKeyChoiceBig);
|
||||
|
||||
ShortintCompactPublicKeyEncryptionParameters pke_params = SHORTINT_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64;
|
||||
ShortintCompactPublicKeyEncryptionParameters pke_params = SHORTINT_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64;
|
||||
|
||||
int status;
|
||||
|
||||
|
||||
4
tfhe/js_on_wasm_tests/.prettierignore
Normal file
4
tfhe/js_on_wasm_tests/.prettierignore
Normal file
@@ -0,0 +1,4 @@
|
||||
dist/
|
||||
node_modules/
|
||||
pkg/
|
||||
test/benchmark_results/
|
||||
9
tfhe/js_on_wasm_tests/Makefile
Normal file
9
tfhe/js_on_wasm_tests/Makefile
Normal file
@@ -0,0 +1,9 @@
|
||||
.PHONY: fmt # Format Javascript code
|
||||
fmt:
|
||||
npm install
|
||||
npm run format
|
||||
|
||||
.PHONY: check_fmt # Check Javascript code format
|
||||
check_fmt:
|
||||
npm install
|
||||
npm run check-format
|
||||
@@ -4,7 +4,12 @@
|
||||
"description": "JS API tests",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"test": "node --test --test-reporter=tap"
|
||||
"test": "node --test --test-reporter=tap",
|
||||
"format": "prettier . --write",
|
||||
"check-format": "prettier . --check"
|
||||
},
|
||||
"devDependencies": {
|
||||
"prettier": "^3.3.3"
|
||||
},
|
||||
"author": "",
|
||||
"license": "BSD-3-Clause-Clear"
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,28 +1,28 @@
|
||||
const test = require('node:test');
|
||||
const assert = require('node:assert').strict;
|
||||
const { performance } = require('perf_hooks');
|
||||
const test = require("node:test");
|
||||
const assert = require("node:assert").strict;
|
||||
const { performance } = require("perf_hooks");
|
||||
const {
|
||||
init_panic_hook,
|
||||
TfheClientKey,
|
||||
TfhePublicKey,
|
||||
TfheCompressedPublicKey,
|
||||
TfheCompressedServerKey,
|
||||
TfheConfigBuilder,
|
||||
CompressedFheUint8,
|
||||
FheUint8,
|
||||
FheUint32,
|
||||
CompressedFheUint128,
|
||||
FheUint128,
|
||||
CompressedFheUint256,
|
||||
FheUint256,
|
||||
ShortintParameters,
|
||||
ShortintParametersName
|
||||
init_panic_hook,
|
||||
TfheClientKey,
|
||||
TfhePublicKey,
|
||||
TfheCompressedPublicKey,
|
||||
TfheCompressedServerKey,
|
||||
TfheConfigBuilder,
|
||||
CompressedFheUint8,
|
||||
FheUint8,
|
||||
FheUint32,
|
||||
CompressedFheUint128,
|
||||
FheUint128,
|
||||
CompressedFheUint256,
|
||||
FheUint256,
|
||||
ShortintParameters,
|
||||
ShortintParametersName,
|
||||
} = require("../pkg/tfhe.js");
|
||||
const {
|
||||
randomBytes,
|
||||
} = require('node:crypto');
|
||||
const { randomBytes } = require("node:crypto");
|
||||
|
||||
const U256_MAX = BigInt("115792089237316195423570985008687907853269984665640564039457584007913129639935");
|
||||
const U256_MAX = BigInt(
|
||||
"115792089237316195423570985008687907853269984665640564039457584007913129639935",
|
||||
);
|
||||
const U128_MAX = BigInt("340282366920938463463374607431768211455");
|
||||
const U32_MAX = 4294967295;
|
||||
|
||||
@@ -33,373 +33,439 @@ const U32_MAX = 4294967295;
|
||||
// will be printed and test will be ok
|
||||
init_panic_hook();
|
||||
function generateRandomBigInt(bitLength) {
|
||||
const bytesNeeded = Math.ceil(bitLength / 8);
|
||||
const randomBytesBuffer = randomBytes(bytesNeeded);
|
||||
const bytesNeeded = Math.ceil(bitLength / 8);
|
||||
const randomBytesBuffer = randomBytes(bytesNeeded);
|
||||
|
||||
// Convert random bytes to BigInt
|
||||
return BigInt(`0x${randomBytesBuffer.toString('hex')}`);
|
||||
// Convert random bytes to BigInt
|
||||
return BigInt(`0x${randomBytesBuffer.toString("hex")}`);
|
||||
}
|
||||
|
||||
|
||||
// Here integers are not enabled
|
||||
// but we try to use them, so an error should be returned
|
||||
// as the underlying panic should have been trapped
|
||||
test('hlapi_panic', (t) => {
|
||||
let config = TfheConfigBuilder.default()
|
||||
.build();
|
||||
test("hlapi_panic", (t) => {
|
||||
let config = TfheConfigBuilder.default().build();
|
||||
|
||||
let clientKey = TfheClientKey.generate(config);
|
||||
let clientKey = TfheClientKey.generate(config);
|
||||
|
||||
let clear = 73;
|
||||
let clear = 73;
|
||||
|
||||
console.log("\nThe following log is an expected error log:\n=======================\n")
|
||||
console.log(
|
||||
"\nThe following log is an expected error log:\n=======================\n",
|
||||
);
|
||||
|
||||
try {
|
||||
let _ = FheUint8.encrypt_with_client_key(clear, clientKey);
|
||||
assert(false);
|
||||
} catch (e) {
|
||||
assert(true);
|
||||
}
|
||||
try {
|
||||
let _ = FheUint8.encrypt_with_client_key(clear, clientKey);
|
||||
assert(false);
|
||||
} catch (e) {
|
||||
assert(true);
|
||||
}
|
||||
});
|
||||
|
||||
test('hlapi_key_gen_big', (t) => {
|
||||
let config = TfheConfigBuilder.default()
|
||||
.build();
|
||||
test("hlapi_key_gen_big", (t) => {
|
||||
let config = TfheConfigBuilder.default().build();
|
||||
|
||||
|
||||
let clientKey = TfheClientKey.generate(config);
|
||||
let compressedServerKey = TfheCompressedServerKey.new(clientKey);
|
||||
try {
|
||||
let publicKey = TfhePublicKey.new(clientKey);
|
||||
assert(false);
|
||||
} catch (e) {
|
||||
assert(true)
|
||||
}
|
||||
|
||||
let serializedClientKey = clientKey.serialize();
|
||||
let serializedCompressedServerKey = compressedServerKey.serialize();
|
||||
});
|
||||
|
||||
test('hlapi_key_gen_small', (t) => {
|
||||
let params_name_small = ShortintParametersName.V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64;
|
||||
let params_small = new ShortintParameters(params_name_small);
|
||||
let config = TfheConfigBuilder.with_custom_parameters(params_small)
|
||||
.build();
|
||||
|
||||
let clientKey = TfheClientKey.generate(config);
|
||||
let compressedServerKey = TfheCompressedServerKey.new(clientKey);
|
||||
let clientKey = TfheClientKey.generate(config);
|
||||
let compressedServerKey = TfheCompressedServerKey.new(clientKey);
|
||||
try {
|
||||
let publicKey = TfhePublicKey.new(clientKey);
|
||||
assert(false);
|
||||
} catch (e) {
|
||||
assert(true);
|
||||
}
|
||||
|
||||
let serializedClientKey = clientKey.serialize();
|
||||
let serializedCompressedServerKey = compressedServerKey.serialize();
|
||||
let serializedPublicKey = publicKey.serialize();
|
||||
let serializedClientKey = clientKey.serialize();
|
||||
let serializedCompressedServerKey = compressedServerKey.serialize();
|
||||
});
|
||||
|
||||
test('hlapi_client_key_encrypt_decrypt_uint8_big', (t) => {
|
||||
let config = TfheConfigBuilder.default()
|
||||
.build();
|
||||
test("hlapi_key_gen_small", (t) => {
|
||||
let params_name_small =
|
||||
ShortintParametersName.V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64;
|
||||
let params_small = new ShortintParameters(params_name_small);
|
||||
let config = TfheConfigBuilder.with_custom_parameters(params_small).build();
|
||||
|
||||
let clientKey = TfheClientKey.generate(config);
|
||||
let compressedServerKey = TfheCompressedServerKey.new(clientKey);
|
||||
let publicKey = TfhePublicKey.new(clientKey);
|
||||
|
||||
let clientKey = TfheClientKey.generate(config);
|
||||
|
||||
let clear = 73;
|
||||
let encrypted = FheUint8.encrypt_with_client_key(clear, clientKey);
|
||||
let decrypted = encrypted.decrypt(clientKey);
|
||||
assert.deepStrictEqual(decrypted, clear);
|
||||
|
||||
let serialized = encrypted.serialize();
|
||||
let deserialized = FheUint8.deserialize(serialized);
|
||||
let deserialized_decrypted = deserialized.decrypt(clientKey);
|
||||
assert.deepStrictEqual(deserialized_decrypted, clear);
|
||||
|
||||
let safe_serialized = encrypted.safe_serialize(BigInt(10000000));
|
||||
let safe_deserialized = FheUint8.safe_deserialize(safe_serialized, BigInt(10000000));
|
||||
let safe_deserialized_decrypted = safe_deserialized.decrypt(clientKey);
|
||||
assert.deepStrictEqual(safe_deserialized_decrypted, clear);
|
||||
let serializedClientKey = clientKey.serialize();
|
||||
let serializedCompressedServerKey = compressedServerKey.serialize();
|
||||
let serializedPublicKey = publicKey.serialize();
|
||||
});
|
||||
|
||||
test('hlapi_compressed_public_client_uint8_big', (t) => {
|
||||
let config = TfheConfigBuilder.default()
|
||||
.build();
|
||||
test("hlapi_client_key_encrypt_decrypt_uint8_big", (t) => {
|
||||
let config = TfheConfigBuilder.default().build();
|
||||
|
||||
let clientKey = TfheClientKey.generate(config);
|
||||
let clientKey = TfheClientKey.generate(config);
|
||||
|
||||
let clear = 73;
|
||||
let compressed_encrypted = CompressedFheUint8.encrypt_with_client_key(clear, clientKey);
|
||||
let compressed_serialized = compressed_encrypted.serialize();
|
||||
let compressed_deserialized = CompressedFheUint8.deserialize(compressed_serialized);
|
||||
let decompressed = compressed_deserialized.decompress()
|
||||
let clear = 73;
|
||||
let encrypted = FheUint8.encrypt_with_client_key(clear, clientKey);
|
||||
let decrypted = encrypted.decrypt(clientKey);
|
||||
assert.deepStrictEqual(decrypted, clear);
|
||||
|
||||
let decrypted = decompressed.decrypt(clientKey);
|
||||
assert.deepStrictEqual(decrypted, clear);
|
||||
let serialized = encrypted.serialize();
|
||||
let deserialized = FheUint8.deserialize(serialized);
|
||||
let deserialized_decrypted = deserialized.decrypt(clientKey);
|
||||
assert.deepStrictEqual(deserialized_decrypted, clear);
|
||||
|
||||
let compressed_safe_serialized = compressed_encrypted.safe_serialize(BigInt(10000000));
|
||||
let compressed_safe_deserialized = CompressedFheUint8.safe_deserialize(compressed_safe_serialized, BigInt(10000000));
|
||||
let safe_decompressed = compressed_safe_deserialized.decompress()
|
||||
|
||||
let safe_decrypted = safe_decompressed.decrypt(clientKey);
|
||||
assert.deepStrictEqual(safe_decrypted, clear);
|
||||
let safe_serialized = encrypted.safe_serialize(BigInt(10000000));
|
||||
let safe_deserialized = FheUint8.safe_deserialize(
|
||||
safe_serialized,
|
||||
BigInt(10000000),
|
||||
);
|
||||
let safe_deserialized_decrypted = safe_deserialized.decrypt(clientKey);
|
||||
assert.deepStrictEqual(safe_deserialized_decrypted, clear);
|
||||
});
|
||||
|
||||
test('hlapi_public_key_encrypt_decrypt_uint32_small', (t) => {
|
||||
let params_name_small = ShortintParametersName.V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64;
|
||||
let params_small = new ShortintParameters(params_name_small);
|
||||
let config = TfheConfigBuilder.with_custom_parameters(params_small)
|
||||
.build();
|
||||
test("hlapi_compressed_public_client_uint8_big", (t) => {
|
||||
let config = TfheConfigBuilder.default().build();
|
||||
|
||||
let clientKey = TfheClientKey.generate(config);
|
||||
let publicKey = TfhePublicKey.new(clientKey);
|
||||
let clientKey = TfheClientKey.generate(config);
|
||||
|
||||
let encrypted = FheUint32.encrypt_with_public_key(U32_MAX, publicKey);
|
||||
let decrypted = encrypted.decrypt(clientKey);
|
||||
assert.deepStrictEqual(decrypted, U32_MAX);
|
||||
let clear = 73;
|
||||
let compressed_encrypted = CompressedFheUint8.encrypt_with_client_key(
|
||||
clear,
|
||||
clientKey,
|
||||
);
|
||||
let compressed_serialized = compressed_encrypted.serialize();
|
||||
let compressed_deserialized = CompressedFheUint8.deserialize(
|
||||
compressed_serialized,
|
||||
);
|
||||
let decompressed = compressed_deserialized.decompress();
|
||||
|
||||
let serialized = encrypted.serialize();
|
||||
let deserialized = FheUint32.deserialize(serialized);
|
||||
let deserialized_decrypted = deserialized.decrypt(clientKey);
|
||||
assert.deepStrictEqual(deserialized_decrypted, U32_MAX);
|
||||
let decrypted = decompressed.decrypt(clientKey);
|
||||
assert.deepStrictEqual(decrypted, clear);
|
||||
|
||||
let safe_serialized = encrypted.safe_serialize(BigInt(1000000));
|
||||
let safe_deserialized = FheUint32.safe_deserialize(safe_serialized, BigInt(1000000));
|
||||
let safe_deserialized_decrypted = safe_deserialized.decrypt(clientKey);
|
||||
assert.deepStrictEqual(safe_deserialized_decrypted, U32_MAX);
|
||||
let compressed_safe_serialized = compressed_encrypted.safe_serialize(
|
||||
BigInt(10000000),
|
||||
);
|
||||
let compressed_safe_deserialized = CompressedFheUint8.safe_deserialize(
|
||||
compressed_safe_serialized,
|
||||
BigInt(10000000),
|
||||
);
|
||||
let safe_decompressed = compressed_safe_deserialized.decompress();
|
||||
|
||||
let safe_decrypted = safe_decompressed.decrypt(clientKey);
|
||||
assert.deepStrictEqual(safe_decrypted, clear);
|
||||
});
|
||||
|
||||
test('hlapi_decompress_public_key_then_encrypt_decrypt_uint32_small', (t) => {
|
||||
let params_name_small = ShortintParametersName.V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64;
|
||||
let params_small = new ShortintParameters(params_name_small);
|
||||
let config = TfheConfigBuilder.with_custom_parameters(params_small)
|
||||
.build();
|
||||
test("hlapi_public_key_encrypt_decrypt_uint32_small", (t) => {
|
||||
let params_name_small =
|
||||
ShortintParametersName.V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64;
|
||||
let params_small = new ShortintParameters(params_name_small);
|
||||
let config = TfheConfigBuilder.with_custom_parameters(params_small).build();
|
||||
|
||||
let clientKey = TfheClientKey.generate(config);
|
||||
var startTime = performance.now()
|
||||
let compressedPublicKey = TfheCompressedPublicKey.new(clientKey);
|
||||
var endTime = performance.now()
|
||||
let clientKey = TfheClientKey.generate(config);
|
||||
let publicKey = TfhePublicKey.new(clientKey);
|
||||
|
||||
let data = compressedPublicKey.serialize()
|
||||
let encrypted = FheUint32.encrypt_with_public_key(U32_MAX, publicKey);
|
||||
let decrypted = encrypted.decrypt(clientKey);
|
||||
assert.deepStrictEqual(decrypted, U32_MAX);
|
||||
|
||||
let publicKey = compressedPublicKey.decompress();
|
||||
let serialized = encrypted.serialize();
|
||||
let deserialized = FheUint32.deserialize(serialized);
|
||||
let deserialized_decrypted = deserialized.decrypt(clientKey);
|
||||
assert.deepStrictEqual(deserialized_decrypted, U32_MAX);
|
||||
|
||||
|
||||
var startTime = performance.now()
|
||||
let encrypted = FheUint32.encrypt_with_public_key(U32_MAX, publicKey);
|
||||
var endTime = performance.now()
|
||||
|
||||
let ser = encrypted.serialize();
|
||||
let decrypted = encrypted.decrypt(clientKey);
|
||||
assert.deepStrictEqual(decrypted, U32_MAX);
|
||||
|
||||
let serialized = encrypted.serialize();
|
||||
let deserialized = FheUint32.deserialize(serialized);
|
||||
let deserialized_decrypted = deserialized.decrypt(clientKey);
|
||||
assert.deepStrictEqual(deserialized_decrypted, U32_MAX);
|
||||
|
||||
let safe_serialized = encrypted.safe_serialize(BigInt(10000000));
|
||||
let safe_deserialized = FheUint32.safe_deserialize(safe_serialized, BigInt(10000000));
|
||||
let safe_deserialized_decrypted = safe_deserialized.decrypt(clientKey);
|
||||
assert.deepStrictEqual(safe_deserialized_decrypted, U32_MAX);
|
||||
let safe_serialized = encrypted.safe_serialize(BigInt(1000000));
|
||||
let safe_deserialized = FheUint32.safe_deserialize(
|
||||
safe_serialized,
|
||||
BigInt(1000000),
|
||||
);
|
||||
let safe_deserialized_decrypted = safe_deserialized.decrypt(clientKey);
|
||||
assert.deepStrictEqual(safe_deserialized_decrypted, U32_MAX);
|
||||
});
|
||||
|
||||
test('hlapi_client_key_encrypt_decrypt_uint128_big', (t) => {
|
||||
let config = TfheConfigBuilder.default()
|
||||
.build();
|
||||
test("hlapi_decompress_public_key_then_encrypt_decrypt_uint32_small", (t) => {
|
||||
let params_name_small =
|
||||
ShortintParametersName.V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64;
|
||||
let params_small = new ShortintParameters(params_name_small);
|
||||
let config = TfheConfigBuilder.with_custom_parameters(params_small).build();
|
||||
|
||||
let clientKey = TfheClientKey.generate(config);
|
||||
var startTime = performance.now();
|
||||
let compressedPublicKey = TfheCompressedPublicKey.new(clientKey);
|
||||
var endTime = performance.now();
|
||||
|
||||
let clientKey = TfheClientKey.generate(config);
|
||||
let data = compressedPublicKey.serialize();
|
||||
|
||||
let encrypted = FheUint128.encrypt_with_client_key(U128_MAX, clientKey);
|
||||
let decrypted = encrypted.decrypt(clientKey);
|
||||
assert.deepStrictEqual(decrypted, U128_MAX);
|
||||
let publicKey = compressedPublicKey.decompress();
|
||||
|
||||
let serialized = encrypted.serialize();
|
||||
let deserialized = FheUint128.deserialize(serialized);
|
||||
let deserialized_decrypted = deserialized.decrypt(clientKey);
|
||||
assert.deepStrictEqual(deserialized_decrypted, U128_MAX);
|
||||
var startTime = performance.now();
|
||||
let encrypted = FheUint32.encrypt_with_public_key(U32_MAX, publicKey);
|
||||
var endTime = performance.now();
|
||||
|
||||
let safe_serialized = encrypted.safe_serialize(BigInt(10000000));
|
||||
let safe_deserialized = FheUint128.safe_deserialize(safe_serialized, BigInt(10000000));
|
||||
let safe_deserialized_decrypted = safe_deserialized.decrypt(clientKey);
|
||||
assert.deepStrictEqual(safe_deserialized_decrypted, U128_MAX);
|
||||
let ser = encrypted.serialize();
|
||||
let decrypted = encrypted.decrypt(clientKey);
|
||||
assert.deepStrictEqual(decrypted, U32_MAX);
|
||||
|
||||
// Compressed
|
||||
let compressed_encrypted = CompressedFheUint128.encrypt_with_client_key(U128_MAX, clientKey);
|
||||
let compressed_serialized = compressed_encrypted.serialize();
|
||||
let compressed_deserialized = CompressedFheUint128.deserialize(compressed_serialized);
|
||||
let decompressed = compressed_deserialized.decompress()
|
||||
let serialized = encrypted.serialize();
|
||||
let deserialized = FheUint32.deserialize(serialized);
|
||||
let deserialized_decrypted = deserialized.decrypt(clientKey);
|
||||
assert.deepStrictEqual(deserialized_decrypted, U32_MAX);
|
||||
|
||||
decrypted = decompressed.decrypt(clientKey);
|
||||
assert.deepStrictEqual(decrypted, U128_MAX);
|
||||
|
||||
let compressed_safe_serialized = compressed_encrypted.safe_serialize(BigInt(10000000));
|
||||
let compressed_safe_deserialized = CompressedFheUint128.safe_deserialize(compressed_safe_serialized, BigInt(10000000));
|
||||
let safe_decompressed = compressed_safe_deserialized.decompress()
|
||||
|
||||
safe_decrypted = safe_decompressed.decrypt(clientKey);
|
||||
assert.deepStrictEqual(safe_decrypted, U128_MAX);
|
||||
let safe_serialized = encrypted.safe_serialize(BigInt(10000000));
|
||||
let safe_deserialized = FheUint32.safe_deserialize(
|
||||
safe_serialized,
|
||||
BigInt(10000000),
|
||||
);
|
||||
let safe_deserialized_decrypted = safe_deserialized.decrypt(clientKey);
|
||||
assert.deepStrictEqual(safe_deserialized_decrypted, U32_MAX);
|
||||
});
|
||||
|
||||
test('hlapi_client_key_encrypt_decrypt_uint128_small', (t) => {
|
||||
let params_name_small = ShortintParametersName.V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64;
|
||||
let params_small = new ShortintParameters(params_name_small);
|
||||
let config = TfheConfigBuilder.with_custom_parameters(params_small)
|
||||
.build();
|
||||
test("hlapi_client_key_encrypt_decrypt_uint128_big", (t) => {
|
||||
let config = TfheConfigBuilder.default().build();
|
||||
|
||||
let clientKey = TfheClientKey.generate(config);
|
||||
let clientKey = TfheClientKey.generate(config);
|
||||
|
||||
let encrypted = FheUint128.encrypt_with_client_key(U128_MAX, clientKey);
|
||||
let decrypted = encrypted.decrypt(clientKey);
|
||||
assert.deepStrictEqual(decrypted, U128_MAX);
|
||||
let encrypted = FheUint128.encrypt_with_client_key(U128_MAX, clientKey);
|
||||
let decrypted = encrypted.decrypt(clientKey);
|
||||
assert.deepStrictEqual(decrypted, U128_MAX);
|
||||
|
||||
let serialized = encrypted.serialize();
|
||||
let deserialized = FheUint128.deserialize(serialized);
|
||||
let deserialized_decrypted = deserialized.decrypt(clientKey);
|
||||
assert.deepStrictEqual(deserialized_decrypted, U128_MAX);
|
||||
let serialized = encrypted.serialize();
|
||||
let deserialized = FheUint128.deserialize(serialized);
|
||||
let deserialized_decrypted = deserialized.decrypt(clientKey);
|
||||
assert.deepStrictEqual(deserialized_decrypted, U128_MAX);
|
||||
|
||||
let safe_serialized = encrypted.safe_serialize(BigInt(10000000));
|
||||
let safe_deserialized = FheUint128.safe_deserialize(safe_serialized, BigInt(10000000));
|
||||
let safe_deserialized_decrypted = safe_deserialized.decrypt(clientKey);
|
||||
assert.deepStrictEqual(safe_deserialized_decrypted, U128_MAX);
|
||||
let safe_serialized = encrypted.safe_serialize(BigInt(10000000));
|
||||
let safe_deserialized = FheUint128.safe_deserialize(
|
||||
safe_serialized,
|
||||
BigInt(10000000),
|
||||
);
|
||||
let safe_deserialized_decrypted = safe_deserialized.decrypt(clientKey);
|
||||
assert.deepStrictEqual(safe_deserialized_decrypted, U128_MAX);
|
||||
|
||||
// Compressed
|
||||
let compressed_encrypted = CompressedFheUint128.encrypt_with_client_key(U128_MAX, clientKey);
|
||||
let compressed_serialized = compressed_encrypted.serialize();
|
||||
let compressed_deserialized = CompressedFheUint128.deserialize(compressed_serialized);
|
||||
let decompressed = compressed_deserialized.decompress()
|
||||
// Compressed
|
||||
let compressed_encrypted = CompressedFheUint128.encrypt_with_client_key(
|
||||
U128_MAX,
|
||||
clientKey,
|
||||
);
|
||||
let compressed_serialized = compressed_encrypted.serialize();
|
||||
let compressed_deserialized = CompressedFheUint128.deserialize(
|
||||
compressed_serialized,
|
||||
);
|
||||
let decompressed = compressed_deserialized.decompress();
|
||||
|
||||
decrypted = decompressed.decrypt(clientKey);
|
||||
assert.deepStrictEqual(decrypted, U128_MAX);
|
||||
decrypted = decompressed.decrypt(clientKey);
|
||||
assert.deepStrictEqual(decrypted, U128_MAX);
|
||||
|
||||
let compressed_safe_serialized = compressed_encrypted.safe_serialize(BigInt(10000000));
|
||||
let compressed_safe_deserialized = CompressedFheUint128.safe_deserialize(compressed_safe_serialized, BigInt(10000000));
|
||||
let safe_decompressed = compressed_safe_deserialized.decompress()
|
||||
let compressed_safe_serialized = compressed_encrypted.safe_serialize(
|
||||
BigInt(10000000),
|
||||
);
|
||||
let compressed_safe_deserialized = CompressedFheUint128.safe_deserialize(
|
||||
compressed_safe_serialized,
|
||||
BigInt(10000000),
|
||||
);
|
||||
let safe_decompressed = compressed_safe_deserialized.decompress();
|
||||
|
||||
safe_decrypted = safe_decompressed.decrypt(clientKey);
|
||||
assert.deepStrictEqual(safe_decrypted, U128_MAX);
|
||||
safe_decrypted = safe_decompressed.decrypt(clientKey);
|
||||
assert.deepStrictEqual(safe_decrypted, U128_MAX);
|
||||
});
|
||||
|
||||
test('hlapi_client_key_encrypt_decrypt_uint256_big', (t) => {
|
||||
let config = TfheConfigBuilder.default()
|
||||
.build();
|
||||
test("hlapi_client_key_encrypt_decrypt_uint128_small", (t) => {
|
||||
let params_name_small =
|
||||
ShortintParametersName.V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64;
|
||||
let params_small = new ShortintParameters(params_name_small);
|
||||
let config = TfheConfigBuilder.with_custom_parameters(params_small).build();
|
||||
|
||||
let clientKey = TfheClientKey.generate(config);
|
||||
|
||||
let clientKey = TfheClientKey.generate(config);
|
||||
let encrypted = FheUint128.encrypt_with_client_key(U128_MAX, clientKey);
|
||||
let decrypted = encrypted.decrypt(clientKey);
|
||||
assert.deepStrictEqual(decrypted, U128_MAX);
|
||||
|
||||
let encrypted = FheUint256.encrypt_with_client_key(U256_MAX, clientKey);
|
||||
let decrypted = encrypted.decrypt(clientKey);
|
||||
assert.deepStrictEqual(decrypted, U256_MAX);
|
||||
let serialized = encrypted.serialize();
|
||||
let deserialized = FheUint128.deserialize(serialized);
|
||||
let deserialized_decrypted = deserialized.decrypt(clientKey);
|
||||
assert.deepStrictEqual(deserialized_decrypted, U128_MAX);
|
||||
|
||||
let serialized = encrypted.serialize();
|
||||
let deserialized = FheUint256.deserialize(serialized);
|
||||
let deserialized_decrypted = deserialized.decrypt(clientKey);
|
||||
assert.deepStrictEqual(deserialized_decrypted, U256_MAX);
|
||||
let safe_serialized = encrypted.safe_serialize(BigInt(10000000));
|
||||
let safe_deserialized = FheUint128.safe_deserialize(
|
||||
safe_serialized,
|
||||
BigInt(10000000),
|
||||
);
|
||||
let safe_deserialized_decrypted = safe_deserialized.decrypt(clientKey);
|
||||
assert.deepStrictEqual(safe_deserialized_decrypted, U128_MAX);
|
||||
|
||||
let safe_serialized = encrypted.safe_serialize(BigInt(10000000));
|
||||
let safe_deserialized = FheUint256.safe_deserialize(safe_serialized, BigInt(10000000));
|
||||
let safe_deserialized_decrypted = safe_deserialized.decrypt(clientKey);
|
||||
assert.deepStrictEqual(safe_deserialized_decrypted, U256_MAX);
|
||||
// Compressed
|
||||
let compressed_encrypted = CompressedFheUint128.encrypt_with_client_key(
|
||||
U128_MAX,
|
||||
clientKey,
|
||||
);
|
||||
let compressed_serialized = compressed_encrypted.serialize();
|
||||
let compressed_deserialized = CompressedFheUint128.deserialize(
|
||||
compressed_serialized,
|
||||
);
|
||||
let decompressed = compressed_deserialized.decompress();
|
||||
|
||||
// Compressed
|
||||
let compressed_encrypted = CompressedFheUint256.encrypt_with_client_key(U256_MAX, clientKey);
|
||||
let compressed_serialized = compressed_encrypted.serialize();
|
||||
let compressed_deserialized = CompressedFheUint256.deserialize(compressed_serialized);
|
||||
let decompressed = compressed_deserialized.decompress()
|
||||
decrypted = decompressed.decrypt(clientKey);
|
||||
assert.deepStrictEqual(decrypted, U128_MAX);
|
||||
|
||||
decrypted = decompressed.decrypt(clientKey);
|
||||
assert.deepStrictEqual(decrypted, U256_MAX);
|
||||
let compressed_safe_serialized = compressed_encrypted.safe_serialize(
|
||||
BigInt(10000000),
|
||||
);
|
||||
let compressed_safe_deserialized = CompressedFheUint128.safe_deserialize(
|
||||
compressed_safe_serialized,
|
||||
BigInt(10000000),
|
||||
);
|
||||
let safe_decompressed = compressed_safe_deserialized.decompress();
|
||||
|
||||
let compressed_safe_serialized = compressed_encrypted.safe_serialize(BigInt(10000000));
|
||||
let compressed_safe_deserialized = CompressedFheUint256.safe_deserialize(compressed_safe_serialized, BigInt(10000000));
|
||||
let safe_decompressed = compressed_safe_deserialized.decompress()
|
||||
|
||||
safe_decrypted = safe_decompressed.decrypt(clientKey);
|
||||
assert.deepStrictEqual(safe_decrypted, U256_MAX);
|
||||
safe_decrypted = safe_decompressed.decrypt(clientKey);
|
||||
assert.deepStrictEqual(safe_decrypted, U128_MAX);
|
||||
});
|
||||
|
||||
test('hlapi_client_key_encrypt_decrypt_uint256_small', (t) => {
|
||||
let params_name_small = ShortintParametersName.V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64;
|
||||
let params_small = new ShortintParameters(params_name_small);
|
||||
let config = TfheConfigBuilder.with_custom_parameters(params_small)
|
||||
.build();
|
||||
test("hlapi_client_key_encrypt_decrypt_uint256_big", (t) => {
|
||||
let config = TfheConfigBuilder.default().build();
|
||||
|
||||
let clientKey = TfheClientKey.generate(config);
|
||||
let clientKey = TfheClientKey.generate(config);
|
||||
|
||||
let encrypted = FheUint256.encrypt_with_client_key(U256_MAX, clientKey);
|
||||
let decrypted = encrypted.decrypt(clientKey);
|
||||
assert.deepStrictEqual(decrypted, U256_MAX);
|
||||
let encrypted = FheUint256.encrypt_with_client_key(U256_MAX, clientKey);
|
||||
let decrypted = encrypted.decrypt(clientKey);
|
||||
assert.deepStrictEqual(decrypted, U256_MAX);
|
||||
|
||||
let serialized = encrypted.serialize();
|
||||
let deserialized = FheUint256.deserialize(serialized);
|
||||
let deserialized_decrypted = deserialized.decrypt(clientKey);
|
||||
assert.deepStrictEqual(deserialized_decrypted, U256_MAX);
|
||||
let serialized = encrypted.serialize();
|
||||
let deserialized = FheUint256.deserialize(serialized);
|
||||
let deserialized_decrypted = deserialized.decrypt(clientKey);
|
||||
assert.deepStrictEqual(deserialized_decrypted, U256_MAX);
|
||||
|
||||
let safe_serialized = encrypted.safe_serialize(BigInt(10000000));
|
||||
let safe_deserialized = FheUint256.safe_deserialize(safe_serialized, BigInt(10000000));
|
||||
let safe_deserialized_decrypted = safe_deserialized.decrypt(clientKey);
|
||||
assert.deepStrictEqual(safe_deserialized_decrypted, U256_MAX);
|
||||
let safe_serialized = encrypted.safe_serialize(BigInt(10000000));
|
||||
let safe_deserialized = FheUint256.safe_deserialize(
|
||||
safe_serialized,
|
||||
BigInt(10000000),
|
||||
);
|
||||
let safe_deserialized_decrypted = safe_deserialized.decrypt(clientKey);
|
||||
assert.deepStrictEqual(safe_deserialized_decrypted, U256_MAX);
|
||||
|
||||
// Compressed
|
||||
let compressed_encrypted = CompressedFheUint256.encrypt_with_client_key(U256_MAX, clientKey);
|
||||
let compressed_serialized = compressed_encrypted.serialize();
|
||||
let compressed_deserialized = CompressedFheUint256.deserialize(compressed_serialized);
|
||||
let decompressed = compressed_deserialized.decompress()
|
||||
// Compressed
|
||||
let compressed_encrypted = CompressedFheUint256.encrypt_with_client_key(
|
||||
U256_MAX,
|
||||
clientKey,
|
||||
);
|
||||
let compressed_serialized = compressed_encrypted.serialize();
|
||||
let compressed_deserialized = CompressedFheUint256.deserialize(
|
||||
compressed_serialized,
|
||||
);
|
||||
let decompressed = compressed_deserialized.decompress();
|
||||
|
||||
decrypted = decompressed.decrypt(clientKey);
|
||||
assert.deepStrictEqual(decrypted, U256_MAX);
|
||||
decrypted = decompressed.decrypt(clientKey);
|
||||
assert.deepStrictEqual(decrypted, U256_MAX);
|
||||
|
||||
let compressed_safe_serialized = compressed_encrypted.safe_serialize(BigInt(10000000));
|
||||
let compressed_safe_deserialized = CompressedFheUint256.safe_deserialize(compressed_safe_serialized, BigInt(10000000));
|
||||
let safe_decompressed = compressed_safe_deserialized.decompress()
|
||||
let compressed_safe_serialized = compressed_encrypted.safe_serialize(
|
||||
BigInt(10000000),
|
||||
);
|
||||
let compressed_safe_deserialized = CompressedFheUint256.safe_deserialize(
|
||||
compressed_safe_serialized,
|
||||
BigInt(10000000),
|
||||
);
|
||||
let safe_decompressed = compressed_safe_deserialized.decompress();
|
||||
|
||||
safe_decrypted = safe_decompressed.decrypt(clientKey);
|
||||
assert.deepStrictEqual(safe_decrypted, U256_MAX);
|
||||
safe_decrypted = safe_decompressed.decrypt(clientKey);
|
||||
assert.deepStrictEqual(safe_decrypted, U256_MAX);
|
||||
});
|
||||
|
||||
test('hlapi_decompress_public_key_then_encrypt_decrypt_uint256_small', (t) => {
|
||||
let params_name_small = ShortintParametersName.V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64;
|
||||
let params_small = new ShortintParameters(params_name_small);
|
||||
let config = TfheConfigBuilder.with_custom_parameters(params_small)
|
||||
.build();
|
||||
test("hlapi_client_key_encrypt_decrypt_uint256_small", (t) => {
|
||||
let params_name_small =
|
||||
ShortintParametersName.V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64;
|
||||
let params_small = new ShortintParameters(params_name_small);
|
||||
let config = TfheConfigBuilder.with_custom_parameters(params_small).build();
|
||||
|
||||
let clientKey = TfheClientKey.generate(config);
|
||||
let compressedPublicKey = TfheCompressedPublicKey.new(clientKey);
|
||||
let publicKey = compressedPublicKey.decompress();
|
||||
let clientKey = TfheClientKey.generate(config);
|
||||
|
||||
let encrypted = FheUint256.encrypt_with_client_key(U256_MAX, clientKey);
|
||||
let decrypted = encrypted.decrypt(clientKey);
|
||||
assert.deepStrictEqual(decrypted, U256_MAX);
|
||||
|
||||
let encrypted = FheUint256.encrypt_with_public_key(U256_MAX, publicKey);
|
||||
let decrypted = encrypted.decrypt(clientKey);
|
||||
assert.deepStrictEqual(decrypted, U256_MAX);
|
||||
let serialized = encrypted.serialize();
|
||||
let deserialized = FheUint256.deserialize(serialized);
|
||||
let deserialized_decrypted = deserialized.decrypt(clientKey);
|
||||
assert.deepStrictEqual(deserialized_decrypted, U256_MAX);
|
||||
|
||||
let serialized = encrypted.serialize();
|
||||
let deserialized = FheUint256.deserialize(serialized);
|
||||
let deserialized_decrypted = deserialized.decrypt(clientKey);
|
||||
assert.deepStrictEqual(deserialized_decrypted, U256_MAX);
|
||||
let safe_serialized = encrypted.safe_serialize(BigInt(10000000));
|
||||
let safe_deserialized = FheUint256.safe_deserialize(
|
||||
safe_serialized,
|
||||
BigInt(10000000),
|
||||
);
|
||||
let safe_deserialized_decrypted = safe_deserialized.decrypt(clientKey);
|
||||
assert.deepStrictEqual(safe_deserialized_decrypted, U256_MAX);
|
||||
|
||||
let safe_serialized = encrypted.safe_serialize(BigInt(10000000));
|
||||
let safe_deserialized = FheUint256.safe_deserialize(safe_serialized, BigInt(10000000));
|
||||
let safe_deserialized_decrypted = safe_deserialized.decrypt(clientKey);
|
||||
assert.deepStrictEqual(safe_deserialized_decrypted, U256_MAX);
|
||||
// Compressed
|
||||
let compressed_encrypted = CompressedFheUint256.encrypt_with_client_key(
|
||||
U256_MAX,
|
||||
clientKey,
|
||||
);
|
||||
let compressed_serialized = compressed_encrypted.serialize();
|
||||
let compressed_deserialized = CompressedFheUint256.deserialize(
|
||||
compressed_serialized,
|
||||
);
|
||||
let decompressed = compressed_deserialized.decompress();
|
||||
|
||||
decrypted = decompressed.decrypt(clientKey);
|
||||
assert.deepStrictEqual(decrypted, U256_MAX);
|
||||
|
||||
let compressed_safe_serialized = compressed_encrypted.safe_serialize(
|
||||
BigInt(10000000),
|
||||
);
|
||||
let compressed_safe_deserialized = CompressedFheUint256.safe_deserialize(
|
||||
compressed_safe_serialized,
|
||||
BigInt(10000000),
|
||||
);
|
||||
let safe_decompressed = compressed_safe_deserialized.decompress();
|
||||
|
||||
safe_decrypted = safe_decompressed.decrypt(clientKey);
|
||||
assert.deepStrictEqual(safe_decrypted, U256_MAX);
|
||||
});
|
||||
|
||||
test('hlapi_public_key_encrypt_decrypt_uint256_small', (t) => {
|
||||
let params_name_small = ShortintParametersName.V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64;
|
||||
let params_small = new ShortintParameters(params_name_small);
|
||||
let config = TfheConfigBuilder.with_custom_parameters(params_small)
|
||||
.build();
|
||||
test("hlapi_decompress_public_key_then_encrypt_decrypt_uint256_small", (t) => {
|
||||
let params_name_small =
|
||||
ShortintParametersName.V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64;
|
||||
let params_small = new ShortintParameters(params_name_small);
|
||||
let config = TfheConfigBuilder.with_custom_parameters(params_small).build();
|
||||
|
||||
let clientKey = TfheClientKey.generate(config);
|
||||
let publicKey = TfhePublicKey.new(clientKey);
|
||||
let clientKey = TfheClientKey.generate(config);
|
||||
let compressedPublicKey = TfheCompressedPublicKey.new(clientKey);
|
||||
let publicKey = compressedPublicKey.decompress();
|
||||
|
||||
let encrypted = FheUint256.encrypt_with_public_key(U256_MAX, publicKey);
|
||||
let decrypted = encrypted.decrypt(clientKey);
|
||||
assert.deepStrictEqual(decrypted, U256_MAX);
|
||||
let encrypted = FheUint256.encrypt_with_public_key(U256_MAX, publicKey);
|
||||
let decrypted = encrypted.decrypt(clientKey);
|
||||
assert.deepStrictEqual(decrypted, U256_MAX);
|
||||
|
||||
let serialized = encrypted.serialize();
|
||||
let deserialized = FheUint256.deserialize(serialized);
|
||||
let deserialized_decrypted = deserialized.decrypt(clientKey);
|
||||
assert.deepStrictEqual(deserialized_decrypted, U256_MAX);
|
||||
let serialized = encrypted.serialize();
|
||||
let deserialized = FheUint256.deserialize(serialized);
|
||||
let deserialized_decrypted = deserialized.decrypt(clientKey);
|
||||
assert.deepStrictEqual(deserialized_decrypted, U256_MAX);
|
||||
|
||||
let safe_serialized = encrypted.safe_serialize(BigInt(10000000));
|
||||
let safe_deserialized = FheUint256.safe_deserialize(safe_serialized, BigInt(10000000));
|
||||
let safe_deserialized_decrypted = safe_deserialized.decrypt(clientKey);
|
||||
assert.deepStrictEqual(safe_deserialized_decrypted, U256_MAX);
|
||||
let safe_serialized = encrypted.safe_serialize(BigInt(10000000));
|
||||
let safe_deserialized = FheUint256.safe_deserialize(
|
||||
safe_serialized,
|
||||
BigInt(10000000),
|
||||
);
|
||||
let safe_deserialized_decrypted = safe_deserialized.decrypt(clientKey);
|
||||
assert.deepStrictEqual(safe_deserialized_decrypted, U256_MAX);
|
||||
});
|
||||
|
||||
test("hlapi_public_key_encrypt_decrypt_uint256_small", (t) => {
|
||||
let params_name_small =
|
||||
ShortintParametersName.V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64;
|
||||
let params_small = new ShortintParameters(params_name_small);
|
||||
let config = TfheConfigBuilder.with_custom_parameters(params_small).build();
|
||||
|
||||
let clientKey = TfheClientKey.generate(config);
|
||||
let publicKey = TfhePublicKey.new(clientKey);
|
||||
|
||||
let encrypted = FheUint256.encrypt_with_public_key(U256_MAX, publicKey);
|
||||
let decrypted = encrypted.decrypt(clientKey);
|
||||
assert.deepStrictEqual(decrypted, U256_MAX);
|
||||
|
||||
let serialized = encrypted.serialize();
|
||||
let deserialized = FheUint256.deserialize(serialized);
|
||||
let deserialized_decrypted = deserialized.decrypt(clientKey);
|
||||
assert.deepStrictEqual(deserialized_decrypted, U256_MAX);
|
||||
|
||||
let safe_serialized = encrypted.safe_serialize(BigInt(10000000));
|
||||
let safe_deserialized = FheUint256.safe_deserialize(
|
||||
safe_serialized,
|
||||
BigInt(10000000),
|
||||
);
|
||||
let safe_deserialized_decrypted = safe_deserialized.decrypt(clientKey);
|
||||
assert.deepStrictEqual(safe_deserialized_decrypted, U256_MAX);
|
||||
});
|
||||
|
||||
@@ -1,243 +1,290 @@
|
||||
const crypto = require('crypto');
|
||||
const test = require('node:test');
|
||||
const assert = require('node:assert').strict;
|
||||
const { Boolean, Shortint, BooleanParameterSet, ShortintParametersName, ShortintParameters } = require("../pkg");
|
||||
const crypto = require("crypto");
|
||||
const test = require("node:test");
|
||||
const assert = require("node:assert").strict;
|
||||
const {
|
||||
Boolean,
|
||||
Shortint,
|
||||
BooleanParameterSet,
|
||||
ShortintParametersName,
|
||||
ShortintParameters,
|
||||
} = require("../pkg");
|
||||
|
||||
function genRandomBigIntWithBytes(byteCount) {
|
||||
return BigInt('0x' + crypto.randomBytes(byteCount).toString('hex'))
|
||||
return BigInt("0x" + crypto.randomBytes(byteCount).toString("hex"));
|
||||
}
|
||||
|
||||
// Boolean tests
|
||||
test('boolean_encrypt_decrypt', (t) => {
|
||||
let params = Boolean.get_parameters(BooleanParameterSet.Default);
|
||||
let cks = Boolean.new_client_key(params);
|
||||
let ct = Boolean.encrypt(cks, true);
|
||||
test("boolean_encrypt_decrypt", (t) => {
|
||||
let params = Boolean.get_parameters(BooleanParameterSet.Default);
|
||||
let cks = Boolean.new_client_key(params);
|
||||
let ct = Boolean.encrypt(cks, true);
|
||||
|
||||
let serialized_cks = Boolean.serialize_client_key(cks);
|
||||
let deserialized_cks = Boolean.deserialize_client_key(serialized_cks);
|
||||
let serialized_cks = Boolean.serialize_client_key(cks);
|
||||
let deserialized_cks = Boolean.deserialize_client_key(serialized_cks);
|
||||
|
||||
let serialized_ct = Boolean.serialize_ciphertext(ct);
|
||||
let deserialized_ct = Boolean.deserialize_ciphertext(serialized_ct);
|
||||
let serialized_ct = Boolean.serialize_ciphertext(ct);
|
||||
let deserialized_ct = Boolean.deserialize_ciphertext(serialized_ct);
|
||||
|
||||
let decrypted = Boolean.decrypt(deserialized_cks, deserialized_ct);
|
||||
assert.deepStrictEqual(decrypted, true);
|
||||
let decrypted = Boolean.decrypt(deserialized_cks, deserialized_ct);
|
||||
assert.deepStrictEqual(decrypted, true);
|
||||
|
||||
let sks = Boolean.new_compressed_server_key(cks);
|
||||
let sks = Boolean.new_compressed_server_key(cks);
|
||||
|
||||
let serialized_sks = Boolean.serialize_compressed_server_key(sks);
|
||||
let deserialized_sks = Boolean.deserialize_compressed_server_key(serialized_sks);
|
||||
let serialized_sks = Boolean.serialize_compressed_server_key(sks);
|
||||
let deserialized_sks =
|
||||
Boolean.deserialize_compressed_server_key(serialized_sks);
|
||||
|
||||
// No equality tests here, as wasm stores pointers which will always differ
|
||||
// No equality tests here, as wasm stores pointers which will always differ
|
||||
});
|
||||
|
||||
test('boolean_compressed_encrypt_decrypt', (t) => {
|
||||
let params = Boolean.get_parameters(BooleanParameterSet.Default);
|
||||
let cks = Boolean.new_client_key(params);
|
||||
let ct = Boolean.encrypt_compressed(cks, true);
|
||||
test("boolean_compressed_encrypt_decrypt", (t) => {
|
||||
let params = Boolean.get_parameters(BooleanParameterSet.Default);
|
||||
let cks = Boolean.new_client_key(params);
|
||||
let ct = Boolean.encrypt_compressed(cks, true);
|
||||
|
||||
let serialized_cks = Boolean.serialize_client_key(cks);
|
||||
let deserialized_cks = Boolean.deserialize_client_key(serialized_cks);
|
||||
let serialized_cks = Boolean.serialize_client_key(cks);
|
||||
let deserialized_cks = Boolean.deserialize_client_key(serialized_cks);
|
||||
|
||||
let serialized_ct = Boolean.serialize_compressed_ciphertext(ct);
|
||||
let deserialized_ct = Boolean.deserialize_compressed_ciphertext(serialized_ct);
|
||||
let serialized_ct = Boolean.serialize_compressed_ciphertext(ct);
|
||||
let deserialized_ct =
|
||||
Boolean.deserialize_compressed_ciphertext(serialized_ct);
|
||||
|
||||
let decompressed_ct = Boolean.decompress_ciphertext(deserialized_ct);
|
||||
let decompressed_ct = Boolean.decompress_ciphertext(deserialized_ct);
|
||||
|
||||
let decrypted = Boolean.decrypt(deserialized_cks, decompressed_ct);
|
||||
assert.deepStrictEqual(decrypted, true);
|
||||
let decrypted = Boolean.decrypt(deserialized_cks, decompressed_ct);
|
||||
assert.deepStrictEqual(decrypted, true);
|
||||
});
|
||||
|
||||
test('boolean_public_encrypt_decrypt', (t) => {
|
||||
let params = Boolean.get_parameters(BooleanParameterSet.Default);
|
||||
let cks = Boolean.new_client_key(params);
|
||||
let pk = Boolean.new_public_key(cks);
|
||||
test("boolean_public_encrypt_decrypt", (t) => {
|
||||
let params = Boolean.get_parameters(BooleanParameterSet.Default);
|
||||
let cks = Boolean.new_client_key(params);
|
||||
let pk = Boolean.new_public_key(cks);
|
||||
|
||||
let serialized_pk = Boolean.serialize_public_key(pk);
|
||||
let deserialized_pk = Boolean.deserialize_public_key(serialized_pk);
|
||||
let serialized_pk = Boolean.serialize_public_key(pk);
|
||||
let deserialized_pk = Boolean.deserialize_public_key(serialized_pk);
|
||||
|
||||
let ct = Boolean.encrypt_with_public_key(deserialized_pk, true);
|
||||
let ct = Boolean.encrypt_with_public_key(deserialized_pk, true);
|
||||
|
||||
let serialized_ct = Boolean.serialize_ciphertext(ct);
|
||||
let deserialized_ct = Boolean.deserialize_ciphertext(serialized_ct);
|
||||
let serialized_ct = Boolean.serialize_ciphertext(ct);
|
||||
let deserialized_ct = Boolean.deserialize_ciphertext(serialized_ct);
|
||||
|
||||
let decrypted = Boolean.decrypt(cks, deserialized_ct);
|
||||
assert.deepStrictEqual(decrypted, true);
|
||||
let decrypted = Boolean.decrypt(cks, deserialized_ct);
|
||||
assert.deepStrictEqual(decrypted, true);
|
||||
});
|
||||
|
||||
test('boolean_deterministic_keygen', (t) => {
|
||||
const TEST_LOOP_COUNT = 128;
|
||||
test("boolean_deterministic_keygen", (t) => {
|
||||
const TEST_LOOP_COUNT = 128;
|
||||
|
||||
let seed_high_bytes = genRandomBigIntWithBytes(8);
|
||||
let seed_low_bytes = genRandomBigIntWithBytes(8);
|
||||
let seed_high_bytes = genRandomBigIntWithBytes(8);
|
||||
let seed_low_bytes = genRandomBigIntWithBytes(8);
|
||||
|
||||
let params = Boolean.get_parameters(BooleanParameterSet.Default);
|
||||
let cks = Boolean.new_client_key_from_seed_and_parameters(seed_high_bytes, seed_low_bytes, params);
|
||||
let other_cks = Boolean.new_client_key_from_seed_and_parameters(seed_high_bytes, seed_low_bytes, params);
|
||||
let params = Boolean.get_parameters(BooleanParameterSet.Default);
|
||||
let cks = Boolean.new_client_key_from_seed_and_parameters(
|
||||
seed_high_bytes,
|
||||
seed_low_bytes,
|
||||
params,
|
||||
);
|
||||
let other_cks = Boolean.new_client_key_from_seed_and_parameters(
|
||||
seed_high_bytes,
|
||||
seed_low_bytes,
|
||||
params,
|
||||
);
|
||||
|
||||
for (let i = 0; i < TEST_LOOP_COUNT; i++) {
|
||||
let ct_true = Boolean.encrypt(cks, true);
|
||||
let decrypt_true_other = Boolean.decrypt(other_cks, ct_true);
|
||||
assert.deepStrictEqual(decrypt_true_other, true);
|
||||
for (let i = 0; i < TEST_LOOP_COUNT; i++) {
|
||||
let ct_true = Boolean.encrypt(cks, true);
|
||||
let decrypt_true_other = Boolean.decrypt(other_cks, ct_true);
|
||||
assert.deepStrictEqual(decrypt_true_other, true);
|
||||
|
||||
let ct_false = Boolean.encrypt(cks, false);
|
||||
let decrypt_false_other = Boolean.decrypt(other_cks, ct_false);
|
||||
assert.deepStrictEqual(decrypt_false_other, false);
|
||||
}
|
||||
let ct_false = Boolean.encrypt(cks, false);
|
||||
let decrypt_false_other = Boolean.decrypt(other_cks, ct_false);
|
||||
assert.deepStrictEqual(decrypt_false_other, false);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
// Shortint tests
|
||||
test('shortint_encrypt_decrypt', (t) => {
|
||||
let params_name = ShortintParametersName.PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64;
|
||||
let params = new ShortintParameters(params_name);
|
||||
let cks = Shortint.new_client_key(params);
|
||||
let ct = Shortint.encrypt(cks, BigInt(3));
|
||||
test("shortint_encrypt_decrypt", (t) => {
|
||||
let params_name =
|
||||
ShortintParametersName.PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64;
|
||||
let params = new ShortintParameters(params_name);
|
||||
let cks = Shortint.new_client_key(params);
|
||||
let ct = Shortint.encrypt(cks, BigInt(3));
|
||||
|
||||
let serialized_cks = Shortint.serialize_client_key(cks);
|
||||
let deserialized_cks = Shortint.deserialize_client_key(serialized_cks);
|
||||
let serialized_cks = Shortint.serialize_client_key(cks);
|
||||
let deserialized_cks = Shortint.deserialize_client_key(serialized_cks);
|
||||
|
||||
let serialized_ct = Shortint.serialize_ciphertext(ct);
|
||||
let deserialized_ct = Shortint.deserialize_ciphertext(serialized_ct);
|
||||
let serialized_ct = Shortint.serialize_ciphertext(ct);
|
||||
let deserialized_ct = Shortint.deserialize_ciphertext(serialized_ct);
|
||||
|
||||
let decrypted = Shortint.decrypt(deserialized_cks, deserialized_ct);
|
||||
assert.deepStrictEqual(decrypted, BigInt(3));
|
||||
let decrypted = Shortint.decrypt(deserialized_cks, deserialized_ct);
|
||||
assert.deepStrictEqual(decrypted, BigInt(3));
|
||||
|
||||
let sks = Shortint.new_compressed_server_key(cks);
|
||||
let sks = Shortint.new_compressed_server_key(cks);
|
||||
|
||||
let serialized_sks = Shortint.serialize_compressed_server_key(sks);
|
||||
let deserialized_sks = Shortint.deserialize_compressed_server_key(serialized_sks);
|
||||
let serialized_sks = Shortint.serialize_compressed_server_key(sks);
|
||||
let deserialized_sks =
|
||||
Shortint.deserialize_compressed_server_key(serialized_sks);
|
||||
|
||||
// No equality tests here, as wasm stores pointers which will always differ
|
||||
// No equality tests here, as wasm stores pointers which will always differ
|
||||
|
||||
// Encryption using small keys
|
||||
let params_name_small = ShortintParametersName.V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64;
|
||||
let params_small = new ShortintParameters(params_name_small);
|
||||
let cks_small = Shortint.new_client_key(params_small);
|
||||
// Encryption using small keys
|
||||
let params_name_small =
|
||||
ShortintParametersName.V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64;
|
||||
let params_small = new ShortintParameters(params_name_small);
|
||||
let cks_small = Shortint.new_client_key(params_small);
|
||||
|
||||
let ct_small = Shortint.encrypt(cks_small, BigInt(3));
|
||||
let ct_small = Shortint.encrypt(cks_small, BigInt(3));
|
||||
|
||||
let serialized_ct_small = Shortint.serialize_ciphertext(ct_small);
|
||||
let deserialized_ct_small = Shortint.deserialize_ciphertext(serialized_ct_small);
|
||||
let serialized_ct_small = Shortint.serialize_ciphertext(ct_small);
|
||||
let deserialized_ct_small =
|
||||
Shortint.deserialize_ciphertext(serialized_ct_small);
|
||||
|
||||
let decrypted_small = Shortint.decrypt(cks_small, deserialized_ct_small);
|
||||
assert.deepStrictEqual(decrypted_small, BigInt(3));
|
||||
let decrypted_small = Shortint.decrypt(cks_small, deserialized_ct_small);
|
||||
assert.deepStrictEqual(decrypted_small, BigInt(3));
|
||||
});
|
||||
|
||||
test('shortint_compressed_encrypt_decrypt', (t) => {
|
||||
let params_name = ShortintParametersName.PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64;
|
||||
let params = new ShortintParameters(params_name);
|
||||
let cks = Shortint.new_client_key(params);
|
||||
let ct = Shortint.encrypt_compressed(cks, BigInt(3));
|
||||
test("shortint_compressed_encrypt_decrypt", (t) => {
|
||||
let params_name =
|
||||
ShortintParametersName.PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64;
|
||||
let params = new ShortintParameters(params_name);
|
||||
let cks = Shortint.new_client_key(params);
|
||||
let ct = Shortint.encrypt_compressed(cks, BigInt(3));
|
||||
|
||||
let serialized_cks = Shortint.serialize_client_key(cks);
|
||||
let deserialized_cks = Shortint.deserialize_client_key(serialized_cks);
|
||||
let serialized_cks = Shortint.serialize_client_key(cks);
|
||||
let deserialized_cks = Shortint.deserialize_client_key(serialized_cks);
|
||||
|
||||
let serialized_ct = Shortint.serialize_compressed_ciphertext(ct);
|
||||
let deserialized_ct = Shortint.deserialize_compressed_ciphertext(serialized_ct);
|
||||
let serialized_ct = Shortint.serialize_compressed_ciphertext(ct);
|
||||
let deserialized_ct =
|
||||
Shortint.deserialize_compressed_ciphertext(serialized_ct);
|
||||
|
||||
let decompressed_ct = Shortint.decompress_ciphertext(deserialized_ct);
|
||||
let decompressed_ct = Shortint.decompress_ciphertext(deserialized_ct);
|
||||
|
||||
let decrypted = Shortint.decrypt(deserialized_cks, decompressed_ct);
|
||||
assert.deepStrictEqual(decrypted, BigInt(3));
|
||||
let decrypted = Shortint.decrypt(deserialized_cks, decompressed_ct);
|
||||
assert.deepStrictEqual(decrypted, BigInt(3));
|
||||
|
||||
// Encryption using small keys
|
||||
// We don't have TUniform small params so use previous gaussian ones.
|
||||
let params_name_small = ShortintParametersName.V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64;
|
||||
let params_small = new ShortintParameters(params_name_small);
|
||||
let cks_small = Shortint.new_client_key(params_small);
|
||||
// Encryption using small keys
|
||||
// We don't have TUniform small params so use previous gaussian ones.
|
||||
let params_name_small =
|
||||
ShortintParametersName.V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64;
|
||||
let params_small = new ShortintParameters(params_name_small);
|
||||
let cks_small = Shortint.new_client_key(params_small);
|
||||
|
||||
let ct_small = Shortint.encrypt_compressed(cks_small, BigInt(3));
|
||||
let ct_small = Shortint.encrypt_compressed(cks_small, BigInt(3));
|
||||
|
||||
let serialized_ct_small = Shortint.serialize_compressed_ciphertext(ct_small);
|
||||
let deserialized_ct_small = Shortint.deserialize_compressed_ciphertext(serialized_ct_small);
|
||||
let serialized_ct_small = Shortint.serialize_compressed_ciphertext(ct_small);
|
||||
let deserialized_ct_small =
|
||||
Shortint.deserialize_compressed_ciphertext(serialized_ct_small);
|
||||
|
||||
let decompressed_ct_small = Shortint.decompress_ciphertext(deserialized_ct_small);
|
||||
let decompressed_ct_small = Shortint.decompress_ciphertext(
|
||||
deserialized_ct_small,
|
||||
);
|
||||
|
||||
let decrypted_small = Shortint.decrypt(cks_small, decompressed_ct_small);
|
||||
assert.deepStrictEqual(decrypted_small, BigInt(3));
|
||||
let decrypted_small = Shortint.decrypt(cks_small, decompressed_ct_small);
|
||||
assert.deepStrictEqual(decrypted_small, BigInt(3));
|
||||
});
|
||||
|
||||
test('shortint_public_encrypt_decrypt', (t) => {
|
||||
let params_name_2_0 = ShortintParametersName.V0_11_PARAM_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M64;
|
||||
let params_2_0 = new ShortintParameters(params_name_2_0);
|
||||
let cks = Shortint.new_client_key(params_2_0);
|
||||
let pk = Shortint.new_public_key(cks);
|
||||
test("shortint_public_encrypt_decrypt", (t) => {
|
||||
let params_name_2_0 =
|
||||
ShortintParametersName.V0_11_PARAM_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M64;
|
||||
let params_2_0 = new ShortintParameters(params_name_2_0);
|
||||
let cks = Shortint.new_client_key(params_2_0);
|
||||
let pk = Shortint.new_public_key(cks);
|
||||
|
||||
let ct = Shortint.encrypt_with_public_key(pk, BigInt(3));
|
||||
let ct = Shortint.encrypt_with_public_key(pk, BigInt(3));
|
||||
|
||||
let serialized_ct = Shortint.serialize_ciphertext(ct);
|
||||
let deserialized_ct = Shortint.deserialize_ciphertext(serialized_ct);
|
||||
let serialized_ct = Shortint.serialize_ciphertext(ct);
|
||||
let deserialized_ct = Shortint.deserialize_ciphertext(serialized_ct);
|
||||
|
||||
let decrypted = Shortint.decrypt(cks, deserialized_ct);
|
||||
assert.deepStrictEqual(decrypted, BigInt(3));
|
||||
let decrypted = Shortint.decrypt(cks, deserialized_ct);
|
||||
assert.deepStrictEqual(decrypted, BigInt(3));
|
||||
|
||||
// Small
|
||||
let params_name_2_2_small = ShortintParametersName.V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64;
|
||||
let params_2_2_small = new ShortintParameters(params_name_2_2_small);
|
||||
let cks_small = Shortint.new_client_key(params_2_2_small);
|
||||
// Small
|
||||
let params_name_2_2_small =
|
||||
ShortintParametersName.V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64;
|
||||
let params_2_2_small = new ShortintParameters(params_name_2_2_small);
|
||||
let cks_small = Shortint.new_client_key(params_2_2_small);
|
||||
|
||||
let pk_small = Shortint.new_public_key(cks_small);
|
||||
let pk_small = Shortint.new_public_key(cks_small);
|
||||
|
||||
let ct_small = Shortint.encrypt_with_public_key(pk_small, BigInt(3));
|
||||
let ct_small = Shortint.encrypt_with_public_key(pk_small, BigInt(3));
|
||||
|
||||
let serialized_ct_small = Shortint.serialize_ciphertext(ct_small);
|
||||
let deserialized_ct_small = Shortint.deserialize_ciphertext(serialized_ct_small);
|
||||
let serialized_ct_small = Shortint.serialize_ciphertext(ct_small);
|
||||
let deserialized_ct_small =
|
||||
Shortint.deserialize_ciphertext(serialized_ct_small);
|
||||
|
||||
let decrypted_small = Shortint.decrypt(cks_small, deserialized_ct_small);
|
||||
assert.deepStrictEqual(decrypted_small, BigInt(3));
|
||||
let decrypted_small = Shortint.decrypt(cks_small, deserialized_ct_small);
|
||||
assert.deepStrictEqual(decrypted_small, BigInt(3));
|
||||
});
|
||||
|
||||
test('shortint_compressed_public_encrypt_decrypt', (t) => {
|
||||
let params_name = ShortintParametersName.PARAM_MESSAGE_1_CARRY_1_KS_PBS;
|
||||
let params = new ShortintParameters(params_name);
|
||||
let cks = Shortint.new_client_key(params);
|
||||
let pk = Shortint.new_compressed_public_key(cks);
|
||||
test("shortint_compressed_public_encrypt_decrypt", (t) => {
|
||||
let params_name = ShortintParametersName.PARAM_MESSAGE_1_CARRY_1_KS_PBS;
|
||||
let params = new ShortintParameters(params_name);
|
||||
let cks = Shortint.new_client_key(params);
|
||||
let pk = Shortint.new_compressed_public_key(cks);
|
||||
|
||||
let serialized_pk = Shortint.serialize_compressed_public_key(pk);
|
||||
let deserialized_pk = Shortint.deserialize_compressed_public_key(serialized_pk);
|
||||
let serialized_pk = Shortint.serialize_compressed_public_key(pk);
|
||||
let deserialized_pk =
|
||||
Shortint.deserialize_compressed_public_key(serialized_pk);
|
||||
|
||||
let ct = Shortint.encrypt_with_compressed_public_key(deserialized_pk, BigInt(1));
|
||||
let ct = Shortint.encrypt_with_compressed_public_key(
|
||||
deserialized_pk,
|
||||
BigInt(1),
|
||||
);
|
||||
|
||||
let serialized_ct = Shortint.serialize_ciphertext(ct);
|
||||
let deserialized_ct = Shortint.deserialize_ciphertext(serialized_ct);
|
||||
let serialized_ct = Shortint.serialize_ciphertext(ct);
|
||||
let deserialized_ct = Shortint.deserialize_ciphertext(serialized_ct);
|
||||
|
||||
let decrypted = Shortint.decrypt(cks, deserialized_ct);
|
||||
assert.deepStrictEqual(decrypted, BigInt(1));
|
||||
let decrypted = Shortint.decrypt(cks, deserialized_ct);
|
||||
assert.deepStrictEqual(decrypted, BigInt(1));
|
||||
|
||||
// Small
|
||||
let params_name_small = ShortintParametersName.V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64;
|
||||
let params_small = new ShortintParameters(params_name_small);
|
||||
let cks_small = Shortint.new_client_key(params_small);
|
||||
// Small
|
||||
let params_name_small =
|
||||
ShortintParametersName.V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64;
|
||||
let params_small = new ShortintParameters(params_name_small);
|
||||
let cks_small = Shortint.new_client_key(params_small);
|
||||
|
||||
let pk_small = Shortint.new_compressed_public_key(cks_small);
|
||||
let pk_small = Shortint.new_compressed_public_key(cks_small);
|
||||
|
||||
let serialized_pk_small = Shortint.serialize_compressed_public_key(pk_small);
|
||||
let deserialized_pk_small = Shortint.deserialize_compressed_public_key(serialized_pk_small);
|
||||
let serialized_pk_small = Shortint.serialize_compressed_public_key(pk_small);
|
||||
let deserialized_pk_small =
|
||||
Shortint.deserialize_compressed_public_key(serialized_pk_small);
|
||||
|
||||
let ct_small = Shortint.encrypt_with_compressed_public_key(deserialized_pk_small, BigInt(1));
|
||||
let ct_small = Shortint.encrypt_with_compressed_public_key(
|
||||
deserialized_pk_small,
|
||||
BigInt(1),
|
||||
);
|
||||
|
||||
let serialized_ct_small = Shortint.serialize_ciphertext(ct_small);
|
||||
let deserialized_ct_small = Shortint.deserialize_ciphertext(serialized_ct_small);
|
||||
let serialized_ct_small = Shortint.serialize_ciphertext(ct_small);
|
||||
let deserialized_ct_small =
|
||||
Shortint.deserialize_ciphertext(serialized_ct_small);
|
||||
|
||||
let decrypted_small = Shortint.decrypt(cks_small, deserialized_ct_small);
|
||||
assert.deepStrictEqual(decrypted_small, BigInt(1));
|
||||
let decrypted_small = Shortint.decrypt(cks_small, deserialized_ct_small);
|
||||
assert.deepStrictEqual(decrypted_small, BigInt(1));
|
||||
});
|
||||
|
||||
test('shortint_deterministic_keygen', (t) => {
|
||||
const TEST_LOOP_COUNT = 128;
|
||||
test("shortint_deterministic_keygen", (t) => {
|
||||
const TEST_LOOP_COUNT = 128;
|
||||
|
||||
let seed_high_bytes = genRandomBigIntWithBytes(8);
|
||||
let seed_low_bytes = genRandomBigIntWithBytes(8);
|
||||
let seed_high_bytes = genRandomBigIntWithBytes(8);
|
||||
let seed_low_bytes = genRandomBigIntWithBytes(8);
|
||||
|
||||
let params_name = ShortintParametersName.PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64;
|
||||
let params = new ShortintParameters(params_name);
|
||||
let cks = Shortint.new_client_key_from_seed_and_parameters(seed_high_bytes, seed_low_bytes, params);
|
||||
let other_cks = Shortint.new_client_key_from_seed_and_parameters(seed_high_bytes, seed_low_bytes, params);
|
||||
let params_name =
|
||||
ShortintParametersName.PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64;
|
||||
let params = new ShortintParameters(params_name);
|
||||
let cks = Shortint.new_client_key_from_seed_and_parameters(
|
||||
seed_high_bytes,
|
||||
seed_low_bytes,
|
||||
params,
|
||||
);
|
||||
let other_cks = Shortint.new_client_key_from_seed_and_parameters(
|
||||
seed_high_bytes,
|
||||
seed_low_bytes,
|
||||
params,
|
||||
);
|
||||
|
||||
for (let i = 0; i < TEST_LOOP_COUNT; i++) {
|
||||
let random_message = genRandomBigIntWithBytes(4) % BigInt(4);
|
||||
let ct = Shortint.encrypt(cks, random_message);
|
||||
let decrypt_other = Shortint.decrypt(other_cks, ct);
|
||||
assert.deepStrictEqual(decrypt_other, random_message);
|
||||
}
|
||||
for (let i = 0; i < TEST_LOOP_COUNT; i++) {
|
||||
let random_message = genRandomBigIntWithBytes(4) % BigInt(4);
|
||||
let ct = Shortint.encrypt(cks, random_message);
|
||||
let decrypt_other = Shortint.decrypt(other_cks, ct);
|
||||
assert.deepStrictEqual(decrypt_other, random_message);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -9,7 +9,7 @@ fmt:
|
||||
npm install
|
||||
npm run format
|
||||
|
||||
.PHONY: fmt # Check Javascript code format
|
||||
.PHONY: check_fmt # Check Javascript code format
|
||||
check_fmt:
|
||||
npm install
|
||||
npm run check-format
|
||||
|
||||
Reference in New Issue
Block a user