What changed, and why it matters
This commit only updates generated API snapshot files (text listings of public types and methods). It does not change any source code, behavior, or fix any bug. The added lines reflect new methods like non_secure_erase and Drop that already exist in the actual library code; the removed line shows Hkdf no longer implements Copy. These are documentation/snapshot updates, not a security patch.
No action needed for this commit. If reviewing a series, evaluate the preceding source-code commit that introduced the API changes (e.g., adding non_secure_erase and removing Copy) for security relevance.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The diff modifies three api/hashes/*.txt files, which are rustdoc/public-API snapshots used to track API changes. The additions (impl Drop for Hkdf, non_secure_erase methods on Hkdf and HmacEngine, Hkdf
Changed components
api/hashes/all-features.txtapi/hashes/alloc-only.txtapi/hashes/no-features.txtInspect captured patch +15 / −3
diff --git a/api/hashes/all-features.txt b/api/hashes/all-features.txt
index 60b398be..5709ade1 100644
--- a/api/hashes/all-features.txt
+++ b/api/hashes/all-features.txt
@@ -505,8 +505,10 @@ impl<T: bitcoin_hashes::Hash> core::cmp::Eq for bitcoin_hashes::hmac::Hmac<T>
impl<T: bitcoin_hashes::Hash> core::cmp::PartialEq for bitcoin_hashes::hmac::Hmac<T>
impl<T: bitcoin_hashes::Hash> core::convert::AsRef<[u8]> for bitcoin_hashes::hmac::Hmac<T>
impl<T: bitcoin_hashes::HashEngine> bitcoin_hashes::HashEngine for bitcoin_hashes::hmac::HmacEngine<T>
+impl<T: bitcoin_hashes::HashEngine> bitcoin_hashes::hkdf::Hkdf<T>
impl<T: bitcoin_hashes::HashEngine> bitcoin_hashes::hmac::HmacEngine<T>
impl<T: bitcoin_hashes::HashEngine> core::fmt::Debug for bitcoin_hashes::hkdf::Hkdf<T>
+impl<T: bitcoin_hashes::HashEngine> core::ops::drop::Drop for bitcoin_hashes::hkdf::Hkdf<T>
impl<T: bitcoin_hashes::HashEngine> std::io::Write for bitcoin_hashes::hmac::HmacEngine<T>
impl<T: bitcoin_hashes::sha256t::Tag> bitcoin_hashes::Hash for bitcoin_hashes::sha256t::Hash<T>
impl<T: bitcoin_hashes::sha256t::Tag> bitcoin_hashes::HashEngine for bitcoin_hashes::sha256t::HashEngine<T>
@@ -539,7 +541,6 @@ impl<T: core::fmt::Debug + bitcoin_hashes::HashEngine> core::fmt::Debug for bitc
impl<T: core::fmt::Debug> core::fmt::Debug for bitcoin_hashes::sha256t::HashEngine<T>
impl<T: core::hash::Hash + bitcoin_hashes::Hash> core::hash::Hash for bitcoin_hashes::hmac::Hmac<T>
impl<T: core::marker::Copy + bitcoin_hashes::Hash> core::marker::Copy for bitcoin_hashes::hmac::Hmac<T>
-impl<T: core::marker::Copy + bitcoin_hashes::HashEngine> core::marker::Copy for bitcoin_hashes::hkdf::Hkdf<T> where <T as bitcoin_hashes::HashEngine>::Hash: core::marker::Copy
impl<T> bitcoin_hashes::hkdf::Hkdf<T> where T: core::default::Default + bitcoin_hashes::HashEngine
impl<T> bitcoin_hashes::sha256t::Hash<T>
impl<T> bitcoin_hashes::sha256t::Hash<T> where T: bitcoin_hashes::sha256t::Tag
@@ -729,10 +730,12 @@ pub fn bitcoin_hashes::hash160::HashEngine::write(&mut self, buf: &[u8]) -> std:
pub fn bitcoin_hashes::hash160::hash(data: &[u8]) -> bitcoin_hashes::hash160::Hash
pub fn bitcoin_hashes::hash160::hash_byte_chunks<B, I>(byte_slices: I) -> bitcoin_hashes::hash160::Hash where B: core::convert::AsRef<[u8]>, I: core::iter::traits::collect::IntoIterator<Item = B>
pub fn bitcoin_hashes::hkdf::Hkdf<T>::clone(&self) -> bitcoin_hashes::hkdf::Hkdf<T>
+pub fn bitcoin_hashes::hkdf::Hkdf<T>::drop(&mut self)
pub fn bitcoin_hashes::hkdf::Hkdf<T>::expand(&self, info: &[u8], okm: &mut [u8]) -> core::result::Result<(), bitcoin_hashes::hkdf::MaxLengthError>
pub fn bitcoin_hashes::hkdf::Hkdf<T>::expand_to_len(&self, info: &[u8], len: usize) -> core::result::Result<alloc::vec::Vec<u8>, bitcoin_hashes::hkdf::MaxLengthError>
pub fn bitcoin_hashes::hkdf::Hkdf<T>::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result
pub fn bitcoin_hashes::hkdf::Hkdf<T>::new(salt: &[u8], ikm: &[u8]) -> Self
+pub fn bitcoin_hashes::hkdf::Hkdf<T>::non_secure_erase(&mut self)
pub fn bitcoin_hashes::hkdf::MaxLengthError::clone(&self) -> bitcoin_hashes::hkdf::MaxLengthError
pub fn bitcoin_hashes::hkdf::MaxLengthError::eq(&self, other: &bitcoin_hashes::hkdf::MaxLengthError) -> bool
pub fn bitcoin_hashes::hkdf::MaxLengthError::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result
@@ -757,6 +760,7 @@ pub fn bitcoin_hashes::hmac::HmacEngine<T>::from_inner_engines(iengine: T, oengi
pub fn bitcoin_hashes::hmac::HmacEngine<T>::input(&mut self, buf: &[u8])
pub fn bitcoin_hashes::hmac::HmacEngine<T>::n_bytes_hashed(&self) -> u64
pub fn bitcoin_hashes::hmac::HmacEngine<T>::new(key: &[u8]) -> Self where T: core::default::Default
+pub fn bitcoin_hashes::hmac::HmacEngine<T>::non_secure_erase(&mut self)
pub fn bitcoin_hashes::hmac::HmacEngine<T>::write(&mut self, buf: &[u8]) -> std::io::error::Result<usize>
pub fn bitcoin_hashes::macros::serde_details::BytesVisitor<ValueT, N>::default() -> Self
pub fn bitcoin_hashes::macros::serde_details::BytesVisitor<ValueT, N>::expecting(&self, formatter: &mut core::fmt::Formatter<'_>) -> core::fmt::Result
diff --git a/api/hashes/alloc-only.txt b/api/hashes/alloc-only.txt
index efaf1670..d3ceddd0 100644
--- a/api/hashes/alloc-only.txt
+++ b/api/hashes/alloc-only.txt
@@ -424,8 +424,10 @@ impl<T: bitcoin_hashes::Hash> core::cmp::Eq for bitcoin_hashes::hmac::Hmac<T>
impl<T: bitcoin_hashes::Hash> core::cmp::PartialEq for bitcoin_hashes::hmac::Hmac<T>
impl<T: bitcoin_hashes::Hash> core::convert::AsRef<[u8]> for bitcoin_hashes::hmac::Hmac<T>
impl<T: bitcoin_hashes::HashEngine> bitcoin_hashes::HashEngine for bitcoin_hashes::hmac::HmacEngine<T>
+impl<T: bitcoin_hashes::HashEngine> bitcoin_hashes::hkdf::Hkdf<T>
impl<T: bitcoin_hashes::HashEngine> bitcoin_hashes::hmac::HmacEngine<T>
impl<T: bitcoin_hashes::HashEngine> core::fmt::Debug for bitcoin_hashes::hkdf::Hkdf<T>
+impl<T: bitcoin_hashes::HashEngine> core::ops::drop::Drop for bitcoin_hashes::hkdf::Hkdf<T>
impl<T: bitcoin_hashes::sha256t::Tag> bitcoin_hashes::Hash for bitcoin_hashes::sha256t::Hash<T>
impl<T: bitcoin_hashes::sha256t::Tag> bitcoin_hashes::HashEngine for bitcoin_hashes::sha256t::HashEngine<T>
impl<T: bitcoin_hashes::sha256t::Tag> core::borrow::Borrow<[u8; 32]> for bitcoin_hashes::sha256t::Hash<T>
@@ -451,7 +453,6 @@ impl<T: core::fmt::Debug + bitcoin_hashes::HashEngine> core::fmt::Debug for bitc
impl<T: core::fmt::Debug> core::fmt::Debug for bitcoin_hashes::sha256t::HashEngine<T>
impl<T: core::hash::Hash + bitcoin_hashes::Hash> core::hash::Hash for bitcoin_hashes::hmac::Hmac<T>
impl<T: core::marker::Copy + bitcoin_hashes::Hash> core::marker::Copy for bitcoin_hashes::hmac::Hmac<T>
-impl<T: core::marker::Copy + bitcoin_hashes::HashEngine> core::marker::Copy for bitcoin_hashes::hkdf::Hkdf<T> where <T as bitcoin_hashes::HashEngine>::Hash: core::marker::Copy
impl<T> bitcoin_hashes::hkdf::Hkdf<T> where T: core::default::Default + bitcoin_hashes::HashEngine
impl<T> bitcoin_hashes::sha256t::Hash<T>
impl<T> bitcoin_hashes::sha256t::Hash<T> where T: bitcoin_hashes::sha256t::Tag
@@ -618,10 +619,12 @@ pub fn bitcoin_hashes::hash160::HashEngine::n_bytes_hashed(&self) -> u64
pub fn bitcoin_hashes::hash160::hash(data: &[u8]) -> bitcoin_hashes::hash160::Hash
pub fn bitcoin_hashes::hash160::hash_byte_chunks<B, I>(byte_slices: I) -> bitcoin_hashes::hash160::Hash where B: core::convert::AsRef<[u8]>, I: core::iter::traits::collect::IntoIterator<Item = B>
pub fn bitcoin_hashes::hkdf::Hkdf<T>::clone(&self) -> bitcoin_hashes::hkdf::Hkdf<T>
+pub fn bitcoin_hashes::hkdf::Hkdf<T>::drop(&mut self)
pub fn bitcoin_hashes::hkdf::Hkdf<T>::expand(&self, info: &[u8], okm: &mut [u8]) -> core::result::Result<(), bitcoin_hashes::hkdf::MaxLengthError>
pub fn bitcoin_hashes::hkdf::Hkdf<T>::expand_to_len(&self, info: &[u8], len: usize) -> core::result::Result<alloc::vec::Vec<u8>, bitcoin_hashes::hkdf::MaxLengthError>
pub fn bitcoin_hashes::hkdf::Hkdf<T>::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result
pub fn bitcoin_hashes::hkdf::Hkdf<T>::new(salt: &[u8], ikm: &[u8]) -> Self
+pub fn bitcoin_hashes::hkdf::Hkdf<T>::non_secure_erase(&mut self)
pub fn bitcoin_hashes::hkdf::MaxLengthError::clone(&self) -> bitcoin_hashes::hkdf::MaxLengthError
pub fn bitcoin_hashes::hkdf::MaxLengthError::eq(&self, other: &bitcoin_hashes::hkdf::MaxLengthError) -> bool
pub fn bitcoin_hashes::hkdf::MaxLengthError::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result
@@ -643,6 +646,7 @@ pub fn bitcoin_hashes::hmac::HmacEngine<T>::from_inner_engines(iengine: T, oengi
pub fn bitcoin_hashes::hmac::HmacEngine<T>::input(&mut self, buf: &[u8])
pub fn bitcoin_hashes::hmac::HmacEngine<T>::n_bytes_hashed(&self) -> u64
pub fn bitcoin_hashes::hmac::HmacEngine<T>::new(key: &[u8]) -> Self where T: core::default::Default
+pub fn bitcoin_hashes::hmac::HmacEngine<T>::non_secure_erase(&mut self)
pub fn bitcoin_hashes::muhash::Hash::as_byte_array(&self) -> &Self::Bytes
pub fn bitcoin_hashes::muhash::Hash::as_ref(&self) -> &[u8; 384]
pub fn bitcoin_hashes::muhash::Hash::as_ref(&self) -> &[u8]
diff --git a/api/hashes/no-features.txt b/api/hashes/no-features.txt
index 75f93bcc..31b14a5d 100644
--- a/api/hashes/no-features.txt
+++ b/api/hashes/no-features.txt
@@ -424,8 +424,10 @@ impl<T: bitcoin_hashes::Hash> core::cmp::Eq for bitcoin_hashes::hmac::Hmac<T>
impl<T: bitcoin_hashes::Hash> core::cmp::PartialEq for bitcoin_hashes::hmac::Hmac<T>
impl<T: bitcoin_hashes::Hash> core::convert::AsRef<[u8]> for bitcoin_hashes::hmac::Hmac<T>
impl<T: bitcoin_hashes::HashEngine> bitcoin_hashes::HashEngine for bitcoin_hashes::hmac::HmacEngine<T>
+impl<T: bitcoin_hashes::HashEngine> bitcoin_hashes::hkdf::Hkdf<T>
impl<T: bitcoin_hashes::HashEngine> bitcoin_hashes::hmac::HmacEngine<T>
impl<T: bitcoin_hashes::HashEngine> core::fmt::Debug for bitcoin_hashes::hkdf::Hkdf<T>
+impl<T: bitcoin_hashes::HashEngine> core::ops::drop::Drop for bitcoin_hashes::hkdf::Hkdf<T>
impl<T: bitcoin_hashes::sha256t::Tag> bitcoin_hashes::Hash for bitcoin_hashes::sha256t::Hash<T>
impl<T: bitcoin_hashes::sha256t::Tag> bitcoin_hashes::HashEngine for bitcoin_hashes::sha256t::HashEngine<T>
impl<T: bitcoin_hashes::sha256t::Tag> core::borrow::Borrow<[u8; 32]> for bitcoin_hashes::sha256t::Hash<T>
@@ -451,7 +453,6 @@ impl<T: core::fmt::Debug + bitcoin_hashes::HashEngine> core::fmt::Debug for bitc
impl<T: core::fmt::Debug> core::fmt::Debug for bitcoin_hashes::sha256t::HashEngine<T>
impl<T: core::hash::Hash + bitcoin_hashes::Hash> core::hash::Hash for bitcoin_hashes::hmac::Hmac<T>
impl<T: core::marker::Copy + bitcoin_hashes::Hash> core::marker::Copy for bitcoin_hashes::hmac::Hmac<T>
-impl<T: core::marker::Copy + bitcoin_hashes::HashEngine> core::marker::Copy for bitcoin_hashes::hkdf::Hkdf<T> where <T as bitcoin_hashes::HashEngine>::Hash: core::marker::Copy
impl<T> bitcoin_hashes::hkdf::Hkdf<T> where T: core::default::Default + bitcoin_hashes::HashEngine
impl<T> bitcoin_hashes::sha256t::Hash<T>
impl<T> bitcoin_hashes::sha256t::Hash<T> where T: bitcoin_hashes::sha256t::Tag
@@ -618,9 +619,11 @@ pub fn bitcoin_hashes::hash160::HashEngine::n_bytes_hashed(&self) -> u64
pub fn bitcoin_hashes::hash160::hash(data: &[u8]) -> bitcoin_hashes::hash160::Hash
pub fn bitcoin_hashes::hash160::hash_byte_chunks<B, I>(byte_slices: I) -> bitcoin_hashes::hash160::Hash where B: core::convert::AsRef<[u8]>, I: core::iter::traits::collect::IntoIterator<Item = B>
pub fn bitcoin_hashes::hkdf::Hkdf<T>::clone(&self) -> bitcoin_hashes::hkdf::Hkdf<T>
+pub fn bitcoin_hashes::hkdf::Hkdf<T>::drop(&mut self)
pub fn bitcoin_hashes::hkdf::Hkdf<T>::expand(&self, info: &[u8], okm: &mut [u8]) -> core::result::Result<(), bitcoin_hashes::hkdf::MaxLengthError>
pub fn bitcoin_hashes::hkdf::Hkdf<T>::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result
pub fn bitcoin_hashes::hkdf::Hkdf<T>::new(salt: &[u8], ikm: &[u8]) -> Self
+pub fn bitcoin_hashes::hkdf::Hkdf<T>::non_secure_erase(&mut self)
pub fn bitcoin_hashes::hkdf::MaxLengthError::clone(&self) -> bitcoin_hashes::hkdf::MaxLengthError
pub fn bitcoin_hashes::hkdf::MaxLengthError::eq(&self, other: &bitcoin_hashes::hkdf::MaxLengthError) -> bool
pub fn bitcoin_hashes::hkdf::MaxLengthError::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result
@@ -642,6 +645,7 @@ pub fn bitcoin_hashes::hmac::HmacEngine<T>::from_inner_engines(iengine: T, oengi
pub fn bitcoin_hashes::hmac::HmacEngine<T>::input(&mut self, buf: &[u8])
pub fn bitcoin_hashes::hmac::HmacEngine<T>::n_bytes_hashed(&self) -> u64
pub fn bitcoin_hashes::hmac::HmacEngine<T>::new(key: &[u8]) -> Self where T: core::default::Default
+pub fn bitcoin_hashes::hmac::HmacEngine<T>::non_secure_erase(&mut self)
pub fn bitcoin_hashes::muhash::Hash::as_byte_array(&self) -> &Self::Bytes
pub fn bitcoin_hashes::muhash::Hash::as_ref(&self) -> &[u8; 384]
pub fn bitcoin_hashes::muhash::Hash::as_ref(&self) -> &[u8]
Why this scored 15/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.