Skip to content

Commit 895b7d3

Browse files
committed
test: migrate test_jwk_private_key_parse from test.c to test_jose.c
Signed-off-by: Hans Zandbelt <[email protected]>
1 parent 556976e commit 895b7d3

File tree

2 files changed

+54
-64
lines changed

2 files changed

+54
-64
lines changed

test/test.c

Lines changed: 0 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -130,67 +130,6 @@ static char *_jwk_parse(apr_pool_t *pool, const char *s, oidc_jwk_t **jwk, oidc_
130130
return 0;
131131
}
132132

133-
static char *test_private_key_parse(apr_pool_t *pool) {
134-
oidc_jose_error_t err = {{'\0'}, 0, {'\0'}, {'\0'}};
135-
BIO *input = NULL;
136-
oidc_jwk_t *jwk = NULL;
137-
apr_byte_t isPrivateKey = TRUE;
138-
int result;
139-
char *json = NULL;
140-
141-
const char rsaPrivateKeyFile[512];
142-
const char ecPrivateKeyFile[512];
143-
144-
char *dir = getenv("srcdir") ? getenv("srcdir") : ".";
145-
snprintf((char *)rsaPrivateKeyFile, 512, "%s/%s", dir, "/private.pem");
146-
snprintf((char *)ecPrivateKeyFile, 512, "%s/%s", dir, "/ecpriv.key");
147-
148-
input = BIO_new(BIO_s_file());
149-
TST_ASSERT_ERR("test_private_key_parse_BIO_new_RSA_private_key", input != NULL, pool, err);
150-
151-
TST_ASSERT_ERR("test_private_key_parse_BIOread_filename_RSA_private_key",
152-
result = BIO_read_filename(input, rsaPrivateKeyFile), pool, err);
153-
154-
TST_ASSERT_ERR("oidc_jwk_pem_bio_to_jwk", oidc_jwk_pem_bio_to_jwk(pool, input, NULL, &jwk, isPrivateKey, &err),
155-
pool, err);
156-
BIO_free(input);
157-
158-
TST_ASSERT_ERR("oidc_jwk_to_json with RSA private key", oidc_jwk_to_json(pool, jwk, &json, &err), pool, err);
159-
TST_ASSERT_STR(
160-
"oidc_jwk_to_json with RSA private key output test", json,
161-
"{\"kty\":\"RSA\",\"kid\":\"IbLjLR7-C1q0-ypkueZxGIJwBQNaLg46DZMpnPW1kps\",\"e\":\"AQAB\",\"n\":"
162-
"\"iGeTXbfV5bMppx7o7qMLCuVIKqbBa_qOzBiNNpe0K8rjg7-1z9GCuSlqbZtM0_5BQ6bGonnSPD--"
163-
"PowhFdivS4WNA33O0Kl1tQ0wdH3TOnwueIO9ahfW4q0BGFvMObneK-tjwiNMj1l-cZt8pvuS-3LtTWIzC-"
164-
"hTZM4caUmy5olm5PVdmru6C6V5rxkbYBPITFSzl5mpuo_C6RV_MYRwAh60ghs2OEvIWDrJkZnYaF7sjHC9j-"
165-
"4kfcM5oY7Zhg8KuHyloudYNzlqjVAPd0MbkLkh1pa8fmHsnN6cgfXYtFK7Z8WjYDUAhTH1JjZCVSFN55A-51dgD4cQNzieLEEkJw\","
166-
"\"d\":\"Xc9d-kZERQVC0Dzh1b0sCwJE75Bf1fMr4hHAjJsovjV641ElqRdd4Borp9X2sJVcLTq1wWgmvmjYXgvhdTTg2f-"
167-
"vS4dqhPcGjM3VVUhzzPU6wIdZ7W0XzC1PY4E-ozTBJ1Nr-EhujuftnhRhVjYOkAAqU94FXVsaf2mBAKg-"
168-
"8WzrWx2MeWjfLcE79DmSL9Iw2areKVRGlKddIIPnHb-Mw9HB7ZCyVTC1v5sqhQPy6qPo8XHdQju_EYRlIOMksU8kcb20R_ezib_"
169-
"rHuVwJVlTNk6MvFUIj4ayXdX13Qy4kTBRiQM7pumPaypEE4CrAfTWP0AYnEwz_FGluOpMZNzoAQ\"}");
170-
oidc_jwk_destroy(jwk);
171-
172-
input = BIO_new(BIO_s_file());
173-
TST_ASSERT_ERR("test_private_key_parse_BIO_new_EC_private_key", input != NULL, pool, err);
174-
175-
TST_ASSERT_ERR("test_private_key_parse_BIOread_filename_EC_private_key",
176-
result = BIO_read_filename(input, ecPrivateKeyFile), pool, err);
177-
178-
TST_ASSERT_ERR("oidc_jwk_pem_bio_to_jwk", oidc_jwk_pem_bio_to_jwk(pool, input, NULL, &jwk, isPrivateKey, &err),
179-
pool, err);
180-
BIO_free(input);
181-
182-
TST_ASSERT_ERR("oidc_jwk_to_json with EC private key", oidc_jwk_to_json(pool, jwk, &json, &err), pool, err);
183-
TST_ASSERT_STR(
184-
"oidc_jwk_to_json with EC private key output test", json,
185-
"{\"kty\":\"EC\",\"kid\":\"-THDTumMGazABrYTb8xJoYOK2OPiWmho3D-nPC1dSYg\",\"crv\":\"P-521\",\"x\":"
186-
"\"AR6Eh9VhdLEA-rm5WR0_T0LjKysJuBkSoXaR8GjphHvoOTrljcACRsVlTES9FMkbxbNEs4JdxPgPJl9G-e9WEJTe\",\"y\":"
187-
"\"AammgflZaJuSdycK_ccUXkSXjNQd8NsqJuv9LFpk5Ys1OAiirWm6uktXG8ALNSxSffcurBq8zqZyZ141dV6qSzKQ\",\"d\":"
188-
"\"AKFwyWAZ2FiTTEofXXOC6I2GBPQeEyCnsVzo075hCOcebYgLpzSj8xWfkTqxsUq8FF5cxlKS3jym3qgsuV0Eb0wd\"}");
189-
oidc_jwk_destroy(jwk);
190-
191-
return 0;
192-
}
193-
194133
static char *test_jwt_parse(apr_pool_t *pool) {
195134

196135
// from http://tools.ietf.org/html/draft-ietf-oauth-json-web-token-20
@@ -1284,7 +1223,6 @@ static char *test_check_cookie_domain(request_rec *r) {
12841223

12851224
static char *all_tests(apr_pool_t *pool, request_rec *r) {
12861225
char *message;
1287-
TST_RUN(test_private_key_parse, pool);
12881226

12891227
TST_RUN(test_jwt_parse, pool);
12901228
TST_RUN(test_plaintext_jwt_parse, pool);

test/test_jose.c

Lines changed: 54 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -440,8 +440,8 @@ END_TEST
440440
START_TEST(test_jwk_public_key_parse) {
441441
apr_pool_t *pool = oidc_test_pool_get();
442442
oidc_jose_error_t err = {{'\0'}, 0, {'\0'}, {'\0'}};
443-
oidc_jwk_t *jwk, *jwkCert = NULL;
444-
BIO *input, *inputCert = NULL;
443+
oidc_jwk_t *jwk = NULL, *jwkCert = NULL;
444+
BIO *input = NULL, *inputCert = NULL;
445445
char *json = NULL;
446446
apr_byte_t isPrivateKey = FALSE;
447447

@@ -525,6 +525,57 @@ START_TEST(test_jwk_public_key_parse) {
525525
}
526526
END_TEST
527527

528+
START_TEST(test_jwk_private_key_parse) {
529+
apr_pool_t *pool = oidc_test_pool_get();
530+
oidc_jose_error_t err = {{'\0'}, 0, {'\0'}, {'\0'}};
531+
oidc_jwk_t *jwk = NULL;
532+
BIO *input = NULL, *inputCert = NULL;
533+
char *json = NULL;
534+
apr_byte_t isPrivateKey = TRUE;
535+
536+
const char rsaPrivateKeyFile[512];
537+
const char ecPrivateKeyFile[512];
538+
539+
char *dir = getenv("srcdir") ? getenv("srcdir") : ".";
540+
snprintf((char *)rsaPrivateKeyFile, 512, "%s/%s", dir, "/private.pem");
541+
snprintf((char *)ecPrivateKeyFile, 512, "%s/%s", dir, "/ecpriv.key");
542+
543+
input = BIO_new(BIO_s_file());
544+
ck_assert_ptr_nonnull(input);
545+
ck_assert_int_eq(BIO_read_filename(input, rsaPrivateKeyFile), 1);
546+
ck_assert_int_eq(oidc_jwk_pem_bio_to_jwk(pool, input, NULL, &jwk, isPrivateKey, &err), TRUE);
547+
BIO_free(input);
548+
549+
ck_assert_int_eq(oidc_jwk_to_json(pool, jwk, &json, &err), TRUE);
550+
ck_assert_str_eq(
551+
json,
552+
"{\"kty\":\"RSA\",\"kid\":\"IbLjLR7-C1q0-ypkueZxGIJwBQNaLg46DZMpnPW1kps\",\"e\":\"AQAB\",\"n\":"
553+
"\"iGeTXbfV5bMppx7o7qMLCuVIKqbBa_qOzBiNNpe0K8rjg7-1z9GCuSlqbZtM0_5BQ6bGonnSPD--"
554+
"PowhFdivS4WNA33O0Kl1tQ0wdH3TOnwueIO9ahfW4q0BGFvMObneK-tjwiNMj1l-cZt8pvuS-3LtTWIzC-"
555+
"hTZM4caUmy5olm5PVdmru6C6V5rxkbYBPITFSzl5mpuo_C6RV_MYRwAh60ghs2OEvIWDrJkZnYaF7sjHC9j-"
556+
"4kfcM5oY7Zhg8KuHyloudYNzlqjVAPd0MbkLkh1pa8fmHsnN6cgfXYtFK7Z8WjYDUAhTH1JjZCVSFN55A-51dgD4cQNzieLEEkJw\","
557+
"\"d\":\"Xc9d-kZERQVC0Dzh1b0sCwJE75Bf1fMr4hHAjJsovjV641ElqRdd4Borp9X2sJVcLTq1wWgmvmjYXgvhdTTg2f-"
558+
"vS4dqhPcGjM3VVUhzzPU6wIdZ7W0XzC1PY4E-ozTBJ1Nr-EhujuftnhRhVjYOkAAqU94FXVsaf2mBAKg-"
559+
"8WzrWx2MeWjfLcE79DmSL9Iw2areKVRGlKddIIPnHb-Mw9HB7ZCyVTC1v5sqhQPy6qPo8XHdQju_EYRlIOMksU8kcb20R_ezib_"
560+
"rHuVwJVlTNk6MvFUIj4ayXdX13Qy4kTBRiQM7pumPaypEE4CrAfTWP0AYnEwz_FGluOpMZNzoAQ\"}");
561+
oidc_jwk_destroy(jwk);
562+
563+
inputCert = BIO_new(BIO_s_file());
564+
ck_assert_ptr_nonnull(inputCert);
565+
ck_assert_int_eq(BIO_read_filename(inputCert, ecPrivateKeyFile), 1);
566+
ck_assert_int_eq(oidc_jwk_pem_bio_to_jwk(pool, input, NULL, &jwk, isPrivateKey, &err), TRUE);
567+
BIO_free(input);
568+
569+
ck_assert_int_eq(oidc_jwk_to_json(pool, jwk, &json, &err), TRUE);
570+
ck_assert_str_eq(
571+
json, "{\"kty\":\"EC\",\"kid\":\"-THDTumMGazABrYTb8xJoYOK2OPiWmho3D-nPC1dSYg\",\"crv\":\"P-521\",\"x\":"
572+
"\"AR6Eh9VhdLEA-rm5WR0_T0LjKysJuBkSoXaR8GjphHvoOTrljcACRsVlTES9FMkbxbNEs4JdxPgPJl9G-e9WEJTe\",\"y\":"
573+
"\"AammgflZaJuSdycK_ccUXkSXjNQd8NsqJuv9LFpk5Ys1OAiirWm6uktXG8ALNSxSffcurBq8zqZyZ141dV6qSzKQ\",\"d\":"
574+
"\"AKFwyWAZ2FiTTEofXXOC6I2GBPQeEyCnsVzo075hCOcebYgLpzSj8xWfkTqxsUq8FF5cxlKS3jym3qgsuV0Eb0wd\"}");
575+
oidc_jwk_destroy(jwk);
576+
}
577+
END_TEST
578+
528579
START_TEST(test_jwk_list_destroy) {
529580
apr_pool_t *pool = oidc_test_pool_get();
530581
apr_array_header_t *arr = apr_array_make(pool, 2, sizeof(const oidc_jwk_t *));
@@ -603,6 +654,7 @@ int main(void) {
603654
tcase_add_test(core, test_alg2keysize_and_hdr_get_and_jwt_parse);
604655
tcase_add_test(core, test_jwk_json_x5c_parse);
605656
tcase_add_test(core, test_jwk_public_key_parse);
657+
tcase_add_test(core, test_jwk_private_key_parse);
606658

607659
Suite *s = suite_create("jose");
608660
suite_add_tcase(s, sup);

0 commit comments

Comments
 (0)