1*de0e0e4dSAntonio Huete Jimenez /* $OpenBSD: tls_content.h,v 1.1 2021/09/04 16:26:12 jsing Exp $ */ 2*de0e0e4dSAntonio Huete Jimenez /* 3*de0e0e4dSAntonio Huete Jimenez * Copyright (c) 2020 Joel Sing <jsing@openbsd.org> 4*de0e0e4dSAntonio Huete Jimenez * 5*de0e0e4dSAntonio Huete Jimenez * Permission to use, copy, modify, and distribute this software for any 6*de0e0e4dSAntonio Huete Jimenez * purpose with or without fee is hereby granted, provided that the above 7*de0e0e4dSAntonio Huete Jimenez * copyright notice and this permission notice appear in all copies. 8*de0e0e4dSAntonio Huete Jimenez * 9*de0e0e4dSAntonio Huete Jimenez * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 10*de0e0e4dSAntonio Huete Jimenez * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 11*de0e0e4dSAntonio Huete Jimenez * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 12*de0e0e4dSAntonio Huete Jimenez * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13*de0e0e4dSAntonio Huete Jimenez * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 14*de0e0e4dSAntonio Huete Jimenez * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 15*de0e0e4dSAntonio Huete Jimenez * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 16*de0e0e4dSAntonio Huete Jimenez */ 17*de0e0e4dSAntonio Huete Jimenez 18*de0e0e4dSAntonio Huete Jimenez #ifndef HEADER_TLS_CONTENT_H 19*de0e0e4dSAntonio Huete Jimenez #define HEADER_TLS_CONTENT_H 20*de0e0e4dSAntonio Huete Jimenez 21*de0e0e4dSAntonio Huete Jimenez #include "bytestring.h" 22*de0e0e4dSAntonio Huete Jimenez 23*de0e0e4dSAntonio Huete Jimenez __BEGIN_HIDDEN_DECLS 24*de0e0e4dSAntonio Huete Jimenez 25*de0e0e4dSAntonio Huete Jimenez struct tls_content; 26*de0e0e4dSAntonio Huete Jimenez 27*de0e0e4dSAntonio Huete Jimenez struct tls_content *tls_content_new(void); 28*de0e0e4dSAntonio Huete Jimenez void tls_content_clear(struct tls_content *content); 29*de0e0e4dSAntonio Huete Jimenez void tls_content_free(struct tls_content *content); 30*de0e0e4dSAntonio Huete Jimenez 31*de0e0e4dSAntonio Huete Jimenez CBS *tls_content_cbs(struct tls_content *content); 32*de0e0e4dSAntonio Huete Jimenez int tls_content_equal(struct tls_content *content, const uint8_t *buf, size_t n); 33*de0e0e4dSAntonio Huete Jimenez size_t tls_content_remaining(struct tls_content *content); 34*de0e0e4dSAntonio Huete Jimenez uint8_t tls_content_type(struct tls_content *content); 35*de0e0e4dSAntonio Huete Jimenez uint16_t tls_content_epoch(struct tls_content *content); 36*de0e0e4dSAntonio Huete Jimenez 37*de0e0e4dSAntonio Huete Jimenez int tls_content_dup_data(struct tls_content *content, uint8_t type, 38*de0e0e4dSAntonio Huete Jimenez const uint8_t *data, size_t data_len); 39*de0e0e4dSAntonio Huete Jimenez void tls_content_set_data(struct tls_content *content, uint8_t type, 40*de0e0e4dSAntonio Huete Jimenez const uint8_t *data, size_t data_len); 41*de0e0e4dSAntonio Huete Jimenez void tls_content_set_epoch(struct tls_content *content, uint16_t epoch); 42*de0e0e4dSAntonio Huete Jimenez 43*de0e0e4dSAntonio Huete Jimenez ssize_t tls_content_peek(struct tls_content *content, uint8_t *buf, size_t n); 44*de0e0e4dSAntonio Huete Jimenez ssize_t tls_content_read(struct tls_content *content, uint8_t *buf, size_t n); 45*de0e0e4dSAntonio Huete Jimenez 46*de0e0e4dSAntonio Huete Jimenez __END_HIDDEN_DECLS 47*de0e0e4dSAntonio Huete Jimenez 48*de0e0e4dSAntonio Huete Jimenez #endif 49