/*
 * parse an RSA JWK
 */
static apr_byte_t apr_jwk_parse_rsa(apr_pool_t *pool, apr_jwk_t *jwk) {

	jwk->type = APR_JWK_KEY_RSA;

	char *s_test = NULL;
	apr_jwt_get_string(pool, &jwk->value, "n", &s_test);
	if (s_test != NULL)
		return apr_jwk_parse_rsa_raw(pool, &jwk->value, &jwk->key.rsa);

	json_t *v = json_object_get(jwk->value.json, "x5c");
	if (v != NULL)
		return apr_jwk_parse_rsa_x5c(pool, jwk);

	return FALSE;
}
Exemple #2
0
/*
 * parse an RSA JWK
 */
static apr_byte_t apr_jwk_parse_rsa(apr_pool_t *pool, json_t *json,
		apr_jwk_t *jwk, apr_jwt_error_t *err) {

	jwk->type = APR_JWK_KEY_RSA;

	char *s_test = NULL;
	apr_jwt_get_string(pool, json, "n", FALSE, &s_test, NULL);
	if (s_test != NULL)
		return apr_jwk_parse_rsa_raw(pool, json, &jwk->key.rsa, err);

	json_t *v = json_object_get(json, "x5c");
	if (v != NULL)
		return apr_jwk_parse_rsa_x5c(pool, json, jwk, err);

	apr_jwt_error(err,
			"wrong or unsupported RSA key representation, no \"n\" or \"x5c\" key found in JWK JSON value");
	return FALSE;
}