[Pkg-rust-maintainers] Bug#1009123: rust-sha-1: diff for NMU version 0.8.1-2.1

Jonas Smedegaard dr at jones.dk
Thu Apr 7 14:50:37 BST 2022


Package: rust-sha-1
Version: 0.8.1-2
Severity: normal
Tags: patch  pending

Dear maintainer,

I've prepared an NMU for rust-sha-1 (versioned as 0.8.1-2.1) and
uploaded it without delay, due to current package being completely broken.

Regards,

 - Jonas

diff -Nru rust-sha-1-0.8.1/debian/changelog rust-sha-1-0.8.1/debian/changelog
--- rust-sha-1-0.8.1/debian/changelog	2019-08-06 18:25:40.000000000 +0200
+++ rust-sha-1-0.8.1/debian/changelog	2022-04-07 15:48:54.000000000 +0200
@@ -1,3 +1,16 @@
+rust-sha-1 (0.8.1-2.1) unstable; urgency=medium
+
+  * Non-maintainer upload.
+  * fix unsatisfiable dependencies and failure to build from source:
+    + add patches and bump dependencies to link against
+      librust-block-buffer-0.9+default-dev
+      librust-digest-0.9+default-dev
+      librust-opaque-debug-0.3+default-dev
+      (not older versions gone since 2020-03-31)
+  * add autopkgtest
+
+ -- Jonas Smedegaard <dr at jones.dk>  Thu, 07 Apr 2022 15:48:54 +0200
+
 rust-sha-1 (0.8.1-2) unstable; urgency=medium
 
   * Team upload.
diff -Nru rust-sha-1-0.8.1/debian/control rust-sha-1-0.8.1/debian/control
--- rust-sha-1-0.8.1/debian/control	2019-08-06 18:25:40.000000000 +0200
+++ rust-sha-1-0.8.1/debian/control	2022-04-07 15:27:17.000000000 +0200
@@ -6,11 +6,10 @@
  cargo:native <!nocheck>,
  rustc:native <!nocheck>,
  libstd-rust-dev <!nocheck>,
- librust-block-buffer-0.7+default-dev <!nocheck>,
- librust-digest-0.8+default-dev <!nocheck>,
- librust-digest-0.8+std-dev <!nocheck>,
- librust-fake-simd-0.1+default-dev <!nocheck>,
- librust-opaque-debug-0.2+default-dev <!nocheck>
+ librust-block-buffer-0.9+default-dev <!nocheck>,
+ librust-digest-0.9+default-dev <!nocheck>,
+ librust-digest-0.9+std-dev <!nocheck>,
+ librust-opaque-debug-0.3+default-dev <!nocheck>
 Maintainer: Debian Rust Maintainers <pkg-rust-maintainers at alioth-lists.debian.net>
 Uploaders:
  kpcyrd <git at rxv.cc>
@@ -23,10 +22,9 @@
 Multi-Arch: same
 Depends:
  ${misc:Depends},
- librust-block-buffer-0.7+default-dev,
- librust-digest-0.8+default-dev,
- librust-fake-simd-0.1+default-dev,
- librust-opaque-debug-0.2+default-dev
+ librust-block-buffer-0.9+default-dev,
+ librust-digest-0.9+default-dev,
+ librust-opaque-debug-0.3+default-dev
 Recommends:
  librust-sha-1+std-dev (= ${binary:Version})
 Suggests:
@@ -76,7 +74,7 @@
 Depends:
  ${misc:Depends},
  librust-sha-1-dev (= ${binary:Version}),
- librust-digest-0.8+std-dev
+ librust-digest-0.9+std-dev
 Provides:
  librust-sha-1+default-dev (= ${binary:Version}),
  librust-sha-1-0+std-dev (= ${binary:Version}),
