public static DesfireFileSettings Parse(byte[] buffer)
        {
            System.IO.BinaryReader reader = new System.IO.BinaryReader(new System.IO.MemoryStream(buffer));


            DesfireFileType ft = (DesfireFileType)(buffer[0]);

            switch (ft)
            {
            case DesfireFileType.StandardData:
            case DesfireFileType.Backup:
                // It's a standard file...
                return(new StandardSettings(reader));

            case DesfireFileType.LinearRecord:
            case DesfireFileType.CyclicRecord:
                return(new RecordSettings(reader));

            case DesfireFileType.Value:
                return(new ValueSettings(reader));

            default:
                throw new ArgumentException("Unkonwn type of record.");
            }
        }
 protected DesfireFileSettings(System.IO.BinaryReader reader)
 {
     this.FileType     = (DesfireFileType)reader.ReadByte();
     this.CommSetting  = reader.ReadByte();
     this.AccessRights = reader.ReadBytes(2);
 }