You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@abdera.apache.org by jm...@apache.org on 2011/12/30 23:35:34 UTC
svn commit: r1225951 - in /abdera/abdera2:
examples/src/main/java/org/apache/abdera2/examples/security/
security/src/main/java/org/apache/abdera2/security/
security/src/main/java/org/apache/abdera2/security/util/
security/src/main/java/org/apache/abder...
Author: jmsnell
Date: Fri Dec 30 22:35:32 2011
New Revision: 1225951
URL: http://svn.apache.org/viewvc?rev=1225951&view=rev
Log:
For consistency, use the same new immutable/threadsafe factory pattern for SignatureOptions and EncryptionOptions that we use throughout Abdera2...
Modified:
abdera/abdera2/examples/src/main/java/org/apache/abdera2/examples/security/DSig.java
abdera/abdera2/examples/src/main/java/org/apache/abdera2/examples/security/Enc.java
abdera/abdera2/security/src/main/java/org/apache/abdera2/security/Encryption.java
abdera/abdera2/security/src/main/java/org/apache/abdera2/security/EncryptionOptions.java
abdera/abdera2/security/src/main/java/org/apache/abdera2/security/SecurityOptions.java
abdera/abdera2/security/src/main/java/org/apache/abdera2/security/Signature.java
abdera/abdera2/security/src/main/java/org/apache/abdera2/security/SignatureOptions.java
abdera/abdera2/security/src/main/java/org/apache/abdera2/security/util/DHContext.java
abdera/abdera2/security/src/main/java/org/apache/abdera2/security/util/filters/AESEncryptedResponseFilter.java
abdera/abdera2/security/src/main/java/org/apache/abdera2/security/util/filters/SignedResponseFilter.java
abdera/abdera2/security/src/main/java/org/apache/abdera2/security/xmlsec/XmlEncryption.java
abdera/abdera2/security/src/main/java/org/apache/abdera2/security/xmlsec/XmlEncryptionOptions.java
abdera/abdera2/security/src/main/java/org/apache/abdera2/security/xmlsec/XmlSignature.java
abdera/abdera2/security/src/main/java/org/apache/abdera2/security/xmlsec/XmlSignatureOptions.java
abdera/abdera2/test/src/main/java/org/apache/abdera2/test/security/DigitalSignatureTest.java
abdera/abdera2/test/src/main/java/org/apache/abdera2/test/security/EncryptionTest.java
abdera/abdera2/test/src/main/java/org/apache/abdera2/test/security/filter/SecurityFilterTest.java
Modified: abdera/abdera2/examples/src/main/java/org/apache/abdera2/examples/security/DSig.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/examples/src/main/java/org/apache/abdera2/examples/security/DSig.java?rev=1225951&r1=1225950&r2=1225951&view=diff
==============================================================================
--- abdera/abdera2/examples/src/main/java/org/apache/abdera2/examples/security/DSig.java (original)
+++ abdera/abdera2/examples/src/main/java/org/apache/abdera2/examples/security/DSig.java Fri Dec 30 22:35:32 2011
@@ -66,9 +66,11 @@ public class DSig {
// Prepare the digital signature options
Signature sig = absec.getSignature();
- SignatureOptions options = sig.getDefaultSignatureOptions();
- options.setCertificate(cert);
- options.setSigningKey(signingKey);
+ SignatureOptions options =
+ sig.getDefaultSignatureOptions()
+ .certificate(cert)
+ .signingKey(signingKey)
+ .get();
// Sign the entry
entry = sig.sign(entry, options);
Modified: abdera/abdera2/examples/src/main/java/org/apache/abdera2/examples/security/Enc.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/examples/src/main/java/org/apache/abdera2/examples/security/Enc.java?rev=1225951&r1=1225950&r2=1225951&view=diff
==============================================================================
--- abdera/abdera2/examples/src/main/java/org/apache/abdera2/examples/security/Enc.java (original)
+++ abdera/abdera2/examples/src/main/java/org/apache/abdera2/examples/security/Enc.java Fri Dec 30 22:35:32 2011
@@ -58,8 +58,9 @@ public class Enc {
// Prepare the encryption options
Encryption enc = absec.getEncryption();
- EncryptionOptions options = enc.getDefaultEncryptionOptions();
- options.setDataEncryptionKey(key);
+ EncryptionOptions options =
+ enc.getDefaultEncryptionOptions()
+ .dataEncryptionKey(key).get();
// Encrypt the document using the generated key
Document<?> enc_doc = enc.encrypt(entry.getDocument(), options);
Modified: abdera/abdera2/security/src/main/java/org/apache/abdera2/security/Encryption.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/security/src/main/java/org/apache/abdera2/security/Encryption.java?rev=1225951&r1=1225950&r2=1225951&view=diff
==============================================================================
--- abdera/abdera2/security/src/main/java/org/apache/abdera2/security/Encryption.java (original)
+++ abdera/abdera2/security/src/main/java/org/apache/abdera2/security/Encryption.java Fri Dec 30 22:35:32 2011
@@ -19,6 +19,7 @@ package org.apache.abdera2.security;
import org.apache.abdera2.model.Document;
import org.apache.abdera2.model.Element;
+import org.apache.abdera2.security.EncryptionOptions.EncryptionOptionsBuilder;
/**
* Interface used for encrypting/decrypting Abdera documents.
@@ -55,6 +56,6 @@ public interface Encryption {
*
* @see org.apache.abdera.security.EncryptionOptions
*/
- EncryptionOptions getDefaultEncryptionOptions();
+ EncryptionOptionsBuilder getDefaultEncryptionOptions();
}
Modified: abdera/abdera2/security/src/main/java/org/apache/abdera2/security/EncryptionOptions.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/security/src/main/java/org/apache/abdera2/security/EncryptionOptions.java?rev=1225951&r1=1225950&r2=1225951&view=diff
==============================================================================
--- abdera/abdera2/security/src/main/java/org/apache/abdera2/security/EncryptionOptions.java (original)
+++ abdera/abdera2/security/src/main/java/org/apache/abdera2/security/EncryptionOptions.java Fri Dec 30 22:35:32 2011
@@ -19,63 +19,91 @@ package org.apache.abdera2.security;
import java.security.Key;
+import org.apache.abdera2.Abdera;
+
/**
* Provides access to the information necessary to encrypt or decrypt a document
*/
public interface EncryptionOptions extends SecurityOptions {
+ public static abstract class EncryptionOptionsBuilder
+ extends SecurityOptions.Builder<EncryptionOptions,EncryptionOptionsBuilder> {
+
+ protected Abdera abdera;
+ protected boolean includeKeyInfo;
+ protected Key dek;
+ protected Key kek;
+ protected String kca;
+ protected String dca;
+
+ protected EncryptionOptionsBuilder() {
+ keyCipherAlgorithm("http://www.w3.org/2001/04/xmlenc#kw-aes128");
+ dataCipherAlgorithm("http://www.w3.org/2001/04/xmlenc#aes128-cbc");
+ doNotIncludeKeyInfo();
+ }
+
+ public EncryptionOptionsBuilder abdera(Abdera abdera) {
+ this.abdera = abdera;
+ return this;
+ }
+
+ public EncryptionOptionsBuilder includeKeyInfo() {
+ this.includeKeyInfo = true;
+ return this;
+ }
+
+ public EncryptionOptionsBuilder doNotIncludeKeyInfo() {
+ this.includeKeyInfo = false;
+ return this;
+ }
+
+ public EncryptionOptionsBuilder dataEncryptionKey(Key key) {
+ this.dek = key;
+ return this;
+ }
+
+ public EncryptionOptionsBuilder keyEncryptionKey(Key key) {
+ this.kek = key;
+ return this;
+ }
+
+ public EncryptionOptionsBuilder keyCipherAlgorithm(String alg) {
+ this.kca = alg;
+ return this;
+ }
+
+ public EncryptionOptionsBuilder dataCipherAlgorithm(String alg) {
+ this.dca = alg;
+ return this;
+ }
+
+ }
+
/**
* Return the secret key used to encrypt/decrypt the document content
*/
Key getDataEncryptionKey();
/**
- * Set the secret key used to encrypt/decrypt the document content
- */
- EncryptionOptions setDataEncryptionKey(Key key);
-
- /**
* Return the secret key used to encrypt/decrypt the data encryption key
*/
Key getKeyEncryptionKey();
/**
- * Set the secret key used to encrypt/decrypt the data encryption key
- */
- EncryptionOptions setKeyEncryptionKey(Key key);
-
- /**
* Return the cipher algorithm used to decrypt/encrypt the data encryption key The default is
* "http://www.w3.org/2001/04/xmlenc#kw-aes128"
*/
String getKeyCipherAlgorithm();
/**
- * Set the cipher algorithm used to decrypt/encrypt the data encryption key The default is
- * "http://www.w3.org/2001/04/xmlenc#kw-aes128"
- */
- EncryptionOptions setKeyCipherAlgorithm(String alg);
-
- /**
* Return the cipher algorithm used to decrypt/encrypt the document content The default is
* "http://www.w3.org/2001/04/xmlenc#aes128-cbc"
*/
String getDataCipherAlgorithm();
/**
- * Set the cipher algorithm used to decyrpt/encrypt the document content The default is
- * "http://www.w3.org/2001/04/xmlenc#aes128-cbc"
- */
- EncryptionOptions setDataCipherAlgorithm(String alg);
-
- /**
* Return true if the encryption should include information about the key The default is false
*/
boolean includeKeyInfo();
- /**
- * Set whether the encryption should include information about the key The default is false
- */
- EncryptionOptions setIncludeKeyInfo(boolean includeKeyInfo);
-
}
Modified: abdera/abdera2/security/src/main/java/org/apache/abdera2/security/SecurityOptions.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/security/src/main/java/org/apache/abdera2/security/SecurityOptions.java?rev=1225951&r1=1225950&r2=1225951&view=diff
==============================================================================
--- abdera/abdera2/security/src/main/java/org/apache/abdera2/security/SecurityOptions.java (original)
+++ abdera/abdera2/security/src/main/java/org/apache/abdera2/security/SecurityOptions.java Fri Dec 30 22:35:32 2011
@@ -19,13 +19,27 @@ package org.apache.abdera2.security;
import org.apache.abdera2.parser.Parser;
+import com.google.common.base.Supplier;
+
/**
* Base interface for EncryptionOptions and SignatureOptions
*/
public interface SecurityOptions {
-
+
Parser getParser();
<T extends SecurityOptions> T setParser(Parser parser);
+ public static abstract class Builder<X extends SecurityOptions, M extends Builder<X,M>>
+ implements Supplier<X> {
+
+ protected Parser parser;
+
+ @SuppressWarnings("unchecked")
+ public M parser(Parser parser) {
+ this.parser = parser;
+ return (M)this;
+ }
+
+ }
}
Modified: abdera/abdera2/security/src/main/java/org/apache/abdera2/security/Signature.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/security/src/main/java/org/apache/abdera2/security/Signature.java?rev=1225951&r1=1225950&r2=1225951&view=diff
==============================================================================
--- abdera/abdera2/security/src/main/java/org/apache/abdera2/security/Signature.java (original)
+++ abdera/abdera2/security/src/main/java/org/apache/abdera2/security/Signature.java Fri Dec 30 22:35:32 2011
@@ -20,6 +20,7 @@ package org.apache.abdera2.security;
import java.security.cert.X509Certificate;
import org.apache.abdera2.model.Element;
+import org.apache.abdera2.security.SignatureOptions.SignatureOptionsBuilder;
import org.apache.xml.security.keys.KeyInfo;
/**
@@ -55,7 +56,7 @@ public interface Signature {
*
* @see org.apache.abdera.security.SignatureOptions
*/
- SignatureOptions getDefaultSignatureOptions() throws SecurityException;
+ SignatureOptionsBuilder getDefaultSignatureOptions() throws SecurityException;
<T extends Element> T removeInvalidSignatures(T element, SignatureOptions options) throws SecurityException;
Modified: abdera/abdera2/security/src/main/java/org/apache/abdera2/security/SignatureOptions.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/security/src/main/java/org/apache/abdera2/security/SignatureOptions.java?rev=1225951&r1=1225950&r2=1225951&view=diff
==============================================================================
--- abdera/abdera2/security/src/main/java/org/apache/abdera2/security/SignatureOptions.java (original)
+++ abdera/abdera2/security/src/main/java/org/apache/abdera2/security/SignatureOptions.java Fri Dec 30 22:35:32 2011
@@ -21,53 +21,98 @@ import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.cert.X509Certificate;
+import org.apache.abdera2.Abdera;
+
+import com.google.common.collect.ImmutableSet;
+
/**
* Provides access to the information necessary to signed an Abdera element
*/
public interface SignatureOptions extends SecurityOptions {
+ public static abstract class SignatureOptionsBuilder
+ extends SecurityOptions.Builder<SignatureOptions,SignatureOptionsBuilder> {
+
+ protected Abdera abdera;
+ protected String salg;
+ protected PrivateKey skey;
+ protected X509Certificate cert;
+ protected PublicKey pkey;
+ protected ImmutableSet.Builder<String> refs =
+ ImmutableSet.builder();
+ protected boolean signlinks;
+ protected ImmutableSet.Builder<String> linkRels =
+ ImmutableSet.builder();
+
+ public SignatureOptionsBuilder() {
+ signingAlgorithm("http://www.w3.org/2000/09/xmldsig#dsa-sha1");
+ }
+
+ public SignatureOptionsBuilder abdera(Abdera abdera) {
+ this.abdera = abdera;
+ return this;
+ }
+
+ public SignatureOptionsBuilder signingAlgorithm(String alg) {
+ this.salg = alg;
+ return this;
+ }
+
+ public SignatureOptionsBuilder signingKey(PrivateKey key) {
+ this.skey = key;
+ return this;
+ }
+
+ public SignatureOptionsBuilder certificate(X509Certificate cert) {
+ this.cert = cert;
+ return this;
+ }
+
+ public SignatureOptionsBuilder publicKey(PublicKey key) {
+ this.pkey = key;
+ return this;
+ }
+
+ public SignatureOptionsBuilder ref(String ref) {
+ refs.add(ref);
+ return this;
+ }
+
+ public SignatureOptionsBuilder signLinks() {
+ this.signlinks = true;
+ return this;
+ }
+
+ public SignatureOptionsBuilder doNotSignLinks() {
+ this.signlinks = false;
+ return this;
+ }
+
+ public SignatureOptionsBuilder signLinkRel(String rel) {
+ this.linkRels.add(rel);
+ return this;
+ }
+
+ }
+
String getSigningAlgorithm();
- SignatureOptions setSigningAlgorithm(String algorithm);
-
/**
* Return the private key with which to sign the element
*/
PrivateKey getSigningKey();
/**
- * Set the private key with which to sign the element
- */
- SignatureOptions setSigningKey(PrivateKey privateKey);
-
- /**
* Return the X.509 cert to associated with the signature
*/
X509Certificate getCertificate();
/**
- * Set the X.509 cert to associate with the signature
- */
- SignatureOptions setCertificate(X509Certificate cert);
-
- /**
* Get the public key associated with the signature
*/
PublicKey getPublicKey();
- /**
- * Set the public key to associate with the signature
- */
- SignatureOptions setPublicKey(PublicKey publickey);
-
- SignatureOptions addReference(String href);
-
- String[] getReferences();
-
- /**
- * True if atom:link/@href and atom:content/@src targets should be included in the signature
- */
- SignatureOptions setSignLinks(boolean signlinks);
+ Iterable<String> getReferences();
/**
* True if atom:link/@href and atom:content/@src targets should be included in the signature
@@ -75,12 +120,7 @@ public interface SignatureOptions extend
boolean isSignLinks();
/**
- * Only sign links whose link rels match those provided in the list
- */
- SignatureOptions setSignedLinkRels(String... rel);
-
- /**
* Get the list of link relations to sign
*/
- String[] getSignLinkRels();
+ Iterable<String> getSignLinkRels();
}
Modified: abdera/abdera2/security/src/main/java/org/apache/abdera2/security/util/DHContext.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/security/src/main/java/org/apache/abdera2/security/util/DHContext.java?rev=1225951&r1=1225950&r2=1225951&view=diff
==============================================================================
--- abdera/abdera2/security/src/main/java/org/apache/abdera2/security/util/DHContext.java (original)
+++ abdera/abdera2/security/src/main/java/org/apache/abdera2/security/util/DHContext.java Fri Dec 30 22:35:32 2011
@@ -49,10 +49,10 @@ public class DHContext extends DHBase {
public EncryptionOptions getEncryptionOptions(Encryption enc, String alg)
throws InvalidKeyException, NoSuchAlgorithmException {
- EncryptionOptions options = enc.getDefaultEncryptionOptions();
- options.setDataEncryptionKey(generateSecret());
- options.setDataCipherAlgorithm(alg);
- return options;
+ return enc.getDefaultEncryptionOptions()
+ .dataEncryptionKey(generateSecret())
+ .dataCipherAlgorithm(alg)
+ .get();
}
}
Modified: abdera/abdera2/security/src/main/java/org/apache/abdera2/security/util/filters/AESEncryptedResponseFilter.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/security/src/main/java/org/apache/abdera2/security/util/filters/AESEncryptedResponseFilter.java?rev=1225951&r1=1225950&r2=1225951&view=diff
==============================================================================
--- abdera/abdera2/security/src/main/java/org/apache/abdera2/security/util/filters/AESEncryptedResponseFilter.java (original)
+++ abdera/abdera2/security/src/main/java/org/apache/abdera2/security/util/filters/AESEncryptedResponseFilter.java Fri Dec 30 22:35:32 2011
@@ -75,12 +75,12 @@ public class AESEncryptedResponseFilter
Encryption enc,
Object arg) {
try {
- EncryptionOptions options = enc.getDefaultEncryptionOptions();
- options.setDataEncryptionKey(KeyHelper.generateKey("AES"));
- options.setKeyEncryptionKey((PublicKey)arg);
- options.setKeyCipherAlgorithm(XMLCipher.RSA_v1dot5);
- options.setIncludeKeyInfo(true);
- return options;
+ return enc.getDefaultEncryptionOptions()
+ .dataEncryptionKey(KeyHelper.generateKey("AES"))
+ .keyEncryptionKey((PublicKey)arg)
+ .keyCipherAlgorithm(XMLCipher.RSA_v1dot5)
+ .includeKeyInfo()
+ .get();
} catch (Exception e) {
return null;
}
Modified: abdera/abdera2/security/src/main/java/org/apache/abdera2/security/util/filters/SignedResponseFilter.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/security/src/main/java/org/apache/abdera2/security/util/filters/SignedResponseFilter.java?rev=1225951&r1=1225950&r2=1225951&view=diff
==============================================================================
--- abdera/abdera2/security/src/main/java/org/apache/abdera2/security/util/filters/SignedResponseFilter.java (original)
+++ abdera/abdera2/security/src/main/java/org/apache/abdera2/security/util/filters/SignedResponseFilter.java Fri Dec 30 22:35:32 2011
@@ -39,7 +39,7 @@ import org.apache.abdera2.protocol.serve
import org.apache.abdera2.security.Security;
import org.apache.abdera2.security.SecurityException;
import org.apache.abdera2.security.Signature;
-import org.apache.abdera2.security.SignatureOptions;
+import org.apache.abdera2.security.SignatureOptions.SignatureOptionsBuilder;
import org.apache.abdera2.writer.Writer;
/**
@@ -127,13 +127,14 @@ public class SignedResponseFilter implem
if (signingKey == null || cert == null)
return doc; // pass through
Signature sig = security.getSignature();
- SignatureOptions options = sig.getDefaultSignatureOptions();
- options.setCertificate(cert);
- options.setSigningKey(signingKey);
+ SignatureOptionsBuilder options =
+ sig.getDefaultSignatureOptions()
+ .certificate(cert)
+ .signingKey(signingKey);
if (algorithm != null)
- options.setSigningAlgorithm(algorithm);
+ options.signingAlgorithm(algorithm);
Element element = doc.getRoot();
- element = sig.sign(element, options);
+ element = sig.sign(element, options.get());
return element.getDocument();
}
Modified: abdera/abdera2/security/src/main/java/org/apache/abdera2/security/xmlsec/XmlEncryption.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/security/src/main/java/org/apache/abdera2/security/xmlsec/XmlEncryption.java?rev=1225951&r1=1225950&r2=1225951&view=diff
==============================================================================
--- abdera/abdera2/security/src/main/java/org/apache/abdera2/security/xmlsec/XmlEncryption.java (original)
+++ abdera/abdera2/security/src/main/java/org/apache/abdera2/security/xmlsec/XmlEncryption.java Fri Dec 30 22:35:32 2011
@@ -23,6 +23,7 @@ import org.apache.abdera2.Abdera;
import org.apache.abdera2.model.Document;
import org.apache.abdera2.model.Element;
import org.apache.abdera2.security.EncryptionOptions;
+import org.apache.abdera2.security.EncryptionOptions.EncryptionOptionsBuilder;
import org.apache.abdera2.security.SecurityException;
import org.apache.abdera2.security.util.EncryptionBase;
import org.apache.xml.security.encryption.EncryptedData;
@@ -92,8 +93,8 @@ public class XmlEncryption extends Encry
}
}
- public EncryptionOptions getDefaultEncryptionOptions() {
- return new XmlEncryptionOptions(getAbdera());
+ public EncryptionOptionsBuilder getDefaultEncryptionOptions() {
+ return XmlEncryptionOptions.make().abdera(getAbdera());
}
}
Modified: abdera/abdera2/security/src/main/java/org/apache/abdera2/security/xmlsec/XmlEncryptionOptions.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/security/src/main/java/org/apache/abdera2/security/xmlsec/XmlEncryptionOptions.java?rev=1225951&r1=1225950&r2=1225951&view=diff
==============================================================================
--- abdera/abdera2/security/src/main/java/org/apache/abdera2/security/xmlsec/XmlEncryptionOptions.java (original)
+++ abdera/abdera2/security/src/main/java/org/apache/abdera2/security/xmlsec/XmlEncryptionOptions.java Fri Dec 30 22:35:32 2011
@@ -22,60 +22,59 @@ import java.security.Key;
import org.apache.abdera2.Abdera;
import org.apache.abdera2.security.EncryptionOptions;
-public class XmlEncryptionOptions extends XmlSecurityOptions implements EncryptionOptions {
-
- private Key dek = null;
- private Key kek = null;
- private String kca = "http://www.w3.org/2001/04/xmlenc#kw-aes128";
- private String dca = "http://www.w3.org/2001/04/xmlenc#aes128-cbc";
- private boolean setki = false;
-
- protected XmlEncryptionOptions(Abdera abdera) {
+public final class XmlEncryptionOptions extends XmlSecurityOptions implements EncryptionOptions {
+
+ public static EncryptionOptionsBuilder make() {
+ return new XmlEncryptionOptionsBuilder();
+ }
+
+ protected static final class XmlEncryptionOptionsBuilder
+ extends EncryptionOptionsBuilder {
+
+ public EncryptionOptions get() {
+ return new XmlEncryptionOptions(abdera,dek,kek,kca,dca,includeKeyInfo);
+ }
+
+ }
+
+ private final Key dek;
+ private final Key kek;
+ private final String kca;
+ private final String dca;
+ private final boolean setki;
+
+ protected XmlEncryptionOptions(
+ Abdera abdera,
+ Key dek,
+ Key kek,
+ String kca,
+ String dca,
+ boolean setki) {
super(abdera);
+ this.dek = dek;
+ this.kek = kek;
+ this.kca = kca;
+ this.dca = dca;
+ this.setki = setki;
}
public Key getDataEncryptionKey() {
return dek;
}
- public EncryptionOptions setDataEncryptionKey(Key key) {
- this.dek = key;
- return this;
- }
-
public Key getKeyEncryptionKey() {
return kek;
}
- public EncryptionOptions setKeyEncryptionKey(Key key) {
- this.kek = key;
- return this;
- }
-
public String getKeyCipherAlgorithm() {
return kca;
}
- public EncryptionOptions setKeyCipherAlgorithm(String alg) {
- this.kca = alg;
- return this;
- }
-
public String getDataCipherAlgorithm() {
return dca;
}
- public EncryptionOptions setDataCipherAlgorithm(String alg) {
- this.dca = alg;
- return this;
- }
-
public boolean includeKeyInfo() {
return setki;
}
-
- public EncryptionOptions setIncludeKeyInfo(boolean includeKeyInfo) {
- this.setki = includeKeyInfo;
- return this;
- }
}
Modified: abdera/abdera2/security/src/main/java/org/apache/abdera2/security/xmlsec/XmlSignature.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/security/src/main/java/org/apache/abdera2/security/xmlsec/XmlSignature.java?rev=1225951&r1=1225950&r2=1225951&view=diff
==============================================================================
--- abdera/abdera2/security/src/main/java/org/apache/abdera2/security/xmlsec/XmlSignature.java (original)
+++ abdera/abdera2/security/src/main/java/org/apache/abdera2/security/xmlsec/XmlSignature.java Fri Dec 30 22:35:32 2011
@@ -31,6 +31,7 @@ import org.apache.abdera2.model.Link;
import org.apache.abdera2.model.Source;
import org.apache.abdera2.security.SecurityException;
import org.apache.abdera2.security.SignatureOptions;
+import org.apache.abdera2.security.SignatureOptions.SignatureOptionsBuilder;
import org.apache.abdera2.security.util.Constants;
import org.apache.abdera2.security.util.SignatureBase;
import org.apache.abdera2.common.iri.IRI;
@@ -42,6 +43,8 @@ import org.apache.xml.security.transform
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
+import com.google.common.collect.Iterables;
+
public class XmlSignature extends SignatureBase {
static {
@@ -73,12 +76,11 @@ public class XmlSignature extends Signat
transforms.addTransform(Transforms.TRANSFORM_ENVELOPED_SIGNATURE);
transforms.addTransform(Transforms.TRANSFORM_C14N_EXCL_OMIT_COMMENTS);
sig.addDocument("", transforms, org.apache.xml.security.utils.Constants.ALGO_ID_DIGEST_SHA1);
- String[] refs = options.getReferences();
- for (String ref : refs)
+ for (String ref : options.getReferences())
sig.addDocument(ref);
if (options.isSignLinks()) {
- String[] rels = options.getSignLinkRels();
+ String[] rels = Iterables.toArray(options.getSignLinkRels(),String.class);
List<Link> links = null;
Content content = null;
if (element instanceof Source) {
@@ -227,8 +229,8 @@ public class XmlSignature extends Signat
}
}
- public SignatureOptions getDefaultSignatureOptions() throws SecurityException {
- return new XmlSignatureOptions(getAbdera());
+ public SignatureOptionsBuilder getDefaultSignatureOptions() throws SecurityException {
+ return XmlSignatureOptions.make().abdera(getAbdera());
}
@SuppressWarnings("unchecked")
Modified: abdera/abdera2/security/src/main/java/org/apache/abdera2/security/xmlsec/XmlSignatureOptions.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/security/src/main/java/org/apache/abdera2/security/xmlsec/XmlSignatureOptions.java?rev=1225951&r1=1225950&r2=1225951&view=diff
==============================================================================
--- abdera/abdera2/security/src/main/java/org/apache/abdera2/security/xmlsec/XmlSignatureOptions.java (original)
+++ abdera/abdera2/security/src/main/java/org/apache/abdera2/security/xmlsec/XmlSignatureOptions.java Fri Dec 30 22:35:32 2011
@@ -20,89 +20,78 @@ package org.apache.abdera2.security.xmls
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.cert.X509Certificate;
-import java.util.ArrayList;
-import java.util.List;
import org.apache.abdera2.Abdera;
import org.apache.abdera2.security.SignatureOptions;
+public final class XmlSignatureOptions extends XmlSecurityOptions implements SignatureOptions {
-public class XmlSignatureOptions extends XmlSecurityOptions implements SignatureOptions {
-
- private PrivateKey signingKey = null;
- private PublicKey publickey = null;
- private X509Certificate cert = null;
- private String[] linkrels = null;
- private boolean signlinks = false;
- private List<String> references = null;
- private String algo = "http://www.w3.org/2000/09/xmldsig#dsa-sha1";
-
+ public static SignatureOptionsBuilder make() {
+ return new XmlSignatureOptionsBuilder();
+ }
+
+ protected static final class XmlSignatureOptionsBuilder
+ extends SignatureOptionsBuilder {
+
+ public SignatureOptions get() {
+ return new XmlSignatureOptions(
+ abdera,salg,skey,pkey,cert,refs.build(),signlinks,linkRels.build());
+ }
+
+ }
+
+ private final PrivateKey signingKey;
+ private final PublicKey publickey;
+ private final X509Certificate cert;
+ private final Iterable<String> linkrels;
+ private final boolean signlinks;
+ private final Iterable<String> references;
+ private final String algo;
+
+ protected XmlSignatureOptions(
+ Abdera abdera,
+ String salg,
+ PrivateKey skey,
+ PublicKey pkey,
+ X509Certificate cert,
+ Iterable<String> refs,
+ boolean signlinks,
+ Iterable<String> rels) {
+ super(abdera);
+ this.signingKey = skey;
+ this.publickey = pkey;
+ this.cert = cert;
+ this.linkrels = rels;
+ this.signlinks = signlinks;
+ this.references = refs;
+ this.algo = salg;
+ }
+
public String getSigningAlgorithm() {
return algo;
}
- public SignatureOptions setSigningAlgorithm(String algorithm) {
- this.algo = algorithm;
- return this;
- }
-
- protected XmlSignatureOptions(Abdera abdera) {
- super(abdera);
- references = new ArrayList<String>();
- }
-
public PrivateKey getSigningKey() {
return signingKey;
}
- public SignatureOptions setSigningKey(PrivateKey privateKey) {
- this.signingKey = privateKey;
- return this;
- }
-
public X509Certificate getCertificate() {
return cert;
}
- public SignatureOptions setCertificate(X509Certificate cert) {
- this.cert = cert;
- return this;
- }
-
- public SignatureOptions addReference(String href) {
- if (!references.contains(href))
- references.add(href);
- return this;
- }
-
- public String[] getReferences() {
- return references.toArray(new String[references.size()]);
+ public Iterable<String> getReferences() {
+ return references;
}
public PublicKey getPublicKey() {
return publickey;
}
- public SignatureOptions setPublicKey(PublicKey publickey) {
- this.publickey = publickey;
- return this;
- }
-
public boolean isSignLinks() {
return signlinks;
}
- public SignatureOptions setSignLinks(boolean signlinks) {
- this.signlinks = signlinks;
- return this;
- }
-
- public String[] getSignLinkRels() {
+ public Iterable<String> getSignLinkRels() {
return this.linkrels;
}
- public SignatureOptions setSignedLinkRels(String... rel) {
- this.linkrels = rel;
- return this;
- }
-
}
Modified: abdera/abdera2/test/src/main/java/org/apache/abdera2/test/security/DigitalSignatureTest.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/test/src/main/java/org/apache/abdera2/test/security/DigitalSignatureTest.java?rev=1225951&r1=1225950&r2=1225951&view=diff
==============================================================================
--- abdera/abdera2/test/src/main/java/org/apache/abdera2/test/security/DigitalSignatureTest.java (original)
+++ abdera/abdera2/test/src/main/java/org/apache/abdera2/test/security/DigitalSignatureTest.java Fri Dec 30 22:35:32 2011
@@ -81,9 +81,11 @@ public class DigitalSignatureTest {
// Prepare the digital signature options
Signature sig = absec.getSignature();
- SignatureOptions options = sig.getDefaultSignatureOptions();
- options.setCertificate(cert);
- options.setSigningKey(signingKey);
+ SignatureOptions options =
+ sig.getDefaultSignatureOptions()
+ .certificate(cert)
+ .signingKey(signingKey)
+ .get();
// Sign the entry
entry = sig.sign(entry, options);
Modified: abdera/abdera2/test/src/main/java/org/apache/abdera2/test/security/EncryptionTest.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/test/src/main/java/org/apache/abdera2/test/security/EncryptionTest.java?rev=1225951&r1=1225950&r2=1225951&view=diff
==============================================================================
--- abdera/abdera2/test/src/main/java/org/apache/abdera2/test/security/EncryptionTest.java (original)
+++ abdera/abdera2/test/src/main/java/org/apache/abdera2/test/security/EncryptionTest.java Fri Dec 30 22:35:32 2011
@@ -77,8 +77,9 @@ public class EncryptionTest {
// Prepare the encryption options
Encryption enc = absec.getEncryption();
- EncryptionOptions options = enc.getDefaultEncryptionOptions();
- options.setDataEncryptionKey(key);
+ EncryptionOptions options =
+ enc.getDefaultEncryptionOptions()
+ .dataEncryptionKey(key).get();
// Encrypt the document using the generated key
Document<?> enc_doc = enc.encrypt(entry.getDocument(), options);
Modified: abdera/abdera2/test/src/main/java/org/apache/abdera2/test/security/filter/SecurityFilterTest.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/test/src/main/java/org/apache/abdera2/test/security/filter/SecurityFilterTest.java?rev=1225951&r1=1225950&r2=1225951&view=diff
==============================================================================
--- abdera/abdera2/test/src/main/java/org/apache/abdera2/test/security/filter/SecurityFilterTest.java (original)
+++ abdera/abdera2/test/src/main/java/org/apache/abdera2/test/security/filter/SecurityFilterTest.java Fri Dec 30 22:35:32 2011
@@ -72,7 +72,7 @@ public class SecurityFilterTest {
Security security = new Security(abdera);
Signature sig = security.getSignature();
assertTrue(sig.isSigned(root));
- assertTrue(sig.verify(root, sig.getDefaultSignatureOptions()));
+ assertTrue(sig.verify(root, sig.getDefaultSignatureOptions().get()));
}
private static final String keystoreFile = "/key.jks";
@@ -111,9 +111,11 @@ public class SecurityFilterTest {
assertNotNull(cert);
Signature sig = security.getSignature();
- SignatureOptions options = sig.getDefaultSignatureOptions();
- options.setCertificate(cert);
- options.setSigningKey(signingKey);
+ SignatureOptions options =
+ sig.getDefaultSignatureOptions()
+ .certificate(cert)
+ .signingKey(signingKey)
+ .get();
// Sign the entry
entry = sig.sign(entry, options);