Skip to content

Commit 87d7f04

Browse files
paolobarboliniJarema
authored andcommitted
Update base64 crate and use it in place of base64-url
1 parent 6da6e93 commit 87d7f04

File tree

6 files changed

+24
-17
lines changed

6 files changed

+24
-17
lines changed

async-nats/Cargo.toml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ categories = ["network-programming", "api-bindings"]
1515

1616
[dependencies]
1717
memchr = "2.4"
18-
base64-url = "1.4.13"
1918
bytes = "1.4.0"
2019
futures = { version = "0.3.26", default-features = false, features = ["std", "async-await"] }
2120
nkeys = "0.2.0"
@@ -36,7 +35,7 @@ time = { version = "0.3.20", features = ["parsing", "formatting", "serde", "serd
3635
rustls-native-certs = "0.6"
3736
tracing = "0.1"
3837
thiserror = "1.0"
39-
base64 = "0.13"
38+
base64 = "0.21"
4039
tokio-retry = "0.3"
4140
ring = "0.16"
4241
rand = "0.8"

async-nats/src/connector.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ use crate::SocketAddr;
2929
use crate::ToServerAddrs;
3030
use crate::LANG;
3131
use crate::VERSION;
32+
use base64::engine::general_purpose::URL_SAFE_NO_PAD;
33+
use base64::engine::Engine;
3234
use bytes::BytesMut;
3335
use rand::seq::SliceRandom;
3436
use rand::thread_rng;
@@ -183,7 +185,7 @@ impl Connector {
183185
Ok(signed) => {
184186
connect_info.nkey = Some(key_pair.public_key());
185187
connect_info.signature =
186-
Some(base64_url::encode(&signed));
188+
Some(URL_SAFE_NO_PAD.encode(signed));
187189
}
188190
Err(_) => {
189191
return Err(ConnectError::new(

async-nats/src/jetstream/object_store/mod.rs

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,12 @@ use std::{
2121
};
2222

2323
use crate::{HeaderMap, HeaderValue};
24-
use base64::URL_SAFE;
24+
use base64::engine::general_purpose::{STANDARD, URL_SAFE};
25+
use base64::engine::Engine;
2526
use once_cell::sync::Lazy;
2627
use ring::digest::SHA256;
2728
use tokio::io::AsyncReadExt;
2829

29-
use base64_url::base64;
3030
use futures::{Stream, StreamExt};
3131
use regex::Regex;
3232
use serde::{Deserialize, Serialize};
@@ -57,7 +57,7 @@ pub(crate) fn is_valid_object_name(object_name: &str) -> bool {
5757
}
5858

5959
pub(crate) fn encode_object_name(object_name: &str) -> String {
60-
base64::encode_config(object_name, base64::URL_SAFE)
60+
URL_SAFE.encode(object_name)
6161
}
6262

6363
/// Configuration values for object store buckets.
@@ -205,7 +205,8 @@ impl ObjectStore {
205205
.stream
206206
.get_last_raw_message_by_subject(subject.as_str())
207207
.await?;
208-
let decoded_payload = base64::decode(message.payload)
208+
let decoded_payload = STANDARD
209+
.decode(message.payload)
209210
.map_err(|err| Box::new(std::io::Error::new(ErrorKind::Other, err)))?;
210211
let object_info = serde_json::from_slice::<ObjectInfo>(&decoded_payload)?;
211212

@@ -291,10 +292,7 @@ impl ObjectStore {
291292
nuid: object_nuid,
292293
chunks: object_chunks,
293294
size: object_size,
294-
digest: format!(
295-
"SHA-256={}",
296-
base64::encode_config(digest, base64::URL_SAFE)
297-
),
295+
digest: format!("SHA-256={}", URL_SAFE.encode(digest)),
298296
modified: OffsetDateTime::now_utc(),
299297
deleted: false,
300298
};
@@ -566,7 +564,7 @@ impl tokio::io::AsyncRead for Object<'_> {
566564
if info.pending == 0 {
567565
let digest = self.digest.take().map(|context| context.finish());
568566
if let Some(digest) = digest {
569-
if format!("SHA-256={}", base64::encode_config(digest, URL_SAFE))
567+
if format!("SHA-256={}", URL_SAFE.encode(digest))
570568
!= self.info.digest
571569
{
572570
return Poll::Ready(Err(io::Error::new(

async-nats/src/jetstream/stream.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ use std::{
2727

2828
use crate::{header::HeaderName, HeaderMap, HeaderValue};
2929
use crate::{Error, StatusCode};
30+
use base64::engine::general_purpose::STANDARD;
31+
use base64::engine::Engine;
3032
use bytes::Bytes;
3133
use futures::{future::BoxFuture, TryFutureExt};
3234
use serde::{Deserialize, Serialize};
@@ -1090,11 +1092,12 @@ impl TryFrom<RawMessage> for crate::Message {
10901092
type Error = Error;
10911093

10921094
fn try_from(value: RawMessage) -> Result<Self, Self::Error> {
1093-
let decoded_payload = base64::decode(value.payload)
1095+
let decoded_payload = STANDARD
1096+
.decode(value.payload)
10941097
.map_err(|err| Box::new(std::io::Error::new(ErrorKind::Other, err)))?;
10951098
let decoded_headers = value
10961099
.headers
1097-
.map(base64::decode)
1100+
.map(|header| STANDARD.decode(header))
10981101
.map_or(Ok(None), |v| v.map(Some))?;
10991102

11001103
let length = decoded_headers

async-nats/src/options.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
// limitations under the License.
1313

1414
use crate::{Authorization, Client, ConnectError, Event, ToServerAddrs};
15+
use base64::engine::general_purpose::URL_SAFE_NO_PAD;
16+
use base64::engine::Engine;
1517
use futures::Future;
1618
use std::fmt::Formatter;
1719
use std::{fmt, path::PathBuf, pin::Pin, sync::Arc, time::Duration};
@@ -251,7 +253,7 @@ impl ConnectOptions {
251253
let sig = sign_cb(nonce.as_bytes().to_vec())
252254
.await
253255
.map_err(AuthError::new)?;
254-
Ok(base64_url::encode(&sig))
256+
Ok(URL_SAFE_NO_PAD.encode(sig))
255257
})
256258
})),
257259
),

async-nats/tests/object_store.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ mod object_store {
1616
use std::{io, time::Duration};
1717

1818
use async_nats::jetstream::object_store::ObjectMeta;
19-
use base64::URL_SAFE;
19+
use base64::Engine;
2020
use futures::StreamExt;
2121
use rand::RngCore;
2222
use ring::digest::SHA256;
@@ -60,7 +60,10 @@ mod object_store {
6060
}
6161
}
6262
assert_eq!(
63-
format!("SHA-256={}", base64::encode_config(digest, URL_SAFE)),
63+
format!(
64+
"SHA-256={}",
65+
base64::engine::general_purpose::URL_SAFE.encode(digest)
66+
),
6467
object.info.digest
6568
);
6669
assert_eq!(result, bytes);

0 commit comments

Comments
 (0)