18 #define JWT_HEADER_NAME_ALG "alg" 19 #define JWT_HEADER_NAME_TYPE "typ" 20 #define JWT_HEADER_NAME_KID "kid" 22 #define JWT_PAYLOAD_NAME_ISS "iss" 23 #define JWT_PAYLOAD_NAME_SUB "sub" 24 #define JWT_PAYLOAD_NAME_AUD "aud" 25 #define JWT_PAYLOAD_NAME_IAT "iat" 26 #define JWT_PAYLOAD_NAME_NBF "nbf" 27 #define JWT_PAYLOAD_NAME_EXP "exp" 28 #define JWT_PAYLOAD_NAME_SCHEMAS "schemas" 29 #define JWT_PAYLOAD_NAME_TEN "ten" 30 #define JWT_PAYLOAD_NAME_JTI "jti" 31 #define JWT_PAYLOAD_NAME_PUBLIC_KEY "public_key" 32 #define JWT_PAYLOAD_NAME_CONTENT_MD5 "content-md5" 34 #define JWT_HEADER_VALUE_ALG_SHARED_SECRET "HS256" 35 #define JWT_HEADER_VALUE_ALG_RSA_3072 "RS256" 36 #define JWT_HEADER_VALUE_TYP "JWT" 38 #define JWT_PAYLOAD_VALUE_SCHEMAS "urn:siemens:mindsphere:v1" 39 #define JWT_PAYLOAD_VALUE_AUD "southgate" 66 MCL_DEBUG_ENTRY(
"security_handler_t *security_handler = <%p>, E_MCL_SECURITY_PROFILE security_profile = <%d>, char *tenant = <%s>, jwt_t **jwt = <%p>",
67 security_handler, security_profile, tenant, jwt);
75 (*jwt)->security_handler = security_handler;
76 (*jwt)->security_profile = security_profile;
146 MCL_DEBUG(
"JWT handle is already NULL.");
156 MCL_DEBUG_ENTRY(
"E_MCL_SECURITY_PROFILE security_profile = <%d>, mcl_json_t **header = <%p>", security_profile, header);
202 MCL_DEBUG_ENTRY(
"security_handler_t *security_handler = <%p>, char *tenant = <%s>, jwt_t *jwt = <%p>", security_handler, tenant, jwt);
276 char *header_encoded;
277 char *payload_encoded;
278 char *header_and_payload =
MCL_NULL;
281 MCL_DEBUG_ENTRY(
"jwt_t *jwt = <%p>, char *header = <%s>, char *payload = <%s>, char **token = <%p>", jwt, header, payload, token);
285 "Encode header - payload failed!");
306 MCL_DEBUG_ENTRY(
"char *header = <%s>, char *payload = <%s>, char **header_encoded = <%p>, char **payload_encoded = <%p>",
307 header, payload, header_encoded, payload_encoded);
311 MCL_FAIL,
"Header encoding failed!");
328 MCL_DEBUG_ENTRY(
"char *string_a = <%s>, char *string_b = <%s>, char **joined = <%p>", string_a, string_b, joined);
364 MCL_DEBUG_ENTRY(
"jwt_t *jwt = <%p>, char *header_and_payload = <%s>, char **signature = <%p>", jwt, header_and_payload, signature);
#define JWT_PAYLOAD_NAME_IAT
static mcl_error_t _create_self_issued_jwt_payload(security_handler_t *security_handler, char *tenant, jwt_t *jwt)
mcl_error_t security_handler_generate_jti(char **jti)
char * client_id
Client id.
static mcl_error_t _join_with_dot(char *string_a, char *string_b, char **joined)
#define JWT_HEADER_NAME_TYPE
Assert module header file.
Json utility module header file.
#define JWT_PAYLOAD_NAME_JTI
#define JWT_PAYLOAD_NAME_NBF
mcl_time_t issued_at
Time of issue.
char * jwt_get_token(jwt_t *jwt)
#define MCL_DEBUG_ENTRY(...)
static mcl_error_t _create_self_issued_jwt_header(E_MCL_SECURITY_PROFILE security_profile, mcl_json_t **header)
static mcl_error_t _get_header_and_payload_encoded_base64_url(char *header, char *payload, char **header_encoded, char **payload_encoded)
String utility module header file.
security_handler_t * security_handler
Security handler.
#define JWT_EXPIRATION_TIME
mcl_error_t security_handler_base64_url_encode(const mcl_uint8_t *data, mcl_size_t data_size, char **encoded_data)
#define MCL_ASSERT_CODE_MESSAGE(condition, return_code,...)
void json_util_destroy(mcl_json_t **root)
#define JWT_HEADER_VALUE_ALG_SHARED_SECRET
#define JWT_PAYLOAD_NAME_AUD
#define JWT_PAYLOAD_NAME_SUB
mcl_error_t jwt_initialize(security_handler_t *security_handler, E_MCL_SECURITY_PROFILE security_profile, char *tenant, jwt_t **jwt)
mcl_error_t security_handler_rsa_sign(char *rsa_key, char *data, mcl_size_t data_size, mcl_uint8_t **signature, mcl_size_t *signature_size)
#define JWT_PAYLOAD_NAME_ISS
mcl_error_t security_handler_hmac_sha256(security_handler_t *security_handler, const mcl_uint8_t *data, mcl_size_t data_size, mcl_uint8_t **hash, mcl_size_t *hash_size)
void string_util_memcpy(void *destination, const void *source, mcl_size_t count)
char * private_key
Private key.
Definitions module header file.
#define MCL_ASSERT_STATEMENT_CODE_MESSAGE(condition, statement, return_code,...)
MCL_CORE_EXPORT const char * mcl_core_return_code_strings[MCL_CORE_RETURN_CODE_END]
mcl_error_t json_util_start_array(mcl_json_t *root, const char *array_name, mcl_json_t **json_array)
void jwt_destroy(jwt_t **jwt)
#define JWT_HEADER_VALUE_TYP
mcl_json_t * payload
Payload of JWT.
#define MCL_ERROR_RETURN(return_value,...)
#define JWT_PAYLOAD_VALUE_SCHEMAS
static mcl_error_t _calculate_signature(jwt_t *jwt, char *header_and_payload, char **signature)
#define JWT_PAYLOAD_NAME_TEN
#define JWT_PAYLOAD_NAME_SCHEMAS
void time_util_get_time(mcl_time_t *current_time)
MCL_CORE_EXPORT mcl_error_t mcl_json_util_to_string(mcl_json_t *root, char **json_string)
#define MCL_NULL_CHAR_SIZE
mcl_error_t json_util_add_string(mcl_json_t *root, const char *object_name, const char *object_value)
#define MCL_MALLOC(bytes)
mcl_error_t json_util_initialize(E_MCL_JSON_TYPE mcl_json_type, mcl_json_t **root)
E_MCL_SECURITY_PROFILE security_profile
Security profile.
static mcl_error_t _generate_token(jwt_t *jwt, char *header, char *payload, char **token)
#define JWT_PAYLOAD_NAME_EXP
#define JWT_HEADER_VALUE_ALG_RSA_3072
#define MCL_DEBUG_LEAVE(...)
mcl_json_t * header
Header of JWT.
mcl_size_t string_util_strlen(const char *buffer)
#define JWT_HEADER_NAME_ALG
Time utility module header file.
static mcl_error_t _add_schema_to_jwt(mcl_json_t *payload)
mcl_error_t json_util_add_double(mcl_json_t *root, const char *object_name, const double number)
#define JWT_PAYLOAD_VALUE_AUD
Memory module interface header file.