| @safe unittest |
| { |
| import std.digest.sha; |
| |
| //Template API |
| import std.digest.sha; |
| |
| ubyte[20] hash1 = sha1Of("abc"); |
| assert(toHexString(hash1) == "A9993E364706816ABA3E25717850C26C9CD0D89D"); |
| |
| ubyte[28] hash224 = sha224Of("abc"); |
| assert(toHexString(hash224) == "23097D223405D8228642A477BDA255B32AADBCE4BDA0B3F7E36C9DA7"); |
| |
| //Feeding data |
| ubyte[1024] data; |
| SHA1 sha1; |
| sha1.start(); |
| sha1.put(data[]); |
| sha1.start(); //Start again |
| sha1.put(data[]); |
| hash1 = sha1.finish(); |
| } |
| |
| @safe unittest |
| { |
| import std.digest.sha; |
| |
| //OOP API |
| import std.digest.sha; |
| |
| auto sha1 = new SHA1Digest(); |
| ubyte[] hash1 = sha1.digest("abc"); |
| assert(toHexString(hash1) == "A9993E364706816ABA3E25717850C26C9CD0D89D"); |
| |
| auto sha224 = new SHA224Digest(); |
| ubyte[] hash224 = sha224.digest("abc"); |
| assert(toHexString(hash224) == "23097D223405D8228642A477BDA255B32AADBCE4BDA0B3F7E36C9DA7"); |
| |
| //Feeding data |
| ubyte[1024] data; |
| sha1.put(data[]); |
| sha1.reset(); //Start again |
| sha1.put(data[]); |
| hash1 = sha1.finish(); |
| } |
| |
| @safe unittest |
| { |
| import std.digest.sha; |
| |
| //Simple example |
| SHA1 hash; |
| hash.start(); |
| hash.put(cast(ubyte) 0); |
| ubyte[20] result = hash.finish(); |
| |
| } |
| |
| @safe unittest |
| { |
| import std.digest.sha; |
| |
| //Simple example, hashing a string using sha1Of helper function |
| ubyte[20] hash = sha1Of("abc"); |
| //Let's get a hash string |
| assert(toHexString(hash) == "A9993E364706816ABA3E25717850C26C9CD0D89D"); |
| |
| //The same, but using SHA-224 |
| ubyte[28] hash224 = sha224Of("abc"); |
| assert(toHexString(hash224) == "23097D223405D8228642A477BDA255B32AADBCE4BDA0B3F7E36C9DA7"); |
| } |
| |
| @safe unittest |
| { |
| import std.digest.sha; |
| |
| //Using the basic API |
| SHA1 hash; |
| hash.start(); |
| ubyte[1024] data; |
| //Initialize data here... |
| hash.put(data); |
| ubyte[20] result = hash.finish(); |
| } |
| |
| @safe unittest |
| { |
| import std.digest.sha; |
| |
| //Let's use the template features: |
| //Note: When passing a SHA1 to a function, it must be passed by reference! |
| void doSomething(T)(ref T hash) |
| if (isDigest!T) |
| { |
| hash.put(cast(ubyte) 0); |
| } |
| SHA1 sha; |
| sha.start(); |
| doSomething(sha); |
| assert(toHexString(sha.finish()) == "5BA93C9DB0CFF93F52B521D7420E43F6EDA2784F"); |
| } |
| |
| @safe unittest |
| { |
| import std.digest.sha; |
| |
| ubyte[20] hash = sha1Of("abc"); |
| assert(hash == digest!SHA1("abc")); |
| |
| ubyte[28] hash224 = sha224Of("abc"); |
| assert(hash224 == digest!SHA224("abc")); |
| |
| ubyte[32] hash256 = sha256Of("abc"); |
| assert(hash256 == digest!SHA256("abc")); |
| |
| ubyte[48] hash384 = sha384Of("abc"); |
| assert(hash384 == digest!SHA384("abc")); |
| |
| ubyte[64] hash512 = sha512Of("abc"); |
| assert(hash512 == digest!SHA512("abc")); |
| |
| ubyte[28] hash512_224 = sha512_224Of("abc"); |
| assert(hash512_224 == digest!SHA512_224("abc")); |
| |
| ubyte[32] hash512_256 = sha512_256Of("abc"); |
| assert(hash512_256 == digest!SHA512_256("abc")); |
| } |
| |
| @safe unittest |
| { |
| import std.digest.sha; |
| |
| //Simple example, hashing a string using Digest.digest helper function |
| auto sha = new SHA1Digest(); |
| ubyte[] hash = sha.digest("abc"); |
| //Let's get a hash string |
| assert(toHexString(hash) == "A9993E364706816ABA3E25717850C26C9CD0D89D"); |
| |
| //The same, but using SHA-224 |
| auto sha224 = new SHA224Digest(); |
| ubyte[] hash224 = sha224.digest("abc"); |
| //Let's get a hash string |
| assert(toHexString(hash224) == "23097D223405D8228642A477BDA255B32AADBCE4BDA0B3F7E36C9DA7"); |
| } |
| |
| @system unittest |
| { |
| import std.digest.sha; |
| |
| //Let's use the OOP features: |
| void test(Digest dig) |
| { |
| dig.put(cast(ubyte) 0); |
| } |
| auto sha = new SHA1Digest(); |
| test(sha); |
| |
| //Let's use a custom buffer: |
| ubyte[20] buf; |
| ubyte[] result = sha.finish(buf[]); |
| assert(toHexString(result) == "5BA93C9DB0CFF93F52B521D7420E43F6EDA2784F"); |
| } |
| |