use std::io;
use thiserror::Error;
#[derive(Error, Debug)]
pub enum HandshakeError {
#[error("First byte of the handshake did not start with a 3")]
BadVersionId,
#[error("Packet 1's 2nd time field was expected to be empty, but wasn't")]
NonZeroedTimeInPacket1,
#[error("Peer did not send the correct time back")]
IncorrectPeerTime,
#[error("Peer did not send the correct random data back")]
IncorrectRandomData,
#[error("Attempted to continue handshake process after completing handshake")]
HandshakeAlreadyCompleted,
#[error("No known message format could be determined from the received packet 1")]
UnknownPacket1Format,
#[error("Invalid handshake packet 2 received")]
InvalidP2Packet,
#[error("_0")]
Io(#[from] io::Error),
}