示例#1
0
        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));
        }
示例#2
0
 public KdfResult(OneWayResult serverToClient, OneWayResult clientToServer)
 {
     ServerToClient = serverToClient;
     ClientToServer = clientToServer;
 }