4545#include "cfg/cfg_int.h"
4646#include "cfg/provider.h"
4747#include "check_util.h"
48+ #include "jose.h"
4849#include "util.h"
4950
5051// provider
@@ -177,6 +178,40 @@ START_TEST(test_cmd_cookie_same_site) {
177178}
178179END_TEST
179180
181+ START_TEST (test_cmd_oauth_verify_shared_keys ) {
182+ cmd_parms * cmd = oidc_test_cmd_get (OIDCOAuthVerifySharedKeys );
183+ oidc_cfg_t * cfg = oidc_test_cfg_get ();
184+ apr_hash_t * keys = NULL ;
185+ oidc_jwk_t * jwk = NULL ;
186+ apr_hash_index_t * hi = NULL ;
187+
188+ keys = oidc_cfg_oauth_verify_shared_keys_get (cfg );
189+ ck_assert_ptr_null (keys );
190+
191+ ck_assert_ptr_null (oidc_cmd_oauth_verify_shared_keys_set (cmd , NULL , "mysecret" ));
192+ keys = oidc_cfg_oauth_verify_shared_keys_get (cfg );
193+ ck_assert_ptr_nonnull (keys );
194+ ck_assert_int_eq (apr_hash_count (keys ), 1 );
195+ hi = apr_hash_first (cmd -> pool , keys );
196+ apr_hash_this (hi , NULL , NULL , (void * * )& jwk );
197+ ck_assert_ptr_nonnull (jwk );
198+ ck_assert_int_eq (jwk -> kty , CJOSE_JWK_KTY_OCT );
199+ ck_assert_ptr_null (jwk -> use );
200+
201+ ck_assert_ptr_null (oidc_cmd_oauth_verify_shared_keys_set (cmd , NULL , "enc:mykid#mysecret2" ));
202+ keys = oidc_cfg_oauth_verify_shared_keys_get (cfg );
203+ ck_assert_ptr_nonnull (keys );
204+ ck_assert_int_eq (apr_hash_count (keys ), 2 );
205+ jwk = apr_hash_get (keys , "mykid" , APR_HASH_KEY_STRING );
206+ ck_assert_ptr_nonnull (jwk );
207+ ck_assert_int_eq (jwk -> kty , CJOSE_JWK_KTY_OCT );
208+ ck_assert_str_eq (jwk -> use , "enc" );
209+ ck_assert_str_eq (jwk -> kid , "mykid" );
210+
211+ oidc_jwk_list_destroy_hash (keys );
212+ }
213+ END_TEST
214+
180215int main (void ) {
181216 TCase * core = tcase_create ("core" );
182217 tcase_add_checked_fixture (core , oidc_test_setup , oidc_test_teardown );
@@ -186,6 +221,7 @@ int main(void) {
186221 tcase_add_test (core , test_cfg_cache_connections_ttl );
187222#endif
188223 tcase_add_test (core , test_cmd_cookie_same_site );
224+ tcase_add_test (core , test_cmd_oauth_verify_shared_keys );
189225
190226 Suite * s = suite_create ("cfg" );
191227 suite_add_tcase (s , core );
0 commit comments