v2 / vlib / crypto / sha512 / sha512_test.v
92 lines · 78 sloc · 2.62 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.sha512
5import hash
6
7// verify sha512.Digest implements hash.Hash
8fn test_digest_implements_hash() {
9 get_digest := fn () hash.Hash {
10 return sha512.new()
11 }
12}
13
14const final_result = '4143e55fcba7e39b20f62a1368e5eb28f64a8859458886117ac66027832e0f9f5263daec688c439d2d0fa07059334668d39e59543039703dbb7e03ec9da7f8d7'
15
16fn test_crypto_sha512() {
17 assert sha512.sum512('This is a sha512 checksum.'.bytes()).hex() == final_result
18}
19
20fn test_crypto_sha512_writer() {
21 mut digest := sha512.new_digest(.sha512)
22 digest.write('This is a'.bytes()) or { assert false }
23 digest.write(' sha512 checksum.'.bytes()) or { assert false }
24 // mut sum := digest.checksum()
25 mut sum := digest.sum([])
26 assert sum.hex() == final_result
27 sum = digest.sum([])
28 assert sum.hex() == final_result
29}
30
31fn test_crypto_sha512_writer_reset() {
32 mut digest := sha512.new_digest(.sha512)
33 digest.write('This is a'.bytes()) or { assert false }
34 digest.write(' sha512 checksum.'.bytes()) or { assert false }
35 _ = digest.sum([])
36 digest.reset()
37 digest.write('This is a'.bytes()) or { assert false }
38 digest.write(' sha512 checksum.'.bytes()) or { assert false }
39 sum := digest.sum([])
40 assert sum.hex() == final_result
41}
42
43fn test_crypto_sha512_384() {
44 data := 'example bytes'.bytes()
45 sum384 := sha512.sum384(data)
46 expected := '8004e0038985a2d4dc40802b149f02cdd5868eaa58d87fae02f0cce2a3b566a6af63e34b11d5ba88c6035b96e587a6d6'
47 assert sum384.hex() == expected
48
49 mut d := sha512.new384()
50 d.write(data) or { assert false }
51 sum := d.sum([])
52 assert sum.hex() == expected
53
54 d.reset()
55 d.write(data) or { assert false }
56 chksum := d.sum([])
57 assert chksum.hex() == expected
58}
59
60fn test_crypto_sha512_224() {
61 data := 'example bytes'.bytes()
62 sum512_224 := sha512.sum512_224(data)
63 expected := '2bcbe17a1c3cb7b2b8b75c3118ed8525b6a4c505f2e59f3dc5dfe462'
64 assert sum512_224.hex() == expected
65
66 mut d := sha512.new512_224()
67 d.write(data) or { assert false }
68 sum := d.sum([])
69 assert sum.hex() == expected
70
71 d.reset()
72 d.write(data) or { assert false }
73 chksum := d.sum([])
74 assert chksum.hex() == expected
75}
76
77fn test_crypto_sha512_256() {
78 data := 'example bytes'.bytes()
79 sum512_256 := sha512.sum512_256(data)
80 expected := '984512a8f874623cf1e2d5bd85c7d1240214163db0ebd0919922768f94879563'
81 assert sum512_256.hex() == expected
82
83 mut d := sha512.new512_256()
84 d.write(data) or { assert false }
85 sum := d.sum([])
86 assert sum.hex() == expected
87
88 d.reset()
89 d.write(data) or { assert false }
90 chksum := d.sum([])
91 assert chksum.hex() == expected
92}
93