public bool CreateRootCertificate() { try { lock (typeof(CertificateConfiguration)) { var algorithm = CertificateConfiguration.RootCertificateAlgorithm; var signatureAlgorithm = CertificateConfiguration.RootCertificateHashAlgorithm; var keySize = CertificateConfiguration.RootRsaKeySize; var keyName = $"{FIDDLER_ROOT_PRIVATE_KEY_NAME}_{algorithm}_{keySize}_{_keyProviderEngine.Name};"; using (var key = PrivateKey.CreateNew(_keyProviderEngine, keyName, algorithm, KeyUsage.Signature, overwrite: true, keySize: keySize)) { _root = _generator.GenerateCertificateAuthority(key, new X500DistinguishedName(FIDDLER_ROOT_DN), signatureAlgorithm); return(true); } } } catch { return(false); } }