@aztec/bb.js 0.0.1-commit.f295ac2 → 0.0.1-commit.fc805bf
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/build/amd64-linux/bb +0 -0
- package/build/amd64-linux/nodejs_module.node +0 -0
- package/build/amd64-macos/bb +0 -0
- package/build/amd64-macos/nodejs_module.node +0 -0
- package/build/arm64-linux/bb +0 -0
- package/build/arm64-linux/nodejs_module.node +0 -0
- package/build/arm64-macos/bb +0 -0
- package/build/arm64-macos/nodejs_module.node +0 -0
- package/dest/browser/barretenberg/backend.d.ts +2 -1
- package/dest/browser/barretenberg/backend.d.ts.map +1 -1
- package/dest/browser/barretenberg/backend.js +15 -4
- package/dest/browser/barretenberg_wasm/fetch_code/browser/barretenberg-threads.js +1 -1
- package/dest/browser/barretenberg_wasm/fetch_code/browser/barretenberg.js +1 -1
- package/dest/browser/cbind/generated/api_types.d.ts +10 -44
- package/dest/browser/cbind/generated/api_types.d.ts.map +1 -1
- package/dest/browser/cbind/generated/api_types.js +11 -83
- package/dest/browser/cbind/generated/async.d.ts +3 -5
- package/dest/browser/cbind/generated/async.d.ts.map +1 -1
- package/dest/browser/cbind/generated/async.js +8 -32
- package/dest/browser/cbind/generated/sync.d.ts +3 -5
- package/dest/browser/cbind/generated/sync.d.ts.map +1 -1
- package/dest/browser/cbind/generated/sync.js +8 -30
- package/dest/browser/cbind/rust_codegen.d.ts +2 -1
- package/dest/browser/cbind/rust_codegen.d.ts.map +1 -1
- package/dest/browser/cbind/rust_codegen.js +47 -2
- package/dest/node/barretenberg/backend.d.ts +2 -1
- package/dest/node/barretenberg/backend.d.ts.map +1 -1
- package/dest/node/barretenberg/backend.js +15 -4
- package/dest/node/barretenberg_wasm/barretenberg-threads.wasm.gz +0 -0
- package/dest/node/bb_backends/node/native_shm.d.ts +1 -1
- package/dest/node/bb_backends/node/native_shm.d.ts.map +1 -1
- package/dest/node/bb_backends/node/native_shm.js +3 -2
- package/dest/node/bb_backends/node/native_shm_async.d.ts +1 -1
- package/dest/node/bb_backends/node/native_shm_async.d.ts.map +1 -1
- package/dest/node/bb_backends/node/native_shm_async.js +3 -2
- package/dest/node/bb_backends/node/native_socket.d.ts +1 -1
- package/dest/node/bb_backends/node/native_socket.d.ts.map +1 -1
- package/dest/node/bb_backends/node/native_socket.js +4 -2
- package/dest/node/cbind/generated/api_types.d.ts +10 -44
- package/dest/node/cbind/generated/api_types.d.ts.map +1 -1
- package/dest/node/cbind/generated/api_types.js +11 -83
- package/dest/node/cbind/generated/async.d.ts +3 -5
- package/dest/node/cbind/generated/async.d.ts.map +1 -1
- package/dest/node/cbind/generated/async.js +8 -32
- package/dest/node/cbind/generated/sync.d.ts +3 -5
- package/dest/node/cbind/generated/sync.d.ts.map +1 -1
- package/dest/node/cbind/generated/sync.js +8 -30
- package/dest/node/cbind/rust_codegen.d.ts +2 -1
- package/dest/node/cbind/rust_codegen.d.ts.map +1 -1
- package/dest/node/cbind/rust_codegen.js +47 -2
- package/dest/node-cjs/barretenberg/backend.d.ts +2 -1
- package/dest/node-cjs/barretenberg/backend.d.ts.map +1 -1
- package/dest/node-cjs/barretenberg/backend.js +15 -4
- package/dest/node-cjs/barretenberg_wasm/barretenberg-threads.wasm.gz +0 -0
- package/dest/node-cjs/bb_backends/node/native_shm.d.ts +1 -1
- package/dest/node-cjs/bb_backends/node/native_shm.d.ts.map +1 -1
- package/dest/node-cjs/bb_backends/node/native_shm.js +3 -2
- package/dest/node-cjs/bb_backends/node/native_shm_async.d.ts +1 -1
- package/dest/node-cjs/bb_backends/node/native_shm_async.d.ts.map +1 -1
- package/dest/node-cjs/bb_backends/node/native_shm_async.js +3 -2
- package/dest/node-cjs/bb_backends/node/native_socket.d.ts +1 -1
- package/dest/node-cjs/bb_backends/node/native_socket.d.ts.map +1 -1
- package/dest/node-cjs/bb_backends/node/native_socket.js +4 -2
- package/dest/node-cjs/cbind/generated/api_types.d.ts +10 -44
- package/dest/node-cjs/cbind/generated/api_types.d.ts.map +1 -1
- package/dest/node-cjs/cbind/generated/api_types.js +15 -95
- package/dest/node-cjs/cbind/generated/async.d.ts +3 -5
- package/dest/node-cjs/cbind/generated/async.d.ts.map +1 -1
- package/dest/node-cjs/cbind/generated/async.js +7 -31
- package/dest/node-cjs/cbind/generated/sync.d.ts +3 -5
- package/dest/node-cjs/cbind/generated/sync.d.ts.map +1 -1
- package/dest/node-cjs/cbind/generated/sync.js +7 -29
- package/dest/node-cjs/cbind/rust_codegen.d.ts +2 -1
- package/dest/node-cjs/cbind/rust_codegen.d.ts.map +1 -1
- package/dest/node-cjs/cbind/rust_codegen.js +47 -2
- package/package.json +1 -1
- package/src/barretenberg/backend.ts +16 -4
- package/src/bb_backends/node/native_shm.ts +2 -1
- package/src/bb_backends/node/native_shm_async.ts +2 -1
- package/src/bb_backends/node/native_socket.ts +4 -1
- package/src/cbind/generated/api_types.ts +15 -105
- package/src/cbind/generated/async.ts +7 -33
- package/src/cbind/generated/sync.ts +7 -31
- package/src/cbind/rust_codegen.ts +46 -1
|
@@ -52,11 +52,7 @@ export interface CircuitVerify {
|
|
|
52
52
|
settings: ProofSystemSettings;
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
-
export interface
|
|
56
|
-
circuit: CircuitInputNoVK;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
export interface ChonkComputeIvcVk {
|
|
55
|
+
export interface ChonkComputeVk {
|
|
60
56
|
circuit: CircuitInputNoVK;
|
|
61
57
|
}
|
|
62
58
|
|
|
@@ -123,10 +119,6 @@ export interface Poseidon2Permutation {
|
|
|
123
119
|
inputs: Uint8Array[];
|
|
124
120
|
}
|
|
125
121
|
|
|
126
|
-
export interface Poseidon2HashAccumulate {
|
|
127
|
-
inputs: Uint8Array[];
|
|
128
|
-
}
|
|
129
|
-
|
|
130
122
|
export interface PedersenCommit {
|
|
131
123
|
inputs: Uint8Array[];
|
|
132
124
|
hashIndex: number;
|
|
@@ -351,15 +343,11 @@ export interface CircuitVerifyResponse {
|
|
|
351
343
|
verified: boolean;
|
|
352
344
|
}
|
|
353
345
|
|
|
354
|
-
export interface
|
|
346
|
+
export interface ChonkComputeVkResponse {
|
|
355
347
|
bytes: Uint8Array;
|
|
356
348
|
fields: Uint8Array[];
|
|
357
349
|
}
|
|
358
350
|
|
|
359
|
-
export interface ChonkComputeIvcVkResponse {
|
|
360
|
-
bytes: Uint8Array;
|
|
361
|
-
}
|
|
362
|
-
|
|
363
351
|
export interface ChonkStartResponse {
|
|
364
352
|
|
|
365
353
|
}
|
|
@@ -411,10 +399,6 @@ export interface Poseidon2PermutationResponse {
|
|
|
411
399
|
outputs: Uint8Array[];
|
|
412
400
|
}
|
|
413
401
|
|
|
414
|
-
export interface Poseidon2HashAccumulateResponse {
|
|
415
|
-
hash: Uint8Array;
|
|
416
|
-
}
|
|
417
|
-
|
|
418
402
|
export interface PedersenCommitResponse {
|
|
419
403
|
point: GrumpkinPoint;
|
|
420
404
|
}
|
|
@@ -611,11 +595,7 @@ interface MsgpackCircuitVerify {
|
|
|
611
595
|
settings: MsgpackProofSystemSettings;
|
|
612
596
|
}
|
|
613
597
|
|
|
614
|
-
interface
|
|
615
|
-
circuit: MsgpackCircuitInputNoVK;
|
|
616
|
-
}
|
|
617
|
-
|
|
618
|
-
interface MsgpackChonkComputeIvcVk {
|
|
598
|
+
interface MsgpackChonkComputeVk {
|
|
619
599
|
circuit: MsgpackCircuitInputNoVK;
|
|
620
600
|
}
|
|
621
601
|
|
|
@@ -682,10 +662,6 @@ interface MsgpackPoseidon2Permutation {
|
|
|
682
662
|
inputs: Uint8Array[];
|
|
683
663
|
}
|
|
684
664
|
|
|
685
|
-
interface MsgpackPoseidon2HashAccumulate {
|
|
686
|
-
inputs: Uint8Array[];
|
|
687
|
-
}
|
|
688
|
-
|
|
689
665
|
interface MsgpackPedersenCommit {
|
|
690
666
|
inputs: Uint8Array[];
|
|
691
667
|
hash_index: number;
|
|
@@ -910,15 +886,11 @@ interface MsgpackCircuitVerifyResponse {
|
|
|
910
886
|
verified: boolean;
|
|
911
887
|
}
|
|
912
888
|
|
|
913
|
-
interface
|
|
889
|
+
interface MsgpackChonkComputeVkResponse {
|
|
914
890
|
bytes: Uint8Array;
|
|
915
891
|
fields: Uint8Array[];
|
|
916
892
|
}
|
|
917
893
|
|
|
918
|
-
interface MsgpackChonkComputeIvcVkResponse {
|
|
919
|
-
bytes: Uint8Array;
|
|
920
|
-
}
|
|
921
|
-
|
|
922
894
|
interface MsgpackChonkStartResponse {
|
|
923
895
|
|
|
924
896
|
}
|
|
@@ -970,10 +942,6 @@ interface MsgpackPoseidon2PermutationResponse {
|
|
|
970
942
|
outputs: Uint8Array[];
|
|
971
943
|
}
|
|
972
944
|
|
|
973
|
-
interface MsgpackPoseidon2HashAccumulateResponse {
|
|
974
|
-
hash: Uint8Array;
|
|
975
|
-
}
|
|
976
|
-
|
|
977
945
|
interface MsgpackPedersenCommitResponse {
|
|
978
946
|
point: MsgpackGrumpkinPoint;
|
|
979
947
|
}
|
|
@@ -1210,15 +1178,8 @@ export function toCircuitVerify(o: MsgpackCircuitVerify): CircuitVerify {
|
|
|
1210
1178
|
};
|
|
1211
1179
|
}
|
|
1212
1180
|
|
|
1213
|
-
export function
|
|
1214
|
-
if (o.circuit === undefined) { throw new Error("Expected circuit in
|
|
1215
|
-
return {
|
|
1216
|
-
circuit: toCircuitInputNoVK(o.circuit),
|
|
1217
|
-
};
|
|
1218
|
-
}
|
|
1219
|
-
|
|
1220
|
-
export function toChonkComputeIvcVk(o: MsgpackChonkComputeIvcVk): ChonkComputeIvcVk {
|
|
1221
|
-
if (o.circuit === undefined) { throw new Error("Expected circuit in ChonkComputeIvcVk deserialization"); };
|
|
1181
|
+
export function toChonkComputeVk(o: MsgpackChonkComputeVk): ChonkComputeVk {
|
|
1182
|
+
if (o.circuit === undefined) { throw new Error("Expected circuit in ChonkComputeVk deserialization"); };
|
|
1222
1183
|
return {
|
|
1223
1184
|
circuit: toCircuitInputNoVK(o.circuit),
|
|
1224
1185
|
};
|
|
@@ -1333,13 +1294,6 @@ export function toPoseidon2Permutation(o: MsgpackPoseidon2Permutation): Poseidon
|
|
|
1333
1294
|
};
|
|
1334
1295
|
}
|
|
1335
1296
|
|
|
1336
|
-
export function toPoseidon2HashAccumulate(o: MsgpackPoseidon2HashAccumulate): Poseidon2HashAccumulate {
|
|
1337
|
-
if (o.inputs === undefined) { throw new Error("Expected inputs in Poseidon2HashAccumulate deserialization"); };
|
|
1338
|
-
return {
|
|
1339
|
-
inputs: o.inputs,
|
|
1340
|
-
};
|
|
1341
|
-
}
|
|
1342
|
-
|
|
1343
1297
|
export function toPedersenCommit(o: MsgpackPedersenCommit): PedersenCommit {
|
|
1344
1298
|
if (o.inputs === undefined) { throw new Error("Expected inputs in PedersenCommit deserialization"); }
|
|
1345
1299
|
if (o.hash_index === undefined) { throw new Error("Expected hash_index in PedersenCommit deserialization"); };
|
|
@@ -1741,22 +1695,15 @@ export function toCircuitVerifyResponse(o: MsgpackCircuitVerifyResponse): Circui
|
|
|
1741
1695
|
};
|
|
1742
1696
|
}
|
|
1743
1697
|
|
|
1744
|
-
export function
|
|
1745
|
-
if (o.bytes === undefined) { throw new Error("Expected bytes in
|
|
1746
|
-
if (o.fields === undefined) { throw new Error("Expected fields in
|
|
1698
|
+
export function toChonkComputeVkResponse(o: MsgpackChonkComputeVkResponse): ChonkComputeVkResponse {
|
|
1699
|
+
if (o.bytes === undefined) { throw new Error("Expected bytes in ChonkComputeVkResponse deserialization"); }
|
|
1700
|
+
if (o.fields === undefined) { throw new Error("Expected fields in ChonkComputeVkResponse deserialization"); };
|
|
1747
1701
|
return {
|
|
1748
1702
|
bytes: o.bytes,
|
|
1749
1703
|
fields: o.fields,
|
|
1750
1704
|
};
|
|
1751
1705
|
}
|
|
1752
1706
|
|
|
1753
|
-
export function toChonkComputeIvcVkResponse(o: MsgpackChonkComputeIvcVkResponse): ChonkComputeIvcVkResponse {
|
|
1754
|
-
if (o.bytes === undefined) { throw new Error("Expected bytes in ChonkComputeIvcVkResponse deserialization"); };
|
|
1755
|
-
return {
|
|
1756
|
-
bytes: o.bytes,
|
|
1757
|
-
};
|
|
1758
|
-
}
|
|
1759
|
-
|
|
1760
1707
|
export function toChonkStartResponse(o: MsgpackChonkStartResponse): ChonkStartResponse {
|
|
1761
1708
|
return {};
|
|
1762
1709
|
}
|
|
@@ -1838,13 +1785,6 @@ export function toPoseidon2PermutationResponse(o: MsgpackPoseidon2PermutationRes
|
|
|
1838
1785
|
};
|
|
1839
1786
|
}
|
|
1840
1787
|
|
|
1841
|
-
export function toPoseidon2HashAccumulateResponse(o: MsgpackPoseidon2HashAccumulateResponse): Poseidon2HashAccumulateResponse {
|
|
1842
|
-
if (o.hash === undefined) { throw new Error("Expected hash in Poseidon2HashAccumulateResponse deserialization"); };
|
|
1843
|
-
return {
|
|
1844
|
-
hash: o.hash,
|
|
1845
|
-
};
|
|
1846
|
-
}
|
|
1847
|
-
|
|
1848
1788
|
export function toPedersenCommitResponse(o: MsgpackPedersenCommitResponse): PedersenCommitResponse {
|
|
1849
1789
|
if (o.point === undefined) { throw new Error("Expected point in PedersenCommitResponse deserialization"); };
|
|
1850
1790
|
return {
|
|
@@ -2189,15 +2129,8 @@ export function fromCircuitVerify(o: CircuitVerify): MsgpackCircuitVerify {
|
|
|
2189
2129
|
};
|
|
2190
2130
|
}
|
|
2191
2131
|
|
|
2192
|
-
export function
|
|
2193
|
-
if (o.circuit === undefined) { throw new Error("Expected circuit in
|
|
2194
|
-
return {
|
|
2195
|
-
circuit: fromCircuitInputNoVK(o.circuit),
|
|
2196
|
-
};
|
|
2197
|
-
}
|
|
2198
|
-
|
|
2199
|
-
export function fromChonkComputeIvcVk(o: ChonkComputeIvcVk): MsgpackChonkComputeIvcVk {
|
|
2200
|
-
if (o.circuit === undefined) { throw new Error("Expected circuit in ChonkComputeIvcVk serialization"); };
|
|
2132
|
+
export function fromChonkComputeVk(o: ChonkComputeVk): MsgpackChonkComputeVk {
|
|
2133
|
+
if (o.circuit === undefined) { throw new Error("Expected circuit in ChonkComputeVk serialization"); };
|
|
2201
2134
|
return {
|
|
2202
2135
|
circuit: fromCircuitInputNoVK(o.circuit),
|
|
2203
2136
|
};
|
|
@@ -2312,13 +2245,6 @@ export function fromPoseidon2Permutation(o: Poseidon2Permutation): MsgpackPoseid
|
|
|
2312
2245
|
};
|
|
2313
2246
|
}
|
|
2314
2247
|
|
|
2315
|
-
export function fromPoseidon2HashAccumulate(o: Poseidon2HashAccumulate): MsgpackPoseidon2HashAccumulate {
|
|
2316
|
-
if (o.inputs === undefined) { throw new Error("Expected inputs in Poseidon2HashAccumulate serialization"); };
|
|
2317
|
-
return {
|
|
2318
|
-
inputs: o.inputs,
|
|
2319
|
-
};
|
|
2320
|
-
}
|
|
2321
|
-
|
|
2322
2248
|
export function fromPedersenCommit(o: PedersenCommit): MsgpackPedersenCommit {
|
|
2323
2249
|
if (o.inputs === undefined) { throw new Error("Expected inputs in PedersenCommit serialization"); }
|
|
2324
2250
|
if (o.hashIndex === undefined) { throw new Error("Expected hashIndex in PedersenCommit serialization"); };
|
|
@@ -2720,22 +2646,15 @@ export function fromCircuitVerifyResponse(o: CircuitVerifyResponse): MsgpackCirc
|
|
|
2720
2646
|
};
|
|
2721
2647
|
}
|
|
2722
2648
|
|
|
2723
|
-
export function
|
|
2724
|
-
if (o.bytes === undefined) { throw new Error("Expected bytes in
|
|
2725
|
-
if (o.fields === undefined) { throw new Error("Expected fields in
|
|
2649
|
+
export function fromChonkComputeVkResponse(o: ChonkComputeVkResponse): MsgpackChonkComputeVkResponse {
|
|
2650
|
+
if (o.bytes === undefined) { throw new Error("Expected bytes in ChonkComputeVkResponse serialization"); }
|
|
2651
|
+
if (o.fields === undefined) { throw new Error("Expected fields in ChonkComputeVkResponse serialization"); };
|
|
2726
2652
|
return {
|
|
2727
2653
|
bytes: o.bytes,
|
|
2728
2654
|
fields: o.fields,
|
|
2729
2655
|
};
|
|
2730
2656
|
}
|
|
2731
2657
|
|
|
2732
|
-
export function fromChonkComputeIvcVkResponse(o: ChonkComputeIvcVkResponse): MsgpackChonkComputeIvcVkResponse {
|
|
2733
|
-
if (o.bytes === undefined) { throw new Error("Expected bytes in ChonkComputeIvcVkResponse serialization"); };
|
|
2734
|
-
return {
|
|
2735
|
-
bytes: o.bytes,
|
|
2736
|
-
};
|
|
2737
|
-
}
|
|
2738
|
-
|
|
2739
2658
|
export function fromChonkStartResponse(o: ChonkStartResponse): MsgpackChonkStartResponse {
|
|
2740
2659
|
return {};
|
|
2741
2660
|
}
|
|
@@ -2817,13 +2736,6 @@ export function fromPoseidon2PermutationResponse(o: Poseidon2PermutationResponse
|
|
|
2817
2736
|
};
|
|
2818
2737
|
}
|
|
2819
2738
|
|
|
2820
|
-
export function fromPoseidon2HashAccumulateResponse(o: Poseidon2HashAccumulateResponse): MsgpackPoseidon2HashAccumulateResponse {
|
|
2821
|
-
if (o.hash === undefined) { throw new Error("Expected hash in Poseidon2HashAccumulateResponse serialization"); };
|
|
2822
|
-
return {
|
|
2823
|
-
hash: o.hash,
|
|
2824
|
-
};
|
|
2825
|
-
}
|
|
2826
|
-
|
|
2827
2739
|
export function fromPedersenCommitResponse(o: PedersenCommitResponse): MsgpackPedersenCommitResponse {
|
|
2828
2740
|
if (o.point === undefined) { throw new Error("Expected point in PedersenCommitResponse serialization"); };
|
|
2829
2741
|
return {
|
|
@@ -3086,8 +2998,7 @@ export interface BbApiBase {
|
|
|
3086
2998
|
circuitComputeVk(command: CircuitComputeVk): Promise<CircuitComputeVkResponse>;
|
|
3087
2999
|
circuitStats(command: CircuitStats): Promise<CircuitInfoResponse>;
|
|
3088
3000
|
circuitVerify(command: CircuitVerify): Promise<CircuitVerifyResponse>;
|
|
3089
|
-
|
|
3090
|
-
chonkComputeIvcVk(command: ChonkComputeIvcVk): Promise<ChonkComputeIvcVkResponse>;
|
|
3001
|
+
chonkComputeVk(command: ChonkComputeVk): Promise<ChonkComputeVkResponse>;
|
|
3091
3002
|
chonkStart(command: ChonkStart): Promise<ChonkStartResponse>;
|
|
3092
3003
|
chonkLoad(command: ChonkLoad): Promise<ChonkLoadResponse>;
|
|
3093
3004
|
chonkAccumulate(command: ChonkAccumulate): Promise<ChonkAccumulateResponse>;
|
|
@@ -3100,7 +3011,6 @@ export interface BbApiBase {
|
|
|
3100
3011
|
chonkStats(command: ChonkStats): Promise<ChonkStatsResponse>;
|
|
3101
3012
|
poseidon2Hash(command: Poseidon2Hash): Promise<Poseidon2HashResponse>;
|
|
3102
3013
|
poseidon2Permutation(command: Poseidon2Permutation): Promise<Poseidon2PermutationResponse>;
|
|
3103
|
-
poseidon2HashAccumulate(command: Poseidon2HashAccumulate): Promise<Poseidon2HashAccumulateResponse>;
|
|
3104
3014
|
pedersenCommit(command: PedersenCommit): Promise<PedersenCommitResponse>;
|
|
3105
3015
|
pedersenHash(command: PedersenHash): Promise<PedersenHashResponse>;
|
|
3106
3016
|
pedersenHashBuffer(command: PedersenHashBuffer): Promise<PedersenHashBufferResponse>;
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import { IMsgpackBackendAsync } from '../../bb_backends/interface.js';
|
|
4
4
|
import { Decoder, Encoder } from 'msgpackr';
|
|
5
5
|
import { BBApiException } from '../../bbapi_exception.js';
|
|
6
|
-
import { AesDecrypt, AesDecryptResponse, AesEncrypt, AesEncryptResponse, BbApiBase, Blake2s, Blake2sResponse, Blake2sToField, Blake2sToFieldResponse, Bn254FqSqrt, Bn254FqSqrtResponse, Bn254FrSqrt, Bn254FrSqrtResponse, Bn254G1FromCompressed, Bn254G1FromCompressedResponse, Bn254G1IsOnCurve, Bn254G1IsOnCurveResponse, Bn254G1Mul, Bn254G1MulResponse, Bn254G2Mul, Bn254G2MulResponse, ChonkAccumulate, ChonkAccumulateResponse, ChonkCheckPrecomputedVk, ChonkCheckPrecomputedVkResponse,
|
|
6
|
+
import { AesDecrypt, AesDecryptResponse, AesEncrypt, AesEncryptResponse, BbApiBase, Blake2s, Blake2sResponse, Blake2sToField, Blake2sToFieldResponse, Bn254FqSqrt, Bn254FqSqrtResponse, Bn254FrSqrt, Bn254FrSqrtResponse, Bn254G1FromCompressed, Bn254G1FromCompressedResponse, Bn254G1IsOnCurve, Bn254G1IsOnCurveResponse, Bn254G1Mul, Bn254G1MulResponse, Bn254G2Mul, Bn254G2MulResponse, ChonkAccumulate, ChonkAccumulateResponse, ChonkCheckPrecomputedVk, ChonkCheckPrecomputedVkResponse, ChonkComputeVk, ChonkComputeVkResponse, ChonkLoad, ChonkLoadResponse, ChonkProve, ChonkProveResponse, ChonkStart, ChonkStartResponse, ChonkStats, ChonkStatsResponse, ChonkVerify, ChonkVerifyResponse, CircuitComputeVk, CircuitComputeVkResponse, CircuitInfoResponse, CircuitProve, CircuitProveResponse, CircuitStats, CircuitVerify, CircuitVerifyResponse, CircuitWriteSolidityVerifier, CircuitWriteSolidityVerifierResponse, EcdsaSecp256k1ComputePublicKey, EcdsaSecp256k1ComputePublicKeyResponse, EcdsaSecp256k1ConstructSignature, EcdsaSecp256k1ConstructSignatureResponse, EcdsaSecp256k1RecoverPublicKey, EcdsaSecp256k1RecoverPublicKeyResponse, EcdsaSecp256k1VerifySignature, EcdsaSecp256k1VerifySignatureResponse, EcdsaSecp256r1ComputePublicKey, EcdsaSecp256r1ComputePublicKeyResponse, EcdsaSecp256r1ConstructSignature, EcdsaSecp256r1ConstructSignatureResponse, EcdsaSecp256r1RecoverPublicKey, EcdsaSecp256r1RecoverPublicKeyResponse, EcdsaSecp256r1VerifySignature, EcdsaSecp256r1VerifySignatureResponse, GrumpkinAdd, GrumpkinAddResponse, GrumpkinBatchMul, GrumpkinBatchMulResponse, GrumpkinGetRandomFr, GrumpkinGetRandomFrResponse, GrumpkinMul, GrumpkinMulResponse, GrumpkinReduce512, GrumpkinReduce512Response, MegaVkAsFields, MegaVkAsFieldsResponse, PedersenCommit, PedersenCommitResponse, PedersenHash, PedersenHashBuffer, PedersenHashBufferResponse, PedersenHashResponse, Poseidon2Hash, Poseidon2HashResponse, Poseidon2Permutation, Poseidon2PermutationResponse, SchnorrComputePublicKey, SchnorrComputePublicKeyResponse, SchnorrConstructSignature, SchnorrConstructSignatureResponse, SchnorrVerifySignature, SchnorrVerifySignatureResponse, Secp256k1GetRandomFr, Secp256k1GetRandomFrResponse, Secp256k1Mul, Secp256k1MulResponse, Secp256k1Reduce512, Secp256k1Reduce512Response, Shutdown, ShutdownResponse, SrsInitGrumpkinSrs, SrsInitGrumpkinSrsResponse, SrsInitSrs, SrsInitSrsResponse, VkAsFields, VkAsFieldsResponse, fromAesDecrypt, fromAesEncrypt, fromBlake2s, fromBlake2sToField, fromBn254FqSqrt, fromBn254FrSqrt, fromBn254G1FromCompressed, fromBn254G1IsOnCurve, fromBn254G1Mul, fromBn254G2Mul, fromChonkAccumulate, fromChonkCheckPrecomputedVk, fromChonkComputeVk, fromChonkLoad, fromChonkProve, fromChonkStart, fromChonkStats, fromChonkVerify, fromCircuitComputeVk, fromCircuitProve, fromCircuitStats, fromCircuitVerify, fromCircuitWriteSolidityVerifier, fromEcdsaSecp256k1ComputePublicKey, fromEcdsaSecp256k1ConstructSignature, fromEcdsaSecp256k1RecoverPublicKey, fromEcdsaSecp256k1VerifySignature, fromEcdsaSecp256r1ComputePublicKey, fromEcdsaSecp256r1ConstructSignature, fromEcdsaSecp256r1RecoverPublicKey, fromEcdsaSecp256r1VerifySignature, fromGrumpkinAdd, fromGrumpkinBatchMul, fromGrumpkinGetRandomFr, fromGrumpkinMul, fromGrumpkinReduce512, fromMegaVkAsFields, fromPedersenCommit, fromPedersenHash, fromPedersenHashBuffer, fromPoseidon2Hash, fromPoseidon2Permutation, fromSchnorrComputePublicKey, fromSchnorrConstructSignature, fromSchnorrVerifySignature, fromSecp256k1GetRandomFr, fromSecp256k1Mul, fromSecp256k1Reduce512, fromShutdown, fromSrsInitGrumpkinSrs, fromSrsInitSrs, fromVkAsFields, toAesDecryptResponse, toAesEncryptResponse, toBlake2sResponse, toBlake2sToFieldResponse, toBn254FqSqrtResponse, toBn254FrSqrtResponse, toBn254G1FromCompressedResponse, toBn254G1IsOnCurveResponse, toBn254G1MulResponse, toBn254G2MulResponse, toChonkAccumulateResponse, toChonkCheckPrecomputedVkResponse, toChonkComputeVkResponse, toChonkLoadResponse, toChonkProveResponse, toChonkStartResponse, toChonkStatsResponse, toChonkVerifyResponse, toCircuitComputeVkResponse, toCircuitInfoResponse, toCircuitProveResponse, toCircuitVerifyResponse, toCircuitWriteSolidityVerifierResponse, toEcdsaSecp256k1ComputePublicKeyResponse, toEcdsaSecp256k1ConstructSignatureResponse, toEcdsaSecp256k1RecoverPublicKeyResponse, toEcdsaSecp256k1VerifySignatureResponse, toEcdsaSecp256r1ComputePublicKeyResponse, toEcdsaSecp256r1ConstructSignatureResponse, toEcdsaSecp256r1RecoverPublicKeyResponse, toEcdsaSecp256r1VerifySignatureResponse, toGrumpkinAddResponse, toGrumpkinBatchMulResponse, toGrumpkinGetRandomFrResponse, toGrumpkinMulResponse, toGrumpkinReduce512Response, toMegaVkAsFieldsResponse, toPedersenCommitResponse, toPedersenHashBufferResponse, toPedersenHashResponse, toPoseidon2HashResponse, toPoseidon2PermutationResponse, toSchnorrComputePublicKeyResponse, toSchnorrConstructSignatureResponse, toSchnorrVerifySignatureResponse, toSecp256k1GetRandomFrResponse, toSecp256k1MulResponse, toSecp256k1Reduce512Response, toShutdownResponse, toSrsInitGrumpkinSrsResponse, toSrsInitSrsResponse, toVkAsFieldsResponse } from './api_types.js';
|
|
7
7
|
|
|
8
8
|
async function msgpackCall(backend: IMsgpackBackendAsync, input: any[]) {
|
|
9
9
|
const inputBuffer = new Encoder({ useRecords: false }).pack(input);
|
|
@@ -66,29 +66,16 @@ export class AsyncApi implements BbApiBase {
|
|
|
66
66
|
});
|
|
67
67
|
}
|
|
68
68
|
|
|
69
|
-
|
|
70
|
-
const msgpackCommand =
|
|
71
|
-
return msgpackCall(this.backend, [["
|
|
69
|
+
chonkComputeVk(command: ChonkComputeVk): Promise<ChonkComputeVkResponse> {
|
|
70
|
+
const msgpackCommand = fromChonkComputeVk(command);
|
|
71
|
+
return msgpackCall(this.backend, [["ChonkComputeVk", msgpackCommand]]).then(([variantName, result]: [string, any]) => {
|
|
72
72
|
if (variantName === 'ErrorResponse') {
|
|
73
73
|
throw new BBApiException(result.message || 'Unknown error from barretenberg');
|
|
74
74
|
}
|
|
75
|
-
if (variantName !== '
|
|
76
|
-
throw new BBApiException(`Expected variant name '
|
|
75
|
+
if (variantName !== 'ChonkComputeVkResponse') {
|
|
76
|
+
throw new BBApiException(`Expected variant name 'ChonkComputeVkResponse' but got '${variantName}'`);
|
|
77
77
|
}
|
|
78
|
-
return
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
chonkComputeIvcVk(command: ChonkComputeIvcVk): Promise<ChonkComputeIvcVkResponse> {
|
|
83
|
-
const msgpackCommand = fromChonkComputeIvcVk(command);
|
|
84
|
-
return msgpackCall(this.backend, [["ChonkComputeIvcVk", msgpackCommand]]).then(([variantName, result]: [string, any]) => {
|
|
85
|
-
if (variantName === 'ErrorResponse') {
|
|
86
|
-
throw new BBApiException(result.message || 'Unknown error from barretenberg');
|
|
87
|
-
}
|
|
88
|
-
if (variantName !== 'ChonkComputeIvcVkResponse') {
|
|
89
|
-
throw new BBApiException(`Expected variant name 'ChonkComputeIvcVkResponse' but got '${variantName}'`);
|
|
90
|
-
}
|
|
91
|
-
return toChonkComputeIvcVkResponse(result);
|
|
78
|
+
return toChonkComputeVkResponse(result);
|
|
92
79
|
});
|
|
93
80
|
}
|
|
94
81
|
|
|
@@ -248,19 +235,6 @@ export class AsyncApi implements BbApiBase {
|
|
|
248
235
|
});
|
|
249
236
|
}
|
|
250
237
|
|
|
251
|
-
poseidon2HashAccumulate(command: Poseidon2HashAccumulate): Promise<Poseidon2HashAccumulateResponse> {
|
|
252
|
-
const msgpackCommand = fromPoseidon2HashAccumulate(command);
|
|
253
|
-
return msgpackCall(this.backend, [["Poseidon2HashAccumulate", msgpackCommand]]).then(([variantName, result]: [string, any]) => {
|
|
254
|
-
if (variantName === 'ErrorResponse') {
|
|
255
|
-
throw new BBApiException(result.message || 'Unknown error from barretenberg');
|
|
256
|
-
}
|
|
257
|
-
if (variantName !== 'Poseidon2HashAccumulateResponse') {
|
|
258
|
-
throw new BBApiException(`Expected variant name 'Poseidon2HashAccumulateResponse' but got '${variantName}'`);
|
|
259
|
-
}
|
|
260
|
-
return toPoseidon2HashAccumulateResponse(result);
|
|
261
|
-
});
|
|
262
|
-
}
|
|
263
|
-
|
|
264
238
|
pedersenCommit(command: PedersenCommit): Promise<PedersenCommitResponse> {
|
|
265
239
|
const msgpackCommand = fromPedersenCommit(command);
|
|
266
240
|
return msgpackCall(this.backend, [["PedersenCommit", msgpackCommand]]).then(([variantName, result]: [string, any]) => {
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import { IMsgpackBackendSync } from '../../bb_backends/interface.js';
|
|
4
4
|
import { Decoder, Encoder } from 'msgpackr';
|
|
5
5
|
import { BBApiException } from '../../bbapi_exception.js';
|
|
6
|
-
import { AesDecrypt, AesDecryptResponse, AesEncrypt, AesEncryptResponse, BbApiBase, Blake2s, Blake2sResponse, Blake2sToField, Blake2sToFieldResponse, Bn254FqSqrt, Bn254FqSqrtResponse, Bn254FrSqrt, Bn254FrSqrtResponse, Bn254G1FromCompressed, Bn254G1FromCompressedResponse, Bn254G1IsOnCurve, Bn254G1IsOnCurveResponse, Bn254G1Mul, Bn254G1MulResponse, Bn254G2Mul, Bn254G2MulResponse, ChonkAccumulate, ChonkAccumulateResponse, ChonkCheckPrecomputedVk, ChonkCheckPrecomputedVkResponse,
|
|
6
|
+
import { AesDecrypt, AesDecryptResponse, AesEncrypt, AesEncryptResponse, BbApiBase, Blake2s, Blake2sResponse, Blake2sToField, Blake2sToFieldResponse, Bn254FqSqrt, Bn254FqSqrtResponse, Bn254FrSqrt, Bn254FrSqrtResponse, Bn254G1FromCompressed, Bn254G1FromCompressedResponse, Bn254G1IsOnCurve, Bn254G1IsOnCurveResponse, Bn254G1Mul, Bn254G1MulResponse, Bn254G2Mul, Bn254G2MulResponse, ChonkAccumulate, ChonkAccumulateResponse, ChonkCheckPrecomputedVk, ChonkCheckPrecomputedVkResponse, ChonkComputeVk, ChonkComputeVkResponse, ChonkLoad, ChonkLoadResponse, ChonkProve, ChonkProveResponse, ChonkStart, ChonkStartResponse, ChonkStats, ChonkStatsResponse, ChonkVerify, ChonkVerifyResponse, CircuitComputeVk, CircuitComputeVkResponse, CircuitInfoResponse, CircuitProve, CircuitProveResponse, CircuitStats, CircuitVerify, CircuitVerifyResponse, CircuitWriteSolidityVerifier, CircuitWriteSolidityVerifierResponse, EcdsaSecp256k1ComputePublicKey, EcdsaSecp256k1ComputePublicKeyResponse, EcdsaSecp256k1ConstructSignature, EcdsaSecp256k1ConstructSignatureResponse, EcdsaSecp256k1RecoverPublicKey, EcdsaSecp256k1RecoverPublicKeyResponse, EcdsaSecp256k1VerifySignature, EcdsaSecp256k1VerifySignatureResponse, EcdsaSecp256r1ComputePublicKey, EcdsaSecp256r1ComputePublicKeyResponse, EcdsaSecp256r1ConstructSignature, EcdsaSecp256r1ConstructSignatureResponse, EcdsaSecp256r1RecoverPublicKey, EcdsaSecp256r1RecoverPublicKeyResponse, EcdsaSecp256r1VerifySignature, EcdsaSecp256r1VerifySignatureResponse, GrumpkinAdd, GrumpkinAddResponse, GrumpkinBatchMul, GrumpkinBatchMulResponse, GrumpkinGetRandomFr, GrumpkinGetRandomFrResponse, GrumpkinMul, GrumpkinMulResponse, GrumpkinReduce512, GrumpkinReduce512Response, MegaVkAsFields, MegaVkAsFieldsResponse, PedersenCommit, PedersenCommitResponse, PedersenHash, PedersenHashBuffer, PedersenHashBufferResponse, PedersenHashResponse, Poseidon2Hash, Poseidon2HashResponse, Poseidon2Permutation, Poseidon2PermutationResponse, SchnorrComputePublicKey, SchnorrComputePublicKeyResponse, SchnorrConstructSignature, SchnorrConstructSignatureResponse, SchnorrVerifySignature, SchnorrVerifySignatureResponse, Secp256k1GetRandomFr, Secp256k1GetRandomFrResponse, Secp256k1Mul, Secp256k1MulResponse, Secp256k1Reduce512, Secp256k1Reduce512Response, Shutdown, ShutdownResponse, SrsInitGrumpkinSrs, SrsInitGrumpkinSrsResponse, SrsInitSrs, SrsInitSrsResponse, VkAsFields, VkAsFieldsResponse, fromAesDecrypt, fromAesEncrypt, fromBlake2s, fromBlake2sToField, fromBn254FqSqrt, fromBn254FrSqrt, fromBn254G1FromCompressed, fromBn254G1IsOnCurve, fromBn254G1Mul, fromBn254G2Mul, fromChonkAccumulate, fromChonkCheckPrecomputedVk, fromChonkComputeVk, fromChonkLoad, fromChonkProve, fromChonkStart, fromChonkStats, fromChonkVerify, fromCircuitComputeVk, fromCircuitProve, fromCircuitStats, fromCircuitVerify, fromCircuitWriteSolidityVerifier, fromEcdsaSecp256k1ComputePublicKey, fromEcdsaSecp256k1ConstructSignature, fromEcdsaSecp256k1RecoverPublicKey, fromEcdsaSecp256k1VerifySignature, fromEcdsaSecp256r1ComputePublicKey, fromEcdsaSecp256r1ConstructSignature, fromEcdsaSecp256r1RecoverPublicKey, fromEcdsaSecp256r1VerifySignature, fromGrumpkinAdd, fromGrumpkinBatchMul, fromGrumpkinGetRandomFr, fromGrumpkinMul, fromGrumpkinReduce512, fromMegaVkAsFields, fromPedersenCommit, fromPedersenHash, fromPedersenHashBuffer, fromPoseidon2Hash, fromPoseidon2Permutation, fromSchnorrComputePublicKey, fromSchnorrConstructSignature, fromSchnorrVerifySignature, fromSecp256k1GetRandomFr, fromSecp256k1Mul, fromSecp256k1Reduce512, fromShutdown, fromSrsInitGrumpkinSrs, fromSrsInitSrs, fromVkAsFields, toAesDecryptResponse, toAesEncryptResponse, toBlake2sResponse, toBlake2sToFieldResponse, toBn254FqSqrtResponse, toBn254FrSqrtResponse, toBn254G1FromCompressedResponse, toBn254G1IsOnCurveResponse, toBn254G1MulResponse, toBn254G2MulResponse, toChonkAccumulateResponse, toChonkCheckPrecomputedVkResponse, toChonkComputeVkResponse, toChonkLoadResponse, toChonkProveResponse, toChonkStartResponse, toChonkStatsResponse, toChonkVerifyResponse, toCircuitComputeVkResponse, toCircuitInfoResponse, toCircuitProveResponse, toCircuitVerifyResponse, toCircuitWriteSolidityVerifierResponse, toEcdsaSecp256k1ComputePublicKeyResponse, toEcdsaSecp256k1ConstructSignatureResponse, toEcdsaSecp256k1RecoverPublicKeyResponse, toEcdsaSecp256k1VerifySignatureResponse, toEcdsaSecp256r1ComputePublicKeyResponse, toEcdsaSecp256r1ConstructSignatureResponse, toEcdsaSecp256r1RecoverPublicKeyResponse, toEcdsaSecp256r1VerifySignatureResponse, toGrumpkinAddResponse, toGrumpkinBatchMulResponse, toGrumpkinGetRandomFrResponse, toGrumpkinMulResponse, toGrumpkinReduce512Response, toMegaVkAsFieldsResponse, toPedersenCommitResponse, toPedersenHashBufferResponse, toPedersenHashResponse, toPoseidon2HashResponse, toPoseidon2PermutationResponse, toSchnorrComputePublicKeyResponse, toSchnorrConstructSignatureResponse, toSchnorrVerifySignatureResponse, toSecp256k1GetRandomFrResponse, toSecp256k1MulResponse, toSecp256k1Reduce512Response, toShutdownResponse, toSrsInitGrumpkinSrsResponse, toSrsInitSrsResponse, toVkAsFieldsResponse } from './api_types.js';
|
|
7
7
|
|
|
8
8
|
function msgpackCall(backend: IMsgpackBackendSync, input: any[]) {
|
|
9
9
|
const inputBuffer = new Encoder({ useRecords: false }).pack(input);
|
|
@@ -62,28 +62,16 @@ export class SyncApi {
|
|
|
62
62
|
return toCircuitVerifyResponse(result);
|
|
63
63
|
}
|
|
64
64
|
|
|
65
|
-
|
|
66
|
-
const msgpackCommand =
|
|
67
|
-
const [variantName, result] = msgpackCall(this.backend, [["
|
|
65
|
+
chonkComputeVk(command: ChonkComputeVk): ChonkComputeVkResponse {
|
|
66
|
+
const msgpackCommand = fromChonkComputeVk(command);
|
|
67
|
+
const [variantName, result] = msgpackCall(this.backend, [["ChonkComputeVk", msgpackCommand]]);
|
|
68
68
|
if (variantName === 'ErrorResponse') {
|
|
69
69
|
throw new BBApiException(result.message || 'Unknown error from barretenberg');
|
|
70
70
|
}
|
|
71
|
-
if (variantName !== '
|
|
72
|
-
throw new BBApiException(`Expected variant name '
|
|
71
|
+
if (variantName !== 'ChonkComputeVkResponse') {
|
|
72
|
+
throw new BBApiException(`Expected variant name 'ChonkComputeVkResponse' but got '${variantName}'`);
|
|
73
73
|
}
|
|
74
|
-
return
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
chonkComputeIvcVk(command: ChonkComputeIvcVk): ChonkComputeIvcVkResponse {
|
|
78
|
-
const msgpackCommand = fromChonkComputeIvcVk(command);
|
|
79
|
-
const [variantName, result] = msgpackCall(this.backend, [["ChonkComputeIvcVk", msgpackCommand]]);
|
|
80
|
-
if (variantName === 'ErrorResponse') {
|
|
81
|
-
throw new BBApiException(result.message || 'Unknown error from barretenberg');
|
|
82
|
-
}
|
|
83
|
-
if (variantName !== 'ChonkComputeIvcVkResponse') {
|
|
84
|
-
throw new BBApiException(`Expected variant name 'ChonkComputeIvcVkResponse' but got '${variantName}'`);
|
|
85
|
-
}
|
|
86
|
-
return toChonkComputeIvcVkResponse(result);
|
|
74
|
+
return toChonkComputeVkResponse(result);
|
|
87
75
|
}
|
|
88
76
|
|
|
89
77
|
chonkStart(command: ChonkStart): ChonkStartResponse {
|
|
@@ -230,18 +218,6 @@ export class SyncApi {
|
|
|
230
218
|
return toPoseidon2PermutationResponse(result);
|
|
231
219
|
}
|
|
232
220
|
|
|
233
|
-
poseidon2HashAccumulate(command: Poseidon2HashAccumulate): Poseidon2HashAccumulateResponse {
|
|
234
|
-
const msgpackCommand = fromPoseidon2HashAccumulate(command);
|
|
235
|
-
const [variantName, result] = msgpackCall(this.backend, [["Poseidon2HashAccumulate", msgpackCommand]]);
|
|
236
|
-
if (variantName === 'ErrorResponse') {
|
|
237
|
-
throw new BBApiException(result.message || 'Unknown error from barretenberg');
|
|
238
|
-
}
|
|
239
|
-
if (variantName !== 'Poseidon2HashAccumulateResponse') {
|
|
240
|
-
throw new BBApiException(`Expected variant name 'Poseidon2HashAccumulateResponse' but got '${variantName}'`);
|
|
241
|
-
}
|
|
242
|
-
return toPoseidon2HashAccumulateResponse(result);
|
|
243
|
-
}
|
|
244
|
-
|
|
245
221
|
pedersenCommit(command: PedersenCommit): PedersenCommitResponse {
|
|
246
222
|
const msgpackCommand = fromPedersenCommit(command);
|
|
247
223
|
const [variantName, result] = msgpackCall(this.backend, [["PedersenCommit", msgpackCommand]]);
|
|
@@ -58,6 +58,11 @@ export class RustCodegen {
|
|
|
58
58
|
return type.kind === 'vector' && this.needsSerdeBytes(type.element!);
|
|
59
59
|
}
|
|
60
60
|
|
|
61
|
+
// Check if field needs serde(with = "serde_array4_bytes") - for [Vec<u8>; 4] (Poseidon2 state)
|
|
62
|
+
private needsSerdeArray4Bytes(type: Type): boolean {
|
|
63
|
+
return type.kind === 'array' && type.size === 4 && this.needsSerdeBytes(type.element!);
|
|
64
|
+
}
|
|
65
|
+
|
|
61
66
|
// Generate struct field
|
|
62
67
|
private generateField(field: Field): string {
|
|
63
68
|
const rustName = toSnakeCase(field.name);
|
|
@@ -70,7 +75,9 @@ export class RustCodegen {
|
|
|
70
75
|
}
|
|
71
76
|
|
|
72
77
|
// Add serde bytes handling
|
|
73
|
-
if (this.
|
|
78
|
+
if (this.needsSerdeArray4Bytes(field.type)) {
|
|
79
|
+
attrs += ` #[serde(with = "serde_array4_bytes")]\n`;
|
|
80
|
+
} else if (this.needsSerdeVecBytes(field.type)) {
|
|
74
81
|
attrs += ` #[serde(with = "serde_vec_bytes")]\n`;
|
|
75
82
|
} else if (this.needsSerdeBytes(field.type)) {
|
|
76
83
|
attrs += ` #[serde(with = "serde_bytes")]\n`;
|
|
@@ -331,6 +338,44 @@ mod serde_vec_bytes {
|
|
|
331
338
|
}
|
|
332
339
|
deserializer.deserialize_seq(VecVecU8Visitor)
|
|
333
340
|
}
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
mod serde_array4_bytes {
|
|
344
|
+
use serde::{Deserialize, Deserializer, Serialize, Serializer};
|
|
345
|
+
use serde::ser::SerializeTuple;
|
|
346
|
+
use serde::de::{SeqAccess, Visitor};
|
|
347
|
+
|
|
348
|
+
#[derive(Serialize, Deserialize)]
|
|
349
|
+
struct BytesWrapper(#[serde(with = "super::serde_bytes")] Vec<u8>);
|
|
350
|
+
|
|
351
|
+
pub fn serialize<S>(arr: &[Vec<u8>; 4], serializer: S) -> Result<S::Ok, S::Error>
|
|
352
|
+
where S: Serializer {
|
|
353
|
+
let mut tup = serializer.serialize_tuple(4)?;
|
|
354
|
+
for bytes in arr {
|
|
355
|
+
tup.serialize_element(&BytesWrapper(bytes.clone()))?;
|
|
356
|
+
}
|
|
357
|
+
tup.end()
|
|
358
|
+
}
|
|
359
|
+
pub fn deserialize<'de, D>(deserializer: D) -> Result<[Vec<u8>; 4], D::Error>
|
|
360
|
+
where D: Deserializer<'de> {
|
|
361
|
+
struct Array4Visitor;
|
|
362
|
+
impl<'de> Visitor<'de> for Array4Visitor {
|
|
363
|
+
type Value = [Vec<u8>; 4];
|
|
364
|
+
fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
|
|
365
|
+
formatter.write_str("an array of 4 byte arrays")
|
|
366
|
+
}
|
|
367
|
+
fn visit_seq<A>(self, mut seq: A) -> Result<Self::Value, A::Error>
|
|
368
|
+
where A: SeqAccess<'de> {
|
|
369
|
+
let mut arr: [Vec<u8>; 4] = Default::default();
|
|
370
|
+
for (i, item) in arr.iter_mut().enumerate() {
|
|
371
|
+
*item = seq.next_element::<BytesWrapper>()?
|
|
372
|
+
.ok_or_else(|| serde::de::Error::invalid_length(i, &self))?.0;
|
|
373
|
+
}
|
|
374
|
+
Ok(arr)
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
deserializer.deserialize_tuple(4, Array4Visitor)
|
|
378
|
+
}
|
|
334
379
|
}`;
|
|
335
380
|
}
|
|
336
381
|
|