toilscript 0.1.27 → 0.1.29
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/cli.generated.d.ts +46 -2
- package/dist/cli.js +713 -34
- package/dist/cli.js.map +2 -2
- package/dist/importmap.json +2 -2
- package/dist/toilscript.generated.d.ts +46 -2
- package/dist/toilscript.js +179 -177
- package/dist/toilscript.js.map +4 -4
- package/dist/web.js +3 -3
- package/package.json +1 -1
- package/std/assembly/bindings/toildb.ts +230 -0
- package/std/assembly/crypto/subtle.ts +16 -20
- package/std/assembly/crypto.ts +22 -6
- package/std/assembly/index.d.ts +9 -4
- package/std/assembly/toildb.ts +432 -0
- package/std/assembly/toilscript.d.ts +96 -0
package/dist/web.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
var ASSEMBLYSCRIPT_VERSION = "0.1.
|
|
1
|
+
var ASSEMBLYSCRIPT_VERSION = "0.1.29";
|
|
2
2
|
var ASSEMBLYSCRIPT_IMPORTMAP = {
|
|
3
3
|
"imports": {
|
|
4
|
-
"toilscript": "https://cdn.jsdelivr.net/npm/toilscript@0.1.
|
|
5
|
-
"toilscript/cli": "https://cdn.jsdelivr.net/npm/toilscript@0.1.
|
|
4
|
+
"toilscript": "https://cdn.jsdelivr.net/npm/toilscript@0.1.29/dist/toilscript.js",
|
|
5
|
+
"toilscript/cli": "https://cdn.jsdelivr.net/npm/toilscript@0.1.29/dist/cli.js",
|
|
6
6
|
"binaryen": "https://cdn.jsdelivr.net/npm/binaryen@129.0.0-nightly.20260428/index.js",
|
|
7
7
|
"long": "https://cdn.jsdelivr.net/npm/long@5.3.2/index.js"
|
|
8
8
|
}
|
package/package.json
CHANGED
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
// Host-import declarations for the ToilDB data API. The production edge
|
|
2
|
+
// (toil-backend `src/wasm/host/import_functions/db`) and the toiljs dev server
|
|
3
|
+
// both provide these under the `env` namespace. All byte regions are passed as
|
|
4
|
+
// a (pointer, length) pair into guest linear memory.
|
|
5
|
+
//
|
|
6
|
+
// Collections are resolved by name ONCE at module init (`resolveCollection`),
|
|
7
|
+
// which returns an opaque numeric handle; request-time ops pass the handle.
|
|
8
|
+
//
|
|
9
|
+
// Return convention (see toildb/ABI.md):
|
|
10
|
+
// >= 0 success: a length (a value stashed for `takeResult`), a count, a
|
|
11
|
+
// boolean (0/1), a tag, or 0 (ok).
|
|
12
|
+
// -1 output buffer too small (retry `takeResult` with a bigger buffer).
|
|
13
|
+
// -2 absent (a normal null / not-found).
|
|
14
|
+
// <= -1000 a typed failure; the diagnostic is TDL(|v| - 1000).
|
|
15
|
+
//
|
|
16
|
+
// Variable-length results (a fetched value, a patched record, a claim owner)
|
|
17
|
+
// use the two-step pull: the op returns the stashed length, then the guest
|
|
18
|
+
// allocates a buffer and calls `takeResult` to copy the bytes out.
|
|
19
|
+
//
|
|
20
|
+
// `idemPtr` is 0 for none, otherwise a pointer to a 16-byte idempotency key.
|
|
21
|
+
//
|
|
22
|
+
// This is the guest half of the ABI contract; the byte framing of keys/values
|
|
23
|
+
// is the `@data` binary codec (`DataWriter`/`DataReader`).
|
|
24
|
+
|
|
25
|
+
export namespace toildbHost {
|
|
26
|
+
// Resolve a collection by its "<db>/<collection>" name; writes the u32 handle
|
|
27
|
+
// to outHandlePtr. Returns 0 on success or a negative TDL code.
|
|
28
|
+
// @ts-ignore: decorator
|
|
29
|
+
@external("env", "data.resolve_collection")
|
|
30
|
+
export declare function resolveCollection(namePtr: usize, nameLen: i32, outHandlePtr: usize): i32;
|
|
31
|
+
|
|
32
|
+
// record.get -> value length (stashed) | -2 absent | negative error.
|
|
33
|
+
// @ts-ignore: decorator
|
|
34
|
+
@external("env", "data.get")
|
|
35
|
+
export declare function get(handle: u32, keyPtr: usize, keyLen: i32): i32;
|
|
36
|
+
|
|
37
|
+
// record bounded multi-get. Input at keysPtr: u32 count + per key (u32 len +
|
|
38
|
+
// bytes). Result (stashed): u32 count + per item u8 present (+ u32 len + bytes
|
|
39
|
+
// when present), in request order. Returns the stashed length | negative error.
|
|
40
|
+
// @ts-ignore: decorator
|
|
41
|
+
@external("env", "data.get_many")
|
|
42
|
+
export declare function getMany(handle: u32, keysPtr: usize, keysLen: i32): i32;
|
|
43
|
+
|
|
44
|
+
// record.exists -> 1 | 0 | negative error.
|
|
45
|
+
// @ts-ignore: decorator
|
|
46
|
+
@external("env", "data.exists")
|
|
47
|
+
export declare function exists(handle: u32, keyPtr: usize, keyLen: i32): i32;
|
|
48
|
+
|
|
49
|
+
// record.create -> 0 ok | AlreadyExists/typed code.
|
|
50
|
+
// @ts-ignore: decorator
|
|
51
|
+
@external("env", "data.create")
|
|
52
|
+
export declare function create(
|
|
53
|
+
handle: u32,
|
|
54
|
+
keyPtr: usize,
|
|
55
|
+
keyLen: i32,
|
|
56
|
+
valPtr: usize,
|
|
57
|
+
valLen: i32,
|
|
58
|
+
idemPtr: usize
|
|
59
|
+
): i32;
|
|
60
|
+
|
|
61
|
+
// record.patch -> length of the new record (stashed) | negative error.
|
|
62
|
+
// @ts-ignore: decorator
|
|
63
|
+
@external("env", "data.patch")
|
|
64
|
+
export declare function patch(
|
|
65
|
+
handle: u32,
|
|
66
|
+
keyPtr: usize,
|
|
67
|
+
keyLen: i32,
|
|
68
|
+
patchPtr: usize,
|
|
69
|
+
patchLen: i32,
|
|
70
|
+
idemPtr: usize
|
|
71
|
+
): i32;
|
|
72
|
+
|
|
73
|
+
// record.delete -> 0 ok | negative error.
|
|
74
|
+
// @ts-ignore: decorator
|
|
75
|
+
@external("env", "data.delete")
|
|
76
|
+
export declare function del(handle: u32, keyPtr: usize, keyLen: i32, idemPtr: usize): i32;
|
|
77
|
+
|
|
78
|
+
// record consume-once fetch-and-delete -> prior value length (stashed) | -2.
|
|
79
|
+
// @ts-ignore: decorator
|
|
80
|
+
@external("env", "data.get_delete")
|
|
81
|
+
export declare function getDelete(handle: u32, keyPtr: usize, keyLen: i32, idemPtr: usize): i32;
|
|
82
|
+
|
|
83
|
+
// unique.lookup -> owner value length (stashed) | -2 absent.
|
|
84
|
+
// @ts-ignore: decorator
|
|
85
|
+
@external("env", "data.unique_lookup")
|
|
86
|
+
export declare function uniqueLookup(handle: u32, keyPtr: usize, keyLen: i32): i32;
|
|
87
|
+
|
|
88
|
+
// unique.claim -> 0 Claimed | 1 AlreadyClaimed (owner stashed) | 2 owned-by-caller | neg.
|
|
89
|
+
// @ts-ignore: decorator
|
|
90
|
+
@external("env", "data.unique_claim")
|
|
91
|
+
export declare function uniqueClaim(
|
|
92
|
+
handle: u32,
|
|
93
|
+
keyPtr: usize,
|
|
94
|
+
keyLen: i32,
|
|
95
|
+
valPtr: usize,
|
|
96
|
+
valLen: i32,
|
|
97
|
+
idemPtr: usize
|
|
98
|
+
): i32;
|
|
99
|
+
|
|
100
|
+
// unique.release -> 0 ok | neg (Conflict if not the owner).
|
|
101
|
+
// @ts-ignore: decorator
|
|
102
|
+
@external("env", "data.unique_release")
|
|
103
|
+
export declare function uniqueRelease(
|
|
104
|
+
handle: u32,
|
|
105
|
+
keyPtr: usize,
|
|
106
|
+
keyLen: i32,
|
|
107
|
+
valPtr: usize,
|
|
108
|
+
valLen: i32,
|
|
109
|
+
idemPtr: usize
|
|
110
|
+
): i32;
|
|
111
|
+
|
|
112
|
+
// view.get -> view value length (stashed) | -2 absent | negative error.
|
|
113
|
+
// @ts-ignore: decorator
|
|
114
|
+
@external("env", "data.view_get")
|
|
115
|
+
export declare function viewGet(handle: u32, keyPtr: usize, keyLen: i32): i32;
|
|
116
|
+
|
|
117
|
+
// view.publish -> 0 ok | negative error (derive/job only; the host gate enforces).
|
|
118
|
+
// @ts-ignore: decorator
|
|
119
|
+
@external("env", "data.view_publish")
|
|
120
|
+
export declare function viewPublish(
|
|
121
|
+
handle: u32,
|
|
122
|
+
keyPtr: usize,
|
|
123
|
+
keyLen: i32,
|
|
124
|
+
valPtr: usize,
|
|
125
|
+
valLen: i32,
|
|
126
|
+
idemPtr: usize
|
|
127
|
+
): i32;
|
|
128
|
+
|
|
129
|
+
// membership.contains -> 1 present | 0 absent | negative error.
|
|
130
|
+
// @ts-ignore: decorator
|
|
131
|
+
@external("env", "data.membership_contains")
|
|
132
|
+
export declare function membershipContains(
|
|
133
|
+
handle: u32, setPtr: usize, setLen: i32, memberPtr: usize, memberLen: i32
|
|
134
|
+
): i32;
|
|
135
|
+
|
|
136
|
+
// membership.add -> 0 ok | negative error.
|
|
137
|
+
// @ts-ignore: decorator
|
|
138
|
+
@external("env", "data.membership_add")
|
|
139
|
+
export declare function membershipAdd(
|
|
140
|
+
handle: u32, setPtr: usize, setLen: i32, memberPtr: usize, memberLen: i32, idemPtr: usize
|
|
141
|
+
): i32;
|
|
142
|
+
|
|
143
|
+
// membership.remove -> 0 ok | negative error.
|
|
144
|
+
// @ts-ignore: decorator
|
|
145
|
+
@external("env", "data.membership_remove")
|
|
146
|
+
export declare function membershipRemove(
|
|
147
|
+
handle: u32, setPtr: usize, setLen: i32, memberPtr: usize, memberLen: i32, idemPtr: usize
|
|
148
|
+
): i32;
|
|
149
|
+
|
|
150
|
+
// membership.list(limit) -> framed-list length (stashed) | negative error.
|
|
151
|
+
// The blob is `u32 count` then per member `u32 len + bytes`.
|
|
152
|
+
// @ts-ignore: decorator
|
|
153
|
+
@external("env", "data.membership_list")
|
|
154
|
+
export declare function membershipList(handle: u32, setPtr: usize, setLen: i32, limit: i32): i32;
|
|
155
|
+
|
|
156
|
+
// capacity.set_total(total: i64) -> 0 ok | negative error (job/derive only).
|
|
157
|
+
// @ts-ignore: decorator
|
|
158
|
+
@external("env", "data.capacity_set_total")
|
|
159
|
+
export declare function capacitySetTotal(
|
|
160
|
+
handle: u32, keyPtr: usize, keyLen: i32, total: i64, idemPtr: usize
|
|
161
|
+
): i32;
|
|
162
|
+
|
|
163
|
+
// capacity.available -> 8 (the i64 available stashed as 8 LE bytes) | neg.
|
|
164
|
+
// @ts-ignore: decorator
|
|
165
|
+
@external("env", "data.capacity_available")
|
|
166
|
+
export declare function capacityAvailable(handle: u32, keyPtr: usize, keyLen: i32): i32;
|
|
167
|
+
|
|
168
|
+
// capacity.reserve(amount: i64, ttl_ms: i64) -> 8 (the u64 reservation id
|
|
169
|
+
// stashed) | -2 insufficient | negative error.
|
|
170
|
+
// @ts-ignore: decorator
|
|
171
|
+
@external("env", "data.capacity_reserve")
|
|
172
|
+
export declare function capacityReserve(
|
|
173
|
+
handle: u32, keyPtr: usize, keyLen: i32, amount: i64, ttlMs: i64, idemPtr: usize
|
|
174
|
+
): i32;
|
|
175
|
+
|
|
176
|
+
// capacity.confirm(reservationId: i64) -> 1 confirmed | 0 unknown | neg.
|
|
177
|
+
// @ts-ignore: decorator
|
|
178
|
+
@external("env", "data.capacity_confirm")
|
|
179
|
+
export declare function capacityConfirm(
|
|
180
|
+
handle: u32, keyPtr: usize, keyLen: i32, reservationId: i64, idemPtr: usize
|
|
181
|
+
): i32;
|
|
182
|
+
|
|
183
|
+
// capacity.cancel(reservationId: i64) -> 1 cancelled | 0 unknown/confirmed | neg.
|
|
184
|
+
// @ts-ignore: decorator
|
|
185
|
+
@external("env", "data.capacity_cancel")
|
|
186
|
+
export declare function capacityCancel(
|
|
187
|
+
handle: u32, keyPtr: usize, keyLen: i32, reservationId: i64, idemPtr: usize
|
|
188
|
+
): i32;
|
|
189
|
+
|
|
190
|
+
// counter.get -> 8 (the i64 sum stashed as 8 LE bytes) | negative error.
|
|
191
|
+
// @ts-ignore: decorator
|
|
192
|
+
@external("env", "data.counter_get")
|
|
193
|
+
export declare function counterGet(handle: u32, keyPtr: usize, keyLen: i32): i32;
|
|
194
|
+
|
|
195
|
+
// counter.add(delta: i64) -> 0 ok | negative error.
|
|
196
|
+
// @ts-ignore: decorator
|
|
197
|
+
@external("env", "data.counter_add")
|
|
198
|
+
export declare function counterAdd(
|
|
199
|
+
handle: u32,
|
|
200
|
+
keyPtr: usize,
|
|
201
|
+
keyLen: i32,
|
|
202
|
+
delta: i64,
|
|
203
|
+
idemPtr: usize
|
|
204
|
+
): i32;
|
|
205
|
+
|
|
206
|
+
// events.append -> 0 ok | negative error.
|
|
207
|
+
// @ts-ignore: decorator
|
|
208
|
+
@external("env", "data.append")
|
|
209
|
+
export declare function append(
|
|
210
|
+
handle: u32,
|
|
211
|
+
keyPtr: usize,
|
|
212
|
+
keyLen: i32,
|
|
213
|
+
evPtr: usize,
|
|
214
|
+
evLen: i32,
|
|
215
|
+
idemPtr: usize
|
|
216
|
+
): i32;
|
|
217
|
+
|
|
218
|
+
// events.latest(limit) -> framed-list length (stashed) | negative error.
|
|
219
|
+
// The blob is `u32 count` then per event `u32 len + bytes`, newest first.
|
|
220
|
+
// @ts-ignore: decorator
|
|
221
|
+
@external("env", "data.latest")
|
|
222
|
+
export declare function latest(handle: u32, keyPtr: usize, keyLen: i32, limit: i32): i32;
|
|
223
|
+
|
|
224
|
+
// Copy the last stashed variable-length result into outPtr (outLen must equal
|
|
225
|
+
// the length the producing op returned). Returns bytes written, or -1 if the
|
|
226
|
+
// buffer is too small.
|
|
227
|
+
// @ts-ignore: decorator
|
|
228
|
+
@external("env", "data.take_result")
|
|
229
|
+
export declare function takeResult(outPtr: usize, outLen: i32): i32;
|
|
230
|
+
}
|
|
@@ -7,12 +7,11 @@ import { webcrypto } from "bindings/webcrypto";
|
|
|
7
7
|
import { CryptoKey } from "crypto/key";
|
|
8
8
|
import {
|
|
9
9
|
AlgorithmParams,
|
|
10
|
-
algId,
|
|
11
|
-
formatId,
|
|
12
10
|
cryptoError,
|
|
13
|
-
|
|
11
|
+
FMT_RAW,
|
|
14
12
|
FMT_PKCS8,
|
|
15
13
|
FMT_SPKI,
|
|
14
|
+
FMT_JWK,
|
|
16
15
|
ALG_AES_GCM,
|
|
17
16
|
ALG_AES_CBC,
|
|
18
17
|
ALG_AES_CTR,
|
|
@@ -43,26 +42,24 @@ function isSymmetricAlg(alg: i32): bool {
|
|
|
43
42
|
}
|
|
44
43
|
|
|
45
44
|
export class SubtleCrypto {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
return drain(webcrypto.digest(id, data.dataStart, data.byteLength));
|
|
45
|
+
// `algorithm` is a hash-id selector: an `ALG_SHA_*` const (NOT a magic string).
|
|
46
|
+
digest(algorithm: i32, data: Uint8Array): Uint8Array {
|
|
47
|
+
return drain(webcrypto.digest(algorithm, data.dataStart, data.byteLength));
|
|
50
48
|
}
|
|
51
49
|
|
|
50
|
+
// `format` is an `FMT_*` selector const (FMT_RAW / FMT_PKCS8 / FMT_SPKI).
|
|
52
51
|
importKey(
|
|
53
|
-
format:
|
|
52
|
+
format: i32,
|
|
54
53
|
keyData: Uint8Array,
|
|
55
54
|
algorithm: AlgorithmParams,
|
|
56
55
|
extractable: bool,
|
|
57
56
|
usages: i32
|
|
58
57
|
): CryptoKey {
|
|
59
|
-
|
|
60
|
-
if (fmt < 0) throw new Error("Unknown key format: " + format);
|
|
61
|
-
if (fmt == FMT_JWK) throw new Error("jwk key format is not supported");
|
|
58
|
+
if (format == FMT_JWK) throw new Error("jwk key format is not supported");
|
|
62
59
|
let p = algorithm.pack();
|
|
63
60
|
let alg = load<i32>(p.dataStart); // first packed field is the alg id
|
|
64
61
|
let handle = webcrypto.importKey(
|
|
65
|
-
|
|
62
|
+
format,
|
|
66
63
|
keyData.dataStart,
|
|
67
64
|
keyData.byteLength,
|
|
68
65
|
p.dataStart,
|
|
@@ -73,18 +70,17 @@ export class SubtleCrypto {
|
|
|
73
70
|
if (handle < 0) throw new Error(cryptoError(handle));
|
|
74
71
|
|
|
75
72
|
let type: string;
|
|
76
|
-
if (
|
|
77
|
-
else if (
|
|
73
|
+
if (format == FMT_PKCS8) type = "private";
|
|
74
|
+
else if (format == FMT_SPKI) type = "public";
|
|
78
75
|
else type = isSymmetricAlg(alg) ? "secret" : "public";
|
|
79
76
|
|
|
80
77
|
return new CryptoKey(handle, type, extractable, alg, usages);
|
|
81
78
|
}
|
|
82
79
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
if (
|
|
86
|
-
|
|
87
|
-
return drain(webcrypto.exportKey(fmt, key.handle));
|
|
80
|
+
// `format` is an `FMT_*` selector const (FMT_RAW / FMT_PKCS8 / FMT_SPKI).
|
|
81
|
+
exportKey(format: i32, key: CryptoKey): Uint8Array {
|
|
82
|
+
if (format == FMT_JWK) throw new Error("jwk key format is not supported");
|
|
83
|
+
return drain(webcrypto.exportKey(format, key.handle));
|
|
88
84
|
}
|
|
89
85
|
|
|
90
86
|
encrypt(algorithm: AlgorithmParams, key: CryptoKey, data: Uint8Array): Uint8Array {
|
|
@@ -146,6 +142,6 @@ export class SubtleCrypto {
|
|
|
146
142
|
usages: i32
|
|
147
143
|
): CryptoKey {
|
|
148
144
|
let bits = this.deriveBits(algorithm, baseKey, lengthBits);
|
|
149
|
-
return this.importKey(
|
|
145
|
+
return this.importKey(FMT_RAW, bits, derivedKeyAlgorithm, extractable, usages);
|
|
150
146
|
}
|
|
151
147
|
}
|
package/std/assembly/crypto.ts
CHANGED
|
@@ -11,7 +11,16 @@
|
|
|
11
11
|
|
|
12
12
|
import { webcrypto } from "bindings/webcrypto";
|
|
13
13
|
import { SubtleCrypto } from "crypto/subtle";
|
|
14
|
-
import {
|
|
14
|
+
import {
|
|
15
|
+
HmacImportParams,
|
|
16
|
+
HmacParams,
|
|
17
|
+
ALG_SHA_1,
|
|
18
|
+
ALG_SHA_256,
|
|
19
|
+
ALG_SHA_384,
|
|
20
|
+
ALG_SHA_512,
|
|
21
|
+
FMT_RAW,
|
|
22
|
+
USAGE_SIGN,
|
|
23
|
+
} from "crypto/algorithms";
|
|
15
24
|
import { Encoding } from "encoding";
|
|
16
25
|
|
|
17
26
|
// Re-export the public surface so guests can import everything from "crypto".
|
|
@@ -51,6 +60,13 @@ export {
|
|
|
51
60
|
ALG_X25519,
|
|
52
61
|
ALG_HKDF,
|
|
53
62
|
ALG_PBKDF2,
|
|
63
|
+
ALG_SHA3_256,
|
|
64
|
+
ALG_SHA3_384,
|
|
65
|
+
ALG_SHA3_512,
|
|
66
|
+
FMT_RAW,
|
|
67
|
+
FMT_PKCS8,
|
|
68
|
+
FMT_SPKI,
|
|
69
|
+
FMT_JWK,
|
|
54
70
|
CURVE_P256,
|
|
55
71
|
CURVE_P384,
|
|
56
72
|
USAGE_ENCRYPT,
|
|
@@ -101,16 +117,16 @@ export namespace crypto {
|
|
|
101
117
|
|
|
102
118
|
// --- Ergonomic digest helpers (thin wrappers over subtle.digest) ----------
|
|
103
119
|
export function sha1(data: Uint8Array): Uint8Array {
|
|
104
|
-
return subtle.digest(
|
|
120
|
+
return subtle.digest(ALG_SHA_1, data);
|
|
105
121
|
}
|
|
106
122
|
export function sha256(data: Uint8Array): Uint8Array {
|
|
107
|
-
return subtle.digest(
|
|
123
|
+
return subtle.digest(ALG_SHA_256, data);
|
|
108
124
|
}
|
|
109
125
|
export function sha384(data: Uint8Array): Uint8Array {
|
|
110
|
-
return subtle.digest(
|
|
126
|
+
return subtle.digest(ALG_SHA_384, data);
|
|
111
127
|
}
|
|
112
128
|
export function sha512(data: Uint8Array): Uint8Array {
|
|
113
|
-
return subtle.digest(
|
|
129
|
+
return subtle.digest(ALG_SHA_512, data);
|
|
114
130
|
}
|
|
115
131
|
|
|
116
132
|
// String-input variants (UTF-8 encode, then hash).
|
|
@@ -129,7 +145,7 @@ export namespace crypto {
|
|
|
129
145
|
|
|
130
146
|
/// One-shot HMAC-SHA-256 over raw key + message bytes.
|
|
131
147
|
export function hmacSha256(key: Uint8Array, msg: Uint8Array): Uint8Array {
|
|
132
|
-
let k = subtle.importKey(
|
|
148
|
+
let k = subtle.importKey(FMT_RAW, key, new HmacImportParams(ALG_SHA_256), false, USAGE_SIGN);
|
|
133
149
|
return subtle.sign(new HmacParams(), k, msg);
|
|
134
150
|
}
|
|
135
151
|
export function hmacSha256Text(key: Uint8Array, msg: string): Uint8Array {
|
package/std/assembly/index.d.ts
CHANGED
|
@@ -2853,11 +2853,14 @@ declare class X25519ImportParams extends AlgorithmParams {}
|
|
|
2853
2853
|
declare class EcdhParams extends AlgorithmParams {
|
|
2854
2854
|
constructor(alg: i32, publicKeyHandle: i32);
|
|
2855
2855
|
}
|
|
2856
|
-
/** Synchronous SubtleCrypto (no Promises). Returns values directly.
|
|
2856
|
+
/** Synchronous SubtleCrypto (no Promises). Returns values directly. The hash and
|
|
2857
|
+
* key-format arguments are typed ABI ids (no magic strings): pass an `ALG_SHA_*`
|
|
2858
|
+
* const to `digest`, and an `FMT_*` const (`FMT_RAW` / `FMT_PKCS8` / `FMT_SPKI`)
|
|
2859
|
+
* to `importKey` / `exportKey`. */
|
|
2857
2860
|
declare class SubtleCrypto {
|
|
2858
|
-
digest(algorithm:
|
|
2859
|
-
importKey(format:
|
|
2860
|
-
exportKey(format:
|
|
2861
|
+
digest(algorithm: i32, data: Uint8Array): Uint8Array;
|
|
2862
|
+
importKey(format: i32, keyData: Uint8Array, algorithm: AlgorithmParams, extractable: bool, usages: i32): CryptoKey;
|
|
2863
|
+
exportKey(format: i32, key: CryptoKey): Uint8Array;
|
|
2861
2864
|
encrypt(algorithm: AlgorithmParams, key: CryptoKey, data: Uint8Array): Uint8Array;
|
|
2862
2865
|
decrypt(algorithm: AlgorithmParams, key: CryptoKey, data: Uint8Array): Uint8Array;
|
|
2863
2866
|
sign(algorithm: AlgorithmParams, key: CryptoKey, data: Uint8Array): Uint8Array;
|
|
@@ -2868,6 +2871,8 @@ declare class SubtleCrypto {
|
|
|
2868
2871
|
|
|
2869
2872
|
// Algorithm / format / curve / usage ids (the Web Crypto ABI contract).
|
|
2870
2873
|
declare const ALG_SHA_1: i32, ALG_SHA_256: i32, ALG_SHA_384: i32, ALG_SHA_512: i32;
|
|
2874
|
+
declare const ALG_SHA3_256: i32, ALG_SHA3_384: i32, ALG_SHA3_512: i32;
|
|
2875
|
+
declare const FMT_RAW: i32, FMT_PKCS8: i32, FMT_SPKI: i32, FMT_JWK: i32;
|
|
2871
2876
|
declare const ALG_AES_GCM: i32, ALG_AES_CBC: i32, ALG_AES_CTR: i32, ALG_AES_KW: i32;
|
|
2872
2877
|
declare const ALG_HMAC: i32, ALG_ECDSA: i32, ALG_ED25519: i32, ALG_ECDH: i32, ALG_X25519: i32, ALG_HKDF: i32, ALG_PBKDF2: i32;
|
|
2873
2878
|
declare const CURVE_P256: i32, CURVE_P384: i32;
|