internal unsafe X509ChainElementCollection (IntPtr pSimpleChain) {
     CAPI.CERT_SIMPLE_CHAIN simpleChain = new CAPI.CERT_SIMPLE_CHAIN(Marshal.SizeOf(typeof(CAPI.CERT_SIMPLE_CHAIN)));
     uint cbSize = (uint) Marshal.ReadInt32(pSimpleChain);
     if (cbSize > Marshal.SizeOf(simpleChain))
         cbSize = (uint) Marshal.SizeOf(simpleChain);
     X509Utils.memcpy(pSimpleChain, new IntPtr(&simpleChain), cbSize);
     m_elements = new X509ChainElement[simpleChain.cElement];
     for (int index = 0; index < m_elements.Length; index++) {
         m_elements[index] = new X509ChainElement(Marshal.ReadIntPtr(new IntPtr((long) simpleChain.rgpElement + index * Marshal.SizeOf(typeof(IntPtr)))));
     }
 }
예제 #2
0
        internal unsafe X509ChainElementCollection(IntPtr pSimpleChain)
        {
            CAPI.CERT_SIMPLE_CHAIN simpleChain = new CAPI.CERT_SIMPLE_CHAIN(Marshal.SizeOf(typeof(CAPI.CERT_SIMPLE_CHAIN)));
            uint cbSize = (uint)Marshal.ReadInt32(pSimpleChain);

            if (cbSize > Marshal.SizeOf(simpleChain))
            {
                cbSize = (uint)Marshal.SizeOf(simpleChain);
            }
            X509Utils.memcpy(pSimpleChain, new IntPtr(&simpleChain), cbSize);
            m_elements = new X509ChainElement[simpleChain.cElement];
            for (int index = 0; index < m_elements.Length; index++)
            {
                m_elements[index] = new X509ChainElement(Marshal.ReadIntPtr(new IntPtr((long)simpleChain.rgpElement + index * Marshal.SizeOf(typeof(IntPtr)))));
            }
        }