PBKDF2-HMAC-SHA-512 interface.
PBKDF2 stands for Password-Based Key Derivation Function 2. It is defined in IETF RFC 8018.
We instantiate PBKDF2 with the pseudorandom function HMAC-SHA-512.
See also:
Theorem:
(defthm byte-list-of-pbkdf2-hmac-sha-512 (byte-listp (pbkdf2-hmac-sha-512 password salt iterations length)))
Theorem:
(defthm len-of-pbkdf2-hmac-sha-512 (equal (len (pbkdf2-hmac-sha-512 password salt iterations length)) (pos-fix length)))
Theorem:
(defthm pbkdf2-hmac-sha-512-of-byte-list-fix-password (equal (pbkdf2-hmac-sha-512 (byte-list-fix password) salt iterations length) (pbkdf2-hmac-sha-512 password salt iterations length)))
Theorem:
(defthm pbkdf2-hmac-sha-512-byte-list-equiv-congruence-on-password (implies (byte-list-equiv password password-equiv) (equal (pbkdf2-hmac-sha-512 password salt iterations length) (pbkdf2-hmac-sha-512 password-equiv salt iterations length))) :rule-classes :congruence)
Theorem:
(defthm pbkdf2-hmac-sha-512-of-byte-list-fix-salt (equal (pbkdf2-hmac-sha-512 password (byte-list-fix salt) iterations length) (pbkdf2-hmac-sha-512 password salt iterations length)))
Theorem:
(defthm pbkdf2-hmac-sha-512-byte-list-equiv-congruence-on-salt (implies (byte-list-equiv salt salt-equiv) (equal (pbkdf2-hmac-sha-512 password salt iterations length) (pbkdf2-hmac-sha-512 password salt-equiv iterations length))) :rule-classes :congruence)
Theorem:
(defthm pbkdf2-hmac-sha-512-of-pos-fix-iterations (equal (pbkdf2-hmac-sha-512 password salt (pos-fix iterations) length) (pbkdf2-hmac-sha-512 password salt iterations length)))
Theorem:
(defthm pbkdf2-hmac-sha-512-pos-equiv-congruence-on-iterations (implies (acl2::pos-equiv iterations iterations-equiv) (equal (pbkdf2-hmac-sha-512 password salt iterations length) (pbkdf2-hmac-sha-512 password salt iterations-equiv length))) :rule-classes :congruence)
Theorem:
(defthm pbkdf2-hmac-sha-512-of-pos-fix-length (equal (pbkdf2-hmac-sha-512 password salt iterations (pos-fix length)) (pbkdf2-hmac-sha-512 password salt iterations length)))
Theorem:
(defthm pbkdf2-hmac-sha-512-pos-equiv-congruence-on-length (implies (acl2::pos-equiv length length-equiv) (equal (pbkdf2-hmac-sha-512 password salt iterations length) (pbkdf2-hmac-sha-512 password salt iterations length-equiv))) :rule-classes :congruence)
Theorem:
(defthm true-listp-of-pbkdf2-hmac-sha-512 (true-listp (pbkdf2-hmac-sha-512 password salt iterations length)) :rule-classes :type-prescription)
Theorem:
(defthm consp-of-pbkdf2-hmac-sha-512 (consp (pbkdf2-hmac-sha-512 password salt iterations length)) :rule-classes :type-prescription)