openssl 3.0 wants at least 512 bytes, otherwise it throws an error: error:0280007E:Diffie-Hellman routines::modulus too small Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Reviewed-by: Jiewen Yao <Jiewen.yao@intel.com>
		
			
				
	
	
		
			108 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			108 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @file
 | 
						|
  Application for Diffie-Hellman Primitives Validation.
 | 
						|
 | 
						|
Copyright (c) 2010 - 2014, Intel Corporation. All rights reserved.<BR>
 | 
						|
SPDX-License-Identifier: BSD-2-Clause-Patent
 | 
						|
 | 
						|
**/
 | 
						|
 | 
						|
#include "TestBaseCryptLib.h"
 | 
						|
 | 
						|
VOID  *mDh1;
 | 
						|
VOID  *mDh2;
 | 
						|
 | 
						|
UNIT_TEST_STATUS
 | 
						|
EFIAPI
 | 
						|
TestVerifyDhPreReq (
 | 
						|
  UNIT_TEST_CONTEXT  Context
 | 
						|
  )
 | 
						|
{
 | 
						|
  mDh1 = DhNew ();
 | 
						|
  if (mDh1 == NULL) {
 | 
						|
    return UNIT_TEST_ERROR_TEST_FAILED;
 | 
						|
  }
 | 
						|
 | 
						|
  mDh2 = DhNew ();
 | 
						|
  if (mDh2 == NULL) {
 | 
						|
    return UNIT_TEST_ERROR_TEST_FAILED;
 | 
						|
  }
 | 
						|
 | 
						|
  return UNIT_TEST_PASSED;
 | 
						|
}
 | 
						|
 | 
						|
VOID
 | 
						|
EFIAPI
 | 
						|
TestVerifyDhCleanUp (
 | 
						|
  UNIT_TEST_CONTEXT  Context
 | 
						|
  )
 | 
						|
{
 | 
						|
  if (mDh1 != NULL) {
 | 
						|
    DhFree (mDh1);
 | 
						|
    mDh1 = NULL;
 | 
						|
  }
 | 
						|
 | 
						|
  if (mDh2 != NULL) {
 | 
						|
    DhFree (mDh2);
 | 
						|
    mDh2 = NULL;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
UNIT_TEST_STATUS
 | 
						|
EFIAPI
 | 
						|
TestVerifyDhGenerateKey (
 | 
						|
  UNIT_TEST_CONTEXT  Context
 | 
						|
  )
 | 
						|
{
 | 
						|
  UINT8    Prime[512];
 | 
						|
  UINT8    PublicKey1[64];
 | 
						|
  UINTN    PublicKey1Length;
 | 
						|
  UINT8    PublicKey2[64];
 | 
						|
  UINTN    PublicKey2Length;
 | 
						|
  UINT8    Key1[64];
 | 
						|
  UINTN    Key1Length;
 | 
						|
  UINT8    Key2[64];
 | 
						|
  UINTN    Key2Length;
 | 
						|
  BOOLEAN  Status;
 | 
						|
 | 
						|
  //
 | 
						|
  // Initialize Key Length
 | 
						|
  //
 | 
						|
  PublicKey1Length = sizeof (PublicKey1);
 | 
						|
  PublicKey2Length = sizeof (PublicKey2);
 | 
						|
  Key1Length       = sizeof (Key1);
 | 
						|
  Key2Length       = sizeof (Key2);
 | 
						|
 | 
						|
  Status = DhGenerateParameter (mDh1, 2, sizeof (Prime), Prime);
 | 
						|
  UT_ASSERT_TRUE (Status);
 | 
						|
 | 
						|
  Status = DhSetParameter (mDh2, 2, sizeof (Prime), Prime);
 | 
						|
  UT_ASSERT_TRUE (Status);
 | 
						|
 | 
						|
  Status = DhGenerateKey (mDh1, PublicKey1, &PublicKey1Length);
 | 
						|
  UT_ASSERT_TRUE (Status);
 | 
						|
 | 
						|
  Status = DhGenerateKey (mDh2, PublicKey2, &PublicKey2Length);
 | 
						|
  UT_ASSERT_TRUE (Status);
 | 
						|
 | 
						|
  Status = DhComputeKey (mDh1, PublicKey2, PublicKey2Length, Key1, &Key1Length);
 | 
						|
  UT_ASSERT_TRUE (Status);
 | 
						|
 | 
						|
  Status = DhComputeKey (mDh2, PublicKey1, PublicKey1Length, Key2, &Key2Length);
 | 
						|
  UT_ASSERT_TRUE (Status);
 | 
						|
 | 
						|
  UT_ASSERT_EQUAL (Key1Length, Key2Length);
 | 
						|
 | 
						|
  UT_ASSERT_MEM_EQUAL (Key1, Key2, Key1Length);
 | 
						|
 | 
						|
  return UNIT_TEST_PASSED;
 | 
						|
}
 | 
						|
 | 
						|
TEST_DESC  mDhTest[] = {
 | 
						|
  //
 | 
						|
  // -----Description--------------------------------Class---------------------Function----------------Pre-----------------Post------------Context
 | 
						|
  //
 | 
						|
  { "TestVerifyDhGenerateKey()", "CryptoPkg.BaseCryptLib.Dh", TestVerifyDhGenerateKey, TestVerifyDhPreReq, TestVerifyDhCleanUp, NULL },
 | 
						|
};
 | 
						|
 | 
						|
UINTN  mDhTestNum = ARRAY_SIZE (mDhTest);
 |