package Ġcom . ion spin . kotlin . crypto . key exchange Ċ Ċ import Ġcom . ion spin . kotlin . crypto . Lib s odium Initializer Ċ import Ġcom . ion spin . kotlin . crypto . util . to HexString Ċ import Ġcom . ion spin . kotlin . crypto . util . run Test Ċ import Ġkotlin . test . Test Ċ import Ġkotlin . test . assertTrue Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠU gl jes a ĠJ ovan ov ic Ċ Ġ* Ġug lj es a . j ovan ov ic @ ion spin . com Ċ Ġ* Ġon Ġ 0 9 - Oct - 2 0 2 0 Ċ Ġ*/ Ċ class ĠKey Exchange Test Ġ{ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Key Exchange () Ġ= Ġrun Test Ġ{ ĊĠĠĠĠĠĠĠ ĠLib s odium Initializer . initialize With Callback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkey pair Client Ġ= ĠKey Exchange . key pair () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkey pair Server Ġ= ĠKey Exchange . key pair () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġclient Session KeyPair Ġ= ĠKey Exchange . client Session Keys ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey pair Client . publicKey , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey pair Client . secret Key , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey pair Server . publicKey ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġserver Session KeyPair Ġ= ĠKey Exchange . server Session Keys ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey pair Server . publicKey , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey pair Server . secret Key , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey pair Client . publicKey ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( client Session KeyPair . receive Key . to HexString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( client Session KeyPair . send Key . to HexString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( server Session KeyPair . receive Key . to HexString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( server Session KeyPair . send Key . to HexString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclient Session KeyPair . send Key . content Equals ( server Session KeyPair . receive Key ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclient Session KeyPair . receive Key . content Equals ( server Session KeyPair . send Key ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Key Exchange Se eded () Ġ= Ġrun Test Ġ{ ĊĠĠĠĠĠĠĠ ĠLib s odium Initializer . initialize With Callback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġseed Ġ= ĠU ByteArray ( crypto _ kx _ SEED BYTES ) Ġ{ Ġ 7 U Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkey pair Client Ġ= ĠKey Exchange . seed Key pair ( seed ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkey pair Server Ġ= ĠKey Exchange . seed Key pair ( seed ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( key pair Client . publicKey . to HexString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( key pair Client . secret Key . to HexString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( key pair Server . publicKey . to HexString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( key pair Server . secret Key . to HexString ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue Ġ{ Ġkey pair Client . secret Key . content Equals ( key pair Server . secret Key ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue Ġ{ Ġkey pair Client . secret Key . content Equals ( key pair Server . secret Key ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġclient Session KeyPair Ġ= ĠKey Exchange . client Session Keys ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey pair Client . publicKey , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey pair Client . secret Key , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey pair Server . publicKey ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġserver Session KeyPair Ġ= ĠKey Exchange . server Session Keys ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey pair Server . publicKey , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey pair Server . secret Key , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey pair Client . publicKey ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( client Session KeyPair . receive Key . to HexString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( client Session KeyPair . send Key . to HexString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( server Session KeyPair . receive Key . to HexString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( server Session KeyPair . send Key . to HexString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclient Session KeyPair . send Key . content Equals ( server Session KeyPair . receive Key ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclient Session KeyPair . receive Key . content Equals ( server Session KeyPair . send Key ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