Skip to content

Commit bc41b39

Browse files
committed
bindings: support blake2s and blake2b hash functions
1 parent 8d4881b commit bc41b39

File tree

14 files changed

+129
-21
lines changed

14 files changed

+129
-21
lines changed

bindings/java/src/org/sf/rhash/HashType.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@
1919

2020
/**
2121
* Type of hashing algorithm. Supported algorithms are CRC32, CRC32C,
22-
* MD4, MD5, SHA1/SHA2, Tiger, DC++ TTH, BitTorrent BTIH,
23-
* AICH, EDonkey 2000 hash, GOST R 34.11-94, GOST R 34.11-2012,
24-
* RIPEMD-160, HAS-160, EDON-R 256/512, Whirlpool and Snefru-128/256.
22+
* MD4, MD5, SHA1/SHA2/SHA3, Tiger, DC++ TTH, BitTorrent BTIH, AICH,
23+
* EDonkey 2000 hash, GOST R 34.11-94, GOST R 34.11-2012, RIPEMD-160,
24+
* HAS-160, BLAKE2s/BLAKE2b, EDON-R 256/512, Whirlpool and Snefru-128/256.
2525
*/
2626
public enum HashType {
2727
/** CRC32 checksum. */
@@ -80,7 +80,11 @@ public enum HashType {
8080
/** Snefru-128 hash. */
8181
SNEFRU128(1 << 27),
8282
/** Snefru-256 hash. */
83-
SNEFRU256(1 << 28);
83+
SNEFRU256(1 << 28),
84+
/** BLAKE2s hash. */
85+
BLAKE2S(1 << 29),
86+
/** BLAKE2b hash. */
87+
BLAKE2B(1 << 30);
8488

8589
/** hash_id for the native API */
8690
private int hashId;
@@ -126,7 +130,6 @@ static HashType forHashFlags(int flags) {
126130
* @return size of binary digest, in bytes
127131
*/
128132
public int getDigestSize() {
129-
//TODO: rhash_get_digest_size
130-
return -1;
133+
return Bindings.rhash_get_digest_size(hashId);
131134
}
132135
}

bindings/java/test/RHashTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ public void testAllHashes() {
4646
assertEquals("697f2d856172cb8309d6b8b97dac4de344b549d4dee61edfb4962d8698b7fa803f4f93ff24393586e28b5b957ac3d1d369420ce53332712f997bd336d09ab02a", r.getDigest(SHA3_512).toString());
4747
assertEquals("bf5ce540ae51bc50399f96746c5a15bd", r.getDigest(SNEFRU128).toString());
4848
assertEquals("45161589ac317be0ceba70db2573ddda6e668a31984b39bf65e4b664b584c63d", r.getDigest(SNEFRU256).toString());
49+
assertEquals("4a0d129873403037c2cd9b9048203687f6233fb6738956e0349bd4320fec3e90", r.getDigest(BLAKE2S).toString());
50+
assertEquals("333fcb4ee1aa7c115355ec66ceac917c8bfd815bf7587d325aec1864edd24e34d5abe2c6b1b5ee3face62fed78dbef802f2a85cb91d455a8f5249d330853cb3c", r.getDigest(BLAKE2B).toString());
4951

5052
r.reset();
5153
r.finish();

bindings/mono/HashType.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,10 @@ public enum HashType : uint {
8181
/* Snefru-128 hash. */
8282
SNEFRU128 = 1 << 27,
8383
/* Snefru-256 hash. */
84-
SNEFRU256 = 1 << 28
84+
SNEFRU256 = 1 << 28,
85+
/* BLAKE2s hash. */
86+
BLAKE2S = 1 << 29,
87+
/* BLAKE2b hash. */
88+
BLAKE2B = 1 << 30
8589
}
8690
}

bindings/mono/doc/RHash/HashType.xml

Lines changed: 75 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@
1212
<summary>Type of hashing algorithm.</summary>
1313
<remarks>
1414
<para>
15-
Supported algorithms are MD4, MD5, SHA1/SHA2, Tiger,
16-
DC++ TTH, BitTorrent BTIH, AICH, EDonkey 2000 hash, GOST R 34.11-94,
17-
RIPEMD-160, HAS-160, EDON-R 256/512, Whirlpool and Snefru-128/256.
15+
Supported algorithms are CRC32, CRC32C, MD4, MD5, SHA1/SHA2/SHA3, AICH, ED2K,
16+
Tiger, DC++ TTH, GOST R 34.11-94, GOST R 34.11-2012, BitTorrent BTIH, RIPEMD-160,
17+
HAS-160, BLAKE2s/BLAKE2b, EDON-R 256/512, Whirlpool and Snefru-128/256.
1818
</para>
1919
<para>
2020
Constants may be OR-combined to form <see cref="T:System.UInt32" /> mask of hashes.
@@ -36,6 +36,34 @@ Constants may be OR-combined to form <see cref="T:System.UInt32" /> mask of hash
3636
<summary>eMule AICH.</summary>
3737
</Docs>
3838
</Member>
39+
<Member MemberName="BLAKE2B">
40+
<MemberSignature Language="C#" Value="BLAKE2B" />
41+
<MemberSignature Language="ILAsm" Value=".field public static literal valuetype RHash.HashType BLAKE2B = unsigned int32(1073741824)" />
42+
<MemberType>Field</MemberType>
43+
<AssemblyInfo>
44+
<AssemblyVersion>1.0.1.1</AssemblyVersion>
45+
</AssemblyInfo>
46+
<ReturnValue>
47+
<ReturnType>RHash.HashType</ReturnType>
48+
</ReturnValue>
49+
<Docs>
50+
<summary>BLAKE2b hash.</summary>
51+
</Docs>
52+
</Member>
53+
<Member MemberName="BLAKE2S">
54+
<MemberSignature Language="C#" Value="BLAKE2S" />
55+
<MemberSignature Language="ILAsm" Value=".field public static literal valuetype RHash.HashType BLAKE2S = unsigned int32(536870912)" />
56+
<MemberType>Field</MemberType>
57+
<AssemblyInfo>
58+
<AssemblyVersion>1.0.1.1</AssemblyVersion>
59+
</AssemblyInfo>
60+
<ReturnValue>
61+
<ReturnType>RHash.HashType</ReturnType>
62+
</ReturnValue>
63+
<Docs>
64+
<summary>BLAKE2s hash.</summary>
65+
</Docs>
66+
</Member>
3967
<Member MemberName="BTIH">
4068
<MemberSignature Language="C#" Value="BTIH" />
4169
<MemberSignature Language="ILAsm" Value=".field public static literal valuetype RHash.HashType BTIH = unsigned int32(64)" />
@@ -64,6 +92,20 @@ Constants may be OR-combined to form <see cref="T:System.UInt32" /> mask of hash
6492
<summary>CRC32 checksum.</summary>
6593
</Docs>
6694
</Member>
95+
<Member MemberName="CRC32C">
96+
<MemberSignature Language="C#" Value="CRC32C" />
97+
<MemberSignature Language="ILAsm" Value=".field public static literal valuetype RHash.HashType CRC32C = unsigned int32(67108864)" />
98+
<MemberType>Field</MemberType>
99+
<AssemblyInfo>
100+
<AssemblyVersion>1.0.1.1</AssemblyVersion>
101+
</AssemblyInfo>
102+
<ReturnValue>
103+
<ReturnType>RHash.HashType</ReturnType>
104+
</ReturnValue>
105+
<Docs>
106+
<summary>CRC32C checksum.</summary>
107+
</Docs>
108+
</Member>
67109
<Member MemberName="ED2K">
68110
<MemberSignature Language="C#" Value="ED2K" />
69111
<MemberSignature Language="ILAsm" Value=".field public static literal valuetype RHash.HashType ED2K = unsigned int32(128)" />
@@ -106,6 +148,34 @@ Constants may be OR-combined to form <see cref="T:System.UInt32" /> mask of hash
106148
<summary>EDON-R 512.</summary>
107149
</Docs>
108150
</Member>
151+
<Member MemberName="GOST12_256">
152+
<MemberSignature Language="C#" Value="GOST12_256" />
153+
<MemberSignature Language="ILAsm" Value=".field public static literal valuetype RHash.HashType GOST12_256 = unsigned int32(16384)" />
154+
<MemberType>Field</MemberType>
155+
<AssemblyInfo>
156+
<AssemblyVersion>1.0.1.1</AssemblyVersion>
157+
</AssemblyInfo>
158+
<ReturnValue>
159+
<ReturnType>RHash.HashType</ReturnType>
160+
</ReturnValue>
161+
<Docs>
162+
<summary>GOST R 34.11-2012, 256 bit.</summary>
163+
</Docs>
164+
</Member>
165+
<Member MemberName="GOST12_512">
166+
<MemberSignature Language="C#" Value="GOST12_512" />
167+
<MemberSignature Language="ILAsm" Value=".field public static literal valuetype RHash.HashType GOST12_512 = unsigned int32(32768)" />
168+
<MemberType>Field</MemberType>
169+
<AssemblyInfo>
170+
<AssemblyVersion>1.0.1.1</AssemblyVersion>
171+
</AssemblyInfo>
172+
<ReturnValue>
173+
<ReturnType>RHash.HashType</ReturnType>
174+
</ReturnValue>
175+
<Docs>
176+
<summary>GOST R 34.11-2012, 512 bit.</summary>
177+
</Docs>
178+
</Member>
109179
<Member MemberName="GOST94">
110180
<MemberSignature Language="C#" Value="GOST94" />
111181
<MemberSignature Language="ILAsm" Value=".field public static literal valuetype RHash.HashType GOST94 = unsigned int32(2048)" />
@@ -318,7 +388,7 @@ Constants may be OR-combined to form <see cref="T:System.UInt32" /> mask of hash
318388
</Member>
319389
<Member MemberName="SNEFRU128">
320390
<MemberSignature Language="C#" Value="SNEFRU128" />
321-
<MemberSignature Language="ILAsm" Value=".field public static literal valuetype RHash.HashType SNEFRU128 = unsigned int32(16384)" />
391+
<MemberSignature Language="ILAsm" Value=".field public static literal valuetype RHash.HashType SNEFRU128 = unsigned int32(134217728)" />
322392
<MemberType>Field</MemberType>
323393
<AssemblyInfo>
324394
<AssemblyVersion>1.0.1.1</AssemblyVersion>
@@ -332,7 +402,7 @@ Constants may be OR-combined to form <see cref="T:System.UInt32" /> mask of hash
332402
</Member>
333403
<Member MemberName="SNEFRU256">
334404
<MemberSignature Language="C#" Value="SNEFRU256" />
335-
<MemberSignature Language="ILAsm" Value=".field public static literal valuetype RHash.HashType SNEFRU256 = unsigned int32(32768)" />
405+
<MemberSignature Language="ILAsm" Value=".field public static literal valuetype RHash.HashType SNEFRU256 = unsigned int32(268435456)" />
336406
<MemberType>Field</MemberType>
337407
<AssemblyInfo>
338408
<AssemblyVersion>1.0.1.1</AssemblyVersion>

bindings/mono/test/Test.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@ static void Main(string[] args) {
5353
hashes.Add(HashType.SHA3_256, "f627c8f9355399ef45e1a6b6e5a9e6a3abcb3e1b6255603357bffa9f2211ba7e");
5454
hashes.Add(HashType.SHA3_384, "0529075e85bcdc06da94cbc83c53b7402c5032440210a1a24d9ccca481ddbd6c1309ae0ef23741f13352a4f3382dee51");
5555
hashes.Add(HashType.SHA3_512, "fdd7e7b9655f4f0ef89056e864a2d2dce3602404480281c88455e3a98f728aa08b3f116e6b434200a035e0780d9237ca367c976c5506f7c6f367e6b65447d97c");
56+
hashes.Add(HashType.BLAKE2S, "709dcba6d2db68cdc6d4d3674cf8382755b6f6d673c68ad2d8132d5eac0a54cc");
57+
hashes.Add(HashType.BLAKE2B, "bfc877bc2a258facff21279383039ca6c5e4f98ee78b5cafa209bd3598633443908f9e533676cb38952cd8132241f19735b4929bc249937ec79349132dceac5a");
5658

5759
Console.WriteLine("\nTests: hashes for message");
5860
int errcount1 = 0;

bindings/perl/Rhash.pm

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ our %EXPORT_TAGS = (
1616
RHASH_GOST94_CRYPTOPRO RHASH_GOST12_256 RHASH_GOST12_512
1717
RHASH_SHA224 RHASH_SHA256 RHASH_SHA384 RHASH_SHA512
1818
RHASH_SHA3_224 RHASH_SHA3_256 RHASH_SHA3_384 RHASH_SHA3_512
19-
RHASH_HAS160 RHASH_EDONR256 RHASH_EDONR512
20-
RHASH_SNEFRU128 RHASH_SNEFRU256 RHASH_ALL)]
19+
RHASH_BLAKE2S RHASH_BLAKE2B RHASH_EDONR256 RHASH_EDONR512
20+
RHASH_HAS160 RHASH_SNEFRU128 RHASH_SNEFRU256 RHASH_ALL)]
2121
);
2222

