Skip to content
Snippets Groups Projects
Commit 08533b60 authored by Éloïs's avatar Éloïs
Browse files

[ref] dewif:read: return Iterator instead of IntoIteratorr

parent d19ebc8c
No related branches found
No related tags found
No related merge requests found
......@@ -54,8 +54,7 @@
//! // Read DEWIF file content
//! // If the file content is correct, we get a key-pair iterator.
//! let mut key_pair_iter = read_dewif_file_content(dewif_file_content, encryption_passphrase)
//! .expect("invalid DEWIF file.")
//! .into_iter();
//! .expect("invalid DEWIF file.");
//!
//! // Get first key-pair
//! let key_pair = key_pair_iter
......@@ -138,8 +137,7 @@ mod tests {
let dewif_content = write_dewif_v1_content(&written_keypair, "toto");
let mut keypairs_iter = read_dewif_file_content(&dewif_content, "toto")
.expect("dewif content must be readed successfully")
.into_iter();
.expect("dewif content must be readed successfully");
let keypair_read = keypairs_iter.next().expect("Must read one keypair");
assert_eq!(KeyPairEnum::Ed25519(written_keypair), keypair_read,)
......@@ -172,8 +170,7 @@ mod tests {
let dewif_content = write_dewif_v2_content(&written_keypair1, &written_keypair2, "toto");
let mut keypairs_iter = read_dewif_file_content(&dewif_content, "toto")
.expect("dewif content must be readed successfully")
.into_iter();
.expect("dewif content must be readed successfully");
let keypair1_read = keypairs_iter.next().expect("Must read one keypair");
let keypair2_read = keypairs_iter.next().expect("Must read one keypair");
......
......@@ -25,6 +25,9 @@ use thiserror::Error;
const MAX_KEYPAIRS_COUNT: usize = 2;
type KeyPairsArray = ArrayVec<[KeyPairEnum; MAX_KEYPAIRS_COUNT]>;
type KeyPairsIter = arrayvec::IntoIter<[KeyPairEnum; MAX_KEYPAIRS_COUNT]>;
/// Error when try to read DEWIF file content
#[derive(Clone, Debug, Error)]
pub enum DewifReadError {
......@@ -55,7 +58,7 @@ pub enum DewifReadError {
pub fn read_dewif_file_content(
file_content: &str,
passphrase: &str,
) -> Result<impl IntoIterator<Item = KeyPairEnum>, DewifReadError> {
) -> Result<impl Iterator<Item = KeyPairEnum>, DewifReadError> {
let mut bytes = base64::decode(file_content).map_err(DewifReadError::InvalidBase64Str)?;
if bytes.len() < 4 {
......@@ -66,9 +69,9 @@ pub fn read_dewif_file_content(
match version {
1 => Ok({
let mut array_keypairs = ArrayVec::new();
let mut array_keypairs = KeyPairsArray::new();
array_keypairs.push(read_dewif_v1(&mut bytes[4..], passphrase)?);
array_keypairs
array_keypairs.into_iter()
}),
2 => read_dewif_v2(&mut bytes[4..], passphrase),
other_version => Err(DewifReadError::UnsupportedVersion {
......@@ -92,11 +95,8 @@ fn read_dewif_v1(bytes: &mut [u8], passphrase: &str) -> Result<KeyPairEnum, Dewi
bytes_to_checked_keypair(bytes)
}
fn read_dewif_v2(
bytes: &mut [u8],
passphrase: &str,
) -> Result<ArrayVec<[KeyPairEnum; MAX_KEYPAIRS_COUNT]>, DewifReadError> {
let mut array_keypairs = ArrayVec::new();
fn read_dewif_v2(bytes: &mut [u8], passphrase: &str) -> Result<KeyPairsIter, DewifReadError> {
let mut array_keypairs = KeyPairsArray::new();
match bytes.len() {
len if len < super::V2_ENCRYPTED_BYTES_LEN => return Err(DewifReadError::TooShortContent),
......@@ -111,7 +111,7 @@ fn read_dewif_v2(
array_keypairs.push(bytes_to_checked_keypair(&bytes[..64])?);
array_keypairs.push(bytes_to_checked_keypair(&bytes[64..])?);
Ok(array_keypairs)
Ok(array_keypairs.into_iter())
}
fn bytes_to_checked_keypair(bytes: &[u8]) -> Result<KeyPairEnum, DewifReadError> {
......@@ -173,8 +173,7 @@ mod tests {
// Read DEWIF file content
// If the file content is correct, we get a key-pair iterator.
let mut key_pair_iter = read_dewif_file_content(dewif_file_content, encryption_passphrase)
.expect("invalid DEWIF file.")
.into_iter();
.expect("invalid DEWIF file.");
// Get first key-pair
let key_pair = key_pair_iter
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment