import std/[strutils, sequtils], unittest2, ../bearssl suite "Hashing": test "MD5": let input = ["", "a", "abc", "message digest", "abcdefghijklmnopqrstuvwxyz", "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", "12345678901234567890123456789012345678901234567890123456789012345678901234567890"] output = ["d41d8cd98f00b204e9800998ecf8427e", "0cc175b9c0f1b6a831c399e269772661", "900150983cd24fb0d6963f7d28e17f72", "f96b697d7cb7938d525a2f31aaf161d0", "c3fcd3d76192e4007dfb496cca67e13b", "d174ab98d277d9f5a5611c2c9f419d9f", "57edf4a22be3c955ac49da2e2107b67a"] for i in 0 ..< input.len: var ctx = Md5Context() res: array[md5SIZE, uint8] md5Init(addr ctx) md5Update(addr ctx, input[i].cstring, input[i].len) md5Out(addr ctx, addr res[0]) check res.foldl(a & b.toHex(), "").toLower() == output[i]