tlsv1_client.h 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. /*
  2. * TLS v1.0/v1.1/v1.2 client (RFC 2246, RFC 4346, RFC 5246)
  3. * Copyright (c) 2006-2011, Jouni Malinen <j@w1.fi>
  4. *
  5. * This software may be distributed under the terms of the BSD license.
  6. * See README for more details.
  7. */
  8. #ifndef TLSV1_CLIENT_H
  9. #define TLSV1_CLIENT_H
  10. #include "tlsv1_cred.h"
  11. struct tlsv1_client;
  12. int tlsv1_client_global_init(void);
  13. void tlsv1_client_global_deinit(void);
  14. struct tlsv1_client * tlsv1_client_init(void);
  15. void tlsv1_client_deinit(struct tlsv1_client *conn);
  16. int tlsv1_client_established(struct tlsv1_client *conn);
  17. int tlsv1_client_prf(struct tlsv1_client *conn, const char *label,
  18. int server_random_first, u8 *out, size_t out_len);
  19. u8 * tlsv1_client_handshake(struct tlsv1_client *conn,
  20. const u8 *in_data, size_t in_len,
  21. size_t *out_len, u8 **appl_data,
  22. size_t *appl_data_len, int *need_more_data);
  23. int tlsv1_client_encrypt(struct tlsv1_client *conn,
  24. const u8 *in_data, size_t in_len,
  25. u8 *out_data, size_t out_len);
  26. struct wpabuf * tlsv1_client_decrypt(struct tlsv1_client *conn,
  27. const u8 *in_data, size_t in_len,
  28. int *need_more_data);
  29. int tlsv1_client_get_cipher(struct tlsv1_client *conn, char *buf,
  30. size_t buflen);
  31. int tlsv1_client_shutdown(struct tlsv1_client *conn);
  32. int tlsv1_client_resumed(struct tlsv1_client *conn);
  33. int tlsv1_client_hello_ext(struct tlsv1_client *conn, int ext_type,
  34. const u8 *data, size_t data_len);
  35. int tlsv1_client_get_random(struct tlsv1_client *conn, struct tls_random *data);
  36. int tlsv1_client_get_keyblock_size(struct tlsv1_client *conn);
  37. int tlsv1_client_set_cipher_list(struct tlsv1_client *conn, u8 *ciphers);
  38. int tlsv1_client_set_cred(struct tlsv1_client *conn,
  39. struct tlsv1_credentials *cred);
  40. void tlsv1_client_set_flags(struct tlsv1_client *conn, unsigned int flags);
  41. typedef int (*tlsv1_client_session_ticket_cb)
  42. (void *ctx, const u8 *ticket, size_t len, const u8 *client_random,
  43. const u8 *server_random, u8 *master_secret);
  44. void tlsv1_client_set_session_ticket_cb(struct tlsv1_client *conn,
  45. tlsv1_client_session_ticket_cb cb,
  46. void *ctx);
  47. void tlsv1_client_set_cb(struct tlsv1_client *conn,
  48. void (*event_cb)(void *ctx, enum tls_event ev,
  49. union tls_event_data *data),
  50. void *cb_ctx,
  51. int cert_in_cb);
  52. int tlsv1_client_get_version(struct tlsv1_client *conn, char *buf,
  53. size_t buflen);
  54. #endif /* TLSV1_CLIENT_H */