Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2db14d0e authored by Jeffrey Vander Stoep's avatar Jeffrey Vander Stoep Committed by Automerger Merge Worker
Browse files
parents c060d175 5e544436
Loading
Loading
Loading
Loading
+4 −2
Original line number Original line Diff line number Diff line
@@ -17,6 +17,7 @@
//! Format DoH requests
//! Format DoH requests


use anyhow::{anyhow, Context, Result};
use anyhow::{anyhow, Context, Result};
use base64::{prelude::BASE64_URL_SAFE_NO_PAD, Engine};
use quiche::h3;
use quiche::h3;
use ring::rand::SecureRandom;
use ring::rand::SecureRandom;
use url::Url;
use url::Url;
@@ -53,7 +54,7 @@ pub fn probe_query() -> Result<String> {
        0,      NS_T_AAAA,  // QTYPE
        0,      NS_T_AAAA,  // QTYPE
        0,      NS_C_IN     // QCLASS
        0,      NS_C_IN     // QCLASS
    ];
    ];
    Ok(base64::encode_config(query, base64::URL_SAFE_NO_PAD))
    Ok(BASE64_URL_SAFE_NO_PAD.encode(query))
}
}


/// Takes in a base64-encoded copy of a traditional DNS request and a
/// Takes in a base64-encoded copy of a traditional DNS request and a
@@ -80,6 +81,7 @@ pub fn dns_request(base64_query: &str, url: &Url) -> Result<DnsRequest> {


#[cfg(test)]
#[cfg(test)]
mod tests {
mod tests {
    use base64::{prelude::BASE64_URL_SAFE_NO_PAD, Engine};
    use quiche::h3::NameValue;
    use quiche::h3::NameValue;
    use url::Url;
    use url::Url;


@@ -109,7 +111,7 @@ mod tests {
        assert_eq!(request[5].value(), b"application/dns-message");
        assert_eq!(request[5].value(), b"application/dns-message");


        // Verify DNS probe packet.
        // Verify DNS probe packet.
        let bytes = base64::decode_config(probe_query, base64::URL_SAFE_NO_PAD).unwrap();
        let bytes = BASE64_URL_SAFE_NO_PAD.decode(probe_query).unwrap();
        assert_eq!(bytes.len(), PROBE_QUERY_SIZE);
        assert_eq!(bytes.len(), PROBE_QUERY_SIZE);
    }
    }
}
}
+2 −1
Original line number Original line Diff line number Diff line
@@ -19,6 +19,7 @@
use crate::boot_time::{timeout, BootTime, Duration};
use crate::boot_time::{timeout, BootTime, Duration};
use crate::dispatcher::{Command, Dispatcher, Response, ServerInfo};
use crate::dispatcher::{Command, Dispatcher, Response, ServerInfo};
use crate::network::{SocketTagger, ValidationReporter};
use crate::network::{SocketTagger, ValidationReporter};
use base64::{prelude::BASE64_URL_SAFE_NO_PAD, Engine};
use futures::FutureExt;
use futures::FutureExt;
use libc::{c_char, int32_t, size_t, ssize_t, uint32_t, uint64_t};
use libc::{c_char, int32_t, size_t, ssize_t, uint32_t, uint64_t};
use log::{error, warn};
use log::{error, warn};
@@ -270,7 +271,7 @@ pub unsafe extern "C" fn doh_query(
    if let Some(expired_time) = BootTime::now().checked_add(t) {
    if let Some(expired_time) = BootTime::now().checked_add(t) {
        let cmd = Command::Query {
        let cmd = Command::Query {
            net_id,
            net_id,
            base64_query: base64::encode_config(q, base64::URL_SAFE_NO_PAD),
            base64_query: BASE64_URL_SAFE_NO_PAD.encode(q),
            expired_time,
            expired_time,
            resp: resp_tx,
            resp: resp_tx,
        };
        };
+2 −1
Original line number Original line Diff line number Diff line
@@ -17,6 +17,7 @@
//! Client management, including the communication with quiche I/O.
//! Client management, including the communication with quiche I/O.


use anyhow::{anyhow, bail, ensure, Result};
use anyhow::{anyhow, bail, ensure, Result};
use base64::{prelude::BASE64_URL_SAFE_NO_PAD, Engine};
use log::{debug, error, info, warn};
use log::{debug, error, info, warn};
use quiche::h3::NameValue;
use quiche::h3::NameValue;
use std::collections::{hash_map, HashMap};
use std::collections::{hash_map, HashMap};
@@ -99,7 +100,7 @@ impl Client {
                        e.name() == b":path" && e.value().starts_with(URL_PATH_PREFIX.as_bytes())
                        e.name() == b":path" && e.value().starts_with(URL_PATH_PREFIX.as_bytes())
                    }) {
                    }) {
                        let b64url_query = &target.value()[URL_PATH_PREFIX.len()..];
                        let b64url_query = &target.value()[URL_PATH_PREFIX.len()..];
                        let decoded = base64::decode_config(b64url_query, base64::URL_SAFE_NO_PAD)?;
                        let decoded = BASE64_URL_SAFE_NO_PAD.decode(b64url_query)?;
                        self.in_flight_queries.insert([decoded[0], decoded[1]], stream_id);
                        self.in_flight_queries.insert([decoded[0], decoded[1]], stream_id);
                        ret = decoded;
                        ret = decoded;
                    }
                    }