*^B55.5.0+dev0-2025-04-28/&Digest!tA;@@@A&string3@@@@@@@7../../stdlib/digest.mli]ZZ]Zi@@@@&Digest@@A@'compare@&Digest4!t@@@@&Digest5!t@@@#int6@@@@@@@@%`&`@@$A@@%equal@&Digest7!t@@@@&Digest8!t@@@$bool9@@@@@@@@HhIh@@GB@@&string@Y:@@@&Digest;!t@@@@@@`l]]al]u@@_C@@%bytes@%bytes<@@@&Digest=!t@@@@@@yozo@@xD@@)substring@>@@@@l?@@@@s@@@@&DigestA!t@@@@@@@@@@s  s  +@@E@@(subbytes@?B@@@@C@@@@D@@@&DigestE!t@@@@@@@@@@w  w  @@F@@'channel@&StdlibF*in_channel@@@@G@@@&DigestH!t@@@@@@@@| y y| y @@G@@$file@I@@@&DigestJ!t@@@@@@D  D  @@H@@&output@&StdlibK+out_channel@@@@&DigestL!t@@@$unitM@@@@@@@@"G S S#G S x@@!I@@%input@&StdlibN*in_channel@@@&DigestO!t@@@@@@=J  >J  @@ reads all characters from "ic 9 until end-of-file is reached and return their digest.@@@@@@@@@@@@@@@@@@+Digest.file3 2Return the digest of the file whose name is given.@@@@@@@@@@@@@@@@@-Digest.output3 +Write a digest on the given output channel.@@@@@@@@@@@@@@@@@@,Digest.input3 +Read a digest from the given input channel.@@@@@@@@@@@@@@@@@-Digest.to_hex3 DReturn the printable hexadecimal representation of the given digest.@@@@@@@@0Invalid_argument (if the argument is not exactly 16 bytes.@@@@@@@@@@-Digest.of_hex3 HConvert a hexadecimal representation back into the corresponding digest.@@@@#5.2@@@0Invalid_argument Dif the argument is not exactly 32 hexadecimal characters.@@@@@@2@@@@/Digest.from_hex31Same function as  D@!.@@@@$4.00@@@@@@@@I@@@@A@1Generic interface@@(Digest.S3 IThe signature for a hash function that produces digests of length +hash_length 0 from character strings, byte arrays, and files.@@@@#5.2@@@@@@@A#*Digest.S.t34The type of digests.@@@@@@@@@@@@@@A@@@4Digest.S.hash_length3 The length of digests, in bytes.@@@@@@@@@@@@@@@@0Digest.S.compare3 Test two digests for equality.@@@@@@@@@@@@@@@@@@w/Digest.S.string3 &Return the digest of the given string.@@@@@@@@@@@@x@y@@@@l.Digest.S.bytes3 -Return the digest of the given byte sequence.@@@@@@@@@@@@m@n@@@@a2Digest.S.substring33substring s ofs len 0 returns the digest of the substring of !s3 starting at index #ofs0 and containing #len, characters.@@@@@@@@@@@@w@x@t@p@@@@c1Digest.S.subbytes32subbytes s ofs len 2 returns the digest of the subsequence of !s3 starting at index #ofs0 and containing #len' bytes.@@@@@@@@@@@@y@z@v@r@@@@e0Digest.S.channel3 FRead characters from the channel and return their digest. See D@< for the full specification.@@@@@@@@@@@@l@1m@4f@@@@Y-Digest.S.file3 2Return the digest of the file whose name is given.@@@@@@@@@@@@Z@C[@@@@N/Digest.S.output3 +Write a digest on the given output channel.@@@@@@@@@@@@O@RP@UI@@@@<.Digest.S.input3 +Read a digest from the given input channel.@@@@@@@@@@@@=@d>@@@@./Digest.S.to_hex3 DReturn the printable hexadecimal representation of the given digest.@@@@@@@@0Invalid_argument -if the length of the argument is not +hash_length!,@@@@@;@<@@@@//Digest.S.of_hex3 HConvert a hexadecimal representation back into the corresponding digest.@@@@@@@@0Invalid_argument -if the length of the argument is not /2 * hash_length B, or if the arguments contains non-hexadecimal characters.@@@@@<@=@@@@0@@.-@A@7Specific hash functions@@//Digest.BLAKE12813(BLAKE128 is the BLAKE2b hash function producing 128-bit (16-byte) digests. It is cryptographically secure. However, the small size of the digests enables brute-force attacks in &2{^64}* attempts.@@@@#5.2@@@@@@@Aik @GF@@@@@//Digest.BLAKE256C3(BLAKE256 is the BLAKE2b hash function producing 256-bit (32-byte) digests. It is cryptographically secure, and the digests are large enough to thwart brute-force attacks.@@@@#5.2@@@@@@@A(@RQ@@@@@//Digest.BLAKE512N3(BLAKE512 is the BLAKE2b hash function producing 512-bit (64-byte) digests. It is cryptographically secure, and the digests are large enough to thwart brute-force attacks.@@@@#5.2@@@@@@@A>-@]\@@@@@/*Digest.MD5Y3#MD5 is the MD5 hash function. It produces 128-bit (16-byte) digests and is not cryptographically secure at all. It should be used only for compatibility with earlier designs that mandate the use of MD5.@@@@#5.2@@@@@@@ATC@hg@@@@@@@_@@A@@@@@