Configures context of public key operations
        @param ctx - context to configure
        @param opts - dictionary of options (from kwargs of calling
            function)
        @param skip - list of options which shouldn't be passed to
            context

def _configure_context(ctx, opts, skip=()):
        """
        Configures context of public key operations
        @param ctx - context to configure
        @param opts - dictionary of options (from kwargs of calling
            function)
        @param skip - list of options which shouldn't be passed to
            context
        """

        for oper in opts:
            if oper in skip:
                continue
            if isinstance(oper,chartype):
                op = oper.encode("ascii")
            else:
                op = oper
            if isinstance(opts[oper],chartype):
                value = opts[oper].encode("ascii")
            elif isinstance(opts[oper],bintype):
                value = opts[oper]
            else:
                if pyver == 2:
                    value = str(opts[oper])
                else:
                    value = str(opts[oper]).encode('ascii')
            ret = libcrypto.EVP_PKEY_CTX_ctrl_str(ctx, op, value)
            if ret == -2:
                raise PKeyError("Parameter %s is not supported by key" % oper)
            if ret < 1:
                raise PKeyError("Error setting parameter %s" % oper)