@intent-engine/core 0.1.33 → 0.1.34

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.
@@ -19,6 +19,7 @@ export * from "./mint-caps.js";
19
19
  export * from "./mints.js";
20
20
  export * from "./pdas.js";
21
21
  export * from "./profile.js";
22
+ export * from "./sealed.js";
22
23
  export * from "./sig.js";
23
24
  export * from "./state.js";
24
25
  export * from "./validate.js";
package/dist/src/index.js CHANGED
@@ -19,6 +19,7 @@ export * from "./mint-caps.js";
19
19
  export * from "./mints.js";
20
20
  export * from "./pdas.js";
21
21
  export * from "./profile.js";
22
+ export * from "./sealed.js";
22
23
  export * from "./sig.js";
23
24
  export * from "./state.js";
24
25
  export * from "./validate.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { type Address } from "@solana/kit";
2
+ export declare const SEALED_VERSION = 1;
3
+ export declare const SEALED_TAG = "solive-sealed";
4
+ export declare const MAX_SEALED_RECIPIENTS = 32;
5
+ export declare class SealedError extends Error {
6
+ constructor(message: string);
7
+ }
8
+ export declare class NotInvited extends SealedError {
9
+ readonly wallet: Address;
10
+ constructor(wallet: Address);
11
+ }
12
+ export declare function x25519PublicOf(wallet: Address): Uint8Array<ArrayBuffer>;
13
+ export declare function seal(plain: Uint8Array, recipients: readonly Address[]): Promise<Uint8Array>;
14
+ export declare const isSealed: (bytes: Uint8Array) => boolean;
15
+ export declare function sealedTo(bytes: Uint8Array): Address[];
16
+ export declare function unseal(bytes: Uint8Array, keypair: Uint8Array): Promise<Uint8Array>;
@@ -0,0 +1,173 @@
1
+ import { getAddressDecoder, getAddressEncoder } from "@solana/kit";
2
+ export const SEALED_VERSION = 1;
3
+ export const SEALED_TAG = "solive-sealed";
4
+ export const MAX_SEALED_RECIPIENTS = 32;
5
+ const INFO = new TextEncoder().encode("solive-sealed-v1");
6
+ const P = 2n ** 255n - 19n;
7
+ const PKCS8_X25519 = Uint8Array.from([0x30, 0x2e, 0x02, 0x01, 0x00, 0x30, 0x05, 0x06, 0x03, 0x2b, 0x65, 0x6e, 0x04, 0x22, 0x04, 0x20]);
8
+ const IV_BYTES = 12;
9
+ const KEY_BYTES = 32;
10
+ export class SealedError extends Error {
11
+ constructor(message) {
12
+ super(message);
13
+ this.name = "SealedError";
14
+ }
15
+ }
16
+ export class NotInvited extends SealedError {
17
+ wallet;
18
+ constructor(wallet) {
19
+ super(`${wallet} is not one of the wallets this was sealed to`);
20
+ this.name = "NotInvited";
21
+ this.wallet = wallet;
22
+ }
23
+ }
24
+ const CHUNK = 0x8000;
25
+ function b64(bytes) {
26
+ let binary = "";
27
+ for (let at = 0; at < bytes.length; at += CHUNK) {
28
+ binary += String.fromCharCode(...bytes.subarray(at, at + CHUNK));
29
+ }
30
+ return btoa(binary);
31
+ }
32
+ function unb64(text) {
33
+ const binary = atob(text);
34
+ const bytes = new Uint8Array(new ArrayBuffer(binary.length));
35
+ for (let at = 0; at < binary.length; at += 1) {
36
+ bytes[at] = binary.charCodeAt(at);
37
+ }
38
+ return bytes;
39
+ }
40
+ function modPow(base, exponent) {
41
+ let result = 1n;
42
+ let b = base % P;
43
+ let e = exponent;
44
+ while (e > 0n) {
45
+ if (e & 1n) {
46
+ result = (result * b) % P;
47
+ }
48
+ b = (b * b) % P;
49
+ e >>= 1n;
50
+ }
51
+ return result;
52
+ }
53
+ export function x25519PublicOf(wallet) {
54
+ const bytes = getAddressEncoder().encode(wallet);
55
+ let y = 0n;
56
+ for (let i = 31; i >= 0; i -= 1) {
57
+ y = (y << 8n) | BigInt(i === 31 ? (bytes[i] ?? 0) & 0x7f : (bytes[i] ?? 0));
58
+ }
59
+ if (y >= P || y === 1n) {
60
+ throw new SealedError(`${wallet} has no encryption key`);
61
+ }
62
+ let u = ((1n + y) * modPow((1n - y + P) % P, P - 2n)) % P;
63
+ const out = new Uint8Array(32);
64
+ for (let i = 0; i < 32; i += 1) {
65
+ out[i] = Number(u & 0xffn);
66
+ u >>= 8n;
67
+ }
68
+ return out;
69
+ }
70
+ async function x25519SecretOf(keypair) {
71
+ if (keypair.length !== 64) {
72
+ throw new SealedError("a wallet key is 64 bytes: its seed and its public key");
73
+ }
74
+ const hashed = new Uint8Array(await crypto.subtle.digest("SHA-512", keypair.slice(0, 32)));
75
+ return crypto.subtle.importKey("pkcs8", Uint8Array.from([...PKCS8_X25519, ...hashed.slice(0, 32)]), { name: "X25519" }, false, ["deriveBits"]);
76
+ }
77
+ async function wrapKey(shared, salt) {
78
+ const base = await crypto.subtle.importKey("raw", shared.slice(), "HKDF", false, ["deriveKey"]);
79
+ return crypto.subtle.deriveKey({ name: "HKDF", hash: "SHA-256", salt: salt.slice(), info: INFO }, base, { name: "AES-GCM", length: 256 }, false, ["encrypt", "decrypt"]);
80
+ }
81
+ const random = (length) => crypto.getRandomValues(new Uint8Array(new ArrayBuffer(length)));
82
+ export async function seal(plain, recipients) {
83
+ const wallets = [...new Set(recipients)];
84
+ if (wallets.length === 0 || wallets.length > MAX_SEALED_RECIPIENTS) {
85
+ throw new SealedError(`seal to between 1 and ${MAX_SEALED_RECIPIENTS} wallets`);
86
+ }
87
+ const contentKey = random(KEY_BYTES);
88
+ const iv = random(IV_BYTES);
89
+ const content = await crypto.subtle.importKey("raw", contentKey, "AES-GCM", false, ["encrypt"]);
90
+ const data = new Uint8Array(await crypto.subtle.encrypt({ name: "AES-GCM", iv, additionalData: INFO }, content, plain.slice()));
91
+ const to = [];
92
+ for (const wallet of wallets) {
93
+ const theirs = x25519PublicOf(wallet);
94
+ const ephemeral = (await crypto.subtle.generateKey({ name: "X25519" }, true, ["deriveBits"]));
95
+ const epk = new Uint8Array(await crypto.subtle.exportKey("raw", ephemeral.publicKey));
96
+ const peer = await crypto.subtle.importKey("raw", theirs, { name: "X25519" }, false, []);
97
+ const shared = new Uint8Array(await crypto.subtle.deriveBits({ name: "X25519", public: peer }, ephemeral.privateKey, 256));
98
+ const wrapping = await wrapKey(shared, Uint8Array.from([...epk, ...theirs]));
99
+ const keyIv = random(IV_BYTES);
100
+ const key = new Uint8Array(await crypto.subtle.encrypt({ name: "AES-GCM", iv: keyIv, additionalData: INFO }, wrapping, contentKey));
101
+ to.push({ wallet, epk: b64(epk), iv: b64(keyIv), key: b64(key) });
102
+ }
103
+ const envelope = { [SEALED_TAG]: SEALED_VERSION, to, iv: b64(iv), data: b64(data) };
104
+ return new TextEncoder().encode(`${JSON.stringify(envelope)}\n`);
105
+ }
106
+ function envelopeOf(bytes) {
107
+ let parsed;
108
+ try {
109
+ parsed = JSON.parse(new TextDecoder("utf-8", { fatal: true }).decode(bytes));
110
+ }
111
+ catch {
112
+ return null;
113
+ }
114
+ if (parsed === null || typeof parsed !== "object") {
115
+ return null;
116
+ }
117
+ const envelope = parsed;
118
+ if (envelope[SEALED_TAG] !== SEALED_VERSION || !Array.isArray(envelope.to) || typeof envelope.iv !== "string" || typeof envelope.data !== "string") {
119
+ return null;
120
+ }
121
+ const decoder = getAddressDecoder();
122
+ for (const entry of envelope.to) {
123
+ const r = entry;
124
+ if (r === null || typeof r !== "object" || typeof r.wallet !== "string" || typeof r.epk !== "string" || typeof r.iv !== "string" || typeof r.key !== "string") {
125
+ return null;
126
+ }
127
+ try {
128
+ if (decoder.decode(getAddressEncoder().encode(r.wallet)) !== r.wallet) {
129
+ return null;
130
+ }
131
+ }
132
+ catch {
133
+ return null;
134
+ }
135
+ }
136
+ return envelope;
137
+ }
138
+ export const isSealed = (bytes) => envelopeOf(bytes) !== null;
139
+ export function sealedTo(bytes) {
140
+ const envelope = envelopeOf(bytes);
141
+ if (envelope === null) {
142
+ throw new SealedError("this is not a sealed file");
143
+ }
144
+ return envelope.to.map((r) => r.wallet);
145
+ }
146
+ export async function unseal(bytes, keypair) {
147
+ const envelope = envelopeOf(bytes);
148
+ if (envelope === null) {
149
+ throw new SealedError("this is not a sealed file");
150
+ }
151
+ if (keypair.length !== 64) {
152
+ throw new SealedError("a wallet key is 64 bytes: its seed and its public key");
153
+ }
154
+ const wallet = getAddressDecoder().decode(keypair.slice(32));
155
+ const entry = envelope.to.find((r) => r.wallet === wallet);
156
+ if (entry === undefined) {
157
+ throw new NotInvited(wallet);
158
+ }
159
+ const mine = await x25519SecretOf(keypair);
160
+ const epk = unb64(entry.epk);
161
+ const peer = await crypto.subtle.importKey("raw", epk.slice(), { name: "X25519" }, false, []);
162
+ const shared = new Uint8Array(await crypto.subtle.deriveBits({ name: "X25519", public: peer }, mine, 256));
163
+ const wrapping = await wrapKey(shared, Uint8Array.from([...epk, ...x25519PublicOf(wallet)]));
164
+ try {
165
+ const contentKey = new Uint8Array(await crypto.subtle.decrypt({ name: "AES-GCM", iv: unb64(entry.iv), additionalData: INFO }, wrapping, unb64(entry.key)));
166
+ const content = await crypto.subtle.importKey("raw", contentKey, "AES-GCM", false, ["decrypt"]);
167
+ return new Uint8Array(await crypto.subtle.decrypt({ name: "AES-GCM", iv: unb64(envelope.iv), additionalData: INFO }, content, unb64(envelope.data)));
168
+ }
169
+ catch {
170
+ throw new SealedError("the sealed file was changed or was not sealed to this wallet's key");
171
+ }
172
+ }
173
+ //# sourceMappingURL=sealed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sealed.js","sourceRoot":"","sources":["../../src/sealed.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@intent-engine/core",
3
- "version": "0.1.33",
3
+ "version": "0.1.34",
4
4
  "description": "Clients, codecs and builders for the intent engine Solana program",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {