in quite a number of places we use Error::BadDer as a generic error code. i think we should be reserving it for genuine bad DER encoding cases and introducing more specific errors where the DER encoding is OK but the contents/semantics of the encoding are wrong.