Creates a Tls child handle, open EFI_TLS_PROTOCOL and EFI_TLS_CONFIGURATION_PROTOCOL. @param[in] ImageHandle The firmware allocated handle for the UEFI image. @param[out] TlsSb Pointer to the TLS SERVICE_BINDING_PROTOCOL. @param[out] TlsProto Pointer to the EFI_TLS_PROTOCOL instance. @param[out] TlsConfiguration Pointer to the EFI_TLS_CONF
| 142 | |
| 143 | **/ |
| 144 | EFI_HANDLE |
| 145 | EFIAPI |
| 146 | TlsCreateChild ( |
| 147 | IN EFI_HANDLE ImageHandle, |
| 148 | OUT EFI_SERVICE_BINDING_PROTOCOL **TlsSb, |
| 149 | OUT EFI_TLS_PROTOCOL **TlsProto, |
| 150 | OUT EFI_TLS_CONFIGURATION_PROTOCOL **TlsConfiguration |
| 151 | ) |
| 152 | { |
| 153 | EFI_STATUS Status; |
| 154 | EFI_HANDLE TlsChildHandle; |
| 155 | |
| 156 | TlsChildHandle = 0; |
| 157 | |
| 158 | // |
| 159 | // Locate TlsServiceBinding protocol. |
| 160 | // |
| 161 | gBS->LocateProtocol ( |
| 162 | &gEfiTlsServiceBindingProtocolGuid, |
| 163 | NULL, |
| 164 | (VOID **) TlsSb |
| 165 | ); |
| 166 | if (*TlsSb == NULL) { |
| 167 | return NULL; |
| 168 | } |
| 169 | |
| 170 | Status = (*TlsSb)->CreateChild (*TlsSb, &TlsChildHandle); |
| 171 | if (EFI_ERROR (Status)) { |
| 172 | return NULL; |
| 173 | } |
| 174 | |
| 175 | Status = gBS->OpenProtocol ( |
| 176 | TlsChildHandle, |
| 177 | &gEfiTlsProtocolGuid, |
| 178 | (VOID **) TlsProto, |
| 179 | ImageHandle, |
| 180 | TlsChildHandle, |
| 181 | EFI_OPEN_PROTOCOL_GET_PROTOCOL |
| 182 | ); |
| 183 | if (EFI_ERROR (Status)) { |
| 184 | (*TlsSb)->DestroyChild (*TlsSb, TlsChildHandle); |
| 185 | return NULL; |
| 186 | } |
| 187 | |
| 188 | Status = gBS->OpenProtocol ( |
| 189 | TlsChildHandle, |
| 190 | &gEfiTlsConfigurationProtocolGuid, |
| 191 | (VOID **) TlsConfiguration, |
| 192 | ImageHandle, |
| 193 | TlsChildHandle, |
| 194 | EFI_OPEN_PROTOCOL_GET_PROTOCOL |
| 195 | ); |
| 196 | if (EFI_ERROR (Status)) { |
| 197 | (*TlsSb)->DestroyChild (*TlsSb, TlsChildHandle); |
| 198 | return NULL; |
| 199 | } |
| 200 | |
| 201 | return TlsChildHandle; |