123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328 |
- #if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
- #pragma warning disable
- using System;
- using System.Collections;
- using BestHTTP.SecureProtocol.Org.BouncyCastle.Tls.Crypto;
- namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Tls
- {
- public sealed class SecurityParameters
- {
- internal int m_entity = -1;
- internal bool m_secureRenegotiation = false;
- internal int m_cipherSuite = Tls.CipherSuite.TLS_NULL_WITH_NULL_NULL;
- internal short m_maxFragmentLength = -1;
- internal int m_prfAlgorithm = -1;
- internal int m_prfCryptoHashAlgorithm = -1;
- internal int m_prfHashLength = -1;
- internal int m_verifyDataLength = -1;
- internal TlsSecret m_baseKeyClient = null;
- internal TlsSecret m_baseKeyServer = null;
- internal TlsSecret m_earlyExporterMasterSecret = null;
- internal TlsSecret m_earlySecret = null;
- internal TlsSecret m_exporterMasterSecret = null;
- internal TlsSecret m_handshakeSecret = null;
- internal TlsSecret m_masterSecret = null;
- internal TlsSecret m_trafficSecretClient = null;
- internal TlsSecret m_trafficSecretServer = null;
- internal byte[] m_clientRandom = null;
- internal byte[] m_serverRandom = null;
- internal byte[] m_sessionHash = null;
- internal byte[] m_sessionID = null;
- internal byte[] m_pskIdentity = null;
- internal byte[] m_srpIdentity = null;
- internal byte[] m_tlsServerEndPoint = null;
- internal byte[] m_tlsUnique = null;
- internal bool m_encryptThenMac = false;
- internal bool m_extendedMasterSecret = false;
- internal bool m_extendedPadding = false;
- internal bool m_truncatedHmac = false;
- internal ProtocolName m_applicationProtocol = null;
- internal bool m_applicationProtocolSet = false;
- internal short[] m_clientCertTypes = null;
- internal IList m_clientServerNames = null;
- internal IList m_clientSigAlgs = null;
- internal IList m_clientSigAlgsCert = null;
- internal int[] m_clientSupportedGroups = null;
- internal IList m_serverSigAlgs = null;
- internal IList m_serverSigAlgsCert = null;
- internal int[] m_serverSupportedGroups = null;
- internal int m_keyExchangeAlgorithm = -1;
- internal Certificate m_localCertificate = null;
- internal Certificate m_peerCertificate = null;
- internal ProtocolVersion m_negotiatedVersion = null;
- internal int m_statusRequestVersion = 0;
- // TODO[tls-ops] Investigate whether we can handle verify data using TlsSecret
- internal byte[] m_localVerifyData = null;
- internal byte[] m_peerVerifyData = null;
- internal void Clear()
- {
- this.m_sessionHash = null;
- this.m_sessionID = null;
- this.m_clientCertTypes = null;
- this.m_clientServerNames = null;
- this.m_clientSigAlgs = null;
- this.m_clientSigAlgsCert = null;
- this.m_clientSupportedGroups = null;
- this.m_serverSigAlgs = null;
- this.m_serverSigAlgsCert = null;
- this.m_serverSupportedGroups = null;
- this.m_statusRequestVersion = 0;
- this.m_baseKeyClient = ClearSecret(m_baseKeyClient);
- this.m_baseKeyServer = ClearSecret(m_baseKeyServer);
- this.m_earlyExporterMasterSecret = ClearSecret(m_earlyExporterMasterSecret);
- this.m_earlySecret = ClearSecret(m_earlySecret);
- this.m_exporterMasterSecret = ClearSecret(m_exporterMasterSecret);
- this.m_handshakeSecret = ClearSecret(m_handshakeSecret);
- this.m_masterSecret = ClearSecret(m_masterSecret);
- }
- public ProtocolName ApplicationProtocol
- {
- get { return m_applicationProtocol; }
- }
- public TlsSecret BaseKeyClient
- {
- get { return m_baseKeyClient; }
- }
- public TlsSecret BaseKeyServer
- {
- get { return m_baseKeyServer; }
- }
- public int CipherSuite
- {
- get { return m_cipherSuite; }
- }
- public short[] ClientCertTypes
- {
- get { return m_clientCertTypes; }
- }
- public byte[] ClientRandom
- {
- get { return m_clientRandom; }
- }
- public IList ClientServerNames
- {
- get { return m_clientServerNames; }
- }
- public IList ClientSigAlgs
- {
- get { return m_clientSigAlgs; }
- }
- public IList ClientSigAlgsCert
- {
- get { return m_clientSigAlgsCert; }
- }
- public int[] ClientSupportedGroups
- {
- get { return m_clientSupportedGroups; }
- }
- public TlsSecret EarlyExporterMasterSecret
- {
- get { return m_earlyExporterMasterSecret; }
- }
- public TlsSecret EarlySecret
- {
- get { return m_earlySecret; }
- }
- public TlsSecret ExporterMasterSecret
- {
- get { return m_exporterMasterSecret; }
- }
- public int Entity
- {
- get { return m_entity; }
- }
- public TlsSecret HandshakeSecret
- {
- get { return m_handshakeSecret; }
- }
- public bool IsApplicationProtocolSet
- {
- get { return m_applicationProtocolSet; }
- }
- public bool IsEncryptThenMac
- {
- get { return m_encryptThenMac; }
- }
- public bool IsExtendedMasterSecret
- {
- get { return m_extendedMasterSecret; }
- }
- public bool IsExtendedPadding
- {
- get { return m_extendedPadding; }
- }
- public bool IsSecureRenegotiation
- {
- get { return m_secureRenegotiation; }
- }
- public bool IsTruncatedHmac
- {
- get { return m_truncatedHmac; }
- }
- public int KeyExchangeAlgorithm
- {
- get { return m_keyExchangeAlgorithm; }
- }
- public Certificate LocalCertificate
- {
- get { return m_localCertificate; }
- }
- public byte[] LocalVerifyData
- {
- get { return m_localVerifyData; }
- }
- public TlsSecret MasterSecret
- {
- get { return m_masterSecret; }
- }
- public short MaxFragmentLength
- {
- get { return m_maxFragmentLength; }
- }
- public ProtocolVersion NegotiatedVersion
- {
- get { return m_negotiatedVersion; }
- }
- public Certificate PeerCertificate
- {
- get { return m_peerCertificate; }
- }
- public byte[] PeerVerifyData
- {
- get { return m_peerVerifyData; }
- }
- public int PrfAlgorithm
- {
- get { return m_prfAlgorithm; }
- }
- public int PrfCryptoHashAlgorithm
- {
- get { return m_prfCryptoHashAlgorithm; }
- }
- public int PrfHashLength
- {
- get { return m_prfHashLength; }
- }
- public byte[] PskIdentity
- {
- get { return m_pskIdentity; }
- }
- public byte[] ServerRandom
- {
- get { return m_serverRandom; }
- }
- public IList ServerSigAlgs
- {
- get { return m_serverSigAlgs; }
- }
- public IList ServerSigAlgsCert
- {
- get { return m_serverSigAlgsCert; }
- }
- public int[] ServerSupportedGroups
- {
- get { return m_serverSupportedGroups; }
- }
- public byte[] SessionHash
- {
- get { return m_sessionHash; }
- }
- public byte[] SessionID
- {
- get { return m_sessionID; }
- }
- public byte[] SrpIdentity
- {
- get { return m_srpIdentity; }
- }
- public int StatusRequestVersion
- {
- get { return m_statusRequestVersion; }
- }
- public byte[] TlsServerEndPoint
- {
- get { return m_tlsServerEndPoint; }
- }
- public byte[] TlsUnique
- {
- get { return m_tlsUnique; }
- }
- public TlsSecret TrafficSecretClient
- {
- get { return m_trafficSecretClient; }
- }
- public TlsSecret TrafficSecretServer
- {
- get { return m_trafficSecretServer; }
- }
- public int VerifyDataLength
- {
- get { return m_verifyDataLength; }
- }
- public bool IsRenegotiating { get; set; }
- public Certificate PreRenegotiatingServerCert { get; set; }
- private static TlsSecret ClearSecret(TlsSecret secret)
- {
- if (null != secret)
- {
- secret.Destroy();
- }
- return null;
- }
- }
- }
- #pragma warning restore
- #endif
|