Ejemplo n.º 1
0
def _sslHandshake(sock, sslContext, reactor, callback=None):
    def doCancel():
        acceptOp.cancel()
        sslAbort(sslConn)

    def onSSLAccept(err):
        if err is not None:
            sslAbort(sslConn)
            op.notify(None)
            return
        try:
            peerCert = sslConn.getPeerCertificate()
            peerKey = peerCert.getPublicKey()
            peerName = peerCert.getSubject().lookupEntry('commonName')
        except (SSLError, X509Error):
            sslAbort(sslConn)
            op.notify(None)
            return
        data = (sslConn, peerKey, peerName)
        op.notify(data)

    sslConn = SSLConnection(sslContext, sock)
    acceptOp = sslAccept(sslConn, reactor, onSSLAccept)
    op = AsyncOp(callback, doCancel)
    return op
Ejemplo n.º 2
0
def _sslHandshake( sock, sslContext, reactor, callback=None ) :
    def doCancel() :
        acceptOp.cancel()
        sslAbort( sslConn )
    def onSSLAccept( err ) :
        global logger
        if err is not None :
            sslAbort( sslConn )
            op.notify( None )
            return
        try :
            peerCert = sslConn.getPeerCertificate()
            peerKey = RSAKey()
            peerKey.fromPKey_PublicKey(peerCert.get_pubkey())
            CN = peerCert.get_subject().CN
            if CN.count('@'):
                peerName, peerKeyID = CN.split('@')
            else:
                peerName, peerKeyID = CN, ''
        except (SSLError,X509Error,RSAError) :
            logger.exception('ssl accept error')
            sslAbort( sslConn )
            op.notify( None )
            return
        data = (sslConn,peerKey,peerName,peerKeyID)
        # logger.info('onSSLAccept SUCCESSFUL with %s' % str(peerName))
        op.notify( data )
    sslConn = SSLConnection( sslContext, sock )
    sslConn.setAcceptState()
    acceptOp = sslAccept( sslConn, reactor, onSSLAccept )
    op = AsyncOp( callback, doCancel )
    return op
Ejemplo n.º 3
0
def _sslHandshake( sock, sslContext, reactor, callback=None ) :
    def doCancel() :
        acceptOp.cancel()
        sslAbort( sslConn )
    def onSSLAccept( err ) :
        if err is not None :
            sslAbort( sslConn )
            op.notify( None )
            return
        try :
            peerCert = sslConn.getPeerCertificate()
            peerKey = peerCert.getPublicKey()
            peerName = peerCert.getSubject().lookupEntry('commonName')
        except (SSLError,X509Error) :
            sslAbort( sslConn )
            op.notify( None )
            return
        data = (sslConn,peerKey,peerName)
        op.notify( data )
    sslConn = SSLConnection( sslContext, sock )
    acceptOp = sslAccept( sslConn, reactor, onSSLAccept )
    op = AsyncOp( callback, doCancel )
    return op