2016-06-10 04:39:19 +08:00
|
|
|
Adding new libraries
|
2020-06-10 23:49:25 +08:00
|
|
|
====================
|
2016-06-10 04:39:19 +08:00
|
|
|
|
|
|
|
When adding a new sub-library to OpenSSL, assign it a library number
|
2020-06-10 23:49:25 +08:00
|
|
|
`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:
|
2016-06-10 04:39:19 +08:00
|
|
|
|
|
|
|
L XXX xxx.h xxx_err.c
|
|
|
|
|
2020-06-10 23:49:25 +08:00
|
|
|
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`.
|
2016-06-10 04:39:19 +08:00
|
|
|
|
|
|
|
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 */
|
|
|
|
|
2020-06-10 23:49:25 +08:00
|
|
|
The `BEGIN ERROR CODES` sequence is used by the error code
|
2016-06-10 04:39:19 +08:00
|
|
|
generation script as the point to place new error codes, any text
|
|
|
|
after this point will be overwritten when make errors is run.
|
2020-06-10 23:49:25 +08:00
|
|
|
The closing `#endif` etc will be automatically added by the script.
|
2016-06-10 04:39:19 +08:00
|
|
|
|
2020-06-10 23:49:25 +08:00
|
|
|
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
|
2016-06-10 04:39:19 +08:00
|
|
|
header file must load any additional header files containing any
|
|
|
|
definitions it uses.
|