(credentials, sock_info)
Authenticate using CRAM-MD5 (RFC 2195)
Authenticate using CRAM-MD5 (RFC 2195)
Authenticate using CRAM - MD5 ( RFC 2195 )
def _authenticate_cram_md5(credentials, sock_info):
    """Authenticate using CRAM-MD5 (RFC 2195)
    """
    source = credentials.source
    username = credentials.username
    password = credentials.password
    # The password used as the mac key is the
    # same as what we use for MONGODB-CR
    passwd = _password_digest(username, password)
    cmd = SON([('saslStart', 1),
               ('mechanism', 'CRAM-MD5'),
               ('payload', Binary(b'')),
               ('autoAuthorize', 1)])
    response = sock_info.command(source, cmd)
    # MD5 as implicit default digest for digestmod is deprecated
    # in python 3.4
    mac = hmac.HMAC(key=passwd.encode('utf-8'), digestmod=md5)
    mac.update(response['payload'])
    challenge = username.encode('utf-8') + b' ' + b(mac.hexdigest())
    cmd = SON([('saslContinue', 1),
               ('conversationId', response['conversationId']),
               ('payload', Binary(challenge))])
    sock_info.command(source, cmd)
def _authenticate_cram_md5 ( credentials , sock_info ) : source = credentials . source username = credentials . username password = credentials . password # The password used as the mac key is the # same as what we use for MONGODB-CR passwd = _password_digest ( username , password ) cmd = SON ( [ ( 'saslStart' , 1 ) , ( 'mechanism' , 'CRAM-MD5' ) , ( 'payload' , Binary ( b'' ) ) , ( 'autoAuthorize' , 1 ) ] ) response = sock_info . command ( source , cmd ) # MD5 as implicit default digest for digestmod is deprecated # in python 3.4 mac = hmac . HMAC ( key = passwd . encode ( 'utf-8' ) , digestmod = md5 ) mac . update ( response [ 'payload' ] ) challenge = username . encode ( 'utf-8' ) + b' ' + b ( mac . hexdigest ( ) ) cmd = SON ( [ ( 'saslContinue' , 1 ) , ( 'conversationId' , response [ 'conversationId' ] ) , ( 'payload' , Binary ( challenge ) ) ] ) sock_info . command ( source , cmd )