Пример #1
0
        public DataExchangeKeys ComputeKeys(DHKeyPair my_key_pair, BigInteger buddy_public_key)
        {
            if (Utility.IsValidPublicKey(buddy_public_key) == false)
            {
                throw new ArgumentException("DataExchangeKeysManager:Buddy public key is invalid");
            }


            if (my_key_pair == null)
            {
                throw new ArgumentException("DataExchangeKeysManager:  My Key Pair cannot be null");
            }

            if (my_key_pair.GetPrivateKey() < 1)
            {
                throw new ArgumentException("DataExchangeKeysManager: Private key in my_key_pair value cannot be less than 0");
            }

            if (buddy_public_key < 1)
            {
                throw new ArgumentException("DataExchangeKeysManager: Buddy public key value cannot be less than 0");
            }



            if (my_key_pair.GetPublicKey() > buddy_public_key)
            {
                _end_type  = OTR_END_TYPE.HIGH_END;
                _send_byte = OTRConstants.HIGH_END_SEND_BYTE_VALUE;
                _recv_byte = OTRConstants.HIGH_END_RECV_BYTE_VALUE;
            }
            else
            {
                _end_type  = OTR_END_TYPE.LOW_END;
                _send_byte = OTRConstants.LOW_END_SEND_BYTE_VALUE;
                _recv_byte = OTRConstants.LOW_END_RECV_BYTE_VALUE;
            }



            _data_exchange_keys = new DataExchangeKeys();
            _data_exchange_keys.SetEndType(_end_type);


            _secret = Utility.ComputeSecret(my_key_pair, buddy_public_key, OTRConstants.RFC_3526_GENERATOR, OTRConstants.RFC_3526_PRIME_MODULO());

            Utility.SetSecByteMpi(_secret, ref _sec_data_byte_array_mpi);


            _data_exchange_keys.SetSecData(_sec_data_byte_array_mpi);


            ComputeSendKeys();
            ComputeRecvKeys();
            ComputeAesExtraKey();

            return(_data_exchange_keys);
        }
Пример #2
0
        public void SetEndType(OTR_END_TYPE end_type)
        {
            if (end_type == OTR_END_TYPE.INVALID)
            {
                throw new ArgumentException("DataExchangeKeys: The End type value is invalid");
            }

            _end_type = end_type;
        }
Пример #3
0
        public DataExchangeKeys ComputeKeys(DHKeyPair my_key_pair, BigInteger buddy_public_key)
        {
            if (Utility.IsValidPublicKey(buddy_public_key) == false)
                throw new ArgumentException("DataExchangeKeysManager:Buddy public key is invalid");

            if (my_key_pair == null)
                throw new ArgumentException("DataExchangeKeysManager:  My Key Pair cannot be null");

            if (my_key_pair.GetPrivateKey() < 1)
                throw new ArgumentException("DataExchangeKeysManager: Private key in my_key_pair value cannot be less than 0");

            if (buddy_public_key < 1)
            throw new ArgumentException("DataExchangeKeysManager: Buddy public key value cannot be less than 0");

            if (my_key_pair.GetPublicKey() > buddy_public_key)
            {
                _end_type =  OTR_END_TYPE.HIGH_END;
                _send_byte = OTRConstants.HIGH_END_SEND_BYTE_VALUE;
                _recv_byte = OTRConstants.HIGH_END_RECV_BYTE_VALUE;
            }
            else
            {
                _end_type =   OTR_END_TYPE.LOW_END;
                _send_byte = OTRConstants.LOW_END_SEND_BYTE_VALUE;
                _recv_byte = OTRConstants.LOW_END_RECV_BYTE_VALUE;
            }

            _data_exchange_keys = new DataExchangeKeys();
            _data_exchange_keys.SetEndType(_end_type);

            _secret = Utility.ComputeSecret(my_key_pair, buddy_public_key, OTRConstants.RFC_3526_GENERATOR, OTRConstants.RFC_3526_PRIME_MODULO());

            Utility.SetSecByteMpi(_secret, ref  _sec_data_byte_array_mpi);

            _data_exchange_keys.SetSecData(_sec_data_byte_array_mpi);

            ComputeSendKeys();
            ComputeRecvKeys();
            ComputeAesExtraKey();

            return _data_exchange_keys;
        }
Пример #4
0
        public void SetEndType(OTR_END_TYPE end_type)
        {
            if (end_type == OTR_END_TYPE.INVALID)
                throw new ArgumentException("DataExchangeKeys: The End type value is invalid");

            _end_type = end_type;
        }