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