]> git.proxmox.com Git - mirror_edk2.git/blob - CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs5Pbkdf2Null.c
CryptoPkg: Add PKCS5 PBKDF2 interface for password derivation.
[mirror_edk2.git] / CryptoPkg / Library / BaseCryptLib / Pk / CryptPkcs5Pbkdf2Null.c
1 /** @file
2 PBKDF2 Key Derivation Function Wrapper Implementation which does not provide real
3 capabilities.
4
5 Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>
6 This program and the accompanying materials
7 are licensed and made available under the terms and conditions of the BSD License
8 which accompanies this distribution. The full text of the license may be found at
9 http://opensource.org/licenses/bsd-license.php
10
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
13
14 **/
15
16 #include "InternalCryptLib.h"
17 #include <openssl/evp.h>
18 #include <openssl/hmac.h>
19
20 /**
21 Derives a key from a password using a salt and iteration count, based on PKCS#5 v2.0
22 password based encryption key derivation function PBKDF2, as specified in RFC 2898.
23
24 Return FALSE to indicate this interface is not supported.
25
26 @param[in] PasswordLength Length of input password in bytes.
27 @param[in] Password Pointer to the array for the password.
28 @param[in] SaltLength Size of the Salt in bytes.
29 @param[in] Salt Pointer to the Salt.
30 @param[in] IterationCount Number of iterations to perform. Its value should be
31 greater than or equal to 1.
32 @param[in] DigestSize Size of the message digest to be used (eg. SHA256_DIGEST_SIZE).
33 NOTE: DigestSize will be used to determine the hash algorithm.
34 Only SHA1_DIGEST_SIZE or SHA256_DIGEST_SIZE is supported.
35 @param[in] KeyLength Size of the derived key buffer in bytes.
36 @param[out] OutKey Pointer to the output derived key buffer.
37
38 @retval FALSE This interface is not supported.
39
40 **/
41 BOOLEAN
42 EFIAPI
43 Pkcs5HashPassword (
44 IN UINTN PasswordLength,
45 IN CONST CHAR8 *Password,
46 IN UINTN SaltLength,
47 IN CONST UINT8 *Salt,
48 IN UINTN IterationCount,
49 IN UINTN DigestSize,
50 IN UINTN KeyLength,
51 OUT UINT8 *OutKey
52 )
53 {
54 ASSERT (FALSE);
55 return FALSE;
56 }