MCPcopy Create free account
hub / github.com/CloverHackyColor/CloverBootloader / TlsCreateChild

Function TlsCreateChild

NetworkPkg/HttpDxe/HttpsSupport.c:144–202  ·  view source on GitHub ↗

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

Source from the content-addressed store, hash-verified

142
143**/
144EFI_HANDLE
145EFIAPI
146TlsCreateChild (
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;

Callers 1

EfiHttpRequestFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected