---
title: "provideIdentity(for:completionHandler:)"
framework: networkextension
role: symbol
role_heading: Instance Method
path: "networkextension/nwtcpconnectionauthenticationdelegate/provideidentity(for:completionhandler:)"
---

# provideIdentity(for:completionHandler:)

Provide the identity and an optional certificate chain to be used for authentication.

## Declaration

```swift
optional func provideIdentity(for connection: NWTCPConnection, completionHandler completion: @escaping (SecIdentity, [Any]) -> Void)
```

## Parameters

- `connection`: The connection sending this message
- `completion`: The completion handler for passing an identity and certificate chain to the connection. The identity is required and must not be nil. The certificateChain argument is optional, and is an array of one or more doc://com.apple.documentation/documentation/Security/SecCertificate objects. The certificate chain must contain objects of type SecCertificateRef only. If the certificate chain is set, it will be used. Otherwise, the leaf certificate will be extracted from the doc://com.apple.documentation/documentation/Security/SecIdentity object and will be used for authentication. The caller is responsible for keeping the argument object(s) valid for the duration of the completion handler invocation.

## Discussion

Discussion Optional. If this method is not implemented, the default certificate evaluation will be used.

## See Also

### Delegate methods

- [shouldEvaluateTrust(for:)](networkextension/nwtcpconnectionauthenticationdelegate/shouldevaluatetrust(for:).md)
- [evaluateTrust(for:peerCertificateChain:completionHandler:)](networkextension/nwtcpconnectionauthenticationdelegate/evaluatetrust(for:peercertificatechain:completionhandler:).md)
- [shouldProvideIdentity(for:)](networkextension/nwtcpconnectionauthenticationdelegate/shouldprovideidentity(for:).md)
