示例#1
0
 internal unsafe CertificateX509(git_certificate_x509* cert)
 {
     int len = checked((int) cert->len.ToUInt32());
     byte[] data = new byte[len];
     Marshal.Copy(new IntPtr(cert->data), data, 0, len);
     Certificate = new X509Certificate(data);
 }
示例#2
0
        internal unsafe IntPtr ToPointers(out IntPtr dataPtr)
        {
            var certData = Certificate.Export(X509ContentType.Cert);
            dataPtr = Marshal.AllocHGlobal(certData.Length);
            Marshal.Copy(certData, 0, dataPtr, certData.Length);
            var gitCert = new git_certificate_x509()
            {
                cert_type = GitCertificateType.X509,
                data = (byte*) dataPtr.ToPointer(),
                len = (UIntPtr)certData.LongLength,
            };

            var ptr = Marshal.AllocHGlobal(Marshal.SizeOf(gitCert));
            Marshal.StructureToPtr(gitCert, ptr, false);

            return ptr;
        }