add missing headers
switch to by value return of cipher info, this gets rid of a global and RVO will take care of the performance