[java-oidc-common] branch main updated: Remove incompatible key wrap credential key length check.
Phil Smart
philip.smart at jisc.ac.uk
Mon Mar 6 15:40:45 UTC 2023
This is an automated email from the git hooks/post-receive script.
philsmart 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=0bb72cea45ea7ac6ef18f12cbfb10efdf0ce02d4
The following commit(s) were added to refs/heads/main by this push:
new 0bb72ce Remove incompatible key wrap credential key length check.
0bb72ce is described below
commit 0bb72cea45ea7ac6ef18f12cbfb10efdf0ce02d4
Author: Phil Smart <philip.smart at jisc.ac.uk>
AuthorDate: Mon Mar 6 15:40:42 2023 +0000
Remove incompatible key wrap credential key length check.
---
.../impl/DefaultEncryptionParametersResolver.java | 8 ++----
.../DefaultEncryptionParametersResolverTest.java | 33 ++++++++++++++++++++++
2 files changed, 36 insertions(+), 5 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 883b3b1..f6115b8 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
@@ -384,9 +384,8 @@ public class DefaultEncryptionParametersResolver extends AbstractSecurityParamet
* Resolve a credential (key) compatible with one-of the supported algorithms. Algorithms are tried in the order
* they appear in the list of keyTransportAlgorithms (key management algorithms). The first compatible is returned.
*
- * <p>The first key that is compatible with the key transport algorithm is returned. That is, if two or more
- * keys support the same algorithm, the first key resolved will be returned. There is no guarantee which
- * key that is.</p>
+ * <p>If two or more keys support the same algorithm, the first key resolved will be returned.
+ * There is no guarantee which key that is.</p>
*
* @param criteria the set of criterion passed into additional source implementations
* @param keyTransportAlgorithms the set of supported key transport algorithms
@@ -498,8 +497,7 @@ public class DefaultEncryptionParametersResolver extends AbstractSecurityParamet
for (final Credential credential : keyTransportCredentials) {
- if (checkCredentialSupportsAlgorithm(credential, algorithm) &&
- checkCredentialSupportsEncryptionMethod(credential, method)) {
+ if (checkCredentialSupportsAlgorithm(credential, algorithm)) {
if (log.isDebugEnabled()) {
log.debug("Resolved key from '{}' for 'alg={}' and 'enc={}'",
CredentialConversionUtil.resolveKid(credential),
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 5c213e0..688316a 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
@@ -315,6 +315,39 @@ public class DefaultEncryptionParametersResolverTest {
}
+ /**
+ * The resolver only needs to resolve key wrapping credentials compatible with the key wrapping
+ * algorithm. It should not matter what the encryption method use is e.g. 192bit key for KW, and
+ * 256 bit key used for encryption, we only need to check the key for KW.
+ *
+ * @throws Exception on error
+ */
+ @Test
+ public void testBasicAESKeyWrap_KeyWrapKeySizeDifferentThanEncryptionMethod() throws Exception {
+ final CriteriaSet criteria = buildBasicCriteriaSet();
+ config.setKeyTransportEncryptionAlgorithms(
+ List.of(KeyManagementConstants.ALGO_ID_ALG_AES_192_KW));
+ config.setDataEncryptionAlgorithms(List.of(EncryptionConstants.ALGO_ID_ENC_ALG_A128CBC_HS256));
+
+ final List<Credential> creds = new ArrayList<>();
+ creds.add(TestCredentialHelper.createClientSecretCredential(SYMMETRIC_KEY)
+ .toEncryptionCredential(JWEAlgorithm.A192KW, EncryptionMethod.A128CBC_HS256));
+
+ config.setKEKCredentialResolver(new MockStaticFilteringCredentialResolver(creds));
+
+ final EncryptionParameters param = resolver.resolveSingle(criteria);
+
+ assertNotNull(param);
+ assertNotNull(param.getDataEncryptionAlgorithm());
+ assertNotNull(param.getKeyTransportEncryptionAlgorithm());
+ assertEquals(param.getDataEncryptionAlgorithm(),EncryptionConstants.ALGO_ID_ENC_ALG_A128CBC_HS256);
+ assertEquals(param.getKeyTransportEncryptionAlgorithm(),KeyManagementConstants.ALGO_ID_ALG_AES_192_KW);
+ assertNotNull(param.getKeyTransportEncryptionCredential());
+ assertNotNull(param.getKeyTransportEncryptionCredential().getSecretKey());
+ assertEquals(param.getKeyTransportEncryptionCredential().getSecretKey().getAlgorithm(),"AES");
+
+ }
+
/* The key is 256bit and does not support the 128bit enc. algo.*/
@Test
public void testBasicAESKeyWrap_WrongKeyLength() throws Exception {
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list