v

Зеркало из https://github.com/vlang/v
Форк
0
/
sha512_test.v 
92 строки · 2.6 Кб
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.
4
import crypto.sha512
5
import hash
6

7
// verify sha512.Digest implements hash.Hash
8
fn test_digest_implements_hash() {
9
	get_digest := fn () hash.Hash {
10
		return sha512.new()
11
	}
12
}
13

14
const final_result = '4143e55fcba7e39b20f62a1368e5eb28f64a8859458886117ac66027832e0f9f5263daec688c439d2d0fa07059334668d39e59543039703dbb7e03ec9da7f8d7'
15

16
fn test_crypto_sha512() {
17
	assert sha512.sum512('This is a sha512 checksum.'.bytes()).hex() == final_result
18
}
19

20
fn 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

31
fn 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

43
fn 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

60
fn 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

77
fn 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

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.