6f993b8bde
This adds a function to generate the derivation path. The computation is based on the Go implementation. Change-Id: Iae89db4976f5fd9208f0453f73688689a245cd66 Reviewed-on: https://cl.tvl.fyi/c/depot/+/7729 Tested-by: BuildkiteCI Reviewed-by: flokli <flokli@flokli.de>
15 lines
611 B
Rust
15 lines
611 B
Rust
/// CompressHash takes an arbitrary long sequence of bytes (usually a hash
|
|
/// digest), and returns a sequence of bytes of length output_size.
|
|
/// It's calculated by rotating through the bytes in the output buffer (zero-
|
|
/// initialized), and XOR'ing with each byte of the passed input.
|
|
/// It consumes 1 byte at a time, and XOR's it with the current value in the
|
|
/// output buffer.
|
|
pub fn compress_hash(input: &[u8], output_size: usize) -> Vec<u8> {
|
|
let mut output: Vec<u8> = vec![0; output_size];
|
|
|
|
for (ii, ch) in input.iter().enumerate() {
|
|
output[ii % output_size] ^= ch;
|
|
}
|
|
|
|
output
|
|
}
|