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() ); }
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()); }
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); }