add diffie-hellman algorythm with unit tests