Example #1
0

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]
Example #2
0

def to_c_byte_array(content):
    output = wolfssl.byteArray(len(content))
    for i, ch in enumerate(content):
        output[i] = ord(ch)
    return output


password = '******'
salt = '\x0a\x58\xCF\x64\x53\x0d\x82\x3f'
key = wolfssl.byteArray(KEY_LENGTH)
verify = '\x27\xE9\x0D\x7E\xD5\xA1\xC4\x11\xBA\x87\x8B\xC0\x90\xF5\xCE\xBE\x5E\x9D\x5F\xE3\xD6\x2B\x73\xAA'

wolfssl.wc_PKCS12_PBKDF(key, to_c_byte_array(password), len(password),
                        to_c_byte_array(salt), len(salt), 1, KEY_LENGTH,
                        SHA256, 1)
key = wolfssl.cdata(key, KEY_LENGTH)
assert key == verify

password = '******'
salt = '\x16\x82\xC0\xfC\x5b\x3f\x7e\xc5'
key = wolfssl.byteArray(KEY_LENGTH)
verify = '\x90\x1B\x49\x70\xF0\x94\xF0\xF8\x45\xC0\xF3\xF3\x13\x59\x18\x6A\x35\xE3\x67\xFE\xD3\x21\xFD\x7C'

wolfssl.wc_PKCS12_PBKDF(key, to_c_byte_array(password), len(password),
                        to_c_byte_array(salt), len(salt), 1000, KEY_LENGTH,
                        SHA256, 1)
key = wolfssl.cdata(key, KEY_LENGTH)
assert key == verify
Example #3
0
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]
Example #4
0

def to_c_byte_array(content):
    output = wolfssl.byteArray(len(content))
    for i, ch in enumerate(content):
        output[i] = ord(ch)
    return output


password = "******"
salt = "\x0a\x58\xCF\x64\x53\x0d\x82\x3f"
key = wolfssl.byteArray(KEY_LENGTH)
verify = "\x27\xE9\x0D\x7E\xD5\xA1\xC4\x11\xBA\x87\x8B\xC0\x90\xF5\xCE\xBE\x5E\x9D\x5F\xE3\xD6\x2B\x73\xAA"

wolfssl.wc_PKCS12_PBKDF(
    key, to_c_byte_array(password), len(password), to_c_byte_array(salt), len(salt), 1, KEY_LENGTH, SHA256, 1
)
key = wolfssl.cdata(key, KEY_LENGTH)
assert key == verify


password = "******"
salt = "\x16\x82\xC0\xfC\x5b\x3f\x7e\xc5"
key = wolfssl.byteArray(KEY_LENGTH)
verify = "\x90\x1B\x49\x70\xF0\x94\xF0\xF8\x45\xC0\xF3\xF3\x13\x59\x18\x6A\x35\xE3\x67\xFE\xD3\x21\xFD\x7C"

wolfssl.wc_PKCS12_PBKDF(
    key, to_c_byte_array(password), len(password), to_c_byte_array(salt), len(salt), 1000, KEY_LENGTH, SHA256, 1
)
key = wolfssl.cdata(key, KEY_LENGTH)
assert key == verify