Ejemplo n.º 1
0
 public IBinary Ka()
 {
     return(new AdjustedParity(
                _binary
                .Bytes()
                .Take(8)
                .ToArray()
                ));
 }
Ejemplo n.º 2
0
        public byte[] Bytes()
        {
            var firstByte      = _berTvlWithoutTag.Bytes().First();
            var valueByteCount = new Hex(ExtractLen(firstByte)).ToInt();

            return(_berTvlWithoutTag
                   .Bytes()
                   .Skip(1)
                   .Take(valueByteCount)
                   .ToArray());
        }
Ejemplo n.º 3
0
        public byte[] Bytes()
        {
            var firstByte = _berTvl.Bytes().FirstOrDefault();
            var restBytes = _berTvl.Bytes().Skip(1).ToArray();

            if (HasSubsequentBytes(firstByte))
            {
                return(restBytes
                       .TakeWhileWithIncludingLast(IsSubsequentByte)
                       .ToArray());
            }

            return(new byte[0]);
        }
Ejemplo n.º 4
0
 public IBinary By(int count)
 {
     // icnrement last 4 byte by 0x01
     return
         (new CombinedBinaries(
              new Binary(_ssc.Bytes().Take(4)),
              new BinaryNumber(
                  new Sum(
                      new IntHex(_ssc.Bytes().Skip(4)),
                      count
                      )
                  )
              ));
 }
Ejemplo n.º 5
0
        //public byte[] Bytes()
        //{
        //    MACTripleDES mac = new MACTripleDES();
        //    mac.Initialize();
        //    mac.Padding = PaddingMode.Zeros;
        //    mac.Key = _kMac.Bytes();

        //    var eIfd = _eIfd.Bytes();
        //    var mIfd = mac.TransformFinalBlock(eIfd, 0, eIfd.Length);
        //    return mIfd;
        //}

        /// <summary>
        /// C# Implementation of Retail MAC Calculation (ISOIEC 9797-1 MAC algorithm 3)
        /// http://stackoverflow.com/questions/20312646/c-sharp-implementation-of-retail-mac-calculation-isoiec-9797-1-mac-algorithm-3
        /// </summary>
        /// <returns></returns>
        //public byte[] Bytes()
        //{
        //    var kMAC = _kMac.Bytes();
        //    var eIfd = _eIfd.Bytes();

        //    // Split the 16 byte MAC key into two keys
        //    byte[] key1 = new byte[8];
        //    Array.Copy(kMAC, 0, key1, 0, 8);
        //    byte[] key2 = new byte[8];
        //    Array.Copy(kMAC, 8, key2, 0, 8);


        //    // Padd the data with Padding Method 2 (Bit Padding)
        //    System.IO.MemoryStream out_Renamed = new System.IO.MemoryStream();
        //    out_Renamed.Write(eIfd, 0, eIfd.Length);
        //    out_Renamed.WriteByte((byte)(0x80));
        //    while (out_Renamed.Length % 8 != 0)
        //    {
        //        out_Renamed.WriteByte((byte)0x00);
        //    }
        //    byte[] eIfd_padded = out_Renamed.ToArray();


        //    // Split the blocks
        //    byte[] d1 = new byte[8];
        //    byte[] d2 = new byte[8];
        //    byte[] d3 = new byte[8];
        //    byte[] d4 = new byte[8];
        //    byte[] d5 = new byte[8];
        //    Array.Copy(eIfd_padded, 0, d1, 0, 8);
        //    Array.Copy(eIfd_padded, 8, d2, 0, 8);
        //    Array.Copy(eIfd_padded, 16, d3, 0, 8);
        //    Array.Copy(eIfd_padded, 24, d4, 0, 8);
        //    Array.Copy(eIfd_padded, 32, d5, 0, 8);

        //    DES des1 = DES.Create();
        //    des1.BlockSize = 64;
        //    des1.Key = key1;
        //    des1.Mode = CipherMode.CBC;
        //    des1.Padding = PaddingMode.None;
        //    des1.IV = new byte[8];

        //    DES des2 = DES.Create();
        //    des2.BlockSize = 64;
        //    des2.Key = key2;
        //    des2.Mode = CipherMode.CBC;
        //    des2.Padding = PaddingMode.None;
        //    des2.IV = new byte[8];

        //    // MAC Algorithm 3
        //    // Initial Transformation 1
        //    byte[] h1 = des1.CreateEncryptor().TransformFinalBlock(d1, 0, 8);
        //    // Iteration on the rest of blocks
        //    // XOR
        //    byte[] int2 = new byte[8];
        //    for (int i = 0; i < 8; i++)
        //        int2[i] = (byte)(h1[i] ^ d2[i]);
        //    // Encrypt
        //    byte[] h2 = des1.CreateEncryptor().TransformFinalBlock(int2, 0, 8);
        //    // XOR
        //    byte[] int3 = new byte[8];
        //    for (int i = 0; i < 8; i++)
        //        int3[i] = (byte)(h2[i] ^ d3[i]);
        //    // Encrypt
        //    byte[] h3 = des1.CreateEncryptor().TransformFinalBlock(int3, 0, 8);
        //    // XOR
        //    byte[] int4 = new byte[8];
        //    for (int i = 0; i < 8; i++)
        //        int4[i] = (byte)(h3[i] ^ d4[i]);
        //    // Encrypt
        //    byte[] h4 = des1.CreateEncryptor().TransformFinalBlock(int4, 0, 8);
        //    // XOR
        //    byte[] int5 = new byte[8];
        //    for (int i = 0; i < 8; i++)
        //        int5[i] = (byte)(h4[i] ^ d5[i]);
        //    // Encrypt
        //    byte[] h5 = des1.CreateEncryptor().TransformFinalBlock(int5, 0, 8);

        //    // Output Transformation 3
        //    byte[] h5decrypt = des2.CreateDecryptor().TransformFinalBlock(h5, 0, 8);
        //    byte[] mIfd = des1.CreateEncryptor().TransformFinalBlock(h5decrypt, 0, 8);

        //    return mIfd;
        //}

        // http://www.programcreek.com/java-api-examples/index.php?api=org.spongycastle.crypto.macs.ISO9797Alg3Mac
        public byte[] Bytes()
        {
            var cipher = new DesEngine();

            var macSizeInBits = 64; // 8 in bytes

            var          mac  = new ISO9797Alg3Mac(cipher, 64, new ISO7816d4Padding());
            KeyParameter keyP = new KeyParameter(_key.Bytes());

            mac.Init(keyP);
            mac.BlockUpdate(_data.Bytes(), 0, _data.Bytes().Length);
            byte[] _out = new byte[8];
            mac.DoFinal(_out, 0);
            return(_out);
        }
