switched to thiserror
This commit is contained in:
parent
559c761a3e
commit
97cab04188
75
dtrfs_api/Cargo.lock
generated
75
dtrfs_api/Cargo.lock
generated
@ -36,7 +36,7 @@ dependencies = [
|
|||||||
"brotli",
|
"brotli",
|
||||||
"bytes",
|
"bytes",
|
||||||
"bytestring",
|
"bytestring",
|
||||||
"derive_more 0.99.18",
|
"derive_more",
|
||||||
"encoding_rs",
|
"encoding_rs",
|
||||||
"flate2",
|
"flate2",
|
||||||
"futures-core",
|
"futures-core",
|
||||||
@ -172,7 +172,7 @@ dependencies = [
|
|||||||
"bytestring",
|
"bytestring",
|
||||||
"cfg-if",
|
"cfg-if",
|
||||||
"cookie",
|
"cookie",
|
||||||
"derive_more 0.99.18",
|
"derive_more",
|
||||||
"encoding_rs",
|
"encoding_rs",
|
||||||
"futures-core",
|
"futures-core",
|
||||||
"futures-util",
|
"futures-util",
|
||||||
@ -488,15 +488,6 @@ version = "0.4.0"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e"
|
checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "convert_case"
|
|
||||||
version = "0.6.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca"
|
|
||||||
dependencies = [
|
|
||||||
"unicode-segmentation",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cookie"
|
name = "cookie"
|
||||||
version = "0.16.2"
|
version = "0.16.2"
|
||||||
@ -614,35 +605,13 @@ version = "0.99.18"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce"
|
checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"convert_case 0.4.0",
|
"convert_case",
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"rustc_version",
|
"rustc_version",
|
||||||
"syn",
|
"syn",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "derive_more"
|
|
||||||
version = "1.0.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05"
|
|
||||||
dependencies = [
|
|
||||||
"derive_more-impl",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "derive_more-impl"
|
|
||||||
version = "1.0.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22"
|
|
||||||
dependencies = [
|
|
||||||
"convert_case 0.6.0",
|
|
||||||
"proc-macro2",
|
|
||||||
"quote",
|
|
||||||
"syn",
|
|
||||||
"unicode-xid",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "digest"
|
name = "digest"
|
||||||
version = "0.10.7"
|
version = "0.10.7"
|
||||||
@ -694,7 +663,6 @@ dependencies = [
|
|||||||
"actix-web",
|
"actix-web",
|
||||||
"base64",
|
"base64",
|
||||||
"bincode",
|
"bincode",
|
||||||
"derive_more 1.0.0",
|
|
||||||
"ed25519-dalek",
|
"ed25519-dalek",
|
||||||
"lazy_static",
|
"lazy_static",
|
||||||
"regex",
|
"regex",
|
||||||
@ -703,6 +671,7 @@ dependencies = [
|
|||||||
"serde",
|
"serde",
|
||||||
"sev",
|
"sev",
|
||||||
"sha3",
|
"sha3",
|
||||||
|
"thiserror 2.0.10",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -1626,7 +1595,7 @@ checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"getrandom",
|
"getrandom",
|
||||||
"libredox",
|
"libredox",
|
||||||
"thiserror",
|
"thiserror 1.0.69",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -2051,7 +2020,16 @@ version = "1.0.69"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
|
checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"thiserror-impl",
|
"thiserror-impl 1.0.69",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "thiserror"
|
||||||
|
version = "2.0.10"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "a3ac7f54ca534db81081ef1c1e7f6ea8a3ef428d2fc069097c079443d24124d3"
|
||||||
|
dependencies = [
|
||||||
|
"thiserror-impl 2.0.10",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -2065,6 +2043,17 @@ dependencies = [
|
|||||||
"syn",
|
"syn",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "thiserror-impl"
|
||||||
|
version = "2.0.10"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "9e9465d30713b56a37ede7185763c3492a91be2f5fa68d958c44e41ab9248beb"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"syn",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "time"
|
name = "time"
|
||||||
version = "0.3.36"
|
version = "0.3.36"
|
||||||
@ -2200,18 +2189,6 @@ version = "1.0.14"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83"
|
checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "unicode-segmentation"
|
|
||||||
version = "1.12.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "unicode-xid"
|
|
||||||
version = "0.2.6"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "untrusted"
|
name = "untrusted"
|
||||||
version = "0.9.0"
|
version = "0.9.0"
|
||||||
|
@ -6,7 +6,7 @@ edition = "2021"
|
|||||||
[dependencies]
|
[dependencies]
|
||||||
base64 = "0.22.1"
|
base64 = "0.22.1"
|
||||||
bincode = "1.3.3"
|
bincode = "1.3.3"
|
||||||
derive_more = {version = "1.0.0", features = ["full"] }
|
thiserror = "2.0.10"
|
||||||
regex = "1.11.1"
|
regex = "1.11.1"
|
||||||
sev = { version = "4.0", default-features = false, features = ['crypto_nossl','snp'] }
|
sev = { version = "4.0", default-features = false, features = ['crypto_nossl','snp'] }
|
||||||
ed25519-dalek = { version = "2.1.1", features = ["pem", "pkcs8"] }
|
ed25519-dalek = { version = "2.1.1", features = ["pem", "pkcs8"] }
|
||||||
|
@ -4,7 +4,7 @@ mod snp;
|
|||||||
use crate::os::OsError;
|
use crate::os::OsError;
|
||||||
use actix_web::{get, post, web, App, Error, HttpRequest, HttpResponse, HttpServer, ResponseError};
|
use actix_web::{get, post, web, App, Error, HttpRequest, HttpResponse, HttpServer, ResponseError};
|
||||||
use base64::prelude::{Engine, BASE64_URL_SAFE};
|
use base64::prelude::{Engine, BASE64_URL_SAFE};
|
||||||
use derive_more::derive::{Display, Error, From};
|
use thiserror::Error;
|
||||||
use ed25519_dalek::{pkcs8::DecodePublicKey, Signature, Verifier, VerifyingKey};
|
use ed25519_dalek::{pkcs8::DecodePublicKey, Signature, Verifier, VerifyingKey};
|
||||||
use lazy_static::lazy_static;
|
use lazy_static::lazy_static;
|
||||||
use regex::Regex;
|
use regex::Regex;
|
||||||
@ -17,26 +17,26 @@ use std::{
|
|||||||
io::{BufReader, Read},
|
io::{BufReader, Read},
|
||||||
};
|
};
|
||||||
|
|
||||||
#[derive(Debug, Display, From, Error)]
|
#[derive(Debug, Error)]
|
||||||
pub enum DtrfsError {
|
pub enum DtrfsError {
|
||||||
#[display("OS error: {_0}")]
|
#[error("OS error: {0}")]
|
||||||
OsError(#[from] OsError),
|
OsError(#[from] OsError),
|
||||||
#[display("SNP error: {_0}")]
|
#[error("SNP error: {0}")]
|
||||||
SnpError(#[from] snp::SNPError),
|
SnpError(#[from] snp::SNPError),
|
||||||
#[display("Could not find admin key in cmdline")]
|
#[error("Could not find admin key in cmdline")]
|
||||||
AdminKeyNotFound,
|
AdminKeyNotFound,
|
||||||
#[display("Could not parse verifying key: {_0}")]
|
#[error("Could not parse verifying key: {0}")]
|
||||||
VerifyingKeyParsingError(ed25519_dalek::pkcs8::spki::Error),
|
VerifyingKeyParsingError(#[from] ed25519_dalek::pkcs8::spki::Error),
|
||||||
#[display("Could not get signature from request")]
|
#[error("Could not get signature from request")]
|
||||||
SignatureNotFound,
|
SignatureNotFound,
|
||||||
#[display("Base64 decoding error: {_0}")]
|
#[error("Base64 decoding error: {0}")]
|
||||||
Base64Error(base64::DecodeError),
|
Base64Error(#[from] base64::DecodeError),
|
||||||
#[display("IO error: {_0}")]
|
#[error("IO error: {0}")]
|
||||||
IoError(#[from] std::io::Error),
|
IoError(#[from] std::io::Error),
|
||||||
#[display("Error slicing into bytes: {_0}")]
|
#[error("Error slicing into bytes: {0}")]
|
||||||
SliceError(std::array::TryFromSliceError),
|
SliceError(#[from] std::array::TryFromSliceError),
|
||||||
#[display("Error verifying signature: {_0}")]
|
#[error("Error verifying signature: {0}")]
|
||||||
SignatureVerificationError(ed25519_dalek::SignatureError),
|
SignatureVerificationError(#[from] ed25519_dalek::SignatureError),
|
||||||
}
|
}
|
||||||
|
|
||||||
impl ResponseError for DtrfsError {
|
impl ResponseError for DtrfsError {
|
||||||
|
@ -3,7 +3,7 @@ use base64::{
|
|||||||
prelude::{Engine, BASE64_URL_SAFE},
|
prelude::{Engine, BASE64_URL_SAFE},
|
||||||
DecodeError,
|
DecodeError,
|
||||||
};
|
};
|
||||||
use derive_more::{Display, Error, From};
|
use thiserror::Error;
|
||||||
use std::{
|
use std::{
|
||||||
fs::File,
|
fs::File,
|
||||||
io::{self, BufRead, BufReader, Write},
|
io::{self, BufRead, BufReader, Write},
|
||||||
@ -12,31 +12,31 @@ use std::{
|
|||||||
string::FromUtf8Error,
|
string::FromUtf8Error,
|
||||||
};
|
};
|
||||||
|
|
||||||
#[derive(Debug, Display, Error, From)]
|
#[derive(Debug, Error)]
|
||||||
pub enum OsError {
|
pub enum OsError {
|
||||||
#[display(
|
#[error(
|
||||||
"OS installation script failed.\nScript stdout:\n{stdout}\nScript stderr:\n{stderr}"
|
"OS installation script failed.\nScript stdout:\n{stdout}\nScript stderr:\n{stderr}"
|
||||||
)]
|
)]
|
||||||
InstallationFailed { stdout: String, stderr: String },
|
InstallationFailed { stdout: String, stderr: String },
|
||||||
#[display("Could not decrypt disk.")]
|
#[error("Could not decrypt disk.")]
|
||||||
DecryptionFailed,
|
DecryptionFailed,
|
||||||
#[display("Could not mount /dev/mapper/root to /mnt")]
|
#[error("Could not mount /dev/mapper/root to /mnt")]
|
||||||
MountFailed,
|
MountFailed,
|
||||||
#[display("Could not try hot keyfile: {_0}")]
|
#[error("Could not try hot keyfile: {0}")]
|
||||||
TryHotKeyfileFailed(#[from] SNPError),
|
TryHotKeyfileFailed(#[from] SNPError),
|
||||||
#[display("Could not replace hot keyfile using SNP KDF.")]
|
#[error("Could not replace hot keyfile using SNP KDF.")]
|
||||||
ReplaceHotKeyfileFailed,
|
ReplaceHotKeyfileFailed,
|
||||||
#[display("Operating system not mounted. Please install OS or decrypt existing OS.")]
|
#[error("Operating system not mounted. Please install OS or decrypt existing OS.")]
|
||||||
OsNotMounted,
|
OsNotMounted,
|
||||||
#[display("Supplied key is expected to have at least two words.")]
|
#[error("Supplied key is expected to have at least two words.")]
|
||||||
InvalidSshKey,
|
InvalidSshKey,
|
||||||
#[display("authorized_keys already contains {err}")]
|
#[error("authorized_keys already contains {err}")]
|
||||||
SshKeyAlreadyExists { err: String },
|
SshKeyAlreadyExists { err: String },
|
||||||
#[display("I/O error: {_0}")]
|
#[error("I/O error: {0}")]
|
||||||
IoError(#[from] io::Error),
|
IoError(#[from] io::Error),
|
||||||
#[display("Base64 decoding error: {_0}")]
|
#[error("Base64 decoding error: {0}")]
|
||||||
Base64Error(#[from] DecodeError),
|
Base64Error(#[from] DecodeError),
|
||||||
#[display("UTF-8 conversion error: {_0}")]
|
#[error("UTF-8 conversion error: {0}")]
|
||||||
Utf8Error(#[from] FromUtf8Error),
|
Utf8Error(#[from] FromUtf8Error),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
use base64::prelude::{Engine, BASE64_URL_SAFE};
|
use base64::prelude::{Engine, BASE64_URL_SAFE};
|
||||||
use derive_more::{Display, Error, From};
|
use thiserror::Error;
|
||||||
use sev::error::UserApiError;
|
use sev::error::UserApiError;
|
||||||
use sev::firmware::guest::{AttestationReport, DerivedKey, Firmware, GuestFieldSelect};
|
use sev::firmware::guest::{AttestationReport, DerivedKey, Firmware, GuestFieldSelect};
|
||||||
|
|
||||||
#[derive(Debug, Display, From, Error)]
|
#[derive(Debug, Error)]
|
||||||
pub enum SNPError {
|
pub enum SNPError {
|
||||||
#[display("Could not parse the derived key: {_0}")]
|
#[error("Could not parse the derived key: {0}")]
|
||||||
KeyParsingError(#[from] std::num::ParseIntError),
|
KeyParsingError(#[from] std::num::ParseIntError),
|
||||||
#[display("authorized_keys already contains: {_0}")]
|
#[error("authorized_keys already contains: {0}")]
|
||||||
UserApiError(#[from] UserApiError),
|
UserApiError(#[from] UserApiError),
|
||||||
#[display("I/O error: {_0}")]
|
#[error("I/O error: {0}")]
|
||||||
FirmwareIOError(#[from] std::io::Error),
|
FirmwareIOError(#[from] std::io::Error),
|
||||||
#[display("bincode Base64 decoding error: {_0}")]
|
#[error("bincode Base64 decoding error: {0}")]
|
||||||
Base64Error(#[from] bincode::Error),
|
Base64Error(#[from] bincode::Error),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user