mirror of
https://github.com/haproxy/haproxy.git
synced 2026-03-28 21:35:19 -04:00
The 'jwt_tokenize' function that can be used to split a JWT token into its subparts can either fully process the token (from beginning to end) when we need to check its signature, or only partially when using the jwt_header_query or jwt_member_query converters. In this case we relied on the fact that the return value of the 'jwt_tokenize' function was not checked because a '-1' was returned (which was not actually an error). In order to make this logic more explicit, the 'jwt_tokenize' function now has a way to warn the caller that the token was invalid (less subparts than the specified 'item_num') or that the token was not processed in full (enough subparts found without parsing the token all the way). The function will now only return 0 if we found strictly the same number of subparts as 'item_num'.
38 lines
1.4 KiB
C
38 lines
1.4 KiB
C
/*
|
|
* include/haproxy/jwt.h
|
|
* Functions for JSON Web Token (JWT) management.
|
|
*
|
|
* Copyright (C) 2021 HAProxy Technologies, Remi Tricot-Le Breton <rlebreton@haproxy.com>
|
|
*
|
|
* 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_H
|
|
#define _HAPROXY_JWT_H
|
|
|
|
#include <haproxy/jwt-t.h>
|
|
#include <haproxy/buf-t.h>
|
|
|
|
#ifdef USE_OPENSSL
|
|
enum jwt_alg jwt_parse_alg(const char *alg_str, unsigned int alg_len);
|
|
int jwt_tokenize(const struct buffer *jwt, struct jwt_item *items, unsigned int item_num);
|
|
int jwt_tree_load_cert(char *path, int pathlen, int tryload_cert, const char *file, int line, char **err);
|
|
|
|
enum jwt_vrfy_status jwt_verify(const struct buffer *token, const struct buffer *alg,
|
|
const struct buffer *key, int is_x509);
|
|
|
|
#endif /* USE_OPENSSL */
|
|
|
|
#endif /* _HAPROXY_JWT_H */
|