[java-oidc-common] branch main updated: Round of null cleanup.
Henri Mikkonen
henri.mikkonen at iki.fi
Tue Apr 2 06:24:21 UTC 2024
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=08a7c27aa5398ed79af77db96cb3e0c2a7abc6ea
The following commit(s) were added to refs/heads/main by this push:
new 08a7c27 Round of null cleanup.
08a7c27 is described below
commit 08a7c27aa5398ed79af77db96cb3e0c2a7abc6ea
Author: Henri Mikkonen <henri.mikkonen at iki.fi>
AuthorDate: Tue Apr 2 09:24:14 2024 +0300
Round of null cleanup.
---
.../impl/OIDCByteAttributeTranscoder.java | 6 ++--
.../impl/OIDCScopedStringAttributeTranscoder.java | 4 ++-
.../impl/OIDCStringAttributeTranscoder.java | 23 +++++++++-----
.../impl/OIDCByteAttributeTranscoderTest.java | 7 ++--
.../OIDCScopedStringAttributeTranscoderTest.java | 9 ++++++
.../impl/OIDCStringAttributeTranscoderTest.java | 6 ++++
.../descriptors/EncryptionA128CBCHS256.java | 4 ++-
.../algorithm/descriptors/EncryptionA128GCM.java | 4 ++-
.../descriptors/EncryptionA192CBCHS384.java | 4 ++-
.../algorithm/descriptors/EncryptionA192GCM.java | 4 ++-
.../descriptors/EncryptionA256CBCHS512.java | 4 ++-
.../algorithm/descriptors/EncryptionA256GCM.java | 4 ++-
.../algorithm/descriptors/KeyTransportRSA15.java | 4 ++-
.../algorithm/descriptors/KeyTransportRSAOAEP.java | 4 ++-
.../descriptors/KeyTransportRSAOAEP256.java | 4 ++-
.../descriptors/KeyTransportRSAOAEP384.java | 4 ++-
.../descriptors/KeyTransportRSAOAEP512.java | 4 ++-
.../net/shibboleth/oidc/jwk/RemoteJwkSetCache.java | 4 ++-
.../oidc/jwk/support/RemoteJwkUtils.java | 6 +++-
.../shibboleth/oidc/security/JWSAssemblyUtils.java | 9 ++++--
...piringJWTSharedSecretCredentialFactoryBean.java | 8 +++--
.../credential/BasicJWKCredentialFactoryBean.java | 26 ++++++++++++---
.../credential/DefaultClientSecretCredential.java | 8 ++---
.../security/credential/JWACredentialSupport.java | 4 ++-
.../security/credential/JWKCredentialSupport.java | 12 ++++---
.../shibboleth/oidc/jwk/RemoteJwkSetCacheTest.java | 2 +-
.../credential/JWACredentialSupportTest.java | 1 +
...bstractClientInformationCredentialResolver.java | 14 +++++---
.../impl/BasicJOSEObjectCredentialResolver.java | 37 +++++++++++++++-------
...tInformationClientSecretCredentialResolver.java | 5 ---
.../oidc/metadata/MetadataManagementData.java | 2 +-
.../ProviderMetadataProviderContainer.java | 6 +++-
.../RelyingPartyClientInformationProvider.java | 6 +++-
.../ext/impl/provider/InlineJwksProvider.java | 15 +++++++--
.../MetadataPolicyViaLocationFetchingStrategy.java | 1 +
.../ClientInformationResolverServiceStrategy.java | 4 ++-
.../ProviderMetadataResolverServiceStrategy.java | 4 ++-
.../impl/OIDCMetadataPolicyResolverTest.java | 5 ++-
...loadClientResolverServiceConfigurationTest.java | 4 ++-
...erMetadataResolverServiceConfigurationTest.java | 4 ++-
40 files changed, 206 insertions(+), 80 deletions(-)
diff --git a/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/transcoding/impl/OIDCByteAttributeTranscoder.java b/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/transcoding/impl/OIDCByteAttributeTranscoder.java
index 3703de8..662c306 100644
--- a/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/transcoding/impl/OIDCByteAttributeTranscoder.java
+++ b/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/transcoding/impl/OIDCByteAttributeTranscoder.java
@@ -57,10 +57,10 @@ public class OIDCByteAttributeTranscoder extends AbstractOIDCAttributeTranscoder
String attributeString = "";
final JSONArray array = new JSONArray();
for (final IdPAttributeValue value : attribute.getValues()) {
- if (value instanceof ByteAttributeValue && ((ByteAttributeValue) value).getValue() != null) {
+ if (value instanceof ByteAttributeValue byteAttrValue) {
if (asInteger) {
final JSONArray innerArray = new JSONArray();
- for (final byte byteValue : ((ByteAttributeValue) value).getValue()) {
+ for (final byte byteValue : byteAttrValue.getValue()) {
innerArray.add((int) byteValue);
}
// each byte array is converted to JSON int array and placed into JSON array.
@@ -71,7 +71,7 @@ public class OIDCByteAttributeTranscoder extends AbstractOIDCAttributeTranscoder
}
try {
attributeString +=
- Base64Support.encode(((ByteAttributeValue) value).getValue(), Base64Support.UNCHUNKED);
+ Base64Support.encode(byteAttrValue.getValue(), Base64Support.UNCHUNKED);
} catch (final EncodingException e) {
//convert exception and throw if any of the values can not be base64 encoded
throw new AttributeEncodingException("Attribtue value could not be base64 encoded",e);
diff --git a/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/transcoding/impl/OIDCScopedStringAttributeTranscoder.java b/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/transcoding/impl/OIDCScopedStringAttributeTranscoder.java
index e9705d0..18c6aad 100644
--- a/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/transcoding/impl/OIDCScopedStringAttributeTranscoder.java
+++ b/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/transcoding/impl/OIDCScopedStringAttributeTranscoder.java
@@ -115,8 +115,10 @@ public class OIDCScopedStringAttributeTranscoder extends AbstractOIDCAttributeTr
log.warn("Ignoring value '{}' with no scope delimiter ({})", stringValue, scopeDelimiter);
return CollectionSupport.emptyList();
}
+ final String scope = stringValue.substring(offset + scopeDelimiter.length());
+ assert scope != null;
return CollectionSupport.listOf(ScopedStringAttributeValue.valueOf(stringValue.substring(0, offset),
- stringValue.substring(offset + scopeDelimiter.length())));
+ scope));
} else if (input instanceof JSONArray) {
// Deal with array recursively
final JSONArray array = (JSONArray)input;
diff --git a/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/transcoding/impl/OIDCStringAttributeTranscoder.java b/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/transcoding/impl/OIDCStringAttributeTranscoder.java
index 32c2460..268cc8a 100644
--- a/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/transcoding/impl/OIDCStringAttributeTranscoder.java
+++ b/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/transcoding/impl/OIDCStringAttributeTranscoder.java
@@ -91,13 +91,16 @@ public class OIDCStringAttributeTranscoder extends AbstractOIDCAttributeTranscod
if (attribute.getValues().isEmpty()) {
return null;
}
-
- final List<?> values = transformValues(rule,
- attribute.getValues()
- .stream()
- .filter(StringAttributeValue.class::isInstance)
- .map(StringAttributeValue.class::cast)
- .map(StringAttributeValue::getValue));
+
+ final Stream<String> valuesStream = attribute.getValues()
+ .stream()
+ .filter(StringAttributeValue.class::isInstance)
+ .map(StringAttributeValue.class::cast)
+ .map(StringAttributeValue::getValue);
+ if (valuesStream == null) {
+ return null;
+ }
+ final List<?> values = transformValues(rule, valuesStream);
// Handle String values parsed into JSON.
final Boolean asObject = rule.getOrDefault(PROP_ASOBJECT, Boolean.class, false);
@@ -235,11 +238,15 @@ public class OIDCStringAttributeTranscoder extends AbstractOIDCAttributeTranscod
*/
@Nonnull private Object toJSONObject(@Nonnull @NotEmpty final String value) throws AttributeEncodingException {
try {
- return new JSONParser(JSONParser.MODE_PERMISSIVE).parse(value);
+ final Object parsedObject = new JSONParser(JSONParser.MODE_PERMISSIVE).parse(value);
+ if (parsedObject != null) {
+ return parsedObject;
+ }
} catch (final ParseException e) {
log.trace("Unable to parse string '{}' into JSONObject", value, e);
throw new AttributeEncodingException("Unable to parse string into JSONObject", e);
}
+ throw new AttributeEncodingException("Unable to parse string into JSONObject: parser returned null object");
}
/**
diff --git a/oidc-common-attribute-impl/src/test/java/net/shibboleth/oidc/attribute/transcoding/impl/OIDCByteAttributeTranscoderTest.java b/oidc-common-attribute-impl/src/test/java/net/shibboleth/oidc/attribute/transcoding/impl/OIDCByteAttributeTranscoderTest.java
index eba29a4..c409f7a 100644
--- a/oidc-common-attribute-impl/src/test/java/net/shibboleth/oidc/attribute/transcoding/impl/OIDCByteAttributeTranscoderTest.java
+++ b/oidc-common-attribute-impl/src/test/java/net/shibboleth/oidc/attribute/transcoding/impl/OIDCByteAttributeTranscoderTest.java
@@ -83,7 +83,8 @@ public class OIDCByteAttributeTranscoderTest {
@Test(expectedExceptions=AttributeEncodingException.class)
public void testNoValues() throws ComponentInitializationException, AttributeEncodingException {
-
+
+ assert ruleset != null;
registry.setTranscoderRegistry(CollectionSupport.singletonList(new TranscodingRule(ruleset)));
registry.setApplicationContext(new MockApplicationContext());
registry.initialize();
@@ -101,6 +102,7 @@ public class OIDCByteAttributeTranscoderTest {
@Test
public void testEncoding() throws ComponentInitializationException, AttributeEncodingException, DecodingException {
+ assert ruleset != null;
registry.setTranscoderRegistry(CollectionSupport.singletonList(new TranscodingRule(ruleset)));
registry.setApplicationContext(new MockApplicationContext());
registry.initialize();
@@ -121,7 +123,7 @@ public class OIDCByteAttributeTranscoderTest {
null, inputAttribute, JSONObject.class, tr);
assert object != null;
final String base64Coded = (String) object.get(ATTR_NAME);
- Assert.assertEquals(bytes, Base64Support.decode(base64Coded));
+ Assert.assertEquals(bytes, base64Coded == null ? null : Base64Support.decode(base64Coded));
}
@Test
@@ -159,6 +161,7 @@ public class OIDCByteAttributeTranscoderTest {
@Test(expectedExceptions=AttributeEncodingException.class)
public void testEncodingWrongType() throws ComponentInitializationException, AttributeEncodingException {
+ assert ruleset != null;
registry.setTranscoderRegistry(CollectionSupport.singletonList(new TranscodingRule(ruleset)));
registry.setApplicationContext(new MockApplicationContext());
registry.initialize();
diff --git a/oidc-common-attribute-impl/src/test/java/net/shibboleth/oidc/attribute/transcoding/impl/OIDCScopedStringAttributeTranscoderTest.java b/oidc-common-attribute-impl/src/test/java/net/shibboleth/oidc/attribute/transcoding/impl/OIDCScopedStringAttributeTranscoderTest.java
index 2bd95ac..a790ffe 100644
--- a/oidc-common-attribute-impl/src/test/java/net/shibboleth/oidc/attribute/transcoding/impl/OIDCScopedStringAttributeTranscoderTest.java
+++ b/oidc-common-attribute-impl/src/test/java/net/shibboleth/oidc/attribute/transcoding/impl/OIDCScopedStringAttributeTranscoderTest.java
@@ -106,6 +106,7 @@ public class OIDCScopedStringAttributeTranscoderTest {
@Test
public void testEncoding() throws ComponentInitializationException, AttributeEncodingException {
+ assert ruleset != null;
registry.setTranscoderRegistry(CollectionSupport.singletonList(new TranscodingRule(ruleset)));
registry.setApplicationContext(new MockApplicationContext());
registry.initialize();
@@ -139,6 +140,7 @@ public class OIDCScopedStringAttributeTranscoderTest {
ruleset.put(OIDCAttributeTranscoder.PROP_ASARRAY, true);
ruleset.put(OIDCScopedStringAttributeTranscoder.PROP_SCOPE_DELIMITER, ":");
+ assert ruleset != null;
registry.setTranscoderRegistry(CollectionSupport.singletonList(new TranscodingRule(ruleset)));
registry.setApplicationContext(new MockApplicationContext());
registry.initialize();
@@ -169,6 +171,7 @@ public class OIDCScopedStringAttributeTranscoderTest {
@Test(expectedExceptions=AttributeEncodingException.class)
public void testEncodingWrongType() throws ComponentInitializationException, AttributeEncodingException {
+ assert ruleset != null;
registry.setTranscoderRegistry(CollectionSupport.singletonList(new TranscodingRule(ruleset)));
registry.setApplicationContext(new MockApplicationContext());
registry.initialize();
@@ -192,6 +195,7 @@ public class OIDCScopedStringAttributeTranscoderTest {
@Test
public void testDecodingNoValues() throws ComponentInitializationException, AttributeDecodingException {
+ assert ruleset != null;
registry.setTranscoderRegistry(CollectionSupport.singletonList(new TranscodingRule(ruleset)));
registry.setApplicationContext(new MockApplicationContext());
registry.initialize();
@@ -216,6 +220,7 @@ public class OIDCScopedStringAttributeTranscoderTest {
@Test
public void testDecodingScopedString() throws ComponentInitializationException, AttributeDecodingException {
+ assert ruleset != null;
registry.setTranscoderRegistry(CollectionSupport.singletonList(new TranscodingRule(ruleset)));
registry.setApplicationContext(new MockApplicationContext());
registry.initialize();
@@ -275,6 +280,7 @@ public class OIDCScopedStringAttributeTranscoderTest {
@Test
public void testDecodingUnScopedString() throws ComponentInitializationException, AttributeDecodingException {
+ assert ruleset != null;
registry.setTranscoderRegistry(CollectionSupport.singletonList(new TranscodingRule(ruleset)));
registry.setApplicationContext(new MockApplicationContext());
registry.initialize();
@@ -300,6 +306,7 @@ public class OIDCScopedStringAttributeTranscoderTest {
@Test
public void testDecodingWrongType() throws ComponentInitializationException, AttributeDecodingException {
+ assert ruleset != null;
registry.setTranscoderRegistry(CollectionSupport.singletonList(new TranscodingRule(ruleset)));
registry.setApplicationContext(new MockApplicationContext());
registry.initialize();
@@ -359,6 +366,7 @@ public class OIDCScopedStringAttributeTranscoderTest {
@Test
public void testDecodingComplexArray() throws ComponentInitializationException, AttributeDecodingException {
+ assert ruleset != null;
registry.setTranscoderRegistry(CollectionSupport.singletonList(new TranscodingRule(ruleset)));
registry.setApplicationContext(new MockApplicationContext());
registry.initialize();
@@ -396,6 +404,7 @@ public class OIDCScopedStringAttributeTranscoderTest {
public void testDecodingComplexArray_NumberNotSupported()
throws ComponentInitializationException, AttributeDecodingException {
+ assert ruleset != null;
registry.setTranscoderRegistry(CollectionSupport.singletonList(new TranscodingRule(ruleset)));
registry.setApplicationContext(new MockApplicationContext());
registry.initialize();
diff --git a/oidc-common-attribute-impl/src/test/java/net/shibboleth/oidc/attribute/transcoding/impl/OIDCStringAttributeTranscoderTest.java b/oidc-common-attribute-impl/src/test/java/net/shibboleth/oidc/attribute/transcoding/impl/OIDCStringAttributeTranscoderTest.java
index 4753f5f..f7ccb07 100644
--- a/oidc-common-attribute-impl/src/test/java/net/shibboleth/oidc/attribute/transcoding/impl/OIDCStringAttributeTranscoderTest.java
+++ b/oidc-common-attribute-impl/src/test/java/net/shibboleth/oidc/attribute/transcoding/impl/OIDCStringAttributeTranscoderTest.java
@@ -247,6 +247,7 @@ public class OIDCStringAttributeTranscoderTest {
@Test(expectedExceptions=AttributeEncodingException.class)
public void testEncodingWrongType() throws ComponentInitializationException, AttributeEncodingException {
+ assert ruleset != null;
registry.setTranscoderRegistry(CollectionSupport.singletonList(new TranscodingRule(ruleset)));
registry.setApplicationContext(new MockApplicationContext());
registry.initialize();
@@ -269,6 +270,7 @@ public class OIDCStringAttributeTranscoderTest {
@Test
public void testDecodingString() throws ComponentInitializationException, AttributeDecodingException {
+ assert ruleset != null;
registry.setTranscoderRegistry(CollectionSupport.singletonList(new TranscodingRule(ruleset)));
registry.setApplicationContext(new MockApplicationContext());
registry.initialize();
@@ -295,6 +297,7 @@ public class OIDCStringAttributeTranscoderTest {
@Test
public void testDecodingNoValues() throws ComponentInitializationException, AttributeDecodingException {
+ assert ruleset != null;
registry.setTranscoderRegistry(CollectionSupport.singletonList(new TranscodingRule(ruleset)));
registry.setApplicationContext(new MockApplicationContext());
registry.initialize();
@@ -320,6 +323,7 @@ public class OIDCStringAttributeTranscoderTest {
@Test
public void testDecodingWrongType_ClaimsRequest() throws ComponentInitializationException, AttributeDecodingException {
+ assert ruleset != null;
registry.setTranscoderRegistry(CollectionSupport.singletonList(new TranscodingRule(ruleset)));
registry.setApplicationContext(new MockApplicationContext());
registry.initialize();
@@ -348,6 +352,7 @@ public class OIDCStringAttributeTranscoderTest {
@Test
public void testDecodingStringArray() throws ComponentInitializationException, AttributeDecodingException {
+ assert ruleset != null;
registry.setTranscoderRegistry(CollectionSupport.singletonList(new TranscodingRule(ruleset)));
registry.setApplicationContext(new MockApplicationContext());
registry.initialize();
@@ -719,6 +724,7 @@ public class OIDCStringAttributeTranscoderTest {
@Test
public void testDecodingWrongType() throws ComponentInitializationException, AttributeDecodingException {
+ assert ruleset != null;
registry.setTranscoderRegistry(CollectionSupport.singletonList(new TranscodingRule(ruleset)));
registry.setApplicationContext(new MockApplicationContext());
registry.initialize();
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/EncryptionA128CBCHS256.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/EncryptionA128CBCHS256.java
index 5b5c5a2..5ab1cc9 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/EncryptionA128CBCHS256.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/EncryptionA128CBCHS256.java
@@ -48,7 +48,9 @@ public final class EncryptionA128CBCHS256 implements BlockEncryptionAlgorithm {
/** {@inheritDoc} */
@Nonnull
public String getJCAAlgorithmID() {
- return String.format("%s/%s/%s", getKey(), getCipherMode(), getPadding());
+ final String result = String.format("%s/%s/%s", getKey(), getCipherMode(), getPadding());
+ assert result != null;
+ return result;
}
/** {@inheritDoc} */
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/EncryptionA128GCM.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/EncryptionA128GCM.java
index c4cfc9c..37a78cb 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/EncryptionA128GCM.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/EncryptionA128GCM.java
@@ -47,7 +47,9 @@ public final class EncryptionA128GCM implements BlockEncryptionAlgorithm {
/** {@inheritDoc} */
@Nonnull
public String getJCAAlgorithmID() {
- return String.format("%s/%s/%s", getKey(), getCipherMode(), getPadding());
+ final String result = String.format("%s/%s/%s", getKey(), getCipherMode(), getPadding());
+ assert result != null;
+ return result;
}
/** {@inheritDoc} */
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/EncryptionA192CBCHS384.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/EncryptionA192CBCHS384.java
index 89f9341..b902009 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/EncryptionA192CBCHS384.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/EncryptionA192CBCHS384.java
@@ -48,7 +48,9 @@ public final class EncryptionA192CBCHS384 implements BlockEncryptionAlgorithm {
/** {@inheritDoc} */
@Nonnull
public String getJCAAlgorithmID() {
- return String.format("%s/%s/%s", getKey(), getCipherMode(), getPadding());
+ final String result = String.format("%s/%s/%s", getKey(), getCipherMode(), getPadding());
+ assert result != null;
+ return result;
}
/** {@inheritDoc} */
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/EncryptionA192GCM.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/EncryptionA192GCM.java
index cba0db8..f41e66e 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/EncryptionA192GCM.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/EncryptionA192GCM.java
@@ -47,7 +47,9 @@ public final class EncryptionA192GCM implements BlockEncryptionAlgorithm {
/** {@inheritDoc} */
@Nonnull
public String getJCAAlgorithmID() {
- return String.format("%s/%s/%s", getKey(), getCipherMode(), getPadding());
+ final String result = String.format("%s/%s/%s", getKey(), getCipherMode(), getPadding());
+ assert result != null;
+ return result;
}
/** {@inheritDoc} */
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/EncryptionA256CBCHS512.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/EncryptionA256CBCHS512.java
index 5788542..0b1998c 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/EncryptionA256CBCHS512.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/EncryptionA256CBCHS512.java
@@ -48,7 +48,9 @@ public final class EncryptionA256CBCHS512 implements BlockEncryptionAlgorithm {
/** {@inheritDoc} */
@Nonnull
public String getJCAAlgorithmID() {
- return String.format("%s/%s/%s", getKey(), getCipherMode(), getPadding());
+ final String result = String.format("%s/%s/%s", getKey(), getCipherMode(), getPadding());
+ assert result != null;
+ return result;
}
/** {@inheritDoc} */
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/EncryptionA256GCM.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/EncryptionA256GCM.java
index 5d205b7..d2d471c 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/EncryptionA256GCM.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/EncryptionA256GCM.java
@@ -47,7 +47,9 @@ public final class EncryptionA256GCM implements BlockEncryptionAlgorithm {
/** {@inheritDoc} */
@Nonnull
public String getJCAAlgorithmID() {
- return String.format("%s/%s/%s", getKey(), getCipherMode(), getPadding());
+ final String result = String.format("%s/%s/%s", getKey(), getCipherMode(), getPadding());
+ assert result != null;
+ return result;
}
/** {@inheritDoc} */
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/KeyTransportRSA15.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/KeyTransportRSA15.java
index 0c1cec8..d89113e 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/KeyTransportRSA15.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/KeyTransportRSA15.java
@@ -52,7 +52,9 @@ public class KeyTransportRSA15 implements KeyTransportAlgorithm {
@Nonnull
@NotEmpty
public String getJCAAlgorithmID() {
- return String.format("%s/%s/%s", getKey(), getCipherMode(), getPadding());
+ final String result = String.format("%s/%s/%s", getKey(), getCipherMode(), getPadding());
+ assert result != null;
+ return result;
}
/** {@inheritDoc} */
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/KeyTransportRSAOAEP.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/KeyTransportRSAOAEP.java
index c99b931..e776d30 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/KeyTransportRSAOAEP.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/KeyTransportRSAOAEP.java
@@ -53,7 +53,9 @@ public class KeyTransportRSAOAEP implements KeyTransportAlgorithm {
@Nonnull
@NotEmpty
public String getJCAAlgorithmID() {
- return String.format("%s/%s/%s", getKey(), getCipherMode(), getPadding());
+ final String result = String.format("%s/%s/%s", getKey(), getCipherMode(), getPadding());
+ assert result != null;
+ return result;
}
/** {@inheritDoc} */
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/KeyTransportRSAOAEP256.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/KeyTransportRSAOAEP256.java
index e9fb94a..1d9f96e 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/KeyTransportRSAOAEP256.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/KeyTransportRSAOAEP256.java
@@ -53,7 +53,9 @@ public class KeyTransportRSAOAEP256 implements KeyTransportAlgorithm {
@Nonnull
@NotEmpty
public String getJCAAlgorithmID() {
- return String.format("%s/%s/%s", getKey(), getCipherMode(), getPadding());
+ final String result = String.format("%s/%s/%s", getKey(), getCipherMode(), getPadding());
+ assert result != null;
+ return result;
}
/** {@inheritDoc} */
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/KeyTransportRSAOAEP384.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/KeyTransportRSAOAEP384.java
index 4050bef..b14a888 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/KeyTransportRSAOAEP384.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/KeyTransportRSAOAEP384.java
@@ -54,7 +54,9 @@ public class KeyTransportRSAOAEP384 implements KeyTransportAlgorithm {
@Nonnull
@NotEmpty
public String getJCAAlgorithmID() {
- return String.format("%s/%s/%s", getKey(), getCipherMode(), getPadding());
+ final String result = String.format("%s/%s/%s", getKey(), getCipherMode(), getPadding());
+ assert result != null;
+ return result;
}
/** {@inheritDoc} */
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/KeyTransportRSAOAEP512.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/KeyTransportRSAOAEP512.java
index 5f768fa..1ba284a 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/KeyTransportRSAOAEP512.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/KeyTransportRSAOAEP512.java
@@ -55,7 +55,9 @@ public class KeyTransportRSAOAEP512 implements KeyTransportAlgorithm {
@Nonnull
@NotEmpty
public String getJCAAlgorithmID() {
- return String.format("%s/%s/%s", getKey(), getCipherMode(), getPadding());
+ final String result = String.format("%s/%s/%s", getKey(), getCipherMode(), getPadding());
+ assert result != null;
+ return result;
}
/** {@inheritDoc} */
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwk/RemoteJwkSetCache.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwk/RemoteJwkSetCache.java
index 17fdb62..93aa811 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwk/RemoteJwkSetCache.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwk/RemoteJwkSetCache.java
@@ -199,7 +199,9 @@ public class RemoteJwkSetCache extends AbstractIdentifiableInitializableComponen
final JWKSet remoteJwkSet = RemoteJwkUtils.fetchRemoteJwkSet("RemoteJwkSetCache", uri, httpClient,
httpClientSecurityParameters);
if (remoteJwkSet != null && remoteJwkSet.getKeys() != null && !remoteJwkSet.getKeys().isEmpty()) {
- storage.create(context, cacheKey, remoteJwkSet.toString(), expires.toEpochMilli());
+ final String value = remoteJwkSet.toString();
+ assert value != null;
+ storage.create(context, cacheKey, value, expires.toEpochMilli());
return remoteJwkSet;
} else {
log.warn("Could not find any remote keys from {}", cacheKey);
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwk/support/RemoteJwkUtils.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwk/support/RemoteJwkUtils.java
index 2ab74c9..6b01131 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwk/support/RemoteJwkUtils.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwk/support/RemoteJwkUtils.java
@@ -60,12 +60,16 @@ public final class RemoteJwkUtils {
final HttpClientSecurityParameters httpClientSecurityParameters) {
final Logger log = LoggerFactory.getLogger(RemoteJwkUtils.class);
final ClassicHttpRequest get = ClassicRequestBuilder.get().setUri(uri).build();
+ assert get != null;
final HttpClientContext clientContext = HttpClientContext.create();
+ assert clientContext != null;
HttpClientSecuritySupport.marshalSecurityParameters(clientContext, httpClientSecurityParameters, true);
HttpClientSecuritySupport.addDefaultTLSTrustEngineCriteria(clientContext, get);
final String output;
try (final ClassicHttpResponse response = httpClient.executeOpen(null, get, clientContext)) {
- HttpClientSecuritySupport.checkTLSCredentialEvaluated(clientContext, get.getUri().getScheme());
+ final String scheme = get.getUri().getScheme();
+ assert scheme != null;
+ HttpClientSecuritySupport.checkTLSCredentialEvaluated(clientContext, scheme);
if (response == null) {
log.error("{} Could not get the JWK contents from {}", logPrefix, uri);
return null;
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/JWSAssemblyUtils.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/JWSAssemblyUtils.java
index 03563d6..1e785f7 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/JWSAssemblyUtils.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/JWSAssemblyUtils.java
@@ -68,8 +68,9 @@ public final class JWSAssemblyUtils {
@Nonnull final JWTClaimsSet claimsSet, @Nonnull final byte[] secret) throws
EncodingException, JOSEException, ParseException {
- return assembleMacJws(algorithm,claimsSet,secret).serialize();
-
+ final String result = assembleMacJws(algorithm,claimsSet,secret).serialize();
+ assert result != null;
+ return result;
}
/**
@@ -129,7 +130,9 @@ public final class JWSAssemblyUtils {
* @return the UTF-8 byte representation of the secret.
*/
@Nonnull public static byte[] getSecretBytes(@Nonnull final String secret) {
- return secret.getBytes(StandardCharsets.UTF_8);
+ final byte[] result = secret.getBytes(StandardCharsets.UTF_8);
+ assert result != null;
+ return result;
}
/**
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/credential/BasicExpiringJWTSharedSecretCredentialFactoryBean.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/credential/BasicExpiringJWTSharedSecretCredentialFactoryBean.java
index f21851a..d974dc4 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/credential/BasicExpiringJWTSharedSecretCredentialFactoryBean.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/credential/BasicExpiringJWTSharedSecretCredentialFactoryBean.java
@@ -59,7 +59,9 @@ public class BasicExpiringJWTSharedSecretCredentialFactoryBean
/** Constructor.*/
public BasicExpiringJWTSharedSecretCredentialFactoryBean() {
- credentialExpiresAt = Duration.ZERO;
+ final Duration zero = Duration.ZERO;
+ assert zero != null;
+ credentialExpiresAt = zero;
jcaAlg = "AES";
}
@@ -119,7 +121,9 @@ public class BasicExpiringJWTSharedSecretCredentialFactoryBean
jwkCredential.setEntityId(getEntityID());
jwkCredential.setAlgorithm(alg);
if (getUsageType() != null) {
- jwkCredential.setUsageType(Enums.getIfPresent(UsageType.class, getUsageType()).or(UsageType.UNSPECIFIED));
+ final UsageType usageType = Enums.getIfPresent(UsageType.class, getUsageType()).or(UsageType.UNSPECIFIED);
+ assert usageType != null;
+ jwkCredential.setUsageType(usageType);
} else {
jwkCredential.setUsageType(UsageType.UNSPECIFIED);
}
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/credential/BasicJWKCredentialFactoryBean.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/credential/BasicJWKCredentialFactoryBean.java
index b343c5b..71d0e9a 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/credential/BasicJWKCredentialFactoryBean.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/credential/BasicJWKCredentialFactoryBean.java
@@ -16,11 +16,14 @@ package net.shibboleth.oidc.security.credential;
import java.io.IOException;
import java.io.InputStream;
+import java.security.PrivateKey;
+import java.security.PublicKey;
import java.text.ParseException;
import java.util.List;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
+import javax.crypto.SecretKey;
import org.opensaml.spring.credential.AbstractCredentialFactoryBean;
import org.slf4j.Logger;
@@ -112,13 +115,26 @@ public class BasicJWKCredentialFactoryBean extends AbstractCredentialFactoryBean
try (final InputStream is = localResource.getInputStream()) {
jwk = JWK.parse(new String(ByteStreams.toByteArray(is)));
jwkCredential = new BasicJWKCredential();
- if (jwk.getKeyType() == KeyType.EC || jwk.getKeyType() == KeyType.RSA) {
+ if ((jwk.getKeyType() == KeyType.EC || jwk.getKeyType() == KeyType.RSA) &&
+ jwk instanceof AsymmetricJWK asymmetricJwk) {
if (jwk.isPrivate()) {
- jwkCredential.setPrivateKey(((AsymmetricJWK) jwk).toPrivateKey());
+ final PrivateKey privateKey = asymmetricJwk.toPrivateKey();
+ if (privateKey == null) {
+ throw new BeanCreationException("Private Key was null in " + localResource.getDescription());
+ }
+ jwkCredential.setPrivateKey(privateKey);
}
- jwkCredential.setPublicKey(((AsymmetricJWK) jwk).toPublicKey());
- } else if (jwk.getKeyType() == KeyType.OCT) {
- jwkCredential.setSecretKey(((OctetSequenceKey) jwk).toSecretKey(symmetricKeyAlgorithm));
+ final PublicKey publicKey = asymmetricJwk.toPublicKey();
+ if (publicKey == null) {
+ throw new BeanCreationException("Public Key was null in " + localResource.getDescription());
+ }
+ jwkCredential.setPublicKey(publicKey);
+ } else if (jwk.getKeyType() == KeyType.OCT && jwk instanceof OctetSequenceKey octetSequeceKey) {
+ final SecretKey secretKey = octetSequeceKey.toSecretKey(symmetricKeyAlgorithm);
+ if (secretKey == null) {
+ throw new BeanCreationException("Public Key was null in " + localResource.getDescription());
+ }
+ jwkCredential.setSecretKey(secretKey);
} else {
throw new BeanCreationException("Unsupported KeyFile at " + localResource.getDescription());
}
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/credential/DefaultClientSecretCredential.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/credential/DefaultClientSecretCredential.java
index 2474c82..97db57b 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/credential/DefaultClientSecretCredential.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/credential/DefaultClientSecretCredential.java
@@ -56,9 +56,7 @@ public class DefaultClientSecretCredential implements ClientSecretCredential {
* @param secret the client_secret
*/
public DefaultClientSecretCredential(@Nonnull final String secret) {
- Constraint.isNotEmpty(secret, "Secret can not be null or empty");
- clientSecret = secret.getBytes(StandardCharset.UTF_8);
- secretKeyName = DEFAULT_SECRET_KEY_NAME;
+ this(secret, DEFAULT_SECRET_KEY_NAME);
}
/**
@@ -70,7 +68,9 @@ public class DefaultClientSecretCredential implements ClientSecretCredential {
*/
public DefaultClientSecretCredential(@Nonnull final String secret, @Nonnull final String keyName) {
Constraint.isNotEmpty(secret, "Secret can not be null or empty");
- clientSecret = secret.getBytes(StandardCharset.UTF_8);
+ final byte[] bytes = secret.getBytes(StandardCharset.UTF_8);
+ assert bytes != null;
+ clientSecret = bytes;
secretKeyName = Constraint.isNotEmpty(keyName, "Secret keyname can not be null or empty");
}
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/credential/JWACredentialSupport.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/credential/JWACredentialSupport.java
index dabb718..a73c3d1 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/credential/JWACredentialSupport.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/credential/JWACredentialSupport.java
@@ -84,7 +84,9 @@ public final class JWACredentialSupport {
*/
public static boolean keySupportsCurve(@Nonnull final ECKey key,
@Nonnull @NotEmpty final String algorithm) throws JOSEException {
- return keySupportsCurve(key, JWSAlgorithm.parse(algorithm));
+ final JWSAlgorithm alg = JWSAlgorithm.parse(algorithm);
+ assert alg != null;
+ return keySupportsCurve(key, alg);
}
/**
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/credential/JWKCredentialSupport.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/credential/JWKCredentialSupport.java
index ca7e2b5..6fb0617 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/credential/JWKCredentialSupport.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/credential/JWKCredentialSupport.java
@@ -59,8 +59,10 @@ public final class JWKCredentialSupport {
if (skey == null) {
return null;
}
-
- final SecretKey derivedKey = generateSymmetricKey(skey.getEncoded(), alg, enc);
+
+ final byte[] encoded = skey.getEncoded();
+ assert encoded != null;
+ final SecretKey derivedKey = generateSymmetricKey(encoded, alg, enc);
//build a new credential so the old is left in its original state
return CredentialConversionUtil.copySymmetricCredentialWithNewSecret(
credential, "derived-"+CredentialConversionUtil.resolveKid(credential), derivedKey);
@@ -80,8 +82,10 @@ public final class JWKCredentialSupport {
@Nonnull public static final SecretKey generateSymmetricKey(@Nonnull final byte[] clientSecret,
@Nonnull final JWEAlgorithm alg, @Nonnull final EncryptionMethod enc) throws JOSEException {
- return SecretKeyDerivation.deriveSecretKey(
- new Secret(new String(clientSecret, StandardCharset.UTF_8)), alg, enc);
+ final SecretKey result = SecretKeyDerivation.deriveSecretKey(
+ new Secret(new String(clientSecret, StandardCharset.UTF_8)), alg, enc);
+ assert result != null;
+ return result;
}
/**
diff --git a/oidc-common-crypto-api/src/test/java/net/shibboleth/oidc/jwk/RemoteJwkSetCacheTest.java b/oidc-common-crypto-api/src/test/java/net/shibboleth/oidc/jwk/RemoteJwkSetCacheTest.java
index 3c305cc..4631bde 100644
--- a/oidc-common-crypto-api/src/test/java/net/shibboleth/oidc/jwk/RemoteJwkSetCacheTest.java
+++ b/oidc-common-crypto-api/src/test/java/net/shibboleth/oidc/jwk/RemoteJwkSetCacheTest.java
@@ -41,7 +41,7 @@ import net.shibboleth.shared.component.ComponentInitializationException;
/**
* Unit tests for {@link RemoteJwkSetCache}.
*/
- at SuppressWarnings("javadoc")
+ at SuppressWarnings({"javadoc", "null"})
public class RemoteJwkSetCacheTest {
RemoteJwkSetCache jwkSetCache;
diff --git a/oidc-common-crypto-api/src/test/java/net/shibboleth/oidc/security/credential/JWACredentialSupportTest.java b/oidc-common-crypto-api/src/test/java/net/shibboleth/oidc/security/credential/JWACredentialSupportTest.java
index 8554846..76b0a5e 100644
--- a/oidc-common-crypto-api/src/test/java/net/shibboleth/oidc/security/credential/JWACredentialSupportTest.java
+++ b/oidc-common-crypto-api/src/test/java/net/shibboleth/oidc/security/credential/JWACredentialSupportTest.java
@@ -16,6 +16,7 @@ import com.nimbusds.jose.jwk.gen.ECKeyGenerator;
import com.nimbusds.jose.jwk.gen.RSAKeyGenerator;
/** Tests for {@link JWACredentialSupport}.*/
+ at SuppressWarnings("null")
public class JWACredentialSupportTest {
private ECKey key;
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/AbstractClientInformationCredentialResolver.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/AbstractClientInformationCredentialResolver.java
index 2fa1138..a4362ad 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/AbstractClientInformationCredentialResolver.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/AbstractClientInformationCredentialResolver.java
@@ -15,7 +15,6 @@
package net.shibboleth.oidc.security.credential.impl;
import java.util.Collection;
-import java.util.Collections;
import java.util.LinkedHashSet;
import javax.annotation.Nonnull;
@@ -23,15 +22,17 @@ import javax.annotation.Nullable;
import org.opensaml.security.credential.Credential;
import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import com.nimbusds.oauth2.sdk.auth.Secret;
import com.nimbusds.openid.connect.sdk.rp.OIDCClientInformation;
import net.shibboleth.oidc.security.credential.ClientSecretCredential;
import net.shibboleth.oidc.security.credential.DefaultClientSecretCredential;
import net.shibboleth.oidc.security.jose.criterion.ClientInformationCriterion;
+import net.shibboleth.shared.collection.CollectionSupport;
import net.shibboleth.shared.component.ComponentInitializationException;
import net.shibboleth.shared.component.InitializableComponent;
+import net.shibboleth.shared.primitive.LoggerFactory;
import net.shibboleth.shared.resolver.CriteriaSet;
import net.shibboleth.shared.resolver.ResolverException;
@@ -72,11 +73,14 @@ public abstract class AbstractClientInformationCredentialResolver extends BasicJ
final ClientInformationCriterion clientCrit = criteriaSet.get(ClientInformationCriterion.class);
if (clientCrit != null) {
final OIDCClientInformation information = clientCrit.getOidcClientInformation();
- if (information.getSecret() != null) {
+ final Secret secret = information.getSecret();
+ if (secret != null) {
+ final String secretValue = secret.getValue();
+ assert secretValue != null;
final LinkedHashSet<Credential> credentials = new LinkedHashSet<>(1);
try {
final ClientSecretCredential secretCred =
- new DefaultClientSecretCredential(information.getSecret().getValue());
+ new DefaultClientSecretCredential(secretValue);
final Credential derivedCredential = deriveClientSecretCredential(secretCred, criteriaSet);
if (derivedCredential != null) {
credentials.add(derivedCredential);
@@ -91,7 +95,7 @@ public abstract class AbstractClientInformationCredentialResolver extends BasicJ
} else {
log.debug("Criteria did not contain a ClientInformationCriterion could not perform resolution");
}
- return Collections.emptySet();
+ return CollectionSupport.emptySet();
}
}
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/BasicJOSEObjectCredentialResolver.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/BasicJOSEObjectCredentialResolver.java
index 3dbadc4..41b249c 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/BasicJOSEObjectCredentialResolver.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/BasicJOSEObjectCredentialResolver.java
@@ -14,6 +14,7 @@
package net.shibboleth.oidc.security.credential.impl;
+import java.security.PublicKey;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@@ -83,13 +84,13 @@ public class BasicJOSEObjectCredentialResolver extends AbstractCriteriaFiltering
List<Credential> credentials = null;
final Header header = joseObject.getHeader();
- if (JWSHeader.class.isInstance(header)) {
- credentials = processJWSHeader(JWSHeader.class.cast(header));
- } else if (JWEHeader.class.isInstance(header)) {
- credentials = processJWEHeader(JWEHeader.class.cast(header));
+ if (header instanceof JWSHeader jwsHeader) {
+ credentials = processJWSHeader(jwsHeader);
+ } else if (header instanceof JWEHeader jweHeader) {
+ credentials = processJWEHeader(jweHeader);
} else {
throw new ResolverException("Saw unknown JOSEObject header type: " +
- header != null ? header.getClass().getName() : "null");
+ header.getClass().getName());
}
// Extension point for subclasses
@@ -129,8 +130,9 @@ public class BasicJOSEObjectCredentialResolver extends AbstractCriteriaFiltering
final List<Credential> credentials = new ArrayList<>();
// JWK
- if (jwsHeader.getJWK() != null) {
- final Credential cred = buildJWKCredential(jwsHeader.getJWK(), jwsHeader.getKeyID());
+ final JWK jwk = jwsHeader.getJWK();
+ if (jwk != null) {
+ final Credential cred = buildJWKCredential(jwk, jwsHeader.getKeyID());
if (cred != null) {
credentials.add(cred);
}
@@ -153,8 +155,9 @@ public class BasicJOSEObjectCredentialResolver extends AbstractCriteriaFiltering
final List<Credential> credentials = new ArrayList<>();
// JWK
- if (jweHeader.getJWK() != null) {
- final Credential cred = buildJWKCredential(jweHeader.getJWK(), jweHeader.getKeyID());
+ final JWK jwk = jweHeader.getJWK();
+ if (jwk != null) {
+ final Credential cred = buildJWKCredential(jwk, jweHeader.getKeyID());
if (cred != null) {
credentials.add(cred);
}
@@ -179,9 +182,15 @@ public class BasicJOSEObjectCredentialResolver extends AbstractCriteriaFiltering
@Nonnull final JWK jwk, @Nullable final String headerKid) {
final BasicJWKCredential credential = new BasicJWKCredential();
- if (jwk.getKeyType() == KeyType.EC || jwk.getKeyType() == KeyType.RSA) {
+ if ((jwk.getKeyType() == KeyType.EC || jwk.getKeyType() == KeyType.RSA)
+ && jwk instanceof AsymmetricJWK asymmetricJwk) {
try {
- credential.setPublicKey(((AsymmetricJWK) jwk).toPublicKey());
+ final PublicKey publicKey = asymmetricJwk.toPublicKey();
+ if (publicKey != null) {
+ credential.setPublicKey(publicKey);
+ } else {
+ log.warn("Public key was null in JWK");
+ }
} catch (final JOSEException e) {
log.warn("Could not parse public key from JWK", e);
return null;
@@ -306,8 +315,12 @@ public class BasicJOSEObjectCredentialResolver extends AbstractCriteriaFiltering
// Can only derive symmetric key credentials, ignore if not
if (JWEAlgorithm.Family.SYMMETRIC.contains(JWEAlgorithm.parse(alg.getAlgorithm()))) {
try {
+ final JWEAlgorithm jweAlgorithm = JWEAlgorithm.parse(alg.getAlgorithm());
+ final EncryptionMethod encryptionMethod = EncryptionMethod.parse(enc.getEncAlgorithm());
+ assert jweAlgorithm != null;
+ assert encryptionMethod != null;
final Credential derivedCred = secretCred.toEncryptionCredential(
- JWEAlgorithm.parse(alg.getAlgorithm()), EncryptionMethod.parse(enc.getEncAlgorithm()));
+ jweAlgorithm, encryptionMethod);
log.debug("Derived encryption credential '{}' from 'alg={}' and 'enc={}'", derivedCred.getKeyNames()
,alg.getAlgorithm(), enc.getEncAlgorithm());
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/ClientInformationClientSecretCredentialResolver.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/ClientInformationClientSecretCredentialResolver.java
index 7cb7472..6a4af94 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/ClientInformationClientSecretCredentialResolver.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/ClientInformationClientSecretCredentialResolver.java
@@ -19,8 +19,6 @@ import javax.annotation.Nullable;
import org.opensaml.security.credential.Credential;
import org.opensaml.security.credential.impl.AbstractCriteriaFilteringCredentialResolver;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import net.shibboleth.oidc.security.credential.ClientSecretCredential;
import net.shibboleth.oidc.security.credential.JOSEObjectCredentialResolver;
@@ -36,9 +34,6 @@ import net.shibboleth.shared.resolver.ResolverException;
*/
public class ClientInformationClientSecretCredentialResolver extends AbstractClientInformationCredentialResolver {
- /** Class logger. */
- @Nonnull private final Logger log = LoggerFactory.getLogger(ClientInformationClientSecretCredentialResolver.class);
-
/** {@inheritDoc} */
@Override @Nonnull
protected Iterable<Credential> resolveFromSource(@Nullable final CriteriaSet criteriaSet) throws ResolverException {
diff --git a/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/MetadataManagementData.java b/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/MetadataManagementData.java
index c25f0d5..b29a883 100644
--- a/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/MetadataManagementData.java
+++ b/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/MetadataManagementData.java
@@ -49,7 +49,7 @@ public class MetadataManagementData<MetadataIdentifier> {
private Instant lastAccessedTime;
/** Read-write stamped lock which governs access to the metadata's backing store data. */
- private final StampedLock stmpLock;
+ @Nonnull private final StampedLock stmpLock;
/** Constructor.
*
diff --git a/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/ProviderMetadataProviderContainer.java b/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/ProviderMetadataProviderContainer.java
index 168147a..2c49f6e 100644
--- a/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/ProviderMetadataProviderContainer.java
+++ b/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/ProviderMetadataProviderContainer.java
@@ -71,6 +71,8 @@ public class ProviderMetadataProviderContainer extends AbstractServiceableCompon
* @return the parameter we got as a constructor
*/
@Nonnull public ProviderMetadataResolver getEmbeddedResolver() {
+ ifNotInitializedThrowUninitializedComponentException();
+ assert resolver != null;
return resolver;
}
@@ -115,7 +117,9 @@ public class ProviderMetadataProviderContainer extends AbstractServiceableCompon
if (equals(other)) {
return 0;
}
- return getId().compareTo(other.getId());
+ final String id = getId();
+ assert id != null;
+ return id.compareTo(other.getId());
}
/**
diff --git a/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/RelyingPartyClientInformationProvider.java b/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/RelyingPartyClientInformationProvider.java
index 56afb32..01a1684 100644
--- a/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/RelyingPartyClientInformationProvider.java
+++ b/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/RelyingPartyClientInformationProvider.java
@@ -83,6 +83,8 @@ public class RelyingPartyClientInformationProvider extends AbstractServiceableCo
*/
@Nonnull
public ClientInformationResolver getEmbeddedResolver() {
+ ifNotInitializedThrowUninitializedComponentException();
+ assert resolver != null;
return resolver;
}
@@ -171,7 +173,9 @@ public class RelyingPartyClientInformationProvider extends AbstractServiceableCo
if (equals(other)) {
return 0;
}
- return getId().compareTo(other.getId());
+ final String id = getId();
+ assert id != null;
+ return id.compareTo(other.getId());
}
/**
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/keyinfo/ext/impl/provider/InlineJwksProvider.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/keyinfo/ext/impl/provider/InlineJwksProvider.java
index 983710c..8cfb40c 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/keyinfo/ext/impl/provider/InlineJwksProvider.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/keyinfo/ext/impl/provider/InlineJwksProvider.java
@@ -14,6 +14,7 @@
package net.shibboleth.oidc.metadata.keyinfo.ext.impl.provider;
+import java.security.PublicKey;
import java.text.ParseException;
import java.util.Arrays;
import java.util.Collection;
@@ -67,9 +68,11 @@ public class InlineJwksProvider extends AbstractKeyInfoProvider {
if (jwksData == null || StringSupport.trimOrNull(jwksData.getValue()) == null) {
return null;
}
+ final String input = jwksData.getValue();
+ assert input != null;
final String data;
try {
- data = new String(Base64Support.decode(jwksData.getValue()));
+ data = new String(Base64Support.decode(input));
} catch (final DecodingException e) {
log.error("Could not decode the JWKS data", e);
return null;
@@ -96,9 +99,15 @@ public class InlineJwksProvider extends AbstractKeyInfoProvider {
@Nonnull protected BasicJWKCredential buildCredential(@Nonnull final JWK jwk,
@Nonnull final KeyInfoResolutionContext kiContext) {
final BasicJWKCredential credential = new BasicJWKCredential();
- if (jwk.getKeyType() == KeyType.EC || jwk.getKeyType() == KeyType.RSA) {
+ if ((jwk.getKeyType() == KeyType.EC || jwk.getKeyType() == KeyType.RSA)
+ && jwk instanceof AsymmetricJWK asymmetricJwk) {
try {
- credential.setPublicKey(((AsymmetricJWK) jwk).toPublicKey());
+ final PublicKey publicKey = asymmetricJwk.toPublicKey();
+ if (publicKey != null) {
+ credential.setPublicKey(publicKey);
+ } else {
+ log.warn("Could not parse public key from JWK: public key is null");
+ }
} catch (final JOSEException e) {
log.warn("Could not parse public key from JWK", e);
}
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/policy/impl/MetadataPolicyViaLocationFetchingStrategy.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/policy/impl/MetadataPolicyViaLocationFetchingStrategy.java
index 54a628d..a1c8ff8 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/policy/impl/MetadataPolicyViaLocationFetchingStrategy.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/policy/impl/MetadataPolicyViaLocationFetchingStrategy.java
@@ -101,6 +101,7 @@ public class MetadataPolicyViaLocationFetchingStrategy
}
final String fileLocation = requestURL.startsWith("file:") ? requestURL.substring(5) : requestURL;
final CacheLoadingContext context = new CacheLoadingContext(null, null);
+ assert fileLocation != null;
final FileSystemResource resource = new FileSystemResource(fileLocation);
final byte[] loadedPolicy;
try {
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/profile/spring/relyingparty/metadata/impl/ClientInformationResolverServiceStrategy.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/profile/spring/relyingparty/metadata/impl/ClientInformationResolverServiceStrategy.java
index cf0a4c7..e95fa1c 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/profile/spring/relyingparty/metadata/impl/ClientInformationResolverServiceStrategy.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/profile/spring/relyingparty/metadata/impl/ClientInformationResolverServiceStrategy.java
@@ -60,7 +60,9 @@ public class ClientInformationResolverServiceStrategy extends AbstractIdentifiab
}
if (1 == resolvers.size()) {
// done
- return resolvers.iterator().next();
+ final AbstractServiceableComponent<ClientInformationResolver> result = resolvers.iterator().next();
+ assert result != null;
+ return result;
}
// initialize so we can sort
for (final RelyingPartyClientInformationProvider resolver : resolvers) {
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/profile/spring/relyingparty/metadata/impl/ProviderMetadataResolverServiceStrategy.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/profile/spring/relyingparty/metadata/impl/ProviderMetadataResolverServiceStrategy.java
index c8dfc1f..15d156d 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/profile/spring/relyingparty/metadata/impl/ProviderMetadataResolverServiceStrategy.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/profile/spring/relyingparty/metadata/impl/ProviderMetadataResolverServiceStrategy.java
@@ -61,7 +61,9 @@ public class ProviderMetadataResolverServiceStrategy extends AbstractIdentifiabl
}
if (1 == containers.size()) {
// done
- return containers.iterator().next();
+ final AbstractServiceableComponent<ProviderMetadataResolver> result = containers.iterator().next();
+ assert result != null;
+ return result;
}
// initialize so we can sort
diff --git a/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/policy/impl/OIDCMetadataPolicyResolverTest.java b/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/policy/impl/OIDCMetadataPolicyResolverTest.java
index 315500f..c79faba 100644
--- a/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/policy/impl/OIDCMetadataPolicyResolverTest.java
+++ b/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/policy/impl/OIDCMetadataPolicyResolverTest.java
@@ -20,6 +20,8 @@ import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import javax.annotation.Nonnull;
+
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.testng.Assert;
@@ -56,7 +58,8 @@ public class OIDCMetadataPolicyResolverTest {
resolver.initialize();
}
- protected BatchMetadataCache<String, Map<String, MetadataPolicy>> buildCache(final String filename,
+ @SuppressWarnings("null")
+ @Nonnull protected BatchMetadataCache<String, Map<String, MetadataPolicy>> buildCache(final String filename,
final CustomMetadataPolicyOperator customOperator)
throws IOException, ComponentInitializationException {
final Resource file = filename == null || filename.isEmpty()? null : new ClassPathResource(filename);
diff --git a/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/profile/spring/relyingparty/metadata/impl/ReloadClientResolverServiceConfigurationTest.java b/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/profile/spring/relyingparty/metadata/impl/ReloadClientResolverServiceConfigurationTest.java
index a7dea34..459ae88 100644
--- a/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/profile/spring/relyingparty/metadata/impl/ReloadClientResolverServiceConfigurationTest.java
+++ b/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/profile/spring/relyingparty/metadata/impl/ReloadClientResolverServiceConfigurationTest.java
@@ -74,7 +74,8 @@ public class ReloadClientResolverServiceConfigurationTest {
service = new ReloadableSpringService<>(ClientInformationResolver.class, new ClientInformationResolverServiceStrategy());
service.setFailFast(true);
service.setId("mockId");
-
+
+ assert serviceLocations != null;
service.setServiceConfigurations(serviceLocations);
service.initialize();
}
@@ -138,6 +139,7 @@ public class ReloadClientResolverServiceConfigurationTest {
Assert.assertEquals(response.getStatus(), HttpServletResponse.SC_OK);
}
+ @SuppressWarnings("null")
protected static ReloadServiceConfiguration initializeAction(final ReloadableService<?> reloadableService,
final HttpServletResponse response) throws ComponentInitializationException {
final ReloadServiceConfiguration action = new ReloadServiceConfiguration();
diff --git a/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/profile/spring/relyingparty/metadata/impl/ReloadProviderMetadataResolverServiceConfigurationTest.java b/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/profile/spring/relyingparty/metadata/impl/ReloadProviderMetadataResolverServiceConfigurationTest.java
index 447451a..888cc71 100644
--- a/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/profile/spring/relyingparty/metadata/impl/ReloadProviderMetadataResolverServiceConfigurationTest.java
+++ b/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/profile/spring/relyingparty/metadata/impl/ReloadProviderMetadataResolverServiceConfigurationTest.java
@@ -71,7 +71,8 @@ public class ReloadProviderMetadataResolverServiceConfigurationTest {
service = new ReloadableSpringService<>(ProviderMetadataResolver.class, new ProviderMetadataResolverServiceStrategy());
service.setFailFast(true);
service.setId("mockId");
-
+
+ assert serviceLocations != null;
service.setServiceConfigurations(serviceLocations);
service.initialize();
}
@@ -132,6 +133,7 @@ public class ReloadProviderMetadataResolverServiceConfigurationTest {
Assert.assertEquals(response.getStatus(), HttpServletResponse.SC_OK);
}
+ @SuppressWarnings("null")
protected static ReloadServiceConfiguration initializeAction(final ReloadableService<?> reloadableService,
final HttpServletResponse response) throws ComponentInitializationException {
final ReloadServiceConfiguration action = new ReloadServiceConfiguration();
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list