@inco/js 0.6.1 → 0.6.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/binary.d.ts +1 -0
- package/dist/cjs/binary.js +6 -2
- package/dist/cjs/encryption/encryption.d.ts +17 -20
- package/dist/cjs/encryption/encryption.js +30 -12
- package/dist/cjs/generated/abis/lightning-preview.d.ts +8 -106
- package/dist/cjs/generated/abis/lightning-preview.js +5 -55
- package/dist/cjs/generated/abis/lightning.d.ts +54 -115
- package/dist/cjs/generated/abis/lightning.js +32 -65
- package/dist/cjs/generated/abis/verifier.d.ts +86 -36
- package/dist/cjs/generated/abis/verifier.js +57 -21
- package/dist/cjs/generated/es/cosmos_proto/cosmos_pb.js +2 -2
- package/dist/cjs/generated/es/inco/covalidator/compute/v1/server_pb.d.ts +775 -0
- package/dist/cjs/generated/es/inco/covalidator/compute/v1/server_pb.js +261 -0
- package/dist/cjs/generated/es/inco/covalidator/compute/v1/types_pb.d.ts +186 -0
- package/dist/cjs/generated/es/inco/covalidator/compute/v1/types_pb.js +47 -0
- package/dist/cjs/generated/es/inco/fhe/v1/types_pb.js +2 -2
- package/dist/cjs/generated/es/inco/kms/lite/v1/kms_service_pb.js +2 -2
- package/dist/cjs/generated/es/inco/kms/lite/v1/types_pb.js +2 -2
- package/dist/cjs/handle.d.ts +16 -0
- package/dist/cjs/handle.js +28 -3
- package/dist/cjs/lite/ecies.d.ts +0 -2
- package/dist/cjs/lite/ecies.js +24 -13
- package/dist/cjs/lite/hadu.d.ts +3 -23
- package/dist/cjs/lite/hadu.js +26 -29
- package/dist/cjs/lite/lightning.js +1 -2
- package/dist/cjs/viem.d.ts +44 -47
- package/dist/esm/binary.d.ts +1 -0
- package/dist/esm/binary.js +5 -2
- package/dist/esm/encryption/encryption.d.ts +17 -20
- package/dist/esm/encryption/encryption.js +26 -12
- package/dist/esm/generated/abis/lightning-preview.d.ts +8 -106
- package/dist/esm/generated/abis/lightning-preview.js +5 -55
- package/dist/esm/generated/abis/lightning.d.ts +54 -115
- package/dist/esm/generated/abis/lightning.js +32 -65
- package/dist/esm/generated/abis/verifier.d.ts +86 -36
- package/dist/esm/generated/abis/verifier.js +57 -21
- package/dist/esm/generated/es/cosmos_proto/cosmos_pb.js +2 -2
- package/dist/esm/generated/es/inco/covalidator/compute/v1/server_pb.d.ts +775 -0
- package/dist/esm/generated/es/inco/covalidator/compute/v1/server_pb.js +258 -0
- package/dist/esm/generated/es/inco/covalidator/compute/v1/types_pb.d.ts +186 -0
- package/dist/esm/generated/es/inco/covalidator/compute/v1/types_pb.js +44 -0
- package/dist/esm/generated/es/inco/fhe/v1/types_pb.js +2 -2
- package/dist/esm/generated/es/inco/kms/lite/v1/kms_service_pb.js +2 -2
- package/dist/esm/generated/es/inco/kms/lite/v1/types_pb.js +2 -2
- package/dist/esm/handle.d.ts +16 -0
- package/dist/esm/handle.js +27 -3
- package/dist/esm/lite/ecies.d.ts +0 -2
- package/dist/esm/lite/ecies.js +26 -15
- package/dist/esm/lite/hadu.d.ts +3 -23
- package/dist/esm/lite/hadu.js +28 -30
- package/dist/esm/lite/lightning.js +1 -2
- package/dist/esm/viem.d.ts +44 -47
- package/dist/types/binary.d.ts +1 -0
- package/dist/types/encryption/encryption.d.ts +17 -20
- package/dist/types/generated/abis/lightning-preview.d.ts +8 -106
- package/dist/types/generated/abis/lightning.d.ts +54 -115
- package/dist/types/generated/abis/verifier.d.ts +86 -36
- package/dist/types/generated/es/inco/covalidator/compute/v1/server_pb.d.ts +775 -0
- package/dist/types/generated/es/inco/covalidator/compute/v1/types_pb.d.ts +186 -0
- package/dist/types/handle.d.ts +16 -0
- package/dist/types/lite/ecies.d.ts +0 -2
- package/dist/types/lite/hadu.d.ts +3 -23
- package/dist/types/viem.d.ts +44 -47
- package/package.json +3 -1
package/dist/cjs/handle.js
CHANGED
|
@@ -5,6 +5,7 @@ exports.isFheType = isFheType;
|
|
|
5
5
|
exports.getHandleType = getHandleType;
|
|
6
6
|
exports.computePrehandle = computePrehandle;
|
|
7
7
|
exports.computeHandle = computeHandle;
|
|
8
|
+
exports.hashInputContext = hashInputContext;
|
|
8
9
|
// See solidity https://github.com/zama-ai/fhevm/blob/429d127709b56c5b8ec564a2f2cc329aa7f6722f/lib/TFHEExecutor.sol#L15
|
|
9
10
|
const effect_1 = require("effect");
|
|
10
11
|
const sha3_1 = require("sha3");
|
|
@@ -53,6 +54,14 @@ function getHandleType(handle) {
|
|
|
53
54
|
/// @dev handle format for user inputs is: keccak256(keccak256(CiphertextFHEList)||index_handle)[0:29] || index_handle || handle_type || handle_version
|
|
54
55
|
/// @dev other handles format (fhe ops results) is: keccak256(keccak256(rawCiphertextFHEList)||index_handle)[0:30] || handle_type || handle_versioreenctestn
|
|
55
56
|
/// @dev the CiphertextFHEList actually contains: 1 byte (= N) for size of handles_list, N bytes for the handles_types : 1 per handle, then the original fhe160list raw ciphertext
|
|
57
|
+
/**
|
|
58
|
+
* Computes the prehandle hash for an input based on the ciphertext
|
|
59
|
+
*
|
|
60
|
+
* @param ciphertextPayload Note this is the different from the input which has the external handle prepended
|
|
61
|
+
* @param indexHandle
|
|
62
|
+
* @param handleType
|
|
63
|
+
* @param handleVersion
|
|
64
|
+
*/
|
|
56
65
|
function computePrehandle({ ciphertext, indexHandle, handleType, handleVersion, }) {
|
|
57
66
|
assertUint8(indexHandle);
|
|
58
67
|
assertUint8(handleType);
|
|
@@ -71,8 +80,13 @@ function computePrehandle({ ciphertext, indexHandle, handleType, handleVersion,
|
|
|
71
80
|
handle.writeUInt8(handleVersion, 31);
|
|
72
81
|
return handle;
|
|
73
82
|
}
|
|
74
|
-
|
|
75
|
-
|
|
83
|
+
/**
|
|
84
|
+
* Computes the final handle for an input based on the prehandle and the input context, matches the handle generation
|
|
85
|
+
* in Go and Solidity
|
|
86
|
+
*
|
|
87
|
+
* @param prehandle
|
|
88
|
+
* @param context
|
|
89
|
+
*/
|
|
76
90
|
function computeHandle({ prehandle, context, }) {
|
|
77
91
|
if (prehandle.length !== 32) {
|
|
78
92
|
throw new Error(`prehandle should be 32 bytes but is: ${prehandle.length}`);
|
|
@@ -95,9 +109,20 @@ function computeHandle({ prehandle, context, }) {
|
|
|
95
109
|
prehandle.slice(29, 32),
|
|
96
110
|
]);
|
|
97
111
|
}
|
|
112
|
+
function hashInputContext(context) {
|
|
113
|
+
const packed = (0, viem_1.encodePacked)(['string', 'uint256', 'address', 'address', 'address'], [
|
|
114
|
+
// Note: The x/hostchain spec requires the chain ID to be prefixed with 'evm/' for EVM chains
|
|
115
|
+
'evm/',
|
|
116
|
+
context.hostChainId,
|
|
117
|
+
context.aclAddress,
|
|
118
|
+
context.userAddress,
|
|
119
|
+
context.contractAddress,
|
|
120
|
+
]);
|
|
121
|
+
return new sha3_1.Keccak(256).update(Buffer.from((0, viem_1.hexToBytes)(packed))).digest();
|
|
122
|
+
}
|
|
98
123
|
function assertUint8(value) {
|
|
99
124
|
if (!Number.isInteger(value) || value < 0 || value > 255) {
|
|
100
125
|
throw new Error(`Invalid uint8 value: ${value}`);
|
|
101
126
|
}
|
|
102
127
|
}
|
|
103
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
128
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hhbmRsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFvQ0EsOEJBRUM7QUF3QkQsc0NBT0M7QUFlRCw0Q0EyQkM7QUFTRCxzQ0E4QkM7QUFFRCw0Q0FhQztBQXJLRCx1SEFBdUg7QUFDdkgsbUNBQWdDO0FBQ2hDLCtCQUE4QjtBQUM5QiwrQkFBdUQ7QUFDdkQsMkNBQXdDO0FBRTNCLFFBQUEsY0FBYyxHQUFHLENBQUMsQ0FBQztBQUVoQyxtSEFBbUg7QUFDbkgsd0hBQXdIO0FBQ3hILDJCQUEyQjtBQUNkLFFBQUEsV0FBVyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDdkMsS0FBSyxFQUFFLENBQUM7SUFDUixNQUFNLEVBQUUsQ0FBQztJQUNULE1BQU0sRUFBRSxDQUFDO0lBQ1QsT0FBTyxFQUFFLENBQUM7SUFDVixPQUFPLEVBQUUsQ0FBQztJQUNWLE9BQU8sRUFBRSxDQUFDO0lBQ1YsUUFBUSxFQUFFLENBQUM7SUFDWCxRQUFRLEVBQUUsQ0FBQztJQUNYLFFBQVEsRUFBRSxDQUFDO0lBQ1gsUUFBUSxFQUFFLENBQUM7SUFDWCxTQUFTLEVBQUUsRUFBRTtJQUNiLFNBQVMsRUFBRSxFQUFFO0NBQ2QsQ0FBQyxDQUFDO0FBRUgsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxtQkFBVyxDQUFpQyxDQUFDO0FBRWhFLFFBQUEsY0FBYyxHQUFHLGVBQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FBQztBQVE3RCxTQUFnQixTQUFTLENBQUMsS0FBYTtJQUNyQyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsbUJBQVcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFnQixDQUFDLENBQUM7QUFDL0QsQ0FBQztBQUVZLFFBQUEsWUFBWSxHQUFHLGVBQU0sQ0FBQyxNQUFNLENBQUM7SUFDeEMsV0FBVyxFQUFFLGVBQU0sQ0FBQyxNQUFNO0lB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
|
package/dist/cjs/lite/ecies.d.ts
CHANGED
|
@@ -13,14 +13,12 @@ export declare function decodeSecp256k1PublicKey(pubKeyCompressed: Uint8Array):
|
|
|
13
13
|
export declare function decodeSecp256k1PrivateKey(privKey: Uint8Array): Secp256k1Keypair;
|
|
14
14
|
export declare function encrypt(pubKeyA: Secp256k1PubKey, plaintext: Uint8Array, privKeyB: Secp256k1Keypair): Promise<Uint8Array>;
|
|
15
15
|
export type EciesEncryptorArgs = {
|
|
16
|
-
scheme: EciesScheme;
|
|
17
16
|
pubKeyA: Secp256k1PubKey;
|
|
18
17
|
privKeyB: Secp256k1Keypair;
|
|
19
18
|
};
|
|
20
19
|
export declare function getEciesEncryptor({ pubKeyA, privKeyB, }: EciesEncryptorArgs): Encryptor<EciesScheme>;
|
|
21
20
|
export declare function decrypt(privKeyA: Secp256k1Keypair, ciphertext: Uint8Array): Promise<Uint8Array>;
|
|
22
21
|
export type EciesDecryptorArgs = {
|
|
23
|
-
scheme: EciesScheme;
|
|
24
22
|
privKeyA: Secp256k1Keypair;
|
|
25
23
|
};
|
|
26
24
|
export declare function getEciesDecryptor({ privKeyA, }: EciesDecryptorArgs): Decryptor<EciesScheme>;
|
package/dist/cjs/lite/ecies.js
CHANGED
|
@@ -14,6 +14,7 @@ const ellipticPkg = require("elliptic");
|
|
|
14
14
|
const binary_js_1 = require("../binary.js");
|
|
15
15
|
const encryption_js_1 = require("../encryption/encryption.js");
|
|
16
16
|
const handle_js_1 = require("../handle.js");
|
|
17
|
+
const schema_js_1 = require("../schema.js");
|
|
17
18
|
const hadu_js_1 = require("./hadu.js");
|
|
18
19
|
const secp256k1 = new ellipticPkg.ec('secp256k1');
|
|
19
20
|
// Convert an ec.KeyPair from the 'elliptic' package (assumed to have geen generated
|
|
@@ -81,8 +82,8 @@ function getEciesEncryptor({ pubKeyA, privKeyB, }) {
|
|
|
81
82
|
if (plaintext.scheme !== encryption_js_1.encryptionSchemes.ecies) {
|
|
82
83
|
throw new Error(`Plaintext with scheme ${(0, encryption_js_1.getEncryptionSchemeName)(plaintext.scheme)} cannot be encrypted with ECIES`);
|
|
83
84
|
}
|
|
84
|
-
const
|
|
85
|
-
const ct = await (0, ecies_geth_1.encrypt)(pubKeyABuffer,
|
|
85
|
+
const inputCiphertextPayloadBytes = Buffer.from((0, hadu_js_1.encodeInput)({ plaintext, context }));
|
|
86
|
+
const ct = await (0, ecies_geth_1.encrypt)(pubKeyABuffer, inputCiphertextPayloadBytes, {
|
|
86
87
|
ephemPrivateKey: privKeyBBuffer,
|
|
87
88
|
});
|
|
88
89
|
const prehandle = (0, handle_js_1.computePrehandle)({
|
|
@@ -95,6 +96,7 @@ function getEciesEncryptor({ pubKeyA, privKeyB, }) {
|
|
|
95
96
|
prehandle,
|
|
96
97
|
context: context,
|
|
97
98
|
});
|
|
99
|
+
// const inputBytes = Buffer.concat([handle, ct]);
|
|
98
100
|
return {
|
|
99
101
|
prehandle: (0, binary_js_1.asBytes32)(prehandle),
|
|
100
102
|
handle: (0, binary_js_1.asBytes32)(handle),
|
|
@@ -102,7 +104,8 @@ function getEciesEncryptor({ pubKeyA, privKeyB, }) {
|
|
|
102
104
|
ciphertext: {
|
|
103
105
|
scheme: encryption_js_1.encryptionSchemes.ecies,
|
|
104
106
|
type: plaintext.type,
|
|
105
|
-
|
|
107
|
+
// The prepended handle serves as a checksum on the encrypted payload, so we can fail early on an accidental mismatch
|
|
108
|
+
value: (0, encryption_js_1.encodeCiphertextInput)((0, binary_js_1.bytesToHex)(handle), (0, binary_js_1.bytesToHex)(ct)),
|
|
106
109
|
},
|
|
107
110
|
};
|
|
108
111
|
};
|
|
@@ -117,19 +120,27 @@ async function decrypt(privKeyA, ciphertext) {
|
|
|
117
120
|
}
|
|
118
121
|
function getEciesDecryptor({ privKeyA, }) {
|
|
119
122
|
const privKeyABuffer = privKeyA.kp.getPrivate().toArrayLike(Buffer, 'be', 32);
|
|
120
|
-
return async ({ scheme, type, value,
|
|
123
|
+
return async ({ scheme, type, value, }) => {
|
|
121
124
|
if (scheme !== encryption_js_1.encryptionSchemes.ecies) {
|
|
122
125
|
throw new Error(`Ciphertext with scheme ${(0, encryption_js_1.getEncryptionSchemeName)(scheme)} cannot be decrypted with ECIES`);
|
|
123
126
|
}
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
127
|
+
// remove the prepended handle
|
|
128
|
+
const { ciphertext } = (0, encryption_js_1.decodeCiphertextInput)(value);
|
|
129
|
+
const ptBuf = await (0, ecies_geth_1.decrypt)(privKeyABuffer, (0, binary_js_1.bytesFromHexString)(ciphertext));
|
|
130
|
+
const payload = (0, hadu_js_1.decodeInput)(ptBuf);
|
|
131
|
+
if (payload.values.length === 0) {
|
|
132
|
+
throw new Error('no plaintexts in decrypted input');
|
|
130
133
|
}
|
|
131
|
-
|
|
132
|
-
|
|
134
|
+
if (payload.values.length > 1) {
|
|
135
|
+
throw new Error('multiple plaintexts in decrypted input, only one currently supported');
|
|
136
|
+
}
|
|
137
|
+
const pt = payload.values[0];
|
|
138
|
+
const computable = pt.value;
|
|
139
|
+
if (computable.case !== 'scalar') {
|
|
140
|
+
throw new Error(`decrypted plaintext is not a scalar, cannot currently be decrypted, this feature may be implemented on request`);
|
|
141
|
+
}
|
|
142
|
+
const typ = (0, schema_js_1.parse)(encryption_js_1.SupportedFheType, computable.value.type);
|
|
143
|
+
return (0, encryption_js_1.bytesToPlaintext)(computable.value.value, encryption_js_1.encryptionSchemes.ecies, typ);
|
|
133
144
|
};
|
|
134
145
|
}
|
|
135
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
146
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGl0ZS9lY2llcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQW1DQSxnREFVQztBQUdELDREQUVDO0FBR0QsNERBRUM7QUFHRCw0REFJQztBQXNCRCw4REFJQztBQU1ELDBCQWFDO0FBT0QsOENBOENDO0FBS0QsMEJBT0M7QUFNRCw4Q0E0Q0M7QUE5TkQsMkNBQThFO0FBQzlFLHdDQUF3QztBQUN4Qyw0Q0FBeUU7QUFDekUsK0RBY3FDO0FBQ3JDLDRDQUErRDtBQUUvRCw0Q0FBcUM7QUFDckMsdUNBQXFEO0FBRXJELE1BQU0sU0FBUyxHQUFHLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQVVsRCxvRkFBb0Y7QUFDcEYsMERBQTBEO0FBQzFELFNBQWdCLGtCQUFrQixDQUNoQyxFQUEwQjtJQUUxQixPQUFPO1FBQ0wsTUFBTSxFQUFFLGlDQUFpQixDQUFDLEtBQUs7UUFDL0IsRUFBRTtRQUNGLGVBQWU7WUFDYixPQUFPLElBQUksVUFBVSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDOUQsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDO0FBRUQscURBQXFEO0FBQ3JELFNBQWdCLHdCQUF3QjtJQUN0QyxPQUFPLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0FBQ3BELENBQUM7QUFFRCw0RUFBNEU7QUFDNUUsU0FBZ0Isd0JBQXdCLENBQUMsR0FBb0I7SUFDM0QsT0FBTyxJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUN2RCxDQUFDO0FBRUQsMEVBQTBFO0FBQzFFLFNBQWdCLHdCQUF3QixDQUN0QyxnQkFBNEI7SUFFNUIsT0FBTyxTQUFTLENBQUMsYUFBYSxDQUFD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
|
package/dist/cjs/lite/hadu.d.ts
CHANGED
|
@@ -1,24 +1,4 @@
|
|
|
1
|
-
import { Schema } from 'effect';
|
|
2
1
|
import { PlaintextWithContext } from '../encryption/index.js';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
};
|
|
7
|
-
export type NoneEnvelope = (typeof encryptionEnvelopes)['none'];
|
|
8
|
-
export type HaduEnvelope = (typeof encryptionEnvelopes)['hadu'];
|
|
9
|
-
export declare const EncryptionEnvelope: Schema.SchemaClass<0 | 1, 0 | 1, never>;
|
|
10
|
-
export declare const HaduInput: Schema.transform<Schema.SchemaClass<unknown, string, never>, Schema.Struct<{
|
|
11
|
-
envelope: Schema.Literal<[1]>;
|
|
12
|
-
scheme: Schema.Literal<[0, 1, 2]>;
|
|
13
|
-
context: Schema.Struct<{
|
|
14
|
-
hostChainId: typeof Schema.BigInt;
|
|
15
|
-
aclAddress: Schema.TemplateLiteral<`0x${string}`>;
|
|
16
|
-
userAddress: Schema.TemplateLiteral<`0x${string}`>;
|
|
17
|
-
contractAddress: Schema.TemplateLiteral<`0x${string}`>;
|
|
18
|
-
}>;
|
|
19
|
-
plaintext: Schema.brand<Schema.filter<Schema.transformOrFail<Schema.Union<[typeof Schema.String, Schema.refine<object & Uint8Array<ArrayBufferLike>, Schema.Schema<object, object, never>>]>, Schema.TemplateLiteral<`0x${string}`>, never>>, "Bytes32">;
|
|
20
|
-
type: Schema.SchemaClass<0 | 5 | 7 | 8, 0 | 5 | 7 | 8, never>;
|
|
21
|
-
}>>;
|
|
22
|
-
export type HaduInput = typeof HaduInput.Type;
|
|
23
|
-
export declare function encodeInput({ plaintext, context, }: PlaintextWithContext): string;
|
|
24
|
-
export declare function decodeInput(json: string): PlaintextWithContext;
|
|
2
|
+
import { InputPayload } from '../generated/es/inco/covalidator/compute/v1/types_pb.js';
|
|
3
|
+
export declare function encodeInput({ plaintext, context, }: PlaintextWithContext): Uint8Array;
|
|
4
|
+
export declare function decodeInput(input: Uint8Array): InputPayload;
|
package/dist/cjs/lite/hadu.js
CHANGED
|
@@ -1,41 +1,38 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.HaduInput = exports.EncryptionEnvelope = exports.encryptionEnvelopes = void 0;
|
|
4
3
|
exports.encodeInput = encodeInput;
|
|
5
4
|
exports.decodeInput = decodeInput;
|
|
6
|
-
const
|
|
7
|
-
const Schema_1 = require("effect/Schema");
|
|
8
|
-
const binary_js_1 = require("../binary.js");
|
|
5
|
+
const protobuf_1 = require("@bufbuild/protobuf");
|
|
9
6
|
const index_js_1 = require("../encryption/index.js");
|
|
7
|
+
const types_pb_js_1 = require("../generated/es/inco/covalidator/compute/v1/types_pb.js");
|
|
10
8
|
const handle_js_1 = require("../handle.js");
|
|
11
9
|
// HADU stands for "Host Chain, ACL, DApp, and User" it maps to the InputContext type where the aclAddress
|
|
12
10
|
// may actually be the singular IncoLite contract which embeds its own ACL
|
|
13
|
-
exports.encryptionEnvelopes = {
|
|
14
|
-
none: 0,
|
|
15
|
-
hadu: 1,
|
|
16
|
-
};
|
|
17
|
-
exports.EncryptionEnvelope = effect_1.Schema.Literal(...Object.values(exports.encryptionEnvelopes));
|
|
18
|
-
exports.HaduInput = (0, Schema_1.parseJson)(effect_1.Schema.Struct({
|
|
19
|
-
envelope: effect_1.Schema.Literal(exports.encryptionEnvelopes.hadu),
|
|
20
|
-
scheme: index_js_1.EncryptionScheme,
|
|
21
|
-
context: handle_js_1.InputContext,
|
|
22
|
-
plaintext: binary_js_1.Bytes32,
|
|
23
|
-
type: index_js_1.SupportedFheType,
|
|
24
|
-
}));
|
|
25
11
|
function encodeInput({ plaintext, context, }) {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
12
|
+
const payload = (0, protobuf_1.create)(types_pb_js_1.InputPayloadSchema, {
|
|
13
|
+
contextHash: (0, handle_js_1.hashInputContext)(context),
|
|
14
|
+
values: [
|
|
15
|
+
{
|
|
16
|
+
value: {
|
|
17
|
+
case: 'scalar',
|
|
18
|
+
value: (0, protobuf_1.create)(types_pb_js_1.ScalarSchema, {
|
|
19
|
+
type: plaintext.type,
|
|
20
|
+
value: (0, index_js_1.plaintextToBytes)(plaintext),
|
|
21
|
+
}),
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
],
|
|
32
25
|
});
|
|
26
|
+
return (0, protobuf_1.toBinary)(types_pb_js_1.InputPayloadSchema, payload);
|
|
33
27
|
}
|
|
34
|
-
function decodeInput(
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
28
|
+
function decodeInput(input) {
|
|
29
|
+
const payload = (0, protobuf_1.fromBinary)(types_pb_js_1.InputPayloadSchema, input);
|
|
30
|
+
if (payload.values.length === 0) {
|
|
31
|
+
throw new Error('no plaintexts in input');
|
|
32
|
+
}
|
|
33
|
+
if (payload.values.length > 1) {
|
|
34
|
+
throw new Error('multiple plaintexts in input, only one currently supported');
|
|
35
|
+
}
|
|
36
|
+
return payload;
|
|
40
37
|
}
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFkdS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saXRlL2hhZHUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFZQSxrQ0FtQkM7QUFFRCxrQ0FXQztBQTVDRCxpREFBa0U7QUFDbEUscURBQWdGO0FBQ2hGLHlGQUlpRTtBQUNqRSw0Q0FBZ0Q7QUFFaEQsMEdBQTBHO0FBQzFHLDBFQUEwRTtBQUUxRSxTQUFnQixXQUFXLENBQUMsRUFDMUIsU0FBUyxFQUNULE9BQU8sR0FDYztJQUNyQixNQUFNLE9BQU8sR0FBRyxJQUFBLGlCQUFNLEVBQUMsZ0NBQWtCLEVBQUU7UUFDekMsV0FBVyxFQUFFLElBQUEsNEJBQWdCLEVBQUMsT0FBTyxDQUFDO1FBQ3RDLE1BQU0sRUFBRTtZQUNOO2dCQUNFLEtBQUssRUFBRTtvQkFDTCxJQUFJLEVBQUUsUUFBUTtvQkFDZCxLQUFLLEVBQUUsSUFBQSxpQkFBTSxFQUFDLDBCQUFZLEVBQUU7d0JBQzFCLElBQUksRUFBRSxTQUFTLENBQUMsSUFBSTt3QkFDcEIsS0FBSyxFQUFFLElBQUEsMkJBQWdCLEVBQUMsU0FBUyxDQUFDO3FCQUNuQyxDQUFDO2lCQUNIO2FBQ0Y7U0FDRjtLQUNGLENBQUMsQ0FBQztJQUNILE9BQU8sSUFBQSxtQkFBUSxFQUFDLGdDQUFrQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQy9DLENBQUM7QUFFRCxTQUFnQixXQUFXLENBQUMsS0FBaUI7SUFDM0MsTUFBTSxPQUFPLEdBQUcsSUFBQSxxQkFBVSxFQUFDLGdDQUFrQixFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3RELElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDaEMsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFDRCxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQzlCLE1BQU0sSUFBSSxLQUFLLENBQ2IsNERBQTRELENBQzdELENBQUM7SUFDSixDQUFDO0lBQ0QsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQyJ9
|
|
@@ -39,7 +39,6 @@ class Lightning {
|
|
|
39
39
|
this.ephemeralKeypair = (0, ecies_js_1.generateSecp256k1Keypair)();
|
|
40
40
|
this.kmsClient = (0, reencrypt_js_1.getKmsClient)(covalidatorUrl);
|
|
41
41
|
this.encryptor = (0, ecies_js_1.getEciesEncryptor)({
|
|
42
|
-
scheme: index_js_1.encryptionSchemes.ecies,
|
|
43
42
|
pubKeyA: (0, ecies_js_1.decodeSecp256k1PublicKey)((0, viem_1.hexToBytes)((0, schema_js_1.parse)(binary_js_1.HexString, _deployment.eciesPublicKey))),
|
|
44
43
|
privKeyB: this.ephemeralKeypair,
|
|
45
44
|
});
|
|
@@ -354,4 +353,4 @@ class Lightning {
|
|
|
354
353
|
}
|
|
355
354
|
}
|
|
356
355
|
exports.Lightning = Lightning;
|
|
357
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
356
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlnaHRuaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpdGUvbGlnaHRuaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLGtDQUFrQztBQUNsQywrQkFBMkU7QUFDM0Usd0NBQTBDO0FBQzFDLGtFQU11QztBQUV2QyxnRkFBeUU7QUFFekUsZ0ZBQXlFO0FBRXpFLDRDQUFnRTtBQUVoRSxxREFNZ0M7QUFFaEMsNERBQWlFO0FBQ2pFLDhEQUFzRTtBQUN0RSw0Q0FBMkM7QUFDM0MsZ0RBQWdFO0FBR2hFLDRDQUFxQztBQUNyQyx5Q0FLb0I7QUFDcEIsaURBQW1FO0FBNkJuRSxNQUFNLGFBQWEsR0FBb0IsU0FBUyxDQUFDO0FBMkJqRDs7O0dBR0c7QUFDSCxNQUFhLFNBQVM7SUFVRDtJQUNEO0lBVkYsZUFBZSxDQUFVO0lBQ3pCLGNBQWMsQ0FBWTtJQUMxQixPQUFPLENBQVM7SUFFZixTQUFTLENBQXlCO0lBQ2xDLGdCQUFnQixDQUFtQjtJQUNuQyxTQUFTLENBQTRCO0lBRXRELFlBQ21CLFdBQWMsRUFDZixjQUFzQjtRQURyQixnQkFBVyxHQUFYLFdBQVcsQ0FBRztRQUNmLG1CQUFjLEdBQWQsY0FBYyxDQUFRO1FBRXRDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBQSx3QkFBWSxFQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUEsaUJBQUssRUFBQyxxQkFBUyxFQUFFLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNuRSxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFM0MsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUEsbUNBQXdCLEdBQUUsQ0FBQztRQUNuRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUEsMkJBQVksRUFBQyxjQUFjLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsU0FB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
|