loader: Sync load- and build-time deps.
[asterisk/asterisk.git] / res / res_stir_shaken / certificate.h
1 /*
2  * Asterisk -- An open source telephony toolkit.
3  *
4  * Copyright (C) 2020, Sangoma Technologies Corporation
5  *
6  * Kevin Harwell <kharwell@sangoma.com>
7  *
8  * See http://www.asterisk.org for more information about
9  * the Asterisk project. Please do not directly contact
10  * any of the maintainers of this project for assistance;
11  * the project provides a web site, mailing lists and IRC
12  * channels for your use.
13  *
14  * This program is free software, distributed under the terms of
15  * the GNU General Public License Version 2. See the LICENSE file
16  * at the top of the source tree.
17  */
18 #ifndef _STIR_SHAKEN_CERTIFICATE_H
19 #define _STIR_SHAKEN_CERTIFICATE_H
20
21 #include <openssl/evp.h>
22
23 struct ast_sorcery;
24
25 struct stir_shaken_certificate;
26
27 /*!
28  * \brief Get a STIR/SHAKEN certificate by caller ID number
29  *
30  * \param callier_id_number The caller ID number
31  *
32  * \retval NULL if not found
33  * \retval The certificate on success
34  */
35 struct stir_shaken_certificate *stir_shaken_certificate_get_by_caller_id_number(const char *caller_id_number);
36
37 /*!
38  * \brief Get the public key URL associated with a certificate
39  *
40  * \param cert The certificate to get the public key URL from
41  *
42  * \retval NULL on failure
43  * \retval The public key URL on success
44  */
45 const char *stir_shaken_certificate_get_public_key_url(struct stir_shaken_certificate *cert);
46
47 /*!
48  * \brief Get the attestation level associated with a certificate
49  *
50  * \param cert The certificate
51  *
52  * \retval NULL on failure
53  * \retval The attestation on success
54  */
55 const char *stir_shaken_certificate_get_attestation(struct stir_shaken_certificate *cert);
56
57 /*!
58  * \brief Get the origination ID associated with a certificate
59  *
60  * \param cert The certificate
61  *
62  * \retval NULL on failure
63  * \retval The origid on success
64  */
65 const char *stir_shaken_certificate_get_origid(struct stir_shaken_certificate *cert);
66
67 /*!
68  * \brief Get the private key associated with a certificate
69  *
70  * \param cert The certificate to get the private key from
71  *
72  * \retval NULL on failure
73  * \retval The private key on success
74  */
75 EVP_PKEY *stir_shaken_certificate_get_private_key(struct stir_shaken_certificate *cert);
76
77 #ifdef TEST_FRAMEWORK
78
79 /*!
80  * \brief Clean up the certificate and mappings set up in test_stir_shaken_init
81  *
82  * \param caller_id_number The caller ID of the certificate to clean up
83  *
84  * \retval non-zero on failure
85  * \retval 0 on success
86  */
87 int test_stir_shaken_cleanup_cert(const char *caller_id_number);
88
89 /*!
90  * \brief Initialize a test certificate through wizard mappings
91  *
92  * \note test_stir_shaken_cleanup should be called when done with this certificate
93  *
94  * \param caller_id_number The caller ID of the certificate to create
95  * \param file_path The path to the private key for this certificate
96  *
97  * \retval non-zero on failure
98  * \retval 0 on success
99  */
100 int test_stir_shaken_create_cert(const char *caller_id_number, const char *file_path);
101
102 #endif /* TEST_FRAMEWORK */
103
104 /*!
105  * \brief Load time initialization for the stir/shaken 'certificate' configuration
106  *
107  * \retval 0 on success, -1 on error
108  */
109 int stir_shaken_certificate_load(void);
110
111 /*!
112  * \brief Unload time cleanup for the stir/shaken 'certificate' configuration
113  *
114  * \retval 0 on success, -1 on error
115  */
116 int stir_shaken_certificate_unload(void);
117
118 #endif /* _STIR_SHAKEN_CERTIFICATE_H */
119