2323
Exporter::export_tags( );
@@ -59,7 +59,9 @@ use constant RHASH_SHA3_512 => 0x2000000;
5959
use constant RHASH_CRC32C => 0x4000000;
6060
use constant RHASH_SNEFRU128 => 0x8000000;
6161
use constant RHASH_SNEFRU256 => 0x10000000;
62-
use constant RHASH_ALL => 0x1FFFFFFF;
62+
use constant RHASH_BLAKE2S => 0x20000000;
63+
use constant RHASH_BLAKE2B => 0x40000000;
64+
use constant RHASH_ALL => 0x7FFFFFFF;
6365

6466
##############################################################################
6567
# Rhash class methods
@@ -279,7 +281,7 @@ binary format or as a magnet link.
279281
The module supports the following hash functions:
280282
CRC32, CRC32C, MD4, MD5, SHA1, SHA256, SHA512, SHA3, AICH, ED2K, Tiger,
281283
DC++ TTH, GOST R 34.11-94, GOST R 34.11-2012, BitTorrent BTIH, RIPEMD-160,
282-
HAS-160, EDON-R 256/512, Whirlpool and Snefru-128/256.
284+
HAS-160, BLAKE2s/BLAKE2b, EDON-R 256/512, Whirlpool and Snefru-128/256.
283285
284286
=head1 CONSTRUCTOR
285287
@@ -319,6 +321,8 @@ Constructor accepts the following constants as arguments:
319321
RHASH_EDONR512,
320322
RHASH_SNEFRU128,
321323
RHASH_SNEFRU256,
324+
RHASH_BLAKE2S,
325+
RHASH_BLAKE2B,
322326
RHASH_ALL
323327
324328
The RHASH_ALL bit mask is bitwise union of all listed above bit-flags.

