/* +----------------------------------------------------------------------+ | PHP Version 7 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2017 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.txt | | If you did not receive a copy of the PHP license and are unable to | | obtain it through the world-wide-web, please send a note to | | license@php.net so we can mail you a copy immediately. | +----------------------------------------------------------------------+ | Author: ZiHang Gao <ocdoco@gmail.com> | +----------------------------------------------------------------------+ */ /* $Id$ */ #ifndef PHP_JWT_H #define PHP_JWT_H #include <php.h> #include <php_ini.h> #include <zend_smart_str.h> #include <zend_exceptions.h> #include <ext/spl/spl_exceptions.h> #include <ext/standard/base64.h> #include <ext/json/php_json.h> #include <ext/standard/info.h> #include <ext/standard/php_string.h> extern zend_module_entry jwt_module_entry; #define phpext_jwt_ptr &jwt_module_entry #define PHP_JWT_VERSION "0.2.5" #ifdef ZTS #include "TSRM.h" #endif #define JWT_G(v) ZEND_MODULE_GLOBALS_ACCESSOR(jwt, v) ZEND_BEGIN_MODULE_GLOBALS(jwt) time_t expiration; time_t not_before; char *iss; time_t iat; char *jti; zval *aud; char *sub; size_t leeway; char *algorithm; ZEND_END_MODULE_GLOBALS(jwt) /** JWT algorithm types. */ typedef enum jwt_alg { JWT_ALG_NONE = 0, JWT_ALG_HS256, JWT_ALG_HS384, JWT_ALG_HS512, JWT_ALG_RS256, JWT_ALG_RS384, JWT_ALG_RS512, JWT_ALG_ES256, JWT_ALG_ES384, JWT_ALG_ES512, JWT_ALG_TERM } jwt_alg_t; #define JWT_ALG_INVAL JWT_ALG_TERM /** Opaque JWT object. */ typedef struct jwt { jwt_alg_t alg; zend_string *key; zend_string *str; } jwt_t; char *jwt_b64_url_encode(zend_string *input); void jwt_b64_url_encode_ex(char *str); zend_string *jwt_b64_url_decode(const char *src); int jwt_sign_sha_hmac(jwt_t *jwt, char **out, unsigned int *len); int jwt_verify_sha_hmac(jwt_t *jwt, const char *sig); int jwt_sign_sha_pem(jwt_t *jwt, char **out, unsigned int *len); int jwt_verify_sha_pem(jwt_t *jwt, const char *sig_b64); #if defined(ZTS) && defined(COMPILE_DL_JWT) ZEND_TSRMLS_CACHE_EXTERN() #endif #endif /* PHP_JWT_H */ /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * End: * vim600: noet sw=4 ts=4 fdm=marker * vim<600: noet sw=4 ts=4 */