As a proof of concept that the procedure in my previous answer straightforwardly carries to this case, allow me to present a short demo:
pts = {{0, 0}, {1, 0}, {.5, 1}, {-1, -2}, {1, 3}};
tvals = parametrizeCurve[pts, 1]; (* chord-length parametrization, just to be ornery *)
m = 3; (*degree of the B-spline*) n = Length[pts];
(*knots for interpolating B-spline*)
knots = Join[ConstantArray[0, m + 1],
MovingAverage[ArrayPad[tvals, -1], m], ConstantArray[1, m + 1]];
(*basis function matrix*)
bas = Outer[BSplineBasis[{m, knots}, #2, #1] &, tvals, Range[0, n - 1]];
ctrlpts = LinearSolve[bas, pts];
Graphics[{Blue, BSplineCurve[ctrlpts, SplineDegree -> m, SplineKnots -> knots],
{Directive[AbsolutePointSize[4], Red], Point[pts]}},
PlotRange -> {{-5/4, 5/4}, {-11/2, 7/2}}]

BSplineCurve[]
, you need to give the control points. However, to make the interpolation points pass the B-spline curve, you must set the linear-equation to solve the control points. $\endgroup$ – xyz Oct 10 '15 at 10:29