Update CryptoPkg for new ciphers (HMAC, Block Cipher, etc) supports.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10997 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
117
CryptoPkg/Application/Cryptest/DhVerify.c
Normal file
117
CryptoPkg/Application/Cryptest/DhVerify.c
Normal file
@@ -0,0 +1,117 @@
|
||||
/** @file
|
||||
Application for Diffie-Hellman Primitives Validation.
|
||||
|
||||
Copyright (c) 2010, Intel Corporation. All rights reserved.<BR>
|
||||
This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
http://opensource.org/licenses/bsd-license.php
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
**/
|
||||
|
||||
#include "Cryptest.h"
|
||||
|
||||
/**
|
||||
Validate UEFI-OpenSSL DH Interfaces.
|
||||
|
||||
@retval EFI_SUCCESS Validation succeeded.
|
||||
@retval EFI_ABORTED Validation failed.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
ValidateCryptDh (
|
||||
VOID
|
||||
)
|
||||
{
|
||||
VOID *Dh1;
|
||||
VOID *Dh2;
|
||||
UINT8 Prime[64];
|
||||
UINT8 PublicKey1[64];
|
||||
UINTN PublicKey1Length;
|
||||
UINT8 PublicKey2[64];
|
||||
UINTN PublicKey2Length;
|
||||
UINT8 Key1[64];
|
||||
UINTN Key1Length;
|
||||
UINT8 Key2[64];
|
||||
UINTN Key2Length;
|
||||
BOOLEAN Status;
|
||||
|
||||
Print (L"\nUEFI-OpenSSL DH Engine Testing:\n");
|
||||
|
||||
//
|
||||
// Generate & Initialize DH Context
|
||||
//
|
||||
Print (L"- Context1 ... ");
|
||||
Dh1 = DhNew ();
|
||||
if (Dh1 == NULL) {
|
||||
Print (L"[Fail]");
|
||||
return EFI_ABORTED;
|
||||
}
|
||||
|
||||
Print (L"Context2 ... ");
|
||||
Dh2 = DhNew ();
|
||||
if (Dh2 == NULL) {
|
||||
Print (L"[Fail]");
|
||||
return EFI_ABORTED;
|
||||
}
|
||||
|
||||
Print (L"Parameter1 ... ");
|
||||
Status = DhGenerateParameter (Dh1, 2, 64, Prime);
|
||||
if (!Status) {
|
||||
Print (L"[Fail]");
|
||||
return EFI_ABORTED;
|
||||
}
|
||||
|
||||
Print (L"Parameter2 ... ");
|
||||
Status = DhSetParameter (Dh2, 2, 64, Prime);
|
||||
if (!Status) {
|
||||
Print (L"[Fail]");
|
||||
return EFI_ABORTED;
|
||||
}
|
||||
|
||||
Print (L"Generate key1 ... ");
|
||||
Status = DhGenerateKey (Dh1, PublicKey1, &PublicKey1Length);
|
||||
if (!Status) {
|
||||
Print (L"[Fail]");
|
||||
return EFI_ABORTED;
|
||||
}
|
||||
|
||||
Print (L"Generate key2 ... ");
|
||||
Status = DhGenerateKey (Dh2, PublicKey2, &PublicKey2Length);
|
||||
if (!Status) {
|
||||
Print (L"[Fail]");
|
||||
return EFI_ABORTED;
|
||||
}
|
||||
|
||||
Print (L"Compute key1 ... ");
|
||||
Status = DhComputeKey (Dh1, PublicKey2, PublicKey2Length, Key1, &Key1Length);
|
||||
if (!Status) {
|
||||
Print (L"[Fail]");
|
||||
return EFI_ABORTED;
|
||||
}
|
||||
|
||||
Print (L"Compute key2 ... ");
|
||||
Status = DhComputeKey (Dh2, PublicKey1, PublicKey1Length, Key2, &Key2Length);
|
||||
if (!Status) {
|
||||
Print (L"[Fail]");
|
||||
return EFI_ABORTED;
|
||||
}
|
||||
|
||||
Print (L"Compare Keys ... ");
|
||||
if (Key1Length != Key2Length) {
|
||||
Print (L"[Fail]");
|
||||
return EFI_ABORTED;
|
||||
}
|
||||
|
||||
if (CompareMem (Key1, Key2, Key1Length) != 0) {
|
||||
Print (L"[Fail]");
|
||||
return EFI_ABORTED;
|
||||
}
|
||||
|
||||
Print (L"[Pass]\n");
|
||||
|
||||
return EFI_SUCCESS;
|
||||
}
|
Reference in New Issue
Block a user