/* * include/haproxy/jwt-t.h * Macros, variables and structures for JWT management. * * Copyright (C) 2021 HAProxy Technologies, Remi Tricot-Le Breton * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, version 2.1 * exclusively. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _HAPROXY_JWT_T_H #define _HAPROXY_JWT_T_H #include #ifdef USE_OPENSSL enum jwt_alg { JWT_ALG_DEFAULT, JWS_ALG_NONE, JWS_ALG_HS256, JWS_ALG_HS384, JWS_ALG_HS512, JWS_ALG_RS256, JWS_ALG_RS384, JWS_ALG_RS512, JWS_ALG_ES256, JWS_ALG_ES384, JWS_ALG_ES512, JWS_ALG_PS256, JWS_ALG_PS384, JWS_ALG_PS512, }; struct jwt_item { char *start; size_t length; }; struct jwt_ctx { enum jwt_alg alg; struct jwt_item jose; struct jwt_item claims; struct jwt_item signature; char *key; unsigned int key_length; }; enum jwt_elt { JWT_ELT_JOSE = 0, JWT_ELT_CLAIMS, JWT_ELT_SIG, JWT_ELT_MAX }; struct jwt_cert_tree_entry { EVP_PKEY *pkey; struct ebmb_node node; char path[VAR_ARRAY]; }; enum jwt_vrfy_status { JWT_VRFY_KO = 0, JWT_VRFY_OK = 1, JWT_VRFY_UNKNOWN_ALG = -1, JWT_VRFY_UNMANAGED_ALG = -2, JWT_VRFY_INVALID_TOKEN = -3, JWT_VRFY_OUT_OF_MEMORY = -4, JWT_VRFY_UNKNOWN_CERT = -5 }; #endif /* USE_OPENSSL */ #endif /* _HAPROXY_JWT_T_H */