1
1
//!
2
2
3
3
use crate :: qcow:: Qcow3 ;
4
- use aes_gcm:: KeyInit ;
5
- use aes_gcm:: { aead:: Aead , Aes256Gcm , Key , Nonce } ;
6
- use anyhow:: bail;
7
- use anyhow:: Result ;
4
+ use aes_gcm:: { Aes256Gcm , Key , KeyInit , Nonce , aead:: Aead } ;
5
+ use anyhow:: { Result , bail} ;
8
6
use binrw:: { BinRead , BinReaderExt , BinWrite } ;
9
7
use rand:: Rng ;
10
8
use regex:: Regex ;
11
9
use serde:: { Deserialize , Serialize } ;
12
10
use sha2:: { Digest , Sha256 } ;
13
- use std:: ffi:: CStr ;
14
- use std:: path:: PathBuf ;
15
11
use std:: {
12
+ ffi:: CStr ,
16
13
fs:: File ,
17
14
io:: { BufReader , Cursor , Read , Seek , SeekFrom , Write } ,
18
- path:: Path ,
15
+ path:: { Path , PathBuf } ,
19
16
time:: { SystemTime , UNIX_EPOCH } ,
20
17
} ;
21
18
use strum:: { Display , EnumIter } ;
@@ -639,16 +636,16 @@ impl ImageBuilder {
639
636
640
637
// Prepare cipher and RNG if the image header should be encrypted
641
638
let header_cipher = new_key ( self . password . clone ( ) . unwrap_or ( "" . to_string ( ) ) ) ;
642
- let mut rng = rand:: thread_rng ( ) ;
639
+ let mut rng = rand:: rng ( ) ;
643
640
644
641
// Prepare directory
645
642
let mut directory = Directory {
646
- protected_nonce : rng. gen :: < [ u8 ; 12 ] > ( ) ,
643
+ protected_nonce : rng. random :: < [ u8 ; 12 ] > ( ) ,
647
644
protected_size : 0 ,
648
- config_nonce : rng. gen :: < [ u8 ; 12 ] > ( ) ,
645
+ config_nonce : rng. random :: < [ u8 ; 12 ] > ( ) ,
649
646
config_offset : 0 ,
650
647
config_size : 0 ,
651
- digest_table_nonce : rng. gen :: < [ u8 ; 12 ] > ( ) ,
648
+ digest_table_nonce : rng. random :: < [ u8 ; 12 ] > ( ) ,
652
649
digest_table_offset : 0 ,
653
650
digest_table_size : 0 ,
654
651
} ;
@@ -658,7 +655,7 @@ impl ImageBuilder {
658
655
version : 1 ,
659
656
arch : ImageArch :: Amd64 , // TODO
660
657
size,
661
- directory_nonce : rng. gen :: < [ u8 ; 12 ] > ( ) ,
658
+ directory_nonce : rng. random :: < [ u8 ; 12 ] > ( ) ,
662
659
directory_offset : 0 ,
663
660
directory_size : 0 ,
664
661
timestamp : SystemTime :: now ( ) . duration_since ( UNIX_EPOCH ) ?. as_secs ( ) ,
@@ -684,15 +681,15 @@ impl ImageBuilder {
684
681
} else {
685
682
ClusterEncryptionType :: None
686
683
} ,
687
- cluster_key : rng. gen :: < [ u8 ; 32 ] > ( ) ,
684
+ cluster_key : rng. random :: < [ u8 ; 32 ] > ( ) ,
688
685
nonce_count : 0 ,
689
686
nonce_table : vec ! [ ] ,
690
687
} ;
691
688
692
689
if self . password . is_some ( ) {
693
690
protected_header. nonce_count = protected_header. cluster_count ;
694
691
protected_header. nonce_table = ( 0 ..protected_header. cluster_count )
695
- . map ( |_| rng. gen :: < [ u8 ; 12 ] > ( ) )
692
+ . map ( |_| rng. random :: < [ u8 ; 12 ] > ( ) )
696
693
. collect ( ) ;
697
694
}
698
695
@@ -815,13 +812,15 @@ impl ImageBuilder {
815
812
cluster_count += 1 ;
816
813
}
817
814
block_offset += source. header . cluster_size ( ) ;
818
- // self.progress(source.header.cluster_size(), source.header.size);
815
+ // self.progress(source.header.cluster_size(),
816
+ // source.header.size);
819
817
}
820
818
} else {
821
819
block_offset +=
822
820
source. header . cluster_size ( ) * source. header . l2_entries_per_cluster ( ) ;
823
821
// self.progress(
824
- // source.header.cluster_size() * source.header.l2_entries_per_cluster(),
822
+ // source.header.cluster_size() *
823
+ // source.header.l2_entries_per_cluster(),
825
824
// source.header.size,
826
825
// );
827
826
}
@@ -891,12 +890,13 @@ mod tests {
891
890
#[ test]
892
891
fn convert_random_data ( ) -> Result < ( ) > {
893
892
let tmp = tempfile:: tempdir ( ) ?;
893
+ let rng = rand:: rng ( ) ;
894
894
895
895
// Generate file of random size and contents
896
- let size = rand :: thread_rng ( ) . gen_range ( 512 ..=1000 ) ;
896
+ let size = rng . gen_range ( 512 ..=1000 ) ;
897
897
let mut raw: Vec < u8 > = Vec :: new ( ) ;
898
898
for _ in 0 ..size {
899
- raw. push ( rand :: thread_rng ( ) . gen ( ) ) ;
899
+ raw. push ( rng . random ( ) ) ;
900
900
}
901
901
902
902
// Write out for qemu-img
0 commit comments