]>
Commit | Line | Data |
---|---|---|
53934822 | 1 | Adding new libraries |
1dc1ea18 | 2 | ==================== |
53934822 RS |
3 | |
4 | When adding a new sub-library to OpenSSL, assign it a library number | |
1dc1ea18 DDO |
5 | `ERR_LIB_XXX`, define a macro `XXXerr()` (both in `err.h`), add its |
6 | name to `ERR_str_libraries[]` (in `crypto/err/err.c`), and add | |
7 | `ERR_load_XXX_strings()` to the `ERR_load_crypto_strings()` function | |
8 | (in `crypto/err/err_all.c`). Finally, add an entry: | |
53934822 RS |
9 | |
10 | L XXX xxx.h xxx_err.c | |
11 | ||
1dc1ea18 DDO |
12 | to `crypto/err/openssl.ec`, and add `xxx_err.c` to the `Makefile`. |
13 | Running make errors will then generate a file `xxx_err.c`, and | |
14 | add all error codes used in the library to `xxx.h`. | |
53934822 RS |
15 | |
16 | Additionally the library include file must have a certain form. | |
17 | Typically it will initially look like this: | |
18 | ||
19 | #ifndef HEADER_XXX_H | |
20 | #define HEADER_XXX_H | |
21 | ||
22 | #ifdef __cplusplus | |
23 | extern "C" { | |
24 | #endif | |
25 | ||
26 | /* Include files */ | |
27 | ||
28 | #include <openssl/bio.h> | |
29 | #include <openssl/x509.h> | |
30 | ||
31 | /* Macros, structures and function prototypes */ | |
32 | ||
33 | ||
34 | /* BEGIN ERROR CODES */ | |
35 | ||
1dc1ea18 | 36 | The `BEGIN ERROR CODES` sequence is used by the error code |
53934822 RS |
37 | generation script as the point to place new error codes, any text |
38 | after this point will be overwritten when make errors is run. | |
1dc1ea18 | 39 | The closing `#endif` etc will be automatically added by the script. |
53934822 | 40 | |
1dc1ea18 DDO |
41 | The generated C error code file `xxx_err.c` will load the header |
42 | files `stdio.h`, `openssl/err.h` and `openssl/xxx.h` so the | |
53934822 RS |
43 | header file must load any additional header files containing any |
44 | definitions it uses. | |
2ee2b74c ČK |
45 | |
46 | Adding new error codes | |
47 | ====================== | |
48 | ||
49 | Instead of manually adding error codes into `crypto/err/openssl.txt`, | |
50 | it is recommended to leverage `make update` for error code generation. | |
51 | The target will process relevant sources and generate error codes for | |
52 | any *used* error codes. | |
53 | ||
54 | If an error code is added manually into `crypto/err/openssl.txt`, | |
55 | subsequent `make update` has no effect. |