Skip to content

Commit e64eaf5

Browse files
committed
Added more unit tests for X509CertificateDatabase
1 parent b2a5f4a commit e64eaf5

File tree

2 files changed

+44
-1
lines changed

2 files changed

+44
-1
lines changed

MimeKit/Cryptography/X509CertificateDatabase.cs

+3
Original file line numberDiff line numberDiff line change
@@ -618,6 +618,9 @@ static X509CrlRecord LoadCrlRecord (DbDataReader reader, X509CrlParser parser, r
618618
case CrlColumnNames.NextUpdate:
619619
record.NextUpdate = DateTime.SpecifyKind (reader.GetDateTime (i), DateTimeKind.Utc);
620620
break;
621+
case CrlColumnNames.IssuerName:
622+
record.IssuerName = reader.GetString (i);
623+
break;
621624
case CrlColumnNames.Delta:
622625
record.IsDelta = reader.GetBoolean (i);
623626
break;

UnitTests/Cryptography/SqliteCertificateDatabaseTests.cs

+41-1
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
using Org.BouncyCastle.X509;
2828
using Org.BouncyCastle.Asn1.X509;
2929
using Org.BouncyCastle.X509.Store;
30+
using Org.BouncyCastle.Utilities.Collections;
3031

3132
using MimeKit.Cryptography;
3233

@@ -59,6 +60,9 @@ public SqliteCertificateDatabaseTests ()
5960
}
6061

6162
ctx.Import (rsa.FileName, "no.secret");
63+
64+
foreach (var crl in SecureMimeTestsBase.ObsoleteCrls)
65+
ctx.Import (crl);
6266
}
6367
}
6468

@@ -124,7 +128,17 @@ public void TestAutoUpgradeVersion1 ()
124128
}
125129
}
126130

127-
static void AssertFindBy (Org.BouncyCastle.Utilities.Collections.ISelector<X509Certificate> selector, X509Certificate expected)
131+
[Test]
132+
public void TestEnumerateMatches ()
133+
{
134+
using (var dbase = new SqliteCertificateDatabase ("sqlite.db", "no.secret")) {
135+
var certificates = ((IStore<X509Certificate>) dbase).EnumerateMatches (null).ToList ();
136+
137+
Assert.That (certificates, Has.Count.EqualTo (6), "Did not find the expected # of certificate");
138+
}
139+
}
140+
141+
static void AssertFindBy (ISelector<X509Certificate> selector, X509Certificate expected)
128142
{
129143
using (var dbase = new SqliteCertificateDatabase ("sqlite.db", "no.secret")) {
130144
// Verify that we can select the Root Certificate
@@ -186,5 +200,31 @@ public void TestFindBySubjectKeyIdentifier ()
186200

187201
AssertFindBy (selector, chain[0]);
188202
}
203+
204+
[Test]
205+
public void TestFindPrivateKeys ()
206+
{
207+
using (var dbase = new SqliteCertificateDatabase ("sqlite.db", "no.secret")) {
208+
var privateKeys = dbase.FindPrivateKeys (null).ToList ();
209+
210+
Assert.That (privateKeys, Has.Count.EqualTo (1), "Did not find the expected # of private keys");
211+
}
212+
}
213+
214+
[Test]
215+
public void TestFindCrl ()
216+
{
217+
using (var dbase = new SqliteCertificateDatabase ("sqlite.db", "no.secret")) {
218+
foreach (var crl in SecureMimeTestsBase.ObsoleteCrls) {
219+
var record = dbase.Find (crl, X509CrlRecordFields.Id | X509CrlRecordFields.IsDelta | X509CrlRecordFields.IssuerName | X509CrlRecordFields.ThisUpdate | X509CrlRecordFields.NextUpdate | X509CrlRecordFields.Crl);
220+
221+
Assert.That (record, Is.Not.Null, $"Did not find the expected CRL for {crl.IssuerDN.ToString ()}");
222+
Assert.That (record.IsDelta, Is.EqualTo (crl.IsDelta ()), $"IsDelta for {crl.IssuerDN.ToString ()}");
223+
Assert.That (record.IssuerName, Is.EqualTo (crl.IssuerDN.ToString ()), $"IssuerName for {crl.IssuerDN.ToString ()}");
224+
Assert.That (record.ThisUpdate, Is.EqualTo (crl.ThisUpdate), $"ThisUpdate for {crl.IssuerDN.ToString ()}");
225+
Assert.That (record.NextUpdate, Is.EqualTo (crl.NextUpdate), $"NextUpdate for {crl.IssuerDN.ToString ()}");
226+
}
227+
}
228+
}
189229
}
190230
}

0 commit comments

Comments
 (0)