@mysten/seal 0.0.0-experimental-20250330082435

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.
Files changed (109) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/README.md +4 -0
  3. package/dist/cjs/bcs.d.ts +132 -0
  4. package/dist/cjs/bcs.js +67 -0
  5. package/dist/cjs/bcs.js.map +7 -0
  6. package/dist/cjs/bls12381.d.ts +37 -0
  7. package/dist/cjs/bls12381.js +110 -0
  8. package/dist/cjs/bls12381.js.map +7 -0
  9. package/dist/cjs/client.d.ts +83 -0
  10. package/dist/cjs/client.js +283 -0
  11. package/dist/cjs/client.js.map +7 -0
  12. package/dist/cjs/decrypt.d.ts +15 -0
  13. package/dist/cjs/decrypt.js +94 -0
  14. package/dist/cjs/decrypt.js.map +7 -0
  15. package/dist/cjs/dem.d.ts +36 -0
  16. package/dist/cjs/dem.js +173 -0
  17. package/dist/cjs/dem.js.map +7 -0
  18. package/dist/cjs/elgamal.d.ts +11 -0
  19. package/dist/cjs/elgamal.js +46 -0
  20. package/dist/cjs/elgamal.js.map +7 -0
  21. package/dist/cjs/encrypt.d.ts +33 -0
  22. package/dist/cjs/encrypt.js +118 -0
  23. package/dist/cjs/encrypt.js.map +7 -0
  24. package/dist/cjs/error.d.ts +58 -0
  25. package/dist/cjs/error.js +175 -0
  26. package/dist/cjs/error.js.map +7 -0
  27. package/dist/cjs/ibe.d.ts +63 -0
  28. package/dist/cjs/ibe.js +104 -0
  29. package/dist/cjs/ibe.js.map +7 -0
  30. package/dist/cjs/index.d.ts +4 -0
  31. package/dist/cjs/index.js +31 -0
  32. package/dist/cjs/index.js.map +7 -0
  33. package/dist/cjs/kdf.d.ts +14 -0
  34. package/dist/cjs/kdf.js +64 -0
  35. package/dist/cjs/kdf.js.map +7 -0
  36. package/dist/cjs/key-server.d.ts +38 -0
  37. package/dist/cjs/key-server.js +101 -0
  38. package/dist/cjs/key-server.js.map +7 -0
  39. package/dist/cjs/keys.d.ts +17 -0
  40. package/dist/cjs/keys.js +61 -0
  41. package/dist/cjs/keys.js.map +7 -0
  42. package/dist/cjs/package.json +5 -0
  43. package/dist/cjs/session-key.d.ts +42 -0
  44. package/dist/cjs/session-key.js +140 -0
  45. package/dist/cjs/session-key.js.map +7 -0
  46. package/dist/cjs/types.d.ts +1 -0
  47. package/dist/cjs/types.js +17 -0
  48. package/dist/cjs/types.js.map +7 -0
  49. package/dist/cjs/utils.d.ts +10 -0
  50. package/dist/cjs/utils.js +51 -0
  51. package/dist/cjs/utils.js.map +7 -0
  52. package/dist/cjs/version.d.ts +1 -0
  53. package/dist/cjs/version.js +25 -0
  54. package/dist/cjs/version.js.map +7 -0
  55. package/dist/esm/bcs.d.ts +132 -0
  56. package/dist/esm/bcs.js +47 -0
  57. package/dist/esm/bcs.js.map +7 -0
  58. package/dist/esm/bls12381.d.ts +37 -0
  59. package/dist/esm/bls12381.js +90 -0
  60. package/dist/esm/bls12381.js.map +7 -0
  61. package/dist/esm/client.d.ts +83 -0
  62. package/dist/esm/client.js +268 -0
  63. package/dist/esm/client.js.map +7 -0
  64. package/dist/esm/decrypt.d.ts +15 -0
  65. package/dist/esm/decrypt.js +74 -0
  66. package/dist/esm/decrypt.js.map +7 -0
  67. package/dist/esm/dem.d.ts +36 -0
  68. package/dist/esm/dem.js +153 -0
  69. package/dist/esm/dem.js.map +7 -0
  70. package/dist/esm/elgamal.d.ts +11 -0
  71. package/dist/esm/elgamal.js +26 -0
  72. package/dist/esm/elgamal.js.map +7 -0
  73. package/dist/esm/encrypt.d.ts +33 -0
  74. package/dist/esm/encrypt.js +98 -0
  75. package/dist/esm/encrypt.js.map +7 -0
  76. package/dist/esm/error.d.ts +58 -0
  77. package/dist/esm/error.js +155 -0
  78. package/dist/esm/error.js.map +7 -0
  79. package/dist/esm/ibe.d.ts +63 -0
  80. package/dist/esm/ibe.js +84 -0
  81. package/dist/esm/ibe.js.map +7 -0
  82. package/dist/esm/index.d.ts +4 -0
  83. package/dist/esm/index.js +10 -0
  84. package/dist/esm/index.js.map +7 -0
  85. package/dist/esm/kdf.d.ts +14 -0
  86. package/dist/esm/kdf.js +44 -0
  87. package/dist/esm/kdf.js.map +7 -0
  88. package/dist/esm/key-server.d.ts +38 -0
  89. package/dist/esm/key-server.js +86 -0
  90. package/dist/esm/key-server.js.map +7 -0
  91. package/dist/esm/keys.d.ts +17 -0
  92. package/dist/esm/keys.js +41 -0
  93. package/dist/esm/keys.js.map +7 -0
  94. package/dist/esm/package.json +5 -0
  95. package/dist/esm/session-key.d.ts +42 -0
  96. package/dist/esm/session-key.js +124 -0
  97. package/dist/esm/session-key.js.map +7 -0
  98. package/dist/esm/types.d.ts +1 -0
  99. package/dist/esm/types.js +1 -0
  100. package/dist/esm/types.js.map +7 -0
  101. package/dist/esm/utils.d.ts +10 -0
  102. package/dist/esm/utils.js +31 -0
  103. package/dist/esm/utils.js.map +7 -0
  104. package/dist/esm/version.d.ts +1 -0
  105. package/dist/esm/version.js +5 -0
  106. package/dist/esm/version.js.map +7 -0
  107. package/dist/tsconfig.esm.tsbuildinfo +1 -0
  108. package/dist/tsconfig.tsbuildinfo +1 -0
  109. package/package.json +59 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,31 @@
