[java-oidc-common] branch main updated: Null cleanup and missing/incorrect annotations.
Scott Cantor
cantor.2 at osu.edu
Thu Oct 19 16:20:55 UTC 2023
This is an automated email from the git hooks/post-receive script.
scantor 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=cb7c96f6b93fef07ed0ad241a675f70a45084483
The following commit(s) were added to refs/heads/main by this push:
new cb7c96f Null cleanup and missing/incorrect annotations.
cb7c96f is described below
commit cb7c96f6b93fef07ed0ad241a675f70a45084483
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Thu Oct 19 12:20:50 2023 -0400
Null cleanup and missing/incorrect annotations.
---
.../oidc/security/CredentialConversionUtil.java | 46 ++++++++++++++--------
.../shibboleth/oidc/security/JWSAssemblyUtils.java | 4 +-
.../BasicClientSecretCredentialFactoryBean.java | 21 ++++++----
...piringJWTSharedSecretCredentialFactoryBean.java | 21 +++++++---
.../credential/BasicJWKReferenceCredential.java | 11 +++---
.../credential/BasicNimbusSecretCredential.java | 9 +++--
.../credential/DefaultClientSecretCredential.java | 8 +++-
.../security/credential/JWKCredentialSupport.java | 17 +++++---
.../DecryptionConfigurationCriterion.java | 7 +++-
.../EncryptionConfigurationCriterion.java | 9 +++--
.../jose/criterion/JOSEObjectCriterion.java | 6 ++-
.../security/jose/criterion/JWKSetCriterion.java | 6 ++-
.../security/jose/criterion/KeyIdCriterion.java | 11 +++---
.../SignatureSigningConfigurationCriterion.java | 7 +++-
.../SignatureValidationConfigurationCriterion.java | 10 +++--
15 files changed, 125 insertions(+), 68 deletions(-)
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/CredentialConversionUtil.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/CredentialConversionUtil.java
index 6b96f46..ff4f4be 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/CredentialConversionUtil.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/CredentialConversionUtil.java
@@ -14,6 +14,7 @@
package net.shibboleth.oidc.security;
+import java.security.PublicKey;
import java.security.interfaces.ECPublicKey;
import java.security.interfaces.RSAPublicKey;
@@ -52,7 +53,7 @@ public final class CredentialConversionUtil {
*
* @return key names or null if not found
*/
- public static String resolveKid(@Nonnull final Credential credential) {
+ @Nullable public static String resolveKid(@Nonnull final Credential credential) {
if (credential.getKeyNames() != null) {
for (final String keyName : credential.getKeyNames()) {
return keyName;
@@ -70,14 +71,14 @@ public final class CredentialConversionUtil {
* @param credential credential to resolve KeyUse of
* @return KeyUse of credential
*/
- public static KeyUse resolveKeyUse(final Credential credential) {
+ @Nullable public static KeyUse resolveKeyUse(@Nullable final Credential credential) {
if (credential == null || credential.getUsageType() == null) {
return null;
}
- if (credential.getUsageType().equals(UsageType.SIGNING)) {
+ if (UsageType.SIGNING.equals(credential.getUsageType())) {
return KeyUse.SIGNATURE;
}
- if (credential.getUsageType().equals(UsageType.ENCRYPTION)) {
+ if (UsageType.ENCRYPTION.equals(credential.getUsageType())) {
return KeyUse.ENCRYPTION;
}
return null;
@@ -89,17 +90,23 @@ public final class CredentialConversionUtil {
* @param credential to convert.
* @return credential as JWK.
*/
- public static JWK credentialToKey(final Credential credential) {
- if (credential == null || credential.getPublicKey() == null) {
+ @Nullable public static JWK credentialToKey(@Nullable final Credential credential) {
+ if (credential == null) {
return null;
}
- final String algorithm = credential.getPublicKey().getAlgorithm();
+
+ final PublicKey pkey = credential.getPublicKey();
+ if (pkey == null) {
+ return null;
+ }
+
+ final String algorithm = pkey.getAlgorithm();
if ("RSA".equals(algorithm)) {
- return new RSAKey.Builder((RSAPublicKey) credential.getPublicKey()).keyUse(resolveKeyUse(credential))
+ return new RSAKey.Builder((RSAPublicKey) pkey).keyUse(resolveKeyUse(credential))
.keyID(resolveKid(credential)).build();
}
if ("EC".equals(algorithm)) {
- return new ECKey.Builder(Curve.forECParameterSpec(((ECPublicKey) credential.getPublicKey()).getParams()),
+ return new ECKey.Builder(Curve.forECParameterSpec(((ECPublicKey) pkey).getParams()),
(ECPublicKey) credential.getPublicKey()).keyUse(resolveKeyUse(credential))
.keyID(resolveKid(credential)).build();
}
@@ -115,13 +122,16 @@ public final class CredentialConversionUtil {
* @param derivedKey the secret key to use
* @return the copied credential with the supplied secret key
*/
- public static JWKCredential copySymmetricCredentialWithNewSecret(
- final JWKCredential credential, final String newKid, final SecretKey derivedKey) {
+ @Nonnull public static JWKCredential copySymmetricCredentialWithNewSecret(@Nonnull final JWKCredential credential,
+ @Nullable final String newKid, @Nonnull final SecretKey derivedKey) {
final BasicJWKCredential jwkCredential = new BasicJWKCredential();
jwkCredential.setAlgorithm(credential.getAlgorithm());
jwkCredential.setKid(newKid);
credential.getKeyNames().add(newKid);
- jwkCredential.setUsageType(credential.getUsageType());
+ final UsageType utype = credential.getUsageType();
+ if (utype != null) {
+ jwkCredential.setUsageType(utype);
+ }
jwkCredential.setSecretKey(derivedKey);
jwkCredential.setEntityId(credential.getEntityId());
return jwkCredential;
@@ -138,16 +148,18 @@ public final class CredentialConversionUtil {
@Nullable public static Credential keyToCredential(@Nullable final JWK key) throws JOSEException {
if (key == null) {
return null;
- }
+ }
+
if (key instanceof RSAKey || key instanceof ECKey) {
final BasicJWKCredential jwkCredential = new BasicJWKCredential();
jwkCredential.setAlgorithm(key.getAlgorithm());
jwkCredential.setKid(key.getKeyID());
jwkCredential.getKeyNames().add(key.getKeyID());
- jwkCredential.setUsageType(CredentialConversionUtil.getUsageType(key));
- jwkCredential.setPublicKey(((AsymmetricJWK) key).toPublicKey());
+ jwkCredential.setUsageType(CredentialConversionUtil.getUsageType(key));
+ jwkCredential.setPublicKey(((AsymmetricJWK) key).toPublicKey());
return jwkCredential;
- }
+ }
+
return null;
}
@@ -158,7 +170,7 @@ public final class CredentialConversionUtil {
* @param jwk containing usage type. Must not be null.
* @return usage type.
*/
- public static UsageType getUsageType(@Nonnull final JWK jwk) {
+ @Nonnull public static UsageType getUsageType(@Nonnull final JWK jwk) {
if (KeyUse.ENCRYPTION.equals(jwk.getKeyUse())) {
return UsageType.ENCRYPTION;
}
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 2101eb1..03563d6 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
@@ -99,7 +99,9 @@ public final class JWSAssemblyUtils {
final JWSHeader header = new JWSHeader.Builder(algorithm)
.type(JOSEObjectType.JWT)
- .build();
+ .build();
+ assert header != null;
+
final Payload payload = new Payload(claimsSet.toJSONObject());
final String signingInput = composeSigningInput(header,payload);
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/credential/BasicClientSecretCredentialFactoryBean.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/credential/BasicClientSecretCredentialFactoryBean.java
index b08a059..6aa2bf4 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/credential/BasicClientSecretCredentialFactoryBean.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/credential/BasicClientSecretCredentialFactoryBean.java
@@ -17,6 +17,8 @@ package net.shibboleth.oidc.security.credential;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
+import org.springframework.beans.factory.BeanCreationException;
+
import net.shibboleth.shared.annotation.constraint.NotEmpty;
import net.shibboleth.shared.logic.Constraint;
import net.shibboleth.shared.spring.factory.AbstractComponentAwareFactoryBean;
@@ -27,7 +29,7 @@ import net.shibboleth.shared.spring.factory.AbstractComponentAwareFactoryBean;
* @since 2.2.0
*/
public class BasicClientSecretCredentialFactoryBean
- extends AbstractComponentAwareFactoryBean<DefaultClientSecretCredential> {
+ extends AbstractComponentAwareFactoryBean<DefaultClientSecretCredential> {
/** The secret to use when creating a BasicJWKCredential.*/
@Nullable private String secret;
@@ -38,20 +40,23 @@ public class BasicClientSecretCredentialFactoryBean
* @param secretIn the secret
*/
public void setSecret(@Nonnull @NotEmpty final String secretIn) {
- secret = Constraint.isNotEmpty(secretIn, "Secret can not be null or empty");
+ secret = Constraint.isNotEmpty(secretIn, "Secret cannot be null or empty");
}
+ /** {@inheritDoc} */
@Override
- protected DefaultClientSecretCredential doCreateInstance() throws Exception {
- if (secret == null) {
- throw new Exception("Client secret can not be null");
+ @Nonnull protected DefaultClientSecretCredential doCreateInstance() throws Exception {
+ final String local = secret;
+ if (local == null) {
+ throw new BeanCreationException("Client secret cannot be null");
}
- return new DefaultClientSecretCredential(secret);
+ return new DefaultClientSecretCredential(local);
}
+ /** {@inheritDoc} */
@Override
- public Class<?> getObjectType() {
+ @Nonnull public Class<?> getObjectType() {
return DefaultClientSecretCredential.class;
}
-}
+}
\ No newline at end of file
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 968e078..743214e 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
@@ -24,6 +24,7 @@ import javax.crypto.SecretKey;
import org.opensaml.security.credential.UsageType;
import org.opensaml.security.crypto.KeySupport;
import org.opensaml.spring.credential.AbstractCredentialFactoryBean;
+import org.springframework.beans.factory.BeanCreationException;
import com.google.common.base.Enums;
import com.nimbusds.jose.Algorithm;
@@ -39,13 +40,13 @@ import net.shibboleth.shared.primitive.StringSupport;
* @since 2.2.0
*/
public class BasicExpiringJWTSharedSecretCredentialFactoryBean
- extends AbstractCredentialFactoryBean<ExpiringJWKCredential> {
+ extends AbstractCredentialFactoryBean<ExpiringJWKCredential> {
/** The secret to use when creating a BasicJWKCredential.*/
@Nullable private String secret;
/** The JCA algorithm to set on the {@link SecretKey}. Defaults to AES.*/
- @Nullable private String jcaAlg = "AES";
+ @Nullable private String jcaAlg;
/** The key management algorithm ('alg') this credential supports.*/
@Nullable private Algorithm alg;
@@ -59,6 +60,7 @@ public class BasicExpiringJWTSharedSecretCredentialFactoryBean
/** Constructor.*/
public BasicExpiringJWTSharedSecretCredentialFactoryBean() {
credentialExpiresAt = Duration.ZERO;
+ jcaAlg = "AES";
}
/**
@@ -99,11 +101,20 @@ public class BasicExpiringJWTSharedSecretCredentialFactoryBean
secret = Constraint.isNotEmpty(secretIn, "Secret can not be null or empty");
}
+ /** {@inheritDoc} */
@Override
- protected ExpiringJWKCredential doCreateInstance() throws Exception {
+ @Nonnull protected ExpiringJWKCredential doCreateInstance() throws Exception {
final BasicExpiringJWKCredential jwkCredential = new BasicExpiringJWKCredential();
- jwkCredential.setSecretKey(KeySupport.decodeSecretKey(JWSAssemblyUtils.getSecretBytes(secret), jcaAlg));
+
+ final String localSecret = secret;
+ final String localAlg = jcaAlg;
+
+ if (localSecret == null || localAlg == null) {
+ throw new BeanCreationException("Secret and algorithm cannot be null");
+ }
+
+ jwkCredential.setSecretKey(KeySupport.decodeSecretKey(JWSAssemblyUtils.getSecretBytes(localSecret), localAlg));
jwkCredential.setCredentialExpiresAt(credentialExpiresAt);
jwkCredential.setEntityId(getEntityID());
jwkCredential.setAlgorithm(alg);
@@ -125,4 +136,4 @@ public class BasicExpiringJWTSharedSecretCredentialFactoryBean
return BasicJWKCredential.class;
}
-}
+}
\ No newline at end of file
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/credential/BasicJWKReferenceCredential.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/credential/BasicJWKReferenceCredential.java
index cea0971..f2ed71a 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/credential/BasicJWKReferenceCredential.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/credential/BasicJWKReferenceCredential.java
@@ -16,6 +16,8 @@ package net.shibboleth.oidc.security.credential;
import java.net.URI;
+import javax.annotation.Nonnull;
+
import org.opensaml.security.credential.AbstractCredential;
import org.opensaml.security.credential.Credential;
@@ -31,7 +33,7 @@ public class BasicJWKReferenceCredential extends AbstractCredential implements J
* Constructor.
*/
public BasicJWKReferenceCredential() {
- super();
+
}
/**
@@ -40,7 +42,6 @@ public class BasicJWKReferenceCredential extends AbstractCredential implements J
* @param uri A reference to a JWK.
*/
public BasicJWKReferenceCredential(final URI uri) {
- this();
referenceUri = uri;
}
@@ -55,14 +56,14 @@ public class BasicJWKReferenceCredential extends AbstractCredential implements J
/** {@inheritDoc} */
@Override
- public URI getReferenceURI() {
+ @Nonnull public URI getReferenceURI() {
return referenceUri;
}
/** {@inheritDoc} */
@Override
- public Class<? extends Credential> getCredentialType() {
+ @Nonnull public Class<? extends Credential> getCredentialType() {
return JWKReferenceCredential.class;
}
-}
+}
\ No newline at end of file
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/credential/BasicNimbusSecretCredential.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/credential/BasicNimbusSecretCredential.java
index 879766b..013662a 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/credential/BasicNimbusSecretCredential.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/credential/BasicNimbusSecretCredential.java
@@ -14,6 +14,8 @@
package net.shibboleth.oidc.security.credential;
+import javax.annotation.Nonnull;
+
import org.opensaml.security.credential.AbstractCredential;
import org.opensaml.security.credential.Credential;
@@ -34,7 +36,7 @@ public class BasicNimbusSecretCredential extends AbstractCredential implements N
* Constructor.
*/
public BasicNimbusSecretCredential() {
- super();
+
}
/**
@@ -43,7 +45,6 @@ public class BasicNimbusSecretCredential extends AbstractCredential implements N
* @param secret The client secret.
*/
public BasicNimbusSecretCredential(final Secret secret) {
- this();
clientSecret = secret;
}
@@ -58,13 +59,13 @@ public class BasicNimbusSecretCredential extends AbstractCredential implements N
/** {@inheritDoc} */
@Override
- public Secret getSecret() {
+ @Nonnull public Secret getSecret() {
return clientSecret;
}
/** {@inheritDoc} */
@Override
- public Class<? extends Credential> getCredentialType() {
+ @Nonnull public Class<? extends Credential> getCredentialType() {
return NimbusSecretCredential.class;
}
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 4e6fd49..9986fc3 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
@@ -74,16 +74,19 @@ public class DefaultClientSecretCredential implements ClientSecretCredential {
secretKeyName = Constraint.isNotEmpty(keyName, "Secret keyname can not be null or empty");
}
+ /** {@inheritDoc} */
@Override
@Nonnull public String getSecret() {
return new String(clientSecret, StandardCharsets.UTF_8);
}
+ /** {@inheritDoc} */
@Override
@NotLive @Nonnull public byte[] getSecretAsBytes(){
return clientSecret.clone();
}
+ /** {@inheritDoc} */
@Override
@Nonnull public JWKCredential toSigningCredential() {
final BasicExpiringJWKCredential jwkCredential = new BasicExpiringJWKCredential();
@@ -94,9 +97,10 @@ public class DefaultClientSecretCredential implements ClientSecretCredential {
return jwkCredential;
}
+ /** {@inheritDoc} */
@Override
- public JWKCredential toEncryptionCredential(final JWEAlgorithm alg, final EncryptionMethod enc)
- throws JOSEException {
+ @Nonnull public JWKCredential toEncryptionCredential(@Nonnull final JWEAlgorithm alg,
+ @Nonnull final EncryptionMethod enc) throws JOSEException {
// Derive key using the algorithm and enc method
final SecretKey key = JWKCredentialSupport.generateSymmetricKey(clientSecret, alg, enc);
final BasicExpiringJWKCredential jwkCredential = new BasicExpiringJWKCredential();
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 7ca64b1..ca7e2b5 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
@@ -14,6 +14,7 @@
package net.shibboleth.oidc.security.credential;
+import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import javax.crypto.SecretKey;
@@ -50,10 +51,16 @@ public final class JWKCredentialSupport {
@Nullable final JWKCredential credential, @Nullable final JWEAlgorithm alg,
@Nullable final EncryptionMethod enc) throws JOSEException {
- if (credential == null || credential.getSecretKey() == null || alg == null || enc == null) {
+ if (credential == null || alg == null || enc == null) {
return null;
}
- final SecretKey derivedKey = generateSymmetricKey(credential.getSecretKey().getEncoded(), alg, enc);
+
+ final SecretKey skey = credential.getSecretKey();
+ if (skey == null) {
+ return null;
+ }
+
+ final SecretKey derivedKey = generateSymmetricKey(skey.getEncoded(), alg, enc);
//build a new credential so the old is left in its original state
return CredentialConversionUtil.copySymmetricCredentialWithNewSecret(
credential, "derived-"+CredentialConversionUtil.resolveKid(credential), derivedKey);
@@ -70,8 +77,8 @@ public final class JWKCredentialSupport {
* @throws JOSEException on error
*/
- public static final SecretKey generateSymmetricKey(final byte[] clientSecret, final JWEAlgorithm alg,
- final EncryptionMethod enc) throws JOSEException {
+ @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);
@@ -94,4 +101,4 @@ public final class JWKCredentialSupport {
return SecretKeyDerivation.deriveSecretKey(clientSecret, alg, enc);
}
-}
+}
\ No newline at end of file
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/DecryptionConfigurationCriterion.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/DecryptionConfigurationCriterion.java
index 6e37139..a3f6e61 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/DecryptionConfigurationCriterion.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/DecryptionConfigurationCriterion.java
@@ -23,6 +23,7 @@ import net.shibboleth.shared.annotation.constraint.NonnullElements;
import net.shibboleth.shared.annotation.constraint.NotEmpty;
import net.shibboleth.shared.annotation.constraint.NotLive;
import net.shibboleth.shared.annotation.constraint.Unmodifiable;
+import net.shibboleth.shared.collection.CollectionSupport;
import net.shibboleth.shared.logic.Constraint;
import net.shibboleth.shared.resolver.Criterion;
@@ -43,7 +44,8 @@ public class DecryptionConfigurationCriterion implements Criterion {
*/
public DecryptionConfigurationCriterion(@Nonnull @NonnullElements @NotEmpty final
List<DecryptionConfiguration> configurations) {
- configs = List.copyOf(Constraint.isNotNull(configurations, "List of configurations cannot be null"));
+ configs = CollectionSupport.copyToList(
+ Constraint.isNotNull(configurations, "List of configurations cannot be null"));
Constraint.isNotEmpty(configs, "At least one configuration is required");
}
@@ -55,7 +57,8 @@ public class DecryptionConfigurationCriterion implements Criterion {
*/
public DecryptionConfigurationCriterion(@Nonnull @NonnullElements @NotEmpty final
DecryptionConfiguration... configurations) {
- configs = List.of(Constraint.isNotNull(configurations, "List of configurations cannot be null"));
+ configs = CollectionSupport.listOf(
+ Constraint.isNotNull(configurations, "List of configurations cannot be null"));
Constraint.isNotEmpty(configs, "At least one configuration is required");
}
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/EncryptionConfigurationCriterion.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/EncryptionConfigurationCriterion.java
index e398858..4cdb67f 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/EncryptionConfigurationCriterion.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/EncryptionConfigurationCriterion.java
@@ -23,6 +23,7 @@ import net.shibboleth.shared.annotation.constraint.NonnullElements;
import net.shibboleth.shared.annotation.constraint.NotEmpty;
import net.shibboleth.shared.annotation.constraint.NotLive;
import net.shibboleth.shared.annotation.constraint.Unmodifiable;
+import net.shibboleth.shared.collection.CollectionSupport;
import net.shibboleth.shared.logic.Constraint;
import net.shibboleth.shared.resolver.Criterion;
@@ -43,7 +44,8 @@ public class EncryptionConfigurationCriterion implements Criterion {
*/
public EncryptionConfigurationCriterion(@Nonnull @NonnullElements @NotEmpty final
List<EncryptionConfiguration> configurations) {
- configs = List.copyOf(Constraint.isNotNull(configurations, "List of configurations cannot be null"));
+ configs = CollectionSupport.copyToList(
+ Constraint.isNotNull(configurations, "List of configurations cannot be null"));
Constraint.isNotEmpty(configs, "At least one configuration is required");
}
@@ -55,7 +57,8 @@ public class EncryptionConfigurationCriterion implements Criterion {
*/
public EncryptionConfigurationCriterion(@Nonnull @NonnullElements @NotEmpty final
EncryptionConfiguration... configurations) {
- configs = List.of(Constraint.isNotNull(configurations, "List of configurations cannot be null"));
+ configs = CollectionSupport.listOf(
+ Constraint.isNotNull(configurations, "List of configurations cannot be null"));
Constraint.isNotEmpty(configs, "At least one configuration is required");
}
@@ -102,4 +105,4 @@ public class EncryptionConfigurationCriterion implements Criterion {
return false;
}
-}
+}
\ No newline at end of file
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/JOSEObjectCriterion.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/JOSEObjectCriterion.java
index d23b9e1..1ba3638 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/JOSEObjectCriterion.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/JOSEObjectCriterion.java
@@ -14,6 +14,8 @@
package net.shibboleth.oidc.security.jose.criterion;
+import java.util.Objects;
+
import javax.annotation.Nullable;
import com.nimbusds.jose.JOSEObject;
@@ -91,8 +93,8 @@ public final class JOSEObjectCriterion implements Criterion {
return false;
}
- if (obj instanceof JOSEObjectCriterion) {
- return joseObject.equals(((JOSEObjectCriterion) obj).joseObject);
+ if (obj instanceof JOSEObjectCriterion jose) {
+ return Objects.equals(joseObject, jose.joseObject);
}
return false;
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/JWKSetCriterion.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/JWKSetCriterion.java
index a6b9b2f..b9b9161 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/JWKSetCriterion.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/JWKSetCriterion.java
@@ -14,6 +14,8 @@
package net.shibboleth.oidc.security.jose.criterion;
+import java.util.Objects;
+
import javax.annotation.Nullable;
import com.nimbusds.jose.jwk.JWKSet;
@@ -89,8 +91,8 @@ public final class JWKSetCriterion implements Criterion {
return false;
}
- if (obj instanceof JWKSetCriterion) {
- return jwkSet.equals(((JWKSetCriterion) obj).jwkSet);
+ if (obj instanceof JWKSetCriterion downcast) {
+ return Objects.equals(jwkSet, downcast.jwkSet);
}
return false;
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/KeyIdCriterion.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/KeyIdCriterion.java
index 7884143..17a395d 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/KeyIdCriterion.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/KeyIdCriterion.java
@@ -29,7 +29,7 @@ import net.shibboleth.shared.resolver.Criterion;
public class KeyIdCriterion implements Criterion {
/** Expected key ID of resolved credentials. */
- private String keyId;
+ @Nonnull private String keyId;
/**
* Constructor.
@@ -37,7 +37,8 @@ public class KeyIdCriterion implements Criterion {
* @param id key identifier.
*/
public KeyIdCriterion(@Nonnull final String id) {
- setKeyId(id);
+ final String trimmed = StringSupport.trimOrNull(id);
+ keyId = Constraint.isNotNull(trimmed, "Key ID criteria value cannot be null or empty");
}
/**
@@ -56,9 +57,7 @@ public class KeyIdCriterion implements Criterion {
*/
public void setKeyId(@Nonnull final String id) {
final String trimmed = StringSupport.trimOrNull(id);
- Constraint.isNotNull(trimmed, "Key ID criteria value cannot be null or empty");
-
- keyId = trimmed;
+ keyId = Constraint.isNotNull(trimmed, "Key ID criteria value cannot be null or empty");
}
/** {@inheritDoc} */
@@ -95,4 +94,4 @@ public class KeyIdCriterion implements Criterion {
return false;
}
-}
+}
\ No newline at end of file
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/SignatureSigningConfigurationCriterion.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/SignatureSigningConfigurationCriterion.java
index c179634..1afe5b1 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/SignatureSigningConfigurationCriterion.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/SignatureSigningConfigurationCriterion.java
@@ -23,6 +23,7 @@ import net.shibboleth.shared.annotation.constraint.NonnullElements;
import net.shibboleth.shared.annotation.constraint.NotEmpty;
import net.shibboleth.shared.annotation.constraint.NotLive;
import net.shibboleth.shared.annotation.constraint.Unmodifiable;
+import net.shibboleth.shared.collection.CollectionSupport;
import net.shibboleth.shared.logic.Constraint;
import net.shibboleth.shared.resolver.Criterion;
@@ -43,7 +44,8 @@ public class SignatureSigningConfigurationCriterion implements Criterion {
*/
public SignatureSigningConfigurationCriterion(@Nonnull @NonnullElements @NotEmpty final
List<SignatureSigningConfiguration> configurations) {
- configs = List.copyOf(Constraint.isNotNull(configurations, "List of configurations cannot be null"));
+ configs = CollectionSupport.copyToList(
+ Constraint.isNotNull(configurations, "List of configurations cannot be null"));
Constraint.isNotEmpty(configs, "At least one configuration is required");
}
@@ -55,7 +57,8 @@ public class SignatureSigningConfigurationCriterion implements Criterion {
*/
public SignatureSigningConfigurationCriterion(@Nonnull @NonnullElements @NotEmpty final
SignatureSigningConfiguration... configurations) {
- configs = List.of(Constraint.isNotNull(configurations, "List of configurations cannot be null"));
+ configs = CollectionSupport.listOf(
+ Constraint.isNotNull(configurations, "List of configurations cannot be null"));
Constraint.isNotEmpty(configs, "At least one configuration is required");
}
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/SignatureValidationConfigurationCriterion.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/SignatureValidationConfigurationCriterion.java
index 764cabc..9d5adfe 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/SignatureValidationConfigurationCriterion.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/SignatureValidationConfigurationCriterion.java
@@ -25,6 +25,7 @@ import net.shibboleth.shared.annotation.constraint.NonnullElements;
import net.shibboleth.shared.annotation.constraint.NotEmpty;
import net.shibboleth.shared.annotation.constraint.NotLive;
import net.shibboleth.shared.annotation.constraint.Unmodifiable;
+import net.shibboleth.shared.collection.CollectionSupport;
import net.shibboleth.shared.logic.Constraint;
import net.shibboleth.shared.resolver.Criterion;
@@ -46,7 +47,8 @@ public class SignatureValidationConfigurationCriterion implements Criterion {
*/
public SignatureValidationConfigurationCriterion(@Nonnull @NonnullElements @NotEmpty final
List<SignatureValidationConfiguration> configurations) {
- configs = List.copyOf(Constraint.isNotNull(configurations, "List of configurations cannot be null"));
+ configs = CollectionSupport.copyToList(
+ Constraint.isNotNull(configurations, "List of configurations cannot be null"));
Constraint.isNotEmpty(configs, "At least one configuration is required");
}
@@ -58,7 +60,8 @@ public class SignatureValidationConfigurationCriterion implements Criterion {
*/
public SignatureValidationConfigurationCriterion(@Nonnull @NonnullElements @NotEmpty final
SignatureValidationConfiguration... configurations) {
- configs = List.of(Constraint.isNotNull(configurations, "List of configurations cannot be null"));
+ configs = CollectionSupport.listOf(
+ Constraint.isNotNull(configurations, "List of configurations cannot be null"));
Constraint.isNotEmpty(configs, "At least one configuration is required");
}
@@ -104,5 +107,4 @@ public class SignatureValidationConfigurationCriterion implements Criterion {
return false;
}
-}
-
+}
\ No newline at end of file
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list