Connect one TLS session by finishing the TLS handshake process. @param[in] HttpInstance The HTTP instance private data. @param[in] Timeout The time to wait for connection done. @retval EFI_SUCCESS The TLS session is established. @retval EFI_OUT_OF_RESOURCES Can't allocate memory resources. @retval EFI_ABORTED TLS session state is incorr
| 1107 | |
| 1108 | **/ |
| 1109 | EFI_STATUS |
| 1110 | EFIAPI |
| 1111 | TlsConnectSession ( |
| 1112 | IN HTTP_PROTOCOL *HttpInstance, |
| 1113 | IN EFI_EVENT Timeout |
| 1114 | ) |
| 1115 | { |
| 1116 | EFI_STATUS Status; |
| 1117 | UINT8 *BufferOut; |
| 1118 | UINTN BufferOutSize; |
| 1119 | NET_BUF *PacketOut; |
| 1120 | UINT8 *DataOut; |
| 1121 | NET_BUF *Pdu; |
| 1122 | UINT8 *BufferIn; |
| 1123 | UINTN BufferInSize; |
| 1124 | UINT8 *GetSessionDataBuffer; |
| 1125 | UINTN GetSessionDataBufferSize; |
| 1126 | |
| 1127 | BufferOut = NULL; |
| 1128 | PacketOut = NULL; |
| 1129 | DataOut = NULL; |
| 1130 | Pdu = NULL; |
| 1131 | BufferIn = NULL; |
| 1132 | |
| 1133 | // |
| 1134 | // Initialize TLS state. |
| 1135 | // |
| 1136 | HttpInstance->TlsSessionState = EfiTlsSessionNotStarted; |
| 1137 | Status = HttpInstance->Tls->SetSessionData ( |
| 1138 | HttpInstance->Tls, |
| 1139 | EfiTlsSessionState, |
| 1140 | &(HttpInstance->TlsSessionState), |
| 1141 | sizeof (EFI_TLS_SESSION_STATE) |
| 1142 | ); |
| 1143 | if (EFI_ERROR (Status)) { |
| 1144 | return Status; |
| 1145 | } |
| 1146 | |
| 1147 | // |
| 1148 | // Create ClientHello |
| 1149 | // |
| 1150 | BufferOutSize = DEF_BUF_LEN; |
| 1151 | BufferOut = AllocateZeroPool (BufferOutSize); |
| 1152 | if (BufferOut == NULL) { |
| 1153 | Status = EFI_OUT_OF_RESOURCES; |
| 1154 | return Status; |
| 1155 | } |
| 1156 | |
| 1157 | Status = HttpInstance->Tls->BuildResponsePacket ( |
| 1158 | HttpInstance->Tls, |
| 1159 | NULL, |
| 1160 | 0, |
| 1161 | BufferOut, |
| 1162 | &BufferOutSize |
| 1163 | ); |
| 1164 | if (Status == EFI_BUFFER_TOO_SMALL) { |
| 1165 | FreePool (BufferOut); |
| 1166 | BufferOut = AllocateZeroPool (BufferOutSize); |
no test coverage detected