Ejemplo n.º 6
0
 public byte[] Bytes()
 {
     return(_berTlvWithoutTag
            .Bytes()
            .Take(1)
            .ToArray());
 }
Ejemplo n.º 7
0
 public byte[] Bytes()
 {
     return(_commandApduHeader
            .Bytes()
            .Take(1)
            .ToArray());
 }
Ejemplo n.º 8
0
        public byte[] Bytes()
        {
            var textBytes = _text.Bytes();

            byte[] resultArray = _cTransform.TransformFinalBlock(textBytes, 0, textBytes.Length);
            return(resultArray);
        }
Ejemplo n.º 9
0
Archivo: Lc.cs Proyecto: tdav/MRTD.NET
        public byte[] Bytes()
        {
            var commandApduBodyBytes = _commandApduBody
                                       .Bytes();

            // Command Structure: [CLA][INS][P1][P2][Lc][Data][Le]
            // Command Header:    [CLA][INS][P1][P2]
            // Command Body:      [Lc][Data][Le]
            // Case2: [No command Data][Excepted Data]
            // [Le] - Expected Data Length
            // [Lc] - Command Data Length
            // ReadBinaryFormat: [CLA][INS][P1][P2][Le] - 00 84 00 00 08
            // SelectEFCom:      [CLA][INS][P1][P2][Lc][Command Data] - 00 A4 02 0C 02 011E

            // if CommandBody length grather then 1, we have Lc with Data, and maybe Le
            // if CommandBody length equal 1, then we don't Lc with Data, only Le
            if (commandApduBodyBytes.Count() > 1)
            {
                return(commandApduBodyBytes
                       .Take(1)
                       .ToArray());
            }
            else
            {
                return(new byte[0]);
            }
        }
Ejemplo n.º 10
0
Archivo: Len.cs Proyecto: tdav/MRTD.NET
        public byte[] Bytes()
        {
            var berTlvWithoutTag = _berTlv
                                   .Bytes()
                                   .Skip(
                new BytesCount(_cachedTag)
                .Value()
                );

            var firstByte = berTlvWithoutTag.First();

            if (IsLongFormOfLen(firstByte))
            {
                return(new CombinedBinaries(
                           new ShortLen(
                               new Binary(berTlvWithoutTag)
                               ),
                           new LongLen(
                               new Binary(berTlvWithoutTag)
                               )
                           ).Bytes());
            }
            else
            {
                return(new ShortLen(
                           new Binary(berTlvWithoutTag)
                           ).Bytes());
            }
        }
Ejemplo n.º 11
0
        public byte[] Bytes()
        {
            var extractedCC = new ExtractedCC(
                _incrementedSsc,
                _kSmac,
                _responseApdu
                ).Bytes();
            var encryptedDO8E = new ExtractedDO8E(_responseApdu)
                                .EncryptedData()
                                .Bytes();

            if (
                !extractedCC
                .SequenceEqual(encryptedDO8E)
                )
            {
                throw new Exception(
                          String.Format(
                              "CC not equal of DO‘8E’ of RAPDU\n{0} != {1}",
                              new Hex(new Binary(extractedCC)),
                              new Hex(new Binary(encryptedDO8E))
                              )
                          );
            }
            else
            {
                //Console.WriteLine(
                //        "CC equal of DO‘8E’ of RAPDU\n{0} == {1}",
                //        new Hex(new Binary(extractedCC)),
                //        new Hex(new Binary(encryptedDO8E))
                //    );
                return(_responseApdu.Bytes());
            }
        }
