using System; using Mono.Security.Cryptography; namespace Mono.Security.Protocol.Tls.Handshake.Server { // Token: 0x020000B3 RID: 179 internal class TlsClientCertificateVerify : HandshakeMessage { // Token: 0x0600069F RID: 1695 RVA: 0x00025288 File Offset: 0x00023488 public TlsClientCertificateVerify(Context context, byte[] buffer) : base(context, HandshakeType.CertificateVerify, buffer) { } // Token: 0x060006A0 RID: 1696 RVA: 0x00025294 File Offset: 0x00023494 protected override void ProcessAsSsl3() { ServerContext serverContext = (ServerContext)base.Context; int num = (int)base.ReadInt16(); byte[] array = base.ReadBytes(num); SslHandshakeHash sslHandshakeHash = new SslHandshakeHash(serverContext.MasterSecret); sslHandshakeHash.TransformFinalBlock(serverContext.HandshakeMessages.ToArray(), 0, (int)serverContext.HandshakeMessages.Length); if (!sslHandshakeHash.VerifySignature(serverContext.ClientSettings.CertificateRSA, array)) { throw new TlsException(AlertDescription.HandshakeFailiure, "Handshake Failure."); } } // Token: 0x060006A1 RID: 1697 RVA: 0x0002530C File Offset: 0x0002350C protected override void ProcessAsTls1() { ServerContext serverContext = (ServerContext)base.Context; int num = (int)base.ReadInt16(); byte[] array = base.ReadBytes(num); MD5SHA1 md5SHA = new MD5SHA1(); md5SHA.ComputeHash(serverContext.HandshakeMessages.ToArray(), 0, (int)serverContext.HandshakeMessages.Length); if (!md5SHA.VerifySignature(serverContext.ClientSettings.CertificateRSA, array)) { throw new TlsException(AlertDescription.HandshakeFailiure, "Handshake Failure."); } } } }