error_chain!{
errors {
Init(stage: InitStage) {
description("an error occurred during initialization")
display("initialization failed at {:?} stage", stage)
}
Prereq(prereq: Prerequisite) {
description("a required argument was not provided to the builder")
display("missing prerequisite: {:?}", prereq)
}
State(state_problem: StateProblem) {
description("invalid state error")
display("state error of type {:?}", state_problem)
}
Input
Decrypt
}
}
#[derive(Debug)]
pub enum InitStage {
ValidateKeyLengths, ValidatePskLengths, ValidateCipherTypes,
GetRngImpl, GetDhImpl, GetCipherImpl, GetHashImpl
}
#[derive(Debug)]
pub enum Prerequisite {
LocalPrivateKey, RemotePublicKey
}
#[derive(Debug)]
pub enum StateProblem {
MissingKeyMaterial, MissingPsk, NotTurnToWrite, NotTurnToRead,
HandshakeNotFinished, HandshakeAlreadyFinished, OneWay
}