@zhoujun_aptos/octopus-ts-sdk-min 0.20.0 → 0.21.1

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/index.d.ts CHANGED
@@ -5,6 +5,7 @@ export * as WorkerConfig from './worker_config';
5
5
  export { WorkerTask } from './worker_task';
6
6
  export * as SilentSetupEncryption from './silent_setup_encryption';
7
7
  export * as SilentSetupEncryptionXChain from './silent_setup_encryption_xchain';
8
+ export * as ThresholdIbe from './threshold-ibe';
8
9
  export * as Enc from './enc';
9
10
  export * as Sig from './sig';
10
11
  export * as IBE from './ibe';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,YAAY,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,KAAK,qBAAqB,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,2BAA2B,MAAM,kCAAkC,CAAC;AAChF,OAAO,KAAK,GAAG,MAAM,OAAO,CAAC;AAC7B,OAAO,KAAK,GAAG,MAAM,OAAO,CAAC;AAC7B,OAAO,KAAK,GAAG,MAAM,OAAO,CAAC;AAC7B,OAAO,KAAK,GAAG,MAAM,OAAO,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,YAAY,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,KAAK,qBAAqB,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,2BAA2B,MAAM,kCAAkC,CAAC;AAChF,OAAO,KAAK,YAAY,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,GAAG,MAAM,OAAO,CAAC;AAC7B,OAAO,KAAK,GAAG,MAAM,OAAO,CAAC;AAC7B,OAAO,KAAK,GAAG,MAAM,OAAO,CAAC;AAC7B,OAAO,KAAK,GAAG,MAAM,OAAO,CAAC"}
package/dist/index.js CHANGED
@@ -33,7 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.Sym = exports.IBE = exports.Sig = exports.Enc = exports.SilentSetupEncryptionXChain = exports.SilentSetupEncryption = exports.WorkerTask = exports.WorkerConfig = exports.Utils = exports.ElGamal = exports.Group = void 0;
36
+ exports.Sym = exports.IBE = exports.Sig = exports.Enc = exports.ThresholdIbe = exports.SilentSetupEncryptionXChain = exports.SilentSetupEncryption = exports.WorkerTask = exports.WorkerConfig = exports.Utils = exports.ElGamal = exports.Group = void 0;
37
37
  exports.Group = __importStar(require("./group"));
38
38
  exports.ElGamal = __importStar(require("./elgamal"));
39
39
  exports.Utils = __importStar(require("./utils"));
@@ -42,6 +42,7 @@ var worker_task_1 = require("./worker_task");
42
42
  Object.defineProperty(exports, "WorkerTask", { enumerable: true, get: function () { return worker_task_1.WorkerTask; } });
43
43
  exports.SilentSetupEncryption = __importStar(require("./silent_setup_encryption"));
44
44
  exports.SilentSetupEncryptionXChain = __importStar(require("./silent_setup_encryption_xchain"));
45
+ exports.ThresholdIbe = __importStar(require("./threshold-ibe"));
45
46
  exports.Enc = __importStar(require("./enc"));
46
47
  exports.Sig = __importStar(require("./sig"));
47
48
  exports.IBE = __importStar(require("./ibe"));
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAiC;AACjC,qDAAqC;AACrC,iDAAiC;AACjC,gEAAgD;AAChD,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AACnB,mFAAmE;AACnE,gGAAgF;AAChF,6CAA6B;AAC7B,6CAA6B;AAC7B,6CAA6B;AAC7B,6CAA6B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAiC;AACjC,qDAAqC;AACrC,iDAAiC;AACjC,gEAAgD;AAChD,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AACnB,mFAAmE;AACnE,gGAAgF;AAChF,gEAAgD;AAChD,6CAA6B;AAC7B,6CAA6B;AAC7B,6CAA6B;AAC7B,6CAA6B"}
@@ -0,0 +1,39 @@
1
+ import { AccountAddress, AnyPublicKey, AnySignature, Deserializer, Serializer } from "@aptos-labs/ts-sdk";
2
+ import { DecryptionContext } from "./types";
3
+ export declare class ContractID {
4
+ chainId: number;
5
+ moduleAddr: AccountAddress;
6
+ moduleName: string;
7
+ functionName: string;
8
+ constructor(chainId: number, moduleAddr: AccountAddress, moduleName: string, functionName: string);
9
+ static dummy(): ContractID;
10
+ static deserialize(deserializer: Deserializer): ContractID;
11
+ static fromBytes(bytes: Uint8Array): ContractID;
12
+ static fromHex(hex: string): ContractID;
13
+ serialize(serializer: Serializer): void;
14
+ toBytes(): Uint8Array;
15
+ toHex(): string;
16
+ }
17
+ export declare class ProofOfPermission {
18
+ userAddr: AccountAddress;
19
+ publicKey: AnyPublicKey;
20
+ signature: AnySignature;
21
+ fullMessage: string;
22
+ constructor({ userAddr, publicKey, signature, fullMessage }: {
23
+ userAddr: AccountAddress;
24
+ publicKey: AnyPublicKey;
25
+ signature: AnySignature;
26
+ fullMessage: string;
27
+ });
28
+ static deserialize(deserializer: Deserializer): ProofOfPermission;
29
+ static fromBytes(bytes: Uint8Array): ProofOfPermission;
30
+ static fromHex(hex: string): ProofOfPermission;
31
+ serialize(serializer: Serializer): void;
32
+ toBytes(): Uint8Array;
33
+ toHex(): string;
34
+ }
35
+ export declare function verifyPermission({ decryptionContext, proof }: {
36
+ decryptionContext: DecryptionContext;
37
+ proof: ProofOfPermission;
38
+ }): Promise<void>;
39
+ //# sourceMappingURL=aptos.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aptos.d.ts","sourceRoot":"","sources":["../../src/threshold-ibe/aptos.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAA+D,YAAY,EAAuH,UAAU,EAA+C,MAAM,oBAAoB,CAAC;AAEzU,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAE5C,qBAAa,UAAU;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,cAAc,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;gBAET,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;IAOjG,MAAM,CAAC,KAAK,IAAI,UAAU;IAI1B,MAAM,CAAC,WAAW,CAAC,YAAY,EAAE,YAAY,GAAG,UAAU;IAQ1D,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU;IAS/C,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU;IAIvC,SAAS,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IAOvC,OAAO,IAAI,UAAU;IAMrB,KAAK,IAAI,MAAM;CAGlB;AAED,qBAAa,iBAAiB;IAC1B,QAAQ,EAAE,cAAc,CAAC;IACzB,SAAS,EAAE,YAAY,CAAC;IACxB,SAAS,EAAE,YAAY,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;gBAER,EAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAC,EAAE;QAAC,QAAQ,EAAE,cAAc,CAAC;QAAC,SAAS,EAAE,YAAY,CAAC;QAAC,SAAS,EAAE,YAAY,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAC;IAO5J,MAAM,CAAC,WAAW,CAAC,YAAY,EAAE,YAAY,GAAG,iBAAiB;IAQjE,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,iBAAiB;IAKtD,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB;IAI9C,SAAS,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IAOvC,OAAO,IAAI,UAAU;IAMrB,KAAK,IAAI,MAAM;CAGlB;AAED,wBAAsB,gBAAgB,CAAC,EAAC,iBAAiB,EAAE,KAAK,EAAC,EAAE;IAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAAC,KAAK,EAAE,iBAAiB,CAAA;CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAoElJ"}
@@ -0,0 +1,215 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ProofOfPermission = exports.ContractID = void 0;
4
+ exports.verifyPermission = verifyPermission;
5
+ const ts_sdk_1 = require("@aptos-labs/ts-sdk");
6
+ const utils_1 = require("@noble/hashes/utils");
7
+ class ContractID {
8
+ chainId;
9
+ moduleAddr;
10
+ moduleName;
11
+ functionName;
12
+ constructor(chainId, moduleAddr, moduleName, functionName) {
13
+ this.chainId = chainId;
14
+ this.moduleAddr = moduleAddr;
15
+ this.moduleName = moduleName;
16
+ this.functionName = functionName;
17
+ }
18
+ static dummy() {
19
+ return new ContractID(0, ts_sdk_1.AccountAddress.fromString("0x1"), "module3", "function3");
20
+ }
21
+ static deserialize(deserializer) {
22
+ const chainId = deserializer.deserializeU8();
23
+ const moduleAddr = deserializer.deserialize(ts_sdk_1.AccountAddress);
24
+ const moduleName = deserializer.deserializeStr();
25
+ const functionName = deserializer.deserializeStr();
26
+ return new ContractID(chainId, moduleAddr, moduleName, functionName);
27
+ }
28
+ static fromBytes(bytes) {
29
+ const deserializer = new ts_sdk_1.Deserializer(bytes);
30
+ const ret = ContractID.deserialize(deserializer);
31
+ if (deserializer.remaining() !== 0) {
32
+ throw new Error("ContractID deserialization failed: extra bytes");
33
+ }
34
+ return ret;
35
+ }
36
+ static fromHex(hex) {
37
+ return ContractID.fromBytes((0, utils_1.hexToBytes)(hex));
38
+ }
39
+ serialize(serializer) {
40
+ serializer.serializeU8(this.chainId);
41
+ serializer.serialize(this.moduleAddr);
42
+ serializer.serializeStr(this.moduleName);
43
+ serializer.serializeStr(this.functionName);
44
+ }
45
+ toBytes() {
46
+ const serializer = new ts_sdk_1.Serializer();
47
+ this.serialize(serializer);
48
+ return serializer.toUint8Array();
49
+ }
50
+ toHex() {
51
+ return (0, utils_1.bytesToHex)(this.toBytes());
52
+ }
53
+ }
54
+ exports.ContractID = ContractID;
55
+ class ProofOfPermission {
56
+ userAddr;
57
+ publicKey;
58
+ signature;
59
+ fullMessage;
60
+ constructor({ userAddr, publicKey, signature, fullMessage }) {
61
+ this.userAddr = userAddr;
62
+ this.publicKey = publicKey;
63
+ this.signature = signature;
64
+ this.fullMessage = fullMessage;
65
+ }
66
+ static deserialize(deserializer) {
67
+ const userAddr = deserializer.deserialize(ts_sdk_1.AccountAddress);
68
+ const publicKey = deserializer.deserialize(ts_sdk_1.AnyPublicKey);
69
+ const signature = deserializer.deserialize(ts_sdk_1.AnySignature);
70
+ const fullMessage = deserializer.deserializeStr();
71
+ return new ProofOfPermission({ userAddr, publicKey, signature, fullMessage });
72
+ }
73
+ static fromBytes(bytes) {
74
+ const deserializer = new ts_sdk_1.Deserializer(bytes);
75
+ return ProofOfPermission.deserialize(deserializer);
76
+ }
77
+ static fromHex(hex) {
78
+ return ProofOfPermission.fromBytes((0, utils_1.hexToBytes)(hex));
79
+ }
80
+ serialize(serializer) {
81
+ serializer.serialize(this.userAddr);
82
+ serializer.serialize(this.publicKey);
83
+ serializer.serialize(this.signature);
84
+ serializer.serializeStr(this.fullMessage);
85
+ }
86
+ toBytes() {
87
+ const serializer = new ts_sdk_1.Serializer();
88
+ this.serialize(serializer);
89
+ return serializer.toUint8Array();
90
+ }
91
+ toHex() {
92
+ return (0, utils_1.bytesToHex)(this.toBytes());
93
+ }
94
+ }
95
+ exports.ProofOfPermission = ProofOfPermission;
96
+ async function verifyPermission({ decryptionContext, proof }) {
97
+ const actualAuthKey = proof.publicKey.authKey();
98
+ const aptos = createAptos(getChainNameFromChainId(decryptionContext.getAptosContractID().chainId));
99
+ // Task 1: Signature verification
100
+ const taskVerifySig = async () => {
101
+ const display = decryptionContext.toDisplayString();
102
+ const displayHex = (0, utils_1.bytesToHex)(new TextEncoder().encode(display));
103
+ const fullMessageFromPetra = proof.fullMessage.includes(display);
104
+ const fullMessageFromAptosConnect = proof.fullMessage.includes(displayHex);
105
+ if (!fullMessageFromPetra && !fullMessageFromAptosConnect)
106
+ return false;
107
+ try {
108
+ return await proof.publicKey.verifySignatureAsync({
109
+ aptosConfig: aptos.config,
110
+ message: proof.fullMessage,
111
+ signature: proof.signature
112
+ });
113
+ }
114
+ catch (error) {
115
+ return false;
116
+ }
117
+ };
118
+ // Task 2: Fetch on-chain auth key and compare
119
+ const taskCheckAuthKey = async () => {
120
+ try {
121
+ const onChainAuthKeyBytes = await getAccountAuthKeyBytes(aptos, proof.userAddr);
122
+ const actualAuthKeyBytes = actualAuthKey.toUint8Array();
123
+ if (onChainAuthKeyBytes.length !== actualAuthKeyBytes.length) {
124
+ return false;
125
+ }
126
+ return (0, utils_1.bytesToHex)(onChainAuthKeyBytes) === (0, utils_1.bytesToHex)(actualAuthKeyBytes);
127
+ }
128
+ catch (error) {
129
+ return false;
130
+ }
131
+ };
132
+ // Task 3: Call view function to check permission
133
+ const taskCheckPermission = async () => {
134
+ const contractId = decryptionContext.getAptosContractID();
135
+ try {
136
+ const userIsPermittedMoveVal = await view(aptos, `${contractId.moduleAddr.toStringLong()}::${contractId.moduleName}::${contractId.functionName}`, [], [proof.userAddr, decryptionContext.toBytes()]);
137
+ return userIsPermittedMoveVal?.toString() === 'true';
138
+ }
139
+ catch (error) {
140
+ return false;
141
+ }
142
+ };
143
+ // Run all 3 tasks in parallel
144
+ const [sigIsValid, authKeyMatches, userIsPermitted] = await Promise.all([
145
+ taskVerifySig(),
146
+ taskCheckAuthKey(),
147
+ taskCheckPermission()
148
+ ]);
149
+ if (!sigIsValid) {
150
+ throw new Error('Signature invalid.');
151
+ }
152
+ if (!authKeyMatches) {
153
+ throw new Error('Authentication key mismatch: on-chain key does not match provided public key.');
154
+ }
155
+ if (!userIsPermitted) {
156
+ throw new Error('Permission denied.');
157
+ }
158
+ }
159
+ function getChainNameFromChainId(chainId) {
160
+ if (chainId === 1) {
161
+ return "mainnet";
162
+ }
163
+ else if (chainId === 2) {
164
+ return "testnet";
165
+ }
166
+ else if (chainId === 14) {
167
+ return "devnet";
168
+ }
169
+ else if (chainId >= 104) {
170
+ return "shelbynet";
171
+ }
172
+ else {
173
+ throw new Error(`Unknown chain id: ${chainId}`);
174
+ }
175
+ }
176
+ function createAptos(networkName) {
177
+ let config;
178
+ if (networkName === "mainnet") {
179
+ config = new ts_sdk_1.AptosConfig({ network: ts_sdk_1.Network.MAINNET });
180
+ }
181
+ else if (networkName === "testnet") {
182
+ config = new ts_sdk_1.AptosConfig({ network: ts_sdk_1.Network.TESTNET });
183
+ }
184
+ else if (networkName === "devnet") {
185
+ config = new ts_sdk_1.AptosConfig({ network: ts_sdk_1.Network.DEVNET });
186
+ }
187
+ else if (networkName === "shelbynet") {
188
+ config = new ts_sdk_1.AptosConfig({
189
+ network: ts_sdk_1.Network.CUSTOM,
190
+ fullnode: "https://api.shelbynet.shelby.xyz/v1"
191
+ });
192
+ }
193
+ else {
194
+ throw new Error(`Unsupported network name: ${networkName}`);
195
+ }
196
+ return new ts_sdk_1.Aptos(config);
197
+ }
198
+ async function getAccountAuthKeyBytes(aptos, address) {
199
+ const accountInfo = await aptos.getAccountInfo({ accountAddress: address });
200
+ return (0, utils_1.hexToBytes)(accountInfo.authentication_key.replace('0x', ''));
201
+ }
202
+ async function view(aptos, func, typeArguments, functionArguments) {
203
+ const result = await aptos.view({
204
+ payload: {
205
+ function: func,
206
+ typeArguments: typeArguments,
207
+ functionArguments: functionArguments
208
+ }
209
+ });
210
+ if (result.length === 0) {
211
+ throw new Error(`View function returned empty result`);
212
+ }
213
+ return result[0];
214
+ }
215
+ //# sourceMappingURL=aptos.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aptos.js","sourceRoot":"","sources":["../../src/threshold-ibe/aptos.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,122 @@
1
+ /**
2
+ * @module threshold-ibe
3
+ *
4
+ *
5
+ */
6
+ import * as IBE from "../ibe";
7
+ import * as Sym from "../sym";
8
+ import { ProofOfPermission as AptosProofOfPermission } from "./aptos";
9
+ import { ProofOfPermission as SolanaProofOfPermission } from "./solana";
10
+ import { Deserializer, Serializer } from "@aptos-labs/ts-sdk";
11
+ import * as SolanaSDK from "@solana/web3.js";
12
+ import * as AptosSDK from "@aptos-labs/ts-sdk";
13
+ export declare class Committee {
14
+ workerEndpoints: string[];
15
+ threshold: number;
16
+ constructor({ workerEndpoints, threshold }: {
17
+ workerEndpoints: string[];
18
+ threshold: number;
19
+ });
20
+ static dummy(): Committee;
21
+ static deserialize(deserializer: Deserializer): Committee;
22
+ serialize(serializer: Serializer): void;
23
+ }
24
+ export declare class EncryptionKey {
25
+ ibeMpks: IBE.MasterPublicKey[];
26
+ constructor({ ibeMpks }: {
27
+ ibeMpks: IBE.MasterPublicKey[];
28
+ });
29
+ fetch({ committee }: {
30
+ committee: Committee;
31
+ }): Promise<EncryptionKey>;
32
+ }
33
+ export declare class DecryptionKey {
34
+ ibeDecryptionKeys: (IBE.IdentityPrivateKey | null)[];
35
+ private constructor();
36
+ static fetch({ committee, contractId, domain, proof }: {
37
+ committee: Committee;
38
+ contractId: ContractID;
39
+ domain: Uint8Array;
40
+ proof: ProofOfPermission;
41
+ }): Promise<DecryptionKey>;
42
+ }
43
+ export declare class Ciphertext {
44
+ aesCiph: Sym.Ciphertext;
45
+ ibeCiphs: IBE.Ciphertext[];
46
+ constructor(aesCiph: Sym.Ciphertext, ibeCiphs: IBE.Ciphertext[]);
47
+ static dummy(): Ciphertext;
48
+ static deserialize(deserializer: Deserializer): Ciphertext;
49
+ static fromBytes(bytes: Uint8Array): Ciphertext;
50
+ static fromHex(hex: string): Ciphertext;
51
+ serialize(serializer: Serializer): void;
52
+ toBytes(): Uint8Array;
53
+ }
54
+ export declare class ContractID {
55
+ static readonly SCHEME_APTOS = 0;
56
+ static readonly SCHEME_SOLANA = 1;
57
+ scheme: number;
58
+ inner: any;
59
+ private constructor();
60
+ static newAptos({ chainId, moduleAddr, moduleName, functionName }: {
61
+ chainId: number;
62
+ moduleAddr: AptosSDK.AccountAddress;
63
+ moduleName: string;
64
+ functionName: string;
65
+ }): ContractID;
66
+ static newSolana({ knownChainName, programId }: {
67
+ knownChainName: string;
68
+ programId: SolanaSDK.PublicKey;
69
+ }): ContractID;
70
+ static dummy(): ContractID;
71
+ static deserialize(deserializer: Deserializer): ContractID;
72
+ static fromBytes(bytes: Uint8Array): ContractID;
73
+ static fromHex(hex: string): ContractID;
74
+ serialize(serializer: Serializer): void;
75
+ toBytes(): Uint8Array;
76
+ toHex(): string;
77
+ }
78
+ export declare class ProofOfPermission {
79
+ static readonly SCHEME_APTOS = 0;
80
+ static readonly SCHEME_SOLANA = 1;
81
+ scheme: number;
82
+ inner: any;
83
+ private constructor();
84
+ /** @deprecated Use `ProofOfPermission.createAptos()` instead */
85
+ static newAptos(id: AptosProofOfPermission): ProofOfPermission;
86
+ /** @deprecated Use `ProofOfPermission.createSolana()` instead */
87
+ static newSolana(id: SolanaProofOfPermission): ProofOfPermission;
88
+ static createAptos({ userAddr, publicKey, signature, fullMessage }: {
89
+ userAddr: AptosSDK.AccountAddress;
90
+ publicKey: AptosSDK.AnyPublicKey;
91
+ signature: AptosSDK.AnySignature;
92
+ fullMessage: string;
93
+ }): ProofOfPermission;
94
+ static createSolana({ txn }: {
95
+ txn: SolanaSDK.Transaction | SolanaSDK.VersionedTransaction;
96
+ }): ProofOfPermission;
97
+ static deserialize(deserializer: Deserializer): ProofOfPermission;
98
+ static fromBytes(bytes: Uint8Array): ProofOfPermission;
99
+ static fromHex(hex: string): ProofOfPermission;
100
+ serialize(serializer: Serializer): void;
101
+ toBytes(): Uint8Array;
102
+ toHex(): string;
103
+ }
104
+ export declare function encrypt({ committee, encryptionKey, contractId, domain, plaintext }: {
105
+ committee: Committee;
106
+ encryptionKey: EncryptionKey;
107
+ contractId: ContractID;
108
+ domain: Uint8Array;
109
+ plaintext: Uint8Array;
110
+ }): Ciphertext;
111
+ export declare function decrypt({ decryptionKey, ciphertext }: {
112
+ decryptionKey: DecryptionKey;
113
+ ciphertext: Ciphertext;
114
+ }): Uint8Array | undefined;
115
+ export declare function verifyAndExtract({ ibeMsk, committee, contractId, domain, proof }: {
116
+ ibeMsk: IBE.MasterPrivateKey;
117
+ committee: Committee;
118
+ contractId: ContractID;
119
+ domain: Uint8Array;
120
+ proof: ProofOfPermission;
121
+ }): Promise<IBE.IdentityPrivateKey>;
122
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/threshold-ibe/index.ts"],"names":[],"mappings":"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"}