sunset/
auth.rs

1#[allow(unused_imports)]
2use {
3    crate::error::{Error, Result, TrapBug},
4    log::{debug, error, info, log, trace, warn},
5};
6
7use crate::*;
8use kex::SessId;
9use sshwire::{BinString, SSHEncode, WireResult};
10
11/// The message to be signed in a pubkey authentication message,
12/// RFC4252 Section 7.
13#[derive(Debug)]
14pub struct AuthSigMsg<'a> {
15    pub(crate) sess_id: BinString<'a>,
16    pub(crate) u: packets::UserauthRequest<'a>,
17}
18
19impl SSHEncode for AuthSigMsg<'_> {
20    fn enc(&self, s: &mut dyn sshwire::SSHSink) -> WireResult<()> {
21        self.sess_id.enc(s)?;
22
23        let m = packets::MessageNumber::SSH_MSG_USERAUTH_REQUEST as u8;
24        m.enc(s)?;
25
26        self.u.enc(s)?;
27        Ok(())
28    }
29}
30
31impl<'a> AuthSigMsg<'a> {
32    pub(crate) fn new(u: packets::UserauthRequest<'a>, sess_id: &'a SessId) -> Self {
33        auth::AuthSigMsg { sess_id: BinString(sess_id.as_ref()), u }
34    }
35}
36
37#[derive(Clone, Debug)]
38pub enum AuthType {
39    Password,
40    PubKey,
41}