IkeCommon.c revision 4fd606d1f5abe38e1f42c38de1d2e895166bd0f4
d0538f66491267879b7418b21ad78e3dcc2dcc83cg Common operation of the IKE
d0538f66491267879b7418b21ad78e3dcc2dcc83cg Copyright (c) 2010, Intel Corporation. All rights reserved.<BR>
d0538f66491267879b7418b21ad78e3dcc2dcc83cg This program and the accompanying materials
d0538f66491267879b7418b21ad78e3dcc2dcc83cg are licensed and made available under the terms and conditions of the BSD License
d0538f66491267879b7418b21ad78e3dcc2dcc83cg which accompanies this distribution. The full text of the license may be found at
d0538f66491267879b7418b21ad78e3dcc2dcc83cg THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
d0538f66491267879b7418b21ad78e3dcc2dcc83cg WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
d0538f66491267879b7418b21ad78e3dcc2dcc83cg// Initial the SPI
d0538f66491267879b7418b21ad78e3dcc2dcc83cg Call Crypto Lib to generate a random value with eight-octet length.
d0538f66491267879b7418b21ad78e3dcc2dcc83cg @return the 64 byte vaule.
d0538f66491267879b7418b21ad78e3dcc2dcc83cg Status = IpSecCryptoIoGenerateRandomBytes ((UINT8 *)&Cookie, sizeof (UINT64));
d0538f66491267879b7418b21ad78e3dcc2dcc83cg Generate the random data for Nonce payload.
d0538f66491267879b7418b21ad78e3dcc2dcc83cg @param[in] NonceSize Size of the data in bytes.
d0538f66491267879b7418b21ad78e3dcc2dcc83cg @return Buffer which contains the random data of the spcified size.
d0538f66491267879b7418b21ad78e3dcc2dcc83cg Status = IpSecCryptoIoGenerateRandomBytes (Nonce, NonceSize);
d0538f66491267879b7418b21ad78e3dcc2dcc83cg Convert the IKE Header from Network order to Host order.
d0538f66491267879b7418b21ad78e3dcc2dcc83cg @param[in, out] Header The pointer of the IKE_HEADER.
d0538f66491267879b7418b21ad78e3dcc2dcc83cg Header->InitiatorCookie = NTOHLL (Header->InitiatorCookie);
d0538f66491267879b7418b21ad78e3dcc2dcc83cg Header->ResponderCookie = NTOHLL (Header->ResponderCookie);
d0538f66491267879b7418b21ad78e3dcc2dcc83cg Convert the IKE Header from Host order to Network order.
d0538f66491267879b7418b21ad78e3dcc2dcc83cg @param[in, out] Header The pointer of the IKE_HEADER.
d0538f66491267879b7418b21ad78e3dcc2dcc83cg Header->InitiatorCookie = HTONLL (Header->InitiatorCookie);
d0538f66491267879b7418b21ad78e3dcc2dcc83cg Header->ResponderCookie = HTONLL (Header->ResponderCookie);
d0538f66491267879b7418b21ad78e3dcc2dcc83cg Allocate a buffer of IKE_PAYLOAD and set its Signature.
d0538f66491267879b7418b21ad78e3dcc2dcc83cg @return A buffer of IKE_PAYLOAD.
d0538f66491267879b7418b21ad78e3dcc2dcc83cg IkePayload = (IKE_PAYLOAD *) AllocateZeroPool (sizeof (IKE_PAYLOAD));
d0538f66491267879b7418b21ad78e3dcc2dcc83cg Free a specified IKE_PAYLOAD buffer.
d0538f66491267879b7418b21ad78e3dcc2dcc83cg @param[in] IkePayload Pointer of IKE_PAYLOAD to be freed.
d0538f66491267879b7418b21ad78e3dcc2dcc83cg // If this IkePayload is not referred by others, free it.
d0538f66491267879b7418b21ad78e3dcc2dcc83cg if (!IkePayload->IsPayloadBufExt && (IkePayload->PayloadBuf != NULL)) {
d0538f66491267879b7418b21ad78e3dcc2dcc83cg Generate an new SPI.
d0538f66491267879b7418b21ad78e3dcc2dcc83cg @return a SPI in 4 bytes.
d0538f66491267879b7418b21ad78e3dcc2dcc83cg // TODO: should generate SPI randomly to avoid security issue
d0538f66491267879b7418b21ad78e3dcc2dcc83cg Generate a random data for IV
d0538f66491267879b7418b21ad78e3dcc2dcc83cg @param[in] IvBuffer The pointer of the IV buffer.
d0538f66491267879b7418b21ad78e3dcc2dcc83cg @param[in] IvSize The IV size.
d0538f66491267879b7418b21ad78e3dcc2dcc83cg @retval EFI_SUCCESS Create a random data for IV.
d0538f66491267879b7418b21ad78e3dcc2dcc83cg @retval otherwise Failed.
d0538f66491267879b7418b21ad78e3dcc2dcc83cg return IpSecCryptoIoGenerateRandomBytes (IvBuffer, IvSize);
d0538f66491267879b7418b21ad78e3dcc2dcc83cg Find SPD entry by a specified SPD selector.
d0538f66491267879b7418b21ad78e3dcc2dcc83cg @param[in] SpdSel Point to SPD Selector to be searched for.
dc8c6b69817035ac35a9f4e5a835d114ce2b5e24ms @retval Point to SPD Entry if the SPD entry found.
dc8c6b69817035ac35a9f4e5a835d114ce2b5e24ms @retval NULL if not found.
fc6df3bdbec9a23827d64460d15c987a4497ef35miao chen - Sun Microsystems - Beijing ChinaIPSEC_SPD_ENTRY *
fc6df3bdbec9a23827d64460d15c987a4497ef35miao chen - Sun Microsystems - Beijing ChinaIkeSearchSpdEntry (
fc6df3bdbec9a23827d64460d15c987a4497ef35miao chen - Sun Microsystems - Beijing China IN EFI_IPSEC_SPD_SELECTOR *SpdSel
if (CompareSpdSelector (
return SpdEntry;
return NULL;