public bool ContainsKey(string key) { if (key == null) { throw new ArgumentNullException("key"); } return(store.ContainsAlias(key)); }
private void UpdateKeyPairType(char[] password) { Pkcs12Store store = LoadCAPfx(password); if (store.ContainsAlias(CaAlias) && store.IsEntryOfType(CaAlias, typeof(AsymmetricKeyEntry))) { AsymmetricKeyEntry keyEntry = store.GetKey(CaAlias); CaCertificate = store.GetCertificate(CaAlias).Certificate; KeyPairType = KeyPairUtils.QueryKeyType(keyEntry.Key); } }
/// <summary> /// Publishes the crl /// </summary> public void PublishCrl() { if (_revoked == null) { return; //TODO: may be show a messagebox or something? } Pkcs12Store store = LoadCAPfx(KeyStorePassword); if (!store.ContainsAlias(CaAlias) || !store.IsEntryOfType(CaAlias, typeof(AsymmetricKeyEntry))) { return; } AsymmetricKeyParameter key = store.GetKey(CaAlias).Key; X509Certificate caCert = store.GetCertificate(CaAlias).Certificate; var crlNumber = new BigInteger(ReadCrlSerialNumber(), SerialNumberRadix); var crlGen = new X509V2CrlGenerator(); crlGen.SetIssuerDN(caCert.SubjectDN); //crlGen.SetNextUpdate(); crlGen.SetSignatureAlgorithm(caCert.SigAlgName.Replace("-", "")); crlGen.SetThisUpdate(DateTime.UtcNow); crlGen.SetNextUpdate(DateTime.UtcNow.AddHours(CrlFrequency)); crlGen.AddExtension(X509Extensions.CrlNumber, false, new CrlNumber(crlNumber)); crlGen.AddExtension(X509Extensions.AuthorityKeyIdentifier, false, new AuthorityKeyIdentifierStructure(caCert)); //crlGen.AddExtension(X509Extensions.KeyUsage, false, new KeyUsage(KeyUsage.KeyAgreement | KeyUsage.CrlSign | KeyUsage.DataEncipherment | KeyUsage.DecipherOnly | KeyUsage.EncipherOnly | KeyUsage.KeyEncipherment | KeyUsage.NonRepudiation)); foreach (RevokedSerial rs in _revoked.RevokedSerialCollection) { crlGen.AddCrlEntry(new BigInteger(rs.Serial), rs.RevocationDate, rs.Reason); } X509Crl crl = crlGen.Generate(key); string crlEncoded = PemUtilities.Encode(crl); File.WriteAllText(CrlFilePath, crlEncoded); IncrementCrlSerial(); }