public void FindCertificateTest() {
CertificateHandler ch = new CertificateHandler();
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(512);
byte[] blob = rsa.ExportCspBlob(false);
RSACryptoServiceProvider rsa_pub = new RSACryptoServiceProvider();
rsa_pub.ImportCspBlob(blob);
List<Brunet.Util.MemBlock> supported = new List<Brunet.Util.MemBlock>();
List<Brunet.Util.MemBlock> unsupported = new List<Brunet.Util.MemBlock>();
for(int i = 0; i < 20; i++) {
CertificateMaker cm = new CertificateMaker("US", "UFL", "ACIS", "David Wolinsky",
"[email protected]" + i, rsa_pub, i.ToString());
Certificate cert = cm.Sign(cm, rsa);
if(i % 2 == 0) {
ch.AddCACertificate(cert.X509);
ch.AddSignedCertificate(cert.X509);
supported.Add(cert.SerialNumber);
} else {
unsupported.Add(cert.SerialNumber);
}
}
Assert.IsNotNull(ch.FindCertificate(supported), "Should find a certificate");
bool success = false;
try {
success = ch.FindCertificate(unsupported) != null;
} catch { }
Assert.IsTrue(!success, "Should not find a certificate");
List<Brunet.Util.MemBlock> mixed = new List<Brunet.Util.MemBlock>(unsupported);
mixed.Insert(4 ,supported[1]);
Assert.AreEqual(supported[1],
Brunet.Util.MemBlock.Reference(ch.FindCertificate(mixed).SerialNumber),
"Only one supported");
}
}