tor-bytes: Remove use of arrayref

Part of #872: Now that const generics are in, we have better ways to
express converting slices into array-references.
This commit is contained in:
Nick Mathewson 2023-05-25 14:48:57 -04:00
parent 6703f3d52a
commit 244ec5dce2
5 changed files with 16 additions and 21 deletions

1
Cargo.lock generated
View File

@ -3793,7 +3793,6 @@ dependencies = [
name = "tor-bytes"
version = "0.7.0"
dependencies = [
"arrayref",
"bytes",
"digest 0.10.7",
"educe",

View File

@ -12,7 +12,6 @@ categories = ["parsing", "encoding"]
repository = "https://gitlab.torproject.org/tpo/core/arti.git/"
[dependencies]
arrayref = "0.3"
bytes = "1"
digest = { version = "0.10.0", features = ["subtle", "mac"] }
educe = "0.4.6"

View File

@ -180,8 +180,8 @@ mod ed25519_impls {
}
impl Readable for ed25519::PublicKey {
fn take_from(b: &mut Reader<'_>) -> Result<Self> {
let bytes = b.take(32)?;
Self::from_bytes(array_ref![bytes, 0, 32])
let bytes: [u8; 32] = b.extract()?;
Self::from_bytes(&bytes)
.map_err(|_| Error::InvalidMessage("Couldn't decode Ed25519 public key".into()))
}
}
@ -194,8 +194,8 @@ mod ed25519_impls {
}
impl Readable for ed25519::Ed25519Identity {
fn take_from(b: &mut Reader<'_>) -> Result<Self> {
let bytes = b.take(32)?;
Ok(Self::new(*array_ref![bytes, 0, 32]))
let bytes: [u8; 32] = b.extract()?;
Ok(Self::new(bytes))
}
}
impl Writeable for ed25519::Signature {
@ -206,8 +206,8 @@ mod ed25519_impls {
}
impl Readable for ed25519::Signature {
fn take_from(b: &mut Reader<'_>) -> Result<Self> {
let bytes = b.take(64)?;
Self::from_bytes(array_ref![bytes, 0, 64])
let bytes: [u8; 64] = b.extract()?;
Self::from_bytes(&bytes)
.map_err(|_| Error::InvalidMessage("Couldn't decode Ed25519 signature.".into()))
}
}
@ -226,8 +226,8 @@ mod curve25519_impls {
}
impl Readable for PublicKey {
fn take_from(b: &mut Reader<'_>) -> Result<Self> {
let bytes = b.take(32)?;
Ok((*array_ref![bytes, 0, 32]).into())
let bytes: [u8; 32] = b.extract()?;
Ok(bytes.into())
}
}
impl Writeable for SharedSecret {

View File

@ -49,8 +49,6 @@ pub use reader::{Cursor, Reader};
pub use secretbuf::SecretBuf;
pub use writer::Writer;
use arrayref::array_ref;
/// Result type returned by this crate for [`Reader`]-related methods.
pub type Result<T> = std::result::Result<T, Error>;
/// Result type returned by this crate for [`Writer`]-related methods.

View File

@ -1,7 +1,6 @@
//! Internal: Declare the Reader type for tor-bytes
use crate::{Error, Readable, Result};
use arrayref::array_ref;
/// A type for reading messages from a slice of bytes.
///
@ -182,26 +181,26 @@ impl<'a> Reader<'a> {
}
/// Try to consume and return a big-endian u16 from this reader.
pub fn take_u16(&mut self) -> Result<u16> {
let b = self.take(2)?;
let r = u16::from_be_bytes(*array_ref![b, 0, 2]);
let b: [u8; 2] = self.extract()?;
let r = u16::from_be_bytes(b);
Ok(r)
}
/// Try to consume and return a big-endian u32 from this reader.
pub fn take_u32(&mut self) -> Result<u32> {
let b = self.take(4)?;
let r = u32::from_be_bytes(*array_ref![b, 0, 4]);
let b: [u8; 4] = self.extract()?;
let r = u32::from_be_bytes(b);
Ok(r)
}
/// Try to consume and return a big-endian u64 from this reader.
pub fn take_u64(&mut self) -> Result<u64> {
let b = self.take(8)?;
let r = u64::from_be_bytes(*array_ref![b, 0, 8]);
let b: [u8; 8] = self.extract()?;
let r = u64::from_be_bytes(b);
Ok(r)
}
/// Try to consume and return a big-endian u128 from this reader.
pub fn take_u128(&mut self) -> Result<u128> {
let b = self.take(16)?;
let r = u128::from_be_bytes(*array_ref![b, 0, 16]);
let b: [u8; 16] = self.extract()?;
let r = u128::from_be_bytes(b);
Ok(r)
}
/// Try to consume and return bytes from this buffer until we