v / vlib / crypto / sha256 / sha256_test.v
59 lines · 51 sloc · 1.79 KB · 1a8eff8d2bb6dcb8f98403eccbbb79eb1df6f99f
Raw
1// Copyright (c) 2019-2024 Alexander Medvednikov. All rights reserved.
2// Use of this source code is governed by an MIT license
3// that can be found in the LICENSE file.
4import crypto.sha256
5import hash
6
7// verify sha256.Digest implements hash.Hash
8fn test_digest_implements_hash() {
9 get_digest := fn () hash.Hash {
10 return sha256.new()
11 }
12}
13
14fn test_crypto_sha256() {
15 assert sha256.sum('This is a sha256 checksum.'.bytes()).hex() == 'dc7163299659529eae29683eb1ffec50d6c8fc7275ecb10c145fde0e125b8727'
16}
17
18fn test_crypto_sha256_writer() {
19 mut digest := sha256.new()
20 digest.write('This is a'.bytes()) or { assert false }
21 digest.write(' sha256 checksum.'.bytes()) or { assert false }
22 mut sum := digest.sum([])
23 assert sum.hex() == 'dc7163299659529eae29683eb1ffec50d6c8fc7275ecb10c145fde0e125b8727'
24 sum = digest.sum([])
25 assert sum.hex() == 'dc7163299659529eae29683eb1ffec50d6c8fc7275ecb10c145fde0e125b8727'
26}
27
28fn test_crypto_sha256_writer_reset() {
29 mut digest := sha256.new()
30 digest.write('This is a'.bytes()) or { assert false }
31 digest.write(' sha256 checksum.'.bytes()) or { assert false }
32 _ = digest.sum([])
33 digest.reset()
34 digest.write('This is a'.bytes()) or { assert false }
35 digest.write(' sha256 checksum.'.bytes()) or { assert false }
36 sum := digest.sum([])
37 assert sum.hex() == 'dc7163299659529eae29683eb1ffec50d6c8fc7275ecb10c145fde0e125b8727'
38}
39
40fn test_crypto_sha256_224() {
41 data := 'hello world\n'.bytes()
42 mut digest := sha256.new224()
43 expected := '95041dd60ab08c0bf5636d50be85fe9790300f39eb84602858a9b430'
44
45 // with sum224 function
46 sum224 := sha256.sum224(data)
47 assert sum224.hex() == expected
48
49 // with sum
50 _ := digest.write(data)!
51 sum := digest.sum([])
52 assert sum.hex() == expected
53
54 // with checksum
55 digest.reset()
56 _ := digest.write(data)!
57 chksum := digest.sum([])
58 assert chksum.hex() == expected
59}
60