Skip to content

Commit 5c80beb

Browse files
mdtroTurbo87
authored andcommitted
update to base64 =0.21.1
- update base64 dependency - replace deprecated functions with new equivalents
1 parent cedc5c4 commit 5c80beb

File tree

7 files changed

+33
-24
lines changed

7 files changed

+33
-24
lines changed

crates_io_index/repo.rs

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
use crate::credentials::Credentials;
22
use anyhow::{anyhow, Context};
3+
use base64::{engine::general_purpose, Engine};
34
use secrecy::{ExposeSecret, SecretString};
45
use std::path::{Path, PathBuf};
56
use std::process::Command;
@@ -30,7 +31,8 @@ impl RepositoryConfig {
3031
let index_location =
3132
Url::parse(&ssh_url).expect("failed to parse GIT_SSH_REPO_URL");
3233

33-
let key = base64::decode(encoded_key.expose_secret())
34+
let key = general_purpose::STANDARD
35+
.decode(encoded_key.expose_secret())
3436
.expect("failed to base64 decode the ssh key");
3537
let key =
3638
String::from_utf8(key).expect("failed to convert the ssh key to a string");

crates_io_s3/lib.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#![warn(clippy::all, rust_2018_idioms)]
22

3+
use base64::{engine::general_purpose, Engine};
34
use chrono::prelude::Utc;
45
use hmac::{Hmac, Mac};
56
use reqwest::{
@@ -103,7 +104,7 @@ impl Bucket {
103104
let mut h = Hmac::<Sha1>::new_from_slice(key).expect("HMAC can take key of any size");
104105
h.update(string.as_bytes());
105106
let res = h.finalize().into_bytes();
106-
base64::encode(res)
107+
general_purpose::STANDARD.encode(res)
107108
};
108109
format!("AWS {}:{}", self.access_key, signature)
109110
}

src/controllers/github/secret_scanning.rs

+5-3
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use crate::schema::api_tokens;
55
use crate::util::token::SecureToken;
66
use anyhow::{anyhow, Context};
77
use axum::body::Bytes;
8-
use base64;
8+
use base64::{engine::general_purpose, Engine};
99
use http::HeaderMap;
1010
use once_cell::sync::Lazy;
1111
use parking_lot::Mutex;
@@ -58,7 +58,8 @@ fn key_from_spki(key: &GitHubPublicKey) -> Result<Vec<u8>, std::io::Error> {
5858
.find(PEM_FOOTER)
5959
.ok_or(std::io::ErrorKind::InvalidData)?;
6060
let gh_key = gh_key[..end_idx].replace('\n', "");
61-
let gh_key = base64::decode(gh_key)
61+
let gh_key = general_purpose::STANDARD
62+
.decode(gh_key)
6263
.map_err(|_| std::io::Error::from(std::io::ErrorKind::InvalidData))?;
6364
if gh_key.len() != 91 {
6465
return Err(std::io::Error::from(std::io::ErrorKind::InvalidData));
@@ -110,7 +111,8 @@ fn verify_github_signature(
110111
let sig = headers
111112
.get("GITHUB-PUBLIC-KEY-SIGNATURE")
112113
.ok_or_else(|| bad_request("missing HTTP header: GITHUB-PUBLIC-KEY-SIGNATURE"))?;
113-
let sig = base64::decode(sig)
114+
let sig = general_purpose::STANDARD
115+
.decode(sig)
114116
.map_err(|e| bad_request(&format!("failed to decode signature as base64: {e:?}")))?;
115117
let public_keys = get_public_keys(state)
116118
.map_err(|e| bad_request(&format!("failed to fetch GitHub public keys: {e:?}")))?;

src/controllers/helpers/pagination.rs

+5-8
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ use crate::models::helpers::with_count::*;
66
use crate::util::errors::{bad_request, AppResult};
77
use crate::util::HeaderMapExt;
88

9+
use base64::{engine::general_purpose, Engine};
910
use diesel::pg::Pg;
1011
use diesel::query_builder::*;
1112
use diesel::query_dsl::LoadQuery;
@@ -290,18 +291,14 @@ fn is_useragent_or_ip_blocked(config: &Server, headers: &HeaderMap) -> bool {
290291
/// technical measure to prevent API consumers for manually creating or modifying them, but
291292
/// hopefully the base64 will be enough to convey that doing it is unsupported.
292293
pub(crate) fn encode_seek<S: Serialize>(params: S) -> AppResult<String> {
293-
Ok(base64::encode_config(
294-
serde_json::to_vec(&params)?,
295-
base64::URL_SAFE_NO_PAD,
296-
))
294+
let encoded = general_purpose::URL_SAFE_NO_PAD.encode(serde_json::to_vec(&params)?);
295+
Ok(encoded)
297296
}
298297

299298
/// Decode a list of params previously encoded with [`encode_seek`].
300299
pub(crate) fn decode_seek<D: for<'a> Deserialize<'a>>(seek: &str) -> AppResult<D> {
301-
Ok(serde_json::from_slice(&base64::decode_config(
302-
seek,
303-
base64::URL_SAFE_NO_PAD,
304-
)?)?)
300+
let decoded = serde_json::from_slice(&general_purpose::URL_SAFE_NO_PAD.decode(seek)?)?;
301+
Ok(decoded)
305302
}
306303

307304
#[cfg(test)]

src/metrics/log_encoder.rs

+6-5
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use base64::write::EncoderWriter;
1+
use base64::{engine::general_purpose::STANDARD, write::EncoderWriter};
22
use indexmap::IndexMap;
33
use prometheus::proto::{MetricFamily, MetricType};
44
use prometheus::{Encoder, Error};
@@ -135,7 +135,7 @@ fn serialize_and_split_list<'a, S: Serialize + 'a>(
135135
while items.peek().is_some() {
136136
let mut writer = TrackedWriter::new();
137137
let written_count = writer.written_count.clone();
138-
let mut serializer = Serializer::new(EncoderWriter::new(&mut writer, base64::STANDARD));
138+
let mut serializer = Serializer::new(EncoderWriter::new(&mut writer, &STANDARD));
139139

140140
let mut seq = serializer.serialize_seq(None)?;
141141
#[allow(clippy::while_let_on_iterator)]
@@ -215,6 +215,7 @@ enum VectorMetricData {
215215
mod tests {
216216
use super::*;
217217
use anyhow::Error;
218+
use base64::{engine::general_purpose, Engine};
218219
use prometheus::{Histogram, HistogramOpts, IntCounter, IntGauge, IntGaugeVec, Opts, Registry};
219220

220221
#[test]
@@ -391,7 +392,7 @@ mod tests {
391392
assert_eq!(chunks.len(), 1);
392393
assert!(chunks[0].len() <= 256);
393394
assert_eq!(
394-
serde_json::from_slice::<Vec<usize>>(&base64::decode(&chunks[0])?)?,
395+
serde_json::from_slice::<Vec<usize>>(&general_purpose::STANDARD.decode(&chunks[0])?)?,
395396
small,
396397
);
397398

@@ -407,11 +408,11 @@ mod tests {
407408
assert!(chunks[0].len() >= 256);
408409
assert!(chunks[1].len() <= 256);
409410
assert_eq!(
410-
serde_json::from_slice::<Vec<usize>>(&base64::decode(&chunks[0])?)?,
411+
serde_json::from_slice::<Vec<usize>>(&general_purpose::STANDARD.decode(&chunks[0])?)?,
411412
(0..=67).collect::<Vec<_>>(),
412413
);
413414
assert_eq!(
414-
serde_json::from_slice::<Vec<usize>>(&base64::decode(&chunks[1])?)?,
415+
serde_json::from_slice::<Vec<usize>>(&general_purpose::STANDARD.decode(&chunks[1])?)?,
415416
(68..100).collect::<Vec<_>>(),
416417
);
417418

src/middleware/session.rs

+5-2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ use axum::extract::{Extension, FromRequestParts};
33
use axum::middleware::Next;
44
use axum::response::{IntoResponse, Response};
55
use axum_extra::extract::SignedCookieJar;
6+
use base64::{engine::general_purpose, Engine};
67
use cookie::time::Duration;
78
use cookie::{Cookie, SameSite};
89
use http::Request;
@@ -110,7 +111,9 @@ impl<T: RequestPartsExt> RequestSession for T {
110111

111112
pub fn decode(cookie: Cookie<'_>) -> HashMap<String, String> {
112113
let mut ret = HashMap::new();
113-
let bytes = base64::decode(cookie.value().as_bytes()).unwrap_or_default();
114+
let bytes = general_purpose::STANDARD
115+
.decode(cookie.value().as_bytes())
116+
.unwrap_or_default();
114117
let mut parts = bytes.split(|&a| a == 0xff);
115118
while let (Some(key), Some(value)) = (parts.next(), parts.next()) {
116119
if key.is_empty() {
@@ -136,5 +139,5 @@ pub fn encode(h: &HashMap<String, String>) -> String {
136139
while ret.len() * 8 % 6 != 0 {
137140
ret.push(0xff);
138141
}
139-
base64::encode(&ret[..])
142+
general_purpose::STANDARD.encode(&ret[..])
140143
}

src/tests/record.rs

+7-4
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ use std::{
1111
thread,
1212
};
1313

14+
use base64::{engine::general_purpose, Engine};
1415
use futures_channel::oneshot;
1516
use futures_util::future;
1617
use http::header::CONTENT_TYPE;
@@ -277,7 +278,7 @@ async fn record_http(req: Request<Body>, client: Client) -> Result<ResponseAndEx
277278
.filter(|h| !IGNORED_HEADERS.contains(&h.0.as_str()))
278279
.map(|h| (h.0.as_str().to_string(), h.1.to_str().unwrap().to_string()))
279280
.collect(),
280-
body: base64::encode(&body),
281+
body: general_purpose::STANDARD.encode(&body),
281282
};
282283

283284
let (status, headers, body) = if let Ok("passthrough") = dotenvy::var("RECORD").as_deref() {
@@ -312,7 +313,7 @@ async fn record_http(req: Request<Body>, client: Client) -> Result<ResponseAndEx
312313
.iter()
313314
.map(|h| (h.0.as_str().to_string(), h.1.to_str().unwrap().to_string()))
314315
.collect(),
315-
body: base64::encode(&body),
316+
body: general_purpose::STANDARD.encode(&body),
316317
};
317318

318319
// Construct an outgoing response
@@ -374,7 +375,7 @@ fn replay_http(
374375
assert_eq!(body, exchange.request.body);
375376
}
376377
_ => {
377-
let body = base64::encode(body);
378+
let body = general_purpose::STANDARD.encode(body);
378379
assert_eq!(body, exchange.request.body);
379380
}
380381
}
@@ -383,7 +384,9 @@ fn replay_http(
383384
for (key, value) in exchange.response.headers {
384385
builder = builder.header(key.as_str(), value.as_str());
385386
}
386-
let body = base64::decode(exchange.response.body.as_bytes()).unwrap();
387+
let body = general_purpose::STANDARD
388+
.decode(exchange.response.body.as_bytes())
389+
.unwrap();
387390
let status = StatusCode::from_u16(exchange.response.status).unwrap();
388391
let response = builder.status(status).body(body.into()).unwrap();
389392

0 commit comments

Comments
 (0)