Ejemplo n.º 1
0
        private static CachedSigningLevelEaBufferV3 ReadCachedSigningLevelVersion3(BinaryReader reader)
        {
            int  version2            = reader.ReadByte();
            int  policy              = reader.ReadByte();
            long usn                 = reader.ReadInt64();
            long last_blacklist_time = reader.ReadInt64();
            int  flags               = reader.ReadInt32();
            int  extra_size          = reader.ReadUInt16();
            long end_size            = reader.BaseStream.Position + extra_size;
            List <CachedSigningLevelBlob> extra_data = new List <CachedSigningLevelBlob>();
            HashCachedSigningLevelBlob    thumbprint = null;

            while (reader.BaseStream.Position < end_size)
            {
                CachedSigningLevelBlob blob = CachedSigningLevelBlob.ReadBlob(reader);
                if (blob.BlobType == CachedSigningLevelBlobType.SignerHash)
                {
                    thumbprint = (HashCachedSigningLevelBlob)blob;
                }
                extra_data.Add(blob);
            }

            return(new CachedSigningLevelEaBufferV3(version2, flags, (SigningLevel)policy, usn,
                                                    last_blacklist_time, extra_data.AsReadOnly(), thumbprint));
        }
 internal CachedSigningLevelEaBufferV3(int version2, int flags, SigningLevel signing_level,
                                       long usn, long last_blacklist_time, IEnumerable <CachedSigningLevelBlob> extra_data,
                                       HashCachedSigningLevelBlob thumbprint)
     : base(flags, signing_level, thumbprint != null ? thumbprint.Hash : new byte[0],
            thumbprint != null ? thumbprint.Algorithm : 0)
 {
     Version           = 3;
     Version2          = version2;
     USNJournalId      = usn;
     LastBlackListTime = DateTime.FromFileTime(last_blacklist_time);
     ExtraData         = extra_data;
 }