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
Pkcs5HashPassword(IN UINTN PasswordLength,IN CONST CHAR8 * Password,IN UINTN SaltLength,IN CONST UINT8 * Salt,IN UINTN IterationCount,IN UINTN DigestSize,IN UINTN KeyLength,OUT UINT8 * OutKey)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 }
57