Ready to implement JWT signature
This commit is contained in:
parent
fa431857ee
commit
77c3702986
@ -225,3 +225,9 @@ char *crypto_encode_base64_safe_url(const char *src, size_t srclen)
|
|||||||
|
|
||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char *crypto_sign_sha256_payload(const char *src, const size_t src_len, size_t *srclen)
|
||||||
|
{
|
||||||
|
*srclen = 10;
|
||||||
|
return calloc(1, 10);
|
||||||
|
}
|
@ -39,6 +39,11 @@ extern "C"
|
|||||||
*/
|
*/
|
||||||
char *crypto_encode_base64_safe_url(const char *src, size_t srclen);
|
char *crypto_encode_base64_safe_url(const char *src, size_t srclen);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sign some data using sha256
|
||||||
|
*/
|
||||||
|
char *crypto_sign_sha256_payload(const char *src, const size_t src_len, size_t *srclen);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -77,10 +77,39 @@ char *jwt_gen(cJSON *payload)
|
|||||||
free(header_b64);
|
free(header_b64);
|
||||||
free(body_b64);
|
free(body_b64);
|
||||||
|
|
||||||
// TODO : wip
|
size_t sig_len = 0;
|
||||||
printf("unsigned = %s\n", unsigned_jwt);
|
char *sig = crypto_sign_sha256_payload(unsigned_jwt, strlen(unsigned_jwt), &sig_len);
|
||||||
free(unsigned_jwt);
|
|
||||||
|
|
||||||
// TODO : continue
|
if (!sig || sig_len == 0)
|
||||||
return strdup("TODO:)");
|
{
|
||||||
|
ESP_LOGE(TAG, "Failed to sign JWT!");
|
||||||
|
if (sig)
|
||||||
|
free(sig);
|
||||||
|
free(unsigned_jwt);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
char *sig_b64 = crypto_encode_base64_safe_url(sig, sig_len);
|
||||||
|
free(sig);
|
||||||
|
if (!sig_b64)
|
||||||
|
{
|
||||||
|
ESP_LOGE(TAG, "Failed to encode base64 signature to base64!");
|
||||||
|
free(unsigned_jwt);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
char *jwt = calloc(1, 1 + strlen(unsigned_jwt) + 1 + strlen(sig_b64));
|
||||||
|
if (!jwt)
|
||||||
|
{
|
||||||
|
ESP_LOGE(TAG, "Failed to allocate memory to store final JWT!");
|
||||||
|
free(unsigned_jwt);
|
||||||
|
free(sig_b64);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
sprintf(jwt, "%s.%s", unsigned_jwt, sig_b64);
|
||||||
|
|
||||||
|
free(unsigned_jwt);
|
||||||
|
free(sig_b64);
|
||||||
|
|
||||||
|
return jwt;
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user