'Returns the name of the key derivation function to use.
:return:
A unicode from of one of the following: "pbkdf1", "pbkdf2",
"pkcs12_kdf"'

@property
def kdf(self):

    encryption_algo = self[u'algorithm'].native
    if (encryption_algo == u'pbes2'):
        return self[u'parameters'][u'key_derivation_func'][u'algorithm'].native
    if (encryption_algo.find(u'.') == (-1)):
        if (encryption_algo.find(u'_') != (-1)):
            (encryption_algo, _) = encryption_algo.split(u'_', 1)
            if (encryption_algo == u'pbes1'):
                return u'pbkdf1'
            if (encryption_algo == u'pkcs12'):
                return u'pkcs12_kdf'
        raise ValueError(unwrap(u'\n                                                                Encryption    algorithm    "%s"    does    not    have    a    registered    key\n                                                                derivation    function\n                                                                ', encryption_algo))
    raise ValueError(unwrap(u'\n                                                Unrecognized    encryption    algorithm    "%s",    can    not    determine    key\n                                                derivation    function\n                                                ', encryption_algo))
