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