,P.55.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@@@@@@@@PhQh@@OB@@&string@c:@@@@@&Digest;!t@@@@@@jl]]kl]u@@iC@@%bytes@%bytes<@@@@@&Digest=!t@@@@@@oo@@D@@)substring@>@@@@@@x?@@@@@@@@@@@@&DigestA!t@@@@@@@@@@s  s  +@@E@@(subbytes@GB@@@@@@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@@@@@@@@DG S SEG S x@@CI@@%input@&StdlibN*in_channel@@@@@&DigestO!t@@@@@@aJ  bJ  @@`J@@&to_hex@&DigestP!t@@@@@|Q@@@@@@{M  |M  @@zK@@&of_hex@R@@@@@&DigestS!t@@@@@@R  R  @@L@@(from_hex@T@@@@@&DigestU!t@@@@@@XX@@M@@!S.C!t B;@@AV@@@@@@@` ` @@@@N@A@+hash_length!W@@@@c?Ac?V@@O@@'compare"@&DigestX!S!t@@@@@@&DigestY!S!t@@@@@Z@@@@@@@@ff@@P@@%equal#@&Digest[!S!t@@@@@@&Digest\!S!t@@@@@]@@@@@@@@'j(j@@&Q@@&string$@:^@@@@@&Digest_!S!t@@@@@@CmEGDmE_@@BR@@%bytes%@`@@@@@&Digesta!S!t@@@@@@_p`p@@^S@@)substring&@rb@@@@@@Rc@@@@@@[d@@@@@&Digeste!S!t@@@@@@@@@@ss@@T@@(subbytes'@#f@@@@@@g@@@@@@h@@@@@&Digesti!S!t@@@@@@@@@@ww@@U@@'channel(@&Stdlibj*in_channel@@@@@@k@@@@@&Digestl!S!t@@@@@@@@{TV{Tz@@V@@$file)@m@@@ @@ &Digestn!S!t@@@ @@ @@@W@@&output*@&Stdlibo+out_channel@@@ @@@&Digestp!S!t@@@@@q@@@@@@@@'SU(Sz@@&X@@%input+@&Stdlibr*in_channel@@@@@&Digests!S!t@@@@@@FG@@EY@@&to_hex,@&Digestt!S!t@@@@@cu@@@@@@b  c #@@aZ@@&of_hex-@uv@@@@@&Digestw!S!t@@@@@@~@@}[@@@@^@\@@ӱ(BLAKE128/D@@@]@@@ӱ(BLAKE2560E@@@^@@@ӱ(BLAKE5121F@@@_@@@ӱ#MD52G@@@`@@@@3/Message digest.@ This module provides functions to compute 'digests', also known as 'hashes', of arbitrary-length strings or files. The supported hashing algorithms are BLAKE2 and MD5.@@@@@@@@@@@@A7../../stdlib/digest.mliA@/Basic functions@@ The functions in this section use the MD5 hash function to produce 128-bit digests (16 bytes). MD5 is not cryptographically secure. Hence, these functions should not be used for security-sensitive applications. The BLAKE2 functions below are cryptographically secure.@#(Digest.t3 %The type of digests: 16-byte strings.@@@@@@@@@@@@@@Aܠ@@@.Digest.compare3 PThe comparison function for 16-byte digests, with the same specification as .Stdlib.compare@@ ( and the implementation shared with .String.compare@@6. Along with the type !t4, this function 'compare3 allows the module &Digest . to be passed as argument to the functors (Set.Make@@% and (Map.Make@@!.@@@@$4.00@@@@@@@@ @@@@@,Digest.equal3 'The equal function for 16-byte digests.@@@@$4.03@@@@@@@@@@@@@ܠ-Digest.string3 &Return the digest of the given string.@@@@@@@@@@@@@'@@@@Ѡ,Digest.bytes3 -Return the digest of the given byte sequence.@@@@$4.02@@@@@@@@8@@@@Ǡ0Digest.substring3:Digest.substring s ofs len + returns the digest of the substring of !s3 starting at index #ofs0 and containing #len, characters.@@@@@@@@@@@@@\@_@b@@@@Š/Digest.subbytes39Digest.subbytes s ofs len . returns the digest of the subsequence of !s3 starting at index #ofs0 and containing #len' bytes.@@@@$4.02@@@@@@@@@@@@@@Š.Digest.channel3#If #len1 is nonnegative, 5Digest.channel ic len' reads #len< characters from channel "ic ( and returns their digest, or raises +End_of_file " if end-of-file is reached before #len= characters are read. If #len. is negative, 5Digest.channel ic len> 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.@@@@@@@@@@@@@@@@@@/Digest.S.string3 &Return the digest of the given string.@@@@@@@@@@@@@@@@@.Digest.S.bytes3 -Return the digest of the given byte sequence.@@@@@@@@@@@@@@@@@}2Digest.S.substring33substring s ofs len 0 returns the digest of the substring of !s3 starting at index #ofs0 and containing #len, characters.@@@@@@@@@@@@@@@@@@@y1Digest.S.subbytes32subbytes s ofs len 2 returns the digest of the subsequence of !s3 starting at index #ofs0 and containing #len' bytes.@@@@@@@@@@@@@@@@@@@u0Digest.S.channel3 FRead characters from the channel and return their digest. See D@< for the full specification.@@@@@@@@@@@@|@1}@4t@@@@e-Digest.S.file3 2Return the digest of the file whose name is given.@@@@@@@@@@@@f@Cg@@@@X/Digest.S.output3 +Write a digest on the given output channel.@@@@@@@@@@@@Y@RZ@UQ@@@@B.Digest.S.input3 +Read a digest from the given input channel.@@@@@@@@@@@@C@dD@@@@2/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!,@@@@@?@@@@@@1/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@@@@@