Esempio n. 1
0
        internal unsafe IntPtr ToPointer()
        {
            GitCertificateSshType sshCertType = 0;

            if (HasMD5)
            {
                sshCertType |= GitCertificateSshType.MD5;
            }
            if (HasSHA1)
            {
                sshCertType |= GitCertificateSshType.SHA1;
            }

            var gitCert = new git_certificate_ssh()
            {
                cert_type = GitCertificateType.Hostkey,
                type      = sshCertType,
            };

            fixed(byte *p = &HashMD5[0])
            {
                for (var i = 0; i < HashMD5.Length; i++)
                {
                    gitCert.HashMD5[i] = p[i];
                }
            }

            fixed(byte *p = &HashSHA1[0])
            {
                for (var i = 0; i < HashSHA1.Length; i++)
                {
                    gitCert.HashSHA1[i] = p[i];
                }
            }

            var ptr = Marshal.AllocHGlobal(Marshal.SizeOf(gitCert));

            Marshal.StructureToPtr(gitCert, ptr, false);

            return(ptr);
        }