Bouncy Castle是否真的为org.bouncycastle.crypto.tls.CipherSuite中的密



我正在尝试使用Bouncy Castle的DefaultTlsClient与只使用密码套件TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8的服务器进行交互。在搜索Bouncy Castle源代码时,我发现了抽象的DefaultTlsClient,并认为我可能可以使用它来覆盖GetCipherSuites方法,比如:

public override int[] GetCipherSuites()
{
return new int[]
{
CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8
};
}

然而,我不确定Bouncy Castle是否真的实现了该套件,因为在服务器完成问候后,客户端发出的握手失败(40(导致程序崩溃——我认为这40应该是一个失败的密码套件协商错误。因此TLS消息的顺序是:客户端与CCM_8密码套件打招呼提供->服务器与CCM_ 8密码套件打招呼提供从客户端到服务器的->警报握手失败(40(。

如果我在重写GetCipherSuites()时使用更常见的密码,我的实现可以与其他TLS服务器(如Google(进行通信,但我需要与之通信的服务器只使用CCM_8。

Bouncy Castle TLSClient是否真的可以与常量类CipherSuite中的所有套件一起工作:http://docs.glngn.com/latest/api/org.bouncycastle.bcprov-jdk15on/org/bouncycastle/crypto/tls/CipherSuite.html?还是依赖操作系统来提供?

此外,只是试图找到一种方法来使用TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8和x509证书在dotnet中实现TLS。我发现的库只使用预共享密钥。

Yes Bouncy Castle TLSClient可以使用不常见/非操作系统密码套件:我能够创建另一个CCM_8服务器来测试Openssl的s_server:openssl s_server -cert ./selfsigned.pem -cipher ECDHE-ECDSA-AES128-CCM8 -www我的Bouncy Castle TLSClient能够与它进行密钥交换。所以这只是我使用Bouncy Castle为TLSClient的证书创建证书的一个错误。(您可以使用Openssl s_server中的-Verify参数来执行TLS证书请求,并强制客户端使用证书进行回复,如果没有提供证书,则使用失败(

最新更新