// Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; using Microsoft.AspNetCore.DataProtection; using Microsoft.AspNetCore.DataProtection.KeyManagement; using Microsoft.AspNetCore.DataProtection.XmlEncryption; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; namespace CustomEncryptorSample { public static class CustomBuilderExtensions { public static IDataProtectionBuilder UseXmlEncryptor( this IDataProtectionBuilder builder, Func factory) { builder.Services.AddSingleton>(serviceProvider => { var instance = factory(serviceProvider); return new ConfigureOptions(options => { options.XmlEncryptor = instance; }); }); return builder; } } }