INNER CODE UNIT · Python

kdf_calc

polhenarejos/pico-openpgp · tool/kdf_calc.py:37

def kdf_calc(pw_string, salt_byte, iterations):
    ffi = FFI()
    ffi.cdef(DEF_gcry_kdf_derive)
    if (platform.system() == 'Darwin'):
        libgcrypt = ffi.dlopen("libgcrypt.20.dylib")
    else:
        libgcrypt = ffi.dlopen("libgcrypt.so.20")
    if isinstance(pw_string, str):
        pw_byte = pw_string.encode('UTF-8')
    else:
        pw_byte = pw_string
    pw=ffi.new("char []", pw_byte)
    salt = ffi.new("char []", salt_byte)
    kb = ffi.new("char []", 32)
    r = libgcrypt.gcry_kdf_derive(pw, len(pw_string), GCRY_KDF_ITERSALTED_S2K,
                                  GCRY_MD_SHA256, salt, 8, iterations, 32, kb)
    if r != 0:
        raise ValueError("libgcrypt error", r)

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…