how can I rotate a 3D vector along an arbitrary plane?

for example... I have a vector that points straight up the wall, and one that points to the right along the wall, and I want to rotate it to the left, so that its pointing diagonally across the wall

The wall isn't necessarily going straight up.

The angle is arbitrary. So I might want to rotate the vector left or right 45 degrees, etc.

for convenience, the normal to the wall is called 'up', going up in the z axis is 'forward' and going to the right facing away from the wall is 'right'