static X509CertificateRequestType getRequestFormat(Byte[] rawData) { UInt32 pcbStructInfo = 0; if (Crypt32.CryptDecodeObject(65537, Wincrypt.X509_CERT_REQUEST_TO_BE_SIGNED, rawData, (UInt32)rawData.Length, 8, IntPtr.Zero, ref pcbStructInfo)) { return(X509CertificateRequestType.PKCS10); } try { PKCS7SignedMessage temp = new PKCS7SignedMessage(rawData); return(temp.Content is X509CertificateRequest[] ? X509CertificateRequestType.PKCS7 : X509CertificateRequestType.Invalid); } catch { return(X509CertificateRequestType.Invalid); } }
void decodePkcs7() { ExternalData = new PKCS7SignedMessage(RawData); Version = ((X509CertificateRequest[])ExternalData.Content)[0].Version; SubjectDn = ((X509CertificateRequest[])ExternalData.Content)[0].SubjectDn; PublicKey = ((X509CertificateRequest[])ExternalData.Content)[0].PublicKey; SignatureIsValid = ((X509CertificateRequest[])ExternalData.Content)[0].SignatureIsValid; SignatureAlgorithm = ((X509CertificateRequest[])ExternalData.Content)[0].SignatureAlgorithm; foreach (X509Attribute attrib in ((X509CertificateRequest[])ExternalData.Content)[0].Attributes) { _attribs.Add(attrib); } foreach (X509Extension ext in ((X509CertificateRequest[])ExternalData.Content)[0].Extensions) { exts.Add(ext); } }