23 #define JWT_HEADER_NAME_ALG "alg" 24 #define JWT_HEADER_NAME_TYPE "typ" 25 #define JWT_HEADER_NAME_KID "kid" 27 #define JWT_PAYLOAD_NAME_ISS "iss" 28 #define JWT_PAYLOAD_NAME_SUB "sub" 29 #define JWT_PAYLOAD_NAME_AUD "aud" 30 #define JWT_PAYLOAD_NAME_IAT "iat" 31 #define JWT_PAYLOAD_NAME_NBF "nbf" 32 #define JWT_PAYLOAD_NAME_EXP "exp" 33 #define JWT_PAYLOAD_NAME_SCHEMAS "schemas" 34 #define JWT_PAYLOAD_NAME_TEN "ten" 35 #define JWT_PAYLOAD_NAME_JTI "jti" 36 #define JWT_PAYLOAD_NAME_PUBLIC_KEY "public_key" 37 #define JWT_PAYLOAD_NAME_CONTENT_MD5 "content-md5" 39 #define JWT_HEADER_VALUE_ALG_SHARED_SECRET "HS256" 40 #define JWT_HEADER_VALUE_ALG_RSA_3072 "RS256" 41 #define JWT_HEADER_VALUE_TYP "JWT" 43 #define JWT_PAYLOAD_VALUE_SCHEMAS "urn:siemens:mindsphere:v1" 44 #define JWT_PAYLOAD_VALUE_AUD "southgate" 74 DEBUG_ENTRY(
"security_handler_t *security_handler = <%p>, E_MCL_SECURITY_PROFILE security_profile = <%d>, string_t *tenant = <%p>, jwt_t **jwt = <%p>", security_handler,
75 security_profile, tenant, jwt)
82 (*jwt)->security_handler = security_handler;
83 (*jwt)->security_profile = security_profile;
150 MCL_DEBUG(
"JWT handle is already NULL.");
160 DEBUG_ENTRY(
"E_MCL_SECURITY_PROFILE security_profile = <%d>, json_t **header = <%p>", security_profile, header)
189 DEBUG_ENTRY(
"security_handler_t *security_handler = <%p>, string_t *tenant = <%p>, jwt_t *jwt = <%p>", security_handler, tenant, jwt)
235 DEBUG_ENTRY(
"jwt_t *jwt = <%p>, string_t *header = <%p>, string_t *payload = <%p>, string_t **token = <%p>", jwt, header, payload, token)
264 DEBUG_ENTRY(
"string_t *header = <%p>, string_t *payload = <%p>, string_t **header_encoded = <%p>, string_t **payload_encoded = <%p>", header, payload, header_encoded,
288 DEBUG_ENTRY(
"string_t *string_a = <%p>, string_t *string_b = <%p>, string_t **joined = <%p>", string_a, string_b, joined)
306 if (string_array->
index == 3)
324 DEBUG_ENTRY(
"jwt_t *jwt = <%p>, string_t *header_and_payload = <%p>, string_t **signature = <%p>", jwt, header_and_payload, signature)
#define JWT_PAYLOAD_NAME_IAT
void string_destroy(string_t **string)
Destroys the allocated resources of the string.
E_MCL_ERROR_CODE string_array_add(string_array_t *array, string_t *string, mcl_bool_t destroy)
Adds an string_t string object into the array.
E_MCL_ERROR_CODE 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)
#define JWT_HEADER_NAME_TYPE
Memory module header file.
E_MCL_SECURITY_PROFILE
Definitions of different security profiles for onboarding.
Json util module header file.
mcl_size_t index
Item index.
#define JWT_PAYLOAD_NAME_JTI
char * buffer
Buffer of string handle.
json_t * payload
Payload of jwt.
static E_MCL_ERROR_CODE _join_with_dot(string_t *string_a, string_t *string_b, string_t **joined)
#define JWT_PAYLOAD_NAME_NBF
E_MCL_ERROR_CODE security_handler_generate_jti(string_t **jti)
To be used to generate the jti nonce.
static E_MCL_ERROR_CODE _calculate_signature(jwt_t *jwt, string_t *header_and_payload, string_t **signature)
void string_array_destroy(string_array_t **array)
Destroys the string array handle.
mcl_time_t issued_at
Time of issue.
E_MCL_ERROR_CODE json_util_start_array(json_t *root, const char *array_name, json_t **json_array)
This function creates an array in root.
static E_MCL_ERROR_CODE _create_self_issued_jwt_header(E_MCL_SECURITY_PROFILE security_profile, json_t **header)
#define MCL_FALSE
MCL bool type.
E_MCL_ERROR_CODE security_handler_base64_url_encode(const mcl_uint8_t *data, mcl_size_t data_size, string_t **encoded_data)
To be used to encode the given data in base64 URL encoding format.
Log utility module header file.
E_MCL_ERROR_CODE
MCL Error code definitions. Every function returning an error code uses this enum values...
security_handler_t * security_handler
Security handler.
void json_util_destroy(json_t **root)
This function destroys root.
#define JWT_EXPIRATION_TIME
static E_MCL_ERROR_CODE _add_schema_to_jwt(json_t *payload)
#define ASSERT_STATEMENT_CODE_MESSAGE(condition, statement, return_code,...)
#define JWT_HEADER_VALUE_ALG_SHARED_SECRET
static E_MCL_ERROR_CODE _generate_token(jwt_t *jwt, string_t *header, string_t *payload, string_t **token)
#define JWT_PAYLOAD_NAME_AUD
#define JWT_PAYLOAD_NAME_SUB
string_t * string_array_to_string(string_array_t *array)
To concatenate the strings in the array.
void json_util_finish_array(json_t **json_array)
This function destroys json_array data struct. But the array still exists in root json object...
string_t * jwt_get_token(jwt_t *jwt)
Used to generate the JWT Token as json string.
#define JWT_PAYLOAD_NAME_ISS
E_MCL_ERROR_CODE security_handler_rsa_sign(char *rsa_key, char *data, mcl_size_t data_size, mcl_uint8_t **signature, mcl_size_t *signature_size)
To be used to sign data with RSA key.
char * private_key
Private key.
#define ASSERT_CODE_MESSAGE(condition, return_code,...)
Definitions module header file.
E_MCL_ERROR_CODE string_initialize_dynamic(const char *value, mcl_size_t value_length, string_t **string)
Initializes a dynamic string_t object with the given value and length.
static E_MCL_ERROR_CODE _get_header_and_payload_encoded_base64_url(string_t *header, string_t *payload, string_t **header_encoded, string_t **payload_encoded)
mcl_size_t length
Length of buffer.
E_MCL_ERROR_CODE json_util_add_string(json_t *root, const char *object_name, const char *object_value)
This function adds string to root which can be object or array.
void jwt_destroy(jwt_t **jwt)
To destroy the JWT Handler.
#define JWT_HEADER_VALUE_TYP
#define JWT_PAYLOAD_VALUE_SCHEMAS
#define JWT_PAYLOAD_NAME_TEN
static E_MCL_ERROR_CODE _create_self_issued_jwt_payload(security_handler_t *security_handler, string_t *tenant, jwt_t *jwt)
E_MCL_ERROR_CODE jwt_initialize(security_handler_t *security_handler, E_MCL_SECURITY_PROFILE security_profile, string_t *tenant, jwt_t **jwt)
JWT Initializer.
json_t * header
Header of jwt.
Handle struct for security_handler module.
E_MCL_ERROR_CODE string_array_initialize(mcl_size_t count, string_array_t **array)
String array initialize method.
#define JWT_PAYLOAD_NAME_SCHEMAS
E_MCL_ERROR_CODE json_util_to_string(json_t *root, char **json_string)
This function gives the string of root in json format.
void time_util_get_time(mcl_time_t *current_time)
String array module header file.
E_MCL_SECURITY_PROFILE security_profile
Security profile.
#define JWT_PAYLOAD_NAME_EXP
#define JWT_HEADER_VALUE_ALG_RSA_3072
string_t * client_id
Client id.
E_MCL_ERROR_CODE json_util_initialize(E_JSON_TYPE json_type, json_t **root)
This function initializes the given root json.
#define JWT_HEADER_NAME_ALG
Time utility module header file.
This struct is used for json handling.
E_MCL_ERROR_CODE json_util_add_double(json_t *root, const char *object_name, const double number)
This function adds double number to root which can be object or array.
Strings with this type will NOT allocate its buffer during initialization (buffer only points of the ...
#define MCL_ERROR_RETURN(return_value,...)
#define JWT_PAYLOAD_VALUE_AUD