mirror of
https://github.com/vlang/v.git
synced 2025-09-08 06:41:58 -04:00
96 lines
3.7 KiB
V
96 lines
3.7 KiB
V
import crypto.sha3
|
|
|
|
fn test_api_call() {
|
|
input := 'abc'.bytes()
|
|
|
|
// Digest generation
|
|
mut digest_224 := sha3.new_digest(sha3.rate_224, sha3.size_224)!
|
|
mut digest_256 := sha3.new_digest(sha3.rate_256, sha3.size_256)!
|
|
mut digest_384 := sha3.new_digest(sha3.rate_384, sha3.size_384)!
|
|
mut digest_512 := sha3.new_digest(sha3.rate_512, sha3.size_512)!
|
|
mut digest_keccak_224 := sha3.new_digest(sha3.rate_224, sha3.size_224, padding: .keccak)!
|
|
mut digest_keccak_256 := sha3.new_digest(sha3.rate_256, sha3.size_256, padding: .keccak)!
|
|
mut digest_keccak_384 := sha3.new_digest(sha3.rate_384, sha3.size_384, padding: .keccak)!
|
|
mut digest_keccak_512 := sha3.new_digest(sha3.rate_512, sha3.size_512, padding: .keccak)!
|
|
|
|
// Result should be same as shortened version
|
|
assert digest_224 == sha3.new224()!
|
|
assert digest_256 == sha3.new256()!
|
|
assert digest_384 == sha3.new384()!
|
|
assert digest_512 == sha3.new512()!
|
|
assert digest_keccak_256 == sha3.new256keccak()!
|
|
assert digest_keccak_512 == sha3.new512keccak()!
|
|
|
|
// Should not panic
|
|
digest_224.write(input)!
|
|
digest_256.write(input)!
|
|
digest_384.write(input)!
|
|
digest_512.write(input)!
|
|
digest_keccak_256.write(input)!
|
|
digest_keccak_512.write(input)!
|
|
|
|
// Result should be same as shortened version
|
|
assert digest_224.checksum() == sha3.sum224(input)
|
|
assert digest_256.checksum() == sha3.sum256(input)
|
|
assert digest_384.checksum() == sha3.sum384(input)
|
|
assert digest_512.checksum() == sha3.sum512(input)
|
|
assert digest_keccak_256.checksum() == sha3.keccak256(input)
|
|
assert digest_keccak_512.checksum() == sha3.keccak512(input)
|
|
|
|
for size in 1 .. 65 {
|
|
// Digest generation
|
|
mut digest_xof_128 := sha3.new_digest(sha3.xof_rate_128, size, padding: .xof)!
|
|
mut digest_xof_256 := sha3.new_digest(sha3.xof_rate_256, size, padding: .xof)!
|
|
|
|
// Result should be same as shortened version
|
|
assert digest_xof_128 == sha3.new_xof_digest(sha3.xof_rate_128, size)!
|
|
assert digest_xof_256 == sha3.new_xof_digest(sha3.xof_rate_256, size)!
|
|
assert digest_xof_128 == sha3.new128xof(size)!
|
|
assert digest_xof_256 == sha3.new256xof(size)!
|
|
|
|
// Should not panic
|
|
digest_xof_128.write(input)!
|
|
digest_xof_256.write(input)!
|
|
}
|
|
|
|
// Should be AbsorptionRateError
|
|
if should_be_error := sha3.new_digest(sha3.rate_224, sha3.size_256) {
|
|
assert false, 'new_digest(sha3.rate_224, sha3.size_256) should be error'
|
|
}
|
|
if should_be_error := sha3.new_digest(sha3.rate_224, sha3.size_256, padding: .keccak) {
|
|
assert false, 'new_digest(sha3.rate_224, sha3.size_256, padding: .keccak) should be error'
|
|
}
|
|
if should_be_error := sha3.new_digest(0, sha3.size_256) {
|
|
assert false, 'new_digest(0, sha3.size_256) should be error'
|
|
}
|
|
if should_be_error := sha3.new_digest(0, sha3.size_256, padding: .keccak) {
|
|
assert false, 'new_digest(0, sha3.size_256, padding: .keccak) should be error'
|
|
}
|
|
|
|
// Should be HashSizeError
|
|
if should_be_error := sha3.new_digest(sha3.rate_256, -1) {
|
|
assert false, 'new_digest(sha3.rate_256, -1) should be error'
|
|
}
|
|
if should_be_error := sha3.new_digest(sha3.rate_256, -1, padding: .keccak) {
|
|
assert false, 'new_digest(sha3.rate_256, -1, padding: .keccak) should be error'
|
|
}
|
|
if should_be_error := sha3.new_digest(sha3.rate_256, 100) {
|
|
assert false, 'new_digest(sha3.rate_256, -1) should be error'
|
|
}
|
|
if should_be_error := sha3.new_digest(sha3.rate_256, 100, padding: .keccak) {
|
|
assert false, 'new_digest(sha3.rate_256, -1, padding: .keccak) should be error'
|
|
}
|
|
|
|
// Should be XOFSizeError
|
|
if should_be_error := sha3.new128xof(-1) {
|
|
assert false, 'new128xof(-1) should be error'
|
|
}
|
|
if should_be_error := sha3.new256xof(-1) {
|
|
assert false, 'new256xof(-1) should be error'
|
|
}
|
|
// Shoud be XOFRateError
|
|
if should_be_error := sha3.new_xof_digest(0, sha3.size_256) {
|
|
assert false, 'new_xof_digest(0, sha3.size_256) should be error'
|
|
}
|
|
}
|