Otp.AbstractConnection.recvChallengeAck C# (CSharp) Method

recvChallengeAck() protected method

protected recvChallengeAck ( int our_challenge ) : void
our_challenge int
return void
        protected internal virtual void  recvChallengeAck(int our_challenge)
        {
            
            byte[] her_digest = new byte[16];
            try
            {
                byte[] buf = read2BytePackage();
                OtpInputStream ibuf = new OtpInputStream(buf);
                int tag = ibuf.read1();
                if (tag != ChallengeAck)
                {
                    throw new System.IO.IOException("Handshake protocol error");
                }
                ibuf.readN(her_digest);
                byte[] our_digest = genDigest(our_challenge, auth_cookie);
                if (!digests_equals(her_digest, our_digest))
                {
                    throw new OtpAuthException("Peer authentication error.");
                }
            }
            catch (Erlang.Exception)
            {
                throw new System.IO.IOException("Handshake failed - not enough data");
            }
            catch (System.Exception)
            {
                throw new OtpAuthException("Peer authentication error.");
            }
            
            if (traceLevel >= OtpTrace.Type.handshakeThreshold)
            {
                OtpTrace.TraceEvent("<- " + "HANDSHAKE recvChallengeAck" + " from=" + peer._node + " digest=" + hex(her_digest) + " local=" + self);
            }
        }