Skip to content

MAC OS running new X509Certificate2() failed with error The PKCS#12 Exportable flag is not supported on this platform. #8547

@Ternence

Description

@Ternence

Description

new X509Certificate2(ms.ToArray(), password, X509KeyStorageFlags.Exportable);

This line causes this Exception: Cause System.PlatformNotSupportedException: The PKCS#12 Exportable flag is not supported on this platform.
366782990302900ccb0c3d75a634e16e

Code

`private static X509Certificate2 withPrivateKey(X509Certificate certificate, AsymmetricKeyParameter privateKey)
{
const string password = "password";
Pkcs12Store store;

    if (RunTime.IsRunningOnMono)
    {
        var builder = new Pkcs12StoreBuilder();
        builder.SetUseDerEncoding(true);
        store = builder.Build();
    }
    else
    {
        store = new Pkcs12Store();
    }

    var entry = new X509CertificateEntry(certificate);
    store.SetCertificateEntry(certificate.SubjectDN.ToString(), entry);

    store.SetKeyEntry(certificate.SubjectDN.ToString(), new AsymmetricKeyEntry(privateKey), new[] { entry });
    using (var ms = new MemoryStream())
    {
        store.Save(ms, password.ToCharArray(), new SecureRandom(new CryptoApiRandomGenerator()));
        try
        {
            return new X509Certificate2(ms.ToArray(), password, X509KeyStorageFlags.Exportable);
        } catch (Exception e){
            Console.WriteLine(e);
            return null;
        }              
    }
}`

Exception

2022-07-06 11:55:57.418 WebDebugger[29683:4734908] System.PlatformNotSupportedException: The PKCS#12 Exportable flag is not supported on this platform.
2022-07-06 11:55:57.418 WebDebugger[29683:4734908] at Internal.Cryptography.Pal.AppleCertificatePal.FromDerBlob(ReadOnlySpan1 rawData, X509ContentType contentType, SafePasswordHandle password, X509KeyStorageFlags keyStorageFlags) at Internal.Cryptography.Pal.AppleCertificatePal.FromBlob(ReadOnlySpan1 rawData, SafePasswordHandle password, X509KeyStorageFlags keyStorageFlags)
2022-07-06 11:55:57.418 WebDebugger[29683:4734908] at Internal.Cryptography.Pal.CertificatePal.FromBlob(ReadOnlySpan`1 rawData, SafePasswordHandle password, X509KeyStorageFlags keyStorageFlags)
at System.Security.Cryptography.X509Certificates.X509Certificate..ctor(Byte[] rawData, String password, X509KeyStorageFlags keyStorageFlags)
2022-07-06 11:55:57.418 WebDebugger[29683:4734908] at System.Security.Cryptography.X509Certificates.X509Certificate2..ctor(Byte[] rawData, String password, X509KeyStorageFlags keyStorageFlags)
2022-07-06 11:55:57.418 WebDebugger[29683:4734908] at Titanium.Web.Proxy.Network.Certificate.BCCertificateMaker.withPrivateKey(X509Certificate certificate, AsymmetricKeyParameter privateKey) in /Users/zty/Downloads/src1/Titanium.Web.Proxy/Certificates/Makers/BCCertificateMaker.cs:line 193

Steps to Reproduce

  1. using the project new X509Certificate2(); Cause System.PlatformNotSupportedException: The PKCS#12 Exportable flag is not supported on this platform in Mac OS  justcoding121/titanium-web-proxy#923
  2. convert the project into MAUI
  3. build the Mac OS version. It caused error

Version with bug

6.0.312

Last version that worked well

6.0.312

Affected platforms

macOS

Affected platform versions

MacOS 12.4 (21F79)

Did you find any workaround?

No response

Relevant log output

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    area-infrastructureCI, Maestro / Coherency, upstream dependencies/versionsplatform/macosmacOS / Mac Catalystt/bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions