예제 #1
0
        /// <summary>Initializes a new instance of the <see cref="FileDescriptor" /> class.</summary>
        /// <param name="fileDescriptorByte">The file descriptor byte that shall be parsed.</param>
        public FileDescriptor(byte fileDescriptorByte)
        {
            _fileDescriptor = fileDescriptorByte;

            _type = SCardHelper.IsSet(_fileDescriptor, FILE_TYPE_MASK, FILE_TYPE_DF)
                ? FileType.Dedicated
                : FileType.Elementary;

            // ExtendedType
            if (SCardHelper.IsSet(_fileDescriptor, FILE_TYPE_MASK, FILE_TYPE_DF))
            {
                _extendedType = ExtendedFileType.Dedicated;
            }
            else if (SCardHelper.IsSet(_fileDescriptor, FILE_TYPE_MASK, FILE_TYPE_WORKING_EF))
            {
                _extendedType = ExtendedFileType.WorkingElementary;
            }
            else if (SCardHelper.IsSet(_fileDescriptor, FILE_TYPE_MASK, FILE_TYPE_INTERNAL_EF))
            {
                _extendedType = ExtendedFileType.InternalElementary;
            }
            else
            {
                _extendedType = ExtendedFileType.Proprietary;
            }

            _shareMode = SCardHelper.IsSet(_fileDescriptor, FILE_SHARE_MODE_MASK, FILE_SHARE_MODE_SHAREABLE)
                ? FileShareMode.Shareable
                : FileShareMode.NotShareable;

            _fileStructureInfoCache = null;
        }
예제 #2
0
        /// <summary>Initializes a new instance of the <see cref="RecordInfo" /> class.</summary>
        /// <param name="fileDescriptor">The file descriptor.</param>
        public RecordInfo(byte fileDescriptor)
        {
            FileDescriptor = fileDescriptor;

            IsCyclic    = false;
            IsLinear    = false;
            IsFixed     = false;
            IsVariable  = false;
            IsSimpleTlv = false;

            // IsCyclic
            if (SCardHelper.IsSet(fileDescriptor, FILE_STRUCTURING_MASK, FILE_STRUCTURE_IS_CYCLIC))
            {
                IsCyclic = true;

                // IsFixed
                IsFixed = true;
            }

            // IsLinear
            if (!IsCyclic)
            {
                IsLinear = true;

                // IsFixed
                if (SCardHelper.IsSet(fileDescriptor, FILE_STRUCTURING_MASK, FILE_STRUCTURE_IS_LINEAR_FIXED))
                {
                    IsFixed = true;
                }

                // IsVariable
                if (SCardHelper.IsSet(fileDescriptor, FILE_STRUCTURING_MASK, FILE_STRUCTURE_IS_LINEAR_VARIABLE))
                {
                    IsVariable = true;
                }
            }

            // IsSimpleTlv
            if (SCardHelper.IsSet(fileDescriptor, 1, 1))
            {
                IsSimpleTlv = true;
            }
        }
예제 #3
0
        protected void UpdateFileInfo()
        {
            // Type
            if (SCardHelper.IsSet(filedescriptor, FILE_TYPE_MASK, FILE_TYPE_DF))
            {
                _type = FileType.Dedicated;
            }
            else
            {
                _type = FileType.Elementary;
            }

            // ExtendedType
            if (SCardHelper.IsSet(filedescriptor, FILE_TYPE_MASK, FILE_TYPE_DF))
            {
                _extendedtype = ExtendedFileType.Dedicated;
            }
            else if (SCardHelper.IsSet(filedescriptor, FILE_TYPE_MASK, FILE_TYPE_WORKING_EF))
            {
                _extendedtype = ExtendedFileType.WorkingElementary;
            }
            else if (SCardHelper.IsSet(filedescriptor, FILE_TYPE_MASK, FILE_TYPE_INTERNAL_EF))
            {
                _extendedtype = ExtendedFileType.InternalElementary;
            }
            else
            {
                _extendedtype = ExtendedFileType.Proprietary;
            }

            // ShareMode
            if (SCardHelper.IsSet(filedescriptor, FILE_SHARE_MODE_MASK, FILE_SHARE_MODE_SHAREABLE))
            {
                _sharemode = FileShareMode.Shareable;
            }
            else
            {
                _sharemode = FileShareMode.NotShareable;
            }

            _filestructureinfo = null;
        }
예제 #4
0
        protected void UpdateFileInfo()
        {
            _iscyclic    = false;
            _islinear    = false;
            _isfixed     = false;
            _isvariable  = false;
            _issimpletlv = false;

            // IsCyclic
            if (SCardHelper.IsSet(filedescriptor, FILE_STRUCTURE_IS_MASK, FILE_STRUCTURE_IS_CYCLIC))
            {
                _iscyclic = true;

                // IsFixed
                _isfixed = true;
            }

            // IsLinear
            if (!_iscyclic)
            {
                _islinear = true;

                // IsFixed
                if (SCardHelper.IsSet(filedescriptor, FILE_STRUCTURE_IS_MASK, FILE_STRUCTURE_IS_LINEAR_FIXED))
                {
                    _isfixed = true;
                }

                // IsVariable
                if (SCardHelper.IsSet(filedescriptor, FILE_STRUCTURE_IS_MASK, FILE_STRUCTURE_IS_LINEAR_VARIABLE))
                {
                    _isvariable = true;
                }
            }

            // IsSimpleTlv
            if (SCardHelper.IsSet(filedescriptor, 1, 1))
            {
                _issimpletlv = true;
            }
        }
예제 #5
0
 /// <summary>Determines whether the specified bits are set.</summary>
 /// <param name="mask">The a bit mask.</param>
 /// <param name="bits">The bits to check for.</param>
 /// <returns>
 ///     <c>true</c> if the specified bits are set; otherwise, <c>false</c>.</returns>
 public bool IsSet(byte mask, byte bits)
 {
     return(SCardHelper.IsSet(_fileDescriptor, mask, bits));
 }