alder_lake_bios/Lcfc/LfcPkg/Library/LfcUuidLib/GETNODE.c

51 lines
1.0 KiB
C

/*
* Lenovo Confidential
* Microcode Source Materials
* COPYRIGHT LENOVO 2005, 2012 All RIGHTS RESERVED
*/
#define PROTOTYPES 1
#include "GLOBAL.h"
#include "MD5.h"
#include "GETNODE.h"
// *******************************************************************
//
// FUNCTION NAME.
// LocalDumpHex
//
// FUNCTIONAL DESCRIPTION.
//
// ENTRY PARAMETERS.
//
// EXIT PARAMETERS.
//
// WARNINGS.
//
// *******************************************************************
void GenNodeID(
unsigned char * pDataBuf, // concatenated "randomness values"
long cData, // size of randomness values
unsigned char NodeID[6] // node ID
)
{
int i, j;
unsigned char Hash[HASHLEN];
MD_CTX context;
MDInit (&context);
MDUpdate (&context, pDataBuf, cData);
MDFinal (Hash, &context);
for (j = 0; j<6; j++) NodeID[j]=0;
for (i = 0,j = 0; i < HASHLEN; i++) {
NodeID[j++] ^= Hash[i];
if (j == 6) j = 0;
};
NodeID[0] |= 0x80; // set the multicast bit
}