34 lines
1.6 KiB
Plaintext
34 lines
1.6 KiB
Plaintext
verify() (answer: Bool) {
|
|
password = dever.crypto.token(16)
|
|
wrong = dever.crypto.token(32)
|
|
hash = dever.crypto.passwordHash(password)
|
|
accepted = dever.crypto.passwordVerify(password, hash)
|
|
rejected = dever.crypto.passwordVerify(wrong, hash)
|
|
data = dever.bytes.fromText("message")
|
|
first = dever.crypto.hmacSha256(password, data)
|
|
second = dever.crypto.hmacSha256(password, data)
|
|
digest = dever.crypto.sha256(dever.bytes.fromText("abc"))
|
|
expected = dever.bytes.fromInts([186, 120, 22, 191, 143, 1, 207, 234, 65, 65, 64, 222, 93, 174, 34, 35, 176, 3, 97, 163, 150, 23, 122, 156, 180, 16, 255, 97, 242, 0, 21, 173])
|
|
answer = accepted and not rejected and dever.crypto.constantTimeEq(first, second) and dever.bytes.length(first) == 32 and dever.crypto.constantTimeEq(digest, expected)
|
|
}
|
|
|
|
asyncVerify() (answer: Bool) {
|
|
password = dever.crypto.token(16)
|
|
hash = blocking(dever.crypto.passwordHash(password))
|
|
answer = blocking(dever.crypto.passwordVerify(password, hash))
|
|
}
|
|
|
|
rejected(value: dever.crypto.VerifyResult.Ready(valid)) (answer: Bool) recover("观察不支持的PHC") { answer = false }
|
|
rejected(value: dever.crypto.VerifyResult.Failed(message)) (answer: Bool) recover("观察不支持的PHC") { answer = length(message) > 0 }
|
|
|
|
phcVerify() (answer: Bool) {
|
|
password = dever.crypto.token(16)
|
|
answer = rejected(result(dever.crypto.passwordVerify(password, "$argon2id$v=19$m=19456,t=2,p=536870912$c29tZXNhbHQ$AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA")))
|
|
}
|
|
|
|
invalid() () { password = dever.crypto.token(0) }
|
|
|
|
leak() (value: Secret?) { value = null }
|
|
|
|
leakList() (values: List<Secret>) { values = [] }
|