public static IntPtr BIO_get_md(IntPtr bp) { IntPtr ptr = Marshal.AllocHGlobal(4); try { ExpectSuccess(BIO_ctrl(bp, BIO_C_GET_MD, 0, ptr)); return Marshal.ReadIntPtr(ptr); } finally { Marshal.FreeHGlobal(ptr); } }