Exemple #1
0
        public AccessConditions()
        {
            DataAreas    = new DataAreaAccessCondition[3];
            DataAreas[0] = new DataAreaAccessCondition();
            DataAreas[1] = new DataAreaAccessCondition();
            DataAreas[2] = new DataAreaAccessCondition();

            Trailer = new TrailerAccessCondition();

            MADVersion           = MADVersionEnum.NoMAD;
            MultiApplicationCard = false;
        }
Exemple #2
0
        private InternalKeyType GetDatablockWriteKey(int datablock)
        {
            //Gets the access conditions of the datablock
            DataAreaAccessCondition condition = originalAccessConditions.DataAreas[Math.Min(datablock, Access.DataAreas.Length - 1)];
            //gets the original access bits to check if the card is in "transport configuration"
            BitArray conditionBits          = condition.GetBits();
            bool     cardIsInTransportState = isInTransportState(conditionBits);

            if (cardIsInTransportState)
            {
                return(InternalKeyType.KeyA);
            }
            else
            {
                return((condition.Write == DataAreaAccessCondition.ConditionEnum.KeyA) ? InternalKeyType.KeyA : InternalKeyType.KeyB);
            }
        }