public KdfResult DeriveKey(BitString k, BitString h, BitString sessionId) { var iv1 = PseudoRandomFunction(k, h, 'A', sessionId, _ivLength); var iv2 = PseudoRandomFunction(k, h, 'B', sessionId, _ivLength); var key1 = PseudoRandomFunction(k, h, 'C', sessionId, _keyLength); var key2 = PseudoRandomFunction(k, h, 'D', sessionId, _keyLength); var iKey1 = PseudoRandomFunction(k, h, 'E', sessionId, _hash.HashFunction.OutputLen); var iKey2 = PseudoRandomFunction(k, h, 'F', sessionId, _hash.HashFunction.OutputLen); var clientToServer = new OneWayResult { InitialIv = iv1, EncryptionKey = key1, IntegrityKey = iKey1 }; var serverToClient = new OneWayResult { InitialIv = iv2, EncryptionKey = key2, IntegrityKey = iKey2 }; return(new KdfResult(serverToClient, clientToServer)); }
public KdfResult(OneWayResult serverToClient, OneWayResult clientToServer) { ServerToClient = serverToClient; ClientToServer = clientToServer; }