private byte[] GenerateCryptogram(CryptogramType cryptogramType)
        {
            var data = new List <byte>();

            switch (cryptogramType)
            {
            case CryptogramType.Card:
                data.AddRange(this.HostChallenge);
                data.AddRange(this.SequenceCounter);
                data.AddRange(this.CardChallenge);
                break;

            case CryptogramType.Host:
                data.AddRange(this.SequenceCounter);
                data.AddRange(this.CardChallenge);
                data.AddRange(this.HostChallenge);
                break;
            }

            data.Pad();

            byte[] cryptogram = MAC.Algorithm1(data.ToArray(), this.EncryptionKey);

            return(cryptogram);
        }