@@ -835,12 +835,15 @@ public static byte[] HMACSHA256(byte[] key, byte[] data)
835
835
#elif NO_NATIVE_HMACSHA512 // There is a native hash, but no native HMAC.
836
836
public static byte [ ] HMACSHA512 ( byte [ ] key , byte [ ] data )
837
837
{
838
- var mac = new NBitcoin . BouncyCastle . Crypto . Macs . HMac ( new ManagedSha512Digest ( ) ) ;
839
- mac . Init ( new KeyParameter ( key ) ) ;
840
- mac . BlockUpdate ( data , 0 , data . Length ) ;
841
- byte [ ] result = new byte [ mac . GetMacSize ( ) ] ;
842
- mac . DoFinal ( result , 0 ) ;
843
- return result ;
838
+ using ( var sha512 = new ManagedSha512Digest ( ) )
839
+ {
840
+ var mac = new NBitcoin . BouncyCastle . Crypto . Macs . HMac ( sha512 ) ;
841
+ mac . Init ( new KeyParameter ( key ) ) ;
842
+ mac . BlockUpdate ( data , 0 , data . Length ) ;
843
+ byte [ ] result = new byte [ mac . GetMacSize ( ) ] ;
844
+ mac . DoFinal ( result , 0 ) ;
845
+ return result ;
846
+ }
844
847
}
845
848
846
849
#if HAS_SPAN
@@ -859,12 +862,15 @@ public static bool HMACSHA512(byte[] key, ReadOnlySpan<byte> data, Span<byte> ou
859
862
860
863
public static byte [ ] HMACSHA256 ( byte [ ] key , byte [ ] data )
861
864
{
862
- var mac = new NBitcoin . BouncyCastle . Crypto . Macs . HMac ( new ManagedSha256Digest ( ) ) ;
863
- mac . Init ( new KeyParameter ( key ) ) ;
864
- mac . BlockUpdate ( data , 0 , data . Length ) ;
865
- byte [ ] result = new byte [ mac . GetMacSize ( ) ] ;
866
- mac . DoFinal ( result , 0 ) ;
867
- return result ;
865
+ using ( var sha256 = new ManagedSha256Digest ( ) )
866
+ {
867
+ var mac = new NBitcoin . BouncyCastle . Crypto . Macs . HMac ( sha256 ) ;
868
+ mac . Init ( new KeyParameter ( key ) ) ;
869
+ mac . BlockUpdate ( data , 0 , data . Length ) ;
870
+ byte [ ] result = new byte [ mac . GetMacSize ( ) ] ;
871
+ mac . DoFinal ( result , 0 ) ;
872
+ return result ;
873
+ }
868
874
}
869
875
#else // There is no native hash and no native HMAC
870
876
public static byte [ ] HMACSHA512 ( byte [ ] key , byte [ ] data )
0 commit comments