示例#1
0
        public void Load(PeReader rdr, uint adr)
        {
            rdr.SetPosition(adr);
            uint s = Location.Size;

            while (rdr.BaseStream.Position - adr < s)
            {
                CertificateEntry e   = new CertificateEntry();
                uint             len = rdr.ReadUInt32();
                e.Revision        = (CertificateRevision)rdr.ReadUInt16();
                e.CertificateType = (CertificateType)rdr.ReadUInt16();
                e.CertificateData = rdr.ReadBytes((int)len - 8);
                items.Add(e);
            }
        }
        public void WriteEncryptedApplicationData_TLS_AES_128_GCM_SHA256_ResultIsExpected()
        {
            //Arrange
            var expectedData   = GetEncryptedApplicationData();
            var cerificateData = GetCertificateData();
            var signatureData  = GetSignatureData();
            var verifyData     = GetVerifyData();
            var encryptionData = GetEncryptionData();
            var buffer         = new byte[TlsBuffer.MaxRecordSize];

            using var aead = Cipher.TLS_AES_128_GCM_SHA256.CreateAead(Utils.ParseHexString(encryptionData.Iv), Utils.ParseHexString(encryptionData.Key));

            //Act
            var cursor = new MemoryCursor(buffer);

            using (TlsRecord.StartEncryptedWriting(cursor, RecordType.Handshake, aead, encryptionData.SeqNum))
            {
                EncryptedExtensions.WriteEmpty(cursor);

                using (Certificate.StartWriting(cursor))
                {
                    CertificateEntry.Write(Utils.ParseHexString(cerificateData), cursor);
                }

                using (CertificateVerify.StartWriting(cursor, SignatureScheme.RSA_PSS_RSAE_SHA256))
                {
                    Utils.ParseHexString(signatureData).CopyTo(cursor);
                }

                using (Finished.StartWriting(cursor))
                {
                    Utils.ParseHexString(verifyData).CopyTo(cursor);
                }
            }

            //Assert
            Assert.Equal(expectedData, Utils.ToHexString(cursor.PeekStart().ToArray()), true);
        }
示例#3
0
 public DefaultCertificate(CertificateEntry entry) : base(entry)
 {
 }
示例#4
0
 public void Insert(int index, CertificateEntry item)
 {
     items.Insert(index, item);
 }
示例#5
0
 public int IndexOf(CertificateEntry item)
 {
     return(items.IndexOf(item));
 }
示例#6
0
 public bool Remove(CertificateEntry item)
 {
     return(items.Remove(item));
 }
示例#7
0
 public bool Contains(CertificateEntry item)
 {
     return(items.Contains(item));
 }
示例#8
0
 public Certificate(CertificateEntry entry)
 {
     this.entry = entry;
 }
示例#9
0
 public void Add(CertificateEntry item)
 {
     items.Add(item);
 }