[java-oidc-common] branch main updated: Fix a NPE when no data encryption algorithm is set.
Henri Mikkonen
henri.mikkonen at iki.fi
Fri Mar 17 15:57:49 UTC 2023
This is an automated email from the git hooks/post-receive script.
hjmikkon pushed a commit to branch main
in repository java-oidc-common.
View the commit online:
http://git.shibboleth.net/view/?p=java-oidc-common.git;a=commit;h=6568bba78facef4ccaf1d1afb3b8912e57f3df49
The following commit(s) were added to refs/heads/main by this push:
new 6568bba Fix a NPE when no data encryption algorithm is set.
6568bba is described below
commit 6568bba78facef4ccaf1d1afb3b8912e57f3df49
Author: Henri Mikkonen <henri.mikkonen at iki.fi>
AuthorDate: Fri Mar 17 17:57:14 2023 +0200
Fix a NPE when no data encryption algorithm is set.
---
.../impl/DefaultEncryptionParametersResolver.java | 4 +++
.../DefaultEncryptionParametersResolverTest.java | 42 ++++++++++++++++++----
2 files changed, 40 insertions(+), 6 deletions(-)
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jose/impl/DefaultEncryptionParametersResolver.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jose/impl/DefaultEncryptionParametersResolver.java
index 4495296..7e206d5 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jose/impl/DefaultEncryptionParametersResolver.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jose/impl/DefaultEncryptionParametersResolver.java
@@ -530,6 +530,10 @@ public class DefaultEncryptionParametersResolver extends AbstractSecurityParamet
log.debug("Looking for encryption parameters for algorithm '{}'", algorithm);
final EncryptionMethod encryptionMethod = resolveEncryptionMethod(dataEncryptionAlgorithms);
+ if (encryptionMethod == null) {
+ log.debug("Could not resolve encryption method");
+ return false;
+ }
final List<Credential> keyTransportCredentials = getEffectiveKeyTransportCredentials(
buildKeyManagmentAlgorithmCriteria(criteria, algorithm, encryptionMethod));
diff --git a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jose/impl/DefaultEncryptionParametersResolverTest.java b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jose/impl/DefaultEncryptionParametersResolverTest.java
index ddb1020..502c423 100644
--- a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jose/impl/DefaultEncryptionParametersResolverTest.java
+++ b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jose/impl/DefaultEncryptionParametersResolverTest.java
@@ -125,20 +125,28 @@ public class DefaultEncryptionParametersResolverTest {
- private CriteriaSet buildBasicCriteriaSet() throws Exception {
+ private CriteriaSet buildBasicCriteriaSet() throws Exception {
+ return buildBasicCriteriaSet(true);
+ }
+
+ private CriteriaSet buildBasicCriteriaSet(final boolean addDataEncryptionAlgs) throws Exception {
config = new BasicEncryptionConfiguration();
config.setKeyTransportEncryptionAlgorithms(
List.of(KeyManagementConstants.ALGO_ID_ALG_AES_128_KW, KeyManagementConstants.ALGO_ID_ALG_RSA_OAEP_256,
KeyManagementConstants.ALGO_ID_ALG_ECDH_ES_AES_192_KW, KeyManagementConstants.ALGO_ID_ALG_RSA_OAEP));
- config.setDataEncryptionAlgorithms(
- List.of(EncryptionConstants.ALGO_ID_ENC_ALG_A128CBC_HS256,EncryptionConstants.ALGO_ID_ENC_ALG_A128GCM,
- EncryptionConstants.ALGO_ID_ENC_ALG_A256CBC_HS512));
+ if (addDataEncryptionAlgs) {
+ config.setDataEncryptionAlgorithms(
+ List.of(EncryptionConstants.ALGO_ID_ENC_ALG_A128CBC_HS256,EncryptionConstants.ALGO_ID_ENC_ALG_A128GCM,
+ EncryptionConstants.ALGO_ID_ENC_ALG_A256CBC_HS512));
+ } else {
+ config.setDataEncryptionAlgorithms(Collections.emptyList());
+ }
final CriteriaSet criteria = new CriteriaSet(new EncryptionConfigurationCriterion(List.of(config)));
criteria.add(new UsageCriterion(UsageType.ENCRYPTION));
return criteria;
}
-
+
@Test
public void testBasicRSA() throws Exception {
final CriteriaSet criteria = buildBasicCriteriaSet();
@@ -170,7 +178,29 @@ public class DefaultEncryptionParametersResolverTest {
assertEquals(param.getKeyTransportEncryptionCredential().getPublicKey().getAlgorithm(),"RSA");
}
-
+
+ @Test
+ public void testBasicRSA_noDataEncryptionAlgs() throws Exception {
+ final CriteriaSet criteria = buildBasicCriteriaSet(false);
+ config.setKeyTransportEncryptionAlgorithms(
+ List.of(KeyManagementConstants.ALGO_ID_ALG_RSA_OAEP_256));
+
+ final List<Credential> creds = new ArrayList<>();
+ final RSAKey key = new RSAKeyGenerator(2048)
+ .algorithm(JWEAlgorithm.RSA_OAEP_256)
+ .keyUse(KeyUse.ENCRYPTION)
+ .keyID("mock-key-rsa")
+ .generate();
+ creds.add(TestCredentialHelper.createKeyEncryptionCredential(key));
+ creds.add(TestCredentialHelper.createClientSecretCredential(SYMMETRIC_KEY)
+ .toEncryptionCredential(JWEAlgorithm.A256KW, EncryptionMethod.A128CBC_HS256));
+
+
+ config.setKEKCredentialResolver(new MockStaticFilteringCredentialResolver(creds));
+
+ assertNull(resolver.resolveSingle(criteria));
+ }
+
@Test
public void testBasicRSA_WrongAlgorithmInConfig() throws Exception {
final CriteriaSet criteria = buildBasicCriteriaSet();
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list