@zhoujun_aptos/octopus-ts-sdk-min 0.1.0

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 (62) hide show
  1. package/README.md +108 -0
  2. package/dist/aes256gcm.d.ts +16 -0
  3. package/dist/aes256gcm.d.ts.map +1 -0
  4. package/dist/aes256gcm.js +98 -0
  5. package/dist/aes256gcm.js.map +1 -0
  6. package/dist/elgamal.d.ts +31 -0
  7. package/dist/elgamal.d.ts.map +1 -0
  8. package/dist/elgamal.js +96 -0
  9. package/dist/elgamal.js.map +1 -0
  10. package/dist/enc/index.d.ts +35 -0
  11. package/dist/enc/index.d.ts.map +1 -0
  12. package/dist/enc/index.js +171 -0
  13. package/dist/enc/index.js.map +1 -0
  14. package/dist/enc/simple_elgamal_ristretto255.d.ts +27 -0
  15. package/dist/enc/simple_elgamal_ristretto255.d.ts.map +1 -0
  16. package/dist/enc/simple_elgamal_ristretto255.js +135 -0
  17. package/dist/enc/simple_elgamal_ristretto255.js.map +1 -0
  18. package/dist/group.d.ts +37 -0
  19. package/dist/group.d.ts.map +1 -0
  20. package/dist/group.js +150 -0
  21. package/dist/group.js.map +1 -0
  22. package/dist/ibe/index.d.ts +46 -0
  23. package/dist/ibe/index.d.ts.map +1 -0
  24. package/dist/ibe/index.js +238 -0
  25. package/dist/ibe/index.js.map +1 -0
  26. package/dist/ibe/otp_hmac_boneh_franklin_bls12381_short_pk.d.ts +37 -0
  27. package/dist/ibe/otp_hmac_boneh_franklin_bls12381_short_pk.d.ts.map +1 -0
  28. package/dist/ibe/otp_hmac_boneh_franklin_bls12381_short_pk.js +131 -0
  29. package/dist/ibe/otp_hmac_boneh_franklin_bls12381_short_pk.js.map +1 -0
  30. package/dist/index.d.ts +10 -0
  31. package/dist/index.d.ts.map +1 -0
  32. package/dist/index.js +47 -0
  33. package/dist/index.js.map +1 -0
  34. package/dist/shamir_gf256.d.ts +61 -0
  35. package/dist/shamir_gf256.d.ts.map +1 -0
  36. package/dist/shamir_gf256.js +295 -0
  37. package/dist/shamir_gf256.js.map +1 -0
  38. package/dist/sig/index.d.ts +35 -0
  39. package/dist/sig/index.d.ts.map +1 -0
  40. package/dist/sig/index.js +171 -0
  41. package/dist/sig/index.js.map +1 -0
  42. package/dist/sig/schnorr_ristretto255.d.ts +28 -0
  43. package/dist/sig/schnorr_ristretto255.d.ts.map +1 -0
  44. package/dist/sig/schnorr_ristretto255.js +135 -0
  45. package/dist/sig/schnorr_ristretto255.js.map +1 -0
  46. package/dist/silent_setup_encryption.d.ts +82 -0
  47. package/dist/silent_setup_encryption.d.ts.map +1 -0
  48. package/dist/silent_setup_encryption.js +285 -0
  49. package/dist/silent_setup_encryption.js.map +1 -0
  50. package/dist/utils.d.ts +9 -0
  51. package/dist/utils.d.ts.map +1 -0
  52. package/dist/utils.js +100 -0
  53. package/dist/utils.js.map +1 -0
  54. package/dist/worker_config.d.ts +17 -0
  55. package/dist/worker_config.d.ts.map +1 -0
  56. package/dist/worker_config.js +84 -0
  57. package/dist/worker_config.js.map +1 -0
  58. package/dist/worker_task.d.ts +15 -0
  59. package/dist/worker_task.d.ts.map +1 -0
  60. package/dist/worker_task.js +59 -0
  61. package/dist/worker_task.js.map +1 -0
  62. package/package.json +35 -0
