private void ValidateIPA(IPAFile ipaFile, byte[] signingCertificateBytes, string certificatePassword) { AsymmetricKeyEntry privateKey; X509Certificate signingCertificate = CertificateHelper.GetCertificateAndKeyFromBytes(signingCertificateBytes, certificatePassword, out privateKey); if (signingCertificate == null) { MessageBox.Show("Failed to parse the given signing certificate", "Error"); return; } bool isValid; try { isValid = ipaFile.ValidateExecutableSignature(signingCertificate); } catch (Org.BouncyCastle.Security.Certificates.CertificateExpiredException) { MessageBox.Show("Certificate is outdated", "Error"); return; } catch (Org.BouncyCastle.Security.Certificates.CertificateNotYetValidException) { MessageBox.Show("Certificate is outdated", "Error"); return; } if (isValid) { MessageBox.Show("Signature is valid", "Success"); } else { MessageBox.Show("Signature is invalid", "Error"); } }