kopia lustrzana https://github.com/dl2alf/AirScout
111 wiersze
3.7 KiB
C#
111 wiersze
3.7 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.IO;
|
|
|
|
using Org.BouncyCastle.Tls.Crypto;
|
|
using Org.BouncyCastle.Tls.Crypto.Impl.BC;
|
|
using Org.BouncyCastle.Security;
|
|
using Org.BouncyCastle.Utilities;
|
|
|
|
namespace Org.BouncyCastle.Tls.Tests
|
|
{
|
|
internal class MockPskTls13Client
|
|
: AbstractTlsClient
|
|
{
|
|
internal MockPskTls13Client()
|
|
: base(new BcTlsCrypto(new SecureRandom()))
|
|
{
|
|
}
|
|
|
|
//public override IList GetEarlyKeyShareGroups()
|
|
//{
|
|
// return TlsUtilities.VectorOfOne(NamedGroup.secp256r1);
|
|
// //return null;
|
|
//}
|
|
|
|
//public override short[] GetPskKeyExchangeModes()
|
|
//{
|
|
// return new short[] { PskKeyExchangeMode.psk_dhe_ke, PskKeyExchangeMode.psk_ke };
|
|
//}
|
|
|
|
protected override IList GetProtocolNames()
|
|
{
|
|
IList protocolNames = new ArrayList();
|
|
protocolNames.Add(ProtocolName.Http_1_1);
|
|
protocolNames.Add(ProtocolName.Http_2_Tls);
|
|
return protocolNames;
|
|
}
|
|
|
|
protected override int[] GetSupportedCipherSuites()
|
|
{
|
|
return TlsUtilities.GetSupportedCipherSuites(Crypto, new int[] { CipherSuite.TLS_AES_128_GCM_SHA256 });
|
|
}
|
|
|
|
protected override ProtocolVersion[] GetSupportedVersions()
|
|
{
|
|
return ProtocolVersion.TLSv13.Only();
|
|
}
|
|
|
|
public override IList GetExternalPsks()
|
|
{
|
|
byte[] identity = Strings.ToUtf8ByteArray("client");
|
|
TlsSecret key = Crypto.CreateSecret(Strings.ToUtf8ByteArray("TLS_TEST_PSK"));
|
|
int prfAlgorithm = PrfAlgorithm.tls13_hkdf_sha256;
|
|
|
|
return TlsUtilities.VectorOfOne(new BasicTlsPskExternal(identity, key, prfAlgorithm));
|
|
}
|
|
|
|
public override void NotifyAlertRaised(short alertLevel, short alertDescription, string message,
|
|
Exception cause)
|
|
{
|
|
TextWriter output = (alertLevel == AlertLevel.fatal) ? Console.Error : Console.Out;
|
|
output.WriteLine("TLS 1.3 PSK client raised alert: " + AlertLevel.GetText(alertLevel)
|
|
+ ", " + AlertDescription.GetText(alertDescription));
|
|
if (message != null)
|
|
{
|
|
output.WriteLine("> " + message);
|
|
}
|
|
if (cause != null)
|
|
{
|
|
output.WriteLine(cause);
|
|
}
|
|
}
|
|
|
|
public override void NotifyAlertReceived(short alertLevel, short alertDescription)
|
|
{
|
|
TextWriter output = (alertLevel == AlertLevel.fatal) ? Console.Error : Console.Out;
|
|
output.WriteLine("TLS 1.3 PSK client received alert: " + AlertLevel.GetText(alertLevel)
|
|
+ ", " + AlertDescription.GetText(alertDescription));
|
|
}
|
|
|
|
public override void NotifySelectedPsk(TlsPsk selectedPsk)
|
|
{
|
|
if (null == selectedPsk)
|
|
throw new TlsFatalAlert(AlertDescription.handshake_failure);
|
|
}
|
|
|
|
public override void NotifyServerVersion(ProtocolVersion serverVersion)
|
|
{
|
|
base.NotifyServerVersion(serverVersion);
|
|
|
|
Console.WriteLine("TLS 1.3 PSK client negotiated " + serverVersion);
|
|
}
|
|
|
|
public override TlsAuthentication GetAuthentication()
|
|
{
|
|
throw new TlsFatalAlert(AlertDescription.internal_error);
|
|
}
|
|
|
|
public override void NotifyHandshakeComplete()
|
|
{
|
|
base.NotifyHandshakeComplete();
|
|
|
|
ProtocolName protocolName = m_context.SecurityParameters.ApplicationProtocol;
|
|
if (protocolName != null)
|
|
{
|
|
Console.WriteLine("Client ALPN: " + protocolName.GetUtf8Decoding());
|
|
}
|
|
}
|
|
}
|
|
}
|