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