bindings/perl/t/3test_all_hash_functions.t

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use Test::More tests => 29;
1+
use Test::More tests => 31;
22
use Crypt::Rhash;
33

44
#########################
@@ -35,5 +35,7 @@ is( $r->hash(RHASH_SHA3_384), "1815f774f320491b48569efec794d249eeb59aae46d22bf77
3535
is( $r->hash(RHASH_SHA3_512), "697f2d856172cb8309d6b8b97dac4de344b549d4dee61edfb4962d8698b7fa803f4f93ff24393586e28b5b957ac3d1d369420ce53332712f997bd336d09ab02a");
3636
is( $r->hash(RHASH_SNEFRU128), "bf5ce540ae51bc50399f96746c5a15bd");
3737
is( $r->hash(RHASH_SNEFRU256), "45161589ac317be0ceba70db2573ddda6e668a31984b39bf65e4b664b584c63d");
38+
is( $r->hash(RHASH_BLAKE2S), "4a0d129873403037c2cd9b9048203687f6233fb6738956e0349bd4320fec3e90");
39+
is( $r->hash(RHASH_BLAKE2B), "333fcb4ee1aa7c115355ec66ceac917c8bfd815bf7587d325aec1864edd24e34d5abe2c6b1b5ee3face62fed78dbef802f2a85cb91d455a8f5249d330853cb3c");
3840

3941
__END__

bindings/php/php_rhash.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -296,6 +296,8 @@ PHP_MINIT_FUNCTION(rhash)
296296
REGISTER_RHASH_CONSTANT(RHASH_SHA3_512);
297297
REGISTER_RHASH_CONSTANT(RHASH_SNEFRU128);
298298
REGISTER_RHASH_CONSTANT(RHASH_SNEFRU256);
299+
REGISTER_RHASH_CONSTANT(RHASH_BLAKE2S);
300+
REGISTER_RHASH_CONSTANT(RHASH_BLAKE2B);
299301
REGISTER_RHASH_CONSTANT(RHASH_ALL);
300302

301303
return SUCCESS;

bindings/php/tests/001.phpt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
test RHash global functions
33
--FILE--
44
<?php
5-
echo (rhash_count() >= 26) . "\n";
5+
echo (rhash_count() >= 31) . "\n";
66
echo rhash_get_digest_size(RHASH_CRC32) . "\n";
77
echo (int)rhash_is_base32(RHASH_MD5) . "\n";
88
echo (int)rhash_is_base32(RHASH_AICH) . "\n";

bindings/php/tests/002.phpt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ echo $r->hash(RHASH_SHA3_224) . "\n";
3333
echo $r->hash(RHASH_SHA3_256) . "\n";
3434
echo $r->hash(RHASH_SHA3_384) . "\n";
3535
echo $r->hash(RHASH_SHA3_512) . "\n";
36+
echo $r->hash(RHASH_BLAKE2S) . "\n";
37+
echo $r->hash(RHASH_BLAKE2B) . "\n";
3638
echo $r->hash(RHASH_EDONR256) . "\n";
3739
echo $r->hash(RHASH_EDONR512) . "\n";
3840
echo $r->raw(RHASH_SHA1) . "\n";
@@ -72,6 +74,8 @@ ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb
7274
80084bf2fba02475726feb2cab2d8215eab14bc6bdd8bfb2c8151257032ecd8b
7375
1815f774f320491b48569efec794d249eeb59aae46d22bf77dafe25c5edc28d7ea44f93ee1234aa88f61c91912a4ccd9
7476
697f2d856172cb8309d6b8b97dac4de344b549d4dee61edfb4962d8698b7fa803f4f93ff24393586e28b5b957ac3d1d369420ce53332712f997bd336d09ab02a
77+
4a0d129873403037c2cd9b9048203687f6233fb6738956e0349bd4320fec3e90
78+
333fcb4ee1aa7c115355ec66ceac917c8bfd815bf7587d325aec1864edd24e34d5abe2c6b1b5ee3face62fed78dbef802f2a85cb91d455a8f5249d330853cb3c
7579
943aa9225a2cf154ec2e4dd81237720ba538ca8df2fd83c0b893c5d265f353a0
7680
b59ec44f7beef8a04ceed38a973d77c65e22e9458d5f67b497948da34986c093b5efc5483fbee55f2f740fcad31f18d80db44bb6b8843e7fd599188e7c07233b
7781
†÷ä7ú¥§üá]ܹêêê7vg¸

bindings/python/rhash.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
SHA1, TIGER, TTH, BTIH, ED2K, AICH, WHIRLPOOL, RIPEMD160,
3030
GOST94, GOST94_CRYPTOPRO, GOST12_256, GOST12_512, HAS160,
3131
SHA224, SHA256, SHA384, SHA512, SHA3_224, SHA3_256, SHA3_384, SHA3_512,
32-
EDONR256, EDONR512, SNEFRU128, SNEFRU256.
32+
BLAKE2S, BLAKE2B, EDONR256, EDONR512, SNEFRU128, SNEFRU256.
3333
The first two functions will return the default text representation
3434
of the message digest they compute. The latter will return the
3535
magnet link for the file. In this function you can OR-combine
@@ -74,7 +74,8 @@
7474
'BTIH', 'ED2K', 'AICH', 'WHIRLPOOL', 'RIPEMD160', 'GOST94',
7575
'GOST94_CRYPTOPRO', 'GOST12_256', 'GOST12_512', 'HAS160',
7676
'SHA224', 'SHA256', 'SHA384', 'SHA512', 'EDONR256', 'EDONR512',
77-
'SHA3_224', 'SHA3_256', 'SHA3_384', 'SHA3_512', 'SNEFRU128', 'SNEFRU256',
77+
'SHA3_224', 'SHA3_256', 'SHA3_384', 'SHA3_512', 'BLAKE2S', 'BLAKE2B',
78+
'SNEFRU128', 'SNEFRU256',
7879
'RHash', 'hash_msg', 'hash_file', 'make_magnet',
7980
'hash_for_msg', 'hash_for_file', 'magnet_for_file']
8081

@@ -163,7 +164,9 @@ def _msg_to_bytes(msg):
163164
CRC32C = 0x4000000
164165
SNEFRU128 = 0x08000000
165166
SNEFRU256 = 0x10000000
166-
ALL = SNEFRU256*2 - 1
167+
BLAKE2S = 0x20000000
168+
BLAKE2B = 0x40000000
169+
ALL = 0x7FFFFFFF
167170

168171
#rhash_print values
169172
RHPR_RAW = 1

bindings/python/test_rhash.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,12 @@ def test_all_hashes(self):
9797
self.assertEqual(
9898
'697f2d856172cb8309d6b8b97dac4de344b549d4dee61edfb4962d8698b7fa803f4f93ff24393586e28b5b957ac3d1d369420ce53332712f997bd336d09ab02a',
9999
ctx.hash(rhash.SHA3_512))
100+
self.assertEqual(
101+
'4a0d129873403037c2cd9b9048203687f6233fb6738956e0349bd4320fec3e90',
102+
ctx.hash(rhash.BLAKE2S))
103+
self.assertEqual(
104+
'333fcb4ee1aa7c115355ec66ceac917c8bfd815bf7587d325aec1864edd24e34d5abe2c6b1b5ee3face62fed78dbef802f2a85cb91d455a8f5249d330853cb3c',
105+
ctx.hash(rhash.BLAKE2B))
100106
# test reset
101107
self.assertEqual(
102108
'd41d8cd98f00b204e9800998ecf8427e',

bindings/ruby/rhash.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -379,6 +379,10 @@ end");
379379
rb_define_const(cRHash, "SNEFRU128", INT2FIX(RHASH_SNEFRU128));
380380
/** Snefru-256 hash. */
381381
rb_define_const(cRHash, "SNEFRU256", INT2FIX(RHASH_SNEFRU256));
382+
/** BLAKE2s hash. */
383+
rb_define_const(cRHash, "BLAKE2S", INT2FIX(RHASH_BLAKE2S));
384+
/** BLAKE2b hash. */
385+
rb_define_const(cRHash, "BLAKE2B", INT2FIX(RHASH_BLAKE2B));
382386
/** Compute message digests for all available algorithms. */
383387
rb_define_const(cRHash, "ALL", INT2FIX(RHASH_ALL_HASHES));
384388
}

bindings/ruby/test_rhash.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ def test_all_hashes
3838
assert_equal("80084bf2fba02475726feb2cab2d8215eab14bc6bdd8bfb2c8151257032ecd8b", r.to_s(RHash::SHA3_256))
3939
assert_equal("1815f774f320491b48569efec794d249eeb59aae46d22bf77dafe25c5edc28d7ea44f93ee1234aa88f61c91912a4ccd9", r.to_s(RHash::SHA3_384))
4040
assert_equal("697f2d856172cb8309d6b8b97dac4de344b549d4dee61edfb4962d8698b7fa803f4f93ff24393586e28b5b957ac3d1d369420ce53332712f997bd336d09ab02a", r.to_s(RHash::SHA3_512))
41+
assert_equal("4a0d129873403037c2cd9b9048203687f6233fb6738956e0349bd4320fec3e90", r.to_s(RHash::BLAKE2S))
42+
assert_equal("333fcb4ee1aa7c115355ec66ceac917c8bfd815bf7587d325aec1864edd24e34d5abe2c6b1b5ee3face62fed78dbef802f2a85cb91d455a8f5249d330853cb3c", r.to_s(RHash::BLAKE2B))
4143

4244
assert_equal("d41d8cd98f00b204e9800998ecf8427e", r.reset().finish().to_s(RHash::MD5)) # MD5( "" )
4345
end

0 commit comments

Comments
 (0)