calimero_node_primitives/bundle/
mod.rs1mod signature;
2
3pub use signature::{
4 canonicalize_manifest, compute_bundle_hash, compute_signing_payload, decode_public_key,
5 decode_signature, derive_signer_id_did_key, format_bundle_hash, sign_manifest_json,
6 verify_ed25519, verify_manifest_signature, ManifestVerification,
7};
8
9use serde::{Deserialize, Serialize};
10
11#[derive(Clone, Debug, Deserialize, Serialize)]
13#[serde(rename_all = "camelCase")]
14pub struct BundleArtifact {
15 pub path: String,
16 pub hash: Option<String>,
17 pub size: u64,
18}
19
20#[derive(Clone, Debug, Deserialize, Serialize)]
22#[serde(rename_all = "camelCase")]
23pub struct BundleMetadata {
24 pub name: String,
25 pub description: Option<String>,
26 pub icon: Option<String>,
27 #[serde(default)]
28 pub tags: Vec<String>,
29 pub license: Option<String>,
30}
31
32#[derive(Clone, Debug, Default, Deserialize, Serialize)]
34#[serde(rename_all = "camelCase")]
35pub struct BundleInterfaces {
36 #[serde(default)]
37 pub exports: Vec<String>,
38 #[serde(default)]
39 pub uses: Vec<String>,
40}
41
42#[derive(Clone, Debug, Default, Deserialize, Serialize)]
44#[serde(rename_all = "camelCase")]
45pub struct BundleLinks {
46 pub frontend: Option<String>,
47 pub github: Option<String>,
48 pub docs: Option<String>,
49}
50
51#[derive(Clone, Debug, Deserialize, Serialize)]
55#[serde(rename_all = "camelCase")]
56pub struct BundleSignature {
57 pub algorithm: String,
59 pub public_key: String,
61 pub signature: String,
63 #[serde(skip_serializing_if = "Option::is_none")]
65 pub signed_at: Option<String>,
66}
67
68#[derive(Clone, Debug, Deserialize, Serialize)]
70#[serde(rename_all = "camelCase")]
71pub struct BundleManifest {
72 pub version: String,
73 pub package: String,
74 pub app_version: String,
75
76 #[serde(skip_serializing_if = "Option::is_none")]
85 pub signer_id: Option<String>,
86
87 pub min_runtime_version: String,
89
90 #[serde(default)]
91 pub metadata: Option<BundleMetadata>,
92
93 #[serde(default)]
94 pub interfaces: Option<BundleInterfaces>,
95
96 pub wasm: Option<BundleArtifact>,
97 pub abi: Option<BundleArtifact>,
98
99 #[serde(default)]
100 pub migrations: Vec<BundleArtifact>,
101
102 #[serde(default)]
103 pub links: Option<BundleLinks>,
104
105 #[serde(default)]
106 pub signature: Option<BundleSignature>,
107}