Ejemplo n.º 1
0
        public static async Task EncryptClientMessage(IBulkCipherKeyProvider provider)
        {
            using (var cipher = SetIVAndKey(provider))
                using (var pool = new MemoryPool())
                {
                    var pipeFactory = new PipeOptions(pool);
                    var pipe        = new Pipe(pipeFactory);
                    var writer      = pipe.Writer.Alloc();
                    writer.Write(s_clientFinishedDecrypted);
                    await writer.FlushAsync();

                    var reader = await pipe.Reader.ReadAsync();

                    writer = pipe.Writer.Alloc();
                    var buffer = reader.Buffer;
                    cipher.Encrypt(ref writer, buffer, RecordType.Handshake, TlsVersion.Tls12);
                    pipe.Reader.Advance(buffer.End);
                    await writer.FlushAsync();

                    reader = await pipe.Reader.ReadAsync();

                    buffer = reader.Buffer;
                    Assert.Equal(s_clientFinishedEncrypted, buffer.ToArray());
                }
        }
Ejemplo n.º 2
0
        private static AeadBulkCipher SetIVAndKey(IBulkCipherKeyProvider provider)
        {
            var tempIv = new byte[12];

            s_iv.Slice(0).CopyTo(tempIv);
            var newArray = s_key.Concat(tempIv).ToArray();

            return(provider.GetCipher <AeadTls12BulkCipher>(BulkCipherType.AES_128_GCM, new OwnedArray <byte>(newArray)));
        }
Ejemplo n.º 3
0
 public OpenSslCryptoProvider()
 {
     _hashProvider        = new OpenSslHashProvider();
     _keyExchangeProvider = new OpenSslKeyExchangeProvider();
     _bulkCipherProvider  = new OpenSslBulkKeyProvider();
 }