diff -Nru rust-sha-1-0.8.1/debian/patches/020200527~c43d34c.patch rust-sha-1-0.8.1/debian/patches/020200527~c43d34c.patch
--- rust-sha-1-0.8.1/debian/patches/020200527~c43d34c.patch	1970-01-01 01:00:00.000000000 +0100
+++ rust-sha-1-0.8.1/debian/patches/020200527~c43d34c.patch	2022-04-07 15:38:04.000000000 +0200
@@ -0,0 +1,79 @@
+commit c43d34c12755b2e380d73c8e84b018abe8bc0b15
+Author: Tony Arcieri <bascule at gmail.com>
+Date:   Wed May 27 20:12:05 2020 -0700
+
+    sha1: 2018 edition and `digest` crate upgrade
+    
+    Upgrades to Rust 2018 edition and the (now 2018 edition)
+    `digest` v0.9.0-pre crate.
+
+--- a/Cargo.toml
++++ b/Cargo.toml
+@@ -27,7 +27,7 @@
+ version = "0.7"
+ 
+ [dependencies.digest]
+-version = "0.8"
++version = "0.9"
+ 
+ [dependencies.fake-simd]
+ version = "0.1"
+@@ -39,7 +39,7 @@
+ version = "0.4"
+ optional = true
+ [dev-dependencies.digest]
+-version = "0.8"
++version = "0.9"
+ features = ["dev"]
+ 
+ [dev-dependencies.hex-literal]
+--- a/benches/lib.rs
++++ b/benches/lib.rs
+@@ -4,4 +4,5 @@
+ extern crate digest;
+ extern crate sha1;
+ 
++use digest::bench;
+ bench!(sha1::Sha1);
+--- a/examples/sha1sum.rs
++++ b/examples/sha1sum.rs
+@@ -25,7 +25,7 @@
+             Ok(n) => n,
+             Err(_) => return,
+         };
+-        sh.input(&buffer[..n]);
++        sh.update(&buffer[..n]);
+         if n == 0 || n < BUFFER_SIZE {
+             break;
+         }
+--- a/src/lib.rs
++++ b/src/lib.rs
+@@ -12,7 +12,7 @@
+ //! let mut hasher = Sha1::new();
+ //!
+ //! // process input message
+-//! hasher.input(b"hello world");
++//! hasher.update(b"hello world");
+ //!
+ //! // acquire hash digest in the form of GenericArray,
+ //! // which in this case is equivalent to [u8; 20]
+@@ -51,7 +51,7 @@
+ use utils::compress;
+ 
+ pub use digest::Digest;
+-use digest::{Input, BlockInput, FixedOutput, Reset};
++use digest::{Update, BlockInput, FixedOutput, Reset};
+ use digest::generic_array::GenericArray;
+ use digest::generic_array::typenum::{U20, U64};
+ use block_buffer::BlockBuffer;
+@@ -78,8 +78,8 @@
+     type BlockSize = U64;
+ }
+ 
+-impl Input for Sha1 {
+-    fn input<B: AsRef<[u8]>>(&mut self, input: B) {
++impl Update for Sha1 {
++    fn update(&mut self, input: impl AsRef<[u8]>) {
+         let input = input.as_ref();
+         // Assumes that `length_bits<<3` will not overflow
+         self.len += input.len() as u64;
diff -Nru rust-sha-1-0.8.1/debian/patches/020200602~d749cb0.patch rust-sha-1-0.8.1/debian/patches/020200602~d749cb0.patch
--- rust-sha-1-0.8.1/debian/patches/020200602~d749cb0.patch	1970-01-01 01:00:00.000000000 +0100
+++ rust-sha-1-0.8.1/debian/patches/020200602~d749cb0.patch	2022-04-07 15:44:01.000000000 +0200
@@ -0,0 +1,44 @@
+commit d749cb0fac719d46bd15302bba4adf4fba1d4ba6
+Author: Tony Arcieri <bascule at gmail.com>
+Date:   Tue Jun 2 12:35:57 2020 -0700
+
+    Rename `*result*` to `finalize`
+    
+    Implements the API changes from:
+    
+    https://github.com/RustCrypto/traits/pull/161
+    
+    The `digest` crate now uses `update` and `finalize` nomenclature
+    ala the Initialize-Update-Finalize (IUF) interface naming scheme.
+
+--- a/examples/sha1sum.rs
++++ b/examples/sha1sum.rs
+@@ -30,7 +30,7 @@
+             break;
+         }
+     }
+-    print_result(&sh.result(), name);
++    print_result(&sh.finalize(), name);
+ }
+ 
+ fn main() {
+--- a/src/lib.rs
++++ b/src/lib.rs
+@@ -16,7 +16,7 @@
+ //!
+ //! // acquire hash digest in the form of GenericArray,
+ //! // which in this case is equivalent to [u8; 20]
+-//! let result = hasher.result();
++//! let result = hasher.finalize();
+ //! assert_eq!(result[..], hex!("2aae6c35c94fcfb415dbe95f408b9ce91ee846ed"));
+ //! # }
+ //! ```
+@@ -91,7 +91,7 @@
+ impl FixedOutput for Sha1 {
+     type OutputSize = U20;
+ 
+-    fn fixed_result(mut self) -> GenericArray<u8, Self::OutputSize> {
++    fn finalize_fixed(mut self) -> GenericArray<u8, Self::OutputSize> {
+         {
+             let state = &mut self.h;
+             let l = self.len << 3;
diff -Nru rust-sha-1-0.8.1/debian/patches/020200609~26bea13.patch rust-sha-1-0.8.1/debian/patches/020200609~26bea13.patch
--- rust-sha-1-0.8.1/debian/patches/020200609~26bea13.patch	1970-01-01 01:00:00.000000000 +0100
+++ rust-sha-1-0.8.1/debian/patches/020200609~26bea13.patch	2022-04-07 15:44:35.000000000 +0200
@@ -0,0 +1,68 @@
+commit 26bea13186632a16e6cc2a1d096c01b2b9500beb
+Author: Tony Arcieri <bascule at gmail.com>
+Date:   Tue Jun 9 16:22:33 2020 -0700
+
+    Use new `*Dirty` traits from the `digest` crate (#153)
+    
+    Updates all of the hash implementations in this repo to use the new
+    `*Dirty` traits which support blanket impls of the original traits,
+    which either consume the hasher instance or can be reset.
+    
+    This will also provide a marginal efficiency boost, at least until
+    placement return lands (which, as it were, may be soon).
+
+--- a/src/lib.rs
++++ b/src/lib.rs
+@@ -51,15 +51,19 @@
+ use utils::compress;
+ 
+ pub use digest::Digest;
+-use digest::{Update, BlockInput, FixedOutput, Reset};
+-use digest::generic_array::GenericArray;
+-use digest::generic_array::typenum::{U20, U64};
+-use block_buffer::BlockBuffer;
+-use block_buffer::byteorder::{BE, ByteOrder};
++use digest::{Update, BlockInput, FixedOutputDirty, Reset};
++use digest::consts::{U20, U64};
++use block_buffer::{
++    byteorder::{ByteOrder, BE},
++    BlockBuffer,
++};
+ 
+ mod consts;
+ use consts::{STATE_LEN, H};
+ 
++#[cfg(feature = "asm")]
++use digest::generic_array::GenericArray;
++
+ /// Structure representing the state of a SHA-1 computation
+ #[derive(Clone)]
+ pub struct Sha1 {
+@@ -88,18 +92,17 @@
+     }
+ }
+ 
+-impl FixedOutput for Sha1 {
++impl FixedOutputDirty for Sha1 {
+     type OutputSize = U20;
+ 
+-    fn finalize_fixed(mut self) -> GenericArray<u8, Self::OutputSize> {
+-        {
+-            let state = &mut self.h;
+-            let l = self.len << 3;
+-            self.buffer.len64_padding::<BE, _>(l, |d| compress(state, d));
+-        }
+-        let mut out = GenericArray::default();
+-        BE::write_u32_into(&self.h,&mut out);
+-        out
++    fn finalize_into_dirty(&mut self, out: &mut digest::Output<Self>) {
++        let state = &mut self.h;
++        let l = self.len << 3;
++
++        self.buffer
++            .len64_padding::<BE, _>(l, |d| compress(state, d));
++
++        BE::write_u32_into(&self.h, out);
+     }
+ }
+ 
diff -Nru rust-sha-1-0.8.1/debian/patches/020200610~d24f26b.patch rust-sha-1-0.8.1/debian/patches/020200610~d24f26b.patch
--- rust-sha-1-0.8.1/debian/patches/020200610~d24f26b.patch	1970-01-01 01:00:00.000000000 +0100
+++ rust-sha-1-0.8.1/debian/patches/020200610~d24f26b.patch	2022-04-07 15:47:25.000000000 +0200
@@ -0,0 +1,296 @@
+commit d24f26b1650156b1da4fced389559cee17805910
+Author: Artyom Pavlov <newpavlov at gmail.com>
+Date:   Wed Jun 10 20:11:36 2020 +0300
+
+    Update block-buffer to v0.9 (#164)
+
+--- a/Cargo.toml
++++ b/Cargo.toml
+@@ -24,14 +24,11 @@
+ [lib]
+ name = "sha1"
+ [dependencies.block-buffer]
+-version = "0.7"
++version = "0.9"
+ 
+ [dependencies.digest]
+ version = "0.9"
+ 
+-[dependencies.fake-simd]
+-version = "0.1"
+-
+ [dependencies.opaque-debug]
+ version = "0.2"
+ 
+--- a/src/lib.rs
++++ b/src/lib.rs
+@@ -33,8 +33,6 @@
+ #[macro_use] pub extern crate digest;
+ #[cfg(feature = "std")]
+ extern crate std;
+-#[cfg(not(feature = "asm"))]
+-extern crate fake_simd as simd;
+ 
+ #[cfg(feature = "asm")]
+ extern crate sha1_asm;
+@@ -53,10 +51,7 @@
+ pub use digest::Digest;
+ use digest::{Update, BlockInput, FixedOutputDirty, Reset};
+ use digest::consts::{U20, U64};
+-use block_buffer::{
+-    byteorder::{ByteOrder, BE},
+-    BlockBuffer,
+-};
++use block_buffer::BlockBuffer;
+ 
+ mod consts;
+ use consts::{STATE_LEN, H};
+@@ -88,7 +83,7 @@
+         // Assumes that `length_bits<<3` will not overflow
+         self.len += input.len() as u64;
+         let state = &mut self.h;
+-        self.buffer.input(input, |d| compress(state, d));
++        self.buffer.input_block(input, |d| compress(state, d));
+     }
+ }
+ 
+@@ -96,13 +91,12 @@
+     type OutputSize = U20;
+ 
+     fn finalize_into_dirty(&mut self, out: &mut digest::Output<Self>) {
+-        let state = &mut self.h;
++        let s = &mut self.h;
+         let l = self.len << 3;
+-
+-        self.buffer
+-            .len64_padding::<BE, _>(l, |d| compress(state, d));
+-
+-        BE::write_u32_into(&self.h, out);
++        self.buffer.len64_padding_be(l, |d| compress(s, d));
++        for (chunk, v) in out.chunks_exact_mut(4).zip(self.h.iter()) {
++            chunk.copy_from_slice(&v.to_be_bytes());
++        }
+     }
+ }
+ 
+--- a/src/utils.rs
++++ b/src/utils.rs
+@@ -1,80 +1,94 @@
+ #![cfg_attr(feature = "cargo-clippy", allow(many_single_char_names))]
+ 
+ use consts::{BLOCK_LEN, K0, K1, K2, K3};
+-use block_buffer::byteorder::{BE, ByteOrder};
+-use simd::u32x4;
++use core::convert::TryInto;
+ use digest::generic_array::GenericArray;
+ use digest::generic_array::typenum::U64;
+ 
+ type Block = GenericArray<u8, U64>;
+ 
++#[inline(always)]
++fn add(a: [u32; 4], b: [u32; 4]) -> [u32; 4] {
++    [
++        a[0].wrapping_add(b[0]),
++        a[1].wrapping_add(b[1]),
++        a[2].wrapping_add(b[2]),
++        a[3].wrapping_add(b[3]),
++    ]
++}
++
++#[inline(always)]
++fn xor(a: [u32; 4], b: [u32; 4]) -> [u32; 4] {
++    [a[0] ^ b[0], a[1] ^ b[1], a[2] ^ b[2], a[3] ^ b[3]]
++}
++
+ /// Not an intrinsic, but gets the first element of a vector.
+ #[inline]
+-pub fn sha1_first(w0: u32x4) -> u32 {
+-    w0.0
++pub fn sha1_first(w0: [u32; 4]) -> u32 {
++    w0[0]
+ }
+ 
+ /// Not an intrinsic, but adds a word to the first element of a vector.
+ #[inline]
+-pub fn sha1_first_add(e: u32, w0: u32x4) -> u32x4 {
+-    let u32x4(a, b, c, d) = w0;
+-    u32x4(e.wrapping_add(a), b, c, d)
++pub fn sha1_first_add(e: u32, w0: [u32; 4]) -> [u32; 4] {
++    let [a, b, c, d] = w0;
++    [e.wrapping_add(a), b, c, d]
+ }
+ 
+ /// Emulates `llvm.x86.sha1msg1` intrinsic.
+-fn sha1msg1(a: u32x4, b: u32x4) -> u32x4 {
+-    let u32x4(_, _, w2, w3) = a;
+-    let u32x4(w4, w5, _, _) = b;
+-    a ^ u32x4(w2, w3, w4, w5)
++fn sha1msg1(a: [u32; 4], b: [u32; 4]) -> [u32; 4] {
++    let [_, _, w2, w3] = a;
++    let [w4, w5, _, _] = b;
++    [a[0] ^ w2, a[1] ^ w3, a[2] ^ w4, a[3] ^ w5]
+ }
+ 
+ /// Emulates `llvm.x86.sha1msg2` intrinsic.
+-fn sha1msg2(a: u32x4, b: u32x4) -> u32x4 {
+-    let u32x4(x0, x1, x2, x3) = a;
+-    let u32x4(_, w13, w14, w15) = b;
++fn sha1msg2(a: [u32; 4], b: [u32; 4]) -> [u32; 4] {
++    let [x0, x1, x2, x3] = a;
++    let [_, w13, w14, w15] = b;
+ 
+     let w16 = (x0 ^ w13).rotate_left(1);
+     let w17 = (x1 ^ w14).rotate_left(1);
+     let w18 = (x2 ^ w15).rotate_left(1);
+     let w19 = (x3 ^ w16).rotate_left(1);
+ 
+-    u32x4(w16, w17, w18, w19)
++    [w16, w17, w18, w19]
+ }
+ 
+ /// Performs 4 rounds of the message schedule update.
+ /*
+-pub fn sha1_schedule_x4(v0: u32x4, v1: u32x4, v2: u32x4, v3: u32x4) -> u32x4 {
++pub fn sha1_schedule_x4(v0: [u32; 4], v1: [u32; 4], v2: [u32; 4], v3: [u32; 4]) -> [u32; 4] {
+     sha1msg2(sha1msg1(v0, v1) ^ v2, v3)
+ }
+ */
+ 
+ /// Emulates `llvm.x86.sha1nexte` intrinsic.
+ #[inline]
+-fn sha1_first_half(abcd: u32x4, msg: u32x4) -> u32x4 {
++fn sha1_first_half(abcd: [u32; 4], msg: [u32; 4]) -> [u32; 4] {
+     sha1_first_add(sha1_first(abcd).rotate_left(30), msg)
+ }
+ 
+ /// Emulates `llvm.x86.sha1rnds4` intrinsic.
+ /// Performs 4 rounds of the message block digest.
+-fn sha1_digest_round_x4(abcd: u32x4, work: u32x4, i: i8) -> u32x4 {
+-    const K0V: u32x4 = u32x4(K0, K0, K0, K0);
+-    const K1V: u32x4 = u32x4(K1, K1, K1, K1);
+-    const K2V: u32x4 = u32x4(K2, K2, K2, K2);
+-    const K3V: u32x4 = u32x4(K3, K3, K3, K3);
++fn sha1_digest_round_x4(abcd: [u32; 4], work: [u32; 4], i: i8) -> [u32; 4] {
++    const K0V: [u32; 4] = [K0, K0, K0, K0];
++    const K1V: [u32; 4] = [K1, K1, K1, K1];
++    const K2V: [u32; 4] = [K2, K2, K2, K2];
++    const K3V: [u32; 4] = [K3, K3, K3, K3];
+ 
+     match i {
+-        0 => sha1rnds4c(abcd, work + K0V),
+-        1 => sha1rnds4p(abcd, work + K1V),
+-        2 => sha1rnds4m(abcd, work + K2V),
+-        3 => sha1rnds4p(abcd, work + K3V),
++        0 => sha1rnds4c(abcd, add(work, K0V)),
++        1 => sha1rnds4p(abcd, add(work, K1V)),
++        2 => sha1rnds4m(abcd, add(work, K2V)),
++        3 => sha1rnds4p(abcd, add(work, K3V)),
+         _ => unreachable!("unknown icosaround index"),
+     }
+ }
+ 
+ /// Not an intrinsic, but helps emulate `llvm.x86.sha1rnds4` intrinsic.
+-fn sha1rnds4c(abcd: u32x4, msg: u32x4) -> u32x4 {
+-    let u32x4(mut a, mut b, mut c, mut d) = abcd;
+-    let u32x4(t, u, v, w) = msg;
++fn sha1rnds4c(abcd: [u32; 4], msg: [u32; 4]) -> [u32; 4] {
++    let [mut a, mut b, mut c, mut d] = abcd;
++    let [t, u, v, w] = msg;
+     let mut e = 0u32;
+ 
+     macro_rules! bool3ary_202 {
+@@ -101,13 +115,13 @@
+         .wrapping_add(w);
+     d = d.rotate_left(30);
+ 
+-    u32x4(b, c, d, e)
++    [b, c, d, e]
+ }
+ 
+ /// Not an intrinsic, but helps emulate `llvm.x86.sha1rnds4` intrinsic.
+-fn sha1rnds4p(abcd: u32x4, msg: u32x4) -> u32x4 {
+-    let u32x4(mut a, mut b, mut c, mut d) = abcd;
+-    let u32x4(t, u, v, w) = msg;
++fn sha1rnds4p(abcd: [u32; 4], msg: [u32; 4]) -> [u32; 4] {
++    let [mut a, mut b, mut c, mut d] = abcd;
++    let [t, u, v, w] = msg;
+     let mut e = 0u32;
+ 
+     macro_rules! bool3ary_150 {
+@@ -134,13 +148,13 @@
+         .wrapping_add(w);
+     d = d.rotate_left(30);
+ 
+-    u32x4(b, c, d, e)
++    [b, c, d, e]
+ }
+ 
+ /// Not an intrinsic, but helps emulate `llvm.x86.sha1rnds4` intrinsic.
+-fn sha1rnds4m(abcd: u32x4, msg: u32x4) -> u32x4 {
+-    let u32x4(mut a, mut b, mut c, mut d) = abcd;
+-    let u32x4(t, u, v, w) = msg;
++fn sha1rnds4m(abcd: [u32; 4], msg: [u32; 4]) -> [u32; 4] {
++    let [mut a, mut b, mut c, mut d] = abcd;
++    let [t, u, v, w] = msg;
+     let mut e = 0u32;
+ 
+     macro_rules! bool3ary_232 {
+@@ -167,7 +181,7 @@
+         .wrapping_add(w);
+     d = d.rotate_left(30);
+ 
+-    u32x4(b, c, d, e)
++    [b, c, d, e]
+ }
+ 
+ /// Process a block with the SHA-1 algorithm.
+@@ -175,7 +189,7 @@
+ 
+     macro_rules! schedule {
+         ($v0:expr, $v1:expr, $v2:expr, $v3:expr) => (
+-            sha1msg2(sha1msg1($v0, $v1) ^ $v2, $v3)
++            sha1msg2(xor(sha1msg1($v0, $v1), $v2), $v3)
+         )
+     }
+ 
+@@ -186,15 +200,15 @@
+     }
+ 
+     // Rounds 0..20
+-    // TODO: replace with `u32x4::load`
+-    let mut h0 = u32x4(state[0], state[1], state[2], state[3]);
+-    let mut w0 = u32x4(block[0], block[1], block[2], block[3]);
++    // TODO: replace with `[u32; 4]::load`
++    let mut h0 = [state[0], state[1], state[2], state[3]];
++    let mut w0 = [block[0], block[1], block[2], block[3]];
+     let mut h1 = sha1_digest_round_x4(h0, sha1_first_add(state[4], w0), 0);
+-    let mut w1 = u32x4(block[4], block[5], block[6], block[7]);
++    let mut w1 = [block[4], block[5], block[6], block[7]];
+     h0 = rounds4!(h1, h0, w1, 0);
+-    let mut w2 = u32x4(block[8], block[9], block[10], block[11]);
++    let mut w2 = [block[8], block[9], block[10], block[11]];
+     h1 = rounds4!(h0, h1, w2, 0);
+-    let mut w3 = u32x4(block[12], block[13], block[14], block[15]);
++    let mut w3 = [block[12], block[13], block[14], block[15]];
+     h0 = rounds4!(h1, h0, w3, 0);
+     let mut w4 = schedule!(w0, w1, w2, w3);
+     h1 = rounds4!(h0, h1, w4, 0);
+@@ -236,7 +250,7 @@
+     h0 = rounds4!(h1, h0, w4, 3);
+ 
+     let e = sha1_first(h1).rotate_left(30);
+-    let u32x4(a, b, c, d) = h0;
++    let [a, b, c, d] = h0;
+ 
+     state[0] = state[0].wrapping_add(a);
+     state[1] = state[1].wrapping_add(b);
+@@ -295,6 +309,8 @@
+ ///
+ pub fn compress(state: &mut [u32; 5], block: &Block) {
+     let mut block_u32 = [0u32; BLOCK_LEN];
+-    BE::read_u32_into(block, &mut block_u32[..]);
++    for (o, chunk) in block_u32.iter_mut().zip(block.chunks_exact(4)) {
++        *o = u32::from_be_bytes(chunk.try_into().unwrap());
++    }
+     sha1_digest_block_u32(state, &block_u32);
+ }
diff -Nru rust-sha-1-0.8.1/debian/patches/020200611~15c3060.patch rust-sha-1-0.8.1/debian/patches/020200611~15c3060.patch
--- rust-sha-1-0.8.1/debian/patches/020200611~15c3060.patch	1970-01-01 01:00:00.000000000 +0100
+++ rust-sha-1-0.8.1/debian/patches/020200611~15c3060.patch	2022-04-07 15:31:40.000000000 +0200
@@ -0,0 +1,35 @@
+commit 15c30606298e40a76d1a125723ce819aba3760e9
+Author: Artyom Pavlov <newpavlov at gmail.com>
+Date:   Thu Jun 11 17:55:10 2020 +0300
+
+    Bump opaque-debug to v0.3.0 (#168)
+
+--- a/Cargo.toml
++++ b/Cargo.toml
+@@ -30,7 +30,7 @@
+ version = "0.9"
+ 
+ [dependencies.opaque-debug]
+-version = "0.2"
++version = "0.3"
+ 
+ [dependencies.sha1-asm]
+ version = "0.4"
+--- a/src/lib.rs
++++ b/src/lib.rs
+@@ -29,7 +29,6 @@
+ #![doc(html_logo_url =
+     "https://raw.githubusercontent.com/RustCrypto/meta/master/logo_small.png")]
+ extern crate block_buffer;
+-#[macro_use] extern crate opaque_debug;
+ #[macro_use] pub extern crate digest;
+ #[cfg(feature = "std")]
+ extern crate std;
+@@ -108,5 +107,5 @@
+     }
+ }
+ 
+-impl_opaque_debug!(Sha1);
+-impl_write!(Sha1);
++opaque_debug::implement!(Sha1);
++digest::impl_write!(Sha1);
diff -Nru rust-sha-1-0.8.1/debian/patches/series rust-sha-1-0.8.1/debian/patches/series
--- rust-sha-1-0.8.1/debian/patches/series	1970-01-01 01:00:00.000000000 +0100
+++ rust-sha-1-0.8.1/debian/patches/series	2022-04-07 15:10:26.000000000 +0200
@@ -0,0 +1,5 @@
+020200527~c43d34c.patch
+020200602~d749cb0.patch
+020200609~26bea13.patch
+020200610~d24f26b.patch
+020200611~15c3060.patch
diff -Nru rust-sha-1-0.8.1/debian/tests/control rust-sha-1-0.8.1/debian/tests/control
--- rust-sha-1-0.8.1/debian/tests/control	1970-01-01 01:00:00.000000000 +0100
+++ rust-sha-1-0.8.1/debian/tests/control	2022-04-07 13:22:04.000000000 +0200
@@ -0,0 +1,24 @@
+Test-Command: /usr/share/cargo/bin/cargo-auto-test rust-sha-1 0.8.1 --all-targets --all-features
+Features: test-name=rust-sha-1:@
+Depends: dh-cargo, @
+Restrictions: allow-stderr, skip-not-installable, flaky
+
+Test-Command: /usr/share/cargo/bin/cargo-auto-test rust-sha-1 0.8.1 --all-targets
+Features: test-name=librust-sha-1-dev:default
+Depends: dh-cargo, @
+Restrictions: allow-stderr, skip-not-installable, flaky
+
+Test-Command: /usr/share/cargo/bin/cargo-auto-test rust-sha-1 0.8.1 --all-targets --no-default-features --features asm
+Features: test-name=librust-sha-1-dev:asm
+Depends: dh-cargo, @
+Restrictions: allow-stderr, skip-not-installable, flaky
+
+Test-Command: /usr/share/cargo/bin/cargo-auto-test rust-sha-1 0.8.1 --all-targets --no-default-features --features std
+Features: test-name=librust-sha-1-dev:std
+Depends: dh-cargo, @
+Restrictions: allow-stderr, skip-not-installable, flaky
+
+Test-Command: /usr/share/cargo/bin/cargo-auto-test rust-sha-1 0.8.1 --all-targets --no-default-features
+Features: test-name=librust-sha-1-dev:
+Depends: dh-cargo, @
+Restrictions: allow-stderr, skip-not-installable, flaky



More information about the Pkg-rust-maintainers mailing list