snmpTLSBaseDomain.h 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. #ifndef _SNMPTLSBASEDOMAIN_H
  2. #define _SNMPTLSBASEDOMAIN_H
  3. #ifdef __cplusplus
  4. extern "C" {
  5. #endif
  6. #include <net-snmp/library/snmp_transport.h>
  7. #include <net-snmp/library/asn1.h>
  8. #include <net-snmp/library/container.h>
  9. /* OpenSSL Includes */
  10. #include "openssl/bio.h"
  11. #include "openssl/ssl.h"
  12. #include "openssl/err.h"
  13. /*
  14. * Prototypes
  15. */
  16. void netsnmp_tlsbase_ctor(void);
  17. void netsnmp_init_tlsbase(void);
  18. const char * _x509_get_error(int x509failvalue, const char *location);
  19. void _openssl_log_error(int rc, SSL *con, const char *location);
  20. /* will likely go away */
  21. SSL_CTX *get_client_ctx(void);
  22. SSL_CTX *get_server_ctx(void);
  23. #define NETSNMP_TLSBASE_IS_CLIENT 0x01
  24. #define NETSNMP_TLSBASE_CERT_FP_VERIFIED 0x02
  25. /*
  26. * _Internal_ structures
  27. */
  28. typedef struct _netsnmpTLSBaseData_s {
  29. int flags;
  30. SSL_CTX *ssl_context;
  31. SSL *ssl;
  32. BIO *sslbio;
  33. BIO *accept_bio;
  34. BIO *accepted_bio;
  35. char *securityName;
  36. char *addr_string;
  37. netsnmp_indexed_addr_pair *addr;
  38. char *our_identity;
  39. char *their_identity;
  40. char *their_fingerprint;
  41. char *their_hostname;
  42. char *trust_cert;
  43. } _netsnmpTLSBaseData;
  44. #define VRFY_PARENT_WAS_OK 1
  45. typedef struct _netsnmp_verify_info_s {
  46. int flags;
  47. } _netsnmp_verify_info;
  48. SSL_CTX *sslctx_client_setup(const SSL_METHOD *,
  49. _netsnmpTLSBaseData *tlsbase);
  50. SSL_CTX *sslctx_server_setup(const SSL_METHOD *);
  51. int netsnmp_tlsbase_verify_server_cert(SSL *ssl,
  52. _netsnmpTLSBaseData *tlsdata);
  53. int netsnmp_tlsbase_verify_client_cert(SSL *ssl,
  54. _netsnmpTLSBaseData *tlsdata);
  55. int netsnmp_tlsbase_extract_security_name(SSL *ssl, _netsnmpTLSBaseData *tlsdata);
  56. _netsnmpTLSBaseData *netsnmp_tlsbase_allocate_tlsdata(netsnmp_transport *t,
  57. int isserver);
  58. int netsnmp_tlsbase_wrapup_recv(netsnmp_tmStateReference *tmStateRef,
  59. _netsnmpTLSBaseData *tlsdata,
  60. void **opaque, int *olength);
  61. int netsnmp_tlsbase_config(struct netsnmp_transport_s *t,
  62. const char *token, const char *value);
  63. int netsnmp_tlsbase_session_init(struct netsnmp_transport_s *,
  64. struct snmp_session *sess);
  65. int tls_get_verify_info_index(void);
  66. void netsnmp_tlsbase_free_tlsdata(_netsnmpTLSBaseData *tlsbase);
  67. #ifdef __cplusplus
  68. }
  69. #endif
  70. #endif/*_SNMPTLSBASEDOMAIN_H*/