internal SubjectIdentifierOrKey(CAPI.CERT_ID certId) { switch (certId.dwIdChoice) { case CAPI.CERT_ID_ISSUER_SERIAL_NUMBER: X509IssuerSerial issuerSerial = PkcsUtils.DecodeIssuerSerial(certId.Value.IssuerSerialNumber); Reset(SubjectIdentifierOrKeyType.IssuerAndSerialNumber, issuerSerial); break; case CAPI.CERT_ID_KEY_IDENTIFIER: byte[] ski = new byte[certId.Value.KeyId.cbData]; Marshal.Copy(certId.Value.KeyId.pbData, ski, 0, ski.Length); Reset(SubjectIdentifierOrKeyType.SubjectKeyIdentifier, X509Utils.EncodeHexString(ski)); break; default: throw new CryptographicException(SecurityResources.GetResourceString("Cryptography_Cms_Invalid_Subject_Identifier_Type"), certId.dwIdChoice.ToString(CultureInfo.InvariantCulture)); } }
internal CMSG_SIGNER_ENCODE_INFO(int size) { this.cbSize = (uint)size; this.pCertInfo = IntPtr.Zero; this.hCryptProv = IntPtr.Zero; this.dwKeySpec = 0U; this.HashAlgorithm = new CAPI.CRYPT_ALGORITHM_IDENTIFIER(); this.pvHashAuxInfo = IntPtr.Zero; this.cAuthAttr = 0U; this.rgAuthAttr = IntPtr.Zero; this.cUnauthAttr = 0U; this.rgUnauthAttr = IntPtr.Zero; this.SignerId = new CAPI.CERT_ID(); this.HashEncryptionAlgorithm = new CAPI.CRYPT_ALGORITHM_IDENTIFIER(); this.pvHashEncryptionAuxInfo = IntPtr.Zero; }