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