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));
            }
        }
示例#2
0
文件: CAPI.cs 项目: scholtz/FastZep
 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;
 }