# CertificateTrustConfigurationCallbackAnnotationContext Methods

- Package: [Aspire.Hosting](/reference/api/csharp/aspire.hosting.md)
- Type: [CertificateTrustConfigurationCallbackAnnotationContext](/reference/api/csharp/aspire.hosting/certificatetrustconfigurationcallbackannotationcontext.md)
- Kind: `Methods`
- Members: `1`

Context provided to a [CertificateTrustConfigurationCallbackAnnotation](/reference/api/csharp/aspire.hosting/certificatetrustconfigurationcallbackannotation.md) callback.

## CreateCustomBundle(Func<X509Certificate2Collection, CancellationToken, Task<byte[]>>)

> **Experimental:** ASPIRECERTIFICATES001 - [Learn more](/diagnostics/aspirecertificates001/)

- Name: `CreateCustomBundle(Func<X509Certificate2Collection, CancellationToken, Task<byte[]>>)`
- Returns: [ReferenceExpression](/reference/api/csharp/aspire.hosting/referenceexpression.md)
- Source: [GitHub](https://github.com/microsoft/aspire/blob/bd20f904cde09ecb9c9ae5116a6f13614bf2d7c2/src/Aspire.Hosting/ApplicationModel/CertificateTrustConfigurationCallbackAnnotation.cs#L127-L135)

Adds a custom certificate bundle to the callback context. The provided generator will be invoked during trust configuration and should return the bundle contents as a byte array.

```csharp
public sealed class CertificateTrustConfigurationCallbackAnnotationContext
{
    public ReferenceExpression CreateCustomBundle(
        Func<X509Certificate2Collection, CancellationToken, Task<byte[]>> bundleGenerator)
    {
        // ...
    }
}
```

## Parameters

- `bundleGenerator` (`Func<X509Certificate2Collection, CancellationToken, Task<byte[]>>`)
  A function that generates the custom certificate bundle and returns the bundle contents as a byte array.

## Returns

[ReferenceExpression](/reference/api/csharp/aspire.hosting/referenceexpression.md) -- A [ReferenceExpression](/reference/api/csharp/aspire.hosting/referenceexpression.md) that can be used to reference the custom bundle.

## Remarks

```csharp
builder.AddContainer("my-java-app", "my-image:latest")
    .WithCertificateTrustConfiguration(ctx =>
    {
        ctx.EnvironmentVariables["JAVAX_NET_SSL_TRUSTSTORE"] = ctx.CreateCustomBundle((certs, ct) =>
        {
            var pkcs12Builder = new Pkcs12Builder();
            var safeContents = new Pkcs12SafeContents();
            foreach (var cert in certs)
            {
                safeContents.AddCertificate(cert);
            }
            pkcs12Builder.AddSafeContentsUnencrypted(safeContents);
            pkcs12Builder.SealWithMac(string.Empty, HashAlgorithmName.SHA256, 2048);
            return Task.FromResult(pkcs12Builder.Encode());
        });
        return Task.CompletedTask;
    });
```