1
+ # @mysten/seal
2
+
3
+ ## 0.0.0-experimental-20250330082435
4
+
5
+ ### Patch Changes
6
+
7
+ - d2ef9ef: Update encryption format, and export errors
8
+
9
+ ## 0.3.0
10
+
11
+ ### Minor Changes
12
+
13
+ - ecc8b7e: New interfaces
14
+
15
+ ## 0.2.0
16
+
17
+ ### Minor Changes
18
+
19
+ - 0886b3e: export KeyServer type
20
+
21
+ ## 0.1.0
22
+
23
+ ### Minor Changes
24
+
25
+ - 8ca8df3: First publish
26
+
27
+ ### Patch Changes
28
+
29
+ - Updated dependencies [95b1ea5]
30
+ - @mysten/bcs@1.4.0
31
+ - @mysten/sui@1.21.2
package/README.md ADDED
@@ -0,0 +1,4 @@
1
+ # `@mysten/seal`
2
+
3
+ **Warning**: This is a DEVELOPER PREVIEW of Seal. It is EXPERIMENTAL and has NO GUARANTEES of uptime
4
+ or correctness. USE AT YOUR OWN RISK.
@@ -0,0 +1,132 @@
1
+ export declare const IBEEncryptions: import("@mysten/bcs").BcsType<{
2
+ BonehFranklinBLS12381: {
3
+ nonce: Uint8Array<ArrayBufferLike>;
4
+ encryptedShares: Uint8Array<ArrayBufferLike>[];
5
+ encryptedRandomness: Uint8Array<ArrayBufferLike>;
6
+ };
7
+ $kind: "BonehFranklinBLS12381";
8
+ }, {
9
+ BonehFranklinBLS12381: {
10
+ nonce: Iterable<number>;
11
+ encryptedShares: Iterable<Iterable<number>> & {
12
+ length: number;
13
+ };
14
+ encryptedRandomness: Iterable<number>;
15
+ };
16
+ }>;
17
+ export declare const Ciphertext: import("@mysten/bcs").BcsType<import("@mysten/bcs").EnumOutputShapeWithKeys<{
18
+ Aes256Gcm: {
19
+ blob: number[];
20
+ aad: number[] | null;
21
+ };
22
+ Hmac256Ctr: {
23
+ blob: number[];
24
+ aad: number[] | null;
25
+ mac: Uint8Array<ArrayBufferLike>;
26
+ };
27
+ Plain: {};
28
+ }, "Aes256Gcm" | "Hmac256Ctr" | "Plain">, import("@mysten/bcs").EnumInputShape<{
29
+ Aes256Gcm: {
30
+ blob: Iterable<number> & {
31
+ length: number;
32
+ };
33
+ aad: (Iterable<number> & {
34
+ length: number;
35
+ }) | null | undefined;
36
+ };
37
+ Hmac256Ctr: {
38
+ blob: Iterable<number> & {
39
+ length: number;
40
+ };
41
+ aad: (Iterable<number> & {
42
+ length: number;
43
+ }) | null | undefined;
44
+ mac: Iterable<number>;
45
+ };
46
+ Plain: {};
47
+ }>>;
48
+ /**
49
+ * The encrypted object format. Should be aligned with the Rust implementation.
50
+ */
51
+ export declare const EncryptedObject: import("@mysten/bcs").BcsType<{
52
+ version: number;
53
+ packageId: string;
54
+ id: string;
55
+ services: [string, number][];
56
+ threshold: number;
57
+ encryptedShares: {
58
+ BonehFranklinBLS12381: {
59
+ nonce: Uint8Array<ArrayBufferLike>;
60
+ encryptedShares: Uint8Array<ArrayBufferLike>[];
61
+ encryptedRandomness: Uint8Array<ArrayBufferLike>;
62
+ };
63
+ $kind: "BonehFranklinBLS12381";
64
+ };
65
+ ciphertext: import("@mysten/bcs").EnumOutputShapeWithKeys<{
66
+ Aes256Gcm: {
67
+ blob: number[];
68
+ aad: number[] | null;
69
+ };
70
+ Hmac256Ctr: {
71
+ blob: number[];
72
+ aad: number[] | null;
73
+ mac: Uint8Array<ArrayBufferLike>;
74
+ };
75
+ Plain: {};
76
+ }, "Aes256Gcm" | "Hmac256Ctr" | "Plain">;
77
+ }, {
78
+ version: number;
79
+ packageId: string | Uint8Array<ArrayBufferLike>;
80
+ id: string;
81
+ services: Iterable<readonly [string | Uint8Array<ArrayBufferLike>, number]> & {
82
+ length: number;
83
+ };
84
+ threshold: number;
85
+ encryptedShares: {
86
+ BonehFranklinBLS12381: {
87
+ nonce: Iterable<number>;
88
+ encryptedShares: Iterable<Iterable<number>> & {
89
+ length: number;
90
+ };
91
+ encryptedRandomness: Iterable<number>;
92
+ };
93
+ };
94
+ ciphertext: import("@mysten/bcs").EnumInputShape<{
95
+ Aes256Gcm: {
96
+ blob: Iterable<number> & {
97
+ length: number;
98
+ };
99
+ aad: (Iterable<number> & {
100
+ length: number;
101
+ }) | null | undefined;
102
+ };
103
+ Hmac256Ctr: {
104
+ blob: Iterable<number> & {
105
+ length: number;
106
+ };
107
+ aad: (Iterable<number> & {
108
+ length: number;
109
+ }) | null | undefined;
110
+ mac: Iterable<number>;
111
+ };
112
+ Plain: {};
113
+ }>;
114
+ }>;
115
+ /**
116
+ * The Move struct for the KeyServer object.
117
+ */
118
+ export declare const KeyServerMove: import("@mysten/bcs").BcsType<{
119
+ id: string;
120
+ name: string;
121
+ url: string;
122
+ keyType: number;
123
+ pk: number[];
124
+ }, {
125
+ id: string | Uint8Array<ArrayBufferLike>;
126
+ name: string;
127
+ url: string;
128
+ keyType: number;
129
+ pk: Iterable<number> & {
130
+ length: number;
131
+ };
132
+ }>;
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var bcs_exports = {};
20
+ __export(bcs_exports, {
21
+ Ciphertext: () => Ciphertext,
22
+ EncryptedObject: () => EncryptedObject,
23
+ IBEEncryptions: () => IBEEncryptions,
24
+ KeyServerMove: () => KeyServerMove
25
+ });
26
+ module.exports = __toCommonJS(bcs_exports);
27
+ var import_bcs = require("@mysten/bcs");
28
+ var import_bcs2 = require("@mysten/sui/bcs");
29
+ const IBEEncryptions = import_bcs2.bcs.enum("IBEEncryptions", {
30
+ BonehFranklinBLS12381: import_bcs2.bcs.struct("BonehFranklinBLS12381", {
31
+ nonce: import_bcs2.bcs.bytes(96),
32
+ encryptedShares: import_bcs2.bcs.vector(import_bcs2.bcs.bytes(32)),
33
+ encryptedRandomness: import_bcs2.bcs.bytes(32)
34
+ })
35
+ });
36
+ const Ciphertext = import_bcs2.bcs.enum("Ciphertext", {
37
+ Aes256Gcm: import_bcs2.bcs.struct("Aes256Gcm", {
38
+ blob: import_bcs2.bcs.vector(import_bcs2.bcs.U8),
39
+ aad: import_bcs2.bcs.option(import_bcs2.bcs.vector(import_bcs2.bcs.U8))
40
+ }),
41
+ Hmac256Ctr: import_bcs2.bcs.struct("Hmac256Ctr", {
42
+ blob: import_bcs2.bcs.vector(import_bcs2.bcs.U8),
43
+ aad: import_bcs2.bcs.option(import_bcs2.bcs.vector(import_bcs2.bcs.U8)),
44
+ mac: import_bcs2.bcs.bytes(32)
45
+ }),
46
+ Plain: import_bcs2.bcs.struct("Plain", {})
47
+ });
48
+ const EncryptedObject = import_bcs2.bcs.struct("EncryptedObject", {
49
+ version: import_bcs2.bcs.U8,
50
+ packageId: import_bcs2.bcs.Address,
51
+ id: import_bcs2.bcs.vector(import_bcs2.bcs.U8).transform({
52
+ output: (val) => (0, import_bcs.toHex)(new Uint8Array(val)),
53
+ input: (val) => (0, import_bcs.fromHex)(val)
54
+ }),
55
+ services: import_bcs2.bcs.vector(import_bcs2.bcs.tuple([import_bcs2.bcs.Address, import_bcs2.bcs.U8])),
56
+ threshold: import_bcs2.bcs.U8,
57
+ encryptedShares: IBEEncryptions,
58
+ ciphertext: Ciphertext
59
+ });
60
+ const KeyServerMove = import_bcs2.bcs.struct("KeyServer", {
61
+ id: import_bcs2.bcs.Address,
62
+ name: import_bcs2.bcs.string(),
63
+ url: import_bcs2.bcs.string(),
64
+ keyType: import_bcs2.bcs.u8(),
65
+ pk: import_bcs2.bcs.vector(import_bcs2.bcs.u8())
66
+ });
67
+ //# sourceMappingURL=bcs.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/bcs.ts"],
4
+ "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { fromHex, toHex } from '@mysten/bcs';\nimport { bcs } from '@mysten/sui/bcs';\n\nexport const IBEEncryptions = bcs.enum('IBEEncryptions', {\n\tBonehFranklinBLS12381: bcs.struct('BonehFranklinBLS12381', {\n\t\tnonce: bcs.bytes(96),\n\t\tencryptedShares: bcs.vector(bcs.bytes(32)),\n\t\tencryptedRandomness: bcs.bytes(32),\n\t}),\n});\n\nexport const Ciphertext = bcs.enum('Ciphertext', {\n\tAes256Gcm: bcs.struct('Aes256Gcm', {\n\t\tblob: bcs.vector(bcs.U8),\n\t\taad: bcs.option(bcs.vector(bcs.U8)),\n\t}),\n\tHmac256Ctr: bcs.struct('Hmac256Ctr', {\n\t\tblob: bcs.vector(bcs.U8),\n\t\taad: bcs.option(bcs.vector(bcs.U8)),\n\t\tmac: bcs.bytes(32),\n\t}),\n\tPlain: bcs.struct('Plain', {}),\n});\n\n/**\n * The encrypted object format. Should be aligned with the Rust implementation.\n */\nexport const EncryptedObject = bcs.struct('EncryptedObject', {\n\tversion: bcs.U8,\n\tpackageId: bcs.Address,\n\tid: bcs.vector(bcs.U8).transform({\n\t\toutput: (val) => toHex(new Uint8Array(val)),\n\t\tinput: (val: string) => fromHex(val),\n\t}),\n\tservices: bcs.vector(bcs.tuple([bcs.Address, bcs.U8])),\n\tthreshold: bcs.U8,\n\tencryptedShares: IBEEncryptions,\n\tciphertext: Ciphertext,\n});\n\n/**\n * The Move struct for the KeyServer object.\n */\nexport const KeyServerMove = bcs.struct('KeyServer', {\n\tid: bcs.Address,\n\tname: bcs.string(),\n\turl: bcs.string(),\n\tkeyType: bcs.u8(),\n\tpk: bcs.vector(bcs.u8()),\n});\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,iBAA+B;AAC/B,IAAAA,cAAoB;AAEb,MAAM,iBAAiB,gBAAI,KAAK,kBAAkB;AAAA,EACxD,uBAAuB,gBAAI,OAAO,yBAAyB;AAAA,IAC1D,OAAO,gBAAI,MAAM,EAAE;AAAA,IACnB,iBAAiB,gBAAI,OAAO,gBAAI,MAAM,EAAE,CAAC;AAAA,IACzC,qBAAqB,gBAAI,MAAM,EAAE;AAAA,EAClC,CAAC;AACF,CAAC;AAEM,MAAM,aAAa,gBAAI,KAAK,cAAc;AAAA,EAChD,WAAW,gBAAI,OAAO,aAAa;AAAA,IAClC,MAAM,gBAAI,OAAO,gBAAI,EAAE;AAAA,IACvB,KAAK,gBAAI,OAAO,gBAAI,OAAO,gBAAI,EAAE,CAAC;AAAA,EACnC,CAAC;AAAA,EACD,YAAY,gBAAI,OAAO,cAAc;AAAA,IACpC,MAAM,gBAAI,OAAO,gBAAI,EAAE;AAAA,IACvB,KAAK,gBAAI,OAAO,gBAAI,OAAO,gBAAI,EAAE,CAAC;AAAA,IAClC,KAAK,gBAAI,MAAM,EAAE;AAAA,EAClB,CAAC;AAAA,EACD,OAAO,gBAAI,OAAO,SAAS,CAAC,CAAC;AAC9B,CAAC;AAKM,MAAM,kBAAkB,gBAAI,OAAO,mBAAmB;AAAA,EAC5D,SAAS,gBAAI;AAAA,EACb,WAAW,gBAAI;AAAA,EACf,IAAI,gBAAI,OAAO,gBAAI,EAAE,EAAE,UAAU;AAAA,IAChC,QAAQ,CAAC,YAAQ,kBAAM,IAAI,WAAW,GAAG,CAAC;AAAA,IAC1C,OAAO,CAAC,YAAgB,oBAAQ,GAAG;AAAA,EACpC,CAAC;AAAA,EACD,UAAU,gBAAI,OAAO,gBAAI,MAAM,CAAC,gBAAI,SAAS,gBAAI,EAAE,CAAC,CAAC;AAAA,EACrD,WAAW,gBAAI;AAAA,EACf,iBAAiB;AAAA,EACjB,YAAY;AACb,CAAC;AAKM,MAAM,gBAAgB,gBAAI,OAAO,aAAa;AAAA,EACpD,IAAI,gBAAI;AAAA,EACR,MAAM,gBAAI,OAAO;AAAA,EACjB,KAAK,gBAAI,OAAO;AAAA,EAChB,SAAS,gBAAI,GAAG;AAAA,EAChB,IAAI,gBAAI,OAAO,gBAAI,GAAG,CAAC;AACxB,CAAC;",
6
+ "names": ["import_bcs"]
7
+ }
@@ -0,0 +1,37 @@
1
+ import type { Fp2, Fp12 } from '@noble/curves/abstract/tower';
2
+ import type { ProjPointType } from '@noble/curves/abstract/weierstrass';
3
+ export declare class G1Element {
4
+ point: ProjPointType<bigint>;
5
+ constructor(point: ProjPointType<bigint>);
6
+ static generator(): G1Element;
7
+ static fromBytes(bytes: Uint8Array): G1Element;
8
+ toBytes(): Uint8Array;
9
+ multiply(scalar: Scalar): G1Element;
10
+ add(other: G1Element): G1Element;
11
+ subtract(other: G1Element): G1Element;
12
+ static hashToCurve(data: Uint8Array): G1Element;
13
+ pairing(other: G2Element): GTElement;
14
+ }
15
+ export declare class G2Element {
16
+ point: ProjPointType<Fp2>;
17
+ constructor(point: ProjPointType<Fp2>);
18
+ static generator(): G2Element;
19
+ static fromBytes(bytes: Uint8Array): G2Element;
20
+ toBytes(): Uint8Array;
21
+ multiply(scalar: Scalar): G2Element;
22
+ add(other: G2Element): G2Element;
23
+ hashToCurve(data: Uint8Array): G2Element;
24
+ }
25
+ export declare class GTElement {
26
+ element: Fp12;
27
+ constructor(element: Fp12);
28
+ toBytes(): Uint8Array;
29
+ }
30
+ export declare class Scalar {
31
+ scalar: bigint;
32
+ constructor(scalar: bigint);
33
+ static random(): Scalar;
34
+ toBytes(): Uint8Array;
35
+ static fromBytes(bytes: Uint8Array): Scalar;
36
+ static fromNumber(num: number): Scalar;
37
+ }
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var bls12381_exports = {};
20
+ __export(bls12381_exports, {
21
+ G1Element: () => G1Element,
22
+ G2Element: () => G2Element,
23
+ GTElement: () => GTElement,
24
+ Scalar: () => Scalar
25
+ });
26
+ module.exports = __toCommonJS(bls12381_exports);
27
+ var import_bcs = require("@mysten/bcs");
28
+ var import_bls12_381 = require("@noble/curves/bls12-381");
29
+ class G1Element {
30
+ constructor(point) {
31
+ this.point = point;
32
+ }
33
+ static generator() {
34
+ return new G1Element(import_bls12_381.bls12_381.G1.ProjectivePoint.BASE);
35
+ }
36
+ static fromBytes(bytes) {
37
+ return new G1Element(import_bls12_381.bls12_381.G1.ProjectivePoint.fromHex((0, import_bcs.toHex)(bytes)));
38
+ }
39
+ toBytes() {
40
+ return this.point.toRawBytes();
41
+ }
42
+ multiply(scalar) {
43
+ return new G1Element(this.point.multiply(scalar.scalar));
44
+ }
45
+ add(other) {
46
+ return new G1Element(this.point.add(other.point));
47
+ }
48
+ subtract(other) {
49
+ return new G1Element(this.point.subtract(other.point));
50
+ }
51
+ static hashToCurve(data) {
52
+ return new G1Element(
53
+ import_bls12_381.bls12_381.G1.ProjectivePoint.fromAffine(import_bls12_381.bls12_381.G1.hashToCurve(data).toAffine())
54
+ );
55
+ }
56
+ pairing(other) {
57
+ return new GTElement(import_bls12_381.bls12_381.pairing(this.point, other.point));
58
+ }
59
+ }
60
+ class G2Element {
61
+ constructor(point) {
62
+ this.point = point;
63
+ }
64
+ static generator() {
65
+ return new G2Element(import_bls12_381.bls12_381.G2.ProjectivePoint.BASE);
66
+ }
67
+ static fromBytes(bytes) {
68
+ return new G2Element(import_bls12_381.bls12_381.G2.ProjectivePoint.fromHex((0, import_bcs.toHex)(bytes)));
69
+ }
70
+ toBytes() {
71
+ return this.point.toRawBytes();
72
+ }
73
+ multiply(scalar) {
74
+ return new G2Element(this.point.multiply(scalar.scalar));
75
+ }
76
+ add(other) {
77
+ return new G2Element(this.point.add(other.point));
78
+ }
79
+ hashToCurve(data) {
80
+ return new G2Element(
81
+ import_bls12_381.bls12_381.G2.ProjectivePoint.fromAffine(import_bls12_381.bls12_381.G2.hashToCurve(data).toAffine())
82
+ );
83
+ }
84
+ }
85
+ class GTElement {
86
+ constructor(element) {
87
+ this.element = element;
88
+ }
89
+ toBytes() {
90
+ return import_bls12_381.bls12_381.fields.Fp12.toBytes(this.element);
91
+ }
92
+ }
93
+ class Scalar {
94
+ constructor(scalar) {
95
+ this.scalar = scalar;
96
+ }
97
+ static random() {
98
+ return Scalar.fromBytes(import_bls12_381.bls12_381.utils.randomPrivateKey());
99
+ }
100
+ toBytes() {
101
+ return new Uint8Array(import_bls12_381.bls12_381.fields.Fr.toBytes(this.scalar));
102
+ }
103
+ static fromBytes(bytes) {
104
+ return new Scalar(import_bls12_381.bls12_381.fields.Fr.fromBytes(bytes));
105
+ }
106
+ static fromNumber(num) {
107
+ return new Scalar(BigInt(num));
108
+ }
109
+ }
110
+ //# sourceMappingURL=bls12381.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/bls12381.ts"],
4
+ "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { toHex } from '@mysten/bcs';\nimport type { Fp2, Fp12 } from '@noble/curves/abstract/tower';\nimport type { ProjPointType } from '@noble/curves/abstract/weierstrass';\nimport { bls12_381 } from '@noble/curves/bls12-381';\n\nexport class G1Element {\n\tpoint: ProjPointType<bigint>;\n\n\tconstructor(point: ProjPointType<bigint>) {\n\t\tthis.point = point;\n\t}\n\n\tstatic generator(): G1Element {\n\t\treturn new G1Element(bls12_381.G1.ProjectivePoint.BASE);\n\t}\n\n\tstatic fromBytes(bytes: Uint8Array): G1Element {\n\t\treturn new G1Element(bls12_381.G1.ProjectivePoint.fromHex(toHex(bytes)));\n\t}\n\n\ttoBytes(): Uint8Array {\n\t\treturn this.point.toRawBytes();\n\t}\n\n\tmultiply(scalar: Scalar): G1Element {\n\t\treturn new G1Element(this.point.multiply(scalar.scalar));\n\t}\n\n\tadd(other: G1Element): G1Element {\n\t\treturn new G1Element(this.point.add(other.point));\n\t}\n\n\tsubtract(other: G1Element): G1Element {\n\t\treturn new G1Element(this.point.subtract(other.point));\n\t}\n\n\tstatic hashToCurve(data: Uint8Array): G1Element {\n\t\treturn new G1Element(\n\t\t\tbls12_381.G1.ProjectivePoint.fromAffine(bls12_381.G1.hashToCurve(data).toAffine()),\n\t\t);\n\t}\n\n\tpairing(other: G2Element): GTElement {\n\t\treturn new GTElement(bls12_381.pairing(this.point, other.point));\n\t}\n}\n\nexport class G2Element {\n\tpoint: ProjPointType<Fp2>;\n\n\tconstructor(point: ProjPointType<Fp2>) {\n\t\tthis.point = point;\n\t}\n\n\tstatic generator(): G2Element {\n\t\treturn new G2Element(bls12_381.G2.ProjectivePoint.BASE);\n\t}\n\n\tstatic fromBytes(bytes: Uint8Array): G2Element {\n\t\treturn new G2Element(bls12_381.G2.ProjectivePoint.fromHex(toHex(bytes)));\n\t}\n\n\ttoBytes(): Uint8Array {\n\t\treturn this.point.toRawBytes();\n\t}\n\n\tmultiply(scalar: Scalar): G2Element {\n\t\treturn new G2Element(this.point.multiply(scalar.scalar));\n\t}\n\n\tadd(other: G2Element): G2Element {\n\t\treturn new G2Element(this.point.add(other.point));\n\t}\n\n\thashToCurve(data: Uint8Array): G2Element {\n\t\treturn new G2Element(\n\t\t\tbls12_381.G2.ProjectivePoint.fromAffine(bls12_381.G2.hashToCurve(data).toAffine()),\n\t\t);\n\t}\n}\n\nexport class GTElement {\n\telement: Fp12;\n\n\tconstructor(element: Fp12) {\n\t\tthis.element = element;\n\t}\n\n\ttoBytes(): Uint8Array {\n\t\treturn bls12_381.fields.Fp12.toBytes(this.element);\n\t}\n}\n\nexport class Scalar {\n\tscalar: bigint;\n\n\tconstructor(scalar: bigint) {\n\t\tthis.scalar = scalar;\n\t}\n\n\tstatic random(): Scalar {\n\t\treturn Scalar.fromBytes(bls12_381.utils.randomPrivateKey());\n\t}\n\n\ttoBytes(): Uint8Array {\n\t\treturn new Uint8Array(bls12_381.fields.Fr.toBytes(this.scalar));\n\t}\n\n\tstatic fromBytes(bytes: Uint8Array): Scalar {\n\t\treturn new Scalar(bls12_381.fields.Fr.fromBytes(bytes));\n\t}\n\n\tstatic fromNumber(num: number): Scalar {\n\t\treturn new Scalar(BigInt(num));\n\t}\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,iBAAsB;AAGtB,uBAA0B;AAEnB,MAAM,UAAU;AAAA,EAGtB,YAAY,OAA8B;AACzC,SAAK,QAAQ;AAAA,EACd;AAAA,EAEA,OAAO,YAAuB;AAC7B,WAAO,IAAI,UAAU,2BAAU,GAAG,gBAAgB,IAAI;AAAA,EACvD;AAAA,EAEA,OAAO,UAAU,OAA8B;AAC9C,WAAO,IAAI,UAAU,2BAAU,GAAG,gBAAgB,YAAQ,kBAAM,KAAK,CAAC,CAAC;AAAA,EACxE;AAAA,EAEA,UAAsB;AACrB,WAAO,KAAK,MAAM,WAAW;AAAA,EAC9B;AAAA,EAEA,SAAS,QAA2B;AACnC,WAAO,IAAI,UAAU,KAAK,MAAM,SAAS,OAAO,MAAM,CAAC;AAAA,EACxD;AAAA,EAEA,IAAI,OAA6B;AAChC,WAAO,IAAI,UAAU,KAAK,MAAM,IAAI,MAAM,KAAK,CAAC;AAAA,EACjD;AAAA,EAEA,SAAS,OAA6B;AACrC,WAAO,IAAI,UAAU,KAAK,MAAM,SAAS,MAAM,KAAK,CAAC;AAAA,EACtD;AAAA,EAEA,OAAO,YAAY,MAA6B;AAC/C,WAAO,IAAI;AAAA,MACV,2BAAU,GAAG,gBAAgB,WAAW,2BAAU,GAAG,YAAY,IAAI,EAAE,SAAS,CAAC;AAAA,IAClF;AAAA,EACD;AAAA,EAEA,QAAQ,OAA6B;AACpC,WAAO,IAAI,UAAU,2BAAU,QAAQ,KAAK,OAAO,MAAM,KAAK,CAAC;AAAA,EAChE;AACD;AAEO,MAAM,UAAU;AAAA,EAGtB,YAAY,OAA2B;AACtC,SAAK,QAAQ;AAAA,EACd;AAAA,EAEA,OAAO,YAAuB;AAC7B,WAAO,IAAI,UAAU,2BAAU,GAAG,gBAAgB,IAAI;AAAA,EACvD;AAAA,EAEA,OAAO,UAAU,OAA8B;AAC9C,WAAO,IAAI,UAAU,2BAAU,GAAG,gBAAgB,YAAQ,kBAAM,KAAK,CAAC,CAAC;AAAA,EACxE;AAAA,EAEA,UAAsB;AACrB,WAAO,KAAK,MAAM,WAAW;AAAA,EAC9B;AAAA,EAEA,SAAS,QAA2B;AACnC,WAAO,IAAI,UAAU,KAAK,MAAM,SAAS,OAAO,MAAM,CAAC;AAAA,EACxD;AAAA,EAEA,IAAI,OAA6B;AAChC,WAAO,IAAI,UAAU,KAAK,MAAM,IAAI,MAAM,KAAK,CAAC;AAAA,EACjD;AAAA,EAEA,YAAY,MAA6B;AACxC,WAAO,IAAI;AAAA,MACV,2BAAU,GAAG,gBAAgB,WAAW,2BAAU,GAAG,YAAY,IAAI,EAAE,SAAS,CAAC;AAAA,IAClF;AAAA,EACD;AACD;AAEO,MAAM,UAAU;AAAA,EAGtB,YAAY,SAAe;AAC1B,SAAK,UAAU;AAAA,EAChB;AAAA,EAEA,UAAsB;AACrB,WAAO,2BAAU,OAAO,KAAK,QAAQ,KAAK,OAAO;AAAA,EAClD;AACD;AAEO,MAAM,OAAO;AAAA,EAGnB,YAAY,QAAgB;AAC3B,SAAK,SAAS;AAAA,EACf;AAAA,EAEA,OAAO,SAAiB;AACvB,WAAO,OAAO,UAAU,2BAAU,MAAM,iBAAiB,CAAC;AAAA,EAC3D;AAAA,EAEA,UAAsB;AACrB,WAAO,IAAI,WAAW,2BAAU,OAAO,GAAG,QAAQ,KAAK,MAAM,CAAC;AAAA,EAC/D;AAAA,EAEA,OAAO,UAAU,OAA2B;AAC3C,WAAO,IAAI,OAAO,2BAAU,OAAO,GAAG,UAAU,KAAK,CAAC;AAAA,EACvD;AAAA,EAEA,OAAO,WAAW,KAAqB;AACtC,WAAO,IAAI,OAAO,OAAO,GAAG,CAAC;AAAA,EAC9B;AACD;",
6
+ "names": []
7
+ }
@@ -0,0 +1,83 @@
1
+ import type { SuiClient } from '@mysten/sui/client';
2
+ import { DemType, KemType } from './encrypt.js';
3
+ import type { KeyServer } from './key-server.js';
4
+ import type { SessionKey } from './session-key.js';
5
+ /**
6
+ * Configuration options for initializing a SealClient
7
+ * @property serverObjectIds: Array of object IDs for the key servers to use.
8
+ * @property verifyKeyServers: Whether to verify the key servers' authenticity.
9
+ * Should be false if servers are pre-verified (e.g., getAllowlistedKeyServers).
10
+ * Defaults to true.
11
+ * @property timeout: Timeout in milliseconds for network requests. Defaults to 10 seconds.
12
+ */
13
+ export interface SealClientOptions {
14
+ suiClient: SuiClient;
15
+ serverObjectIds: string[];
16
+ verifyKeyServers?: boolean;
17
+ timeout?: number;
18
+ }
19
+ export declare class SealClient {
20
+ #private;
21
+ constructor(options: SealClientOptions);
22
+ /**
23
+ * Return an encrypted message under the identity.
24
+ *
25
+ * @param kemType - The type of KEM to use.
26
+ * @param demType - The type of DEM to use.
27
+ * @param threshold - The threshold for the TSS encryption.
28
+ * @param packageId - the packageId namespace.
29
+ * @param id - the identity to use.
30
+ * @param data - the data to encrypt.
31
+ * @param aad - optional additional authenticated data.
32
+ * @returns The bcs bytes of the encrypted object containing all metadata and the 256-bit symmetric key that was used to encrypt the object.
33
+ * Since the symmetric key can be used to decrypt, it should not be shared but can be used e.g. for backup.
34
+ */
35
+ encrypt({ kemType, demType, threshold, packageId, id, data, aad, }: {
36
+ kemType?: KemType;
37
+ demType?: DemType;
38
+ threshold: number;
39
+ packageId: string;
40
+ id: string;
41
+ data: Uint8Array;
42
+ aad?: Uint8Array;
43
+ }): Promise<{
44
+ encryptedObject: Uint8Array;
45
+ key: Uint8Array;
46
+ }>;
47
+ /**
48
+ * Decrypt the given encrypted bytes using cached keys.
49
+ * Calls fetchKeys in case one or more of the required keys is not cached yet.
50
+ * The function throws an error if the client's key servers are not a subset of
51
+ * the encrypted object's key servers (including the same weights) or if the
52
+ * threshold cannot be met.
53
+ *
54
+ * @param data - The encrypted bytes to decrypt.
55
+ * @param sessionKey - The session key to use.
56
+ * @param txBytes - The transaction bytes to use (that calls seal_approve* functions).
57
+ * @returns - The decrypted plaintext corresponding to ciphertext.
58
+ */
59
+ decrypt({ data, sessionKey, txBytes, }: {
60
+ data: Uint8Array;
61
+ sessionKey: SessionKey;
62
+ txBytes: Uint8Array;
63
+ }): Promise<Uint8Array<ArrayBufferLike>>;
64
+ getKeyServers(): Promise<KeyServer[]>;
65
+ /**
66
+ * Fetch keys from the key servers and update the cache.
67
+ *
68
+ * It is recommended to call this function once for all ids of all encrypted obejcts if
69
+ * there are multiple, then call decrypt for each object. This avoids calling fetchKey
70
+ * individually for each decrypt.
71
+ *
72
+ * @param ids - The ids of the encrypted objects.
73
+ * @param txBytes - The transaction bytes to use (that calls seal_approve* functions).
74
+ * @param sessionKey - The session key to use.
75
+ * @param threshold - The threshold for the TSS encryptions. The function returns when a threshold of key servers had returned keys for all ids.
76
+ */
77
+ fetchKeys({ ids, txBytes, sessionKey, threshold, }: {
78
+ ids: string[];
79
+ txBytes: Uint8Array;
80
+ sessionKey: SessionKey;
81
+ threshold: number;
82
+ }): Promise<void>;
83
+ }