| Adding new libraries |
| ==================== |
| |
| When adding a new sub-library to OpenSSL, assign it a library number |
| `ERR_LIB_XXX`, define a macro `XXXerr()` (both in `err.h`), add its |
| name to `ERR_str_libraries[]` (in `crypto/err/err.c`), and add |
| `ERR_load_XXX_strings()` to the `ERR_load_crypto_strings()` function |
| (in `crypto/err/err_all.c`). Finally, add an entry: |
| |
| L XXX xxx.h xxx_err.c |
| |
| to `crypto/err/openssl.ec`, and add `xxx_err.c` to the `Makefile`. |
| Running make errors will then generate a file `xxx_err.c`, and |
| add all error codes used in the library to `xxx.h`. |
| |
| Additionally the library include file must have a certain form. |
| Typically it will initially look like this: |
| |
| #ifndef HEADER_XXX_H |
| #define HEADER_XXX_H |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| /* Include files */ |
| |
| #include <openssl/bio.h> |
| #include <openssl/x509.h> |
| |
| /* Macros, structures and function prototypes */ |
| |
| |
| /* BEGIN ERROR CODES */ |
| |
| The `BEGIN ERROR CODES` sequence is used by the error code |
| generation script as the point to place new error codes, any text |
| after this point will be overwritten when make errors is run. |
| The closing `#endif` etc will be automatically added by the script. |
| |
| The generated C error code file `xxx_err.c` will load the header |
| files `stdio.h`, `openssl/err.h` and `openssl/xxx.h` so the |
| header file must load any additional header files containing any |
| definitions it uses. |