@@ -267,48 +267,6 @@ impl Engine512 {
267
267
268
268
self . finished = true ;
269
269
}
270
-
271
- fn result_512 ( & mut self , out : & mut [ u8 ] ) {
272
- self . finish ( ) ;
273
-
274
- from_u64 ( self . H0 , out. mut_slice ( 0 , 8 ) ) ;
275
- from_u64 ( self . H1 , out. mut_slice ( 8 , 16 ) ) ;
276
- from_u64 ( self . H2 , out. mut_slice ( 16 , 24 ) ) ;
277
- from_u64 ( self . H3 , out. mut_slice ( 24 , 32 ) ) ;
278
- from_u64 ( self . H4 , out. mut_slice ( 32 , 40 ) ) ;
279
- from_u64 ( self . H5 , out. mut_slice ( 40 , 48 ) ) ;
280
- from_u64 ( self . H6 , out. mut_slice ( 48 , 56 ) ) ;
281
- from_u64 ( self . H7 , out. mut_slice ( 56 , 64 ) ) ;
282
- }
283
-
284
- fn result_384 ( & mut self , out : & mut [ u8 ] ) {
285
- self . finish ( ) ;
286
-
287
- from_u64 ( self . H0 , out. mut_slice ( 0 , 8 ) ) ;
288
- from_u64 ( self . H1 , out. mut_slice ( 8 , 16 ) ) ;
289
- from_u64 ( self . H2 , out. mut_slice ( 16 , 24 ) ) ;
290
- from_u64 ( self . H3 , out. mut_slice ( 24 , 32 ) ) ;
291
- from_u64 ( self . H4 , out. mut_slice ( 32 , 40 ) ) ;
292
- from_u64 ( self . H5 , out. mut_slice ( 40 , 48 ) ) ;
293
- }
294
-
295
- fn result_256 ( & mut self , out : & mut [ u8 ] ) {
296
- self . finish ( ) ;
297
-
298
- from_u64 ( self . H0 , out. mut_slice ( 0 , 8 ) ) ;
299
- from_u64 ( self . H1 , out. mut_slice ( 8 , 16 ) ) ;
300
- from_u64 ( self . H2 , out. mut_slice ( 16 , 24 ) ) ;
301
- from_u64 ( self . H3 , out. mut_slice ( 24 , 32 ) ) ;
302
- }
303
-
304
- fn result_224 ( & mut self , out : & mut [ u8 ] ) {
305
- self . finish ( ) ;
306
-
307
- from_u64 ( self . H0 , out. mut_slice ( 0 , 8 ) ) ;
308
- from_u64 ( self . H1 , out. mut_slice ( 8 , 16 ) ) ;
309
- from_u64 ( self . H2 , out. mut_slice ( 16 , 24 ) ) ;
310
- from_u32 ( ( self . H3 >> 32 ) as u32 , out. mut_slice ( 24 , 28 ) ) ;
311
- }
312
270
}
313
271
314
272
// Constants necessary for SHA-2 512 family of digests.
@@ -372,7 +330,17 @@ impl Digest for Sha512 {
372
330
}
373
331
374
332
fn result ( & mut self , out : & mut [ u8 ] ) {
375
- self . engine . result_512 ( out)
333
+ self . engine . finish ( ) ;
334
+
335
+ from_u64 ( self . engine . H0 , out. mut_slice ( 0 , 8 ) ) ;
336
+ from_u64 ( self . engine . H1 , out. mut_slice ( 8 , 16 ) ) ;
337
+ from_u64 ( self . engine . H2 , out. mut_slice ( 16 , 24 ) ) ;
338
+ from_u64 ( self . engine . H3 , out. mut_slice ( 24 , 32 ) ) ;
339
+ from_u64 ( self . engine . H4 , out. mut_slice ( 32 , 40 ) ) ;
340
+ from_u64 ( self . engine . H5 , out. mut_slice ( 40 , 48 ) ) ;
341
+ from_u64 ( self . engine . H6 , out. mut_slice ( 48 , 56 ) ) ;
342
+ from_u64 ( self . engine . H7 , out. mut_slice ( 56 , 64 ) ) ;
343
+
376
344
}
377
345
378
346
fn reset ( & mut self ) {
@@ -428,7 +396,14 @@ impl Digest for Sha384 {
428
396
}
429
397
430
398
fn result ( & mut self , out : & mut [ u8 ] ) {
431
- self . engine . result_384 ( out)
399
+ self . engine . finish ( ) ;
400
+
401
+ from_u64 ( self . engine . H0 , out. mut_slice ( 0 , 8 ) ) ;
402
+ from_u64 ( self . engine . H1 , out. mut_slice ( 8 , 16 ) ) ;
403
+ from_u64 ( self . engine . H2 , out. mut_slice ( 16 , 24 ) ) ;
404
+ from_u64 ( self . engine . H3 , out. mut_slice ( 24 , 32 ) ) ;
405
+ from_u64 ( self . engine . H4 , out. mut_slice ( 32 , 40 ) ) ;
406
+ from_u64 ( self . engine . H5 , out. mut_slice ( 40 , 48 ) ) ;
432
407
}
433
408
434
409
fn reset ( & mut self ) {
@@ -484,7 +459,12 @@ impl Digest for Sha512Trunc256 {
484
459
}
485
460
486
461
fn result ( & mut self , out : & mut [ u8 ] ) {
487
- self . engine . result_256 ( out)
462
+ self . engine . finish ( ) ;
463
+
464
+ from_u64 ( self . engine . H0 , out. mut_slice ( 0 , 8 ) ) ;
465
+ from_u64 ( self . engine . H1 , out. mut_slice ( 8 , 16 ) ) ;
466
+ from_u64 ( self . engine . H2 , out. mut_slice ( 16 , 24 ) ) ;
467
+ from_u64 ( self . engine . H3 , out. mut_slice ( 24 , 32 ) ) ;
488
468
}
489
469
490
470
fn reset ( & mut self ) {
@@ -540,7 +520,12 @@ impl Digest for Sha512Trunc224 {
540
520
}
541
521
542
522
fn result ( & mut self , out : & mut [ u8 ] ) {
543
- self . engine . result_224 ( out)
523
+ self . engine . finish ( ) ;
524
+
525
+ from_u64 ( self . engine . H0 , out. mut_slice ( 0 , 8 ) ) ;
526
+ from_u64 ( self . engine . H1 , out. mut_slice ( 8 , 16 ) ) ;
527
+ from_u64 ( self . engine . H2 , out. mut_slice ( 16 , 24 ) ) ;
528
+ from_u32 ( ( self . engine . H3 >> 32 ) as u32 , out. mut_slice ( 24 , 28 ) ) ;
544
529
}
545
530
546
531
fn reset ( & mut self ) {
@@ -774,31 +759,6 @@ impl Engine256 {
774
759
775
760
self . finished = true ;
776
761
}
777
-
778
- fn result_256 ( & mut self , out : & mut [ u8 ] ) {
779
- self . finish ( ) ;
780
-
781
- from_u32 ( self . H0 , out. mut_slice ( 0 , 4 ) ) ;
782
- from_u32 ( self . H1 , out. mut_slice ( 4 , 8 ) ) ;
783
- from_u32 ( self . H2 , out. mut_slice ( 8 , 12 ) ) ;
784
- from_u32 ( self . H3 , out. mut_slice ( 12 , 16 ) ) ;
785
- from_u32 ( self . H4 , out. mut_slice ( 16 , 20 ) ) ;
786
- from_u32 ( self . H5 , out. mut_slice ( 20 , 24 ) ) ;
787
- from_u32 ( self . H6 , out. mut_slice ( 24 , 28 ) ) ;
788
- from_u32 ( self . H7 , out. mut_slice ( 28 , 32 ) ) ;
789
- }
790
-
791
- fn result_224 ( & mut self , out : & mut [ u8 ] ) {
792
- self . finish ( ) ;
793
-
794
- from_u32 ( self . H0 , out. mut_slice ( 0 , 4 ) ) ;
795
- from_u32 ( self . H1 , out. mut_slice ( 4 , 8 ) ) ;
796
- from_u32 ( self . H2 , out. mut_slice ( 8 , 12 ) ) ;
797
- from_u32 ( self . H3 , out. mut_slice ( 12 , 16 ) ) ;
798
- from_u32 ( self . H4 , out. mut_slice ( 16 , 20 ) ) ;
799
- from_u32 ( self . H5 , out. mut_slice ( 20 , 24 ) ) ;
800
- from_u32 ( self . H6 , out. mut_slice ( 24 , 28 ) ) ;
801
- }
802
762
}
803
763
804
764
static K32 : [ u32 , ..64 ] = [
@@ -857,7 +817,16 @@ impl Digest for Sha256 {
857
817
}
858
818
859
819
fn result ( & mut self , out : & mut [ u8 ] ) {
860
- self . engine . result_256 ( out)
820
+ self . engine . finish ( ) ;
821
+
822
+ from_u32 ( self . engine . H0 , out. mut_slice ( 0 , 4 ) ) ;
823
+ from_u32 ( self . engine . H1 , out. mut_slice ( 4 , 8 ) ) ;
824
+ from_u32 ( self . engine . H2 , out. mut_slice ( 8 , 12 ) ) ;
825
+ from_u32 ( self . engine . H3 , out. mut_slice ( 12 , 16 ) ) ;
826
+ from_u32 ( self . engine . H4 , out. mut_slice ( 16 , 20 ) ) ;
827
+ from_u32 ( self . engine . H5 , out. mut_slice ( 20 , 24 ) ) ;
828
+ from_u32 ( self . engine . H6 , out. mut_slice ( 24 , 28 ) ) ;
829
+ from_u32 ( self . engine . H7 , out. mut_slice ( 28 , 32 ) ) ;
861
830
}
862
831
863
832
fn reset ( & mut self ) {
@@ -913,7 +882,15 @@ impl Digest for Sha224 {
913
882
}
914
883
915
884
fn result ( & mut self , out : & mut [ u8 ] ) {
916
- self . engine . result_224 ( out)
885
+ self . engine . finish ( ) ;
886
+
887
+ from_u32 ( self . engine . H0 , out. mut_slice ( 0 , 4 ) ) ;
888
+ from_u32 ( self . engine . H1 , out. mut_slice ( 4 , 8 ) ) ;
889
+ from_u32 ( self . engine . H2 , out. mut_slice ( 8 , 12 ) ) ;
890
+ from_u32 ( self . engine . H3 , out. mut_slice ( 12 , 16 ) ) ;
891
+ from_u32 ( self . engine . H4 , out. mut_slice ( 16 , 20 ) ) ;
892
+ from_u32 ( self . engine . H5 , out. mut_slice ( 20 , 24 ) ) ;
893
+ from_u32 ( self . engine . H6 , out. mut_slice ( 24 , 28 ) ) ;
917
894
}
918
895
919
896
fn reset ( & mut self ) {
0 commit comments