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

Commit 8667ff4d authored by Mike Yu's avatar Mike Yu
Browse files

Use base64 0.21.0

Bug: 268206364
Test: atest
Test: browsed some websites, verified DoH worked with dns.google,
      dns64.dns.google, and cloudflare-dns.com
Change-Id: I83799c36a1028564468b2335940a20659955fe21
Merged-In: I83799c36a1028564468b2335940a20659955fe21
parent 16b4e163
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
//! Format DoH requests

use anyhow::{anyhow, Context, Result};
use base64::{prelude::BASE64_URL_SAFE_NO_PAD, Engine};
use quiche::h3;
use ring::rand::SecureRandom;
use url::Url;
@@ -53,7 +54,7 @@ pub fn probe_query() -> Result<String> {
        0,      NS_T_AAAA,  // QTYPE
        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
@@ -80,6 +81,7 @@ pub fn dns_request(base64_query: &str, url: &Url) -> Result<DnsRequest> {

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

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

        // 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);
    }
}
+2 −1
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@
use crate::boot_time::{timeout, BootTime, Duration};
use crate::dispatcher::{Command, Dispatcher, Response, ServerInfo};
use crate::network::{SocketTagger, ValidationReporter};
use base64::{prelude::BASE64_URL_SAFE_NO_PAD, Engine};
use futures::FutureExt;
use libc::{c_char, int32_t, size_t, ssize_t, uint32_t, uint64_t};
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) {
        let cmd = Command::Query {
            net_id,
            base64_query: base64::encode_config(q, base64::URL_SAFE_NO_PAD),
            base64_query: BASE64_URL_SAFE_NO_PAD.encode(q),
            expired_time,
            resp: resp_tx,
        };
+2 −1
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
//! Client management, including the communication with quiche I/O.

use anyhow::{anyhow, bail, ensure, Result};
use base64::{prelude::BASE64_URL_SAFE_NO_PAD, Engine};
use log::{debug, error, info, warn};
use quiche::h3::NameValue;
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())
                    }) {
                        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);
                        ret = decoded;
                    }