bss_dgram.c(1041):OpenSSL内部错误,断言失败:验证数据 我尝试在Linux(FEDORA21 X8664)上使用C++的OpenSSL实现SCTP上的DTL

bss_dgram.c(1041):OpenSSL内部错误,断言失败:验证数据 我尝试在Linux(FEDORA21 X8664)上使用C++的OpenSSL实现SCTP上的DTL,linux,openssl,sctp,dtls,Linux,Openssl,Sctp,Dtls,问题代码: BIO *sbio=BIO_new_dgram_sctp( m_sctp_socket,BIO_NOCLOSE) 你能告诉我为什么OpenSSL会断言吗 碰撞框架: #0 0x00007f86fbed98d7 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:55 #1 0x00007f86fbedb53a in __GI_abort () at abort.c:89 #2 0x0

问题代码:

BIO *sbio=BIO_new_dgram_sctp( m_sctp_socket,BIO_NOCLOSE)
你能告诉我为什么OpenSSL会断言吗

碰撞框架:

#0  0x00007f86fbed98d7 in __GI_raise (sig=sig@entry=6) at    ../sysdeps/unix/sysv/linux/raise.c:55
#1  0x00007f86fbedb53a in __GI_abort () at abort.c:89
#2  0x00007f86fcf7512f in OpenSSLDie () from /lib64/libcrypto.so.1.0.0
#3  0x00007f86fd028c3a in BIO_new_dgram_sctp () from /lib64/libcrypto.so.1.0.0
在BIO_new_dgram_sctp()获取下面的断言消息运行时

已检查内核中的SCTP支持:

[blackmamba@fedora21]$ checksctp
SCTP supported
在sysctl中启用了身份验证块

net.sctp.auth_enable = 1
OpenSSL版本

OpenSSL 1.0.2a 19 Mar 2015

我遇到了这个问题,然后在接受新连接之前,在侦听器套接字上调用API“BIO_new_dgram_sctp”后,问题得到了解决

    try
    {
        ivSocket->doListen();
    }
    catch(SocketException& anException)
    {
        //Destroy this thread
        _close();
    }


    /* If security is enabled */
    if ((ivSecurity == eTLS) && (ivTransport == eSCTP))
    {
      /* Create DTLS/SCTP BIO and connect */
      BIO *bio = BIO_new_dgram_sctp(ivSocket->getSocketId(), BIO_CLOSE);        
    }

    /* call select on read and write FD's */
    /* Accept new connection that returns new FD and then call SSL_Accept for new FD */

我遇到了这个问题,然后在接受新连接之前,在侦听器套接字上调用API“BIO_new_dgram_sctp”后,问题得到了解决

    try
    {
        ivSocket->doListen();
    }
    catch(SocketException& anException)
    {
        //Destroy this thread
        _close();
    }


    /* If security is enabled */
    if ((ivSecurity == eTLS) && (ivTransport == eSCTP))
    {
      /* Create DTLS/SCTP BIO and connect */
      BIO *bio = BIO_new_dgram_sctp(ivSocket->getSocketId(), BIO_CLOSE);        
    }

    /* call select on read and write FD's */
    /* Accept new connection that returns new FD and then call SSL_Accept for new FD */

OpenSSL通常不进行验证,因此我的第一个猜测是
m_sctp_socket
无效。您可能应该从Git中获取Master(因为您使用的是1.0.2a)。我知道最近有一些针对DTL的修复程序。另请参见OpenSSL邮件列表中关于DTL和BIOs的讨论:和。OpenSSL通常不会验证,因此我的第一个猜测是
m\u sctp\u socket
无效。您可能应该从Git中获取Master(因为您使用的是1.0.2a)。我知道最近有一些针对DTL的修复程序。另请参见OpenSSL邮件列表中关于DTL和BIOs的讨论:和。OpenSSL通常不会验证,因此我的第一个猜测是
m\u sctp\u socket
无效。您可能应该从Git中获取Master(因为您使用的是1.0.2a)。我知道最近有一些针对DTL的修复程序。另请参阅OpenSSL邮件列表中关于DTL和BIOs的讨论:和。