We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
1 parent 338c078 commit 97c046fCopy full SHA for 97c046f
ctr/src/lib.rs
@@ -241,5 +241,11 @@ fn xor(buf: &mut [u8], key: &[u8]) {
241
#[inline(always)]
242
fn to_slice<C: BlockEncrypt>(blocks: &ParBlocks<C>) -> &[u8] {
243
let blocks_len = C::BlockSize::to_usize() * C::ParBlocks::to_usize();
244
+ // SAFETY:
245
+ // - `blocks` is a `GenericArray<GenericArray<u8, C::BlockSize>, C::ParBlocks>`, and
246
+ // so `blocks.as_ptr()` returns a pointer to the `&[GenericArray<u8, C::BlockSize>]`
247
+ // slice represented by `blocks`.
248
+ // - `GenericArray<T, N>` has the same layout as `[T; N]`.
249
+ // - `[[u8; M]; N]` has the same layout as `[u8; M * N]`.
250
unsafe { core::slice::from_raw_parts(blocks.as_ptr() as *const u8, blocks_len) }
251
}
0 commit comments