Imported Upstream version 3.10.2+dfsg
This commit is contained in:
44
swig/pbkdf_pkcs12.py
Normal file
44
swig/pbkdf_pkcs12.py
Normal file
@@ -0,0 +1,44 @@
|
||||
"""A simple example how to use PBKDF PKCS #12 algorithm."""
|
||||
|
||||
import wolfssl
|
||||
import os
|
||||
import random
|
||||
import string
|
||||
|
||||
|
||||
PASSWORD_LENGTH = 16
|
||||
SALT_LENGTH = 8
|
||||
KEY_LENGTH = 16
|
||||
ITERATIONS = 256
|
||||
SHA256 = 2 # Hashtype, stands for Sha256 in wolfssl.
|
||||
|
||||
|
||||
def to_c_byte_array(content):
|
||||
output = wolfssl.byteArray(len(content))
|
||||
for i, ch in enumerate(content):
|
||||
output[i] = ord(ch)
|
||||
return output
|
||||
|
||||
|
||||
password = ''.join(random.choice(string.ascii_uppercase + string.digits) for x in range(PASSWORD_LENGTH))
|
||||
salt = os.urandom(SALT_LENGTH)
|
||||
key = wolfssl.byteArray(KEY_LENGTH)
|
||||
|
||||
# params:
|
||||
# key :: bytearray output
|
||||
# passwd :: bytearray password that is used to derive the key
|
||||
# pLen :: password length
|
||||
# salt :: bytearray salt
|
||||
# sLen :: salt length
|
||||
# iterations :: number of iterations
|
||||
# kLen :: key length
|
||||
# hashType :: int, SHA256 stands for 2
|
||||
# purpose :: int, not really sure what it does, 1 was used in the tests
|
||||
wolfssl.wc_PKCS12_PBKDF(key, to_c_byte_array(password), PASSWORD_LENGTH, to_c_byte_array(salt), SALT_LENGTH, ITERATIONS,
|
||||
KEY_LENGTH, SHA256, 1)
|
||||
key = wolfssl.cdata(key, KEY_LENGTH)
|
||||
assert len(key) == KEY_LENGTH, "Generated key has length %s, whereas should have length %s" % (len(key), KEY_LENGTH)
|
||||
|
||||
print 'Generated key: %s\nfor password: %s' % (key, password)
|
||||
print 'Bytes:'
|
||||
print [b for b in key]
|
||||
Reference in New Issue
Block a user