Author: dkulp Date: Thu Mar 10 02:39:08 2011 New Revision: 1080110 URL: http://svn.apache.org/viewvc?rev=1080110&view=rev Log: Slight performance bump by allowing existing WSSConfig to be passed into WSSecBase objects instead of creating a new default instance in the constructor.
Modified: webservices/wss4j/trunk/src/main/java/org/apache/ws/security/WSSecurityEngine.java webservices/wss4j/trunk/src/main/java/org/apache/ws/security/action/EncryptionAction.java webservices/wss4j/trunk/src/main/java/org/apache/ws/security/action/SAMLTokenSignedAction.java webservices/wss4j/trunk/src/main/java/org/apache/ws/security/action/SAMLTokenUnsignedAction.java webservices/wss4j/trunk/src/main/java/org/apache/ws/security/action/SignatureAction.java webservices/wss4j/trunk/src/main/java/org/apache/ws/security/action/SignatureConfirmationAction.java webservices/wss4j/trunk/src/main/java/org/apache/ws/security/action/TimestampAction.java webservices/wss4j/trunk/src/main/java/org/apache/ws/security/action/UsernameTokenAction.java webservices/wss4j/trunk/src/main/java/org/apache/ws/security/action/UsernameTokenSignedAction.java webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecBase.java webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecDKEncrypt.java webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecDKSign.java webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecDerivedKeyBase.java webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecEncrypt.java webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecEncryptedKey.java webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecSAMLToken.java webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecSignature.java webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecSignatureBase.java webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecSignatureConfirmation.java webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecTimestamp.java webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecUsernameToken.java webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/token/SecurityTokenReference.java webservices/wss4j/trunk/src/main/java/org/apache/ws/security/processor/SAMLTokenProcessor.java webservices/wss4j/trunk/src/main/java/org/apache/ws/security/saml/SAMLUtil.java webservices/wss4j/trunk/src/main/java/org/apache/ws/security/saml/WSSecSignatureSAML.java webservices/wss4j/trunk/src/test/java/org/apache/ws/security/misc/FaultCodeTest.java Modified: webservices/wss4j/trunk/src/main/java/org/apache/ws/security/WSSecurityEngine.java URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/src/main/java/org/apache/ws/security/WSSecurityEngine.java?rev=1080110&r1=1080109&r2=1080110&view=diff ============================================================================== --- webservices/wss4j/trunk/src/main/java/org/apache/ws/security/WSSecurityEngine.java (original) +++ webservices/wss4j/trunk/src/main/java/org/apache/ws/security/WSSecurityEngine.java Thu Mar 10 02:39:08 2011 @@ -372,7 +372,7 @@ public class WSSecurityEngine { QName el = new QName(node.getNamespaceURI(), node.getLocalName()); // Check for multiple timestamps - if (wssConfig.isWsiBSPCompliant()) { + if (requestData.getWssConfig().isWsiBSPCompliant()) { if (foundTimestamp && el.equals(TIMESTAMP)) { if (doDebug) { log.debug( Modified: webservices/wss4j/trunk/src/main/java/org/apache/ws/security/action/EncryptionAction.java URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/src/main/java/org/apache/ws/security/action/EncryptionAction.java?rev=1080110&r1=1080109&r2=1080110&view=diff ============================================================================== --- webservices/wss4j/trunk/src/main/java/org/apache/ws/security/action/EncryptionAction.java (original) +++ webservices/wss4j/trunk/src/main/java/org/apache/ws/security/action/EncryptionAction.java Thu Mar 10 02:39:08 2011 @@ -31,8 +31,7 @@ import org.w3c.dom.Document; public class EncryptionAction implements Action { public void execute(WSHandler handler, int actionToDo, Document doc, RequestData reqData) throws WSSecurityException { - WSSecEncrypt wsEncrypt = new WSSecEncrypt(); - wsEncrypt.setWsConfig(reqData.getWssConfig()); + WSSecEncrypt wsEncrypt = new WSSecEncrypt(reqData.getWssConfig()); if (reqData.getEncKeyId() != 0) { wsEncrypt.setKeyIdentifierType(reqData.getEncKeyId()); Modified: webservices/wss4j/trunk/src/main/java/org/apache/ws/security/action/SAMLTokenSignedAction.java URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/src/main/java/org/apache/ws/security/action/SAMLTokenSignedAction.java?rev=1080110&r1=1080109&r2=1080110&view=diff ============================================================================== --- webservices/wss4j/trunk/src/main/java/org/apache/ws/security/action/SAMLTokenSignedAction.java (original) +++ webservices/wss4j/trunk/src/main/java/org/apache/ws/security/action/SAMLTokenSignedAction.java Thu Mar 10 02:39:08 2011 @@ -62,8 +62,7 @@ public class SAMLTokenSignedAction imple throw new WSSecurityException("WSHandler: Signed SAML: no SAML token received"); } - WSSecSignatureSAML wsSign = new WSSecSignatureSAML(); - wsSign.setWsConfig(reqData.getWssConfig()); + WSSecSignatureSAML wsSign = new WSSecSignatureSAML(reqData.getWssConfig()); String password = handler.getPassword(reqData.getUsername(), Modified: webservices/wss4j/trunk/src/main/java/org/apache/ws/security/action/SAMLTokenUnsignedAction.java URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/src/main/java/org/apache/ws/security/action/SAMLTokenUnsignedAction.java?rev=1080110&r1=1080109&r2=1080110&view=diff ============================================================================== --- webservices/wss4j/trunk/src/main/java/org/apache/ws/security/action/SAMLTokenUnsignedAction.java (original) +++ webservices/wss4j/trunk/src/main/java/org/apache/ws/security/action/SAMLTokenUnsignedAction.java Thu Mar 10 02:39:08 2011 @@ -31,8 +31,7 @@ public class SAMLTokenUnsignedAction ext public void execute(WSHandler handler, int actionToDo, Document doc, RequestData reqData) throws WSSecurityException { - WSSecSAMLToken builder = new WSSecSAMLToken(); - builder.setWsConfig(reqData.getWssConfig()); + WSSecSAMLToken builder = new WSSecSAMLToken(reqData.getWssConfig()); SAMLIssuer saml = loadSamlIssuer(handler, reqData); AssertionWrapper assertion = saml.newAssertion(); Modified: webservices/wss4j/trunk/src/main/java/org/apache/ws/security/action/SignatureAction.java URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/src/main/java/org/apache/ws/security/action/SignatureAction.java?rev=1080110&r1=1080109&r2=1080110&view=diff ============================================================================== --- webservices/wss4j/trunk/src/main/java/org/apache/ws/security/action/SignatureAction.java (original) +++ webservices/wss4j/trunk/src/main/java/org/apache/ws/security/action/SignatureAction.java Thu Mar 10 02:39:08 2011 @@ -37,8 +37,7 @@ public class SignatureAction implements WSHandlerConstants.PW_CALLBACK_CLASS, WSHandlerConstants.PW_CALLBACK_REF, reqData ); - WSSecSignature wsSign = new WSSecSignature(); - wsSign.setWsConfig(reqData.getWssConfig()); + WSSecSignature wsSign = new WSSecSignature(reqData.getWssConfig()); if (reqData.getSigKeyId() != 0) { wsSign.setKeyIdentifierType(reqData.getSigKeyId()); Modified: webservices/wss4j/trunk/src/main/java/org/apache/ws/security/action/SignatureConfirmationAction.java URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/src/main/java/org/apache/ws/security/action/SignatureConfirmationAction.java?rev=1080110&r1=1080109&r2=1080110&view=diff ============================================================================== --- webservices/wss4j/trunk/src/main/java/org/apache/ws/security/action/SignatureConfirmationAction.java (original) +++ webservices/wss4j/trunk/src/main/java/org/apache/ws/security/action/SignatureConfirmationAction.java Thu Mar 10 02:39:08 2011 @@ -74,7 +74,7 @@ public class SignatureConfirmationAction // // prepare a SignatureConfirmation token // - WSSecSignatureConfirmation wsc = new WSSecSignatureConfirmation(); + WSSecSignatureConfirmation wsc = new WSSecSignatureConfirmation(reqData.getWssConfig()); List<WSEncryptionPart> signatureParts = reqData.getSignatureParts(); if (signatureActions.size() > 0) { if (log.isDebugEnabled()) { Modified: webservices/wss4j/trunk/src/main/java/org/apache/ws/security/action/TimestampAction.java URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/src/main/java/org/apache/ws/security/action/TimestampAction.java?rev=1080110&r1=1080109&r2=1080110&view=diff ============================================================================== --- webservices/wss4j/trunk/src/main/java/org/apache/ws/security/action/TimestampAction.java (original) +++ webservices/wss4j/trunk/src/main/java/org/apache/ws/security/action/TimestampAction.java Thu Mar 10 02:39:08 2011 @@ -32,8 +32,7 @@ public class TimestampAction implements // // add the Timestamp to the SOAP Envelope // - WSSecTimestamp timeStampBuilder = new WSSecTimestamp(); - timeStampBuilder.setWsConfig(reqData.getWssConfig()); + WSSecTimestamp timeStampBuilder = new WSSecTimestamp(reqData.getWssConfig()); timeStampBuilder.setTimeToLive(handler.decodeTimeToLive(reqData)); timeStampBuilder.build(doc, reqData.getSecHeader()); } Modified: webservices/wss4j/trunk/src/main/java/org/apache/ws/security/action/UsernameTokenAction.java URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/src/main/java/org/apache/ws/security/action/UsernameTokenAction.java?rev=1080110&r1=1080109&r2=1080110&view=diff ============================================================================== --- webservices/wss4j/trunk/src/main/java/org/apache/ws/security/action/UsernameTokenAction.java (original) +++ webservices/wss4j/trunk/src/main/java/org/apache/ws/security/action/UsernameTokenAction.java Thu Mar 10 02:39:08 2011 @@ -43,8 +43,7 @@ public class UsernameTokenAction impleme String providedUsername = callbackData.getIdentifier(); String password = callbackData.getPassword(); - WSSecUsernameToken builder = new WSSecUsernameToken(); - builder.setWsConfig(reqData.getWssConfig()); + WSSecUsernameToken builder = new WSSecUsernameToken(reqData.getWssConfig()); builder.setPasswordType(reqData.getPwType()); builder.setPasswordsAreEncoded(reqData.getWssConfig().getPasswordsAreEncoded()); builder.setUserInfo(providedUsername, password); Modified: webservices/wss4j/trunk/src/main/java/org/apache/ws/security/action/UsernameTokenSignedAction.java URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/src/main/java/org/apache/ws/security/action/UsernameTokenSignedAction.java?rev=1080110&r1=1080109&r2=1080110&view=diff ============================================================================== --- webservices/wss4j/trunk/src/main/java/org/apache/ws/security/action/UsernameTokenSignedAction.java (original) +++ webservices/wss4j/trunk/src/main/java/org/apache/ws/security/action/UsernameTokenSignedAction.java Thu Mar 10 02:39:08 2011 @@ -51,8 +51,7 @@ public class UsernameTokenSignedAction i WSHandlerConstants.PW_CALLBACK_CLASS, WSHandlerConstants.PW_CALLBACK_REF, reqData).getPassword(); - WSSecUsernameToken builder = new WSSecUsernameToken(); - builder.setWsConfig(reqData.getWssConfig()); + WSSecUsernameToken builder = new WSSecUsernameToken(reqData.getWssConfig()); if (reqData.isUseDerivedKey()) { int iterations = reqData.getDerivedKeyIterations(); @@ -84,8 +83,7 @@ public class UsernameTokenSignedAction i // after "prepare" the Signature XML element is ready and may prepend // this to the security header. - WSSecSignature sign = new WSSecSignature(); - sign.setWsConfig(reqData.getWssConfig()); + WSSecSignature sign = new WSSecSignature(reqData.getWssConfig()); sign.setCustomTokenValueType(WSConstants.USERNAMETOKEN_NS + "#UsernameToken"); sign.setCustomTokenId(builder.getId()); sign.setSecretKey(builder.getSecretKey()); Modified: webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecBase.java URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecBase.java?rev=1080110&r1=1080109&r2=1080110&view=diff ============================================================================== --- webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecBase.java (original) +++ webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecBase.java Thu Mar 10 02:39:08 2011 @@ -45,11 +45,17 @@ public class WSSecBase { protected List<WSEncryptionPart> parts = null; protected boolean doDebug = false; - - protected WSSConfig wssConfig = WSSConfig.getNewInstance(); protected CallbackLookup callbackLookup; + + private WSSConfig wssConfig; + public WSSecBase() { + } + public WSSecBase(WSSConfig config) { + wssConfig = config; + } + /** * @param callbackLookup The CallbackLookup object to retrieve elements */ @@ -106,6 +112,14 @@ public class WSSecBase { public void setWsConfig(WSSConfig wsConfig) { this.wssConfig = wsConfig; } + + public WSSConfig getWsConfig() { + if (wssConfig == null) { + wssConfig = WSSConfig.getNewInstance(); + } + return wssConfig; + } + /** * Looks up or adds a body id. <p/> First try to locate the Modified: webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecDKEncrypt.java URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecDKEncrypt.java?rev=1080110&r1=1080109&r2=1080110&view=diff ============================================================================== --- webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecDKEncrypt.java (original) +++ webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecDKEncrypt.java Thu Mar 10 02:39:08 2011 @@ -21,6 +21,7 @@ package org.apache.ws.security.message; import org.apache.ws.security.WSConstants; import org.apache.ws.security.WSEncryptionPart; +import org.apache.ws.security.WSSConfig; import org.apache.ws.security.WSSecurityException; import org.apache.ws.security.conversation.ConversationException; import org.apache.ws.security.message.token.Reference; @@ -46,6 +47,13 @@ public class WSSecDKEncrypt extends WSSe protected String symEncAlgo = WSConstants.AES_128; + public WSSecDKEncrypt() { + super(); + } + public WSSecDKEncrypt(WSSConfig config) { + super(config); + } + public Document build(Document doc, WSSecHeader secHeader) throws WSSecurityException, ConversationException { @@ -105,7 +113,7 @@ public class WSSecDKEncrypt extends WSSe List<String> encDataRefs = WSSecEncrypt.doEncryption( - document, wssConfig, keyInfo, key, symEncAlgo, references, callbackLookup + document, getWsConfig(), keyInfo, key, symEncAlgo, references, callbackLookup ); if (dataRef == null) { dataRef = Modified: webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecDKSign.java URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecDKSign.java?rev=1080110&r1=1080109&r2=1080110&view=diff ============================================================================== --- webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecDKSign.java (original) +++ webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecDKSign.java Thu Mar 10 02:39:08 2011 @@ -24,6 +24,7 @@ import org.apache.commons.logging.LogFac import org.apache.ws.security.WSConstants; import org.apache.ws.security.WSDocInfo; import org.apache.ws.security.WSEncryptionPart; +import org.apache.ws.security.WSSConfig; import org.apache.ws.security.WSSecurityException; import org.apache.ws.security.conversation.ConversationException; import org.apache.ws.security.message.token.Reference; @@ -80,6 +81,13 @@ public class WSSecDKSign extends WSSecDe private Element securityHeader = null; + public WSSecDKSign() { + super(); + } + public WSSecDKSign(WSSConfig config) { + super(config); + } + public Document build(Document doc, WSSecHeader secHeader) throws WSSecurityException, ConversationException { @@ -123,7 +131,7 @@ public class WSSecDKSign extends WSSecDe try { C14NMethodParameterSpec c14nSpec = null; - if (wssConfig.isWsiBSPCompliant() && canonAlgo.equals(WSConstants.C14N_EXCL_OMIT_COMMENTS)) { + if (getWsConfig().isWsiBSPCompliant() && canonAlgo.equals(WSConstants.C14N_EXCL_OMIT_COMMENTS)) { List<String> prefixes = getInclusivePrefixes(secHeader.getSecurityHeader(), false); c14nSpec = new ExcC14NParameterSpec(prefixes); @@ -137,10 +145,10 @@ public class WSSecDKSign extends WSSecDe ); } - keyInfoUri = wssConfig.getIdAllocator().createSecureId("KI-", keyInfo); + keyInfoUri = getWsConfig().getIdAllocator().createSecureId("KI-", keyInfo); secRef = new SecurityTokenReference(doc); - strUri = wssConfig.getIdAllocator().createSecureId("STR-", secRef); + strUri = getWsConfig().getIdAllocator().createSecureId("STR-", secRef); secRef.setID(strUri); Reference refUt = new Reference(document); @@ -188,7 +196,7 @@ public class WSSecDKSign extends WSSecDe wsDocInfo, signatureFactory, secHeader, - wssConfig, + getWsConfig(), digestAlgo ); } @@ -234,7 +242,7 @@ public class WSSecDKSign extends WSSecDe signedInfo, keyInfo, null, - wssConfig.getIdAllocator().createId("SIG-", null), + getWsConfig().getIdAllocator().createId("SIG-", null), null); // Modified: webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecDerivedKeyBase.java URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecDerivedKeyBase.java?rev=1080110&r1=1080109&r2=1080110&view=diff ============================================================================== --- webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecDerivedKeyBase.java (original) +++ webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecDerivedKeyBase.java Thu Mar 10 02:39:08 2011 @@ -20,6 +20,7 @@ package org.apache.ws.security.message; import org.apache.ws.security.WSConstants; +import org.apache.ws.security.WSSConfig; import org.apache.ws.security.WSSecurityException; import org.apache.ws.security.conversation.ConversationConstants; import org.apache.ws.security.conversation.ConversationException; @@ -112,6 +113,15 @@ public abstract class WSSecDerivedKeyBas private String customValueType; + + public WSSecDerivedKeyBase() { + super(); + } + public WSSecDerivedKeyBase(WSSConfig config) { + super(config); + } + + /** * @param ephemeralKey The ephemeralKey to set. */ @@ -204,7 +214,7 @@ public abstract class WSSecDerivedKeyBas // Add the DKTs dkt = new DerivedKeyToken(wscVersion, document); - dktId = wssConfig.getIdAllocator().createId("DK-", dkt); + dktId = getWsConfig().getIdAllocator().createId("DK-", dkt); dkt.setOffset(offset); dkt.setLength(length); Modified: webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecEncrypt.java URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecEncrypt.java?rev=1080110&r1=1080109&r2=1080110&view=diff ============================================================================== --- webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecEncrypt.java (original) +++ webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecEncrypt.java Thu Mar 10 02:39:08 2011 @@ -90,7 +90,14 @@ public class WSSecEncrypt extends WSSecE * True if the encKeyId is a direct reference to a key identifier instead of a URI to a key */ private boolean encKeyIdDirectId; - + + public WSSecEncrypt() { + super(); + } + public WSSecEncrypt(WSSConfig config) { + super(config); + } + /** * Sets the key to use during embedded encryption. * @@ -173,7 +180,6 @@ public class WSSecEncrypt extends WSSecE * @throws WSSecurityException */ public void prepare(Document doc, Crypto crypto) throws WSSecurityException { - document = doc; // @@ -320,7 +326,7 @@ public class WSSecEncrypt extends WSSecE KeyInfo keyInfo = createKeyInfo(); List<String> encDataRefs = doEncryption( - document, wssConfig, keyInfo, symmetricKey, symEncAlgo, references, callbackLookup + document, getWsConfig(), keyInfo, symmetricKey, symEncAlgo, references, callbackLookup ); if (dataRef == null) { dataRef = Modified: webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecEncryptedKey.java URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecEncryptedKey.java?rev=1080110&r1=1080109&r2=1080110&view=diff ============================================================================== --- webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecEncryptedKey.java (original) +++ webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecEncryptedKey.java Thu Mar 10 02:39:08 2011 @@ -29,6 +29,7 @@ import javax.crypto.IllegalBlockSizeExce import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.ws.security.WSConstants; +import org.apache.ws.security.WSSConfig; import org.apache.ws.security.WSSecurityException; import org.apache.ws.security.components.crypto.Crypto; import org.apache.ws.security.components.crypto.CryptoType; @@ -119,6 +120,13 @@ public class WSSecEncryptedKey extends W * Defaults to 128 */ protected int keySize = 128; + + public WSSecEncryptedKey() { + super(); + } + public WSSecEncryptedKey(WSSConfig config) { + super(config); + } /** * Set the user name to get the encryption certificate. Modified: webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecSAMLToken.java URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecSAMLToken.java?rev=1080110&r1=1080109&r2=1080110&view=diff ============================================================================== --- webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecSAMLToken.java (original) +++ webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecSAMLToken.java Thu Mar 10 02:39:08 2011 @@ -22,6 +22,7 @@ package org.apache.ws.security.message; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.ws.security.WSSConfig; import org.apache.ws.security.WSSecurityException; import org.apache.ws.security.saml.ext.AssertionWrapper; import org.apache.ws.security.util.WSSecurityUtil; @@ -43,6 +44,13 @@ public class WSSecSAMLToken extends WSSe private AssertionWrapper saml = null; + public WSSecSAMLToken() { + super(); + } + public WSSecSAMLToken(WSSConfig config) { + super(config); + } + /** * Creates a SAML token. * Modified: webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecSignature.java URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecSignature.java?rev=1080110&r1=1080109&r2=1080110&view=diff ============================================================================== --- webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecSignature.java (original) +++ webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecSignature.java Thu Mar 10 02:39:08 2011 @@ -24,6 +24,7 @@ import org.apache.commons.logging.LogFac import org.apache.ws.security.WSConstants; import org.apache.ws.security.WSDocInfo; import org.apache.ws.security.WSEncryptionPart; +import org.apache.ws.security.WSSConfig; import org.apache.ws.security.WSSecurityException; import org.apache.ws.security.components.crypto.Crypto; import org.apache.ws.security.components.crypto.CryptoType; @@ -106,6 +107,12 @@ public class WSSecSignature extends WSSe private X509Certificate useThisCert = null; private Element securityHeader = null; + public WSSecSignature() { + super(); + } + public WSSecSignature(WSSConfig config) { + super(config); + } /** * Initialize a WSSec Signature. @@ -142,7 +149,7 @@ public class WSSecSignature extends WSSe try { C14NMethodParameterSpec c14nSpec = null; - if (wssConfig.isWsiBSPCompliant() && canonAlgo.equals(WSConstants.C14N_EXCL_OMIT_COMMENTS)) { + if (getWsConfig().isWsiBSPCompliant() && canonAlgo.equals(WSConstants.C14N_EXCL_OMIT_COMMENTS)) { List<String> prefixes = getInclusivePrefixes(secHeader.getSecurityHeader(), false); c14nSpec = new ExcC14NParameterSpec(prefixes); @@ -156,9 +163,9 @@ public class WSSecSignature extends WSSe ); } - keyInfoUri = wssConfig.getIdAllocator().createSecureId("KI-", keyInfo); + keyInfoUri = getWsConfig().getIdAllocator().createSecureId("KI-", keyInfo); secRef = new SecurityTokenReference(doc); - strUri = wssConfig.getIdAllocator().createSecureId("STR-", secRef); + strUri = getWsConfig().getIdAllocator().createSecureId("STR-", secRef); secRef.setID(strUri); // @@ -371,7 +378,7 @@ public class WSSecSignature extends WSSe wsDocInfo, signatureFactory, secHeader, - wssConfig, + getWsConfig(), digestAlgo ); } @@ -469,7 +476,7 @@ public class WSSecSignature extends WSSe signedInfo, keyInfo, null, - wssConfig.getIdAllocator().createId("SIG-", null), + getWsConfig().getIdAllocator().createId("SIG-", null), null); // @@ -737,7 +744,7 @@ public class WSSecSignature extends WSSe new Object[] { user, "signature" } ); } - certUri = wssConfig.getIdAllocator().createSecureId("X509-", certs[0]); + certUri = getWsConfig().getIdAllocator().createSecureId("X509-", certs[0]); // // If no signature algorithm was set try to detect it according to the // data stored in the certificate. Modified: webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecSignatureBase.java URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecSignatureBase.java?rev=1080110&r1=1080109&r2=1080110&view=diff ============================================================================== --- webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecSignatureBase.java (original) +++ webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecSignatureBase.java Thu Mar 10 02:39:08 2011 @@ -53,6 +53,13 @@ public class WSSecSignatureBase extends private static Log log = LogFactory.getLog(WSSecSignatureBase.class.getName()); + public WSSecSignatureBase() { + super(); + } + public WSSecSignatureBase(WSSConfig config) { + super(config); + } + /** * This method adds references to the Signature. * Modified: webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecSignatureConfirmation.java URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecSignatureConfirmation.java?rev=1080110&r1=1080109&r2=1080110&view=diff ============================================================================== --- webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecSignatureConfirmation.java (original) +++ webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecSignatureConfirmation.java Thu Mar 10 02:39:08 2011 @@ -21,6 +21,7 @@ package org.apache.ws.security.message; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.ws.security.WSSConfig; import org.apache.ws.security.message.token.SignatureConfirmation; import org.apache.ws.security.util.WSSecurityUtil; import org.w3c.dom.Document; @@ -39,6 +40,13 @@ public class WSSecSignatureConfirmation byte[] signatureValue = null; + public WSSecSignatureConfirmation() { + super(); + } + public WSSecSignatureConfirmation(WSSConfig config) { + super(config); + } + /** * Set the Signature value to store in this SignatureConfirmation. * @@ -60,7 +68,7 @@ public class WSSecSignatureConfirmation */ public void prepare(Document doc) { sc = new SignatureConfirmation(doc, signatureValue); - sc.setID(wssConfig.getIdAllocator().createId("SC-", sc)); + sc.setID(getWsConfig().getIdAllocator().createId("SC-", sc)); } /** Modified: webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecTimestamp.java URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecTimestamp.java?rev=1080110&r1=1080109&r2=1080110&view=diff ============================================================================== --- webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecTimestamp.java (original) +++ webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecTimestamp.java Thu Mar 10 02:39:08 2011 @@ -21,6 +21,7 @@ package org.apache.ws.security.message; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.ws.security.WSSConfig; import org.apache.ws.security.message.token.Timestamp; import org.apache.ws.security.util.WSSecurityUtil; import org.w3c.dom.Document; @@ -40,7 +41,13 @@ public class WSSecTimestamp extends WSSe private Timestamp ts = null; private int timeToLive = 300; // time between Created and Expires - + + public WSSecTimestamp() { + super(); + } + public WSSecTimestamp(WSSConfig config) { + super(config); + } /** * Set the time to live. This is the time difference in seconds between the * <code>Created</code> and the <code>Expires</code> in @@ -63,8 +70,8 @@ public class WSSecTimestamp extends WSSe * @param doc The SOAP envelope as W3C document */ public void prepare(Document doc) { - ts = new Timestamp(wssConfig.isPrecisionInMilliSeconds(), doc, timeToLive); - String tsId = wssConfig.getIdAllocator().createId("TS-", ts); + ts = new Timestamp(getWsConfig().isPrecisionInMilliSeconds(), doc, timeToLive); + String tsId = getWsConfig().getIdAllocator().createId("TS-", ts); ts.setID(tsId); } Modified: webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecUsernameToken.java URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecUsernameToken.java?rev=1080110&r1=1080109&r2=1080110&view=diff ============================================================================== --- webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecUsernameToken.java (original) +++ webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/WSSecUsernameToken.java Thu Mar 10 02:39:08 2011 @@ -22,6 +22,7 @@ package org.apache.ws.security.message; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.ws.security.WSConstants; +import org.apache.ws.security.WSSConfig; import org.apache.ws.security.WSSecurityException; import org.apache.ws.security.message.token.UsernameToken; import org.apache.ws.security.util.Base64; @@ -50,6 +51,12 @@ public class WSSecUsernameToken extends private int secretKeyLength = WSConstants.WSE_DERIVED_KEY_LEN; private boolean passwordsAreEncoded = false; + public WSSecUsernameToken() { + super(); + } + public WSSecUsernameToken(WSSConfig config) { + super(config); + } /** * Defines how to construct the password element of the @@ -198,7 +205,7 @@ public class WSSecUsernameToken extends * @param doc The SOAP envelope as W3C document */ public void prepare(Document doc) { - ut = new UsernameToken(wssConfig.isPrecisionInMilliSeconds(), doc, passwordType); + ut = new UsernameToken(getWsConfig().isPrecisionInMilliSeconds(), doc, passwordType); ut.setPasswordsAreEncoded(passwordsAreEncoded); ut.setName(user); if (useDerivedKey) { @@ -211,9 +218,9 @@ public class WSSecUsernameToken extends ut.addNonce(doc); } if (created) { - ut.addCreated(wssConfig.isPrecisionInMilliSeconds(), doc); + ut.addCreated(getWsConfig().isPrecisionInMilliSeconds(), doc); } - ut.setID(wssConfig.getIdAllocator().createId("UsernameToken-", ut)); + ut.setID(getWsConfig().getIdAllocator().createId("UsernameToken-", ut)); } /** Modified: webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/token/SecurityTokenReference.java URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/token/SecurityTokenReference.java?rev=1080110&r1=1080109&r2=1080110&view=diff ============================================================================== --- webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/token/SecurityTokenReference.java (original) +++ webservices/wss4j/trunk/src/main/java/org/apache/ws/security/message/token/SecurityTokenReference.java Thu Mar 10 02:39:08 2011 @@ -93,7 +93,6 @@ public class SecurityTokenReference { if (!STR_QNAME.equals(el)) { throw new WSSecurityException(WSSecurityException.FAILURE, "badElement", null); } - if (bspCompliant) { checkBSPCompliance(); } @@ -791,7 +790,6 @@ public class SecurityTokenReference { WSSecurityException.INVALID_SECURITY, "invalidDataRef" ); } - if ("KeyIdentifier".equals(child.getLocalName()) && WSConstants.WSSE_NS.equals(child.getNamespaceURI())) { Modified: webservices/wss4j/trunk/src/main/java/org/apache/ws/security/processor/SAMLTokenProcessor.java URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/src/main/java/org/apache/ws/security/processor/SAMLTokenProcessor.java?rev=1080110&r1=1080109&r2=1080110&view=diff ============================================================================== --- webservices/wss4j/trunk/src/main/java/org/apache/ws/security/processor/SAMLTokenProcessor.java (original) +++ webservices/wss4j/trunk/src/main/java/org/apache/ws/security/processor/SAMLTokenProcessor.java Thu Mar 10 02:39:08 2011 @@ -47,6 +47,7 @@ public class SAMLTokenProcessor implemen if (log.isDebugEnabled()) { log.debug("Found SAML Assertion element"); } + AssertionWrapper assertion = handleSAMLToken(elem, data, wsDocInfo); wsDocInfo.addTokenElement(elem); WSSecurityEngineResult result = null; Modified: webservices/wss4j/trunk/src/main/java/org/apache/ws/security/saml/SAMLUtil.java URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/src/main/java/org/apache/ws/security/saml/SAMLUtil.java?rev=1080110&r1=1080109&r2=1080110&view=diff ============================================================================== --- webservices/wss4j/trunk/src/main/java/org/apache/ws/security/saml/SAMLUtil.java (original) +++ webservices/wss4j/trunk/src/main/java/org/apache/ws/security/saml/SAMLUtil.java Thu Mar 10 02:39:08 2011 @@ -22,7 +22,6 @@ package org.apache.ws.security.saml; import org.apache.ws.security.WSConstants; import org.apache.ws.security.WSDocInfo; import org.apache.ws.security.WSPasswordCallback; -import org.apache.ws.security.WSSConfig; import org.apache.ws.security.WSSecurityEngine; import org.apache.ws.security.WSSecurityEngineResult; import org.apache.ws.security.WSSecurityException; @@ -286,8 +285,6 @@ public class SAMLUtil { QName el = new QName(node.getNamespaceURI(), node.getLocalName()); if (el.equals(WSSecurityEngine.ENCRYPTED_KEY)) { EncryptedKeyProcessor proc = new EncryptedKeyProcessor(); - WSSConfig config = WSSConfig.getNewInstance(); - config.setWsiBSPCompliant(bspCompliant); List<WSSecurityEngineResult> result = proc.handleToken((Element)node, data, docInfo); byte[] secret = Modified: webservices/wss4j/trunk/src/main/java/org/apache/ws/security/saml/WSSecSignatureSAML.java URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/src/main/java/org/apache/ws/security/saml/WSSecSignatureSAML.java?rev=1080110&r1=1080109&r2=1080110&view=diff ============================================================================== --- webservices/wss4j/trunk/src/main/java/org/apache/ws/security/saml/WSSecSignatureSAML.java (original) +++ webservices/wss4j/trunk/src/main/java/org/apache/ws/security/saml/WSSecSignatureSAML.java Thu Mar 10 02:39:08 2011 @@ -24,6 +24,7 @@ import org.apache.commons.logging.LogFac import org.apache.ws.security.WSConstants; import org.apache.ws.security.WSDocInfo; import org.apache.ws.security.WSEncryptionPart; +import org.apache.ws.security.WSSConfig; import org.apache.ws.security.WSSecurityException; import org.apache.ws.security.components.crypto.Crypto; import org.apache.ws.security.components.crypto.CryptoType; @@ -78,6 +79,14 @@ public class WSSecSignatureSAML extends * Constructor. */ public WSSecSignatureSAML() { + super(); + doDebug = log.isDebugEnabled(); + } + /** + * Constructor. + */ + public WSSecSignatureSAML(WSSConfig config) { + super(config); doDebug = log.isDebugEnabled(); } @@ -254,9 +263,10 @@ public class WSSecSignatureSAML extends if (secretKey == null) { RequestData data = new RequestData(); data.setSigCrypto(userCrypto); + data.setWssConfig(getWsConfig()); SAMLKeyInfo samlKeyInfo = SAMLUtil.getCredentialFromSubject( - assertion, data, wsDocInfo, wssConfig.isWsiBSPCompliant() + assertion, data, wsDocInfo, getWsConfig().isWsiBSPCompliant() ); publicKey = samlKeyInfo.getPublicKey(); certs = samlKeyInfo.getCerts(); @@ -300,7 +310,7 @@ public class WSSecSignatureSAML extends try { C14NMethodParameterSpec c14nSpec = null; - if (wssConfig.isWsiBSPCompliant() && canonAlgo.equals(WSConstants.C14N_EXCL_OMIT_COMMENTS)) { + if (getWsConfig().isWsiBSPCompliant() && canonAlgo.equals(WSConstants.C14N_EXCL_OMIT_COMMENTS)) { List<String> prefixes = getInclusivePrefixes(secHeader.getSecurityHeader(), false); c14nSpec = new ExcC14NParameterSpec(prefixes); @@ -314,13 +324,13 @@ public class WSSecSignatureSAML extends ); } - keyInfoUri = wssConfig.getIdAllocator().createSecureId("KeyId-", keyInfo); + keyInfoUri = getWsConfig().getIdAllocator().createSecureId("KeyId-", keyInfo); secRef = new SecurityTokenReference(doc); - strUri = wssConfig.getIdAllocator().createSecureId("STRId-", secRef); + strUri = getWsConfig().getIdAllocator().createSecureId("STRId-", secRef); secRef.setID(strUri); if (certs != null && certs.length != 0) { - certUri = wssConfig.getIdAllocator().createSecureId("CertId-", certs[0]); + certUri = getWsConfig().getIdAllocator().createSecureId("CertId-", certs[0]); } // @@ -334,7 +344,7 @@ public class WSSecSignatureSAML extends try { if (senderVouches) { secRefSaml = new SecurityTokenReference(doc); - secRefID = wssConfig.getIdAllocator().createSecureId("STRSAMLId-", secRefSaml); + secRefID = getWsConfig().getIdAllocator().createSecureId("STRSAMLId-", secRefSaml); secRefSaml.setID(secRefID); if (useDirectReferenceToAssertion) { @@ -495,7 +505,7 @@ public class WSSecSignatureSAML extends signedInfo, keyInfo, null, - wssConfig.getIdAllocator().createId("SIG-", null), + getWsConfig().getIdAllocator().createId("SIG-", null), null); org.w3c.dom.Element securityHeaderElement = secHeader.getSecurityHeader(); Modified: webservices/wss4j/trunk/src/test/java/org/apache/ws/security/misc/FaultCodeTest.java URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/src/test/java/org/apache/ws/security/misc/FaultCodeTest.java?rev=1080110&r1=1080109&r2=1080110&view=diff ============================================================================== --- webservices/wss4j/trunk/src/test/java/org/apache/ws/security/misc/FaultCodeTest.java (original) +++ webservices/wss4j/trunk/src/test/java/org/apache/ws/security/misc/FaultCodeTest.java Thu Mar 10 02:39:08 2011 @@ -56,7 +56,7 @@ public class FaultCodeTest extends org.j */ @org.junit.Test public void testFailedCheck() throws Exception { - WSSecEncrypt builder = new WSSecEncrypt(); + WSSecEncrypt builder = new WSSecEncrypt(secEngine.getWssConfig()); builder.setUserInfo("16c73ab6-b892-458f-abf5-2f875f74882e", "security"); builder.setKeyIdentifierType(WSConstants.BST_DIRECT_REFERENCE); Document doc = SOAPUtil.toSOAPPart(SOAPUtil.SAMPLE_SOAP_MSG); @@ -81,6 +81,7 @@ public class FaultCodeTest extends org.j @org.junit.Test public void testUnsupportedAlgorithm() throws Exception { try { + secEngine.getWssConfig(); WSSecurityUtil.getCipherInstance("Bad Algorithm"); } catch (WSSecurityException ex) { assertTrue(ex.getErrorCode() == 2); @@ -99,6 +100,7 @@ public class FaultCodeTest extends org.j @org.junit.Test public void testSecurityTokenUnavailable() throws Exception { try { + secEngine.getWssConfig(); crypto.loadCertificate(new java.io.ByteArrayInputStream(new byte[]{})); } catch (WSSecurityException ex) { assertTrue(ex.getErrorCode() == 7); @@ -115,7 +117,7 @@ public class FaultCodeTest extends org.j */ @org.junit.Test public void testMessageExpired() throws Exception { - WSSecTimestamp builder = new WSSecTimestamp(); + WSSecTimestamp builder = new WSSecTimestamp(secEngine.getWssConfig()); builder.setTimeToLive(-1); Document doc = SOAPUtil.toSOAPPart(SOAPUtil.SAMPLE_SOAP_MSG); @@ -140,7 +142,7 @@ public class FaultCodeTest extends org.j */ @org.junit.Test public void testFailedAuthentication() throws Exception { - WSSecUsernameToken builder = new WSSecUsernameToken(); + WSSecUsernameToken builder = new WSSecUsernameToken(secEngine.getWssConfig()); builder.addCreated(); builder.addNonce(); builder.setUserInfo("16c73ab6-b892-458f-abf5-2f875f74882e", "security"); @@ -167,7 +169,7 @@ public class FaultCodeTest extends org.j */ @org.junit.Test public void testInvalidSecurityToken() throws Exception { - WSSecUsernameToken builder = new WSSecUsernameToken(); + WSSecUsernameToken builder = new WSSecUsernameToken(secEngine.getWssConfig()); builder.addCreated(); builder.addNonce(); builder.setUserInfo(null, "security");