org.bouncycastle.tls.PSKTlsServer Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of bctls-lts8on Show documentation
Show all versions of bctls-lts8on Show documentation
The Bouncy Castle Java APIs for the TLS, including a JSSE provider. The APIs are designed primarily to be used in conjunction with the BC LTS provider but may also be used with other providers providing cryptographic services.
package org.bouncycastle.tls;
import java.io.IOException;
import org.bouncycastle.tls.crypto.TlsCrypto;
public class PSKTlsServer
extends AbstractTlsServer
{
private static final int[] DEFAULT_CIPHER_SUITES = new int[]
{
CipherSuite.TLS_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256,
CipherSuite.TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384,
CipherSuite.TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256,
CipherSuite.TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA,
CipherSuite.TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA,
CipherSuite.TLS_DHE_PSK_WITH_CHACHA20_POLY1305_SHA256,
CipherSuite.TLS_DHE_PSK_WITH_AES_256_GCM_SHA384,
CipherSuite.TLS_DHE_PSK_WITH_AES_128_GCM_SHA256,
CipherSuite.TLS_DHE_PSK_WITH_AES_256_CBC_SHA384,
CipherSuite.TLS_DHE_PSK_WITH_AES_128_CBC_SHA256,
CipherSuite.TLS_DHE_PSK_WITH_AES_256_CBC_SHA,
CipherSuite.TLS_DHE_PSK_WITH_AES_128_CBC_SHA
};
protected TlsPSKIdentityManager pskIdentityManager;
public PSKTlsServer(TlsCrypto crypto, TlsPSKIdentityManager pskIdentityManager)
{
super(crypto);
this.pskIdentityManager = pskIdentityManager;
}
protected TlsCredentialedDecryptor getRSAEncryptionCredentials() throws IOException
{
throw new TlsFatalAlert(AlertDescription.internal_error);
}
protected ProtocolVersion[] getSupportedVersions()
{
return ProtocolVersion.TLSv12.only();
}
protected int[] getSupportedCipherSuites()
{
return TlsUtils.getSupportedCipherSuites(getCrypto(), DEFAULT_CIPHER_SUITES);
}
public TlsCredentials getCredentials() throws IOException
{
int keyExchangeAlgorithm = context.getSecurityParametersHandshake().getKeyExchangeAlgorithm();
switch (keyExchangeAlgorithm)
{
case KeyExchangeAlgorithm.DHE_PSK:
case KeyExchangeAlgorithm.ECDHE_PSK:
case KeyExchangeAlgorithm.PSK:
return null;
case KeyExchangeAlgorithm.RSA_PSK:
return getRSAEncryptionCredentials();
default:
/* Note: internal error here; selected a key exchange we don't implement! */
throw new TlsFatalAlert(AlertDescription.internal_error);
}
}
public TlsPSKIdentityManager getPSKIdentityManager()
{
return pskIdentityManager;
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy