Пример #1
0
        public void Generate_protected_APDU2()
        {
            var kIfd    = new BinaryHex("0B795240CB7049B01C19B33E32804F0B"); //new CachedBinary(new Kifd()));
            var rndIc   = new FkRNDic();                                     //new CachedBinary(new RNDic(_reader));
            var rndIfd  = new FkRNDifd();                                    //new CachedBinary(new RNDifd());
            var kSeedIc = new KseedIc(
                kIfd,
                new Kic(
                    new R(
                        new BinaryHex("46B9342A41396CD7386BF5803104D7CEDC122B9132139BAF2EEDC94EE178534F2F2D235D074D7449"),                 //exterbalAuthData
                        new Symbols("L898902C<369080619406236")
                        )
                    )
                );

            Assert.AreEqual(
                "0CA4020C158709016375432908C044F68E08BF8B92D635FF24F800",
                new Hex(
                    new ProtectedCommandApdu(
                        new SelectEFCOMApplicationCommandApdu(),
                        new FkKSenc(),
                        new KSmac(kSeedIc),
                        new IncrementedSSC(new SSC(
                                               rndIc,
                                               rndIfd
                                               )).By(1)
                        )
                    ).ToString()
                );
        }
Пример #2
0
        public byte[] Bytes()
        {
            var berTlvBytesCount = new BytesCount(_berTlv).Value();
            var berLenFormat     = String.Empty;

            if (berTlvBytesCount < 128)
            {
                berLenFormat = String.Format("{0}", new Hex(new HexInt(berTlvBytesCount)));
            }
            else if (berTlvBytesCount > 127 && berTlvBytesCount < 256)
            {
                var bh = new BinaryHex(new BytesCount(_berTlv)
                                       .Value()
                                       .ToString("X2"));
                berLenFormat = String.Format("81{0}", new Hex(bh));
            }
            else if ((berTlvBytesCount > 255 && berTlvBytesCount < 65536))
            {
                var bh = new BinaryHex(new BytesCount(_berTlv)
                                       .Value()
                                       .ToString("X4"));
                berLenFormat = String.Format("82{0}", new Hex(bh));
            }
            return(new CombinedBinaries(
                       new Binary(new byte[] { 0x20 }),
                       new BinaryHex(berLenFormat),
                       _berTlv
                       ).Bytes());
        }
Пример #3
0
        public byte[] Bytes()
        {
            var hexLen = new BinaryHex(
                _offsetLength
                .Value()
                .ToString("X4")
                ).Bytes();

            var offsetMSB = hexLen.Skip(0).Take(1).First(); // new HexInt(_offsetLength).Bytes().First();
            var offsetLSB = hexLen.Skip(1).Take(1).First(); //new HexInt(_offsetLength + _expectedDataLength).Bytes().First();

            var comm = new CommandApdu(_isoCase, _activeProtocol)
            {
                CLA         = 0x00,
                Instruction = InstructionCode.ReadBinary,
                P1          = offsetMSB,
                P2          = offsetLSB, //new BinaryHex(_offsetLength.ToString("X2")).Bytes().First(),
                Le          = _expectedDataLength.Value()
            }.ToArray();

            return(comm);
        }