@hesohq/verify-wasm 0.5.1-dev.136 → 0.5.1-dev.138
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/heso_wasm.d.ts +94 -0
- package/heso_wasm.js +234 -0
- package/heso_wasm_bg.wasm +0 -0
- package/heso_wasm_bg.wasm.d.ts +12 -0
- package/package.json +1 -1
package/heso_wasm.d.ts
CHANGED
|
@@ -326,6 +326,50 @@ export class MetricsVerdict {
|
|
|
326
326
|
verdict: string;
|
|
327
327
|
}
|
|
328
328
|
|
|
329
|
+
/**
|
|
330
|
+
* The transparency-aware verdict: the base offline outcome PLUS the honest
|
|
331
|
+
* witness status. `witnessed`/`witness_count`/`witness_status` are DERIVED from
|
|
332
|
+
* the verifier's [`WitnessStatus`], never inferred from a bare green:
|
|
333
|
+
*
|
|
334
|
+
* - No `transparency[]`, an empty `cosignatures[]`, or no pinned witness keys ⇒
|
|
335
|
+
* `witnessed = false`, `witness_count = 0`, `witness_status = "NotWitnessed"`.
|
|
336
|
+
* A valid-but-unwitnessed receipt is honestly reported as such, NEVER as a
|
|
337
|
+
* green "witnessed".
|
|
338
|
+
* - At least one distinct, pinned witness cosignature verified ⇒
|
|
339
|
+
* `witnessed = true`, `witness_count = <distinct>`, `witness_status =
|
|
340
|
+
* "Witnessed"`.
|
|
341
|
+
* - A demanded quorum (`minWitnesses > 0`) that is not met makes `verdict` the
|
|
342
|
+
* `"WitnessQuorumNotMet:have=…,need=…"` tag and leaves `witness_status =
|
|
343
|
+
* "NotWitnessed"` (fail closed — the quorum is a relying-party policy).
|
|
344
|
+
*/
|
|
345
|
+
export class TransparencyVerdict {
|
|
346
|
+
private constructor();
|
|
347
|
+
free(): void;
|
|
348
|
+
[Symbol.dispose](): void;
|
|
349
|
+
/**
|
|
350
|
+
* The re-derived trust level (`"L0"`/`"L1"`); `""` unless `verdict == "Valid"`.
|
|
351
|
+
*/
|
|
352
|
+
trust_level: string;
|
|
353
|
+
/**
|
|
354
|
+
* The base `ActionOutcome` verdict tag (`"Valid"`, `"HashMismatch"`,
|
|
355
|
+
* `"TransparencyUnverifiable:…"`, `"WitnessQuorumNotMet:have=…,need=…"`, …).
|
|
356
|
+
*/
|
|
357
|
+
verdict: string;
|
|
358
|
+
/**
|
|
359
|
+
* The count of DISTINCT verified witness cosignatures (the minimum across the
|
|
360
|
+
* receipt's proofs). `0` when `witnessed == false`.
|
|
361
|
+
*/
|
|
362
|
+
witness_count: number;
|
|
363
|
+
/**
|
|
364
|
+
* The honest witness line: `"Witnessed"` or `"NotWitnessed"`.
|
|
365
|
+
*/
|
|
366
|
+
witness_status: string;
|
|
367
|
+
/**
|
|
368
|
+
* `true` iff at least one distinct, pinned witness cosignature verified.
|
|
369
|
+
*/
|
|
370
|
+
witnessed: boolean;
|
|
371
|
+
}
|
|
372
|
+
|
|
329
373
|
/**
|
|
330
374
|
* The verified, decoded result of a delegation envelope.
|
|
331
375
|
*/
|
|
@@ -607,6 +651,44 @@ export function verifyActionReceipt(receipt_bytes: Uint8Array): ActionVerdict;
|
|
|
607
651
|
*/
|
|
608
652
|
export function verifyActionReceiptWithRates(receipt_bytes: Uint8Array, rate_card_json: string): MetricsVerdict;
|
|
609
653
|
|
|
654
|
+
/**
|
|
655
|
+
* Verify a single `ActionReceipt` AND its transparency-log inclusion proof +
|
|
656
|
+
* witness cosignatures against the PINNED log/witness keys — the verify the
|
|
657
|
+
* public proof page runs so a third party confirms the receipt was logged AND
|
|
658
|
+
* independently witnessed, entirely offline from the frozen bytes.
|
|
659
|
+
*
|
|
660
|
+
* This calls the REAL [`open_receipt_with_transparency`] (the single source of
|
|
661
|
+
* truth shared with the CLI and the Python SDK): the base offline gate, then —
|
|
662
|
+
* for each proof in `receipt.transparency` — a two-stage RFC-6962 inclusion
|
|
663
|
+
* proof against the C2SP checkpoint note signed by `log_pubkey_b64`, then every
|
|
664
|
+
* cosignature `verify_strict`-ed over the exact checkpoint-note bytes against a
|
|
665
|
+
* pinned witness key (deduped by key to a DISTINCT count). The proofs live in
|
|
666
|
+
* the receipt's `transparency[]` block (stapled at export), so there is no
|
|
667
|
+
* separate `proofsJson` argument — passing the receipt passes its proofs.
|
|
668
|
+
*
|
|
669
|
+
* HONEST by construction (see [`TransparencyVerdict`]): absent/empty witnesses ⇒
|
|
670
|
+
* `NotWitnessed` (never a green "witnessed"); a demanded-but-unmet quorum
|
|
671
|
+
* (`min_witnesses > 0`) ⇒ the `WitnessQuorumNotMet` verdict, fail closed.
|
|
672
|
+
*
|
|
673
|
+
* `receipt_bytes` — raw `ActionReceipt` JSON (`Uint8Array`). A
|
|
674
|
+
* structurally bad receipt is an honest `"Malformed:…"`
|
|
675
|
+
* verdict, never a throw and never a green.
|
|
676
|
+
* `log_pubkey_b64` — the PINNED transparency-log public key (base64, raw 32
|
|
677
|
+
* bytes), trusted out of band (CT-style).
|
|
678
|
+
* `witness_keys_b64` — the PINNED witness public keys (base64, raw 32 bytes);
|
|
679
|
+
* empty ⇒ cosignatures are not counted (`NotWitnessed`).
|
|
680
|
+
* `min_witnesses` — the relying party's witness-QUORUM policy. `0` is
|
|
681
|
+
* presence-tolerant; `> 0` fails closed below quorum and
|
|
682
|
+
* requires at least one pinned witness key.
|
|
683
|
+
* `require_transparency` — when `true`, a receipt with no `transparency[]` fails
|
|
684
|
+
* closed (`"TransparencyRequired"`).
|
|
685
|
+
*
|
|
686
|
+
* Throws a `JsError` only for an UNUSABLE config input (a `log_pubkey_b64` /
|
|
687
|
+
* `witness_keys_b64` entry that is not base64 of exactly 32 bytes) — every
|
|
688
|
+
* cryptographic / quorum failure is a non-throwing verdict instead.
|
|
689
|
+
*/
|
|
690
|
+
export function verifyActionReceiptWithTransparency(receipt_bytes: Uint8Array, log_pubkey_b64: string, witness_keys_b64: string[], min_witnesses: number, require_transparency: boolean): TransparencyVerdict;
|
|
691
|
+
|
|
610
692
|
/**
|
|
611
693
|
* Verify a serialized approval token and return its decoded claims.
|
|
612
694
|
*
|
|
@@ -778,6 +860,10 @@ export interface InitOutput {
|
|
|
778
860
|
readonly __wbg_get_verifieddelegation_not_before_unix_secs: (a: number) => number;
|
|
779
861
|
readonly __wbg_set_verifieddelegation_not_before_unix_secs: (a: number, b: number) => void;
|
|
780
862
|
readonly verifyActionReceipt: (a: number, b: number) => number;
|
|
863
|
+
readonly __wbg_transparencyverdict_free: (a: number, b: number) => void;
|
|
864
|
+
readonly __wbg_get_transparencyverdict_witness_count: (a: number) => number;
|
|
865
|
+
readonly __wbg_set_transparencyverdict_witness_count: (a: number, b: number) => void;
|
|
866
|
+
readonly verifyActionReceiptWithTransparency: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => void;
|
|
781
867
|
readonly actionCanonicalBytes: (a: number, b: number, c: number) => void;
|
|
782
868
|
readonly l1CosignPayload: (a: number, b: number, c: number, d: number, e: number) => void;
|
|
783
869
|
readonly quorumCosignPayload: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => void;
|
|
@@ -860,13 +946,18 @@ export interface InitOutput {
|
|
|
860
946
|
readonly __wbg_get_cloudtrailfeedverdict_signed_log_files_json: (a: number, b: number) => void;
|
|
861
947
|
readonly __wbg_set_cloudtrailfeedverdict_signed_log_files_json: (a: number, b: number, c: number) => void;
|
|
862
948
|
readonly verifyCloudTrailFeed: (a: number, b: number, c: number) => void;
|
|
949
|
+
readonly __wbg_set_transparencyverdict_witnessed: (a: number, b: number) => void;
|
|
863
950
|
readonly __wbg_set_approvaltokenclaims_decision: (a: number, b: number, c: number) => void;
|
|
864
951
|
readonly __wbg_set_approvaltokenclaims_scope: (a: number, b: number, c: number) => void;
|
|
865
952
|
readonly __wbg_set_verifieddelegation_sub: (a: number, b: number, c: number) => void;
|
|
866
953
|
readonly __wbg_set_verifieddelegation_scope: (a: number, b: number, c: number) => void;
|
|
867
954
|
readonly __wbg_set_commitmentverdict_verdict: (a: number, b: number, c: number) => void;
|
|
868
955
|
readonly __wbg_set_commitmentverdict_signer_fpr: (a: number, b: number, c: number) => void;
|
|
956
|
+
readonly __wbg_set_transparencyverdict_verdict: (a: number, b: number, c: number) => void;
|
|
957
|
+
readonly __wbg_set_transparencyverdict_trust_level: (a: number, b: number, c: number) => void;
|
|
958
|
+
readonly __wbg_set_transparencyverdict_witness_status: (a: number, b: number, c: number) => void;
|
|
869
959
|
readonly __wbg_set_cloudtrailfeedverdict_broken_at: (a: number, b: number) => void;
|
|
960
|
+
readonly __wbg_get_transparencyverdict_witnessed: (a: number) => number;
|
|
870
961
|
readonly __wbg_get_cloudtrailfeedverdict_broken_at: (a: number) => number;
|
|
871
962
|
readonly __wbg_commitmentverdict_free: (a: number, b: number) => void;
|
|
872
963
|
readonly __wbg_get_approvaltokenclaims_decision: (a: number, b: number) => void;
|
|
@@ -875,6 +966,9 @@ export interface InitOutput {
|
|
|
875
966
|
readonly __wbg_get_verifieddelegation_scope: (a: number, b: number) => void;
|
|
876
967
|
readonly __wbg_get_commitmentverdict_verdict: (a: number, b: number) => void;
|
|
877
968
|
readonly __wbg_get_commitmentverdict_signer_fpr: (a: number, b: number) => void;
|
|
969
|
+
readonly __wbg_get_transparencyverdict_verdict: (a: number, b: number) => void;
|
|
970
|
+
readonly __wbg_get_transparencyverdict_trust_level: (a: number, b: number) => void;
|
|
971
|
+
readonly __wbg_get_transparencyverdict_witness_status: (a: number, b: number) => void;
|
|
878
972
|
readonly __wbindgen_export: (a: number, b: number) => number;
|
|
879
973
|
readonly __wbindgen_export2: (a: number, b: number, c: number, d: number) => number;
|
|
880
974
|
readonly __wbindgen_add_to_stack_pointer: (a: number) => number;
|
package/heso_wasm.js
CHANGED
|
@@ -1069,6 +1069,163 @@ export class MetricsVerdict {
|
|
|
1069
1069
|
}
|
|
1070
1070
|
if (Symbol.dispose) MetricsVerdict.prototype[Symbol.dispose] = MetricsVerdict.prototype.free;
|
|
1071
1071
|
|
|
1072
|
+
/**
|
|
1073
|
+
* The transparency-aware verdict: the base offline outcome PLUS the honest
|
|
1074
|
+
* witness status. `witnessed`/`witness_count`/`witness_status` are DERIVED from
|
|
1075
|
+
* the verifier's [`WitnessStatus`], never inferred from a bare green:
|
|
1076
|
+
*
|
|
1077
|
+
* - No `transparency[]`, an empty `cosignatures[]`, or no pinned witness keys ⇒
|
|
1078
|
+
* `witnessed = false`, `witness_count = 0`, `witness_status = "NotWitnessed"`.
|
|
1079
|
+
* A valid-but-unwitnessed receipt is honestly reported as such, NEVER as a
|
|
1080
|
+
* green "witnessed".
|
|
1081
|
+
* - At least one distinct, pinned witness cosignature verified ⇒
|
|
1082
|
+
* `witnessed = true`, `witness_count = <distinct>`, `witness_status =
|
|
1083
|
+
* "Witnessed"`.
|
|
1084
|
+
* - A demanded quorum (`minWitnesses > 0`) that is not met makes `verdict` the
|
|
1085
|
+
* `"WitnessQuorumNotMet:have=…,need=…"` tag and leaves `witness_status =
|
|
1086
|
+
* "NotWitnessed"` (fail closed — the quorum is a relying-party policy).
|
|
1087
|
+
*/
|
|
1088
|
+
export class TransparencyVerdict {
|
|
1089
|
+
static __wrap(ptr) {
|
|
1090
|
+
const obj = Object.create(TransparencyVerdict.prototype);
|
|
1091
|
+
obj.__wbg_ptr = ptr;
|
|
1092
|
+
TransparencyVerdictFinalization.register(obj, obj.__wbg_ptr, obj);
|
|
1093
|
+
return obj;
|
|
1094
|
+
}
|
|
1095
|
+
__destroy_into_raw() {
|
|
1096
|
+
const ptr = this.__wbg_ptr;
|
|
1097
|
+
this.__wbg_ptr = 0;
|
|
1098
|
+
TransparencyVerdictFinalization.unregister(this);
|
|
1099
|
+
return ptr;
|
|
1100
|
+
}
|
|
1101
|
+
free() {
|
|
1102
|
+
const ptr = this.__destroy_into_raw();
|
|
1103
|
+
wasm.__wbg_transparencyverdict_free(ptr, 0);
|
|
1104
|
+
}
|
|
1105
|
+
/**
|
|
1106
|
+
* The re-derived trust level (`"L0"`/`"L1"`); `""` unless `verdict == "Valid"`.
|
|
1107
|
+
* @returns {string}
|
|
1108
|
+
*/
|
|
1109
|
+
get trust_level() {
|
|
1110
|
+
let deferred1_0;
|
|
1111
|
+
let deferred1_1;
|
|
1112
|
+
try {
|
|
1113
|
+
const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
|
|
1114
|
+
wasm.__wbg_get_transparencyverdict_trust_level(retptr, this.__wbg_ptr);
|
|
1115
|
+
var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
|
|
1116
|
+
var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
|
|
1117
|
+
deferred1_0 = r0;
|
|
1118
|
+
deferred1_1 = r1;
|
|
1119
|
+
return getStringFromWasm0(r0, r1);
|
|
1120
|
+
} finally {
|
|
1121
|
+
wasm.__wbindgen_add_to_stack_pointer(16);
|
|
1122
|
+
wasm.__wbindgen_export3(deferred1_0, deferred1_1, 1);
|
|
1123
|
+
}
|
|
1124
|
+
}
|
|
1125
|
+
/**
|
|
1126
|
+
* The base `ActionOutcome` verdict tag (`"Valid"`, `"HashMismatch"`,
|
|
1127
|
+
* `"TransparencyUnverifiable:…"`, `"WitnessQuorumNotMet:have=…,need=…"`, …).
|
|
1128
|
+
* @returns {string}
|
|
1129
|
+
*/
|
|
1130
|
+
get verdict() {
|
|
1131
|
+
let deferred1_0;
|
|
1132
|
+
let deferred1_1;
|
|
1133
|
+
try {
|
|
1134
|
+
const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
|
|
1135
|
+
wasm.__wbg_get_transparencyverdict_verdict(retptr, this.__wbg_ptr);
|
|
1136
|
+
var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
|
|
1137
|
+
var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
|
|
1138
|
+
deferred1_0 = r0;
|
|
1139
|
+
deferred1_1 = r1;
|
|
1140
|
+
return getStringFromWasm0(r0, r1);
|
|
1141
|
+
} finally {
|
|
1142
|
+
wasm.__wbindgen_add_to_stack_pointer(16);
|
|
1143
|
+
wasm.__wbindgen_export3(deferred1_0, deferred1_1, 1);
|
|
1144
|
+
}
|
|
1145
|
+
}
|
|
1146
|
+
/**
|
|
1147
|
+
* The count of DISTINCT verified witness cosignatures (the minimum across the
|
|
1148
|
+
* receipt's proofs). `0` when `witnessed == false`.
|
|
1149
|
+
* @returns {number}
|
|
1150
|
+
*/
|
|
1151
|
+
get witness_count() {
|
|
1152
|
+
const ret = wasm.__wbg_get_transparencyverdict_witness_count(this.__wbg_ptr);
|
|
1153
|
+
return ret >>> 0;
|
|
1154
|
+
}
|
|
1155
|
+
/**
|
|
1156
|
+
* The honest witness line: `"Witnessed"` or `"NotWitnessed"`.
|
|
1157
|
+
* @returns {string}
|
|
1158
|
+
*/
|
|
1159
|
+
get witness_status() {
|
|
1160
|
+
let deferred1_0;
|
|
1161
|
+
let deferred1_1;
|
|
1162
|
+
try {
|
|
1163
|
+
const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
|
|
1164
|
+
wasm.__wbg_get_transparencyverdict_witness_status(retptr, this.__wbg_ptr);
|
|
1165
|
+
var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
|
|
1166
|
+
var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
|
|
1167
|
+
deferred1_0 = r0;
|
|
1168
|
+
deferred1_1 = r1;
|
|
1169
|
+
return getStringFromWasm0(r0, r1);
|
|
1170
|
+
} finally {
|
|
1171
|
+
wasm.__wbindgen_add_to_stack_pointer(16);
|
|
1172
|
+
wasm.__wbindgen_export3(deferred1_0, deferred1_1, 1);
|
|
1173
|
+
}
|
|
1174
|
+
}
|
|
1175
|
+
/**
|
|
1176
|
+
* `true` iff at least one distinct, pinned witness cosignature verified.
|
|
1177
|
+
* @returns {boolean}
|
|
1178
|
+
*/
|
|
1179
|
+
get witnessed() {
|
|
1180
|
+
const ret = wasm.__wbg_get_transparencyverdict_witnessed(this.__wbg_ptr);
|
|
1181
|
+
return ret !== 0;
|
|
1182
|
+
}
|
|
1183
|
+
/**
|
|
1184
|
+
* The re-derived trust level (`"L0"`/`"L1"`); `""` unless `verdict == "Valid"`.
|
|
1185
|
+
* @param {string} arg0
|
|
1186
|
+
*/
|
|
1187
|
+
set trust_level(arg0) {
|
|
1188
|
+
const ptr0 = passStringToWasm0(arg0, wasm.__wbindgen_export, wasm.__wbindgen_export2);
|
|
1189
|
+
const len0 = WASM_VECTOR_LEN;
|
|
1190
|
+
wasm.__wbg_set_transparencyverdict_trust_level(this.__wbg_ptr, ptr0, len0);
|
|
1191
|
+
}
|
|
1192
|
+
/**
|
|
1193
|
+
* The base `ActionOutcome` verdict tag (`"Valid"`, `"HashMismatch"`,
|
|
1194
|
+
* `"TransparencyUnverifiable:…"`, `"WitnessQuorumNotMet:have=…,need=…"`, …).
|
|
1195
|
+
* @param {string} arg0
|
|
1196
|
+
*/
|
|
1197
|
+
set verdict(arg0) {
|
|
1198
|
+
const ptr0 = passStringToWasm0(arg0, wasm.__wbindgen_export, wasm.__wbindgen_export2);
|
|
1199
|
+
const len0 = WASM_VECTOR_LEN;
|
|
1200
|
+
wasm.__wbg_set_transparencyverdict_verdict(this.__wbg_ptr, ptr0, len0);
|
|
1201
|
+
}
|
|
1202
|
+
/**
|
|
1203
|
+
* The count of DISTINCT verified witness cosignatures (the minimum across the
|
|
1204
|
+
* receipt's proofs). `0` when `witnessed == false`.
|
|
1205
|
+
* @param {number} arg0
|
|
1206
|
+
*/
|
|
1207
|
+
set witness_count(arg0) {
|
|
1208
|
+
wasm.__wbg_set_transparencyverdict_witness_count(this.__wbg_ptr, arg0);
|
|
1209
|
+
}
|
|
1210
|
+
/**
|
|
1211
|
+
* The honest witness line: `"Witnessed"` or `"NotWitnessed"`.
|
|
1212
|
+
* @param {string} arg0
|
|
1213
|
+
*/
|
|
1214
|
+
set witness_status(arg0) {
|
|
1215
|
+
const ptr0 = passStringToWasm0(arg0, wasm.__wbindgen_export, wasm.__wbindgen_export2);
|
|
1216
|
+
const len0 = WASM_VECTOR_LEN;
|
|
1217
|
+
wasm.__wbg_set_transparencyverdict_witness_status(this.__wbg_ptr, ptr0, len0);
|
|
1218
|
+
}
|
|
1219
|
+
/**
|
|
1220
|
+
* `true` iff at least one distinct, pinned witness cosignature verified.
|
|
1221
|
+
* @param {boolean} arg0
|
|
1222
|
+
*/
|
|
1223
|
+
set witnessed(arg0) {
|
|
1224
|
+
wasm.__wbg_set_transparencyverdict_witnessed(this.__wbg_ptr, arg0);
|
|
1225
|
+
}
|
|
1226
|
+
}
|
|
1227
|
+
if (Symbol.dispose) TransparencyVerdict.prototype[Symbol.dispose] = TransparencyVerdict.prototype.free;
|
|
1228
|
+
|
|
1072
1229
|
/**
|
|
1073
1230
|
* The verified, decoded result of a delegation envelope.
|
|
1074
1231
|
*/
|
|
@@ -1907,6 +2064,70 @@ export function verifyActionReceiptWithRates(receipt_bytes, rate_card_json) {
|
|
|
1907
2064
|
return MetricsVerdict.__wrap(ret);
|
|
1908
2065
|
}
|
|
1909
2066
|
|
|
2067
|
+
/**
|
|
2068
|
+
* Verify a single `ActionReceipt` AND its transparency-log inclusion proof +
|
|
2069
|
+
* witness cosignatures against the PINNED log/witness keys — the verify the
|
|
2070
|
+
* public proof page runs so a third party confirms the receipt was logged AND
|
|
2071
|
+
* independently witnessed, entirely offline from the frozen bytes.
|
|
2072
|
+
*
|
|
2073
|
+
* This calls the REAL [`open_receipt_with_transparency`] (the single source of
|
|
2074
|
+
* truth shared with the CLI and the Python SDK): the base offline gate, then —
|
|
2075
|
+
* for each proof in `receipt.transparency` — a two-stage RFC-6962 inclusion
|
|
2076
|
+
* proof against the C2SP checkpoint note signed by `log_pubkey_b64`, then every
|
|
2077
|
+
* cosignature `verify_strict`-ed over the exact checkpoint-note bytes against a
|
|
2078
|
+
* pinned witness key (deduped by key to a DISTINCT count). The proofs live in
|
|
2079
|
+
* the receipt's `transparency[]` block (stapled at export), so there is no
|
|
2080
|
+
* separate `proofsJson` argument — passing the receipt passes its proofs.
|
|
2081
|
+
*
|
|
2082
|
+
* HONEST by construction (see [`TransparencyVerdict`]): absent/empty witnesses ⇒
|
|
2083
|
+
* `NotWitnessed` (never a green "witnessed"); a demanded-but-unmet quorum
|
|
2084
|
+
* (`min_witnesses > 0`) ⇒ the `WitnessQuorumNotMet` verdict, fail closed.
|
|
2085
|
+
*
|
|
2086
|
+
* `receipt_bytes` — raw `ActionReceipt` JSON (`Uint8Array`). A
|
|
2087
|
+
* structurally bad receipt is an honest `"Malformed:…"`
|
|
2088
|
+
* verdict, never a throw and never a green.
|
|
2089
|
+
* `log_pubkey_b64` — the PINNED transparency-log public key (base64, raw 32
|
|
2090
|
+
* bytes), trusted out of band (CT-style).
|
|
2091
|
+
* `witness_keys_b64` — the PINNED witness public keys (base64, raw 32 bytes);
|
|
2092
|
+
* empty ⇒ cosignatures are not counted (`NotWitnessed`).
|
|
2093
|
+
* `min_witnesses` — the relying party's witness-QUORUM policy. `0` is
|
|
2094
|
+
* presence-tolerant; `> 0` fails closed below quorum and
|
|
2095
|
+
* requires at least one pinned witness key.
|
|
2096
|
+
* `require_transparency` — when `true`, a receipt with no `transparency[]` fails
|
|
2097
|
+
* closed (`"TransparencyRequired"`).
|
|
2098
|
+
*
|
|
2099
|
+
* Throws a `JsError` only for an UNUSABLE config input (a `log_pubkey_b64` /
|
|
2100
|
+
* `witness_keys_b64` entry that is not base64 of exactly 32 bytes) — every
|
|
2101
|
+
* cryptographic / quorum failure is a non-throwing verdict instead.
|
|
2102
|
+
* @param {Uint8Array} receipt_bytes
|
|
2103
|
+
* @param {string} log_pubkey_b64
|
|
2104
|
+
* @param {string[]} witness_keys_b64
|
|
2105
|
+
* @param {number} min_witnesses
|
|
2106
|
+
* @param {boolean} require_transparency
|
|
2107
|
+
* @returns {TransparencyVerdict}
|
|
2108
|
+
*/
|
|
2109
|
+
export function verifyActionReceiptWithTransparency(receipt_bytes, log_pubkey_b64, witness_keys_b64, min_witnesses, require_transparency) {
|
|
2110
|
+
try {
|
|
2111
|
+
const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
|
|
2112
|
+
const ptr0 = passArray8ToWasm0(receipt_bytes, wasm.__wbindgen_export);
|
|
2113
|
+
const len0 = WASM_VECTOR_LEN;
|
|
2114
|
+
const ptr1 = passStringToWasm0(log_pubkey_b64, wasm.__wbindgen_export, wasm.__wbindgen_export2);
|
|
2115
|
+
const len1 = WASM_VECTOR_LEN;
|
|
2116
|
+
const ptr2 = passArrayJsValueToWasm0(witness_keys_b64, wasm.__wbindgen_export);
|
|
2117
|
+
const len2 = WASM_VECTOR_LEN;
|
|
2118
|
+
wasm.verifyActionReceiptWithTransparency(retptr, ptr0, len0, ptr1, len1, ptr2, len2, min_witnesses, require_transparency);
|
|
2119
|
+
var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
|
|
2120
|
+
var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
|
|
2121
|
+
var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
|
|
2122
|
+
if (r2) {
|
|
2123
|
+
throw takeObject(r1);
|
|
2124
|
+
}
|
|
2125
|
+
return TransparencyVerdict.__wrap(r0);
|
|
2126
|
+
} finally {
|
|
2127
|
+
wasm.__wbindgen_add_to_stack_pointer(16);
|
|
2128
|
+
}
|
|
2129
|
+
}
|
|
2130
|
+
|
|
1910
2131
|
/**
|
|
1911
2132
|
* Verify a serialized approval token and return its decoded claims.
|
|
1912
2133
|
*
|
|
@@ -2385,6 +2606,9 @@ const CommitmentVerdictFinalization = (typeof FinalizationRegistry === 'undefine
|
|
|
2385
2606
|
const MetricsVerdictFinalization = (typeof FinalizationRegistry === 'undefined')
|
|
2386
2607
|
? { register: () => {}, unregister: () => {} }
|
|
2387
2608
|
: new FinalizationRegistry(ptr => wasm.__wbg_metricsverdict_free(ptr, 1));
|
|
2609
|
+
const TransparencyVerdictFinalization = (typeof FinalizationRegistry === 'undefined')
|
|
2610
|
+
? { register: () => {}, unregister: () => {} }
|
|
2611
|
+
: new FinalizationRegistry(ptr => wasm.__wbg_transparencyverdict_free(ptr, 1));
|
|
2388
2612
|
const VerifiedDelegationFinalization = (typeof FinalizationRegistry === 'undefined')
|
|
2389
2613
|
? { register: () => {}, unregister: () => {} }
|
|
2390
2614
|
: new FinalizationRegistry(ptr => wasm.__wbg_verifieddelegation_free(ptr, 1));
|
|
@@ -2447,6 +2671,16 @@ function passArray8ToWasm0(arg, malloc) {
|
|
|
2447
2671
|
return ptr;
|
|
2448
2672
|
}
|
|
2449
2673
|
|
|
2674
|
+
function passArrayJsValueToWasm0(array, malloc) {
|
|
2675
|
+
const ptr = malloc(array.length * 4, 4) >>> 0;
|
|
2676
|
+
const mem = getDataViewMemory0();
|
|
2677
|
+
for (let i = 0; i < array.length; i++) {
|
|
2678
|
+
mem.setUint32(ptr + 4 * i, addHeapObject(array[i]), true);
|
|
2679
|
+
}
|
|
2680
|
+
WASM_VECTOR_LEN = array.length;
|
|
2681
|
+
return ptr;
|
|
2682
|
+
}
|
|
2683
|
+
|
|
2450
2684
|
function passStringToWasm0(arg, malloc, realloc) {
|
|
2451
2685
|
if (realloc === undefined) {
|
|
2452
2686
|
const buf = cachedTextEncoder.encode(arg);
|
package/heso_wasm_bg.wasm
CHANGED
|
Binary file
|
package/heso_wasm_bg.wasm.d.ts
CHANGED
|
@@ -32,6 +32,10 @@ export const __wbg_set_verifieddelegation_expiry_unix_secs: (a: number, b: numbe
|
|
|
32
32
|
export const __wbg_get_verifieddelegation_not_before_unix_secs: (a: number) => number;
|
|
33
33
|
export const __wbg_set_verifieddelegation_not_before_unix_secs: (a: number, b: number) => void;
|
|
34
34
|
export const verifyActionReceipt: (a: number, b: number) => number;
|
|
35
|
+
export const __wbg_transparencyverdict_free: (a: number, b: number) => void;
|
|
36
|
+
export const __wbg_get_transparencyverdict_witness_count: (a: number) => number;
|
|
37
|
+
export const __wbg_set_transparencyverdict_witness_count: (a: number, b: number) => void;
|
|
38
|
+
export const verifyActionReceiptWithTransparency: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => void;
|
|
35
39
|
export const actionCanonicalBytes: (a: number, b: number, c: number) => void;
|
|
36
40
|
export const l1CosignPayload: (a: number, b: number, c: number, d: number, e: number) => void;
|
|
37
41
|
export const quorumCosignPayload: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => void;
|
|
@@ -114,13 +118,18 @@ export const __wbg_set_cloudtrailfeedverdict_signed_log_files_count: (a: number,
|
|
|
114
118
|
export const __wbg_get_cloudtrailfeedverdict_signed_log_files_json: (a: number, b: number) => void;
|
|
115
119
|
export const __wbg_set_cloudtrailfeedverdict_signed_log_files_json: (a: number, b: number, c: number) => void;
|
|
116
120
|
export const verifyCloudTrailFeed: (a: number, b: number, c: number) => void;
|
|
121
|
+
export const __wbg_set_transparencyverdict_witnessed: (a: number, b: number) => void;
|
|
117
122
|
export const __wbg_set_approvaltokenclaims_decision: (a: number, b: number, c: number) => void;
|
|
118
123
|
export const __wbg_set_approvaltokenclaims_scope: (a: number, b: number, c: number) => void;
|
|
119
124
|
export const __wbg_set_verifieddelegation_sub: (a: number, b: number, c: number) => void;
|
|
120
125
|
export const __wbg_set_verifieddelegation_scope: (a: number, b: number, c: number) => void;
|
|
121
126
|
export const __wbg_set_commitmentverdict_verdict: (a: number, b: number, c: number) => void;
|
|
122
127
|
export const __wbg_set_commitmentverdict_signer_fpr: (a: number, b: number, c: number) => void;
|
|
128
|
+
export const __wbg_set_transparencyverdict_verdict: (a: number, b: number, c: number) => void;
|
|
129
|
+
export const __wbg_set_transparencyverdict_trust_level: (a: number, b: number, c: number) => void;
|
|
130
|
+
export const __wbg_set_transparencyverdict_witness_status: (a: number, b: number, c: number) => void;
|
|
123
131
|
export const __wbg_set_cloudtrailfeedverdict_broken_at: (a: number, b: number) => void;
|
|
132
|
+
export const __wbg_get_transparencyverdict_witnessed: (a: number) => number;
|
|
124
133
|
export const __wbg_get_cloudtrailfeedverdict_broken_at: (a: number) => number;
|
|
125
134
|
export const __wbg_commitmentverdict_free: (a: number, b: number) => void;
|
|
126
135
|
export const __wbg_get_approvaltokenclaims_decision: (a: number, b: number) => void;
|
|
@@ -129,6 +138,9 @@ export const __wbg_get_verifieddelegation_sub: (a: number, b: number) => void;
|
|
|
129
138
|
export const __wbg_get_verifieddelegation_scope: (a: number, b: number) => void;
|
|
130
139
|
export const __wbg_get_commitmentverdict_verdict: (a: number, b: number) => void;
|
|
131
140
|
export const __wbg_get_commitmentverdict_signer_fpr: (a: number, b: number) => void;
|
|
141
|
+
export const __wbg_get_transparencyverdict_verdict: (a: number, b: number) => void;
|
|
142
|
+
export const __wbg_get_transparencyverdict_trust_level: (a: number, b: number) => void;
|
|
143
|
+
export const __wbg_get_transparencyverdict_witness_status: (a: number, b: number) => void;
|
|
132
144
|
export const __wbindgen_export: (a: number, b: number) => number;
|
|
133
145
|
export const __wbindgen_export2: (a: number, b: number, c: number, d: number) => number;
|
|
134
146
|
export const __wbindgen_add_to_stack_pointer: (a: number) => number;
|