static void TestP7s(byte[] PKCS7) { var signedData = new SignedCms(); signedData.Decode(PKCS7); Console.WriteLine(signedData.Certificates.Count); int i = 0; foreach (var certificate in signedData.Certificates) { i++; X509CertificateParser x509CertificateParser = new X509CertificateParser(); X509Certificate x509Certificate = x509CertificateParser.ReadCertificate(certificate.GetRawCertData()); RsaKeyParameters rsaKeyParameters = x509Certificate.GetPublicKey() as RsaKeyParameters; if (RocaTest.IsVulnerable(rsaKeyParameters)) { Console.WriteLine("Cetificate #" + i + " is vulnerable. Cert Hash: " + certificate.GetCertHashString()); } else { Console.WriteLine("Cetificate #" + i + " is NOT vulnerable"); } } }
static bool TestCert(string pemCert) { X509CertificateParser x509CertificateParser = new X509CertificateParser(); X509Certificate x509Certificate = x509CertificateParser.ReadCertificate(Encoding.ASCII.GetBytes(pemCert)); RsaKeyParameters rsaKeyParameters = x509Certificate.GetPublicKey() as RsaKeyParameters; return(RocaTest.IsVulnerable(rsaKeyParameters)); }
static bool TestCert(string certFile) { X509CertificateParser x509CertificateParser = new X509CertificateParser(); X509Certificate x509Certificate = x509CertificateParser.ReadCertificate(File.ReadAllBytes(certFile)); RsaKeyParameters rsaKeyParameters = x509Certificate.GetPublicKey() as RsaKeyParameters; return(RocaTest.IsVulnerable(rsaKeyParameters)); }
static void TestPDF(string path) { Console.WriteLine("processing PDF"); AcroFields acroFields = new PdfReader(path).AcroFields; List <string> names = acroFields.GetSignatureNames(); foreach (var name in names) { try { Console.WriteLine(name); PdfDictionary dict = acroFields.GetSignatureDictionary(name); PdfString contents = (PdfString)PdfReader.GetPdfObject(dict.Get(PdfName.CONTENTS)); byte[] PKCS7 = contents.GetOriginalBytes(); var signedData = new SignedCms(); signedData.Decode(PKCS7); Console.WriteLine(signedData.Certificates.Count); int i = 0; foreach (var certificate in signedData.Certificates) { i++; X509CertificateParser x509CertificateParser = new X509CertificateParser(); X509Certificate x509Certificate = x509CertificateParser.ReadCertificate(certificate.GetRawCertData()); RsaKeyParameters rsaKeyParameters = x509Certificate.GetPublicKey() as RsaKeyParameters; if (RocaTest.IsVulnerable(rsaKeyParameters)) { Console.WriteLine("Cetificate #" + i + " is vulnerable. Cert Hash: " + certificate.GetCertHashString()); } else { Console.WriteLine("Cetificate #" + i + " is NOT vulnerable"); } } } catch (Exception exc) { Console.WriteLine(exc.Message); } } }