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); }
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; }
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; }
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; }