Files
Dec2017-Script-Dump/Mono.Security/Security/Protocol/Tls/ClientSessionInfo.cs
T
2026-06-04 11:42:34 +02:00

156 lines
3.5 KiB
C#

using System;
namespace Mono.Security.Protocol.Tls
{
// Token: 0x02000085 RID: 133
internal class ClientSessionInfo : IDisposable
{
// Token: 0x060004C7 RID: 1223 RVA: 0x0001D638 File Offset: 0x0001B838
public ClientSessionInfo(string hostname, byte[] id)
{
this.host = hostname;
this.sid = id;
this.KeepAlive();
}
// Token: 0x060004C8 RID: 1224 RVA: 0x0001D654 File Offset: 0x0001B854
static ClientSessionInfo()
{
string environmentVariable = Environment.GetEnvironmentVariable("MONO_TLS_SESSION_CACHE_TIMEOUT");
if (environmentVariable == null)
{
ClientSessionInfo.ValidityInterval = 180;
}
else
{
try
{
ClientSessionInfo.ValidityInterval = int.Parse(environmentVariable);
}
catch
{
ClientSessionInfo.ValidityInterval = 180;
}
}
}
// Token: 0x060004C9 RID: 1225 RVA: 0x0001D6C0 File Offset: 0x0001B8C0
~ClientSessionInfo()
{
this.Dispose(false);
}
// Token: 0x17000128 RID: 296
// (get) Token: 0x060004CA RID: 1226 RVA: 0x0001D6FC File Offset: 0x0001B8FC
public string HostName
{
get
{
return this.host;
}
}
// Token: 0x17000129 RID: 297
// (get) Token: 0x060004CB RID: 1227 RVA: 0x0001D704 File Offset: 0x0001B904
public byte[] Id
{
get
{
return this.sid;
}
}
// Token: 0x1700012A RID: 298
// (get) Token: 0x060004CC RID: 1228 RVA: 0x0001D70C File Offset: 0x0001B90C
public bool Valid
{
get
{
return this.masterSecret != null && this.validuntil > DateTime.UtcNow;
}
}
// Token: 0x060004CD RID: 1229 RVA: 0x0001D72C File Offset: 0x0001B92C
public void GetContext(Context context)
{
this.CheckDisposed();
if (context.MasterSecret != null)
{
this.masterSecret = (byte[])context.MasterSecret.Clone();
}
}
// Token: 0x060004CE RID: 1230 RVA: 0x0001D760 File Offset: 0x0001B960
public void SetContext(Context context)
{
this.CheckDisposed();
if (this.masterSecret != null)
{
context.MasterSecret = (byte[])this.masterSecret.Clone();
}
}
// Token: 0x060004CF RID: 1231 RVA: 0x0001D78C File Offset: 0x0001B98C
public void KeepAlive()
{
this.CheckDisposed();
this.validuntil = DateTime.UtcNow.AddSeconds((double)ClientSessionInfo.ValidityInterval);
}
// Token: 0x060004D0 RID: 1232 RVA: 0x0001D7B8 File Offset: 0x0001B9B8
public void Dispose()
{
this.Dispose(true);
GC.SuppressFinalize(this);
}
// Token: 0x060004D1 RID: 1233 RVA: 0x0001D7C8 File Offset: 0x0001B9C8
private void Dispose(bool disposing)
{
if (!this.disposed)
{
this.validuntil = DateTime.MinValue;
this.host = null;
this.sid = null;
if (this.masterSecret != null)
{
Array.Clear(this.masterSecret, 0, this.masterSecret.Length);
this.masterSecret = null;
}
}
this.disposed = true;
}
// Token: 0x060004D2 RID: 1234 RVA: 0x0001D828 File Offset: 0x0001BA28
private void CheckDisposed()
{
if (this.disposed)
{
string text = Locale.GetText("Cache session information were disposed.");
throw new ObjectDisposedException(text);
}
}
// Token: 0x04000255 RID: 597
private const int DefaultValidityInterval = 180;
// Token: 0x04000256 RID: 598
private static readonly int ValidityInterval;
// Token: 0x04000257 RID: 599
private bool disposed;
// Token: 0x04000258 RID: 600
private DateTime validuntil;
// Token: 0x04000259 RID: 601
private string host;
// Token: 0x0400025A RID: 602
private byte[] sid;
// Token: 0x0400025B RID: 603
private byte[] masterSecret;
}
}