[java-opensaml] branch main updated: IDP-2069 - Null Handling Task
Scott Cantor
cantor.2 at osu.edu
Tue Mar 14 13:28:34 UTC 2023
This is an automated email from the git hooks/post-receive script.
scantor pushed a commit to branch main
in repository java-opensaml.
View the commit online:
http://git.shibboleth.net/view/?p=java-opensaml.git;a=commit;h=eaa6eaed946ff79c5bdfd7ec6bb9a3f463d337b9
The following commit(s) were added to refs/heads/main by this push:
new eaa6eaed9 IDP-2069 - Null Handling Task
eaa6eaed9 is described below
commit eaa6eaed946ff79c5bdfd7ec6bb9a3f463d337b9
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Tue Mar 14 09:28:31 2023 -0400
IDP-2069 - Null Handling Task
https://shibboleth.atlassian.net/browse/IDP-2069
Clean up opensaml-xmlsec-api.
---
.../opensaml/xmlsec/AlgorithmPolicyParameters.java | 19 ++-
.../xmlsec/KeyTransportAlgorithmPredicate.java | 6 +-
.../agreement/KeyAgreementProcessorRegistry.java | 10 +-
.../xmlsec/agreement/KeyAgreementSupport.java | 21 ++-
.../xmlsec/algorithm/AlgorithmSupport.java | 6 +
.../org/opensaml/xmlsec/encryption/DHKeyValue.java | 11 +-
.../opensaml/xmlsec/encryption/EncryptedData.java | 11 +-
.../opensaml/xmlsec/encryption/EncryptedKey.java | 13 +-
.../org/opensaml/xmlsec/encryption/Generator.java | 7 +-
.../java/org/opensaml/xmlsec/encryption/P.java | 7 +-
.../org/opensaml/xmlsec/encryption/Public.java | 7 +-
.../java/org/opensaml/xmlsec/encryption/Q.java | 7 +-
.../support/AbstractEncryptedKeyResolver.java | 41 ++---
.../support/ChainingEncryptedKeyResolver.java | 25 +--
.../xmlsec/encryption/support/Decrypter.java | 129 +++++++++-------
.../support/DefaultPreDecryptionValidator.java | 10 +-
.../xmlsec/encryption/support/Encrypter.java | 97 ++++++------
.../support/InlineEncryptedKeyResolver.java | 6 +-
.../support/PreDecryptionValidationException.java | 3 +-
...SimpleKeyInfoReferenceEncryptedKeyResolver.java | 3 +-
.../SimpleRetrievalMethodEncryptedKeyResolver.java | 14 +-
.../opensaml/xmlsec/keyinfo/KeyInfoSupport.java | 149 ++++++++++++------
.../signature/AbstractSignableXMLObject.java | 2 +-
.../opensaml/xmlsec/signature/CryptoBinary.java | 6 +-
.../xmlsec/signature/DEREncodedKeyValue.java | 13 +-
.../org/opensaml/xmlsec/signature/DSAKeyValue.java | 11 +-
.../org/opensaml/xmlsec/signature/ECKeyValue.java | 13 +-
.../org/opensaml/xmlsec/signature/ECPointType.java | 7 +-
.../org/opensaml/xmlsec/signature/Exponent.java | 7 +-
.../main/java/org/opensaml/xmlsec/signature/G.java | 7 +-
.../main/java/org/opensaml/xmlsec/signature/J.java | 7 +-
.../org/opensaml/xmlsec/signature/KeyInfo.java | 12 +-
.../xmlsec/signature/KeyInfoReference.java | 15 +-
.../org/opensaml/xmlsec/signature/KeyName.java | 7 +-
.../org/opensaml/xmlsec/signature/KeyValue.java | 11 +-
.../org/opensaml/xmlsec/signature/MgmtData.java | 7 +-
.../org/opensaml/xmlsec/signature/Modulus.java | 7 +-
.../org/opensaml/xmlsec/signature/NamedCurve.java | 13 +-
.../main/java/org/opensaml/xmlsec/signature/P.java | 7 +-
.../org/opensaml/xmlsec/signature/PGPData.java | 11 +-
.../org/opensaml/xmlsec/signature/PGPKeyID.java | 7 +-
.../opensaml/xmlsec/signature/PGPKeyPacket.java | 7 +-
.../org/opensaml/xmlsec/signature/PgenCounter.java | 7 +-
.../org/opensaml/xmlsec/signature/PublicKey.java | 7 +-
.../main/java/org/opensaml/xmlsec/signature/Q.java | 7 +-
.../org/opensaml/xmlsec/signature/RSAKeyValue.java | 11 +-
.../opensaml/xmlsec/signature/RetrievalMethod.java | 15 +-
.../org/opensaml/xmlsec/signature/SPKIData.java | 10 +-
.../org/opensaml/xmlsec/signature/SPKISexp.java | 7 +-
.../java/org/opensaml/xmlsec/signature/Seed.java | 7 +-
.../xmlsec/signature/SignableXMLObject.java | 6 +-
.../org/opensaml/xmlsec/signature/Signature.java | 12 +-
.../org/opensaml/xmlsec/signature/Transform.java | 12 +-
.../org/opensaml/xmlsec/signature/Transforms.java | 10 +-
.../org/opensaml/xmlsec/signature/X509CRL.java | 7 +-
.../opensaml/xmlsec/signature/X509Certificate.java | 7 +-
.../org/opensaml/xmlsec/signature/X509Data.java | 10 +-
.../org/opensaml/xmlsec/signature/X509Digest.java | 13 +-
.../opensaml/xmlsec/signature/X509IssuerName.java | 7 +-
.../xmlsec/signature/X509IssuerSerial.java | 11 +-
.../org/opensaml/xmlsec/signature/X509SKI.java | 7 +-
.../xmlsec/signature/X509SerialNumber.java | 11 +-
.../opensaml/xmlsec/signature/X509SubjectName.java | 7 +-
.../java/org/opensaml/xmlsec/signature/XPath.java | 7 +-
.../main/java/org/opensaml/xmlsec/signature/Y.java | 7 +-
.../signature/support/SignatureConstants.java | 171 +++++++++++----------
.../xmlsec/signature/support/SignatureSupport.java | 14 +-
.../SignatureValidationParametersCriterion.java | 2 +-
.../signature/support/SignatureValidator.java | 4 +-
.../opensaml/xmlsec/signature/support/Signer.java | 9 +-
.../signature/support/URIContentReference.java | 17 +-
.../support/XMLSignatureCredentialContext.java | 2 +-
.../KeyAgreementProcessorRegistryTest.java | 27 +++-
73 files changed, 754 insertions(+), 476 deletions(-)
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/AlgorithmPolicyParameters.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/AlgorithmPolicyParameters.java
index d99349aea..8eec48efd 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/AlgorithmPolicyParameters.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/AlgorithmPolicyParameters.java
@@ -18,8 +18,6 @@
package org.opensaml.xmlsec;
import java.util.Collection;
-import java.util.Collections;
-import java.util.Set;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
@@ -27,6 +25,7 @@ import javax.annotation.Nullable;
import net.shibboleth.shared.annotation.constraint.NonnullElements;
import net.shibboleth.shared.annotation.constraint.NotLive;
import net.shibboleth.shared.annotation.constraint.Unmodifiable;
+import net.shibboleth.shared.collection.CollectionSupport;
import net.shibboleth.shared.primitive.StringSupport;
/**
@@ -42,8 +41,8 @@ public class AlgorithmPolicyParameters {
/** Constructor. */
public AlgorithmPolicyParameters() {
- includedAlgorithmURIs = Collections.emptySet();
- excludedAlgorithmURIs = Collections.emptySet();
+ includedAlgorithmURIs = CollectionSupport.emptySet();
+ excludedAlgorithmURIs = CollectionSupport.emptySet();
}
/**
@@ -60,12 +59,12 @@ public class AlgorithmPolicyParameters {
*
* @param uris the included algorithms
*/
- public void setIncludedAlgorithms(@Nullable final Collection<String> uris) {
+ public void setIncludedAlgorithms(@Nullable @NonnullElements final Collection<String> uris) {
if (uris == null) {
- includedAlgorithmURIs = Collections.emptySet();
+ includedAlgorithmURIs = CollectionSupport.emptySet();
return;
}
- includedAlgorithmURIs = Set.copyOf(StringSupport.normalizeStringCollection(uris));
+ includedAlgorithmURIs = CollectionSupport.copyToSet(StringSupport.normalizeStringCollection(uris));
}
/**
@@ -82,12 +81,12 @@ public class AlgorithmPolicyParameters {
*
* @param uris the excluded algorithms
*/
- public void setExcludedAlgorithms(@Nonnull @NonnullElements final Collection<String> uris) {
+ public void setExcludedAlgorithms(@Nullable @NonnullElements final Collection<String> uris) {
if (uris == null) {
- excludedAlgorithmURIs = Collections.emptySet();
+ excludedAlgorithmURIs = CollectionSupport.emptySet();
return;
}
- excludedAlgorithmURIs = Set.copyOf(StringSupport.normalizeStringCollection(uris));
+ excludedAlgorithmURIs = CollectionSupport.copyToSet(StringSupport.normalizeStringCollection(uris));
}
}
\ No newline at end of file
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/KeyTransportAlgorithmPredicate.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/KeyTransportAlgorithmPredicate.java
index 3170f25f5..3824b97da 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/KeyTransportAlgorithmPredicate.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/KeyTransportAlgorithmPredicate.java
@@ -38,13 +38,13 @@ public interface KeyTransportAlgorithmPredicate extends Predicate<KeyTransportAl
public static final class SelectionInput {
/** The candidate key transport algorithm. */
- private String keyTransportAlgorithm;
+ @Nonnull private final String keyTransportAlgorithm;
/** The candidate data encryption algorithm. */
- private String dataEncryptionAlgorithm;
+ @Nullable private final String dataEncryptionAlgorithm;
/** The candidate key transport credential. */
- private Credential keyTransportCredential;
+ @Nullable private final Credential keyTransportCredential;
/**
* Constructor.
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/agreement/KeyAgreementProcessorRegistry.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/agreement/KeyAgreementProcessorRegistry.java
index 900363a06..51a038a9f 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/agreement/KeyAgreementProcessorRegistry.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/agreement/KeyAgreementProcessorRegistry.java
@@ -24,6 +24,10 @@ import java.util.Set;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
+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.primitive.StringSupport;
@@ -78,8 +82,8 @@ public class KeyAgreementProcessorRegistry {
*
* @return the set of registered algorithms
*/
- @Nonnull public Set<String> getRegisteredAlgorithms() {
- return Set.copyOf(processors.keySet());
+ @Nonnull @NonnullElements @Unmodifiable @NotLive public Set<String> getRegisteredAlgorithms() {
+ return CollectionSupport.copyToSet(processors.keySet());
}
/**
@@ -95,4 +99,4 @@ public class KeyAgreementProcessorRegistry {
return processors.get(alg);
}
-}
+}
\ No newline at end of file
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/agreement/KeyAgreementSupport.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/agreement/KeyAgreementSupport.java
index 9a9577d80..bf7764ebf 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/agreement/KeyAgreementSupport.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/agreement/KeyAgreementSupport.java
@@ -17,12 +17,14 @@
package org.opensaml.xmlsec.agreement;
+import java.security.PublicKey;
import java.util.Set;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import org.opensaml.core.config.ConfigurationService;
+import org.opensaml.core.xml.XMLObject;
import org.opensaml.security.credential.Credential;
import org.opensaml.security.crypto.JCAConstants;
import org.opensaml.xmlsec.algorithm.AlgorithmSupport;
@@ -31,6 +33,7 @@ import org.opensaml.xmlsec.encryption.EncryptedType;
import org.opensaml.xmlsec.encryption.EncryptionMethod;
import org.opensaml.xmlsec.encryption.KeySize;
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
import net.shibboleth.shared.collection.CollectionSupport;
/**
@@ -39,7 +42,8 @@ import net.shibboleth.shared.collection.CollectionSupport;
public final class KeyAgreementSupport {
/** JCA key algorithms that support key agreement. */
- public static final Set<String> KEY_ALGORITHMS = CollectionSupport.setOf(JCAConstants.KEY_ALGO_EC, JCAConstants.KEY_ALGO_DH);
+ @Nonnull @NonnullElements public static final Set<String> KEY_ALGORITHMS =
+ CollectionSupport.setOf(JCAConstants.KEY_ALGO_EC, JCAConstants.KEY_ALGO_DH);
/** Constructor. */
private KeyAgreementSupport() {}
@@ -91,17 +95,19 @@ public final class KeyAgreementSupport {
* @return the key size, or null if not present
*/
@Nullable public static Integer getExplicitKeySize(@Nonnull final AgreementMethod agreementMethod) {
- if (agreementMethod.getParent() == null || agreementMethod.getParent().getParent() == null
- || ! EncryptedType.class.isInstance(agreementMethod.getParent().getParent())) {
+ final XMLObject parent = agreementMethod.getParent();
+ if (parent == null || parent.getParent() == null || ! EncryptedType.class.isInstance(parent.getParent())) {
return null;
}
- final EncryptedType et = EncryptedType.class.cast(agreementMethod.getParent().getParent());
- if (et.getEncryptionMethod() == null || et.getEncryptionMethod().getKeySize() == null) {
+ final EncryptedType et = EncryptedType.class.cast(parent.getParent());
+ final EncryptionMethod method = et.getEncryptionMethod();
+ if (method == null) {
return null;
}
- return et.getEncryptionMethod().getKeySize().getValue();
+ final KeySize size = method.getKeySize();
+ return size != null ? size.getValue() : null;
}
/**
@@ -147,6 +153,7 @@ public final class KeyAgreementSupport {
return false;
}
- return credential.getPublicKey() != null && KEY_ALGORITHMS.contains(credential.getPublicKey().getAlgorithm());
+ final PublicKey pk = credential.getPublicKey();
+ return pk != null && KEY_ALGORITHMS.contains(pk.getAlgorithm());
}
}
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/algorithm/AlgorithmSupport.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/algorithm/AlgorithmSupport.java
index 69b1e469e..dd8b450dc 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/algorithm/AlgorithmSupport.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/algorithm/AlgorithmSupport.java
@@ -388,6 +388,9 @@ public final class AlgorithmSupport {
@Nonnull public static KeyPair generateKeyPair(@Nonnull final String algoURI, final int keyLength)
throws NoSuchAlgorithmException, NoSuchProviderException {
final String jceAlgorithmName = getKeyAlgorithm(algoURI);
+ if (jceAlgorithmName == null) {
+ throw new NoSuchAlgorithmException("No JCE algorithm found for " + algoURI);
+ }
return KeySupport.generateKeyPair(jceAlgorithmName, keyLength, null);
}
@@ -405,6 +408,9 @@ public final class AlgorithmSupport {
@Nonnull final AlgorithmParameterSpec paramSpec)
throws NoSuchAlgorithmException, NoSuchProviderException, InvalidAlgorithmParameterException {
final String jceAlgorithmName = getKeyAlgorithm(algoURI);
+ if (jceAlgorithmName == null) {
+ throw new NoSuchAlgorithmException("No JCE algorithm found for " + algoURI);
+ }
return KeySupport.generateKeyPair(jceAlgorithmName, paramSpec, null);
}
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/DHKeyValue.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/DHKeyValue.java
index b98cf4e27..0b52b8dab 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/DHKeyValue.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/DHKeyValue.java
@@ -17,29 +17,32 @@
package org.opensaml.xmlsec.encryption;
+import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import javax.xml.namespace.QName;
import org.opensaml.core.xml.XMLObject;
import org.opensaml.xmlsec.encryption.support.EncryptionConstants;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
/**
* XMLObject representing XML Encryption, version 20021210, DHKeyValue element.
*/
public interface DHKeyValue extends XMLObject {
/** Element local name. */
- public static final String DEFAULT_ELEMENT_LOCAL_NAME = "DHKeyValue";
+ @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "DHKeyValue";
/** Default element name. */
- public static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC_NS,
+ @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC_NS,
DEFAULT_ELEMENT_LOCAL_NAME, EncryptionConstants.XMLENC_PREFIX);
/** Local name of the XSI type. */
- public static final String TYPE_LOCAL_NAME = "DHKeyValueType";
+ @Nonnull @NotEmpty public static final String TYPE_LOCAL_NAME = "DHKeyValueType";
/** QName of the XSI type. */
- public static final QName TYPE_NAME = new QName(EncryptionConstants.XMLENC_NS, TYPE_LOCAL_NAME,
+ @Nonnull public static final QName TYPE_NAME = new QName(EncryptionConstants.XMLENC_NS, TYPE_LOCAL_NAME,
EncryptionConstants.XMLENC_PREFIX);
/**
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/EncryptedData.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/EncryptedData.java
index 6a5e6b4c4..776ffb3eb 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/EncryptedData.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/EncryptedData.java
@@ -17,27 +17,30 @@
package org.opensaml.xmlsec.encryption;
+import javax.annotation.Nonnull;
import javax.xml.namespace.QName;
import org.opensaml.xmlsec.encryption.support.EncryptionConstants;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
/**
* XMLObject representing XML Encryption, version 20021210, EncryptedData element.
*/
public interface EncryptedData extends EncryptedType {
/** Element local name. */
- public static final String DEFAULT_ELEMENT_LOCAL_NAME = "EncryptedData";
+ @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "EncryptedData";
/** Default element name. */
- public static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC_NS,
+ @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC_NS,
DEFAULT_ELEMENT_LOCAL_NAME, EncryptionConstants.XMLENC_PREFIX);
/** Local name of the XSI type. */
- public static final String TYPE_LOCAL_NAME = "EncryptedDataType";
+ @Nonnull @NotEmpty public static final String TYPE_LOCAL_NAME = "EncryptedDataType";
/** QName of the XSI type. */
- public static final QName TYPE_NAME = new QName(EncryptionConstants.XMLENC_NS, TYPE_LOCAL_NAME,
+ @Nonnull public static final QName TYPE_NAME = new QName(EncryptionConstants.XMLENC_NS, TYPE_LOCAL_NAME,
EncryptionConstants.XMLENC_PREFIX);
}
\ No newline at end of file
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/EncryptedKey.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/EncryptedKey.java
index ad7c4a89c..7c31a1501 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/EncryptedKey.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/EncryptedKey.java
@@ -17,32 +17,35 @@
package org.opensaml.xmlsec.encryption;
+import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import javax.xml.namespace.QName;
import org.opensaml.xmlsec.encryption.support.EncryptionConstants;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
/**
* XMLObject representing XML Encryption, version 20021210, EncryptedKey element.
*/
public interface EncryptedKey extends EncryptedType {
/** Element local name. */
- public static final String DEFAULT_ELEMENT_LOCAL_NAME = "EncryptedKey";
+ @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "EncryptedKey";
/** Default element name. */
- public static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC_NS,
+ @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC_NS,
DEFAULT_ELEMENT_LOCAL_NAME, EncryptionConstants.XMLENC_PREFIX);
/** Local name of the XSI type. */
- public static final String TYPE_LOCAL_NAME = "EncryptedKeyType";
+ @Nonnull @NotEmpty public static final String TYPE_LOCAL_NAME = "EncryptedKeyType";
/** QName of the XSI type. */
- public static final QName TYPE_NAME = new QName(EncryptionConstants.XMLENC_NS, TYPE_LOCAL_NAME,
+ @Nonnull public static final QName TYPE_NAME = new QName(EncryptionConstants.XMLENC_NS, TYPE_LOCAL_NAME,
EncryptionConstants.XMLENC_PREFIX);
/** Recipient attribute name. */
- public static final String RECIPIENT_ATTRIB_NAME = "Recipient";
+ @Nonnull @NotEmpty public static final String RECIPIENT_ATTRIB_NAME = "Recipient";
/**
* Gets the hint about for whom this encrypted key is intended.
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/Generator.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/Generator.java
index ec2d80204..467e305c6 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/Generator.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/Generator.java
@@ -17,21 +17,24 @@
package org.opensaml.xmlsec.encryption;
+import javax.annotation.Nonnull;
import javax.xml.namespace.QName;
import org.opensaml.xmlsec.encryption.support.EncryptionConstants;
import org.opensaml.xmlsec.signature.CryptoBinary;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
/**
* XMLObject representing XML Encryption, version 20021210, Generator element.
*/
public interface Generator extends CryptoBinary {
/** Element local name. */
- public static final String DEFAULT_ELEMENT_LOCAL_NAME = "Generator";
+ @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "Generator";
/** Default element name. */
- public static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC_NS,
+ @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC_NS,
DEFAULT_ELEMENT_LOCAL_NAME, EncryptionConstants.XMLENC_PREFIX);
}
\ No newline at end of file
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/P.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/P.java
index ed3bf5ba7..340336165 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/P.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/P.java
@@ -17,21 +17,24 @@
package org.opensaml.xmlsec.encryption;
+import javax.annotation.Nonnull;
import javax.xml.namespace.QName;
import org.opensaml.xmlsec.encryption.support.EncryptionConstants;
import org.opensaml.xmlsec.signature.CryptoBinary;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
/**
* XMLObject representing XML Encryption, version 20021210, P element.
*/
public interface P extends CryptoBinary {
/** Element local name. */
- public static final String DEFAULT_ELEMENT_LOCAL_NAME = "P";
+ @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "P";
/** Default element name. */
- public static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC_NS,
+ @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC_NS,
DEFAULT_ELEMENT_LOCAL_NAME, EncryptionConstants.XMLENC_PREFIX);
}
\ No newline at end of file
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/Public.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/Public.java
index 4bc65e746..1cd6c921b 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/Public.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/Public.java
@@ -17,21 +17,24 @@
package org.opensaml.xmlsec.encryption;
+import javax.annotation.Nonnull;
import javax.xml.namespace.QName;
import org.opensaml.xmlsec.encryption.support.EncryptionConstants;
import org.opensaml.xmlsec.signature.CryptoBinary;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
/**
* XMLObject representing XML Encryption, version 20021210, Public element.
*/
public interface Public extends CryptoBinary {
/** Element local name. */
- public static final String DEFAULT_ELEMENT_LOCAL_NAME = "Public";
+ @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "Public";
/** Default element name. */
- public static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC_NS,
+ @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC_NS,
DEFAULT_ELEMENT_LOCAL_NAME, EncryptionConstants.XMLENC_PREFIX);
}
\ No newline at end of file
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/Q.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/Q.java
index 1c1078939..9c8fe9058 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/Q.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/Q.java
@@ -17,21 +17,24 @@
package org.opensaml.xmlsec.encryption;
+import javax.annotation.Nonnull;
import javax.xml.namespace.QName;
import org.opensaml.xmlsec.encryption.support.EncryptionConstants;
import org.opensaml.xmlsec.signature.CryptoBinary;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
/**
* XMLObject representing XML Encryption, version 20021210, Q element.
*/
public interface Q extends CryptoBinary {
/** Element local name. */
- public static final String DEFAULT_ELEMENT_LOCAL_NAME = "Q";
+ @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "Q";
/** Default element name. */
- public static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC_NS,
+ @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC_NS,
DEFAULT_ELEMENT_LOCAL_NAME, EncryptionConstants.XMLENC_PREFIX);
}
\ No newline at end of file
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/support/AbstractEncryptedKeyResolver.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/support/AbstractEncryptedKeyResolver.java
index 5b708d1e5..5252f2ab9 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/support/AbstractEncryptedKeyResolver.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/support/AbstractEncryptedKeyResolver.java
@@ -17,7 +17,6 @@
package org.opensaml.xmlsec.encryption.support;
-import java.util.Collections;
import java.util.List;
import java.util.Set;
@@ -27,13 +26,17 @@ import javax.annotation.Nullable;
import net.shibboleth.shared.annotation.constraint.NonnullElements;
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.primitive.StringSupport;
+import org.opensaml.xmlsec.encryption.CarriedKeyName;
import org.opensaml.xmlsec.encryption.DataReference;
import org.opensaml.xmlsec.encryption.EncryptedData;
import org.opensaml.xmlsec.encryption.EncryptedKey;
+import org.opensaml.xmlsec.encryption.ReferenceList;
import org.opensaml.xmlsec.keyinfo.KeyInfoSupport;
+import org.opensaml.xmlsec.signature.KeyInfo;
import com.google.common.base.Strings;
@@ -43,11 +46,11 @@ import com.google.common.base.Strings;
public abstract class AbstractEncryptedKeyResolver implements EncryptedKeyResolver {
/** Recipient attribute criteria against which to match.*/
- private final Set<String> recipients;
+ @Nonnull private final Set<String> recipients;
/** Constructor. */
public AbstractEncryptedKeyResolver() {
- recipients = Collections.emptySet();
+ recipients = CollectionSupport.emptySet();
}
/**
@@ -56,7 +59,7 @@ public abstract class AbstractEncryptedKeyResolver implements EncryptedKeyResolv
* @param newRecipents set of recipients
*/
public AbstractEncryptedKeyResolver(@Nullable final Set<String> newRecipents) {
- recipients = Set.copyOf(StringSupport.normalizeStringCollection(newRecipents));
+ recipients = CollectionSupport.copyToSet(StringSupport.normalizeStringCollection(newRecipents));
}
/**
@@ -67,9 +70,9 @@ public abstract class AbstractEncryptedKeyResolver implements EncryptedKeyResolv
public AbstractEncryptedKeyResolver(@Nullable final String recipient) {
final String trimmed = StringSupport.trimOrNull(recipient);
if (trimmed != null) {
- recipients = Collections.singleton(trimmed);
+ recipients = CollectionSupport.singleton(trimmed);
} else {
- recipients = Collections.emptySet();
+ recipients = CollectionSupport.emptySet();
}
}
@@ -113,18 +116,17 @@ public abstract class AbstractEncryptedKeyResolver implements EncryptedKeyResolv
Constraint.isNotNull(encryptedData, "EncryptedData cannot be null");
Constraint.isNotNull(encryptedKey, "EncryptedKey cannot be null");
- if (encryptedKey.getCarriedKeyName() == null
- || Strings.isNullOrEmpty(encryptedKey.getCarriedKeyName().getValue()) ) {
+ final CarriedKeyName carried = encryptedKey.getCarriedKeyName();
+ if (carried == null || Strings.isNullOrEmpty(carried.getValue()) ) {
return true;
- } else if (encryptedData.getKeyInfo() == null
- || encryptedData.getKeyInfo().getKeyNames().isEmpty() ) {
- return false;
}
- final String keyCarriedKeyName = encryptedKey.getCarriedKeyName().getValue();
- final List<String> dataKeyNames = KeyInfoSupport.getKeyNames(encryptedData.getKeyInfo());
+ final KeyInfo keyInfo = encryptedData.getKeyInfo();
+ if (keyInfo == null || keyInfo.getKeyNames().isEmpty() ) {
+ return false;
+ }
- return dataKeyNames.contains(keyCarriedKeyName);
+ return KeyInfoSupport.getKeyNames(keyInfo).contains(carried.getValue());
}
/**
@@ -141,18 +143,19 @@ public abstract class AbstractEncryptedKeyResolver implements EncryptedKeyResolv
Constraint.isNotNull(encryptedData, "EncryptedData cannot be null");
Constraint.isNotNull(encryptedKey, "EncryptedKey cannot be null");
- if (encryptedKey.getReferenceList() == null
- || encryptedKey.getReferenceList().getDataReferences().isEmpty() ) {
+ final ReferenceList reflist = encryptedKey.getReferenceList();
+ if (reflist == null || reflist.getDataReferences().isEmpty() ) {
return true;
} else if (Strings.isNullOrEmpty(encryptedData.getID())) {
return false;
}
- final List<DataReference> drlist = encryptedKey.getReferenceList().getDataReferences();
+ final List<DataReference> drlist = reflist.getDataReferences();
for (final DataReference dr : drlist) {
- if (Strings.isNullOrEmpty(dr.getURI()) || !dr.getURI().startsWith("#") ) {
+ final String druri = dr.getURI();
+ if (druri == null || !druri.startsWith("#") ) {
continue;
- } else if (dr.resolveIDFromRoot(dr.getURI().substring(1)) == encryptedData) {
+ } else if (dr.resolveIDFromRoot(druri.substring(1)) == encryptedData) {
return true;
}
}
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/support/ChainingEncryptedKeyResolver.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/support/ChainingEncryptedKeyResolver.java
index ec1d8acda..7cb42804d 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/support/ChainingEncryptedKeyResolver.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/support/ChainingEncryptedKeyResolver.java
@@ -29,13 +29,14 @@ import javax.annotation.Nullable;
import org.opensaml.xmlsec.encryption.EncryptedData;
import org.opensaml.xmlsec.encryption.EncryptedKey;
import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import net.shibboleth.shared.annotation.ParameterName;
import net.shibboleth.shared.annotation.constraint.NonnullElements;
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.primitive.LoggerFactory;
/**
* An implementation of {@link EncryptedKeyResolver} which chains multiple other resolver implementations together,
@@ -57,7 +58,8 @@ public class ChainingEncryptedKeyResolver extends AbstractEncryptedKeyResolver {
public ChainingEncryptedKeyResolver(
@Nonnull @NonnullElements @ParameterName(name="encKeyResolvers")
final List<EncryptedKeyResolver> encKeyResolvers) {
- resolvers = List.copyOf(Constraint.isNotNull(encKeyResolvers, "List of EncryptedKeyResolvers cannot be null"));
+ resolvers = CollectionSupport.copyToList(
+ Constraint.isNotNull(encKeyResolvers, "List of EncryptedKeyResolvers cannot be null"));
}
/**
@@ -71,7 +73,8 @@ public class ChainingEncryptedKeyResolver extends AbstractEncryptedKeyResolver {
final List<EncryptedKeyResolver> encKeyResolvers,
@Nullable @ParameterName(name="recipients") final Set<String> recipients) {
super(recipients);
- resolvers = List.copyOf(Constraint.isNotNull(encKeyResolvers, "List of EncryptedKeyResolvers cannot be null"));
+ resolvers = CollectionSupport.copyToList(
+ Constraint.isNotNull(encKeyResolvers, "List of EncryptedKeyResolvers cannot be null"));
}
/**
@@ -112,10 +115,10 @@ public class ChainingEncryptedKeyResolver extends AbstractEncryptedKeyResolver {
public class ChainingIterable implements Iterable<EncryptedKey> {
/** The chaining encrypted key resolver which owns this instance. */
- private final ChainingEncryptedKeyResolver parent;
+ @Nonnull private final ChainingEncryptedKeyResolver parent;
/** The EncryptedData context for resolution. */
- private final EncryptedData encryptedData;
+ @Nonnull private final EncryptedData encryptedData;
/**
* Constructor.
@@ -130,7 +133,6 @@ public class ChainingEncryptedKeyResolver extends AbstractEncryptedKeyResolver {
}
/** {@inheritDoc} */
- @Override
@Nonnull public Iterator<EncryptedKey> iterator() {
return new ChainingIterator(parent, encryptedData);
}
@@ -144,16 +146,17 @@ public class ChainingEncryptedKeyResolver extends AbstractEncryptedKeyResolver {
public class ChainingIterator implements Iterator<EncryptedKey> {
/** Class logger. */
- private final Logger log = LoggerFactory.getLogger(ChainingEncryptedKeyResolver.ChainingIterator.class);
+ @Nonnull private final Logger log =
+ LoggerFactory.getLogger(ChainingEncryptedKeyResolver.ChainingIterator.class);
/** The chaining encrypted key resolver which owns this instance. */
- private final ChainingEncryptedKeyResolver parent;
+ @Nonnull private final ChainingEncryptedKeyResolver parent;
/** The EncryptedData context for resolution. */
- private final EncryptedData encryptedData;
+ @Nonnull private final EncryptedData encryptedData;
/** The iterator over resolvers in the chain. */
- private final Iterator<EncryptedKeyResolver> resolverIterator;
+ @Nonnull private final Iterator<EncryptedKeyResolver> resolverIterator;
/** The iterator over EncryptedKey instances from the current resolver. */
private Iterator<EncryptedKey> keyIterator;
@@ -162,7 +165,7 @@ public class ChainingEncryptedKeyResolver extends AbstractEncryptedKeyResolver {
private EncryptedKeyResolver currentResolver;
/** The next encrypted key that is safe to return. */
- private EncryptedKey nextKey;
+ @Nullable private EncryptedKey nextKey;
/**
* Constructor.
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/support/Decrypter.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/support/Decrypter.java
index 9dcfd8250..415414caf 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/support/Decrypter.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/support/Decrypter.java
@@ -30,6 +30,7 @@ import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.LoggerFactory;
import net.shibboleth.shared.primitive.StringSupport;
import net.shibboleth.shared.resolver.CriteriaSet;
import net.shibboleth.shared.resolver.Criterion;
@@ -62,13 +63,14 @@ import org.opensaml.xmlsec.encryption.EncryptedData;
import org.opensaml.xmlsec.encryption.EncryptedKey;
import org.opensaml.xmlsec.encryption.EncryptedType;
import org.opensaml.xmlsec.encryption.EncryptionMethod;
+import org.opensaml.xmlsec.encryption.KeySize;
import org.opensaml.xmlsec.encryption.MGF;
import org.opensaml.xmlsec.keyinfo.KeyInfoCredentialResolver;
import org.opensaml.xmlsec.keyinfo.KeyInfoCriterion;
import org.opensaml.xmlsec.signature.DigestMethod;
import org.opensaml.xmlsec.signature.support.SignatureConstants;
import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+
import org.w3c.dom.Document;
import org.w3c.dom.DocumentFragment;
import org.w3c.dom.Element;
@@ -186,44 +188,44 @@ import com.google.common.base.Strings;
public class Decrypter {
/** ParserPool used in parsing decrypted data. */
- private final ParserPool parserPool;
+ @Nonnull private final ParserPool parserPool;
/** Unmarshaller factory, used in decryption of EncryptedData objects. */
- private final UnmarshallerFactory unmarshallerFactory;
+ @Nonnull private final UnmarshallerFactory unmarshallerFactory;
/** Class logger. */
- private final Logger log = LoggerFactory.getLogger(Decrypter.class);
+ @Nonnull private final Logger log = LoggerFactory.getLogger(Decrypter.class);
/** Resolver for data encryption keys. */
- private KeyInfoCredentialResolver resolver;
+ @Nullable private KeyInfoCredentialResolver resolver;
/** Resolver for key encryption keys. */
- private KeyInfoCredentialResolver kekResolver;
+ @Nullable private KeyInfoCredentialResolver kekResolver;
/** Resolver for EncryptedKey instances which contain the encrypted data encryption key. */
- private EncryptedKeyResolver encKeyResolver;
+ @Nullable private EncryptedKeyResolver encKeyResolver;
/** The collection of algorithm URIs which are included. */
- private Collection<String> includedAlgorithmURIs;
+ @Nullable private Collection<String> includedAlgorithmURIs;
/** The collection of algorithm URIs which are excluded. */
- private Collection<String> excludedAlgorithmURIs;
+ @Nullable private Collection<String> excludedAlgorithmURIs;
/** Additional criteria to use when resolving credentials based on an EncryptedData's KeyInfo. */
- private CriteriaSet resolverCriteria;
+ @Nullable private CriteriaSet resolverCriteria;
/** Additional criteria to use when resolving credentials based on an EncryptedKey's KeyInfo. */
- private CriteriaSet kekResolverCriteria;
+ @Nullable private CriteriaSet kekResolverCriteria;
/** The name of the JCA security provider to use. */
- private String jcaProviderName;
+ @Nullable private String jcaProviderName;
/** Flag to determine whether by default the Element which backs the underlying decrypted SAMLObject will be the
* root of a new DOM document. */
private boolean defaultRootInNewDocument;
/** The pre-decryption validator instance. */
- private PreDecryptionValidator preDecryptionValidator;
+ @Nullable private PreDecryptionValidator preDecryptionValidator;
/**
* Constructor.
@@ -286,9 +288,11 @@ public class Decrypter {
// Note: Use of this internal JAXP ParserPool is hopefully only temporary,
// to be replaced when Xerces implements DOM 3 LSParser.parseWithContext(...).
- parserPool = buildParserPool();
+ parserPool = Constraint.isNotNull(ConfigurationService.get(DecryptionParserPool.class),
+ "DecryptionParserPool has not been registered with the global configuration").getParserPool();
- unmarshallerFactory = XMLObjectProviderRegistrySupport.getUnmarshallerFactory();
+ unmarshallerFactory = Constraint.isNotNull(XMLObjectProviderRegistrySupport.getUnmarshallerFactory(),
+ "UnmarshallerFactory not registered with the global configuration");
defaultRootInNewDocument = false;
@@ -300,7 +304,7 @@ public class Decrypter {
*
* @return the validator, may be null
*/
- @Nullable PreDecryptionValidator getPreDecryptionValidator() {
+ @Nullable public PreDecryptionValidator getPreDecryptionValidator() {
return preDecryptionValidator;
}
@@ -544,13 +548,15 @@ public class Decrypter {
log.debug("Failed to decrypt EncryptedData using standard KeyInfo resolver");
}
- final String algorithm = encryptedData.getEncryptionMethod().getAlgorithm();
+ final EncryptionMethod method = encryptedData.getEncryptionMethod();
+ final String algorithm = method != null ? method.getAlgorithm() : null;
if (Strings.isNullOrEmpty(algorithm)) {
final String msg = "EncryptedData's EncryptionMethod Algorithm attribute was empty, "
+ "key decryption could not be attempted";
log.error(msg);
throw new DecryptionException(msg);
} else if (encKeyResolver != null) {
+ assert algorithm != null;
docFrag = decryptUsingResolvedEncryptedKey(encryptedData, algorithm);
if (docFrag != null) {
return docFrag;
@@ -629,7 +635,9 @@ public class Decrypter {
throw new DecryptionException("EncryptedData could not be decrypted");
}
final ByteArrayInputStream input = new ByteArrayInputStream(bytes);
- final DocumentFragment docFragment = parseInputStream(input, encryptedData.getDOM().getOwnerDocument());
+ final Element domNode = encryptedData.getDOM();
+ assert domNode != null;
+ final DocumentFragment docFragment = parseInputStream(input, domNode.getOwnerDocument());
return docFragment;
}
@@ -655,9 +663,14 @@ public class Decrypter {
final CriteriaSet criteriaSet = buildCredentialCriteria(encryptedKey, kekResolverCriteria);
try {
+ assert kekResolver != null;
for (final Credential cred : kekResolver.resolve(criteriaSet)) {
try {
- return decryptKey(encryptedKey, algorithm, CredentialSupport.extractDecryptionKey(cred));
+ final Key decKey = CredentialSupport.extractDecryptionKey(cred);
+ if (decKey == null) {
+ throw new DecryptionException("Unable to extract key decryption key");
+ }
+ return decryptKey(encryptedKey, algorithm, decKey);
} catch (final DecryptionException e) {
final String msg =
"Attempt to decrypt EncryptedKey using credential from KEK KeyInfo resolver failed: ";
@@ -685,10 +698,7 @@ public class Decrypter {
*/
@Nonnull public Key decryptKey(@Nonnull final EncryptedKey encryptedKey, @Nonnull final String algorithm,
@Nonnull final Key kek) throws DecryptionException {
- if (kek == null) {
- log.error("Data encryption key was null");
- throw new IllegalArgumentException("Data encryption key cannot be null");
- } else if (Strings.isNullOrEmpty(algorithm)) {
+ if (Strings.isNullOrEmpty(algorithm)) {
log.error("Algorithm of encrypted key not supplied, key decryption cannot proceed");
throw new DecryptionException("Algorithm of encrypted key not supplied, key decryption cannot proceed");
}
@@ -720,6 +730,7 @@ public class Decrypter {
final org.apache.xml.security.encryption.EncryptedKey encKey;
try {
final Element targetElement = encryptedKey.getDOM();
+ assert targetElement != null;
encKey = xmlCipher.loadEncryptedKey(targetElement.getOwnerDocument(), targetElement);
} catch (final XMLEncryptionException e) {
log.error("Error when loading library native encrypted key representation: {}", e.getMessage());
@@ -758,8 +769,8 @@ public class Decrypter {
protected void preProcessEncryptedData(@Nonnull final EncryptedData encryptedData,
@Nonnull final Key dataEncKey) throws DecryptionException {
- if (getPreDecryptionValidator() != null) {
- getPreDecryptionValidator().validate(encryptedData);
+ if (preDecryptionValidator != null) {
+ preDecryptionValidator.validate(encryptedData);
}
}
@@ -779,8 +790,8 @@ public class Decrypter {
protected void preProcessEncryptedKey(@Nonnull final EncryptedKey encryptedKey, @Nonnull final String algorithm,
@Nonnull final Key kek) throws DecryptionException {
- if (getPreDecryptionValidator() != null) {
- getPreDecryptionValidator().validate(encryptedKey);
+ if (preDecryptionValidator != null) {
+ preDecryptionValidator.validate(encryptedKey);
}
}
@@ -794,9 +805,14 @@ public class Decrypter {
if (resolver != null) {
final CriteriaSet criteriaSet = buildCredentialCriteria(encryptedData, resolverCriteria);
try {
+ assert resolver != null;
for (final Credential cred : resolver.resolve(criteriaSet)) {
try {
- return decryptDataToDOM(encryptedData, CredentialSupport.extractDecryptionKey(cred));
+ final Key decKey = CredentialSupport.extractDecryptionKey(cred);
+ if (decKey == null) {
+ throw new DecryptionException("Unable to extract key from resolved credential");
+ }
+ return decryptDataToDOM(encryptedData, decKey);
} catch (final DecryptionException e) {
final String msg =
"Decryption attempt using credential from standard KeyInfo resolver failed: ";
@@ -824,6 +840,7 @@ public class Decrypter {
if (encKeyResolver != null) {
for (final EncryptedKey encryptedKey : encKeyResolver.resolve(encryptedData)) {
try {
+ assert encryptedKey != null;
final Key decryptedKey = decryptKey(encryptedKey, algorithm);
return decryptDataToDOM(encryptedData, decryptedKey);
} catch (final DecryptionException e) {
@@ -936,11 +953,15 @@ public class Decrypter {
log.debug("Added decryption key length criteria from EncryptionMethod algorithm URI: {}", lengthCrit
.getKeyLength());
} else {
- if (encMethod.getKeySize() != null && encMethod.getKeySize().getValue() != null) {
- lengthCrit = new KeyLengthCriterion(encMethod.getKeySize().getValue());
- critSet.add(lengthCrit);
- log.debug("Added decryption key length criteria from EncryptionMethod/KeySize: {}", lengthCrit
- .getKeyLength());
+ final KeySize size = encMethod.getKeySize();
+ if (size != null) {
+ final Integer sizeInt = size.getValue();
+ if (sizeInt != null) {
+ lengthCrit = new KeyLengthCriterion(sizeInt);
+ critSet.add(lengthCrit);
+ log.debug("Added decryption key length criteria from EncryptionMethod/KeySize: {}",
+ lengthCrit.getKeyLength());
+ }
}
}
@@ -958,8 +979,10 @@ public class Decrypter {
return null;
}
+ assert encAlgorithmURI != null;
final String jcaKeyAlgorithm = AlgorithmSupport.getKeyAlgorithm(encAlgorithmURI);
if (!Strings.isNullOrEmpty(jcaKeyAlgorithm)) {
+ assert jcaKeyAlgorithm != null;
return new KeyAlgorithmCriterion(jcaKeyAlgorithm);
}
@@ -977,6 +1000,7 @@ public class Decrypter {
return null;
}
+ assert encAlgorithmURI != null;
final Integer keyLength = AlgorithmSupport.getKeyLength(encAlgorithmURI);
if (keyLength != null) {
return new KeyLengthCriterion(keyLength);
@@ -1015,26 +1039,6 @@ public class Decrypter {
}
}
- /**
- * Build the internal parser pool instance used to parse decrypted XML.
- *
- * <p>
- * Note: When using a Xerces parser or derivative, the following feature must be set to false:
- * <code>http://apache.org/xml/features/dom/defer-node-expansion</code>
- * </p>
- *
- * @return a new parser pool instance
- *
- * @deprecated
- */
- @Deprecated
- protected ParserPool buildParserPool() {
- // Note: we don't really build this here anymore, so the method name is semantically misleading.
- // We should remove this method in next major release and just move this call to the ctor.
- return Constraint.isNotNull(ConfigurationService.get(DecryptionParserPool.class),
- "DecryptionParserPool has not been registered with the global configuration").getParserPool();
- }
-
/**
* Validate the algorithms contained within an {@link EncryptedKey}.
*
@@ -1042,14 +1046,18 @@ public class Decrypter {
* @throws DecryptionException if any algorithms do not satisfy include/exclude policy
*/
protected void validateAlgorithms(@Nonnull final EncryptedKey encryptedKey) throws DecryptionException {
- final String encryptionAlgorithm = encryptedKey.getEncryptionMethod().getAlgorithm();
+ final EncryptionMethod method = encryptedKey.getEncryptionMethod();
+ final String encryptionAlgorithm = method != null ? method.getAlgorithm() : null;
+ if (method == null || encryptionAlgorithm == null) {
+ throw new DecryptionException("EncryptionMethod or Algorithm was absent");
+ }
+
validateAlgorithmURI(encryptionAlgorithm);
if (AlgorithmSupport.isRSAOAEP(encryptionAlgorithm)) {
// ds:DigestMethod
String digestAlgorithm = null;
- final List<XMLObject> digestMethods = encryptedKey.getEncryptionMethod()
- .getUnknownXMLObjects(DigestMethod.DEFAULT_ELEMENT_NAME);
+ final List<XMLObject> digestMethods = method.getUnknownXMLObjects(DigestMethod.DEFAULT_ELEMENT_NAME);
if (digestMethods.size() > 0) {
final DigestMethod digestMethod = (DigestMethod) digestMethods.get(0);
digestAlgorithm = StringSupport.trimOrNull(digestMethod.getAlgorithm());
@@ -1063,7 +1071,7 @@ public class Decrypter {
// xenc11:MGF
String mgfAlgorithm = null;
final List<XMLObject> mgfs =
- encryptedKey.getEncryptionMethod().getUnknownXMLObjects(MGF.DEFAULT_ELEMENT_NAME);
+ method.getUnknownXMLObjects(MGF.DEFAULT_ELEMENT_NAME);
if (mgfs.size() > 0) {
final MGF mgf = (MGF) mgfs.get(0);
mgfAlgorithm = StringSupport.trimOrNull(mgf.getAlgorithm());
@@ -1083,7 +1091,12 @@ public class Decrypter {
* @throws DecryptionException if any algorithms do not satisfy include/exclude policy
*/
protected void validateAlgorithms(@Nonnull final EncryptedData encryptedData) throws DecryptionException {
- validateAlgorithmURI(encryptedData.getEncryptionMethod().getAlgorithm());
+ final EncryptionMethod method = encryptedData.getEncryptionMethod();
+ final String alg = method != null ? method.getAlgorithm() : null;
+ if (alg == null) {
+ throw new DecryptionException("EncryptionMethod or Algorithm was absent");
+ }
+ validateAlgorithmURI(alg);
}
/**
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/support/DefaultPreDecryptionValidator.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/support/DefaultPreDecryptionValidator.java
index f8a9a239f..670557973 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/support/DefaultPreDecryptionValidator.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/support/DefaultPreDecryptionValidator.java
@@ -19,6 +19,7 @@ package org.opensaml.xmlsec.encryption.support;
import javax.annotation.Nonnull;
+import org.opensaml.xmlsec.encryption.CipherData;
import org.opensaml.xmlsec.encryption.EncryptedData;
import org.opensaml.xmlsec.encryption.EncryptedKey;
import org.opensaml.xmlsec.encryption.EncryptedType;
@@ -30,13 +31,13 @@ public class DefaultPreDecryptionValidator implements PreDecryptionValidator {
/** {@inheritDoc} */
@Override
- public void validate(EncryptedData encryptedData) throws PreDecryptionValidationException {
+ public void validate(@Nonnull final EncryptedData encryptedData) throws PreDecryptionValidationException {
performCommonValidation(encryptedData);
}
/** {@inheritDoc} */
@Override
- public void validate(EncryptedKey encryptedKey) throws PreDecryptionValidationException {
+ public void validate(@Nonnull final EncryptedKey encryptedKey) throws PreDecryptionValidationException {
performCommonValidation(encryptedKey);
}
@@ -50,13 +51,14 @@ public class DefaultPreDecryptionValidator implements PreDecryptionValidator {
protected void performCommonValidation(@Nonnull final EncryptedType encryptedType)
throws PreDecryptionValidationException {
- if (encryptedType.getCipherData() == null) {
+ final CipherData data = encryptedType.getCipherData();
+ if (data == null) {
throw new PreDecryptionValidationException(
String.format("%s contains no CipherData child element, which is mandatory",
encryptedType.getClass().getSimpleName()));
}
- if (encryptedType.getCipherData().getCipherReference() != null) {
+ if (data.getCipherReference() != null) {
throw new PreDecryptionValidationException(
String.format("%s contains a CipherReference, which is not allowed",
encryptedType.getClass().getSimpleName()));
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/support/Encrypter.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/support/Encrypter.java
index cdbbb15df..1b853850a 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/support/Encrypter.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/support/Encrypter.java
@@ -32,6 +32,7 @@ import javax.crypto.SecretKey;
import net.shibboleth.shared.codec.Base64Support;
import net.shibboleth.shared.codec.DecodingException;
import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.LoggerFactory;
import org.apache.xml.security.Init;
import org.apache.xml.security.encryption.XMLCipher;
@@ -54,7 +55,7 @@ import org.opensaml.xmlsec.signature.KeyInfo;
import org.opensaml.xmlsec.signature.XMLSignatureBuilder;
import org.opensaml.xmlsec.signature.support.SignatureConstants;
import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+
import org.w3c.dom.Document;
import org.w3c.dom.Element;
@@ -93,19 +94,19 @@ import com.google.common.base.Strings;
public class Encrypter {
/** Class logger. */
- private final Logger log = LoggerFactory.getLogger(Encrypter.class);
+ @Nonnull private final Logger log = LoggerFactory.getLogger(Encrypter.class);
/** Unmarshaller used to create EncryptedData objects from DOM element. */
- private final Unmarshaller encryptedDataUnmarshaller;
+ @Nonnull private final Unmarshaller encryptedDataUnmarshaller;
/** Unmarshaller used to create EncryptedData objects from DOM element. */
- private final Unmarshaller encryptedKeyUnmarshaller;
+ @Nonnull private final Unmarshaller encryptedKeyUnmarshaller;
/** Builder instance for building KeyInfo objects. */
- private final XMLSignatureBuilder<KeyInfo> keyInfoBuilder;
+ @Nonnull private final XMLSignatureBuilder<KeyInfo> keyInfoBuilder;
/** The name of the JCA security provider to use. */
- private String jcaProviderName;
+ @Nullable private String jcaProviderName;
/**
* Constructor.
@@ -113,15 +114,17 @@ public class Encrypter {
*/
public Encrypter() {
final UnmarshallerFactory unmarshallerFactory = XMLObjectProviderRegistrySupport.getUnmarshallerFactory();
- encryptedDataUnmarshaller = unmarshallerFactory.getUnmarshaller(EncryptedData.DEFAULT_ELEMENT_NAME);
- encryptedKeyUnmarshaller = unmarshallerFactory.getUnmarshaller(EncryptedKey.DEFAULT_ELEMENT_NAME);
- Constraint.isNotNull(encryptedDataUnmarshaller, "EncryptedData unmarshaller not configured");
- Constraint.isNotNull(encryptedKeyUnmarshaller, "EncryptedKey unmarshaller not configured");
+ encryptedDataUnmarshaller = Constraint.isNotNull(
+ unmarshallerFactory.getUnmarshaller(EncryptedData.DEFAULT_ELEMENT_NAME),
+ "EncryptedData unmarshaller not configured");
+
+ encryptedKeyUnmarshaller = Constraint.isNotNull(
+ unmarshallerFactory.getUnmarshaller(EncryptedKey.DEFAULT_ELEMENT_NAME),
+ "EncryptedKey unmarshaller not configured");
final XMLObjectBuilderFactory builderFactory = XMLObjectProviderRegistrySupport.getBuilderFactory();
keyInfoBuilder = (XMLSignatureBuilder<KeyInfo>) builderFactory.<KeyInfo>getBuilderOrThrow(
KeyInfo.DEFAULT_ELEMENT_NAME);
- Constraint.isNotNull(keyInfoBuilder, "KeyInfo builder not configured");
}
/**
@@ -273,6 +276,7 @@ public class Encrypter {
final List<EncryptedKey> encKeys = new ArrayList<>();
for (final KeyEncryptionParameters kekParam : kekParamsList) {
+ assert kekParam != null;
encKeys.add(encryptKey(key, kekParam, containingDocument));
}
return encKeys;
@@ -295,16 +299,21 @@ public class Encrypter {
checkParams(kekParams, false);
final Key encryptionKey = CredentialSupport.extractEncryptionKey(kekParams.getEncryptionCredential());
+ if (encryptionKey == null) {
+ throw new EncryptionException("Unable to obtain encryption key from parameters");
+ }
- final EncryptedKey encryptedKey = encryptKey(key, encryptionKey, kekParams.getAlgorithm(),
- kekParams.getRSAOAEPParameters(), containingDocument);
+ final String alg = kekParams.getAlgorithm();
+ assert alg != null;
+ final EncryptedKey encryptedKey =
+ encryptKey(key, encryptionKey, alg, kekParams.getRSAOAEPParameters(), containingDocument);
- if (kekParams.getKeyInfoGenerator() != null) {
- final KeyInfoGenerator generator = kekParams.getKeyInfoGenerator();
- log.debug("Dynamically generating KeyInfo from Credential for EncryptedKey using generator: {}", generator
- .getClass().getName());
+ final KeyInfoGenerator keyInfoGenerator = kekParams.getKeyInfoGenerator();
+ if (keyInfoGenerator != null) {
+ log.debug("Dynamically generating KeyInfo from Credential for EncryptedKey using generator: {}",
+ keyInfoGenerator.getClass().getName());
try {
- encryptedKey.setKeyInfo(generator.generate(kekParams.getEncryptionCredential()));
+ encryptedKey.setKeyInfo(keyInfoGenerator.generate(kekParams.getEncryptionCredential()));
} catch (final SecurityException e) {
log.error("Error during EncryptedKey KeyInfo generation: {}", e.getMessage());
throw new EncryptionException("Error during EncryptedKey KeyInfo generation", e);
@@ -333,17 +342,11 @@ public class Encrypter {
@Nonnull final String encryptionAlgorithmURI, @Nullable final RSAOAEPParameters rsaOAEPParams,
@Nonnull final Document containingDocument) throws EncryptionException {
+ Constraint.isNotNull(targetKey, "Target key cannot be null");
+ Constraint.isNotNull(encryptionKey, "Encryption key cannot be null");
Constraint.isNotNull(encryptionAlgorithmURI, "Encryption algorithm URI cannot be null");
Constraint.isNotNull(containingDocument, "Containing document cannot be null");
- if (targetKey == null) {
- log.error("Target key for key encryption was null");
- throw new EncryptionException("Target key was null");
- } else if (encryptionKey == null) {
- log.error("Encryption key for key encryption was null");
- throw new EncryptionException("Encryption key was null");
- }
-
log.debug("Encrypting encryption key with algorithm: {}", encryptionAlgorithmURI);
final XMLCipher xmlCipher;
@@ -363,6 +366,7 @@ public class Encrypter {
} else {
apacheEncryptedKey = xmlCipher.encryptKey(containingDocument, targetKey);
}
+ assert apacheEncryptedKey != null;
postProcessApacheEncryptedKey(apacheEncryptedKey, targetKey, encryptionKey, encryptionAlgorithmURI,
containingDocument);
} catch (final XMLEncryptionException e) {
@@ -372,6 +376,7 @@ public class Encrypter {
try {
final Element encKeyElement = xmlCipher.martial(containingDocument, apacheEncryptedKey);
+ assert encKeyElement != null;
return (EncryptedKey) encryptedKeyUnmarshaller.unmarshall(encKeyElement);
} catch (final UnmarshallingException e) {
log.error("Error unmarshalling EncryptedKey element: {}", e.getMessage());
@@ -506,19 +511,13 @@ public class Encrypter {
@Nonnull final Key encryptionKey, @Nonnull final String encryptionAlgorithmURI,
final boolean encryptContentMode) throws EncryptionException {
- if (xmlObject == null) {
- log.error("XMLObject for encryption was null");
- throw new EncryptionException("XMLObject cannot be null");
- } else if (encryptionKey == null) {
- log.error("Encryption key for key encryption was null");
- throw new EncryptionException("Encryption key cannot be null");
- }
log.debug("Encrypting XMLObject using algorithm URI {} with content mode {}", encryptionAlgorithmURI,
encryptContentMode);
checkAndMarshall(xmlObject);
final Element targetElement = xmlObject.getDOM();
+ assert targetElement != null;
final Document ownerDocument = targetElement.getOwnerDocument();
final XMLCipher xmlCipher;
@@ -544,6 +543,7 @@ public class Encrypter {
try {
final Element encDataElement = xmlCipher.martial(ownerDocument, apacheEncryptedData);
+ assert encDataElement != null;
return (EncryptedData) encryptedDataUnmarshaller.unmarshall(encDataElement);
} catch (final UnmarshallingException e) {
log.error("Error unmarshalling EncryptedData element: {}", e.getMessage());
@@ -571,6 +571,7 @@ public class Encrypter {
checkParams(encParams, kekParamsList);
final String encryptionAlgorithmURI = encParams.getAlgorithm();
+ assert encryptionAlgorithmURI != null;
Key encryptionKey = CredentialSupport.extractEncryptionKey(encParams.getEncryptionCredential());
if (encryptionKey == null) {
encryptionKey = generateEncryptionKey(encryptionAlgorithmURI);
@@ -578,14 +579,17 @@ public class Encrypter {
final EncryptedData encryptedData =
encryptElement(xmlObject, encryptionKey, encryptionAlgorithmURI, encryptContentMode);
- final Document ownerDocument = encryptedData.getDOM().getOwnerDocument();
-
- if (encParams.getKeyInfoGenerator() != null) {
- final KeyInfoGenerator generator = encParams.getKeyInfoGenerator();
- log.debug("Dynamically generating KeyInfo from Credential for EncryptedData using generator: {}", generator
- .getClass().getName());
+ final Element domNode = encryptedData.getDOM();
+ assert domNode != null;
+ final Document ownerDocument = domNode.getOwnerDocument();
+ assert ownerDocument != null;
+
+ final KeyInfoGenerator keyInfoGenerator = encParams.getKeyInfoGenerator();
+ if (keyInfoGenerator != null) {
+ log.debug("Dynamically generating KeyInfo from Credential for EncryptedData using generator: {}",
+ keyInfoGenerator.getClass().getName());
try {
- encryptedData.setKeyInfo(generator.generate(encParams.getEncryptionCredential()));
+ encryptedData.setKeyInfo(keyInfoGenerator.generate(encParams.getEncryptionCredential()));
} catch (final SecurityException e) {
log.error("Error during EncryptedData KeyInfo generation: {}", e.getMessage());
throw new EncryptionException("Error during EncryptedData KeyInfo generation", e);
@@ -593,12 +597,14 @@ public class Encrypter {
}
for (final KeyEncryptionParameters kekParams : kekParamsList) {
+ assert kekParams != null;
final EncryptedKey encryptedKey = encryptKey(encryptionKey, kekParams, ownerDocument);
- if (encryptedData.getKeyInfo() == null) {
- final KeyInfo keyInfo = keyInfoBuilder.buildObject();
+ KeyInfo keyInfo = encryptedData.getKeyInfo();
+ if (keyInfo == null) {
+ keyInfo = keyInfoBuilder.buildObject();
encryptedData.setKeyInfo(keyInfo);
}
- encryptedData.getKeyInfo().getEncryptedKeys().add(encryptedKey);
+ keyInfo.getEncryptedKeys().add(encryptedKey);
}
return encryptedData;
@@ -635,10 +641,7 @@ public class Encrypter {
* @throws EncryptionException thrown if any parameters are missing or have invalid values
*/
protected void checkParams(@Nonnull final DataEncryptionParameters encParams) throws EncryptionException {
- if (encParams == null) {
- log.error("Data encryption parameters are required");
- throw new EncryptionException("Data encryption parameters are required");
- } else if (Strings.isNullOrEmpty(encParams.getAlgorithm())) {
+ if (Strings.isNullOrEmpty(encParams.getAlgorithm())) {
log.error("Data encryption algorithm URI is required");
throw new EncryptionException("Data encryption algorithm URI is required");
}
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/support/InlineEncryptedKeyResolver.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/support/InlineEncryptedKeyResolver.java
index bb5a7be9d..dcf35a941 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/support/InlineEncryptedKeyResolver.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/support/InlineEncryptedKeyResolver.java
@@ -27,6 +27,7 @@ import javax.annotation.Nullable;
import org.opensaml.xmlsec.encryption.EncryptedData;
import org.opensaml.xmlsec.encryption.EncryptedKey;
+import org.opensaml.xmlsec.signature.KeyInfo;
import net.shibboleth.shared.logic.Constraint;
@@ -65,11 +66,12 @@ public class InlineEncryptedKeyResolver extends AbstractEncryptedKeyResolver {
final List<EncryptedKey> resolvedEncKeys = new ArrayList<>();
- if (encryptedData.getKeyInfo() == null) {
+ final KeyInfo keyInfo = encryptedData.getKeyInfo();
+ if (keyInfo == null) {
return resolvedEncKeys;
}
- for (final EncryptedKey encKey : encryptedData.getKeyInfo().getEncryptedKeys()) {
+ for (final EncryptedKey encKey : keyInfo.getEncryptedKeys()) {
if (matchRecipient(encKey.getRecipient())) {
resolvedEncKeys.add(encKey);
}
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/support/PreDecryptionValidationException.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/support/PreDecryptionValidationException.java
index 1a6842b08..f93a744de 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/support/PreDecryptionValidationException.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/support/PreDecryptionValidationException.java
@@ -60,7 +60,8 @@ public class PreDecryptionValidationException extends DecryptionException {
* @param message exception message
* @param wrappedException exception to be wrapped by this one
*/
- public PreDecryptionValidationException(@Nullable final String message, @Nullable final Exception wrappedException) {
+ public PreDecryptionValidationException(@Nullable final String message,
+ @Nullable final Exception wrappedException) {
super(message, wrappedException);
}
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/support/SimpleKeyInfoReferenceEncryptedKeyResolver.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/support/SimpleKeyInfoReferenceEncryptedKeyResolver.java
index 16c600888..5c2cdb54d 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/support/SimpleKeyInfoReferenceEncryptedKeyResolver.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/support/SimpleKeyInfoReferenceEncryptedKeyResolver.java
@@ -31,9 +31,9 @@ import org.opensaml.xmlsec.encryption.EncryptedKey;
import org.opensaml.xmlsec.signature.KeyInfo;
import org.opensaml.xmlsec.signature.KeyInfoReference;
import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.LoggerFactory;
/**
* Implementation of {@link EncryptedKeyResolver} which finds {@link EncryptedKey} elements by dereferencing
@@ -131,6 +131,7 @@ public class SimpleKeyInfoReferenceEncryptedKeyResolver extends AbstractEncrypte
log.info("Reached depth limit for KeyInfoReferences");
} else {
for (final KeyInfoReference ref : keyInfo.getKeyInfoReferences()) {
+ assert ref != null;
for (final EncryptedKey encKey : resolveKeyInfo(dereferenceURI(ref), limit-1)) {
resolvedEncKeys.add(encKey);
}
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/support/SimpleRetrievalMethodEncryptedKeyResolver.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/support/SimpleRetrievalMethodEncryptedKeyResolver.java
index b73b85bf3..6fec278a2 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/support/SimpleRetrievalMethodEncryptedKeyResolver.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/support/SimpleRetrievalMethodEncryptedKeyResolver.java
@@ -29,13 +29,12 @@ import javax.annotation.Nullable;
import org.opensaml.core.xml.XMLObject;
import org.opensaml.xmlsec.encryption.EncryptedData;
import org.opensaml.xmlsec.encryption.EncryptedKey;
+import org.opensaml.xmlsec.signature.KeyInfo;
import org.opensaml.xmlsec.signature.RetrievalMethod;
import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.Strings;
import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.LoggerFactory;
/**
* Implementation of {@link EncryptedKeyResolver} which finds {@link EncryptedKey} elements by dereferencing
@@ -50,7 +49,7 @@ import net.shibboleth.shared.logic.Constraint;
public class SimpleRetrievalMethodEncryptedKeyResolver extends AbstractEncryptedKeyResolver {
/** Class logger. */
- private final Logger log = LoggerFactory.getLogger(SimpleRetrievalMethodEncryptedKeyResolver.class);
+ @Nonnull private final Logger log = LoggerFactory.getLogger(SimpleRetrievalMethodEncryptedKeyResolver.class);
/** Constructor. */
public SimpleRetrievalMethodEncryptedKeyResolver() {
@@ -81,11 +80,12 @@ public class SimpleRetrievalMethodEncryptedKeyResolver extends AbstractEncrypted
final List<EncryptedKey> resolvedEncKeys = new ArrayList<>();
- if (encryptedData.getKeyInfo() == null) {
+ final KeyInfo keyInfo = encryptedData.getKeyInfo();
+ if (keyInfo == null) {
return resolvedEncKeys;
}
- for (final RetrievalMethod rm : encryptedData.getKeyInfo().getRetrievalMethods()) {
+ for (final RetrievalMethod rm : keyInfo.getRetrievalMethods()) {
if (!Objects.equals(rm.getType(), EncryptionConstants.TYPE_ENCRYPTED_KEY)) {
continue;
} else if (rm.getTransforms() != null) {
@@ -112,7 +112,7 @@ public class SimpleRetrievalMethodEncryptedKeyResolver extends AbstractEncrypted
*/
@Nullable protected EncryptedKey dereferenceURI(@Nonnull final RetrievalMethod rm) {
final String uri = rm.getURI();
- if (Strings.isNullOrEmpty(uri) || !uri.startsWith("#")) {
+ if (uri == null || !uri.startsWith("#")) {
log.warn("EncryptedKey RetrievalMethod did not contain a same-document URI reference, cannot process");
return null;
}
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/keyinfo/KeyInfoSupport.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/keyinfo/KeyInfoSupport.java
index a9a722541..acd0a2a7e 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/keyinfo/KeyInfoSupport.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/keyinfo/KeyInfoSupport.java
@@ -88,7 +88,6 @@ import org.opensaml.xmlsec.signature.X509SerialNumber;
import org.opensaml.xmlsec.signature.X509SubjectName;
import org.opensaml.xmlsec.signature.Y;
import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import com.google.common.base.Strings;
@@ -96,6 +95,7 @@ import net.shibboleth.shared.codec.Base64Support;
import net.shibboleth.shared.codec.DecodingException;
import net.shibboleth.shared.codec.EncodingException;
import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.LoggerFactory;
/**
* Utility class for working with data inside a KeyInfo object.
@@ -225,11 +225,12 @@ public class KeyInfoSupport {
@Nullable public static X509Certificate getCertificate(
@Nullable final org.opensaml.xmlsec.signature.X509Certificate xmlCert) throws CertificateException {
- if (xmlCert == null || xmlCert.getValue() == null) {
+ final String certVal = xmlCert != null ? xmlCert.getValue() : null;
+ if (certVal == null) {
return null;
}
- return X509Support.decodeCertificate(xmlCert.getValue());
+ return X509Support.decodeCertificate(certVal);
}
/**
@@ -296,12 +297,13 @@ public class KeyInfoSupport {
@Nullable public static X509CRL getCRL(@Nullable final org.opensaml.xmlsec.signature.X509CRL xmlCRL)
throws CRLException {
- if (xmlCRL == null || xmlCRL.getValue() == null) {
+ final String crlVal = xmlCRL != null ? xmlCRL.getValue() : null;
+ if (crlVal == null) {
return null;
}
try {
- return X509Support.decodeCRL(xmlCRL.getValue());
+ return X509Support.decodeCRL(crlVal);
} catch (final CertificateException e) {
throw new CRLException("Certificate error attempting to decode CRL", e);
}
@@ -558,7 +560,8 @@ public class KeyInfoSupport {
} else if (pk instanceof DHPublicKey) {
keyValue.setDHKeyValue(buildDHKeyValue((DHPublicKey) pk));
} else {
- throw new IllegalArgumentException("Saw unsupported public key type: " + pk.getClass().getName());
+ final String type = pk != null ? pk.getClass().getName() : "(null)";
+ throw new IllegalArgumentException("Saw unsupported public key type: " + type);
}
keyInfo.getKeyValues().add(keyValue);
@@ -790,6 +793,7 @@ public class KeyInfoSupport {
}
for (final KeyValue keyDescriptor : keyInfo.getKeyValues()) {
+ assert keyDescriptor != null;
final PublicKey newKey = getKey(keyDescriptor);
if (newKey != null) {
keys.add(newKey);
@@ -797,6 +801,7 @@ public class KeyInfoSupport {
}
for (final DEREncodedKeyValue keyDescriptor : keyInfo.getDEREncodedKeyValues()) {
+ assert keyDescriptor != null;
final PublicKey newKey = getKey(keyDescriptor);
if (newKey != null) {
keys.add(newKey);
@@ -817,17 +822,27 @@ public class KeyInfoSupport {
@Nullable public static PublicKey getKey(@Nonnull final KeyValue keyValue) throws KeyException {
Constraint.isNotNull(keyValue, "KeyValue cannot be null");
- if (keyValue.getDSAKeyValue() != null) {
- return getDSAKey(keyValue.getDSAKeyValue());
- } else if (keyValue.getRSAKeyValue() != null) {
- return getRSAKey(keyValue.getRSAKeyValue());
- } else if (keyValue.getECKeyValue() != null) {
- return getECKey(keyValue.getECKeyValue());
- } else if (keyValue.getDHKeyValue() != null) {
- return getDHKey(keyValue.getDHKeyValue());
- } else {
- return null;
+ final DSAKeyValue dsa = keyValue.getDSAKeyValue();
+ if (dsa != null) {
+ return getDSAKey(dsa);
+ }
+
+ final RSAKeyValue rsa = keyValue.getRSAKeyValue();
+ if (rsa != null) {
+ return getRSAKey(rsa);
+ }
+
+ final ECKeyValue ec = keyValue.getECKeyValue();
+ if (ec != null) {
+ return getECKey(ec);
+ }
+
+ final DHKeyValue dh = keyValue.getDHKeyValue();
+ if (dh != null) {
+ return getDHKey(dh);
}
+
+ return null;
}
/**
@@ -842,21 +857,29 @@ public class KeyInfoSupport {
*/
@Nonnull public static PublicKey getECKey(@Nonnull final ECKeyValue keyDescriptor) throws KeyException {
- if (keyDescriptor.getNamedCurve() == null || keyDescriptor.getNamedCurve().getURI() == null) {
+ final NamedCurve namedCurve = keyDescriptor.getNamedCurve();
+ if (namedCurve == null || namedCurve.getURI() == null) {
+ throw new KeyException("Only ECKeyValue NamedCurve representation is supported");
+ }
+
+ final String curveURI = namedCurve.getURI();
+ if (curveURI == null) {
throw new KeyException("Only ECKeyValue NamedCurve representation is supported");
}
- final ECParameterSpec ecParams =
- ECSupport.getParameterSpecForURI(keyDescriptor.getNamedCurve().getURI());
+ final ECParameterSpec ecParams = ECSupport.getParameterSpecForURI(curveURI);
if (ecParams == null) {
- throw new KeyException("Could not resolve ECParametersSpec for NamedCurve URI: "
- + keyDescriptor.getNamedCurve().getURI());
+ throw new KeyException("Could not resolve ECParametersSpec for NamedCurve URI: " + curveURI);
}
+ final org.opensaml.xmlsec.signature.PublicKey pub = keyDescriptor.getPublicKey();
+ final String pubval = pub != null ? pub.getValue() : null;
+ if (pubval == null) {
+ throw new KeyException("Could not obtain public key value");
+ }
+
try {
- final ECPoint ecPoint = ECSupport.decodeECPoint(
- Base64Support.decode(keyDescriptor.getPublicKey().getValue()),
- ecParams.getCurve());
+ final ECPoint ecPoint = ECSupport.decodeECPoint(Base64Support.decode(pubval), ecParams.getCurve());
final ECPublicKeySpec keySpec = new ECPublicKeySpec(ecPoint, ecParams);
@@ -883,11 +906,18 @@ public class KeyInfoSupport {
throw new KeyException("DHKeyValue element did not contain at least one of DH parameters P, Q or G");
}
- final BigInteger gComponent = keyDescriptor.getGenerator().getValueBigInt();
- final BigInteger pComponent = keyDescriptor.getP().getValueBigInt();
+ final Generator gen = keyDescriptor.getGenerator();
+ final org.opensaml.xmlsec.encryption.P pComp = keyDescriptor.getP();
+ final Public pub = keyDescriptor.getPublic();
+
+ assert gen != null;
+ assert pComp != null;
+
+ final BigInteger gComponent = gen.getValueBigInt();
+ final BigInteger pComponent = pComp.getValueBigInt();
// Note: Java doesn't need or even accept the prime Q component, so don't bother to parse it
- final BigInteger publicComponent = keyDescriptor.getPublic().getValueBigInt();
+ final BigInteger publicComponent = pub != null ? pub.getValueBigInt() : null;
final DHPublicKeySpec keySpec = new DHPublicKeySpec(publicComponent, pComponent, gComponent);
return buildKey(keySpec, JCAConstants.KEY_ALGO_DIFFIE_HELLMAN);
@@ -901,15 +931,21 @@ public class KeyInfoSupport {
* @return true if all parameters are present and non-empty, false otherwise
*/
public static boolean hasCompleteDHParams(@Nullable final DHKeyValue keyDescriptor) {
- if (keyDescriptor == null
- || keyDescriptor.getGenerator() == null
- || Strings.isNullOrEmpty(keyDescriptor.getGenerator().getValue())
- || keyDescriptor.getP() == null || Strings.isNullOrEmpty(keyDescriptor.getP().getValue())
+ if (keyDescriptor == null) {
+ return false;
+ }
+
+ final Generator gen = keyDescriptor.getGenerator();
+ final org.opensaml.xmlsec.encryption.P pComp = keyDescriptor.getP();
+
+ if (gen == null || Strings.isNullOrEmpty(gen.getValue())
+ || pComp == null || Strings.isNullOrEmpty(pComp.getValue())
// Note: Java doesn't need or even accept the prime Q component. So even though it's
// required per the schema, relax the check here and don't require.
) {
return false;
}
+
return true;
}
@@ -928,10 +964,18 @@ public class KeyInfoSupport {
if (!hasCompleteDSAParams(keyDescriptor)) {
throw new KeyException("DSAKeyValue element did not contain at least one of DSA parameters P, Q or G");
}
+
+ final G gComp = keyDescriptor.getG();
+ final P pComp = keyDescriptor.getP();
+ final Q qComp = keyDescriptor.getQ();
- final BigInteger gComponent = keyDescriptor.getG().getValueBigInt();
- final BigInteger pComponent = keyDescriptor.getP().getValueBigInt();
- final BigInteger qComponent = keyDescriptor.getQ().getValueBigInt();
+ assert gComp != null;
+ assert pComp != null;
+ assert qComp != null;
+
+ final BigInteger gComponent = gComp.getValueBigInt();
+ final BigInteger pComponent = pComp.getValueBigInt();
+ final BigInteger qComponent = qComp.getValueBigInt();
final DSAParams dsaParams = new DSAParameterSpec(pComponent, qComponent, gComponent);
return getDSAKey(keyDescriptor, dsaParams);
@@ -954,10 +998,11 @@ public class KeyInfoSupport {
Constraint.isNotNull(keyDescriptor, "DSAKeyValue cannot be null");
Constraint.isNotNull(dsaParams, "DSAParams cannot be null");
- final BigInteger yComponent = keyDescriptor.getY().getValueBigInt();
+ final Y yComponent = keyDescriptor.getY();
final DSAPublicKeySpec keySpec =
- new DSAPublicKeySpec(yComponent, dsaParams.getP(), dsaParams.getQ(), dsaParams.getG());
+ new DSAPublicKeySpec(yComponent != null ? yComponent.getValueBigInt() : null,
+ dsaParams.getP(), dsaParams.getQ(), dsaParams.getG());
return buildKey(keySpec, JCAConstants.KEY_ALGO_DSA);
}
@@ -969,12 +1014,21 @@ public class KeyInfoSupport {
* @return true if all parameters are present and non-empty, false otherwise
*/
public static boolean hasCompleteDSAParams(@Nullable final DSAKeyValue keyDescriptor) {
- if (keyDescriptor == null
- || keyDescriptor.getG() == null || Strings.isNullOrEmpty(keyDescriptor.getG().getValue())
- || keyDescriptor.getP() == null || Strings.isNullOrEmpty(keyDescriptor.getP().getValue())
- || keyDescriptor.getQ() == null || Strings.isNullOrEmpty(keyDescriptor.getQ().getValue())) {
+
+ if (keyDescriptor == null) {
+ return false;
+ }
+
+ final G gComp = keyDescriptor.getG();
+ final P pComp = keyDescriptor.getP();
+ final Q qComp = keyDescriptor.getQ();
+
+ if (gComp == null || Strings.isNullOrEmpty(gComp.getValue())
+ || pComp == null || Strings.isNullOrEmpty(pComp.getValue())
+ || qComp == null || Strings.isNullOrEmpty(qComp.getValue())) {
return false;
}
+
return true;
}
@@ -991,10 +1045,11 @@ public class KeyInfoSupport {
@Nonnull public static PublicKey getRSAKey(@Nonnull final RSAKeyValue keyDescriptor) throws KeyException {
Constraint.isNotNull(keyDescriptor, "RSAKeyValue cannot be null");
- final BigInteger modulus = keyDescriptor.getModulus().getValueBigInt();
- final BigInteger exponent = keyDescriptor.getExponent().getValueBigInt();
-
- final RSAPublicKeySpec keySpec = new RSAPublicKeySpec(modulus, exponent);
+ final Modulus mod = keyDescriptor.getModulus();
+ final Exponent exp = keyDescriptor.getExponent();
+
+ final RSAPublicKeySpec keySpec = new RSAPublicKeySpec(mod != null ? mod.getValueBigInt() : null,
+ exp != null ? exp.getValueBigInt() : null);
return buildKey(keySpec, JCAConstants.KEY_ALGO_RSA);
}
@@ -1074,12 +1129,13 @@ public class KeyInfoSupport {
JCAConstants.KEY_ALGO_DSA};
Constraint.isNotNull(keyValue, "DEREncodedKeyValue cannot be null");
- if (keyValue.getValue() == null) {
+ final String keyValueValue = keyValue.getValue();
+ if (keyValueValue == null) {
throw new KeyException("No data found in key value element");
}
byte[] encodedKey = null;
try {
- encodedKey = Base64Support.decode(keyValue.getValue());
+ encodedKey = Base64Support.decode(keyValueValue);
} catch (final DecodingException e) {
throw new KeyException("DEREncodedKeyValue could not be base64 decoded",e);
}
@@ -1168,6 +1224,7 @@ public class KeyInfoSupport {
x509CertFactory = CertificateFactory.getInstance("X.509");
}
+ assert x509CertFactory != null;
return x509CertFactory;
}
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/AbstractSignableXMLObject.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/AbstractSignableXMLObject.java
index 1ba02b4f3..a29f19b34 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/AbstractSignableXMLObject.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/AbstractSignableXMLObject.java
@@ -33,7 +33,7 @@ import net.shibboleth.shared.xml.ElementSupport;
public abstract class AbstractSignableXMLObject extends AbstractXMLObject implements SignableXMLObject {
/** Signature child. */
- private Signature signature;
+ @Nullable private Signature signature;
/**
* Constructor.
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/CryptoBinary.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/CryptoBinary.java
index 9c62572e1..826ab4b6d 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/CryptoBinary.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/CryptoBinary.java
@@ -19,12 +19,14 @@ package org.opensaml.xmlsec.signature;
import java.math.BigInteger;
+import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import javax.xml.namespace.QName;
import org.opensaml.core.xml.schema.XSBase64Binary;
import org.opensaml.xmlsec.signature.support.SignatureConstants;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
import net.shibboleth.shared.codec.EncodingException;
/**
@@ -33,10 +35,10 @@ import net.shibboleth.shared.codec.EncodingException;
public interface CryptoBinary extends XSBase64Binary {
/** Local name of the XSI type. */
- public static final String TYPE_LOCAL_NAME = "CryptoBinary";
+ @Nonnull @NotEmpty public static final String TYPE_LOCAL_NAME = "CryptoBinary";
/** QName of the XSI type. */
- public static final QName TYPE_NAME = new QName(SignatureConstants.XMLSIG_NS, TYPE_LOCAL_NAME,
+ @Nonnull public static final QName TYPE_NAME = new QName(SignatureConstants.XMLSIG_NS, TYPE_LOCAL_NAME,
SignatureConstants.XMLSIG_PREFIX);
/**
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/DEREncodedKeyValue.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/DEREncodedKeyValue.java
index 0adfdbc8b..b362a9738 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/DEREncodedKeyValue.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/DEREncodedKeyValue.java
@@ -17,31 +17,34 @@
package org.opensaml.xmlsec.signature;
+import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import javax.xml.namespace.QName;
import org.opensaml.core.xml.schema.XSBase64Binary;
import org.opensaml.xmlsec.signature.support.SignatureConstants;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
/** XMLObject representing XML Digital Signature 1.1 DEREncodedKeyValue element. */
public interface DEREncodedKeyValue extends XSBase64Binary {
/** Element local name. */
- public static final String DEFAULT_ELEMENT_LOCAL_NAME = "DEREncodedKeyValue";
+ @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "DEREncodedKeyValue";
/** Default element name. */
- public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG11_NS,
+ @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG11_NS,
DEFAULT_ELEMENT_LOCAL_NAME, SignatureConstants.XMLSIG11_PREFIX);
/** Local name of the XSI type. */
- public static final String TYPE_LOCAL_NAME = "DEREncodedKeyValueType";
+ @Nonnull @NotEmpty public static final String TYPE_LOCAL_NAME = "DEREncodedKeyValueType";
/** QName of the XSI type. */
- public static final QName TYPE_NAME =
+ @Nonnull public static final QName TYPE_NAME =
new QName(SignatureConstants.XMLSIG11_NS, TYPE_LOCAL_NAME, SignatureConstants.XMLSIG11_PREFIX);
/** Id attribute name. */
- public static final String ID_ATTRIB_NAME = "Id";
+ @Nonnull @NotEmpty public static final String ID_ATTRIB_NAME = "Id";
/**
* Get the Id attribute value.
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/DSAKeyValue.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/DSAKeyValue.java
index 94bbcae4d..867846b08 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/DSAKeyValue.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/DSAKeyValue.java
@@ -17,27 +17,30 @@
package org.opensaml.xmlsec.signature;
+import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import javax.xml.namespace.QName;
import org.opensaml.core.xml.XMLObject;
import org.opensaml.xmlsec.signature.support.SignatureConstants;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
/** XMLObject representing XML Digital Signature, version 20020212, DSAKeyValue element. */
public interface DSAKeyValue extends XMLObject {
/** Element local name. */
- public static final String DEFAULT_ELEMENT_LOCAL_NAME = "DSAKeyValue";
+ @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "DSAKeyValue";
/** Default element name. */
- public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
+ @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
DEFAULT_ELEMENT_LOCAL_NAME, SignatureConstants.XMLSIG_PREFIX);
/** Local name of the XSI type. */
- public static final String TYPE_LOCAL_NAME = "DSAKeyValueType";
+ @Nonnull @NotEmpty public static final String TYPE_LOCAL_NAME = "DSAKeyValueType";
/** QName of the XSI type. */
- public static final QName TYPE_NAME = new QName(SignatureConstants.XMLSIG_NS, TYPE_LOCAL_NAME,
+ @Nonnull public static final QName TYPE_NAME = new QName(SignatureConstants.XMLSIG_NS, TYPE_LOCAL_NAME,
SignatureConstants.XMLSIG_PREFIX);
/**
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/ECKeyValue.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/ECKeyValue.java
index 2bc1e5aec..8cb27f088 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/ECKeyValue.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/ECKeyValue.java
@@ -17,32 +17,35 @@
package org.opensaml.xmlsec.signature;
+import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import javax.xml.namespace.QName;
import org.opensaml.core.xml.XMLObject;
import org.opensaml.xmlsec.signature.support.SignatureConstants;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
/** XMLObject representing XML Digital Signature, version 20020212, ECKeyValue element. */
public interface ECKeyValue extends XMLObject {
/** Element local name. */
- public static final String DEFAULT_ELEMENT_LOCAL_NAME = "ECKeyValue";
+ @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "ECKeyValue";
/** Default element name. */
- public static final QName DEFAULT_ELEMENT_NAME =
+ @Nonnull public static final QName DEFAULT_ELEMENT_NAME =
new QName(SignatureConstants.XMLSIG11_NS, DEFAULT_ELEMENT_LOCAL_NAME, SignatureConstants.XMLSIG11_PREFIX);
/** Local name of the XSI type. */
- public static final String TYPE_LOCAL_NAME = "ECKeyValueType";
+ @Nonnull @NotEmpty public static final String TYPE_LOCAL_NAME = "ECKeyValueType";
/** QName of the XSI type. */
- public static final QName TYPE_NAME =
+ @Nonnull public static final QName TYPE_NAME =
new QName(SignatureConstants.XMLSIG11_NS, TYPE_LOCAL_NAME, SignatureConstants.XMLSIG11_PREFIX);
/** Id attribute name. */
- public static final String ID_ATTRIB_NAME = "Id";
+ @Nonnull @NotEmpty public static final String ID_ATTRIB_NAME = "Id";
/**
* Get the Id attribute value.
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/ECPointType.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/ECPointType.java
index d96697ae2..c5fb91bac 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/ECPointType.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/ECPointType.java
@@ -17,10 +17,13 @@
package org.opensaml.xmlsec.signature;
+import javax.annotation.Nonnull;
import javax.xml.namespace.QName;
import org.opensaml.xmlsec.signature.support.SignatureConstants;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
/**
* XMLObject representing XML Digital Signature 1.1 ECPointType element.
@@ -28,10 +31,10 @@ import org.opensaml.xmlsec.signature.support.SignatureConstants;
public interface ECPointType extends CryptoBinary {
/** Element local name. */
- public static final String TYPE_LOCAL_NAME = "ECPointType";
+ @Nonnull @NotEmpty public static final String TYPE_LOCAL_NAME = "ECPointType";
/** Default element name. */
- public static final QName TYPE_NAME =
+ @Nonnull public static final QName TYPE_NAME =
new QName(SignatureConstants.XMLSIG11_NS, TYPE_LOCAL_NAME, SignatureConstants.XMLSIG11_PREFIX);
}
\ No newline at end of file
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/Exponent.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/Exponent.java
index 43a1decc1..33065a1da 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/Exponent.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/Exponent.java
@@ -17,20 +17,23 @@
package org.opensaml.xmlsec.signature;
+import javax.annotation.Nonnull;
import javax.xml.namespace.QName;
import org.opensaml.xmlsec.signature.support.SignatureConstants;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
/**
* XMLObject representing XML Digital Signature, version 20020212, Exponent element.
*/
public interface Exponent extends CryptoBinary {
/** Element local name. */
- public static final String DEFAULT_ELEMENT_LOCAL_NAME = "Exponent";
+ @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "Exponent";
/** Default element name. */
- public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
+ @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
DEFAULT_ELEMENT_LOCAL_NAME, SignatureConstants.XMLSIG_PREFIX);
}
\ No newline at end of file
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/G.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/G.java
index 46600d9f4..491e51df5 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/G.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/G.java
@@ -17,20 +17,23 @@
package org.opensaml.xmlsec.signature;
+import javax.annotation.Nonnull;
import javax.xml.namespace.QName;
import org.opensaml.xmlsec.signature.support.SignatureConstants;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
/**
* XMLObject representing XML Digital Signature, version 20020212, G element.
*/
public interface G extends CryptoBinary {
/** Element local name. */
- public static final String DEFAULT_ELEMENT_LOCAL_NAME = "G";
+ @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "G";
/** Default element name. */
- public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
+ @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
DEFAULT_ELEMENT_LOCAL_NAME, SignatureConstants.XMLSIG_PREFIX);
}
\ No newline at end of file
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/J.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/J.java
index 6d18bf660..b3c0878c3 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/J.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/J.java
@@ -17,20 +17,23 @@
package org.opensaml.xmlsec.signature;
+import javax.annotation.Nonnull;
import javax.xml.namespace.QName;
import org.opensaml.xmlsec.signature.support.SignatureConstants;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
/**
* XMLObject representing XML Digital Signature, version 20020212, J element.
*/
public interface J extends CryptoBinary {
/** Element local name. */
- public static final String DEFAULT_ELEMENT_LOCAL_NAME = "J";
+ @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "J";
/** Default element name. */
- public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
+ @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
DEFAULT_ELEMENT_LOCAL_NAME, SignatureConstants.XMLSIG_PREFIX);
}
\ No newline at end of file
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/KeyInfo.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/KeyInfo.java
index 390f49b47..92381fa91 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/KeyInfo.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/KeyInfo.java
@@ -28,25 +28,27 @@ import org.opensaml.xmlsec.encryption.AgreementMethod;
import org.opensaml.xmlsec.encryption.EncryptedKey;
import org.opensaml.xmlsec.signature.support.SignatureConstants;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
/** XMLObject representing XML Digital Signature, version 20020212, KeyInfo element. */
public interface KeyInfo extends XMLObject {
/** Element local name. */
- public static final String DEFAULT_ELEMENT_LOCAL_NAME = "KeyInfo";
+ @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "KeyInfo";
/** Default element name. */
- public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
+ @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
DEFAULT_ELEMENT_LOCAL_NAME, SignatureConstants.XMLSIG_PREFIX);
/** Local name of the XSI type. */
- public static final String TYPE_LOCAL_NAME = "KeyInfoType";
+ @Nonnull @NotEmpty public static final String TYPE_LOCAL_NAME = "KeyInfoType";
/** QName of the XSI type. */
- public static final QName TYPE_NAME = new QName(SignatureConstants.XMLSIG_NS, TYPE_LOCAL_NAME,
+ @Nonnull public static final QName TYPE_NAME = new QName(SignatureConstants.XMLSIG_NS, TYPE_LOCAL_NAME,
SignatureConstants.XMLSIG_PREFIX);
/** Id attribute name. */
- public static final String ID_ATTRIB_NAME = "Id";
+ @Nonnull @NotEmpty public static final String ID_ATTRIB_NAME = "Id";
/**
* Get the Id attribute value.
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/KeyInfoReference.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/KeyInfoReference.java
index 780f46204..c3659762e 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/KeyInfoReference.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/KeyInfoReference.java
@@ -17,12 +17,15 @@
package org.opensaml.xmlsec.signature;
+import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import javax.xml.namespace.QName;
import org.opensaml.core.xml.XMLObject;
import org.opensaml.xmlsec.signature.support.SignatureConstants;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
/**
* XMLObject representing XML Digital Signature 1.1 KeyInfoReference element.
@@ -30,24 +33,24 @@ import org.opensaml.xmlsec.signature.support.SignatureConstants;
public interface KeyInfoReference extends XMLObject {
/** Element local name. */
- public static final String DEFAULT_ELEMENT_LOCAL_NAME = "KeyInfoReference";
+ @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "KeyInfoReference";
/** Default element name. */
- public static final QName DEFAULT_ELEMENT_NAME =
+ @Nonnull public static final QName DEFAULT_ELEMENT_NAME =
new QName(SignatureConstants.XMLSIG11_NS, DEFAULT_ELEMENT_LOCAL_NAME, SignatureConstants.XMLSIG11_PREFIX);
/** Local name of the XSI type. */
- public static final String TYPE_LOCAL_NAME = "KeyInfoReferenceType";
+ @Nonnull @NotEmpty public static final String TYPE_LOCAL_NAME = "KeyInfoReferenceType";
/** QName of the XSI type. */
- public static final QName TYPE_NAME =
+ @Nonnull public static final QName TYPE_NAME =
new QName(SignatureConstants.XMLSIG11_NS, TYPE_LOCAL_NAME, SignatureConstants.XMLSIG11_PREFIX);
/** Id attribute name. */
- public static final String ID_ATTRIB_NAME = "Id";
+ @Nonnull @NotEmpty public static final String ID_ATTRIB_NAME = "Id";
/** URI attribute name. */
- public static final String URI_ATTRIB_NAME = "URI";
+ @Nonnull @NotEmpty public static final String URI_ATTRIB_NAME = "URI";
/**
* Get the Id attribute value.
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/KeyName.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/KeyName.java
index 846052bb4..08adb091b 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/KeyName.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/KeyName.java
@@ -17,21 +17,24 @@
package org.opensaml.xmlsec.signature;
+import javax.annotation.Nonnull;
import javax.xml.namespace.QName;
import org.opensaml.core.xml.schema.XSString;
import org.opensaml.xmlsec.signature.support.SignatureConstants;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
/**
* XMLObject representing XML Digital Signature, version 20020212, KeyName element.
*/
public interface KeyName extends XSString {
/** Element local name. */
- public static final String DEFAULT_ELEMENT_LOCAL_NAME = "KeyName";
+ @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "KeyName";
/** Default element name. */
- public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
+ @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
DEFAULT_ELEMENT_LOCAL_NAME, SignatureConstants.XMLSIG_PREFIX);
}
\ No newline at end of file
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/KeyValue.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/KeyValue.java
index c0776ab5c..a68c25f6a 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/KeyValue.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/KeyValue.java
@@ -17,6 +17,7 @@
package org.opensaml.xmlsec.signature;
+import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import javax.xml.namespace.QName;
@@ -24,23 +25,25 @@ import org.opensaml.core.xml.XMLObject;
import org.opensaml.xmlsec.encryption.DHKeyValue;
import org.opensaml.xmlsec.signature.support.SignatureConstants;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
/**
* XMLObject representing XML Digital Signature, version 20020212, KeyValue element.
*/
public interface KeyValue extends XMLObject {
/** Element local name. */
- public static final String DEFAULT_ELEMENT_LOCAL_NAME = "KeyValue";
+ @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "KeyValue";
/** Default element name. */
- public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
+ @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
DEFAULT_ELEMENT_LOCAL_NAME, SignatureConstants.XMLSIG_PREFIX);
/** Local name of the XSI type. */
- public static final String TYPE_LOCAL_NAME = "KeyValueType";
+ @Nonnull @NotEmpty public static final String TYPE_LOCAL_NAME = "KeyValueType";
/** QName of the XSI type. */
- public static final QName TYPE_NAME = new QName(SignatureConstants.XMLSIG_NS, TYPE_LOCAL_NAME,
+ @Nonnull public static final QName TYPE_NAME = new QName(SignatureConstants.XMLSIG_NS, TYPE_LOCAL_NAME,
SignatureConstants.XMLSIG_PREFIX);
/**
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/MgmtData.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/MgmtData.java
index e31074fba..37ac740f8 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/MgmtData.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/MgmtData.java
@@ -17,21 +17,24 @@
package org.opensaml.xmlsec.signature;
+import javax.annotation.Nonnull;
import javax.xml.namespace.QName;
import org.opensaml.core.xml.schema.XSString;
import org.opensaml.xmlsec.signature.support.SignatureConstants;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
/**
* XMLObject representing XML Digital Signature, version 20020212, MgmtData element.
*/
public interface MgmtData extends XSString {
/** Element local name. */
- public static final String DEFAULT_ELEMENT_LOCAL_NAME = "MgmtData";
+ @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "MgmtData";
/** Default element name. */
- public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
+ @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
DEFAULT_ELEMENT_LOCAL_NAME, SignatureConstants.XMLSIG_PREFIX);
}
\ No newline at end of file
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/Modulus.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/Modulus.java
index cf80559cf..0aee9f173 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/Modulus.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/Modulus.java
@@ -17,20 +17,23 @@
package org.opensaml.xmlsec.signature;
+import javax.annotation.Nonnull;
import javax.xml.namespace.QName;
import org.opensaml.xmlsec.signature.support.SignatureConstants;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
/**
* XMLObject representing XML Digital Signature, version 20020212, Modulus element.
*/
public interface Modulus extends CryptoBinary {
/** Element local name. */
- public static final String DEFAULT_ELEMENT_LOCAL_NAME = "Modulus";
+ @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "Modulus";
/** Default element name. */
- public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
+ @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
DEFAULT_ELEMENT_LOCAL_NAME, SignatureConstants.XMLSIG_PREFIX);
}
\ No newline at end of file
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/NamedCurve.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/NamedCurve.java
index a4aa0fc0a..c332b0365 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/NamedCurve.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/NamedCurve.java
@@ -17,12 +17,15 @@
package org.opensaml.xmlsec.signature;
+import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import javax.xml.namespace.QName;
import org.opensaml.core.xml.XMLObject;
import org.opensaml.xmlsec.signature.support.SignatureConstants;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
/**
* XMLObject representing XML Digital Signature 1.1 NamedCurve element.
@@ -30,21 +33,21 @@ import org.opensaml.xmlsec.signature.support.SignatureConstants;
public interface NamedCurve extends XMLObject {
/** Element local name. */
- public static final String DEFAULT_ELEMENT_LOCAL_NAME = "NamedCurve";
+ @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "NamedCurve";
/** Default element name. */
- public static final QName DEFAULT_ELEMENT_NAME =
+ @Nonnull public static final QName DEFAULT_ELEMENT_NAME =
new QName(SignatureConstants.XMLSIG11_NS, DEFAULT_ELEMENT_LOCAL_NAME, SignatureConstants.XMLSIG11_PREFIX);
/** Local name of the XSI type. */
- public static final String TYPE_LOCAL_NAME = "NamedCurveType";
+ @Nonnull @NotEmpty public static final String TYPE_LOCAL_NAME = "NamedCurveType";
/** QName of the XSI type. */
- public static final QName TYPE_NAME =
+ @Nonnull public static final QName TYPE_NAME =
new QName(SignatureConstants.XMLSIG11_NS, TYPE_LOCAL_NAME, SignatureConstants.XMLSIG11_PREFIX);
/** URI attribute name. */
- public static final String URI_ATTRIB_NAME = "URI";
+ @Nonnull @NotEmpty public static final String URI_ATTRIB_NAME = "URI";
/**
* Get the URI attribute value.
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/P.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/P.java
index 8bad47e91..ede03a48f 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/P.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/P.java
@@ -17,20 +17,23 @@
package org.opensaml.xmlsec.signature;
+import javax.annotation.Nonnull;
import javax.xml.namespace.QName;
import org.opensaml.xmlsec.signature.support.SignatureConstants;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
/**
* XMLObject representing XML Digital Signature, version 20020212, P element.
*/
public interface P extends CryptoBinary {
/** Element local name. */
- public static final String DEFAULT_ELEMENT_LOCAL_NAME = "P";
+ @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "P";
/** Default element name. */
- public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
+ @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
DEFAULT_ELEMENT_LOCAL_NAME, SignatureConstants.XMLSIG_PREFIX);
}
\ No newline at end of file
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/PGPData.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/PGPData.java
index 49f007d76..27c82d9c8 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/PGPData.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/PGPData.java
@@ -17,6 +17,7 @@
package org.opensaml.xmlsec.signature;
+import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import javax.xml.namespace.QName;
@@ -24,23 +25,25 @@ import org.opensaml.core.xml.ElementExtensibleXMLObject;
import org.opensaml.core.xml.XMLObject;
import org.opensaml.xmlsec.signature.support.SignatureConstants;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
/**
* XMLObject representing XML Digital Signature, version 20020212, PGPData element.
*/
public interface PGPData extends XMLObject, ElementExtensibleXMLObject {
/** Element local name. */
- public static final String DEFAULT_ELEMENT_LOCAL_NAME = "PGPData";
+ @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "PGPData";
/** Default element name. */
- public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
+ @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
DEFAULT_ELEMENT_LOCAL_NAME, SignatureConstants.XMLSIG_PREFIX);
/** Local name of the XSI type. */
- public static final String TYPE_LOCAL_NAME = "PGPDataType";
+ @Nonnull @NotEmpty public static final String TYPE_LOCAL_NAME = "PGPDataType";
/** QName of the XSI type. */
- public static final QName TYPE_NAME = new QName(SignatureConstants.XMLSIG_NS, TYPE_LOCAL_NAME,
+ @Nonnull public static final QName TYPE_NAME = new QName(SignatureConstants.XMLSIG_NS, TYPE_LOCAL_NAME,
SignatureConstants.XMLSIG_PREFIX);
/**
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/PGPKeyID.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/PGPKeyID.java
index f85734788..59fcd0189 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/PGPKeyID.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/PGPKeyID.java
@@ -17,21 +17,24 @@
package org.opensaml.xmlsec.signature;
+import javax.annotation.Nonnull;
import javax.xml.namespace.QName;
import org.opensaml.core.xml.schema.XSBase64Binary;
import org.opensaml.xmlsec.signature.support.SignatureConstants;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
/**
* XMLObject representing XML Digital Signature, version 20020212, PGPKeyID element.
*/
public interface PGPKeyID extends XSBase64Binary {
/** Element local name. */
- public static final String DEFAULT_ELEMENT_LOCAL_NAME = "PGPKeyID";
+ @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "PGPKeyID";
/** Default element name. */
- public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
+ @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
DEFAULT_ELEMENT_LOCAL_NAME, SignatureConstants.XMLSIG_PREFIX);
}
\ No newline at end of file
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/PGPKeyPacket.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/PGPKeyPacket.java
index 0cf2f7c87..493708b4a 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/PGPKeyPacket.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/PGPKeyPacket.java
@@ -17,21 +17,24 @@
package org.opensaml.xmlsec.signature;
+import javax.annotation.Nonnull;
import javax.xml.namespace.QName;
import org.opensaml.core.xml.schema.XSBase64Binary;
import org.opensaml.xmlsec.signature.support.SignatureConstants;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
/**
* XMLObject representing XML Digital Signature, version 20020212, PGPKeyPacket element.
*/
public interface PGPKeyPacket extends XSBase64Binary {
/** Element local name. */
- public static final String DEFAULT_ELEMENT_LOCAL_NAME = "PGPKeyPacket";
+ @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "PGPKeyPacket";
/** Default element name. */
- public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
+ @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
DEFAULT_ELEMENT_LOCAL_NAME, SignatureConstants.XMLSIG_PREFIX);
}
\ No newline at end of file
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/PgenCounter.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/PgenCounter.java
index e1ee67b00..adc450831 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/PgenCounter.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/PgenCounter.java
@@ -17,20 +17,23 @@
package org.opensaml.xmlsec.signature;
+import javax.annotation.Nonnull;
import javax.xml.namespace.QName;
import org.opensaml.xmlsec.signature.support.SignatureConstants;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
/**
* XMLObject representing XML Digital Signature, version 20020212, PgenCounter element.
*/
public interface PgenCounter extends CryptoBinary {
/** Element local name. */
- public static final String DEFAULT_ELEMENT_LOCAL_NAME = "PgenCounter";
+ @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "PgenCounter";
/** Default element name. */
- public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
+ @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
DEFAULT_ELEMENT_LOCAL_NAME, SignatureConstants.XMLSIG_PREFIX);
}
\ No newline at end of file
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/PublicKey.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/PublicKey.java
index 89b851ccd..c7ccd4d60 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/PublicKey.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/PublicKey.java
@@ -17,10 +17,13 @@
package org.opensaml.xmlsec.signature;
+import javax.annotation.Nonnull;
import javax.xml.namespace.QName;
import org.opensaml.xmlsec.signature.support.SignatureConstants;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
/**
* XMLObject representing XML Digital Signature 1.1 PublicKey element.
@@ -28,10 +31,10 @@ import org.opensaml.xmlsec.signature.support.SignatureConstants;
public interface PublicKey extends ECPointType {
/** Element local name. */
- public static final String DEFAULT_ELEMENT_LOCAL_NAME = "PublicKey";
+ @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "PublicKey";
/** Default element name. */
- public static final QName DEFAULT_ELEMENT_NAME =
+ @Nonnull public static final QName DEFAULT_ELEMENT_NAME =
new QName(SignatureConstants.XMLSIG11_NS, DEFAULT_ELEMENT_LOCAL_NAME, SignatureConstants.XMLSIG11_PREFIX);
}
\ No newline at end of file
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/Q.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/Q.java
index b81e54fe5..1834ee246 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/Q.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/Q.java
@@ -17,20 +17,23 @@
package org.opensaml.xmlsec.signature;
+import javax.annotation.Nonnull;
import javax.xml.namespace.QName;
import org.opensaml.xmlsec.signature.support.SignatureConstants;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
/**
* XMLObject representing XML Digital Signature, version 20020212, Q element.
*/
public interface Q extends CryptoBinary {
/** Element local name. */
- public static final String DEFAULT_ELEMENT_LOCAL_NAME = "Q";
+ @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "Q";
/** Default element name. */
- public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
+ @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
DEFAULT_ELEMENT_LOCAL_NAME, SignatureConstants.XMLSIG_PREFIX);
}
\ No newline at end of file
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/RSAKeyValue.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/RSAKeyValue.java
index 2e04c5727..995fb3996 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/RSAKeyValue.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/RSAKeyValue.java
@@ -17,27 +17,30 @@
package org.opensaml.xmlsec.signature;
+import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import javax.xml.namespace.QName;
import org.opensaml.core.xml.XMLObject;
import org.opensaml.xmlsec.signature.support.SignatureConstants;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
/** XMLObject representing XML Digital Signature, version 20020212, RSAKeyValue element. */
public interface RSAKeyValue extends XMLObject {
/** Element local name. */
- public static final String DEFAULT_ELEMENT_LOCAL_NAME = "RSAKeyValue";
+ @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "RSAKeyValue";
/** Default element name. */
- public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
+ @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
DEFAULT_ELEMENT_LOCAL_NAME, SignatureConstants.XMLSIG_PREFIX);
/** Local name of the XSI type. */
- public static final String TYPE_LOCAL_NAME = "RSAKeyValueType";
+ @Nonnull @NotEmpty public static final String TYPE_LOCAL_NAME = "RSAKeyValueType";
/** QName of the XSI type. */
- public static final QName TYPE_NAME = new QName(SignatureConstants.XMLSIG_NS, TYPE_LOCAL_NAME,
+ @Nonnull public static final QName TYPE_NAME = new QName(SignatureConstants.XMLSIG_NS, TYPE_LOCAL_NAME,
SignatureConstants.XMLSIG_PREFIX);
/**
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/RetrievalMethod.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/RetrievalMethod.java
index 82161ba9f..b0c21c3b1 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/RetrievalMethod.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/RetrievalMethod.java
@@ -17,36 +17,39 @@
package org.opensaml.xmlsec.signature;
+import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import javax.xml.namespace.QName;
import org.opensaml.core.xml.XMLObject;
import org.opensaml.xmlsec.signature.support.SignatureConstants;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
/**
* XMLObject representing XML Digital Signature, version 20020212, RetrievalMethod element.
*/
public interface RetrievalMethod extends XMLObject {
/** Element local name. */
- public static final String DEFAULT_ELEMENT_LOCAL_NAME = "RetrievalMethod";
+ @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "RetrievalMethod";
/** Default element name. */
- public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
+ @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
DEFAULT_ELEMENT_LOCAL_NAME, SignatureConstants.XMLSIG_PREFIX);
/** Local name of the XSI type. */
- public static final String TYPE_LOCAL_NAME = "RetrievalMethodType";
+ @Nonnull @NotEmpty public static final String TYPE_LOCAL_NAME = "RetrievalMethodType";
/** QName of the XSI type. */
- public static final QName TYPE_NAME = new QName(SignatureConstants.XMLSIG_NS, TYPE_LOCAL_NAME,
+ @Nonnull public static final QName TYPE_NAME = new QName(SignatureConstants.XMLSIG_NS, TYPE_LOCAL_NAME,
SignatureConstants.XMLSIG_PREFIX);
/** URI attribute name. */
- public static final String URI_ATTRIB_NAME = "URI";
+ @Nonnull @NotEmpty public static final String URI_ATTRIB_NAME = "URI";
/** Type attribute name. */
- public static final String TYPE_ATTRIB_NAME = "Type";
+ @Nonnull @NotEmpty public static final String TYPE_ATTRIB_NAME = "Type";
/**
* Get the URI attribute value.
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/SPKIData.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/SPKIData.java
index 68d1a6fb4..09d9ce898 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/SPKIData.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/SPKIData.java
@@ -25,23 +25,25 @@ import javax.xml.namespace.QName;
import org.opensaml.core.xml.XMLObject;
import org.opensaml.xmlsec.signature.support.SignatureConstants;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
/**
* XMLObject representing XML Digital Signature, version 20020212, SPKIData element.
*/
public interface SPKIData extends XMLObject {
/** Element local name. */
- public static final String DEFAULT_ELEMENT_LOCAL_NAME = "SPKIData";
+ @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "SPKIData";
/** Default element name. */
- public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
+ @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
DEFAULT_ELEMENT_LOCAL_NAME, SignatureConstants.XMLSIG_PREFIX);
/** Local name of the XSI type. */
- public static final String TYPE_LOCAL_NAME = "SPKIDataType";
+ @Nonnull @NotEmpty public static final String TYPE_LOCAL_NAME = "SPKIDataType";
/** QName of the XSI type. */
- public static final QName TYPE_NAME = new QName(SignatureConstants.XMLSIG_NS, TYPE_LOCAL_NAME,
+ @Nonnull public static final QName TYPE_NAME = new QName(SignatureConstants.XMLSIG_NS, TYPE_LOCAL_NAME,
SignatureConstants.XMLSIG_PREFIX);
/**
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/SPKISexp.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/SPKISexp.java
index 782506201..af8cc4ee2 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/SPKISexp.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/SPKISexp.java
@@ -17,21 +17,24 @@
package org.opensaml.xmlsec.signature;
+import javax.annotation.Nonnull;
import javax.xml.namespace.QName;
import org.opensaml.core.xml.schema.XSBase64Binary;
import org.opensaml.xmlsec.signature.support.SignatureConstants;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
/**
* XMLObject representing XML Digital Signature, version 20020212, SPKISexp element.
*/
public interface SPKISexp extends XSBase64Binary {
/** Element local name. */
- public static final String DEFAULT_ELEMENT_LOCAL_NAME = "SPKISexp";
+ @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "SPKISexp";
/** Default element name. */
- public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
+ @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
DEFAULT_ELEMENT_LOCAL_NAME, SignatureConstants.XMLSIG_PREFIX);
}
\ No newline at end of file
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/Seed.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/Seed.java
index eff6ca199..3d6c5716b 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/Seed.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/Seed.java
@@ -17,20 +17,23 @@
package org.opensaml.xmlsec.signature;
+import javax.annotation.Nonnull;
import javax.xml.namespace.QName;
import org.opensaml.xmlsec.signature.support.SignatureConstants;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
/**
* XMLObject representing XML Digital Signature, version 20020212, Seed element.
*/
public interface Seed extends CryptoBinary {
/** Element local name. */
- public static final String DEFAULT_ELEMENT_LOCAL_NAME = "Seed";
+ @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "Seed";
/** Default element name. */
- public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
+ @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
DEFAULT_ELEMENT_LOCAL_NAME, SignatureConstants.XMLSIG_PREFIX);
}
\ No newline at end of file
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/SignableXMLObject.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/SignableXMLObject.java
index 3b9ac3c88..50a15faf2 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/SignableXMLObject.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/SignableXMLObject.java
@@ -31,19 +31,19 @@ public interface SignableXMLObject extends XMLObject {
*
* @return true iff this element is signed
*/
- public boolean isSigned();
+ boolean isSigned();
/**
* Gets the Signature XMLObject.
*
* @return the Signature XMLObject
*/
- @Nullable public Signature getSignature();
+ @Nullable Signature getSignature();
/**
* Sets the Signature XMLObject.
*
* @param newSignature the Signature XMLObject
*/
- public void setSignature(@Nullable final Signature newSignature);
+ void setSignature(@Nullable final Signature newSignature);
}
\ No newline at end of file
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/Signature.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/Signature.java
index 4b47fd462..16e3cc943 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/Signature.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/Signature.java
@@ -28,23 +28,25 @@ import org.opensaml.security.credential.Credential;
import org.opensaml.xmlsec.signature.support.ContentReference;
import org.opensaml.xmlsec.signature.support.SignatureConstants;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
/**
* XMLObject representing an enveloped or detached XML Digital Signature, version 20020212, Signature element.
*/
public interface Signature extends XMLObject {
/** Element local name. */
- public static final String DEFAULT_ELEMENT_LOCAL_NAME = "Signature";
+ @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "Signature";
/** Default element name. */
- public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS, DEFAULT_ELEMENT_LOCAL_NAME,
- SignatureConstants.XMLSIG_PREFIX);
+ @Nonnull public static final QName DEFAULT_ELEMENT_NAME =
+ new QName(SignatureConstants.XMLSIG_NS, DEFAULT_ELEMENT_LOCAL_NAME, SignatureConstants.XMLSIG_PREFIX);
/** Local name of the XSI type. */
- public static final String TYPE_LOCAL_NAME = "SignatureType";
+ @Nonnull @NotEmpty public static final String TYPE_LOCAL_NAME = "SignatureType";
/** QName of the XSI type. */
- public static final QName TYPE_NAME = new QName(SignatureConstants.XMLSIG_NS, TYPE_LOCAL_NAME,
+ @Nonnull public static final QName TYPE_NAME = new QName(SignatureConstants.XMLSIG_NS, TYPE_LOCAL_NAME,
SignatureConstants.XMLSIG_PREFIX);
/**
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/Transform.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/Transform.java
index f353b0ed5..2bfb5aaac 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/Transform.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/Transform.java
@@ -26,27 +26,29 @@ import javax.xml.namespace.QName;
import org.opensaml.core.xml.XMLObject;
import org.opensaml.xmlsec.signature.support.SignatureConstants;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
/**
* XMLObject representing XML Digital Signature, version 20020212, Transform element.
*/
public interface Transform extends XMLObject {
/** Element local name. */
- public static final String DEFAULT_ELEMENT_LOCAL_NAME = "Transform";
+ @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "Transform";
/** Default element name. */
- public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
+ @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
DEFAULT_ELEMENT_LOCAL_NAME, SignatureConstants.XMLSIG_PREFIX);
/** Local name of the XSI type. */
- public static final String TYPE_LOCAL_NAME = "TransformType";
+ @Nonnull @NotEmpty public static final String TYPE_LOCAL_NAME = "TransformType";
/** QName of the XSI type. */
- public static final QName TYPE_NAME = new QName(SignatureConstants.XMLSIG_NS, TYPE_LOCAL_NAME,
+ @Nonnull public static final QName TYPE_NAME = new QName(SignatureConstants.XMLSIG_NS, TYPE_LOCAL_NAME,
SignatureConstants.XMLSIG_PREFIX);
/** Algorithm attribute name. */
- public static final String ALGORITHM_ATTRIB_NAME = "Algorithm";
+ @Nonnull @NotEmpty public static final String ALGORITHM_ATTRIB_NAME = "Algorithm";
/**
* Get the Algorithm URI attribute value.
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/Transforms.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/Transforms.java
index 962b44d79..bd0b869f6 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/Transforms.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/Transforms.java
@@ -25,23 +25,25 @@ import javax.xml.namespace.QName;
import org.opensaml.core.xml.XMLObject;
import org.opensaml.xmlsec.signature.support.SignatureConstants;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
/**
* XMLObject representing XML Digital Signature, version 20020212, Transforms element.
*/
public interface Transforms extends XMLObject {
/** Element local name. */
- public static final String DEFAULT_ELEMENT_LOCAL_NAME = "Transforms";
+ @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "Transforms";
/** Default element name. */
- public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
+ @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
DEFAULT_ELEMENT_LOCAL_NAME, SignatureConstants.XMLSIG_PREFIX);
/** Local name of the XSI type. */
- public static final String TYPE_LOCAL_NAME = "TransformsType";
+ @Nonnull @NotEmpty public static final String TYPE_LOCAL_NAME = "TransformsType";
/** QName of the XSI type. */
- public static final QName TYPE_NAME = new QName(SignatureConstants.XMLSIG_NS, TYPE_LOCAL_NAME,
+ @Nonnull public static final QName TYPE_NAME = new QName(SignatureConstants.XMLSIG_NS, TYPE_LOCAL_NAME,
SignatureConstants.XMLSIG_PREFIX);
/**
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/X509CRL.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/X509CRL.java
index 713f45cbc..f9b911213 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/X509CRL.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/X509CRL.java
@@ -17,19 +17,22 @@
package org.opensaml.xmlsec.signature;
+import javax.annotation.Nonnull;
import javax.xml.namespace.QName;
import org.opensaml.core.xml.schema.XSBase64Binary;
import org.opensaml.xmlsec.signature.support.SignatureConstants;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
/** XMLObject representing XML Digital Signature, version 20020212, X509CRL element. */
public interface X509CRL extends XSBase64Binary {
/** Element local name. */
- public static final String DEFAULT_ELEMENT_LOCAL_NAME = "X509CRL";
+ @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "X509CRL";
/** Default element name. */
- public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
+ @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
DEFAULT_ELEMENT_LOCAL_NAME, SignatureConstants.XMLSIG_PREFIX);
}
\ No newline at end of file
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/X509Certificate.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/X509Certificate.java
index 7f6c770b6..ec11a923b 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/X509Certificate.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/X509Certificate.java
@@ -17,19 +17,22 @@
package org.opensaml.xmlsec.signature;
+import javax.annotation.Nonnull;
import javax.xml.namespace.QName;
import org.opensaml.core.xml.schema.XSBase64Binary;
import org.opensaml.xmlsec.signature.support.SignatureConstants;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
/** XMLObject representing XML Digital Signature, version 20020212, X509Certificate element. */
public interface X509Certificate extends XSBase64Binary {
/** Element local name. */
- public static final String DEFAULT_ELEMENT_LOCAL_NAME = "X509Certificate";
+ @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "X509Certificate";
/** Default element name. */
- public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
+ @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
DEFAULT_ELEMENT_LOCAL_NAME, SignatureConstants.XMLSIG_PREFIX);
}
\ No newline at end of file
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/X509Data.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/X509Data.java
index 5cfa668c9..021c2a0d5 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/X509Data.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/X509Data.java
@@ -25,21 +25,23 @@ import javax.xml.namespace.QName;
import org.opensaml.core.xml.XMLObject;
import org.opensaml.xmlsec.signature.support.SignatureConstants;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
/** XMLObject representing XML Digital Signature, version 20020212, X509Data element. */
public interface X509Data extends XMLObject {
/** Element local name. */
- public static final String DEFAULT_ELEMENT_LOCAL_NAME = "X509Data";
+ @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "X509Data";
/** Default element name. */
- public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
+ @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
DEFAULT_ELEMENT_LOCAL_NAME, SignatureConstants.XMLSIG_PREFIX);
/** Local name of the XSI type. */
- public static final String TYPE_LOCAL_NAME = "X509DataType";
+ @Nonnull @NotEmpty public static final String TYPE_LOCAL_NAME = "X509DataType";
/** QName of the XSI type. */
- public static final QName TYPE_NAME = new QName(SignatureConstants.XMLSIG_NS, TYPE_LOCAL_NAME,
+ @Nonnull public static final QName TYPE_NAME = new QName(SignatureConstants.XMLSIG_NS, TYPE_LOCAL_NAME,
SignatureConstants.XMLSIG_PREFIX);
/**
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/X509Digest.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/X509Digest.java
index f4623a872..5b57293f4 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/X509Digest.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/X509Digest.java
@@ -18,33 +18,36 @@
package org.opensaml.xmlsec.signature;
+import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import javax.xml.namespace.QName;
import org.opensaml.core.xml.schema.XSBase64Binary;
import org.opensaml.xmlsec.signature.support.SignatureConstants;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
/**
* XMLObject representing XML Digital Signature 1.1 X509Digest element.
*/
public interface X509Digest extends XSBase64Binary {
/** Element local name. */
- public static final String DEFAULT_ELEMENT_LOCAL_NAME = "X509Digest";
+ @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "X509Digest";
/** Default element name. */
- public static final QName DEFAULT_ELEMENT_NAME =
+ @Nonnull public static final QName DEFAULT_ELEMENT_NAME =
new QName(SignatureConstants.XMLSIG11_NS, DEFAULT_ELEMENT_LOCAL_NAME, SignatureConstants.XMLSIG11_PREFIX);
/** Local name of the XSI type. */
- public static final String TYPE_LOCAL_NAME = "X509DigestType";
+ @Nonnull @NotEmpty public static final String TYPE_LOCAL_NAME = "X509DigestType";
/** QName of the XSI type. */
- public static final QName TYPE_NAME =
+ @Nonnull public static final QName TYPE_NAME =
new QName(SignatureConstants.XMLSIG11_NS, TYPE_LOCAL_NAME, SignatureConstants.XMLSIG11_PREFIX);
/** Algorithm attribute name. */
- public static final String ALGORITHM_ATTRIB_NAME = "Algorithm";
+ @Nonnull @NotEmpty public static final String ALGORITHM_ATTRIB_NAME = "Algorithm";
/**
* Get the Algorithm URI attribute value.
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/X509IssuerName.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/X509IssuerName.java
index 9638c4131..a297ba21c 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/X509IssuerName.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/X509IssuerName.java
@@ -17,19 +17,22 @@
package org.opensaml.xmlsec.signature;
+import javax.annotation.Nonnull;
import javax.xml.namespace.QName;
import org.opensaml.core.xml.schema.XSString;
import org.opensaml.xmlsec.signature.support.SignatureConstants;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
/** XMLObject representing XML Digital Signature, version 20020212, X509IssuerName element. */
public interface X509IssuerName extends XSString {
/** Element local name. */
- public static final String DEFAULT_ELEMENT_LOCAL_NAME = "X509IssuerName";
+ @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "X509IssuerName";
/** Default element name. */
- public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
+ @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
DEFAULT_ELEMENT_LOCAL_NAME, SignatureConstants.XMLSIG_PREFIX);
}
\ No newline at end of file
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/X509IssuerSerial.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/X509IssuerSerial.java
index 6d52cc475..b17bbd9c4 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/X509IssuerSerial.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/X509IssuerSerial.java
@@ -17,27 +17,30 @@
package org.opensaml.xmlsec.signature;
+import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import javax.xml.namespace.QName;
import org.opensaml.core.xml.XMLObject;
import org.opensaml.xmlsec.signature.support.SignatureConstants;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
/** XMLObject representing XML Digital Signature, version 20020212, X509IssuerSerial element. */
public interface X509IssuerSerial extends XMLObject {
/** Element local name. */
- public static final String DEFAULT_ELEMENT_LOCAL_NAME = "X509IssuerSerial";
+ @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "X509IssuerSerial";
/** Default element name. */
- public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
+ @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
DEFAULT_ELEMENT_LOCAL_NAME, SignatureConstants.XMLSIG_PREFIX);
/** Local name of the XSI type. */
- public static final String TYPE_LOCAL_NAME = "X509IssuerSerialType";
+ @Nonnull public static final String TYPE_LOCAL_NAME = "X509IssuerSerialType";
/** QName of the XSI type. */
- public static final QName TYPE_NAME = new QName(SignatureConstants.XMLSIG_NS, TYPE_LOCAL_NAME,
+ @Nonnull @NotEmpty public static final QName TYPE_NAME = new QName(SignatureConstants.XMLSIG_NS, TYPE_LOCAL_NAME,
SignatureConstants.XMLSIG_PREFIX);
/**
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/X509SKI.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/X509SKI.java
index 6387aa3b5..9e3795881 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/X509SKI.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/X509SKI.java
@@ -17,19 +17,22 @@
package org.opensaml.xmlsec.signature;
+import javax.annotation.Nonnull;
import javax.xml.namespace.QName;
import org.opensaml.core.xml.schema.XSBase64Binary;
import org.opensaml.xmlsec.signature.support.SignatureConstants;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
/** XMLObject representing XML Digital Signature, version 20020212, X509SKI element. */
public interface X509SKI extends XSBase64Binary {
/** Element local name. */
- public static final String DEFAULT_ELEMENT_LOCAL_NAME = "X509SKI";
+ @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "X509SKI";
/** Default element name. */
- public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
+ @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
DEFAULT_ELEMENT_LOCAL_NAME, SignatureConstants.XMLSIG_PREFIX);
}
\ No newline at end of file
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/X509SerialNumber.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/X509SerialNumber.java
index 66b64326b..9526b0575 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/X509SerialNumber.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/X509SerialNumber.java
@@ -19,12 +19,14 @@ package org.opensaml.xmlsec.signature;
import java.math.BigInteger;
+import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import javax.xml.namespace.QName;
import org.opensaml.core.xml.XMLObject;
import org.opensaml.xmlsec.signature.support.SignatureConstants;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
import net.shibboleth.shared.xml.XMLConstants;
/**
@@ -33,17 +35,18 @@ import net.shibboleth.shared.xml.XMLConstants;
public interface X509SerialNumber extends XMLObject {
/** Element local name. */
- public static final String DEFAULT_ELEMENT_LOCAL_NAME = "X509SerialNumber";
+ @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "X509SerialNumber";
/** Default element name. */
- public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
+ @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
DEFAULT_ELEMENT_LOCAL_NAME, SignatureConstants.XMLSIG_PREFIX);
/** Local name of the XSI type. */
- public static final String TYPE_LOCAL_NAME = "integer";
+ @Nonnull @NotEmpty public static final String TYPE_LOCAL_NAME = "integer";
/** QName of the XSI type. */
- public static final QName TYPE_NAME = new QName(XMLConstants.XSD_NS, TYPE_LOCAL_NAME, XMLConstants.XSD_PREFIX);
+ @Nonnull public static final QName TYPE_NAME =
+ new QName(XMLConstants.XSD_NS, TYPE_LOCAL_NAME, XMLConstants.XSD_PREFIX);
/**
* Gets the integer.
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/X509SubjectName.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/X509SubjectName.java
index 5a8592461..ca37d81d0 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/X509SubjectName.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/X509SubjectName.java
@@ -17,19 +17,22 @@
package org.opensaml.xmlsec.signature;
+import javax.annotation.Nonnull;
import javax.xml.namespace.QName;
import org.opensaml.core.xml.schema.XSString;
import org.opensaml.xmlsec.signature.support.SignatureConstants;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
/** XMLObject representing XML Digital Signature, version 20020212, X509SubjectName element. */
public interface X509SubjectName extends XSString {
/** Element local name. */
- public static final String DEFAULT_ELEMENT_LOCAL_NAME = "X509SubjectName";
+ @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "X509SubjectName";
/** Default element name. */
- public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
+ @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
DEFAULT_ELEMENT_LOCAL_NAME, SignatureConstants.XMLSIG_PREFIX);
}
\ No newline at end of file
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/XPath.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/XPath.java
index 748bc5905..63855495c 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/XPath.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/XPath.java
@@ -17,21 +17,24 @@
package org.opensaml.xmlsec.signature;
+import javax.annotation.Nonnull;
import javax.xml.namespace.QName;
import org.opensaml.core.xml.schema.XSString;
import org.opensaml.xmlsec.signature.support.SignatureConstants;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
/**
* XMLObject representing XML Digital Signature, version 20020212, XPath element.
*/
public interface XPath extends XSString {
/** Element local name. */
- public static final String DEFAULT_ELEMENT_LOCAL_NAME = "XPath";
+ @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "XPath";
/** Default element name. */
- public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
+ @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
DEFAULT_ELEMENT_LOCAL_NAME, SignatureConstants.XMLSIG_PREFIX);
}
\ No newline at end of file
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/Y.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/Y.java
index ed2890ba6..593dbf318 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/Y.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/Y.java
@@ -17,20 +17,23 @@
package org.opensaml.xmlsec.signature;
+import javax.annotation.Nonnull;
import javax.xml.namespace.QName;
import org.opensaml.xmlsec.signature.support.SignatureConstants;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
/**
* XMLObject representing XML Digital Signature, version 20020212, Y element.
*/
public interface Y extends CryptoBinary {
/** Element local name. */
- public static final String DEFAULT_ELEMENT_LOCAL_NAME = "Y";
+ @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "Y";
/** Default element name. */
- public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
+ @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(SignatureConstants.XMLSIG_NS,
DEFAULT_ELEMENT_LOCAL_NAME, SignatureConstants.XMLSIG_PREFIX);
}
\ No newline at end of file
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/support/SignatureConstants.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/support/SignatureConstants.java
index 0a15d390c..7169edddd 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/support/SignatureConstants.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/support/SignatureConstants.java
@@ -17,8 +17,12 @@
package org.opensaml.xmlsec.signature.support;
+import javax.annotation.Nonnull;
+
import org.opensaml.xmlsec.encryption.support.EncryptionConstants;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
/**
* Constants defined in or related to the XML Signature 1.0 and 1.1 specifications and
* related RFCs.
@@ -26,44 +30,44 @@ import org.opensaml.xmlsec.encryption.support.EncryptionConstants;
public final class SignatureConstants {
/** XML Signature namespace and algorithm prefix. */
- public static final String XMLSIG_NS = "http://www.w3.org/2000/09/xmldsig#";
+ @Nonnull @NotEmpty public static final String XMLSIG_NS = "http://www.w3.org/2000/09/xmldsig#";
/** XML Signature 1.1 namespace and algorithm prefix. */
- public static final String XMLSIG11_NS = "http://www.w3.org/2009/xmldsig11#";
+ @Nonnull @NotEmpty public static final String XMLSIG11_NS = "http://www.w3.org/2009/xmldsig11#";
/** XML Signature QName prefix. */
- public static final String XMLSIG_PREFIX = "ds";
+ @Nonnull @NotEmpty public static final String XMLSIG_PREFIX = "ds";
/** XML Signature 1.1 QName prefix. */
- public static final String XMLSIG11_PREFIX = "ds11";
+ @Nonnull @NotEmpty public static final String XMLSIG11_PREFIX = "ds11";
/** Algorithm URI prefix used by RFC 4051. */
- public static final String MORE_ALGO_NS = "http://www.w3.org/2001/04/xmldsig-more#";
+ @Nonnull @NotEmpty public static final String MORE_ALGO_NS = "http://www.w3.org/2001/04/xmldsig-more#";
// *********************************************************
// Algorithm URI's
// *********************************************************
/** Signature - Optional DSAwithSHA1 (DSS). */
- public static final String ALGO_ID_SIGNATURE_DSA = XMLSIG_NS + "dsa-sha1";
+ @Nonnull @NotEmpty public static final String ALGO_ID_SIGNATURE_DSA = XMLSIG_NS + "dsa-sha1";
/** Signature - Optional DSAwithSHA1 (DSS). */
- public static final String ALGO_ID_SIGNATURE_DSA_SHA1 = ALGO_ID_SIGNATURE_DSA;
+ @Nonnull @NotEmpty public static final String ALGO_ID_SIGNATURE_DSA_SHA1 = ALGO_ID_SIGNATURE_DSA;
/** Signature - Required RSAwithSHA1 (PKCS1). */
- public static final String ALGO_ID_SIGNATURE_RSA = XMLSIG_NS + "rsa-sha1";
+ @Nonnull @NotEmpty public static final String ALGO_ID_SIGNATURE_RSA = XMLSIG_NS + "rsa-sha1";
/** Signature - Required RSAwithSHA1 (PKCS1). */
- public static final String ALGO_ID_SIGNATURE_RSA_SHA1 = ALGO_ID_SIGNATURE_RSA;
+ @Nonnull @NotEmpty public static final String ALGO_ID_SIGNATURE_RSA_SHA1 = ALGO_ID_SIGNATURE_RSA;
/** MAC - Required HMAC-SHA1. */
- public static final String ALGO_ID_MAC_HMAC_SHA1 = XMLSIG_NS + "hmac-sha1";
+ @Nonnull @NotEmpty public static final String ALGO_ID_MAC_HMAC_SHA1 = XMLSIG_NS + "hmac-sha1";
/** Digest - Required SHA1. */
- public static final String ALGO_ID_DIGEST_SHA1 = XMLSIG_NS + "sha1";
+ @Nonnull @NotEmpty public static final String ALGO_ID_DIGEST_SHA1 = XMLSIG_NS + "sha1";
/** Encoding - Required Base64. */
- public static final String ALGO_ID_ENCODING_BASE64 = XMLSIG_NS + "base64";
+ @Nonnull @NotEmpty public static final String ALGO_ID_ENCODING_BASE64 = XMLSIG_NS + "base64";
// *********************************************************
// URI's representing types that may be dereferenced, such
@@ -71,68 +75,70 @@ public final class SignatureConstants {
// *********************************************************
/** Type - KeyInfo DSAKeyValue. */
- public static final String TYPE_KEYINFO_DSA_KEYVALUE = XMLSIG_NS + "DSAKeyValue";
+ @Nonnull @NotEmpty public static final String TYPE_KEYINFO_DSA_KEYVALUE = XMLSIG_NS + "DSAKeyValue";
/** Type - KeyInfo RSAKeyValue. */
- public static final String TYPE_KEYINFO_RSA_KEYVALUE = XMLSIG_NS + "RSAKeyValue";
+ @Nonnull @NotEmpty public static final String TYPE_KEYINFO_RSA_KEYVALUE = XMLSIG_NS + "RSAKeyValue";
/** Type - KeyInfo X509Data. */
- public static final String TYPE_KEYINFO_X509DATA = XMLSIG_NS + "X509Data";
+ @Nonnull @NotEmpty public static final String TYPE_KEYINFO_X509DATA = XMLSIG_NS + "X509Data";
/** Type - KeyInfo PGPData. */
- public static final String TYPE_KEYINFO_PGPDATA = XMLSIG_NS + "PGPData";
+ @Nonnull @NotEmpty public static final String TYPE_KEYINFO_PGPDATA = XMLSIG_NS + "PGPData";
/** Type - KeyInfo SPKIData. */
- public static final String TYPE_KEYINFO_SPKIDATA = XMLSIG_NS + "SPKIData";
+ @Nonnull @NotEmpty public static final String TYPE_KEYINFO_SPKIDATA = XMLSIG_NS + "SPKIData";
/** Type - KeyInfo MgmtData. */
- public static final String TYPE_KEYINFO_MGMTDATA = XMLSIG_NS + "MgmtData";
+ @Nonnull @NotEmpty public static final String TYPE_KEYINFO_MGMTDATA = XMLSIG_NS + "MgmtData";
/** Type - A binary (ASN.1 DER) X.509 Certificate. */
- public static final String TYPE_KEYINFO_RAW_X509CERT = XMLSIG_NS + "rawX509Certificate";
+ @Nonnull @NotEmpty public static final String TYPE_KEYINFO_RAW_X509CERT = XMLSIG_NS + "rawX509Certificate";
- /** Type - Signature Object. */
- // public static final String TYPE_SIGNATURE_OBJECT = XMLSIG_NS + "Object";
+ /* Type - Signature Object. */
+ // @Nonnull @NotEmpty public static final String TYPE_SIGNATURE_OBJECT = XMLSIG_NS + "Object";
- /** Type - Signature Manifest. */
- // public static final String TYPE_SIGNATURE_MANIFEST = XMLSIG_NS + "Manifest";
+ /* Type - Signature Manifest. */
+ // @Nonnull @NotEmpty public static final String TYPE_SIGNATURE_MANIFEST = XMLSIG_NS + "Manifest";
- /** Type - Signature SignatureProperties. */
- // public static final String TYPE_SIGNATURE_SIGNATURE_PROPERTIES = XMLSIG_NS + "SignatureProperties";
+ /* Type - Signature SignatureProperties. */
+ // @Nonnull @NotEmpty public static final String TYPE_SIGNATURE_SIGNATURE_PROPERTIES =
+ // XMLSIG_NS + "SignatureProperties";
// These are additional type URIs defined by RFC 4051
/** Type - KeyInfo KeyValue. */
- public static final String TYPE_KEYINFO_KEYVALUE = MORE_ALGO_NS + "KeyValue";
+ @Nonnull @NotEmpty public static final String TYPE_KEYINFO_KEYVALUE = MORE_ALGO_NS + "KeyValue";
/** Type - KeyInfo RetrievalMethod. */
- public static final String TYPE_KEYINFO_RETRIEVAL_METHOD = MORE_ALGO_NS + "RetrievalMethod";
+ @Nonnull @NotEmpty public static final String TYPE_KEYINFO_RETRIEVAL_METHOD = MORE_ALGO_NS + "RetrievalMethod";
/** Type - KeyInfo KeyName. */
- public static final String TYPE_KEYINFO_KEYNAME = MORE_ALGO_NS + "KeyName";
+ @Nonnull @NotEmpty public static final String TYPE_KEYINFO_KEYNAME = MORE_ALGO_NS + "KeyName";
/** Type - A binary X.509 CRL. */
- public static final String TYPE_KEYINFO_RAW_X509CRL = MORE_ALGO_NS + "rawX509CRL";
+ @Nonnull @NotEmpty public static final String TYPE_KEYINFO_RAW_X509CRL = MORE_ALGO_NS + "rawX509CRL";
/** Type - A binary PGP key packet. */
- public static final String TYPE_KEYINFO_RAW_PGP_KEYPACKET = MORE_ALGO_NS + "rawPGPKeyPacket";
+ @Nonnull @NotEmpty public static final String TYPE_KEYINFO_RAW_PGP_KEYPACKET = MORE_ALGO_NS + "rawPGPKeyPacket";
/** Type - A raw SPKI S-expression. */
- public static final String TYPE_KEYINFO_RAW_SPKI_SEXP = MORE_ALGO_NS + "rawSPKISexp";
+ @Nonnull @NotEmpty public static final String TYPE_KEYINFO_RAW_SPKI_SEXP = MORE_ALGO_NS + "rawSPKISexp";
/** Type - A PKCS7signedData element. */
- public static final String TYPE_KEYINFO_PKCS7_SIGNED_DATA = MORE_ALGO_NS + "PKCS7signedData";
+ @Nonnull @NotEmpty public static final String TYPE_KEYINFO_PKCS7_SIGNED_DATA = MORE_ALGO_NS + "PKCS7signedData";
/** Type - Binary PKCS7 signed data. */
- public static final String TYPE_KEYINFO_RAW_PKCS7_SIGNED_DATA = MORE_ALGO_NS + "rawPKCS7signedData";
+ @Nonnull @NotEmpty public static final String TYPE_KEYINFO_RAW_PKCS7_SIGNED_DATA =
+ MORE_ALGO_NS + "rawPKCS7signedData";
// These are additional type URIs defined by XML Signature 1.1
/** Type - KeyInfo ECKeyValue. */
- public static final String TYPE_KEYINFO_ECKEYVALUE = XMLSIG11_NS + "ECKeyValue";
+ @Nonnull @NotEmpty public static final String TYPE_KEYINFO_ECKEYVALUE = XMLSIG11_NS + "ECKeyValue";
/** Type - KeyInfo DEREncodedKeyValue. */
- public static final String TYPE_KEYINFO_DERENCODEDKEYVALUE = XMLSIG11_NS + "DEREncodedKeyValue";
+ @Nonnull @NotEmpty public static final String TYPE_KEYINFO_DERENCODEDKEYVALUE = XMLSIG11_NS + "DEREncodedKeyValue";
// *********************************************************
@@ -140,144 +146,153 @@ public final class SignatureConstants {
// *********************************************************
/** Canonicalization - Inclusive 1.0 WITHOUT comments. */
- public static final String ALGO_ID_C14N_OMIT_COMMENTS = "http://www.w3.org/TR/2001/REC-xml-c14n-20010315";
+ @Nonnull @NotEmpty public static final String ALGO_ID_C14N_OMIT_COMMENTS =
+ "http://www.w3.org/TR/2001/REC-xml-c14n-20010315";
/** Canonicalization - Inclusive 1.0 WITH comments. */
- public static final String ALGO_ID_C14N_WITH_COMMENTS = ALGO_ID_C14N_OMIT_COMMENTS + "#WithComments";
+ @Nonnull @NotEmpty public static final String ALGO_ID_C14N_WITH_COMMENTS =
+ ALGO_ID_C14N_OMIT_COMMENTS + "#WithComments";
/** Canonicalization - Inclusive 1.1 WITHOUT comments. */
- public static final String ALGO_ID_C14N11_OMIT_COMMENTS = "http://www.w3.org/2006/12/xml-c14n11";
+ @Nonnull @NotEmpty public static final String ALGO_ID_C14N11_OMIT_COMMENTS =
+ "http://www.w3.org/2006/12/xml-c14n11";
/** Canonicalization - Inclusive 1.1 WITH comments. */
- public static final String ALGO_ID_C14N11_WITH_COMMENTS = ALGO_ID_C14N11_OMIT_COMMENTS + "#WithComments";
+ @Nonnull @NotEmpty public static final String ALGO_ID_C14N11_WITH_COMMENTS =
+ ALGO_ID_C14N11_OMIT_COMMENTS + "#WithComments";
/** Canonicalization - Exclusive WITHOUT comments. */
- public static final String ALGO_ID_C14N_EXCL_OMIT_COMMENTS = "http://www.w3.org/2001/10/xml-exc-c14n#";
+ @Nonnull @NotEmpty public static final String ALGO_ID_C14N_EXCL_OMIT_COMMENTS =
+ "http://www.w3.org/2001/10/xml-exc-c14n#";
/** Canonicalization - Exclusive WITH comments. */
- public static final String ALGO_ID_C14N_EXCL_WITH_COMMENTS = ALGO_ID_C14N_EXCL_OMIT_COMMENTS + "WithComments";
+ @Nonnull @NotEmpty public static final String ALGO_ID_C14N_EXCL_WITH_COMMENTS =
+ ALGO_ID_C14N_EXCL_OMIT_COMMENTS + "WithComments";
// *********************************************************
// Transforms
// *********************************************************
/** Transform - Required Enveloped Signature. */
- public static final String TRANSFORM_ENVELOPED_SIGNATURE = XMLSIG_NS + "enveloped-signature";
+ @Nonnull @NotEmpty public static final String TRANSFORM_ENVELOPED_SIGNATURE = XMLSIG_NS + "enveloped-signature";
/** Transform - Required Inclusive c14n 1.0 WITHOUT comments. */
- public static final String TRANSFORM_C14N_OMIT_COMMENTS = ALGO_ID_C14N_OMIT_COMMENTS;
+ @Nonnull @NotEmpty public static final String TRANSFORM_C14N_OMIT_COMMENTS = ALGO_ID_C14N_OMIT_COMMENTS;
/** Transform - Recommended Inclusive c14n 1.0 WITH comments. */
- public static final String TRANSFORM_C14N_WITH_COMMENTS = ALGO_ID_C14N_WITH_COMMENTS;
+ @Nonnull @NotEmpty public static final String TRANSFORM_C14N_WITH_COMMENTS = ALGO_ID_C14N_WITH_COMMENTS;
/** Transform - Required Inclusive c14n 1.1 WITHOUT comments. */
- public static final String TRANSFORM_C14N11_OMIT_COMMENTS = ALGO_ID_C14N11_OMIT_COMMENTS;
+ @Nonnull @NotEmpty public static final String TRANSFORM_C14N11_OMIT_COMMENTS = ALGO_ID_C14N11_OMIT_COMMENTS;
/** Transform - Recommended Inclusive c14n 1.1 WITH comments. */
- public static final String TRANSFORM_C14N11_WITH_COMMENTS = ALGO_ID_C14N11_WITH_COMMENTS;
+ @Nonnull @NotEmpty public static final String TRANSFORM_C14N11_WITH_COMMENTS = ALGO_ID_C14N11_WITH_COMMENTS;
/** Transform - Required Exclusive c14n WITHOUT comments. */
- public static final String TRANSFORM_C14N_EXCL_OMIT_COMMENTS = ALGO_ID_C14N_EXCL_OMIT_COMMENTS;
+ @Nonnull @NotEmpty public static final String TRANSFORM_C14N_EXCL_OMIT_COMMENTS = ALGO_ID_C14N_EXCL_OMIT_COMMENTS;
/** Transform - Recommended Exclusive c14n WITH comments. */
- public static final String TRANSFORM_C14N_EXCL_WITH_COMMENTS = ALGO_ID_C14N_EXCL_WITH_COMMENTS;
+ @Nonnull @NotEmpty public static final String TRANSFORM_C14N_EXCL_WITH_COMMENTS = ALGO_ID_C14N_EXCL_WITH_COMMENTS;
/** Transform - Optional XSLT. */
- public static final String TRANSFORM_XSLT = "http://www.w3.org/TR/1999/REC-xslt-19991116";
+ @Nonnull @NotEmpty public static final String TRANSFORM_XSLT = "http://www.w3.org/TR/1999/REC-xslt-19991116";
/** Transform - Recommended XPath. */
- public static final String TRANSFORM_XPATH = "http://www.w3.org/TR/1999/REC-xpath-19991116";
+ @Nonnull @NotEmpty public static final String TRANSFORM_XPATH = "http://www.w3.org/TR/1999/REC-xpath-19991116";
/** Transform - Base64 Decode. */
- public static final String TRANSFORM_BASE64_DECODE = XMLSIG_NS + "base64";
+ @Nonnull @NotEmpty public static final String TRANSFORM_BASE64_DECODE = XMLSIG_NS + "base64";
/*
- * public static final String TRANSFORM_XPOINTER = "http://www.w3.org/TR/2001/WD-xptr-20010108"; public static final
- * String TRANSFORM_XPATH2FILTER04 = "http://www.w3.org/2002/04/xmldsig-filter2"; public static final String
- * TRANSFORM_XPATH2FILTER = "http://www.w3.org/2002/06/xmldsig-filter2";
+ * @Nonnull @NotEmpty public static final String TRANSFORM_XPOINTER = "http://www.w3.org/TR/2001/WD-xptr-20010108";
+ * @Nonnull @NotEmpty public static final String TRANSFORM_XPATH2FILTER04 =
+ * "http://www.w3.org/2002/04/xmldsig-filter2";
+ * @Nonnull @NotEmpty public static final String TRANSFORM_XPATH2FILTER =
+ * "http://www.w3.org/2002/06/xmldsig-filter2";
*/
// *********************************************************
// Some additional algorithm URIs from RFC 4051
// *********************************************************
/** Signature - NOT Recommended RSAwithMD5. */
- public static final String ALGO_ID_SIGNATURE_NOT_RECOMMENDED_RSA_MD5 = MORE_ALGO_NS + "rsa-md5";
+ @Nonnull @NotEmpty public static final String ALGO_ID_SIGNATURE_NOT_RECOMMENDED_RSA_MD5 = MORE_ALGO_NS + "rsa-md5";
/** Signature - Optional RSAwithRIPEMD160. */
- public static final String ALGO_ID_SIGNATURE_RSA_RIPEMD160 = MORE_ALGO_NS + "rsa-ripemd160";
+ @Nonnull @NotEmpty public static final String ALGO_ID_SIGNATURE_RSA_RIPEMD160 = MORE_ALGO_NS + "rsa-ripemd160";
/** Signature - Required RSAwithSHA256. */
- public static final String ALGO_ID_SIGNATURE_RSA_SHA256 = MORE_ALGO_NS + "rsa-sha256";
+ @Nonnull @NotEmpty public static final String ALGO_ID_SIGNATURE_RSA_SHA256 = MORE_ALGO_NS + "rsa-sha256";
/** Signature - Optional RSAwithSHA224. */
- public static final String ALGO_ID_SIGNATURE_RSA_SHA224 = MORE_ALGO_NS + "rsa-sha224";
+ @Nonnull @NotEmpty public static final String ALGO_ID_SIGNATURE_RSA_SHA224 = MORE_ALGO_NS + "rsa-sha224";
/** Signature - Required RSAwithSHA384. */
- public static final String ALGO_ID_SIGNATURE_RSA_SHA384 = MORE_ALGO_NS + "rsa-sha384";
+ @Nonnull @NotEmpty public static final String ALGO_ID_SIGNATURE_RSA_SHA384 = MORE_ALGO_NS + "rsa-sha384";
/** Signature - Required RSAwithSHA512. */
- public static final String ALGO_ID_SIGNATURE_RSA_SHA512 = MORE_ALGO_NS + "rsa-sha512";
+ @Nonnull @NotEmpty public static final String ALGO_ID_SIGNATURE_RSA_SHA512 = MORE_ALGO_NS + "rsa-sha512";
/** HMAC - NOT Recommended HMAC-MD5. */
- public static final String ALGO_ID_MAC_HMAC_NOT_RECOMMENDED_MD5 = MORE_ALGO_NS + "hmac-md5";
+ @Nonnull @NotEmpty public static final String ALGO_ID_MAC_HMAC_NOT_RECOMMENDED_MD5 = MORE_ALGO_NS + "hmac-md5";
/** HMAC - Optional HMAC-RIPEMD160. */
- public static final String ALGO_ID_MAC_HMAC_RIPEMD160 = MORE_ALGO_NS + "hmac-ripemd160";
+ @Nonnull @NotEmpty public static final String ALGO_ID_MAC_HMAC_RIPEMD160 = MORE_ALGO_NS + "hmac-ripemd160";
/** HMAC - Optional HMAC-SHA224. */
- public static final String ALGO_ID_MAC_HMAC_SHA224 = MORE_ALGO_NS + "hmac-sha224";
+ @Nonnull @NotEmpty public static final String ALGO_ID_MAC_HMAC_SHA224 = MORE_ALGO_NS + "hmac-sha224";
/** HMAC - Optional HMAC-SHA256. */
- public static final String ALGO_ID_MAC_HMAC_SHA256 = MORE_ALGO_NS + "hmac-sha256";
+ @Nonnull @NotEmpty public static final String ALGO_ID_MAC_HMAC_SHA256 = MORE_ALGO_NS + "hmac-sha256";
/** HMAC - Optional HMAC-SHA284. */
- public static final String ALGO_ID_MAC_HMAC_SHA384 = MORE_ALGO_NS + "hmac-sha384";
+ @Nonnull @NotEmpty public static final String ALGO_ID_MAC_HMAC_SHA384 = MORE_ALGO_NS + "hmac-sha384";
/** HMAC - Optional HMAC-SHA512. */
- public static final String ALGO_ID_MAC_HMAC_SHA512 = MORE_ALGO_NS + "hmac-sha512";
+ @Nonnull @NotEmpty public static final String ALGO_ID_MAC_HMAC_SHA512 = MORE_ALGO_NS + "hmac-sha512";
/** Signature - Optional ECDSAwithSHA1. */
- public static final String ALGO_ID_SIGNATURE_ECDSA_SHA1 = MORE_ALGO_NS + "ecdsa-sha1";
+ @Nonnull @NotEmpty public static final String ALGO_ID_SIGNATURE_ECDSA_SHA1 = MORE_ALGO_NS + "ecdsa-sha1";
/** Signature - Optional ECDSAwithSHA224. */
- public static final String ALGO_ID_SIGNATURE_ECDSA_SHA224 = MORE_ALGO_NS + "ecdsa-sha224";
+ @Nonnull @NotEmpty public static final String ALGO_ID_SIGNATURE_ECDSA_SHA224 = MORE_ALGO_NS + "ecdsa-sha224";
/** Signature - Optional ECDSAwithSHA256. */
- public static final String ALGO_ID_SIGNATURE_ECDSA_SHA256 = MORE_ALGO_NS + "ecdsa-sha256";
+ @Nonnull @NotEmpty public static final String ALGO_ID_SIGNATURE_ECDSA_SHA256 = MORE_ALGO_NS + "ecdsa-sha256";
/** Signature - Optional ECDSAwithSHA384. */
- public static final String ALGO_ID_SIGNATURE_ECDSA_SHA384 = MORE_ALGO_NS + "ecdsa-sha384";
+ @Nonnull @NotEmpty public static final String ALGO_ID_SIGNATURE_ECDSA_SHA384 = MORE_ALGO_NS + "ecdsa-sha384";
/** Signature - Optional ECDSAwithSHA512. */
- public static final String ALGO_ID_SIGNATURE_ECDSA_SHA512 = MORE_ALGO_NS + "ecdsa-sha512";
+ @Nonnull @NotEmpty public static final String ALGO_ID_SIGNATURE_ECDSA_SHA512 = MORE_ALGO_NS + "ecdsa-sha512";
/** Digest - Optional MD5. */
- public static final String ALGO_ID_DIGEST_NOT_RECOMMENDED_MD5 = MORE_ALGO_NS + "md5";
+ @Nonnull @NotEmpty public static final String ALGO_ID_DIGEST_NOT_RECOMMENDED_MD5 = MORE_ALGO_NS + "md5";
/** Digest - Optional SHA224. */
- public static final String ALGO_ID_DIGEST_SHA224 = MORE_ALGO_NS + "sha224";
+ @Nonnull @NotEmpty public static final String ALGO_ID_DIGEST_SHA224 = MORE_ALGO_NS + "sha224";
/** Digest - Optional SHA384. */
- public static final String ALGO_ID_DIGEST_SHA384 = MORE_ALGO_NS + "sha384";
+ @Nonnull @NotEmpty public static final String ALGO_ID_DIGEST_SHA384 = MORE_ALGO_NS + "sha384";
// *********************************************************
// Some additional algorithm URIs from XML Signature 1.1
// *********************************************************
/** Signature - Optional DSAwithSHA256 (DSS). */
- public static final String ALGO_ID_SIGNATURE_DSA_SHA256 = XMLSIG11_NS + "dsa-sha256";
+ @Nonnull @NotEmpty public static final String ALGO_ID_SIGNATURE_DSA_SHA256 = XMLSIG11_NS + "dsa-sha256";
// *********************************************************
// Alias in some additional algorithm URI's used in XML
// Signature, but defined in XML Encryption.
// *********************************************************
/** Message Digest - SHA256 (Note: Defined by XML Encryption). */
- public static final String ALGO_ID_DIGEST_SHA256 = EncryptionConstants.ALGO_ID_DIGEST_SHA256;
+ @Nonnull @NotEmpty public static final String ALGO_ID_DIGEST_SHA256 = EncryptionConstants.ALGO_ID_DIGEST_SHA256;
/** Message Digest - SHA512 (Note: Defined by XML Encryption). */
- public static final String ALGO_ID_DIGEST_SHA512 = EncryptionConstants.ALGO_ID_DIGEST_SHA512;
+ @Nonnull @NotEmpty public static final String ALGO_ID_DIGEST_SHA512 = EncryptionConstants.ALGO_ID_DIGEST_SHA512;
/** Message Digest - RIPEMD-160 (Note: Defined by XML Encryption). */
- public static final String ALGO_ID_DIGEST_RIPEMD160 = EncryptionConstants.ALGO_ID_DIGEST_RIPEMD160;
+ @Nonnull @NotEmpty public static final String ALGO_ID_DIGEST_RIPEMD160 =
+ EncryptionConstants.ALGO_ID_DIGEST_RIPEMD160;
/** Constructor. */
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/support/SignatureSupport.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/support/SignatureSupport.java
index 602048b79..3567f813e 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/support/SignatureSupport.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/support/SignatureSupport.java
@@ -28,6 +28,7 @@ import org.opensaml.core.xml.config.XMLObjectProviderRegistrySupport;
import org.opensaml.core.xml.io.Marshaller;
import org.opensaml.core.xml.io.MarshallingException;
import org.opensaml.security.SecurityException;
+import org.opensaml.security.credential.Credential;
import org.opensaml.xmlsec.SignatureSigningParameters;
import org.opensaml.xmlsec.algorithm.AlgorithmSupport;
import org.opensaml.xmlsec.keyinfo.KeyInfoGenerator;
@@ -35,11 +36,11 @@ import org.opensaml.xmlsec.signature.KeyInfo;
import org.opensaml.xmlsec.signature.SignableXMLObject;
import org.opensaml.xmlsec.signature.Signature;
import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import net.shibboleth.shared.annotation.constraint.NonnullElements;
import net.shibboleth.shared.collection.CollectionSupport;
import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.LoggerFactory;
import net.shibboleth.shared.primitive.StringSupport;
/**
@@ -119,12 +120,13 @@ public final class SignatureSupport {
if (signature.getSignatureAlgorithm() == null) {
signature.setSignatureAlgorithm(parameters.getSignatureAlgorithm());
}
- if (signature.getSignatureAlgorithm() == null) {
+ final String alg = signature.getSignatureAlgorithm();
+ if (alg == null) {
throw new SecurityException("No signature algorithm was available on the signing parameters or Signature");
}
// HMAC output length, if applicable
- if (signature.getHMACOutputLength() == null && AlgorithmSupport.isHMAC(signature.getSignatureAlgorithm())) {
+ if (signature.getHMACOutputLength() == null && AlgorithmSupport.isHMAC(alg)) {
signature.setHMACOutputLength(parameters.getSignatureHMACOutputLength());
}
@@ -166,9 +168,10 @@ public final class SignatureSupport {
throw e;
}
} else {
+ final Credential cred = signature.getSigningCredential();
LOG.info("No KeyInfoGenerator was supplied in parameters or resolveable "
+ "for credential type {}, No KeyInfo will be generated for Signature",
- signature.getSigningCredential().getCredentialType().getName());
+ cred != null ? cred.getCredentialType().getName() : "(null)");
}
}
}
@@ -283,6 +286,9 @@ public final class SignatureSupport {
SignatureSupport.prepareSignatureParams(signature, parameters);
final Marshaller marshaller = XMLObjectProviderRegistrySupport.getMarshallerFactory().getMarshaller(signable);
+ if (marshaller == null) {
+ throw new MarshallingException("Unable to locate marshaller for " + signable.getClass());
+ }
marshaller.marshall(signable);
Signer.signObject(signature);
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/support/SignatureValidationParametersCriterion.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/support/SignatureValidationParametersCriterion.java
index b64cecfab..f9c13ab1b 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/support/SignatureValidationParametersCriterion.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/support/SignatureValidationParametersCriterion.java
@@ -33,7 +33,7 @@ import org.opensaml.xmlsec.SignatureValidationParameters;
public class SignatureValidationParametersCriterion implements Criterion {
/** The SignatureValidationParameters instance. */
- private SignatureValidationParameters params;
+ @Nonnull private SignatureValidationParameters params;
/**
* Constructor.
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/support/SignatureValidator.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/support/SignatureValidator.java
index 2cec66523..323ae1919 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/support/SignatureValidator.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/support/SignatureValidator.java
@@ -25,7 +25,8 @@ import javax.annotation.Nonnull;
import org.opensaml.security.credential.Credential;
import org.opensaml.xmlsec.signature.Signature;
import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+
+import net.shibboleth.shared.primitive.LoggerFactory;
/**
* A service class that cryptographically validates an XML Signature {@link Signature}
@@ -77,6 +78,7 @@ public final class SignatureValidator {
"Could not load a signature validation provider implementation via service API");
}
}
+ assert validatorInstance != null;
return validatorInstance;
}
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/support/Signer.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/support/Signer.java
index 30cda543c..12e714cce 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/support/Signer.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/support/Signer.java
@@ -25,7 +25,9 @@ import javax.annotation.Nonnull;
import org.opensaml.xmlsec.signature.Signature;
import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.primitive.LoggerFactory;
/**
* A service class which is responsible for cryptographically computing and storing the
@@ -56,10 +58,12 @@ public final class Signer {
* @param signatures an ordered list of XMLObject to be signed
* @throws SignatureException thrown if there is an error computing the signature
*/
- public static void signObjects(@Nonnull final List<Signature> signatures) throws SignatureException {
+ public static void signObjects(@Nonnull @NonnullElements final List<Signature> signatures)
+ throws SignatureException {
final SignerProvider signer = getSignerProvider();
LOG.debug("Using a signer of implementation: {}", signer.getClass().getName());
for (final Signature signature : signatures) {
+ assert signature != null;
signer.signObject(signature);
}
}
@@ -92,6 +96,7 @@ public final class Signer {
throw new SignatureException("Could not load a signer implementation via service API");
}
}
+ assert signerInstance != null;
return signerInstance;
}
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/support/URIContentReference.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/support/URIContentReference.java
index e7b368b5c..82ec23277 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/support/URIContentReference.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/support/URIContentReference.java
@@ -28,9 +28,8 @@ import org.apache.xml.security.signature.XMLSignatureException;
import org.apache.xml.security.transforms.TransformationException;
import org.apache.xml.security.transforms.Transforms;
import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.LoggerFactory;
import net.shibboleth.shared.primitive.StringSupport;
/**
@@ -43,16 +42,16 @@ import net.shibboleth.shared.primitive.StringSupport;
public class URIContentReference implements ConfigurableContentReference, TransformsConfigurableContentReference {
/** Logger. */
- private final Logger log = LoggerFactory.getLogger(URIContentReference.class);
+ @Nonnull private final Logger log = LoggerFactory.getLogger(URIContentReference.class);
/** Element reference ID. */
- private final String referenceID;
+ @Nullable private final String referenceID;
/** Algorithm used to digest the content . */
- private String digestAlgorithm;
+ @Nullable private String digestAlgorithm;
/** Transforms applied to the content. */
- private final List<String> transforms;
+ @Nonnull private final List<String> transforms;
/**
* Constructor. The anchor designator (#) must not be included in the ID.
@@ -82,9 +81,8 @@ public class URIContentReference implements ConfigurableContentReference, Transf
}
/** {@inheritDoc}. */
- public void setDigestAlgorithm(@Nonnull final String newAlgorithm) {
- digestAlgorithm = Constraint.isNotNull(StringSupport.trimOrNull(newAlgorithm),
- "Digest algorithm cannot be empty or null");
+ public void setDigestAlgorithm(@Nullable final String newAlgorithm) {
+ digestAlgorithm = StringSupport.trimOrNull(newAlgorithm);
}
/** {@inheritDoc} */
@@ -101,4 +99,5 @@ public class URIContentReference implements ConfigurableContentReference, Transf
log.error("Error while adding content reference", e);
}
}
+
}
\ No newline at end of file
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/support/XMLSignatureCredentialContext.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/support/XMLSignatureCredentialContext.java
index 5d52fc4b1..acb0b5db1 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/support/XMLSignatureCredentialContext.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/signature/support/XMLSignatureCredentialContext.java
@@ -29,7 +29,7 @@ import org.opensaml.xmlsec.signature.Signature;
public class XMLSignatureCredentialContext implements CredentialContext {
/** The Signature element context. */
- private final Signature sig;
+ @Nonnull private final Signature sig;
/**
* Constructor.
diff --git a/opensaml-xmlsec-api/src/test/java/org/opensaml/xmlsec/agreement/KeyAgreementProcessorRegistryTest.java b/opensaml-xmlsec-api/src/test/java/org/opensaml/xmlsec/agreement/KeyAgreementProcessorRegistryTest.java
index 4b8c0c4e8..586bcdd5c 100644
--- a/opensaml-xmlsec-api/src/test/java/org/opensaml/xmlsec/agreement/KeyAgreementProcessorRegistryTest.java
+++ b/opensaml-xmlsec-api/src/test/java/org/opensaml/xmlsec/agreement/KeyAgreementProcessorRegistryTest.java
@@ -19,6 +19,8 @@ package org.opensaml.xmlsec.agreement;
import java.util.Set;
+import javax.annotation.Nonnull;
+
import org.opensaml.security.credential.Credential;
import org.testng.Assert;
import org.testng.annotations.Test;
@@ -26,10 +28,11 @@ import org.testng.annotations.Test;
import net.shibboleth.shared.collection.CollectionSupport;
/**
- *
+ * Unit test for {@link KeyAgreementProcessorRegistry}.
*/
public class KeyAgreementProcessorRegistryTest {
+ /** Basic tests */
@Test
public void basic() {
KeyAgreementProcessorRegistry registry = new KeyAgreementProcessorRegistry();
@@ -69,29 +72,39 @@ public class KeyAgreementProcessorRegistryTest {
Assert.assertNull(registry.getProcessor("urn:test:KeyAgreementProcessor:Bar"));
}
+ /**
+ * Mock processor.
+ */
public static class MockProcessorFoo implements KeyAgreementProcessor {
/** {@inheritDoc} */
- public String getAlgorithm() {
+ @Nonnull public String getAlgorithm() {
return "urn:test:KeyAgreementProcessor:Foo";
}
/** {@inheritDoc} */
- public KeyAgreementCredential execute(Credential publicCredential, String keyAlgorithm, KeyAgreementParameters parameters) throws KeyAgreementException {
- return null;
+ @Nonnull public KeyAgreementCredential execute(@Nonnull final Credential publicCredential,
+ @Nonnull final String keyAlgorithm, @Nonnull final KeyAgreementParameters parameters)
+ throws KeyAgreementException {
+ throw new UnsupportedOperationException();
}
}
+ /**
+ * Mock processor.
+ */
public static class MockProcessorBar implements KeyAgreementProcessor {
/** {@inheritDoc} */
- public String getAlgorithm() {
+ @Nonnull public String getAlgorithm() {
return "urn:test:KeyAgreementProcessor:Bar";
}
/** {@inheritDoc} */
- public KeyAgreementCredential execute(Credential publicCredential, String keyAlgorithm, KeyAgreementParameters parameters) throws KeyAgreementException {
- return null;
+ @Nonnull public KeyAgreementCredential execute(@Nonnull final Credential publicCredential,
+ @Nonnull final String keyAlgorithm, @Nonnull final KeyAgreementParameters parameters)
+ throws KeyAgreementException {
+ throw new UnsupportedOperationException();
}
}
}
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list