19396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu/** @file 29396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu Defines TLS Library APIs. 39396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 49396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuCopyright (c) 2016, Intel Corporation. All rights reserved.<BR> 59396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuThis program and the accompanying materials 69396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wuare licensed and made available under the terms and conditions of the BSD License 79396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wuwhich accompanies this distribution. The full text of the license may be found at 89396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wuhttp://opensource.org/licenses/bsd-license.php 99396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 109396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuTHE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 119396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuWITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 129396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 139396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu**/ 149396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 159396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu#ifndef __TLS_LIB_H__ 169396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu#define __TLS_LIB_H__ 179396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 189396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu/** 199396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu Initializes the OpenSSL library. 209396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 219396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu This function registers ciphers and digests used directly and indirectly 229396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu by SSL/TLS, and initializes the readable error messages. 239396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu This function must be called before any other action takes places. 249396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 259396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu**/ 269396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuVOID 279396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuEFIAPI 289396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuTlsInitialize ( 299396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu VOID 309396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu ); 319396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 329396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu/** 339396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu Free an allocated SSL_CTX object. 349396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 359396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in] TlsCtx Pointer to the SSL_CTX object to be released. 369396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 379396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu**/ 389396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuVOID 399396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuEFIAPI 409396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuTlsCtxFree ( 419396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN VOID *TlsCtx 429396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu ); 439396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 449396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu/** 459396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu Creates a new SSL_CTX object as framework to establish TLS/SSL enabled 469396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu connections. 479396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 489396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in] MajorVer Major Version of TLS/SSL Protocol. 499396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in] MinorVer Minor Version of TLS/SSL Protocol. 509396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 519396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @return Pointer to an allocated SSL_CTX object. 529396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu If the creation failed, TlsCtxNew() returns NULL. 539396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 549396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu**/ 559396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuVOID * 569396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuEFIAPI 579396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuTlsCtxNew ( 589396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN UINT8 MajorVer, 599396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN UINT8 MinorVer 609396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu ); 619396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 629396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu/** 639396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu Free an allocated TLS object. 649396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 659396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu This function removes the TLS object pointed to by Tls and frees up the 669396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu allocated memory. If Tls is NULL, nothing is done. 679396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 689396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in] Tls Pointer to the TLS object to be freed. 699396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 709396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu**/ 719396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuVOID 729396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuEFIAPI 739396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuTlsFree ( 749396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN VOID *Tls 759396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu ); 769396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 779396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu/** 789396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu Create a new TLS object for a connection. 799396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 809396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu This function creates a new TLS object for a connection. The new object 819396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu inherits the setting of the underlying context TlsCtx: connection method, 829396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu options, verification setting. 839396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 849396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in] TlsCtx Pointer to the SSL_CTX object. 859396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 869396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @return Pointer to an allocated SSL object. 879396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu If the creation failed, TlsNew() returns NULL. 889396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 899396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu**/ 909396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuVOID * 919396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuEFIAPI 929396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuTlsNew ( 939396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN VOID *TlsCtx 949396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu ); 959396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 969396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu/** 979396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu Checks if the TLS handshake was done. 989396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 999396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu This function will check if the specified TLS handshake was done. 1009396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 1019396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in] Tls Pointer to the TLS object for handshake state checking. 1029396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 1039396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval TRUE The TLS handshake was done. 1049396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval FALSE The TLS handshake was not done. 1059396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 1069396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu**/ 1079396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuBOOLEAN 1089396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuEFIAPI 1099396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuTlsInHandshake ( 1109396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN VOID *Tls 1119396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu ); 1129396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 1139396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu/** 1149396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu Perform a TLS/SSL handshake. 1159396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 1169396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu This function will perform a TLS/SSL handshake. 1179396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 1189396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in] Tls Pointer to the TLS object for handshake operation. 1199396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in] BufferIn Pointer to the most recently received TLS Handshake packet. 1209396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in] BufferInSize Packet size in bytes for the most recently received TLS 1219396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu Handshake packet. 1229396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[out] BufferOut Pointer to the buffer to hold the built packet. 1239396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in, out] BufferOutSize Pointer to the buffer size in bytes. On input, it is 1249396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu the buffer size provided by the caller. On output, it 1259396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu is the buffer size in fact needed to contain the 1269396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu packet. 1279396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 1289396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_SUCCESS The required TLS packet is built successfully. 1299396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_INVALID_PARAMETER One or more of the following conditions is TRUE: 1309396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu Tls is NULL. 1319396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu BufferIn is NULL but BufferInSize is NOT 0. 1329396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu BufferInSize is 0 but BufferIn is NOT NULL. 1339396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu BufferOutSize is NULL. 1349396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu BufferOut is NULL if *BufferOutSize is not zero. 1359396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_BUFFER_TOO_SMALL BufferOutSize is too small to hold the response packet. 1369396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_ABORTED Something wrong during handshake. 1379396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 1389396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu**/ 1399396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuEFI_STATUS 1409396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuEFIAPI 1419396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuTlsDoHandshake ( 1429396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN VOID *Tls, 1439396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN UINT8 *BufferIn, OPTIONAL 1449396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN UINTN BufferInSize, OPTIONAL 1459396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu OUT UINT8 *BufferOut, OPTIONAL 1469396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN OUT UINTN *BufferOutSize 1479396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu ); 1489396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 1499396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu/** 1509396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu Handle Alert message recorded in BufferIn. If BufferIn is NULL and BufferInSize is zero, 1519396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu TLS session has errors and the response packet needs to be Alert message based on error type. 1529396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 1539396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in] Tls Pointer to the TLS object for state checking. 1549396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in] BufferIn Pointer to the most recently received TLS Alert packet. 1559396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in] BufferInSize Packet size in bytes for the most recently received TLS 1569396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu Alert packet. 1579396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[out] BufferOut Pointer to the buffer to hold the built packet. 1589396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in, out] BufferOutSize Pointer to the buffer size in bytes. On input, it is 1599396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu the buffer size provided by the caller. On output, it 1609396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu is the buffer size in fact needed to contain the 1619396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu packet. 1629396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 1639396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_SUCCESS The required TLS packet is built successfully. 1649396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_INVALID_PARAMETER One or more of the following conditions is TRUE: 1659396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu Tls is NULL. 1669396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu BufferIn is NULL but BufferInSize is NOT 0. 1679396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu BufferInSize is 0 but BufferIn is NOT NULL. 1689396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu BufferOutSize is NULL. 1699396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu BufferOut is NULL if *BufferOutSize is not zero. 1709396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_ABORTED An error occurred. 1719396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_BUFFER_TOO_SMALL BufferOutSize is too small to hold the response packet. 1729396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 1739396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu**/ 1749396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuEFI_STATUS 1759396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuEFIAPI 1769396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuTlsHandleAlert ( 1779396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN VOID *Tls, 1789396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN UINT8 *BufferIn, OPTIONAL 1799396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN UINTN BufferInSize, OPTIONAL 1809396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu OUT UINT8 *BufferOut, OPTIONAL 1819396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN OUT UINTN *BufferOutSize 1829396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu ); 1839396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 1849396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu/** 1859396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu Build the CloseNotify packet. 1869396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 1879396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in] Tls Pointer to the TLS object for state checking. 1889396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in, out] Buffer Pointer to the buffer to hold the built packet. 1899396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in, out] BufferSize Pointer to the buffer size in bytes. On input, it is 1909396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu the buffer size provided by the caller. On output, it 1919396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu is the buffer size in fact needed to contain the 1929396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu packet. 1939396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 1949396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_SUCCESS The required TLS packet is built successfully. 1959396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_INVALID_PARAMETER One or more of the following conditions is TRUE: 1969396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu Tls is NULL. 1979396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu BufferSize is NULL. 1989396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu Buffer is NULL if *BufferSize is not zero. 1999396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_BUFFER_TOO_SMALL BufferSize is too small to hold the response packet. 2009396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 2019396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu**/ 2029396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuEFI_STATUS 2039396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuEFIAPI 2049396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuTlsCloseNotify ( 2059396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN VOID *Tls, 2069396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN OUT UINT8 *Buffer, 2079396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN OUT UINTN *BufferSize 2089396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu ); 2099396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 2109396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu/** 2119396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu Attempts to read bytes from one TLS object and places the data in Buffer. 2129396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 2139396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu This function will attempt to read BufferSize bytes from the TLS object 2149396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu and places the data in Buffer. 2159396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 2169396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in] Tls Pointer to the TLS object. 2179396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in,out] Buffer Pointer to the buffer to store the data. 2189396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in] BufferSize The size of Buffer in bytes. 2199396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 2209396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval >0 The amount of data successfully read from the TLS object. 2219396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval <=0 No data was successfully read. 2229396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 2239396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu**/ 2249396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuINTN 2259396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuEFIAPI 2269396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuTlsCtrlTrafficOut ( 2279396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN VOID *Tls, 2289396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN OUT VOID *Buffer, 2299396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN UINTN BufferSize 2309396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu ); 2319396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 2329396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu/** 2339396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu Attempts to write data from the buffer to TLS object. 2349396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 2359396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu This function will attempt to write BufferSize bytes data from the Buffer 2369396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu to the TLS object. 2379396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 2389396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in] Tls Pointer to the TLS object. 2399396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in] Buffer Pointer to the data buffer. 2409396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in] BufferSize The size of Buffer in bytes. 2419396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 2429396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval >0 The amount of data successfully written to the TLS object. 2439396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval <=0 No data was successfully written. 2449396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 2459396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu**/ 2469396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuINTN 2479396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuEFIAPI 2489396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuTlsCtrlTrafficIn ( 2499396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN VOID *Tls, 2509396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN VOID *Buffer, 2519396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN UINTN BufferSize 2529396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu ); 2539396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 2549396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu/** 2559396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu Attempts to read bytes from the specified TLS connection into the buffer. 2569396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 2579396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu This function tries to read BufferSize bytes data from the specified TLS 2589396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu connection into the Buffer. 2599396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 2609396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in] Tls Pointer to the TLS connection for data reading. 2619396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in,out] Buffer Pointer to the data buffer. 2629396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in] BufferSize The size of Buffer in bytes. 2639396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 2649396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval >0 The read operation was successful, and return value is the 2659396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu number of bytes actually read from the TLS connection. 2669396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval <=0 The read operation was not successful. 2679396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 2689396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu**/ 2699396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuINTN 2709396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuEFIAPI 2719396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuTlsRead ( 2729396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN VOID *Tls, 2739396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN OUT VOID *Buffer, 2749396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN UINTN BufferSize 2759396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu ); 2769396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 2779396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu/** 2789396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu Attempts to write data to a TLS connection. 2799396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 2809396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu This function tries to write BufferSize bytes data from the Buffer into the 2819396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu specified TLS connection. 2829396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 2839396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in] Tls Pointer to the TLS connection for data writing. 2849396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in] Buffer Pointer to the data buffer. 2859396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in] BufferSize The size of Buffer in bytes. 2869396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 2879396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval >0 The write operation was successful, and return value is the 2889396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu number of bytes actually written to the TLS connection. 2899396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval <=0 The write operation was not successful. 2909396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 2919396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu**/ 2929396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuINTN 2939396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuEFIAPI 2949396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuTlsWrite ( 2959396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN VOID *Tls, 2969396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN VOID *Buffer, 2979396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN UINTN BufferSize 2989396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu ); 2999396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 3009396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu/** 3019396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu Set a new TLS/SSL method for a particular TLS object. 3029396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 3039396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu This function sets a new TLS/SSL method for a particular TLS object. 3049396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 3059396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in] Tls Pointer to a TLS object. 3069396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in] MajorVer Major Version of TLS/SSL Protocol. 3079396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in] MinorVer Minor Version of TLS/SSL Protocol. 3089396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 3099396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_SUCCESS The TLS/SSL method was set successfully. 3109396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_INVALID_PARAMETER The parameter is invalid. 3119396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_UNSUPPORTED Unsupported TLS/SSL method. 3129396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 3139396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu**/ 3149396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuEFI_STATUS 3159396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuEFIAPI 3169396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuTlsSetVersion ( 3179396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN VOID *Tls, 3189396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN UINT8 MajorVer, 3199396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN UINT8 MinorVer 3209396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu ); 3219396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 3229396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu/** 3239396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu Set TLS object to work in client or server mode. 3249396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 3259396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu This function prepares a TLS object to work in client or server mode. 3269396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 3279396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in] Tls Pointer to a TLS object. 3289396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in] IsServer Work in server mode. 3299396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 3309396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_SUCCESS The TLS/SSL work mode was set successfully. 3319396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_INVALID_PARAMETER The parameter is invalid. 3329396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_UNSUPPORTED Unsupported TLS/SSL work mode. 3339396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 3349396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu**/ 3359396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuEFI_STATUS 3369396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuEFIAPI 3379396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuTlsSetConnectionEnd ( 3389396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN VOID *Tls, 3399396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN BOOLEAN IsServer 3409396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu ); 3419396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 3429396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu/** 3439396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu Set the ciphers list to be used by the TLS object. 3449396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 3459396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu This function sets the ciphers for use by a specified TLS object. 3469396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 3479396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in] Tls Pointer to a TLS object. 3489396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in] CipherId Pointer to a string that contains one or more 3499396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu ciphers separated by a colon. 3509396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in] CipherNum The number of cipher in the list. 3519396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 3529396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_SUCCESS The ciphers list was set successfully. 3539396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_INVALID_PARAMETER The parameter is invalid. 3549396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_UNSUPPORTED Unsupported TLS cipher in the list. 3559396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 3569396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu**/ 3579396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuEFI_STATUS 3589396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuEFIAPI 3599396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuTlsSetCipherList ( 3609396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN VOID *Tls, 3619396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN UINT16 *CipherId, 3629396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN UINTN CipherNum 3639396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu ); 3649396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 3659396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu/** 3669396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu Set the compression method for TLS/SSL operations. 3679396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 3689396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu This function handles TLS/SSL integrated compression methods. 3699396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 3709396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in] CompMethod The compression method ID. 3719396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 3729396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_SUCCESS The compression method for the communication was 3739396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu set successfully. 3749396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_UNSUPPORTED Unsupported compression method. 3759396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 3769396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu**/ 3779396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuEFI_STATUS 3789396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuEFIAPI 3799396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuTlsSetCompressionMethod ( 3809396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN UINT8 CompMethod 3819396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu ); 3829396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 3839396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu/** 3849396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu Set peer certificate verification mode for the TLS connection. 3859396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 3869396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu This function sets the verification mode flags for the TLS connection. 3879396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 3889396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in] Tls Pointer to the TLS object. 3899396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in] VerifyMode A set of logically or'ed verification mode flags. 3909396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 3919396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu**/ 3929396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuVOID 3939396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuEFIAPI 3949396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuTlsSetVerify ( 3959396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN VOID *Tls, 3969396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN UINT32 VerifyMode 3979396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu ); 3989396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 3999396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu/** 4009396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu Sets a TLS/SSL session ID to be used during TLS/SSL connect. 4019396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 4029396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu This function sets a session ID to be used when the TLS/SSL connection is 4039396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu to be established. 4049396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 4059396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in] Tls Pointer to the TLS object. 4069396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in] SessionId Session ID data used for session resumption. 4079396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in] SessionIdLen Length of Session ID in bytes. 4089396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 4099396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_SUCCESS Session ID was set successfully. 4109396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_INVALID_PARAMETER The parameter is invalid. 4119396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_UNSUPPORTED No available session for ID setting. 4129396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 4139396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu**/ 4149396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuEFI_STATUS 4159396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuEFIAPI 4169396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuTlsSetSessionId ( 4179396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN VOID *Tls, 4189396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN UINT8 *SessionId, 4199396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN UINT16 SessionIdLen 4209396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu ); 4219396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 4229396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu/** 4239396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu Adds the CA to the cert store when requesting Server or Client authentication. 4249396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 4259396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu This function adds the CA certificate to the list of CAs when requesting 4269396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu Server or Client authentication for the chosen TLS connection. 4279396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 4289396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in] Tls Pointer to the TLS object. 4299396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in] Data Pointer to the data buffer of a DER-encoded binary 4309396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu X.509 certificate or PEM-encoded X.509 certificate. 4319396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in] DataSize The size of data buffer in bytes. 4329396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 4339396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_SUCCESS The operation succeeded. 4349396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_INVALID_PARAMETER The parameter is invalid. 4359396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_OUT_OF_RESOURCES Required resources could not be allocated. 4369396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_ABORTED Invalid X.509 certificate. 4379396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 4389396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu**/ 4399396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuEFI_STATUS 4409396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuEFIAPI 4419396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuTlsSetCaCertificate ( 4429396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN VOID *Tls, 4439396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN VOID *Data, 4449396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN UINTN DataSize 4459396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu ); 4469396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 4479396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu/** 4489396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu Loads the local public certificate into the specified TLS object. 4499396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 4509396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu This function loads the X.509 certificate into the specified TLS object 4519396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu for TLS negotiation. 4529396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 4539396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in] Tls Pointer to the TLS object. 4549396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in] Data Pointer to the data buffer of a DER-encoded binary 4559396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu X.509 certificate or PEM-encoded X.509 certificate. 4569396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in] DataSize The size of data buffer in bytes. 4579396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 4589396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_SUCCESS The operation succeeded. 4599396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_INVALID_PARAMETER The parameter is invalid. 4609396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_OUT_OF_RESOURCES Required resources could not be allocated. 4619396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_ABORTED Invalid X.509 certificate. 4629396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 4639396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu**/ 4649396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuEFI_STATUS 4659396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuEFIAPI 4669396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuTlsSetHostPublicCert ( 4679396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN VOID *Tls, 4689396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN VOID *Data, 4699396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN UINTN DataSize 4709396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu ); 4719396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 4729396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu/** 4739396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu Adds the local private key to the specified TLS object. 4749396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 4759396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu This function adds the local private key (PEM-encoded RSA or PKCS#8 private 4769396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu key) into the specified TLS object for TLS negotiation. 4779396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 4789396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in] Tls Pointer to the TLS object. 4799396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in] Data Pointer to the data buffer of a PEM-encoded RSA 4809396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu or PKCS#8 private key. 4819396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in] DataSize The size of data buffer in bytes. 4829396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 4839396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_SUCCESS The operation succeeded. 4849396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_UNSUPPORTED This function is not supported. 4859396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_ABORTED Invalid private key data. 4869396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 4879396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu**/ 4889396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuEFI_STATUS 4899396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuEFIAPI 4909396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuTlsSetHostPrivateKey ( 4919396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN VOID *Tls, 4929396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN VOID *Data, 4939396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN UINTN DataSize 4949396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu ); 4959396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 4969396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu/** 4979396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu Adds the CA-supplied certificate revocation list for certificate validation. 4989396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 4999396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu This function adds the CA-supplied certificate revocation list data for 5009396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu certificate validity checking. 5019396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 5029396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in] Data Pointer to the data buffer of a DER-encoded CRL data. 5039396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in] DataSize The size of data buffer in bytes. 5049396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 5059396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_SUCCESS The operation succeeded. 5069396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_UNSUPPORTED This function is not supported. 5079396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_ABORTED Invalid CRL data. 5089396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 5099396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu**/ 5109396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuEFI_STATUS 5119396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuEFIAPI 5129396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuTlsSetCertRevocationList ( 5139396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN VOID *Data, 5149396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN UINTN DataSize 5159396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu ); 5169396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 5179396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu/** 5189396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu Gets the protocol version used by the specified TLS connection. 5199396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 5209396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu This function returns the protocol version used by the specified TLS 5219396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu connection. 5229396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 5239396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in] Tls Pointer to the TLS object. 5249396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 5259396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @return The protocol version of the specified TLS connection. 5269396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 5279396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu**/ 5289396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuUINT16 5299396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuEFIAPI 5309396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuTlsGetVersion ( 5319396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN VOID *Tls 5329396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu ); 5339396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 5349396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu/** 5359396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu Gets the connection end of the specified TLS connection. 5369396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 5379396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu This function returns the connection end (as client or as server) used by 5389396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu the specified TLS connection. 5399396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 5409396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in] Tls Pointer to the TLS object. 5419396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 5429396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @return The connection end used by the specified TLS connection. 5439396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 5449396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu**/ 5459396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuUINT8 5469396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuEFIAPI 5479396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuTlsGetConnectionEnd ( 5489396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN VOID *Tls 5499396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu ); 5509396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 5519396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu/** 5529396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu Gets the cipher suite used by the specified TLS connection. 5539396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 5549396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu This function returns current cipher suite used by the specified 5559396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu TLS connection. 5569396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 5579396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in] Tls Pointer to the TLS object. 5589396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in,out] CipherId The cipher suite used by the TLS object. 5599396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 5609396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_SUCCESS The cipher suite was returned successfully. 5619396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_INVALID_PARAMETER The parameter is invalid. 5629396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_UNSUPPORTED Unsupported cipher suite. 5639396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 5649396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu**/ 5659396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuEFI_STATUS 5669396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuEFIAPI 5679396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuTlsGetCurrentCipher ( 5689396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN VOID *Tls, 5699396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN OUT UINT16 *CipherId 5709396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu ); 5719396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 5729396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu/** 5739396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu Gets the compression methods used by the specified TLS connection. 5749396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 5759396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu This function returns current integrated compression methods used by 5769396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu the specified TLS connection. 5779396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 5789396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in] Tls Pointer to the TLS object. 5799396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in,out] CompressionId The current compression method used by 5809396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu the TLS object. 5819396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 5829396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_SUCCESS The compression method was returned successfully. 5839396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_INVALID_PARAMETER The parameter is invalid. 5849396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_ABORTED Invalid Compression method. 5859396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_UNSUPPORTED This function is not supported. 5869396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 5879396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu**/ 5889396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuEFI_STATUS 5899396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuEFIAPI 5909396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuTlsGetCurrentCompressionId ( 5919396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN VOID *Tls, 5929396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN OUT UINT8 *CompressionId 5939396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu ); 5949396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 5959396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu/** 5969396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu Gets the verification mode currently set in the TLS connection. 5979396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 5989396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu This function returns the peer verification mode currently set in the 5999396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu specified TLS connection. 6009396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 6019396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in] Tls Pointer to the TLS object. 6029396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 6039396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @return The verification mode set in the specified TLS connection. 6049396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 6059396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu**/ 6069396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuUINT32 6079396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuEFIAPI 6089396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuTlsGetVerify ( 6099396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN VOID *Tls 6109396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu ); 6119396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 6129396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu/** 6139396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu Gets the session ID used by the specified TLS connection. 6149396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 6159396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu This function returns the TLS/SSL session ID currently used by the 6169396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu specified TLS connection. 6179396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 6189396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in] Tls Pointer to the TLS object. 6199396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in,out] SessionId Buffer to contain the returned session ID. 6209396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in,out] SessionIdLen The length of Session ID in bytes. 6219396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 6229396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_SUCCESS The Session ID was returned successfully. 6239396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_INVALID_PARAMETER The parameter is invalid. 6249396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_UNSUPPORTED Invalid TLS/SSL session. 6259396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 6269396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu**/ 6279396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuEFI_STATUS 6289396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuEFIAPI 6299396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuTlsGetSessionId ( 6309396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN VOID *Tls, 6319396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN OUT UINT8 *SessionId, 6329396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN OUT UINT16 *SessionIdLen 6339396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu ); 6349396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 6359396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu/** 6369396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu Gets the client random data used in the specified TLS connection. 6379396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 6389396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu This function returns the TLS/SSL client random data currently used in 6399396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu the specified TLS connection. 6409396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 6419396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in] Tls Pointer to the TLS object. 6429396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in,out] ClientRandom Buffer to contain the returned client 6439396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu random data (32 bytes). 6449396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 6459396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu**/ 6469396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuVOID 6479396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuEFIAPI 6489396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuTlsGetClientRandom ( 6499396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN VOID *Tls, 6509396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN OUT UINT8 *ClientRandom 6519396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu ); 6529396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 6539396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu/** 6549396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu Gets the server random data used in the specified TLS connection. 6559396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 6569396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu This function returns the TLS/SSL server random data currently used in 6579396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu the specified TLS connection. 6589396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 6599396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in] Tls Pointer to the TLS object. 6609396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in,out] ServerRandom Buffer to contain the returned server 6619396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu random data (32 bytes). 6629396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 6639396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu**/ 6649396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuVOID 6659396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuEFIAPI 6669396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuTlsGetServerRandom ( 6679396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN VOID *Tls, 6689396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN OUT UINT8 *ServerRandom 6699396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu ); 6709396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 6719396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu/** 6729396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu Gets the master key data used in the specified TLS connection. 6739396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 6749396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu This function returns the TLS/SSL master key material currently used in 6759396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu the specified TLS connection. 6769396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 6779396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in] Tls Pointer to the TLS object. 6789396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in,out] KeyMaterial Buffer to contain the returned key material. 6799396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 6809396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_SUCCESS Key material was returned successfully. 6819396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_INVALID_PARAMETER The parameter is invalid. 6829396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_UNSUPPORTED Invalid TLS/SSL session. 6839396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 6849396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu**/ 6859396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuEFI_STATUS 6869396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuEFIAPI 6879396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuTlsGetKeyMaterial ( 6889396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN VOID *Tls, 6899396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN OUT UINT8 *KeyMaterial 6909396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu ); 6919396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 6929396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu/** 6939396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu Gets the CA Certificate from the cert store. 6949396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 6959396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu This function returns the CA certificate for the chosen 6969396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu TLS connection. 6979396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 6989396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in] Tls Pointer to the TLS object. 6999396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[out] Data Pointer to the data buffer to receive the CA 7009396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu certificate data sent to the client. 7019396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in,out] DataSize The size of data buffer in bytes. 7029396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 7039396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_SUCCESS The operation succeeded. 7049396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_UNSUPPORTED This function is not supported. 7059396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_BUFFER_TOO_SMALL The Data is too small to hold the data. 7069396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 7079396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu**/ 7089396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuEFI_STATUS 7099396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuEFIAPI 7109396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuTlsGetCaCertificate ( 7119396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN VOID *Tls, 7129396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu OUT VOID *Data, 7139396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN OUT UINTN *DataSize 7149396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu ); 7159396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 7169396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu/** 7179396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu Gets the local public Certificate set in the specified TLS object. 7189396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 7199396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu This function returns the local public certificate which was currently set 7209396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu in the specified TLS object. 7219396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 7229396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in] Tls Pointer to the TLS object. 7239396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[out] Data Pointer to the data buffer to receive the local 7249396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu public certificate. 7259396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in,out] DataSize The size of data buffer in bytes. 7269396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 7279396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_SUCCESS The operation succeeded. 7289396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_INVALID_PARAMETER The parameter is invalid. 7299396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_NOT_FOUND The certificate is not found. 7309396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_BUFFER_TOO_SMALL The Data is too small to hold the data. 7319396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 7329396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu**/ 7339396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuEFI_STATUS 7349396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuEFIAPI 7359396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuTlsGetHostPublicCert ( 7369396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN VOID *Tls, 7379396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu OUT VOID *Data, 7389396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN OUT UINTN *DataSize 7399396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu ); 7409396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 7419396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu/** 7429396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu Gets the local private key set in the specified TLS object. 7439396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 7449396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu This function returns the local private key data which was currently set 7459396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu in the specified TLS object. 7469396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 7479396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in] Tls Pointer to the TLS object. 7489396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[out] Data Pointer to the data buffer to receive the local 7499396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu private key data. 7509396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in,out] DataSize The size of data buffer in bytes. 7519396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 7529396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_SUCCESS The operation succeeded. 7539396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_UNSUPPORTED This function is not supported. 7549396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_BUFFER_TOO_SMALL The Data is too small to hold the data. 7559396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 7569396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu**/ 7579396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuEFI_STATUS 7589396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuEFIAPI 7599396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuTlsGetHostPrivateKey ( 7609396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN VOID *Tls, 7619396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu OUT VOID *Data, 7629396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN OUT UINTN *DataSize 7639396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu ); 7649396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 7659396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu/** 7669396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu Gets the CA-supplied certificate revocation list data set in the specified 7679396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu TLS object. 7689396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 7699396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu This function returns the CA-supplied certificate revocation list data which 7709396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu was currently set in the specified TLS object. 7719396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 7729396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[out] Data Pointer to the data buffer to receive the CRL data. 7739396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @param[in,out] DataSize The size of data buffer in bytes. 7749396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 7759396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_SUCCESS The operation succeeded. 7769396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_UNSUPPORTED This function is not supported. 7779396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu @retval EFI_BUFFER_TOO_SMALL The Data is too small to hold the data. 7789396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 7799396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu**/ 7809396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuEFI_STATUS 7819396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuEFIAPI 7829396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin WuTlsGetCertRevocationList ( 7839396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu OUT VOID *Data, 7849396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu IN OUT UINTN *DataSize 7859396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu ); 7869396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu 7879396cdfeaa7a053093c9d0a1f13ef6d672dfaa9fJiaxin Wu#endif // __TLS_LIB_H__ 788