tiberius/tds/codec/token/
token_sspi.rs
1use crate::{sql_read_bytes::SqlReadBytes, tds::codec::Encode};
2use bytes::BytesMut;
3use futures_util::io::AsyncReadExt;
4
5#[derive(Debug)]
6pub struct TokenSspi(Vec<u8>);
7
8impl AsRef<[u8]> for TokenSspi {
9 fn as_ref(&self) -> &[u8] {
10 self.0.as_ref()
11 }
12}
13
14impl TokenSspi {
15 #[cfg(any(windows, all(unix, feature = "integrated-auth-gssapi")))]
16 pub fn new(bytes: Vec<u8>) -> Self {
17 Self(bytes)
18 }
19
20 pub(crate) async fn decode_async<R>(src: &mut R) -> crate::Result<Self>
21 where
22 R: SqlReadBytes + Unpin,
23 {
24 let len = src.read_u16_le().await? as usize;
25 let mut bytes = vec![0; len];
26 src.read_exact(&mut bytes[0..len]).await?;
27
28 Ok(Self(bytes))
29 }
30}
31
32impl Encode<BytesMut> for TokenSspi {
33 fn encode(self, dst: &mut BytesMut) -> crate::Result<()> {
34 dst.extend(self.0);
35 Ok(())
36 }
37}