예제 #1
0
        public void Write(Memory <byte> buffer)
        {
            Span <byte> hash = stackalloc byte[PgMD5Helper.PasswordHashLength];

            PgMD5Helper.ComputePassword(m_user, m_password, m_salt.Span, hash);

            var binaryWriter = new BinarySpanWriter(buffer.Span);

            binaryWriter.WriteByte(FrontendMessageCode.Password);
            binaryWriter.WriteInt32(sizeof(int) + PgMD5Helper.PasswordHashLength + 1);
            hash.CopyTo(binaryWriter.Span);
            binaryWriter.Advance(PgMD5Helper.PasswordHashLength);
            binaryWriter.WriteByte(0);
        }
예제 #2
0
        public void Test1()
        {
            Span <byte> h    = stackalloc byte[PgMD5Helper.PasswordHashLength];
            var         salt = new byte[] { 1, 2, 3, 4 };

            PgMD5Helper.ComputePassword("postgres", "admin", salt, h);
            var h2 = CalcHash("postgres", "admin", salt);

            for (var i = 0; i < h.Length; i++)
            {
                if (h[i] != h2[i])
                {
                    throw new Exception();
                }
            }
        }