def eval(w,t,x,msk,s):
    """
    Pythia server-side computation of intermediate PRF output.
    @w: ensemble key selector (any string, e.g. webserver ID)
    @t: tweak (any string, e.g. user ID)
    @x: message (any string)
    @msk: Pythia server's master secret key
    @s: state value from Pythia server's key table
    @returns: (y, kw, dummy=None)
     where: y: intermediate result
            kw: secret key bound to w (needed for proof)
            beta: H(kw,t,x) (needed for proof)
    """
    # Verify types
    assertType(w, (str, int, long))
    assertType(t, (str, int, long))
    assertType(x, (str, int, long))

    # Construct the key
    kw = genKw(w,msk,s)

    # Compute y
    beta = hashG1(t, x)
    y = beta*kw
    return y,kw,beta
Pythia server-side computation of intermediate PRF output.
    @w: ensemble key selector (any string, e.g. webserver ID)
    @t: tweak (any string, e.g. user ID)
    @x: message (any string)
    @msk: Pythia server's master secret key
    @s: state value from Pythia server's key table
    @returns: (y, kw, dummy=None)
     where: y: intermediate result
            kw: secret key bound to w (needed for proof)
            beta: H(kw,t,x) (needed for proof)