From: Piotr Caban piotr@codeweavers.com
--- include/bcrypt.h | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-)
diff --git a/include/bcrypt.h b/include/bcrypt.h index 54a7c038021..b7d6c161467 100644 --- a/include/bcrypt.h +++ b/include/bcrypt.h @@ -106,6 +106,7 @@ typedef LONG NTSTATUS; #define BCRYPT_SHA256_ALGORITHM L"SHA256" #define BCRYPT_SHA384_ALGORITHM L"SHA384" #define BCRYPT_SHA512_ALGORITHM L"SHA512" +#define BCRYPT_PBKDF2_ALGORITHM L"PBKDF2"
#define BCRYPT_CHAIN_MODE_NA L"ChainingModeN/A" #define BCRYPT_CHAIN_MODE_CBC L"ChainingModeCBC" @@ -189,6 +190,7 @@ static const WCHAR BCRYPT_SHA1_ALGORITHM[] = {'S','H','A','1',0}; static const WCHAR BCRYPT_SHA256_ALGORITHM[] = {'S','H','A','2','5','6',0}; static const WCHAR BCRYPT_SHA384_ALGORITHM[] = {'S','H','A','3','8','4',0}; static const WCHAR BCRYPT_SHA512_ALGORITHM[] = {'S','H','A','5','1','2',0}; +static const WCHAR BCRYPT_PBKDF2_ALGORITHM[] = {'P','B','K','D','F','2',0};
static const WCHAR BCRYPT_CHAIN_MODE_NA[] = {'C','h','a','i','n','i','n','g','M','o','d','e','N','/','A',0}; static const WCHAR BCRYPT_CHAIN_MODE_CBC[] = {'C','h','a','i','n','i','n','g','M','o','d','e','C','B','C',0}; @@ -226,6 +228,7 @@ static const WCHAR BCRYPT_DH_PARAMETERS[] = {'D','H','P','a','r','a','m','e','t' #define BCRYPT_SECRET_AGREEMENT_OPERATION 0x00000008 #define BCRYPT_SIGNATURE_OPERATION 0x00000010 #define BCRYPT_RNG_OPERATION 0x00000020 +#define BCRYPT_KEY_DERIVATION_OPERATION 0x00000040
#define BCRYPT_CIPHER_INTERFACE 0x00000001 #define BCRYPT_HASH_INTERFACE 0x00000002 @@ -413,9 +416,23 @@ typedef struct _BCRYPT_KEY_DATA_BLOB_HEADER ULONG cbKeyData; } BCRYPT_KEY_DATA_BLOB_HEADER, *PBCRYPT_KEY_DATA_BLOB_HEADER;
-#define KDF_HASH_ALGORITHM 0x00000000 -#define KDF_SECRET_PREPEND 0x00000001 -#define KDF_SECRET_APPEND 0x00000002 +#define KDF_HASH_ALGORITHM 0x00 +#define KDF_SECRET_PREPEND 0x01 +#define KDF_SECRET_APPEND 0x02 +#define KDF_HMAC_KEY 0x03 +#define KDF_TLS_PRF_LABEL 0x04 +#define KDF_TLS_PRF_SEED 0x05 +#define KDF_SECRET_HANDLE 0x06 +#define KDF_TLS_PRF_PROTOCOL 0x07 +#define KDF_ALGORITHMID 0x08 +#define KDF_PARTYUINFO 0x09 +#define KDF_PARTYVINFO 0x0a +#define KDF_SUPPPUBINFO 0x0b +#define KDF_SUPPPRIVINFO 0x0c +#define KDF_LABEL 0x0d +#define KDF_CONTEXT 0x0e +#define KDF_SALT 0x0f +#define KDF_ITERATION_COUNT 0x10
typedef struct _BCryptBuffer { @@ -552,6 +569,7 @@ NTSTATUS WINAPI BCryptHash(BCRYPT_ALG_HANDLE, PUCHAR, ULONG, PUCHAR, ULONG, PUCH NTSTATUS WINAPI BCryptHashData(BCRYPT_HASH_HANDLE, PUCHAR, ULONG, ULONG); NTSTATUS WINAPI BCryptImportKey(BCRYPT_ALG_HANDLE, BCRYPT_KEY_HANDLE, LPCWSTR, BCRYPT_KEY_HANDLE *, PUCHAR, ULONG, PUCHAR, ULONG, ULONG); NTSTATUS WINAPI BCryptImportKeyPair(BCRYPT_ALG_HANDLE, BCRYPT_KEY_HANDLE, LPCWSTR, BCRYPT_KEY_HANDLE *, UCHAR *, ULONG, ULONG); +NTSTATUS WINAPI BCryptKeyDerivation(BCRYPT_KEY_HANDLE, BCryptBufferDesc *, UCHAR *, ULONG, ULONG *, ULONG); NTSTATUS WINAPI BCryptOpenAlgorithmProvider(BCRYPT_ALG_HANDLE *, LPCWSTR, LPCWSTR, ULONG); NTSTATUS WINAPI BCryptRemoveContextFunction(ULONG, LPCWSTR, ULONG, LPCWSTR); NTSTATUS WINAPI BCryptSecretAgreement(BCRYPT_KEY_HANDLE, BCRYPT_KEY_HANDLE, BCRYPT_SECRET_HANDLE *, ULONG);