@@ -528,12 +528,15 @@ pub enum DtlsFingerprint {
528
528
} ,
529
529
}
530
530
531
- fn hex_as_bytes ( input : & str , output : & mut [ u8 ] ) {
531
+ fn hex_as_bytes < const N : usize > ( input : & str ) -> [ u8 ; N ] {
532
+ let mut output = [ 0_u8 ; N ] ;
532
533
for ( i, o) in input. split ( ':' ) . zip ( & mut output. iter_mut ( ) ) {
533
534
* o = u8:: from_str_radix ( i, 16 ) . unwrap_or_else ( |error| {
534
535
panic ! ( "Failed to parse value {i} as series of hex bytes: {error}" )
535
536
} ) ;
536
537
}
538
+
539
+ output
537
540
}
538
541
539
542
impl DtlsFingerprint {
@@ -565,45 +568,35 @@ impl DtlsFingerprint {
565
568
pub ( crate ) fn from_fbs ( fingerprint : & web_rtc_transport:: Fingerprint ) -> DtlsFingerprint {
566
569
match fingerprint. algorithm {
567
570
web_rtc_transport:: FingerprintAlgorithm :: Sha1 => {
568
- let mut value_result = [ 0_u8 ; 20 ] ;
569
-
570
- hex_as_bytes ( fingerprint. value . as_str ( ) , & mut value_result) ;
571
+ let value_result = hex_as_bytes :: < 20 > ( fingerprint. value . as_str ( ) ) ;
571
572
572
573
DtlsFingerprint :: Sha1 {
573
574
value : value_result,
574
575
}
575
576
}
576
577
web_rtc_transport:: FingerprintAlgorithm :: Sha224 => {
577
- let mut value_result = [ 0_u8 ; 28 ] ;
578
-
579
- hex_as_bytes ( fingerprint. value . as_str ( ) , & mut value_result) ;
578
+ let value_result = hex_as_bytes :: < 28 > ( fingerprint. value . as_str ( ) ) ;
580
579
581
580
DtlsFingerprint :: Sha224 {
582
581
value : value_result,
583
582
}
584
583
}
585
584
web_rtc_transport:: FingerprintAlgorithm :: Sha256 => {
586
- let mut value_result = [ 0_u8 ; 32 ] ;
587
-
588
- hex_as_bytes ( fingerprint. value . as_str ( ) , & mut value_result) ;
585
+ let value_result = hex_as_bytes :: < 32 > ( fingerprint. value . as_str ( ) ) ;
589
586
590
587
DtlsFingerprint :: Sha256 {
591
588
value : value_result,
592
589
}
593
590
}
594
591
web_rtc_transport:: FingerprintAlgorithm :: Sha384 => {
595
- let mut value_result = [ 0_u8 ; 48 ] ;
596
-
597
- hex_as_bytes ( fingerprint. value . as_str ( ) , & mut value_result) ;
592
+ let value_result = hex_as_bytes :: < 48 > ( fingerprint. value . as_str ( ) ) ;
598
593
599
594
DtlsFingerprint :: Sha384 {
600
595
value : value_result,
601
596
}
602
597
}
603
598
web_rtc_transport:: FingerprintAlgorithm :: Sha512 => {
604
- let mut value_result = [ 0_u8 ; 64 ] ;
605
-
606
- hex_as_bytes ( fingerprint. value . as_str ( ) , & mut value_result) ;
599
+ let value_result = hex_as_bytes :: < 64 > ( fingerprint. value . as_str ( ) ) ;
607
600
608
601
DtlsFingerprint :: Sha512 {
609
602
value : value_result,
0 commit comments