@@ -0,0 +1,135 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.SimpleElGamalRistretto255Ciphertext = exports.SimpleElGamalRistretto255DecKey = exports.SimpleElGamalRistretto255EncKey = void 0;
37
+ exports.keygen = keygen;
38
+ exports.deriveEncryptionKey = deriveEncryptionKey;
39
+ exports.encrypt = encrypt;
40
+ exports.decrypt = decrypt;
41
+ const ElGamal = __importStar(require("../elgamal"));
42
+ const Group = __importStar(require("../group"));
43
+ const utils_1 = require("../utils");
44
+ class SimpleElGamalRistretto255EncKey {
45
+ elgamalEk;
46
+ constructor(elgamalEk) {
47
+ this.elgamalEk = elgamalEk;
48
+ }
49
+ static deserialize(deserializer) {
50
+ const elgamalEk = ElGamal.EncKey.decode(deserializer);
51
+ return new SimpleElGamalRistretto255EncKey(elgamalEk);
52
+ }
53
+ serialize(serializer) {
54
+ this.elgamalEk.encode(serializer);
55
+ }
56
+ }
57
+ exports.SimpleElGamalRistretto255EncKey = SimpleElGamalRistretto255EncKey;
58
+ class SimpleElGamalRistretto255DecKey {
59
+ elgamalDk;
60
+ constructor(elgamalDk) {
61
+ this.elgamalDk = elgamalDk;
62
+ }
63
+ static deserialize(deserializer) {
64
+ const elgamalDk = ElGamal.DecKey.deserialize(deserializer);
65
+ return new SimpleElGamalRistretto255DecKey(elgamalDk);
66
+ }
67
+ serialize(serializer) {
68
+ this.elgamalDk.encode(serializer);
69
+ }
70
+ }
71
+ exports.SimpleElGamalRistretto255DecKey = SimpleElGamalRistretto255DecKey;
72
+ class SimpleElGamalRistretto255Ciphertext {
73
+ elgamalCiph;
74
+ symmetricCiph;
75
+ mac;
76
+ constructor(elgamalCiph, symmetricCiph, mac) {
77
+ this.elgamalCiph = elgamalCiph;
78
+ this.symmetricCiph = symmetricCiph;
79
+ this.mac = mac;
80
+ }
81
+ static deserialize(deserializer) {
82
+ const elgamalCiph = ElGamal.Ciphertext.deserialize(deserializer);
83
+ const symmetricCiph = deserializer.deserializeBytes();
84
+ const mac = deserializer.deserializeBytes();
85
+ return new SimpleElGamalRistretto255Ciphertext(elgamalCiph, symmetricCiph, mac);
86
+ }
87
+ serialize(serializer) {
88
+ this.elgamalCiph.encode(serializer);
89
+ serializer.serializeBytes(this.symmetricCiph);
90
+ serializer.serializeBytes(this.mac);
91
+ }
92
+ }
93
+ exports.SimpleElGamalRistretto255Ciphertext = SimpleElGamalRistretto255Ciphertext;
94
+ // Core Simple ElGamal Ristretto255 functions
95
+ function keygen() {
96
+ const encBase = Group.Element.rand();
97
+ const privateScalar = Group.Scalar.rand();
98
+ const elgamalDk = new ElGamal.DecKey(encBase, privateScalar);
99
+ return new SimpleElGamalRistretto255DecKey(elgamalDk);
100
+ }
101
+ function deriveEncryptionKey(dk) {
102
+ const { elgamalDk } = dk;
103
+ const { encBase, privateScalar } = elgamalDk;
104
+ const publicPoint = encBase.scale(privateScalar);
105
+ const elgamalEk = new ElGamal.EncKey(encBase, publicPoint);
106
+ return new SimpleElGamalRistretto255EncKey(elgamalEk);
107
+ }
108
+ function encrypt(ek, msg) {
109
+ const { elgamalEk } = ek;
110
+ const elgamalPtxt = Group.Element.rand();
111
+ const elgamalRand = Group.Scalar.rand();
112
+ const elgamalCiph = ElGamal.enc(elgamalEk, elgamalRand, elgamalPtxt);
113
+ const seed = elgamalPtxt.toBytes();
114
+ const otp = (0, utils_1.kdf)(seed, new TextEncoder().encode("OTP/SIMPLE_ELGAMAL_RISTRETTO255"), msg.length);
115
+ const symmetricCiph = (0, utils_1.xorBytes)(otp, msg);
116
+ const hmacKey = (0, utils_1.kdf)(seed, new TextEncoder().encode("HMAC/SIMPLE_ELGAMAL_RISTRETTO255"), 32);
117
+ const mac = (0, utils_1.hmac_sha3_256)(hmacKey, symmetricCiph);
118
+ return new SimpleElGamalRistretto255Ciphertext(elgamalCiph, symmetricCiph, mac);
119
+ }
120
+ function decrypt(dk, ciphertext) {
121
+ const { elgamalDk } = dk;
122
+ const { elgamalCiph, symmetricCiph, mac } = ciphertext;
123
+ const elgamalPtxt = ElGamal.dec(elgamalDk, elgamalCiph);
124
+ const seed = elgamalPtxt.toBytes();
125
+ const hmacKey = (0, utils_1.kdf)(seed, new TextEncoder().encode("HMAC/SIMPLE_ELGAMAL_RISTRETTO255"), 32);
126
+ const macAnother = (0, utils_1.hmac_sha3_256)(hmacKey, symmetricCiph);
127
+ // Check MAC
128
+ if (!mac.every((byte, index) => byte === macAnother[index])) {
129
+ return undefined;
130
+ }
131
+ const otp = (0, utils_1.kdf)(seed, new TextEncoder().encode("OTP/SIMPLE_ELGAMAL_RISTRETTO255"), symmetricCiph.length);
132
+ const msg = (0, utils_1.xorBytes)(otp, symmetricCiph);
133
+ return msg;
134
+ }
135
+ //# sourceMappingURL=simple_elgamal_ristretto255.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simple_elgamal_ristretto255.js","sourceRoot":"","sources":["../../src/enc/simple_elgamal_ristretto255.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkEA,wBAOC;AAED,kDAOC;AAED,0BAeC;AAED,0BAmBC;AAvHD,oDAAsC;AACtC,gDAAkC;AAClC,oCAAwD;AAExD,MAAa,+BAA+B;IACxC,SAAS,CAAiB;IAE1B,YAAY,SAAyB;QACjC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC/B,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,YAA0B;QACzC,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACtD,OAAO,IAAI,+BAA+B,CAAC,SAAS,CAAC,CAAC;IAC1D,CAAC;IAED,SAAS,CAAC,UAAsB;QAC5B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACtC,CAAC;CACJ;AAfD,0EAeC;AAED,MAAa,+BAA+B;IACxC,SAAS,CAAiB;IAE1B,YAAY,SAAyB;QACjC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC/B,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,YAA0B;QACzC,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QAC3D,OAAO,IAAI,+BAA+B,CAAC,SAAS,CAAC,CAAC;IAC1D,CAAC;IAED,SAAS,CAAC,UAAsB;QAC5B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACtC,CAAC;CACJ;AAfD,0EAeC;AAED,MAAa,mCAAmC;IAC5C,WAAW,CAAqB;IAChC,aAAa,CAAa;IAC1B,GAAG,CAAa;IAEhB,YAAY,WAA+B,EAAE,aAAyB,EAAE,GAAe;QACnF,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,YAA0B;QACzC,MAAM,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QACjE,MAAM,aAAa,GAAG,YAAY,CAAC,gBAAgB,EAAE,CAAC;QACtD,MAAM,GAAG,GAAG,YAAY,CAAC,gBAAgB,EAAE,CAAC;QAC5C,OAAO,IAAI,mCAAmC,CAAC,WAAW,EAAE,aAAa,EAAE,GAAG,CAAC,CAAC;IACpF,CAAC;IAED,SAAS,CAAC,UAAsB;QAC5B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACpC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC9C,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxC,CAAC;CACJ;AAvBD,kFAuBC;AAED,6CAA6C;AAE7C,SAAgB,MAAM;IAClB,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IACrC,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAE1C,MAAM,SAAS,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IAE7D,OAAO,IAAI,+BAA+B,CAAC,SAAS,CAAC,CAAC;AAC1D,CAAC;AAED,SAAgB,mBAAmB,CAAC,EAAmC;IACnE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;IACzB,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,SAAS,CAAC;IAC7C,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAEjD,MAAM,SAAS,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAC3D,OAAO,IAAI,+BAA+B,CAAC,SAAS,CAAC,CAAC;AAC1D,CAAC;AAED,SAAgB,OAAO,CAAC,EAAmC,EAAE,GAAe;IACxE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;IAEzB,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IACzC,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACxC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;IAErE,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC;IACnC,MAAM,GAAG,GAAG,IAAA,WAAG,EAAC,IAAI,EAAE,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,iCAAiC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/F,MAAM,aAAa,GAAG,IAAA,gBAAQ,EAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAEzC,MAAM,OAAO,GAAG,IAAA,WAAG,EAAC,IAAI,EAAE,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,kCAAkC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC5F,MAAM,GAAG,GAAG,IAAA,qBAAa,EAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IAElD,OAAO,IAAI,mCAAmC,CAAC,WAAW,EAAE,aAAa,EAAE,GAAG,CAAC,CAAC;AACpF,CAAC;AAED,SAAgB,OAAO,CAAC,EAAmC,EAAE,UAA+C;IACxG,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;IACzB,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,EAAE,GAAG,UAAU,CAAC;IAEvD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAExD,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC;IACnC,MAAM,OAAO,GAAG,IAAA,WAAG,EAAC,IAAI,EAAE,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,kCAAkC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC5F,MAAM,UAAU,GAAG,IAAA,qBAAa,EAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IAEzD,YAAY;IACZ,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,KAAK,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC1D,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,GAAG,GAAG,IAAA,WAAG,EAAC,IAAI,EAAE,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,iCAAiC,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACzG,MAAM,GAAG,GAAG,IAAA,gBAAQ,EAAC,GAAG,EAAE,aAAa,CAAC,CAAC;IAEzC,OAAO,GAAG,CAAC;AACf,CAAC"}
@@ -0,0 +1,37 @@
1
+ import { Deserializer, Serializer } from '@aptos-labs/ts-sdk';
2
+ export declare class Element {
3
+ bytes: Uint8Array;
4
+ constructor(bytes: Uint8Array);
5
+ static dummy(): Element;
6
+ static fromInner(inner: any): Element;
7
+ static groupIdentity(): Element;
8
+ static rand(): Element;
9
+ static deserialize(deserializer: Deserializer): Element;
10
+ encode(serializer: Serializer): void;
11
+ toBytes(): Uint8Array;
12
+ toHex(): string;
13
+ asInner(): any;
14
+ add(other: Element): Element;
15
+ sub(other: Element): Element;
16
+ scale(scalar: Scalar): Element;
17
+ }
18
+ export declare class Scalar {
19
+ bytes: Uint8Array;
20
+ constructor(bytes: Uint8Array);
21
+ static dummy(): Scalar;
22
+ static fromU64(x: bigint): Scalar;
23
+ static fromLittleEndianBytesModQ(bytes: Uint8Array): Scalar;
24
+ static rand(): Scalar;
25
+ static deserialize(deserializer: Deserializer): Scalar;
26
+ encode(serializer: Serializer): void;
27
+ toBytes(): Uint8Array;
28
+ toHex(): string;
29
+ isZero(): boolean;
30
+ add(other: Scalar): Scalar;
31
+ sub(other: Scalar): Scalar;
32
+ mul(other: Scalar): Scalar;
33
+ neg(): Scalar;
34
+ }
35
+ export declare function msm(bases: Element[], scalars: Scalar[]): Element;
36
+ export declare function scalarFrom512BitHash(hash: Uint8Array): Scalar;
37
+ //# sourceMappingURL=group.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group.d.ts","sourceRoot":"","sources":["../src/group.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAO9D,qBAAa,OAAO;IAChB,KAAK,EAAE,UAAU,CAAC;gBAEN,KAAK,EAAE,UAAU;IAG7B,MAAM,CAAC,KAAK,IAAI,OAAO;IAIvB,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;IAMrC,MAAM,CAAC,aAAa,IAAI,OAAO;IAI/B,MAAM,CAAC,IAAI,IAAI,OAAO;IAMtB,MAAM,CAAC,WAAW,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO;IAKvD,MAAM,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IAIpC,OAAO,IAAI,UAAU;IAMrB,KAAK,IAAI,MAAM;IAIf,OAAO,IAAI,GAAG;IAId,GAAG,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAO5B,GAAG,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAO5B,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;CASjC;AAED,qBAAa,MAAM;IACf,KAAK,EAAE,UAAU,CAAC;gBAEN,KAAK,EAAE,UAAU;IAI7B,MAAM,CAAC,KAAK,IAAI,MAAM;IAItB,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;IAIjC,MAAM,CAAC,yBAAyB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM;IAK3D,MAAM,CAAC,IAAI,IAAI,MAAM;IAQrB,MAAM,CAAC,WAAW,CAAC,YAAY,EAAE,YAAY,GAAG,MAAM;IAKtD,MAAM,CAAC,UAAU,EAAE,UAAU;IAI7B,OAAO,IAAI,UAAU;IAMrB,KAAK,IAAI,MAAM;IAIf,MAAM,IAAI,OAAO;IAIjB,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAK1B,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAK1B,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAK1B,GAAG,IAAI,MAAM;CAIhB;AAED,wBAAgB,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAOhE;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAQ7D"}
package/dist/group.js ADDED
@@ -0,0 +1,150 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Scalar = exports.Element = void 0;
4
+ exports.msm = msm;
5
+ exports.scalarFrom512BitHash = scalarFrom512BitHash;
6
+ const ed25519_1 = require("@noble/curves/ed25519");
7
+ const utils_1 = require("@noble/curves/abstract/utils");
8
+ const ts_sdk_1 = require("@aptos-labs/ts-sdk");
9
+ const utils_2 = require("./utils");
10
+ // Constants
11
+ const Q = BigInt('0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed');
12
+ // Types
13
+ class Element {
14
+ bytes;
15
+ constructor(bytes) {
16
+ this.bytes = bytes;
17
+ }
18
+ static dummy() {
19
+ return new Element(new Uint8Array(32));
20
+ }
21
+ static fromInner(inner) {
22
+ const compressed = true;
23
+ const bytes = inner.toRawBytes(compressed);
24
+ return new Element(bytes);
25
+ }
26
+ static groupIdentity() {
27
+ return Element.fromInner(ed25519_1.RistrettoPoint.ZERO);
28
+ }
29
+ static rand() {
30
+ const randomBytes = (0, utils_2.randBytes)(64);
31
+ const point = ed25519_1.RistrettoPoint.hashToCurve(randomBytes);
32
+ return Element.fromInner(point);
33
+ }
34
+ static deserialize(deserializer) {
35
+ const bytes = deserializer.deserializeBytes();
36
+ return new Element(bytes);
37
+ }
38
+ encode(serializer) {
39
+ serializer.serializeBytes(this.bytes);
40
+ }
41
+ toBytes() {
42
+ const serializer = new ts_sdk_1.Serializer();
43
+ this.encode(serializer);
44
+ return serializer.toUint8Array();
45
+ }
46
+ toHex() {
47
+ return (0, utils_1.bytesToHex)(this.toBytes());
48
+ }
49
+ asInner() {
50
+ return ed25519_1.RistrettoPoint.fromHex(this.bytes);
51
+ }
52
+ add(other) {
53
+ const pointA = this.asInner();
54
+ const pointB = other.asInner();
55
+ const result = pointA.add(pointB);
56
+ return Element.fromInner(result);
57
+ }
58
+ sub(other) {
59
+ const pointA = this.asInner();
60
+ const pointB = other.asInner();
61
+ const result = pointA.subtract(pointB);
62
+ return Element.fromInner(result);
63
+ }
64
+ scale(scalar) {
65
+ if (scalar.isZero()) {
66
+ return Element.groupIdentity();
67
+ }
68
+ const point = this.asInner();
69
+ const s = (0, utils_1.bytesToNumberLE)(scalar.bytes);
70
+ const result = point.multiply(s);
71
+ return Element.fromInner(result);
72
+ }
73
+ }
74
+ exports.Element = Element;
75
+ class Scalar {
76
+ bytes;
77
+ constructor(bytes) {
78
+ this.bytes = bytes;
79
+ }
80
+ static dummy() {
81
+ return new Scalar(new Uint8Array(32));
82
+ }
83
+ static fromU64(x) {
84
+ return new Scalar((0, utils_1.numberToBytesLE)(x, 32));
85
+ }
86
+ static fromLittleEndianBytesModQ(bytes) {
87
+ const value = (0, utils_1.bytesToNumberLE)(bytes) % Q;
88
+ return new Scalar((0, utils_1.numberToBytesLE)(value, 32));
89
+ }
90
+ static rand() {
91
+ const randomBytes = (0, utils_2.randBytes)(64);
92
+ const value = (0, utils_1.bytesToNumberLE)(randomBytes) % Q;
93
+ // Ensure the scalar is not zero and within valid range
94
+ const scalarValue = value === 0n ? 1n : value;
95
+ return new Scalar((0, utils_1.numberToBytesLE)(scalarValue, 32));
96
+ }
97
+ static deserialize(deserializer) {
98
+ const bytes = deserializer.deserializeBytes();
99
+ return new Scalar(bytes);
100
+ }
101
+ encode(serializer) {
102
+ serializer.serializeBytes(this.bytes);
103
+ }
104
+ toBytes() {
105
+ const serializer = new ts_sdk_1.Serializer();
106
+ this.encode(serializer);
107
+ return serializer.toUint8Array();
108
+ }
109
+ toHex() {
110
+ return (0, utils_1.bytesToHex)(this.toBytes());
111
+ }
112
+ isZero() {
113
+ return this.bytes.every((b) => b === 0);
114
+ }
115
+ add(other) {
116
+ const result = ((0, utils_1.bytesToNumberLE)(this.bytes) + (0, utils_1.bytesToNumberLE)(other.bytes)) % Q;
117
+ return new Scalar((0, utils_1.numberToBytesLE)(result, 32));
118
+ }
119
+ sub(other) {
120
+ const result = (Q - (0, utils_1.bytesToNumberLE)(other.bytes) + (0, utils_1.bytesToNumberLE)(this.bytes)) % Q;
121
+ return new Scalar((0, utils_1.numberToBytesLE)(result, 32));
122
+ }
123
+ mul(other) {
124
+ const result = ((0, utils_1.bytesToNumberLE)(this.bytes) * (0, utils_1.bytesToNumberLE)(other.bytes)) % Q;
125
+ return new Scalar((0, utils_1.numberToBytesLE)(result, 32));
126
+ }
127
+ neg() {
128
+ const result = Q - (0, utils_1.bytesToNumberLE)(this.bytes);
129
+ return new Scalar((0, utils_1.numberToBytesLE)(result, 32));
130
+ }
131
+ }
132
+ exports.Scalar = Scalar;
133
+ function msm(bases, scalars) {
134
+ let acc = Element.groupIdentity();
135
+ for (let i = 0; i < bases.length; i++) {
136
+ const scaled = bases[i].scale(scalars[i]);
137
+ acc = acc.add(scaled);
138
+ }
139
+ return acc;
140
+ }
141
+ function scalarFrom512BitHash(hash) {
142
+ if (hash.length !== 64) {
143
+ throw new Error("Hash must be 512 bits (64 bytes)");
144
+ }
145
+ // Take the first 32 bytes and convert to scalar, ensuring it's within valid range
146
+ const value = (0, utils_1.bytesToNumberLE)(hash.slice(0, 32)) % Q;
147
+ const scalarValue = value === 0n ? 1n : value;
148
+ return new Scalar((0, utils_1.numberToBytesLE)(scalarValue, 32));
149
+ }
150
+ //# sourceMappingURL=group.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group.js","sourceRoot":"","sources":["../src/group.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import { Deserializer, Serializer } from "@aptos-labs/ts-sdk";
2
+ export declare const SCHEME_OTP_HAMC_BONEH_FRANKLIN_BLS12381_SHORT_PK = 0;
3
+ export declare class MasterPublicKey {
4
+ scheme: number;
5
+ inner: any;
6
+ constructor(scheme: number, inner: any);
7
+ static deserialize(deserializer: Deserializer): MasterPublicKey;
8
+ static fromBytes(bytes: Uint8Array): MasterPublicKey;
9
+ serialize(serializer: Serializer): void;
10
+ toBytes(): Uint8Array;
11
+ }
12
+ export declare class MasterPrivateKey {
13
+ scheme: number;
14
+ inner: any;
15
+ constructor(scheme: number, inner: any);
16
+ static deserialize(deserializer: Deserializer): MasterPrivateKey;
17
+ static fromBytes(bytes: Uint8Array): MasterPrivateKey;
18
+ static fromHex(hex: string): MasterPrivateKey;
19
+ serialize(serializer: Serializer): void;
20
+ toBytes(): Uint8Array;
21
+ }
22
+ export declare class IdentityPrivateKey {
23
+ scheme: number;
24
+ inner: any;
25
+ constructor(scheme: number, inner: any);
26
+ static deserialize(deserializer: Deserializer): IdentityPrivateKey;
27
+ static fromBytes(bytes: Uint8Array): IdentityPrivateKey;
28
+ static fromHex(hex: string): IdentityPrivateKey;
29
+ serialize(serializer: Serializer): void;
30
+ toBytes(): Uint8Array;
31
+ }
32
+ export declare class Ciphertext {
33
+ scheme: number;
34
+ inner: any;
35
+ constructor(scheme: number, inner: any);
36
+ static deserialize(deserializer: Deserializer): Ciphertext;
37
+ static fromBytes(bytes: Uint8Array): Ciphertext;
38
+ serialize(serializer: Serializer): void;
39
+ toBytes(): Uint8Array;
40
+ }
41
+ export declare function keygen(scheme: number | undefined): MasterPrivateKey;
42
+ export declare function derivePublicKey(privateKey: MasterPrivateKey): MasterPublicKey;
43
+ export declare function encrypt(publicKey: MasterPublicKey, id: Uint8Array, plaintext: Uint8Array): Ciphertext;
44
+ export declare function extract(privateKey: MasterPrivateKey, id: Uint8Array): IdentityPrivateKey;
45
+ export declare function decrypt(identityKey: IdentityPrivateKey, ciphertext: Ciphertext): Uint8Array | undefined;
46
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ibe/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAI9D,eAAO,MAAM,gDAAgD,IAAI,CAAC;AAElE,qBAAa,eAAe;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,GAAG,CAAC;gBAEC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG;IAQtC,MAAM,CAAC,WAAW,CAAC,YAAY,EAAE,YAAY,GAAG,eAAe;IAS/D,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,eAAe;IAKpD,SAAS,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IASvC,OAAO,IAAI,UAAU;CAKxB;AAED,qBAAa,gBAAgB;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,GAAG,CAAC;gBAEC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG;IAQtC,MAAM,CAAC,WAAW,CAAC,YAAY,EAAE,YAAY,GAAG,gBAAgB;IAShE,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,gBAAgB;IAKrD,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB;IAI7C,SAAS,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IASvC,OAAO,IAAI,UAAU;CAKxB;AAED,qBAAa,kBAAkB;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,GAAG,CAAC;gBAEC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG;IAQtC,MAAM,CAAC,WAAW,CAAC,YAAY,EAAE,YAAY,GAAG,kBAAkB;IASlE,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,kBAAkB;IAKvD,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB;IAI/C,SAAS,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IASvC,OAAO,IAAI,UAAU;CAKxB;AAED,qBAAa,UAAU;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,GAAG,CAAC;gBAEC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG;IAQtC,MAAM,CAAC,WAAW,CAAC,YAAY,EAAE,YAAY,GAAG,UAAU;IAS1D,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU;IAK/C,SAAS,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IASvC,OAAO,IAAI,UAAU;CAKxB;AAED,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,gBAAgB,CASnE;AAED,wBAAgB,eAAe,CAAC,UAAU,EAAE,gBAAgB,GAAG,eAAe,CAK7E;AAED,wBAAgB,OAAO,CAAC,SAAS,EAAE,eAAe,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,GAAG,UAAU,CAQrG;AAED,wBAAgB,OAAO,CAAC,UAAU,EAAE,gBAAgB,EAAE,EAAE,EAAE,UAAU,GAAG,kBAAkB,CAQxF;AAED,wBAAgB,OAAO,CAAC,WAAW,EAAE,kBAAkB,EAAE,UAAU,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,CAKvG"}
@@ -0,0 +1,238 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.Ciphertext = exports.IdentityPrivateKey = exports.MasterPrivateKey = exports.MasterPublicKey = exports.SCHEME_OTP_HAMC_BONEH_FRANKLIN_BLS12381_SHORT_PK = void 0;
37
+ exports.keygen = keygen;
38
+ exports.derivePublicKey = derivePublicKey;
39
+ exports.encrypt = encrypt;
40
+ exports.extract = extract;
41
+ exports.decrypt = decrypt;
42
+ const ts_sdk_1 = require("@aptos-labs/ts-sdk");
43
+ const OtpHmacBonehFranklinBls12381ShortPK = __importStar(require("./otp_hmac_boneh_franklin_bls12381_short_pk"));
44
+ const utils_1 = require("@noble/hashes/utils");
45
+ exports.SCHEME_OTP_HAMC_BONEH_FRANKLIN_BLS12381_SHORT_PK = 0;
46
+ class MasterPublicKey {
47
+ scheme;
48
+ inner;
49
+ constructor(scheme, inner) {
50
+ if (scheme !== exports.SCHEME_OTP_HAMC_BONEH_FRANKLIN_BLS12381_SHORT_PK) {
51
+ throw new Error(`Unknown scheme: ${scheme}`);
52
+ }
53
+ this.scheme = scheme;
54
+ this.inner = inner;
55
+ }
56
+ static deserialize(deserializer) {
57
+ const scheme = deserializer.deserializeU8();
58
+ if (scheme === exports.SCHEME_OTP_HAMC_BONEH_FRANKLIN_BLS12381_SHORT_PK) {
59
+ const inner = OtpHmacBonehFranklinBls12381ShortPK.MasterPublicKey.deserialize(deserializer);
60
+ return new MasterPublicKey(scheme, inner);
61
+ }
62
+ throw new Error(`Unknown scheme: ${scheme}`);
63
+ }
64
+ static fromBytes(bytes) {
65
+ const deserializer = new ts_sdk_1.Deserializer(bytes);
66
+ return MasterPublicKey.deserialize(deserializer);
67
+ }
68
+ serialize(serializer) {
69
+ serializer.serializeU8(this.scheme);
70
+ if (this.scheme === exports.SCHEME_OTP_HAMC_BONEH_FRANKLIN_BLS12381_SHORT_PK) {
71
+ this.inner.serialize(serializer);
72
+ }
73
+ else {
74
+ throw new Error(`Unknown scheme: ${this.scheme}`);
75
+ }
76
+ }
77
+ toBytes() {
78
+ const serializer = new ts_sdk_1.Serializer();
79
+ this.serialize(serializer);
80
+ return serializer.toUint8Array();
81
+ }
82
+ }
83
+ exports.MasterPublicKey = MasterPublicKey;
84
+ class MasterPrivateKey {
85
+ scheme;
86
+ inner;
87
+ constructor(scheme, inner) {
88
+ if (scheme !== exports.SCHEME_OTP_HAMC_BONEH_FRANKLIN_BLS12381_SHORT_PK) {
89
+ throw new Error(`Unknown scheme: ${scheme}`);
90
+ }
91
+ this.scheme = scheme;
92
+ this.inner = inner;
93
+ }
94
+ static deserialize(deserializer) {
95
+ const scheme = deserializer.deserializeU8();
96
+ if (scheme === exports.SCHEME_OTP_HAMC_BONEH_FRANKLIN_BLS12381_SHORT_PK) {
97
+ const inner = OtpHmacBonehFranklinBls12381ShortPK.MasterPrivateKey.deserialize(deserializer);
98
+ return new MasterPrivateKey(scheme, inner);
99
+ }
100
+ throw new Error(`Unknown scheme: ${scheme}`);
101
+ }
102
+ static fromBytes(bytes) {
103
+ const deserializer = new ts_sdk_1.Deserializer(bytes);
104
+ return MasterPrivateKey.deserialize(deserializer);
105
+ }
106
+ static fromHex(hex) {
107
+ return MasterPrivateKey.fromBytes((0, utils_1.hexToBytes)(hex));
108
+ }
109
+ serialize(serializer) {
110
+ serializer.serializeU8(this.scheme);
111
+ if (this.scheme === exports.SCHEME_OTP_HAMC_BONEH_FRANKLIN_BLS12381_SHORT_PK) {
112
+ this.inner.serialize(serializer);
113
+ }
114
+ else {
115
+ throw new Error(`Unknown scheme: ${this.scheme}`);
116
+ }
117
+ }
118
+ toBytes() {
119
+ const serializer = new ts_sdk_1.Serializer();
120
+ this.serialize(serializer);
121
+ return serializer.toUint8Array();
122
+ }
123
+ }
124
+ exports.MasterPrivateKey = MasterPrivateKey;
125
+ class IdentityPrivateKey {
126
+ scheme;
127
+ inner;
128
+ constructor(scheme, inner) {
129
+ if (scheme !== exports.SCHEME_OTP_HAMC_BONEH_FRANKLIN_BLS12381_SHORT_PK) {
130
+ throw new Error(`Unknown scheme: ${scheme}`);
131
+ }
132
+ this.scheme = scheme;
133
+ this.inner = inner;
134
+ }
135
+ static deserialize(deserializer) {
136
+ const scheme = deserializer.deserializeU8();
137
+ if (scheme === exports.SCHEME_OTP_HAMC_BONEH_FRANKLIN_BLS12381_SHORT_PK) {
138
+ const inner = OtpHmacBonehFranklinBls12381ShortPK.IdentityPrivateKey.deserialize(deserializer);
139
+ return new IdentityPrivateKey(scheme, inner);
140
+ }
141
+ throw new Error(`Unknown scheme: ${scheme}`);
142
+ }
143
+ static fromBytes(bytes) {
144
+ const deserializer = new ts_sdk_1.Deserializer(bytes);
145
+ return IdentityPrivateKey.deserialize(deserializer);
146
+ }
147
+ static fromHex(hex) {
148
+ return IdentityPrivateKey.fromBytes((0, utils_1.hexToBytes)(hex));
149
+ }
150
+ serialize(serializer) {
151
+ serializer.serializeU8(this.scheme);
152
+ if (this.scheme === exports.SCHEME_OTP_HAMC_BONEH_FRANKLIN_BLS12381_SHORT_PK) {
153
+ this.inner.serialize(serializer);
154
+ }
155
+ else {
156
+ throw new Error(`Unknown scheme: ${this.scheme}`);
157
+ }
158
+ }
159
+ toBytes() {
160
+ const serializer = new ts_sdk_1.Serializer();
161
+ this.serialize(serializer);
162
+ return serializer.toUint8Array();
163
+ }
164
+ }
165
+ exports.IdentityPrivateKey = IdentityPrivateKey;
166
+ class Ciphertext {
167
+ scheme;
168
+ inner;
169
+ constructor(scheme, inner) {
170
+ if (scheme !== exports.SCHEME_OTP_HAMC_BONEH_FRANKLIN_BLS12381_SHORT_PK) {
171
+ throw new Error(`Unknown scheme: ${scheme}`);
172
+ }
173
+ this.scheme = scheme;
174
+ this.inner = inner;
175
+ }
176
+ static deserialize(deserializer) {
177
+ const scheme = deserializer.deserializeU8();
178
+ if (scheme === exports.SCHEME_OTP_HAMC_BONEH_FRANKLIN_BLS12381_SHORT_PK) {
179
+ const inner = OtpHmacBonehFranklinBls12381ShortPK.Ciphertext.deserialize(deserializer);
180
+ return new Ciphertext(scheme, inner);
181
+ }
182
+ throw new Error(`Unknown scheme: ${scheme}`);
183
+ }
184
+ static fromBytes(bytes) {
185
+ const deserializer = new ts_sdk_1.Deserializer(bytes);
186
+ return Ciphertext.deserialize(deserializer);
187
+ }
188
+ serialize(serializer) {
189
+ serializer.serializeU8(this.scheme);
190
+ if (this.scheme === exports.SCHEME_OTP_HAMC_BONEH_FRANKLIN_BLS12381_SHORT_PK) {
191
+ this.inner.serialize(serializer);
192
+ }
193
+ else {
194
+ throw new Error(`Unknown scheme: ${this.scheme}`);
195
+ }
196
+ }
197
+ toBytes() {
198
+ const serializer = new ts_sdk_1.Serializer();
199
+ this.serialize(serializer);
200
+ return serializer.toUint8Array();
201
+ }
202
+ }
203
+ exports.Ciphertext = Ciphertext;
204
+ function keygen(scheme) {
205
+ if (scheme === undefined) {
206
+ scheme = exports.SCHEME_OTP_HAMC_BONEH_FRANKLIN_BLS12381_SHORT_PK;
207
+ }
208
+ if (scheme === exports.SCHEME_OTP_HAMC_BONEH_FRANKLIN_BLS12381_SHORT_PK) {
209
+ let msk = OtpHmacBonehFranklinBls12381ShortPK.keygen();
210
+ return new MasterPrivateKey(scheme, msk);
211
+ }
212
+ throw new Error(`Unknown scheme: ${scheme}`);
213
+ }
214
+ function derivePublicKey(privateKey) {
215
+ if (privateKey.scheme == exports.SCHEME_OTP_HAMC_BONEH_FRANKLIN_BLS12381_SHORT_PK) {
216
+ return new MasterPublicKey(exports.SCHEME_OTP_HAMC_BONEH_FRANKLIN_BLS12381_SHORT_PK, OtpHmacBonehFranklinBls12381ShortPK.derivePublicKey(privateKey.inner));
217
+ }
218
+ throw new Error(`Unknown scheme: ${privateKey.scheme}`);
219
+ }
220
+ function encrypt(publicKey, id, plaintext) {
221
+ if (publicKey.scheme == exports.SCHEME_OTP_HAMC_BONEH_FRANKLIN_BLS12381_SHORT_PK) {
222
+ return new Ciphertext(exports.SCHEME_OTP_HAMC_BONEH_FRANKLIN_BLS12381_SHORT_PK, OtpHmacBonehFranklinBls12381ShortPK.encrypt(publicKey.inner, id, plaintext));
223
+ }
224
+ throw new Error(`Unknown scheme: ${publicKey.scheme}`);
225
+ }
226
+ function extract(privateKey, id) {
227
+ if (privateKey.scheme == exports.SCHEME_OTP_HAMC_BONEH_FRANKLIN_BLS12381_SHORT_PK) {
228
+ return new IdentityPrivateKey(exports.SCHEME_OTP_HAMC_BONEH_FRANKLIN_BLS12381_SHORT_PK, OtpHmacBonehFranklinBls12381ShortPK.extract(privateKey.inner, id));
229
+ }
230
+ throw new Error(`Unknown scheme: ${privateKey.scheme}`);
231
+ }
232
+ function decrypt(identityKey, ciphertext) {
233
+ if (identityKey.scheme == exports.SCHEME_OTP_HAMC_BONEH_FRANKLIN_BLS12381_SHORT_PK) {
234
+ return OtpHmacBonehFranklinBls12381ShortPK.decrypt(identityKey.inner, ciphertext.inner);
235
+ }
236
+ throw new Error(`Unknown scheme: ${identityKey.scheme}`);
237
+ }
238
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ibe/index.ts"],"names":[],"mappings":"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"}