Ejemplo n.º 12
0
Archivo: Eic.cs Proyecto: tdav/MRTD.NET
 public byte[] Bytes()
 {
     return(_externalAuthenticateResponseData
            .Bytes()
            .Take(32)
            .ToArray());
 }
Ejemplo n.º 13
0
 public byte[] Bytes()
 {
     return _rawCommandApdu
         .Bytes()
         .Skip(4)
         .ToArray();
 }
Ejemplo n.º 14
0
Archivo: SW1.cs Proyecto: tdav/MRTD.NET
 public byte[] Bytes()
 {
     return(_responseApduTrailer
            .Bytes()
            .Take(1)
            .ToArray());
 }
Ejemplo n.º 15
0
Archivo: Kic.cs Proyecto: tdav/MRTD.NET
 public byte[] Bytes()
 {
     return(_r
            .Bytes()
            .Skip(16)
            .ToArray());
 }
Ejemplo n.º 16
0
 public byte[] Bytes()
 {
     return(_rawCommandApdu
            .Bytes()
            .Take(4)
            .ToArray());
 }
Ejemplo n.º 17
0
 public byte[] Bytes()
 {
     return(_hash
            .Bytes()
            .Take(16)
            .ToArray());
 }
Ejemplo n.º 18
0
 public byte[] Bytes()
 {
     if (_cachedBytes.Length == 0)
     {
         _cachedBytes = _src.Bytes();
     }
     return(_cachedBytes);
 }
Ejemplo n.º 19
0
 private IBinary Rest()
 {
     return(new Binary(
                _constructedTLV
                .Bytes()
                .Skip(_cachedFirstExistingTLV.Bytes().Length)
                ));
 }
Ejemplo n.º 20
0
 public byte[] Bytes()
 {
     return(_executedCommandApdu
            .Bytes()
            .Reverse()
            .Skip(_responseApduTrailerLength)
            .Reverse()
            .ToArray());
 }
Ejemplo n.º 21
0
 public byte[] Bytes()
 {
     return(_binary
            .Bytes()
            .Reverse()
            .Take(4)
            .Reverse()
            .ToArray());
 }
Ejemplo n.º 22
0
 public byte[] Bytes()
 {
     return(_kIfd
            .Bytes()
            .Zip(
                _kIc.Bytes(),
                (kIfdByte, kIcByte) => (byte)(kIfdByte ^ kIcByte)
                ).ToArray());
 }
Ejemplo n.º 23
0
Archivo: Hex.cs Proyecto: tdav/MRTD.NET
 public override string ToString()
 {
     return(_binary
            .Bytes()
            .ToList()
            .Aggregate(
                String.Empty,
                (prev, next) => prev + next.ToString("X2")
                ));
 }
Ejemplo n.º 24
0
Archivo: Kb.cs Proyecto: tdav/MRTD.NET
 public byte[] Bytes()
 {
     return(new AdjustedParity(
                _kKey
                .Bytes()
                .Skip(8)
                .Take(8)
                .ToArray()
                ).Bytes());
 }
Ejemplo n.º 25
0
 public byte[] Bytes()
 {
     return(_data
            .Bytes()
            .Reverse()
            .SkipWhile(b => b == 0x00)
            .Skip(1)
            .Reverse()
            .ToArray());
 }
Ejemplo n.º 26
0
 public TripleDES(IBinary key, IBinary textForEncrypt)
 {
     _text          = textForEncrypt;
     _cryptoService = new TripleDESCryptoServiceProvider()
     {
         Key     = key.Bytes(),
         Mode    = CipherMode.CBC,
         Padding = PaddingMode.None,
         IV      = new byte[] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
     };
 }
Ejemplo n.º 27
0
 public byte[] Bytes()
 {
     return(new CommandApdu(_isoCase, _activeProtocol)
     {
         CLA = 0x00,
         Instruction = InstructionCode.SelectFile,
         P1 = 0x02,
         P2 = 0x0C,
         Data = _fid.Bytes()
     }.ToArray());
 }
 public byte[] Bytes()
 {
     return(new CommandApdu(_isoCase, _activeProtocol)
     {
         CLA = 0x00,
         Instruction = InstructionCode.ExternalAuthenticate,
         P1 = 0x00,
         P2 = 0x00,
         Data = _commandData.Bytes(),
         Le = _exceptedDataLength,
     }.ToArray());
 }
Ejemplo n.º 29
0
        public byte[] Bytes()
        {
            var commandDataLength = new IntHex(
                new Lc(_commandApduBody)
                ).Value();

            return(_commandApduBody
                   .Bytes()
                   .Skip(1)
                   .Take(commandDataLength)
                   .ToArray());
        }
Ejemplo n.º 30
0
 public byte[] Bytes()
 {
     return(new CombinedBinaries(
                new MaskedCLA(
                    new CLA(_commandApduHeader)
                    ),
                new Binary(
                    _commandApduHeader
                    .Bytes()
                    .Skip(1)
                    )
                ).Bytes());
 }