Exemple #1
0
def DigestCalcResponse(
    HA1,
    pszNonce,
    pszNonceCount,
    pszCNonce,
    pszQop,
    pszMethod,
    pszDigestUri,
    pszHEntity,
):
    m = md5()
    m.update(pszMethod)
    m.update(":")
    m.update(pszDigestUri)
    if pszQop == "auth-int":
        m.update(":")
        m.update(pszHEntity)
    HA2 = m.digest().encode('hex')

    m = md5()
    m.update(HA1)
    m.update(":")
    m.update(pszNonce)
    m.update(":")
    if pszNonceCount and pszCNonce:  # pszQop:
        m.update(pszNonceCount)
        m.update(":")
        m.update(pszCNonce)
        m.update(":")
        m.update(pszQop)
        m.update(":")
    m.update(HA2)
    hash = m.digest().encode('hex')
    return hash
Exemple #2
0
def DigestCalcHA1(
    pszAlg,
    pszUserName,
    pszRealm,
    pszPassword,
    pszNonce,
    pszCNonce,
):
    m = md5()
    m.update(pszUserName)
    m.update(":")
    m.update(pszRealm)
    m.update(":")
    m.update(pszPassword)
    HA1 = m.digest()
    if pszAlg == "md5-sess":
        m = md5()
        m.update(HA1)
        m.update(":")
        m.update(pszNonce)
        m.update(":")
        m.update(pszCNonce)
        HA1 = m.digest()
    return HA1.encode('hex')
Exemple #3
0
    def _makeContext(self):
        ctx = SSL.Context(self.method)

        if self.certificate is not None and self.privateKey is not None:
            ctx.use_certificate(self.certificate)
            ctx.use_privatekey(self.privateKey)
            # Sanity check
            ctx.check_privatekey()

        verifyFlags = SSL.VERIFY_NONE
        if self.verify:
            verifyFlags = SSL.VERIFY_PEER
            if self.requireCertificate:
                verifyFlags |= SSL.VERIFY_FAIL_IF_NO_PEER_CERT
            if self.verifyOnce:
                verifyFlags |= SSL.VERIFY_CLIENT_ONCE
            if self.caCerts:
                store = ctx.get_cert_store()
                for cert in self.caCerts:
                    store.add_cert(cert)

        # It'd be nice if pyOpenSSL let us pass None here for this behavior (as
        # the underlying OpenSSL API call allows NULL to be passed).  It
        # doesn't, so we'll supply a function which does the same thing.
        def _verifyCallback(conn, cert, errno, depth, preverify_ok):
            return preverify_ok

        ctx.set_verify(verifyFlags, _verifyCallback)

        if self.verifyDepth is not None:
            ctx.set_verify_depth(self.verifyDepth)

        if self.enableSingleUseKeys:
            ctx.set_options(SSL.OP_SINGLE_DH_USE)

        if self.fixBrokenPeers:
            ctx.set_options(self._OP_ALL)

        if self.enableSessions:
            sessionName = md5(
                "%s-%d" %
                (reflect.qual(self.__class__), _sessionCounter())).hexdigest()
            ctx.set_session_id(sessionName)

        if not self.enableSessionTickets:
            ctx.set_options(self._OP_NO_TICKET)

        return ctx
Exemple #4
0
	def _makeContext(self):
		ctx = SSL.Context(self.method)

		if self.certificate is not None and self.privateKey is not None:
			ctx.use_certificate(self.certificate)
			ctx.use_privatekey(self.privateKey)
			# Sanity check
			ctx.check_privatekey()

		verifyFlags = SSL.VERIFY_NONE
		if self.verify:
			verifyFlags = SSL.VERIFY_PEER
			if self.requireCertificate:
				verifyFlags |= SSL.VERIFY_FAIL_IF_NO_PEER_CERT
			if self.verifyOnce:
				verifyFlags |= SSL.VERIFY_CLIENT_ONCE
			if self.caCerts:
				store = ctx.get_cert_store()
				for cert in self.caCerts:
					store.add_cert(cert)

		# It'd be nice if pyOpenSSL let us pass None here for this behavior (as
		# the underlying OpenSSL API call allows NULL to be passed).  It
		# doesn't, so we'll supply a function which does the same thing.
		def _verifyCallback(conn, cert, errno, depth, preverify_ok):
			return preverify_ok
		ctx.set_verify(verifyFlags, _verifyCallback)

		if self.verifyDepth is not None:
			ctx.set_verify_depth(self.verifyDepth)

		if self.enableSingleUseKeys:
			ctx.set_options(SSL.OP_SINGLE_DH_USE)

		if self.fixBrokenPeers:
			ctx.set_options(self._OP_ALL)

		if self.enableSessions:
			sessionName = md5("%s-%d" % (reflect.qual(self.__class__), _sessionCounter())).hexdigest()
			ctx.set_session_id(sessionName)

		if not self.enableSessionTickets:
			ctx.set_options(self._OP_NO_TICKET)

		return ctx
Exemple #5
0
 def _gen_nonce(self):
     return md5("%s:%s:%s" % (str(random.random()), str(
         time.gmtime()), str(os.getpid()))).hexdigest()
Exemple #6
0
 def H(s):
     return md5(s).digest()
Exemple #7
0
def encryptPasswordMD5(password, key):
    m = md5()
    m.update(key)
    m.update(md5(password).digest())
    m.update("AOL Instant Messenger (SM)")
    return m.digest()
Exemple #8
0
	def keyHash(self):
		"""
		MD5 hex digest of signature on an empty certificate request with this
		key.
		"""
		return md5(self._emptyReq).hexdigest()
Exemple #9
0
def _decrypt(passphrase, data):
	from Crypto.Cipher import AES
	return AES.new(md5(passphrase).digest()[:16]).decrypt(data)
Exemple #10
0
def _encrypt(passphrase, data):
	from Crypto.Cipher import AES as cipher
	leftover = len(data) % cipher.block_size
	if leftover:
		data += ' '*(cipher.block_size - leftover)
	return cipher.new(md5(passphrase).digest()[:16]).encrypt(data)
	def _gen_nonce(self):
		return md5("%s:%s:%s" % (str(random.random()) , str(time.gmtime()),str(os.getpid()))).hexdigest()
		def H(s):
			return md5(s).digest()
Exemple #13
0
def encryptPasswordMD5(password,key):
	m=md5()
	m.update(key)
	m.update(md5(password).digest())
	m.update("AOL Instant Messenger (SM)")
	return m.digest()
Exemple #14
0
def _decrypt(passphrase, data):
    from Crypto.Cipher import AES
    return AES.new(md5(passphrase).digest()[:16]).decrypt(data)
Exemple #15
0
def _encrypt(passphrase, data):
    from Crypto.Cipher import AES as cipher
    leftover = len(data) % cipher.block_size
    if leftover:
        data += ' ' * (cipher.block_size - leftover)
    return cipher.new(md5(passphrase).digest()[:16]).encrypt(data)
Exemple #16
0
    def keyHash(self):
        """
		MD5 hex digest of signature on an empty certificate request with this
		key.
		"""
        return md5(self._emptyReq).hexdigest()