cation can a generate human-readable error messages for the error code.</p>

<h2 id="Reporting-errors">Reporting errors</h2>

<h3 id="OpenSSL-library-reports">OpenSSL library reports</h3>

<p>Each OpenSSL sub-library has library code <b>ERR_LIB_XXX</b> and has its own set of reason codes <b>XXX_R_...</b>. These are both passed in combination to ERR_raise() and ERR_raise_data(), and the combination ultimately produces the correct error text for the reported error.</p>

<p>All these macros and the numbers the