Added: webservices/wss4j/branches/swssf/streaming-ws-security/src/test/java/org/swssf/wss/test/InboundWSSecurityContextImplTest.java URL: http://svn.apache.org/viewvc/webservices/wss4j/branches/swssf/streaming-ws-security/src/test/java/org/swssf/wss/test/InboundWSSecurityContextImplTest.java?rev=1299273&view=auto ============================================================================== --- webservices/wss4j/branches/swssf/streaming-ws-security/src/test/java/org/swssf/wss/test/InboundWSSecurityContextImplTest.java (added) +++ webservices/wss4j/branches/swssf/streaming-ws-security/src/test/java/org/swssf/wss/test/InboundWSSecurityContextImplTest.java Sat Mar 10 21:05:21 2012 @@ -0,0 +1,685 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.swssf.wss.test; + +import org.opensaml.common.SAMLVersion; +import org.swssf.wss.ext.WSSConstants; +import org.swssf.wss.ext.WSSecurityContext; +import org.swssf.wss.ext.WSSecurityException; +import org.swssf.wss.impl.InboundWSSecurityContextImpl; +import org.swssf.wss.impl.securityToken.SAMLSecurityToken; +import org.swssf.wss.impl.securityToken.UsernameSecurityToken; +import org.swssf.wss.impl.securityToken.X509SecurityToken; +import org.swssf.wss.securityEvent.*; +import org.swssf.xmlsec.ext.SecurityToken; +import org.swssf.xmlsec.ext.XMLEventNS; +import org.swssf.xmlsec.ext.XMLSecurityConstants; +import org.swssf.xmlsec.ext.XMLSecurityException; +import org.testng.Assert; +import org.testng.annotations.Test; + +import javax.xml.namespace.QName; +import java.security.Key; +import java.security.KeyStore; +import java.security.PublicKey; +import java.security.cert.Certificate; +import java.security.cert.X509Certificate; +import java.util.Date; +import java.util.LinkedList; +import java.util.List; + +/** + * @author $Author: giger $ + * @version $Revision: 1297086 $ $Date: 2012-03-05 16:25:08 +0100 (Mon, 05 Mar 2012) $ + */ +public class InboundWSSecurityContextImplTest { + + @Test + public void testTokenIdentificationTransportSecurity() throws Exception { + + final List<SecurityEvent> securityEventList = generateTransportBindingSecurityEvents(); + + Assert.assertEquals(securityEventList.size(), 9); + + for (int i = 0; i < securityEventList.size(); i++) { + SecurityEvent securityEvent = securityEventList.get(i); + if (securityEvent instanceof HttpsTokenSecurityEvent) { + HttpsTokenSecurityEvent tokenSecurityEvent = (HttpsTokenSecurityEvent) securityEvent; + Assert.assertEquals(tokenSecurityEvent.getSecurityToken().getTokenUsages().size(), 2); + Assert.assertTrue(tokenSecurityEvent.getSecurityToken().getTokenUsages().contains(SecurityToken.TokenUsage.MainSignature)); + Assert.assertTrue(tokenSecurityEvent.getSecurityToken().getTokenUsages().contains(SecurityToken.TokenUsage.MainEncryption)); + } else if (securityEvent instanceof X509TokenSecurityEvent) { + X509TokenSecurityEvent tokenSecurityEvent = (X509TokenSecurityEvent) securityEvent; + Assert.assertEquals(tokenSecurityEvent.getSecurityToken().getTokenUsages().size(), 1); + Assert.assertTrue(tokenSecurityEvent.getSecurityToken().getTokenUsages().contains(SecurityToken.TokenUsage.SignedEndorsingSupportingTokens)); + } else if (securityEvent instanceof UsernameTokenSecurityEvent) { + UsernameTokenSecurityEvent tokenSecurityEvent = (UsernameTokenSecurityEvent) securityEvent; + Assert.assertEquals(tokenSecurityEvent.getSecurityToken().getTokenUsages().size(), 1); + Assert.assertTrue(tokenSecurityEvent.getSecurityToken().getTokenUsages().contains(SecurityToken.TokenUsage.SignedSupportingTokens)); + } + } + } + + public List<SecurityEvent> generateTransportBindingSecurityEvents() throws Exception { + + final List<SecurityEvent> securityEventList = new LinkedList<SecurityEvent>(); + + SecurityEventListener securityEventListener = new SecurityEventListener() { + @Override + public void registerSecurityEvent(SecurityEvent securityEvent) throws WSSecurityException { + securityEventList.add(securityEvent); + } + }; + + InboundWSSecurityContextImpl inboundWSSecurityContext = new InboundWSSecurityContextImpl(); + inboundWSSecurityContext.addSecurityEventListener(securityEventListener); + inboundWSSecurityContext.put(WSSConstants.TRANSPORT_SECURITY_ACTIVE, Boolean.TRUE); + + HttpsTokenSecurityEvent httpsTokenSecurityEvent = new HttpsTokenSecurityEvent(); + httpsTokenSecurityEvent.setSecurityToken(getX509Token(WSSConstants.X509V3Token)); + inboundWSSecurityContext.registerSecurityEvent(httpsTokenSecurityEvent); + + TimestampSecurityEvent timestampSecurityEvent = new TimestampSecurityEvent(); + inboundWSSecurityContext.registerSecurityEvent(timestampSecurityEvent); + + List<QName> timestampPath = new LinkedList<QName>(); + timestampPath.addAll(WSSConstants.WSSE_SECURITY_HEADER_PATH); + timestampPath.add(WSSConstants.TAG_wsu_Timestamp); + + RequiredElementSecurityEvent timestampRequiredElementSecurityEvent = new RequiredElementSecurityEvent(); + timestampRequiredElementSecurityEvent.setElementPath(timestampPath); + inboundWSSecurityContext.registerSecurityEvent(timestampRequiredElementSecurityEvent); + + List<QName> usernameTokenPath = new LinkedList<QName>(); + usernameTokenPath.addAll(WSSConstants.WSSE_SECURITY_HEADER_PATH); + usernameTokenPath.add(WSSConstants.TAG_wsse_UsernameToken); + + XMLEventNS usernameTokenXmlEvent = new XMLEventNS(null, null, null); + + UsernameTokenSecurityEvent usernameTokenSecurityEvent = new UsernameTokenSecurityEvent(); + UsernameSecurityToken usernameSecurityToken = new UsernameSecurityToken( + "username", "password", new Date().toString(), new byte[10], new byte[10], Long.valueOf(10), + (WSSecurityContext) null, null, null); + usernameSecurityToken.setElementPath(usernameTokenPath); + usernameSecurityToken.setXMLEvent(usernameTokenXmlEvent); + usernameTokenSecurityEvent.setSecurityToken(usernameSecurityToken); + inboundWSSecurityContext.registerSecurityEvent(usernameTokenSecurityEvent); + + List<QName> bstPath = new LinkedList<QName>(); + bstPath.addAll(WSSConstants.WSSE_SECURITY_HEADER_PATH); + bstPath.add(WSSConstants.TAG_wsse_BinarySecurityToken); + + XMLEventNS signedEndorsingSupportingTokenXmlEvent = new XMLEventNS(null, null, null); + + X509TokenSecurityEvent x509TokenSecurityEvent = new X509TokenSecurityEvent(); + X509SecurityToken signedEndorsingSupportingToken = getX509Token(WSSConstants.X509V3Token); + signedEndorsingSupportingToken.setElementPath(bstPath); + signedEndorsingSupportingToken.setXMLEvent(signedEndorsingSupportingTokenXmlEvent); + x509TokenSecurityEvent.setSecurityToken(signedEndorsingSupportingToken); + signedEndorsingSupportingToken.addTokenUsage(SecurityToken.TokenUsage.Signature); + inboundWSSecurityContext.registerSecurityEvent(x509TokenSecurityEvent); + + SignatureValueSecurityEvent signatureValueSecurityEvent = new SignatureValueSecurityEvent(); + inboundWSSecurityContext.registerSecurityEvent(signatureValueSecurityEvent); + + List<XMLSecurityConstants.ContentType> protectionOrder = new LinkedList<XMLSecurityConstants.ContentType>(); + protectionOrder.add(XMLSecurityConstants.ContentType.SIGNATURE); + + SignedElementSecurityEvent signedTimestampElementSecurityEvent = new SignedElementSecurityEvent(signedEndorsingSupportingToken, true, protectionOrder); + signedTimestampElementSecurityEvent.setElementPath(timestampPath); + inboundWSSecurityContext.registerSecurityEvent(signedTimestampElementSecurityEvent); + + SignedElementSecurityEvent signedBSTElementSecurityEvent = new SignedElementSecurityEvent(signedEndorsingSupportingToken, true, protectionOrder); + signedBSTElementSecurityEvent.setElementPath(bstPath); + signedBSTElementSecurityEvent.setXmlEvent(signedEndorsingSupportingTokenXmlEvent); + inboundWSSecurityContext.registerSecurityEvent(signedBSTElementSecurityEvent); + + OperationSecurityEvent operationSecurityEvent = new OperationSecurityEvent(); + operationSecurityEvent.setOperation(new QName("definitions")); + inboundWSSecurityContext.registerSecurityEvent(operationSecurityEvent); + + return securityEventList; + } + + @Test + public void testTokenIdentificationAsymmetricSecurity() throws Exception { + + final List<SecurityEvent> securityEventList = generateAsymmetricBindingSecurityEvents(); + + boolean mainSignatureTokenOccured = false; + boolean signedEndorsingSupportingTokenOccured = false; + boolean mainEncryptionTokenOccured = false; + boolean usernameTokenOccured = false; + Assert.assertEquals(securityEventList.size(), 34); + int x509TokenIndex = 0; + for (int i = 0; i < securityEventList.size(); i++) { + SecurityEvent securityEvent = securityEventList.get(i); + if (securityEvent instanceof X509TokenSecurityEvent && x509TokenIndex == 0) { + x509TokenIndex++; + X509TokenSecurityEvent tokenSecurityEvent = (X509TokenSecurityEvent) securityEvent; + Assert.assertEquals(tokenSecurityEvent.getSecurityToken().getTokenUsages().size(), 1); + Assert.assertTrue(tokenSecurityEvent.getSecurityToken().getTokenUsages().contains(SecurityToken.TokenUsage.MainEncryption)); + mainEncryptionTokenOccured = true; + } else if (securityEvent instanceof X509TokenSecurityEvent && x509TokenIndex == 1) { + x509TokenIndex++; + X509TokenSecurityEvent tokenSecurityEvent = (X509TokenSecurityEvent) securityEvent; + Assert.assertEquals(tokenSecurityEvent.getSecurityToken().getTokenUsages().size(), 1); + Assert.assertTrue(tokenSecurityEvent.getSecurityToken().getTokenUsages().contains(SecurityToken.TokenUsage.SignedEndorsingSupportingTokens)); + signedEndorsingSupportingTokenOccured = true; + } else if (securityEvent instanceof X509TokenSecurityEvent && x509TokenIndex == 2) { + x509TokenIndex++; + X509TokenSecurityEvent tokenSecurityEvent = (X509TokenSecurityEvent) securityEvent; + Assert.assertEquals(tokenSecurityEvent.getSecurityToken().getTokenUsages().size(), 1); + Assert.assertTrue(tokenSecurityEvent.getSecurityToken().getTokenUsages().contains(SecurityToken.TokenUsage.EncryptedSupportingTokens)); + mainSignatureTokenOccured = true; + } else if (securityEvent instanceof X509TokenSecurityEvent && x509TokenIndex == 3) { + x509TokenIndex++; + X509TokenSecurityEvent tokenSecurityEvent = (X509TokenSecurityEvent) securityEvent; + Assert.assertEquals(tokenSecurityEvent.getSecurityToken().getTokenUsages().size(), 1); + Assert.assertTrue(tokenSecurityEvent.getSecurityToken().getTokenUsages().contains(SecurityToken.TokenUsage.SupportingTokens)); + mainSignatureTokenOccured = true; + } else if (securityEvent instanceof X509TokenSecurityEvent && x509TokenIndex == 4) { + x509TokenIndex++; + X509TokenSecurityEvent tokenSecurityEvent = (X509TokenSecurityEvent) securityEvent; + Assert.assertEquals(tokenSecurityEvent.getSecurityToken().getTokenUsages().size(), 1); + Assert.assertTrue(tokenSecurityEvent.getSecurityToken().getTokenUsages().contains(SecurityToken.TokenUsage.SignedEndorsingEncryptedSupportingTokens)); + mainSignatureTokenOccured = true; + } else if (securityEvent instanceof X509TokenSecurityEvent && x509TokenIndex == 5) { + x509TokenIndex++; + X509TokenSecurityEvent tokenSecurityEvent = (X509TokenSecurityEvent) securityEvent; + Assert.assertEquals(tokenSecurityEvent.getSecurityToken().getTokenUsages().size(), 1); + Assert.assertTrue(tokenSecurityEvent.getSecurityToken().getTokenUsages().contains(SecurityToken.TokenUsage.MainSignature)); + mainSignatureTokenOccured = true; + } else if (securityEvent instanceof UsernameTokenSecurityEvent) { + UsernameTokenSecurityEvent tokenSecurityEvent = (UsernameTokenSecurityEvent) securityEvent; + Assert.assertEquals(tokenSecurityEvent.getSecurityToken().getTokenUsages().size(), 1); + Assert.assertTrue(tokenSecurityEvent.getSecurityToken().getTokenUsages().contains(SecurityToken.TokenUsage.SignedEncryptedSupportingTokens)); + usernameTokenOccured = true; + } + } + + Assert.assertTrue(mainSignatureTokenOccured); + Assert.assertTrue(mainEncryptionTokenOccured); + Assert.assertTrue(signedEndorsingSupportingTokenOccured); + Assert.assertTrue(usernameTokenOccured); + } + + public List<SecurityEvent> generateAsymmetricBindingSecurityEvents() throws Exception { + final List<SecurityEvent> securityEventList = new LinkedList<SecurityEvent>(); + + SecurityEventListener securityEventListener = new SecurityEventListener() { + @Override + public void registerSecurityEvent(SecurityEvent securityEvent) throws WSSecurityException { + securityEventList.add(securityEvent); + } + }; + + InboundWSSecurityContextImpl inboundWSSecurityContext = new InboundWSSecurityContextImpl(); + inboundWSSecurityContext.addSecurityEventListener(securityEventListener); + + TimestampSecurityEvent timestampSecurityEvent = new TimestampSecurityEvent(); + inboundWSSecurityContext.registerSecurityEvent(timestampSecurityEvent); + + List<QName> timestampPath = new LinkedList<QName>(); + timestampPath.addAll(WSSConstants.WSSE_SECURITY_HEADER_PATH); + timestampPath.add(WSSConstants.TAG_wsu_Timestamp); + + RequiredElementSecurityEvent timestampRequiredElementSecurityEvent = new RequiredElementSecurityEvent(); + timestampRequiredElementSecurityEvent.setElementPath(timestampPath); + inboundWSSecurityContext.registerSecurityEvent(timestampRequiredElementSecurityEvent); + + List<QName> bstPath = new LinkedList<QName>(); + bstPath.addAll(WSSConstants.WSSE_SECURITY_HEADER_PATH); + bstPath.add(WSSConstants.TAG_wsse_BinarySecurityToken); + + XMLEventNS recipientTokenXmlEvent = new XMLEventNS(null, null, null); + + X509TokenSecurityEvent recipientX509TokenSecurityEvent = new X509TokenSecurityEvent(); + X509SecurityToken recipientToken = getX509Token(WSSConstants.X509V3Token); + recipientX509TokenSecurityEvent.setSecurityToken(recipientToken); + recipientToken.setElementPath(bstPath); + recipientToken.setXMLEvent(recipientTokenXmlEvent); + recipientToken.addTokenUsage(SecurityToken.TokenUsage.Encryption); + inboundWSSecurityContext.registerSecurityEvent(recipientX509TokenSecurityEvent); + + List<XMLSecurityConstants.ContentType> protectionOrder = new LinkedList<XMLSecurityConstants.ContentType>(); + protectionOrder.add(XMLSecurityConstants.ContentType.ENCRYPTION); + protectionOrder.add(XMLSecurityConstants.ContentType.SIGNATURE); + + List<QName> signaturePath = new LinkedList<QName>(); + signaturePath.addAll(WSSConstants.WSSE_SECURITY_HEADER_PATH); + signaturePath.add(WSSConstants.TAG_dsig_Signature); + + EncryptedElementSecurityEvent signatureEncryptedElementSecurityEvent = new EncryptedElementSecurityEvent(recipientToken, true, protectionOrder); + signatureEncryptedElementSecurityEvent.setElementPath(signaturePath); + inboundWSSecurityContext.registerSecurityEvent(signatureEncryptedElementSecurityEvent); + + List<QName> usernameTokenPath = new LinkedList<QName>(); + usernameTokenPath.addAll(WSSConstants.WSSE_SECURITY_HEADER_PATH); + usernameTokenPath.add(WSSConstants.TAG_wsse_UsernameToken); + + XMLEventNS usernameTokenXmlEvent = new XMLEventNS(null, null, null); + + EncryptedElementSecurityEvent usernameEncryptedElementSecurityEvent = new EncryptedElementSecurityEvent(recipientToken, true, protectionOrder); + usernameEncryptedElementSecurityEvent.setElementPath(usernameTokenPath); + usernameEncryptedElementSecurityEvent.setXmlEvent(usernameTokenXmlEvent); + inboundWSSecurityContext.registerSecurityEvent(usernameEncryptedElementSecurityEvent); + + XMLEventNS signedEndorsingEncryptedTokenXmlEvent = new XMLEventNS(null, null, null); + + EncryptedElementSecurityEvent signedEndorsedEncryptedTokenEncryptedElementSecurityEvent = new EncryptedElementSecurityEvent(recipientToken, true, protectionOrder); + signedEndorsedEncryptedTokenEncryptedElementSecurityEvent.setElementPath(bstPath); + signedEndorsedEncryptedTokenEncryptedElementSecurityEvent.setXmlEvent(signedEndorsingEncryptedTokenXmlEvent); + inboundWSSecurityContext.registerSecurityEvent(signedEndorsedEncryptedTokenEncryptedElementSecurityEvent); + + XMLEventNS encryptedSupportingTokenXmlEvent = new XMLEventNS(null, null, null); + + EncryptedElementSecurityEvent encryptedSupportingTokenEncryptedElementSecurityEvent = new EncryptedElementSecurityEvent(recipientToken, true, protectionOrder); + encryptedSupportingTokenEncryptedElementSecurityEvent.setElementPath(bstPath); + encryptedSupportingTokenEncryptedElementSecurityEvent.setXmlEvent(encryptedSupportingTokenXmlEvent); + inboundWSSecurityContext.registerSecurityEvent(encryptedSupportingTokenEncryptedElementSecurityEvent); + + UsernameTokenSecurityEvent usernameTokenSecurityEvent = new UsernameTokenSecurityEvent(); + UsernameSecurityToken usernameSecurityToken = new UsernameSecurityToken( + "username", "password", new Date().toString(), new byte[10], new byte[10], Long.valueOf(10), + (WSSecurityContext) null, null, null); + usernameSecurityToken.setElementPath(usernameTokenPath); + usernameSecurityToken.setXMLEvent(usernameTokenXmlEvent); + usernameTokenSecurityEvent.setSecurityToken(usernameSecurityToken); + inboundWSSecurityContext.registerSecurityEvent(usernameTokenSecurityEvent); + + XMLEventNS signedEndorsingTokenXmlEvent = new XMLEventNS(null, null, null); + + X509TokenSecurityEvent signedEndorsingSupporting509TokenSecurityEvent = new X509TokenSecurityEvent(); + X509SecurityToken signedEndorsingSupportingToken = getX509Token(WSSConstants.X509V3Token); + signedEndorsingSupporting509TokenSecurityEvent.setSecurityToken(signedEndorsingSupportingToken); + signedEndorsingSupportingToken.setElementPath(bstPath); + signedEndorsingSupportingToken.setXMLEvent(signedEndorsingTokenXmlEvent); + inboundWSSecurityContext.registerSecurityEvent(signedEndorsingSupporting509TokenSecurityEvent); + + X509TokenSecurityEvent encryptedSupporting509TokenSecurityEvent = new X509TokenSecurityEvent(); + X509SecurityToken encryptedSupportingToken = getX509Token(WSSConstants.X509V3Token); + encryptedSupporting509TokenSecurityEvent.setSecurityToken(encryptedSupportingToken); + encryptedSupportingToken.setElementPath(bstPath); + encryptedSupportingToken.setXMLEvent(encryptedSupportingTokenXmlEvent); + inboundWSSecurityContext.registerSecurityEvent(encryptedSupporting509TokenSecurityEvent); + + X509TokenSecurityEvent supporting509TokenSecurityEvent = new X509TokenSecurityEvent(); + X509SecurityToken supportingToken = getX509Token(WSSConstants.X509V3Token); + supporting509TokenSecurityEvent.setSecurityToken(supportingToken); + supportingToken.setElementPath(bstPath); + inboundWSSecurityContext.registerSecurityEvent(supporting509TokenSecurityEvent); + + X509TokenSecurityEvent signedEndorsingEncryptedSupporting509TokenSecurityEvent = new X509TokenSecurityEvent(); + X509SecurityToken signedEndorsingEncryptedSupportingToken = getX509Token(WSSConstants.X509V3Token); + signedEndorsingEncryptedSupporting509TokenSecurityEvent.setSecurityToken(signedEndorsingEncryptedSupportingToken); + signedEndorsingEncryptedSupportingToken.setElementPath(bstPath); + signedEndorsingEncryptedSupportingToken.setXMLEvent(signedEndorsingEncryptedTokenXmlEvent); + inboundWSSecurityContext.registerSecurityEvent(signedEndorsingEncryptedSupporting509TokenSecurityEvent); + + XMLEventNS initiatorTokenXmlEvent = new XMLEventNS(null, null, null); + + X509TokenSecurityEvent initiator509TokenSecurityEvent = new X509TokenSecurityEvent(); + X509SecurityToken initiatorToken = getX509Token(WSSConstants.X509V3Token); + initiator509TokenSecurityEvent.setSecurityToken(initiatorToken); + initiatorToken.setElementPath(bstPath); + initiatorToken.setXMLEvent(initiatorTokenXmlEvent); + inboundWSSecurityContext.registerSecurityEvent(initiator509TokenSecurityEvent); + + initiator509TokenSecurityEvent = new X509TokenSecurityEvent(); + initiator509TokenSecurityEvent.setSecurityToken(initiatorToken); + initiatorToken.addTokenUsage(SecurityToken.TokenUsage.Signature); + inboundWSSecurityContext.registerSecurityEvent(initiator509TokenSecurityEvent); + + SignatureValueSecurityEvent signatureValueSecurityEvent = new SignatureValueSecurityEvent(); + inboundWSSecurityContext.registerSecurityEvent(signatureValueSecurityEvent); + + SignedElementSecurityEvent signedTimestampElementSecurityEvent = new SignedElementSecurityEvent(initiatorToken, true, protectionOrder); + signedTimestampElementSecurityEvent.setElementPath(timestampPath); + inboundWSSecurityContext.registerSecurityEvent(signedTimestampElementSecurityEvent); + + SignedElementSecurityEvent signedUsernameTokenElementSecurityEvent = new SignedElementSecurityEvent(initiatorToken, true, protectionOrder); + signedUsernameTokenElementSecurityEvent.setElementPath(usernameTokenPath); + signedUsernameTokenElementSecurityEvent.setXmlEvent(usernameTokenXmlEvent); + inboundWSSecurityContext.registerSecurityEvent(signedUsernameTokenElementSecurityEvent); + + SignedElementSecurityEvent bstElementSecurityEvent = new SignedElementSecurityEvent(initiatorToken, true, protectionOrder); + bstElementSecurityEvent.setElementPath(bstPath); + bstElementSecurityEvent.setXmlEvent(signedEndorsingTokenXmlEvent); + inboundWSSecurityContext.registerSecurityEvent(bstElementSecurityEvent); + + bstElementSecurityEvent = new SignedElementSecurityEvent(initiatorToken, true, protectionOrder); + bstElementSecurityEvent.setElementPath(bstPath); + bstElementSecurityEvent.setXmlEvent(signedEndorsingEncryptedTokenXmlEvent); + inboundWSSecurityContext.registerSecurityEvent(bstElementSecurityEvent); + + bstElementSecurityEvent = new SignedElementSecurityEvent(initiatorToken, true, protectionOrder); + bstElementSecurityEvent.setElementPath(bstPath); + bstElementSecurityEvent.setXmlEvent(initiatorTokenXmlEvent); + inboundWSSecurityContext.registerSecurityEvent(bstElementSecurityEvent); + + List<QName> header1Path = new LinkedList<QName>(); + header1Path.addAll(WSSConstants.SOAP_11_HEADER_PATH); + header1Path.add(new QName("x", "Header1", "x")); + + SignedPartSecurityEvent header1SignedPartSecurityEvent = new SignedPartSecurityEvent(initiatorToken, true, protectionOrder); + header1SignedPartSecurityEvent.setElementPath(header1Path); + inboundWSSecurityContext.registerSecurityEvent(header1SignedPartSecurityEvent); + + List<QName> header2Path = new LinkedList<QName>(); + header2Path.addAll(WSSConstants.SOAP_11_HEADER_PATH); + header2Path.add(new QName("x", "Header1", "x")); + + SignedPartSecurityEvent header2SignedPartSecurityEvent = new SignedPartSecurityEvent(initiatorToken, true, protectionOrder); + header2SignedPartSecurityEvent.setElementPath(header2Path); + inboundWSSecurityContext.registerSecurityEvent(header2SignedPartSecurityEvent); + + List<QName> bodyPath = new LinkedList<QName>(); + bodyPath.addAll(WSSConstants.SOAP_11_BODY_PATH); + + SignedPartSecurityEvent bodySignedPartSecurityEvent = new SignedPartSecurityEvent(initiatorToken, true, protectionOrder); + bodySignedPartSecurityEvent.setElementPath(bodyPath); + inboundWSSecurityContext.registerSecurityEvent(bodySignedPartSecurityEvent); + + signedEndorsingSupporting509TokenSecurityEvent = new X509TokenSecurityEvent(); + signedEndorsingSupporting509TokenSecurityEvent.setSecurityToken(signedEndorsingSupportingToken); + signedEndorsingSupportingToken.addTokenUsage(SecurityToken.TokenUsage.Signature); + inboundWSSecurityContext.registerSecurityEvent(signedEndorsingSupporting509TokenSecurityEvent); + + SignatureValueSecurityEvent signature2ValueSecurityEvent = new SignatureValueSecurityEvent(); + inboundWSSecurityContext.registerSecurityEvent(signature2ValueSecurityEvent); + + SignedElementSecurityEvent signatureElementSecurityEvent = new SignedElementSecurityEvent(signedEndorsingSupportingToken, true, protectionOrder); + signatureElementSecurityEvent.setElementPath(signaturePath); + inboundWSSecurityContext.registerSecurityEvent(signatureElementSecurityEvent); + + bstElementSecurityEvent = new SignedElementSecurityEvent(signedEndorsingSupportingToken, true, protectionOrder); + bstElementSecurityEvent.setElementPath(bstPath); + bstElementSecurityEvent.setXmlEvent(signedEndorsingTokenXmlEvent); + inboundWSSecurityContext.registerSecurityEvent(bstElementSecurityEvent); + + signedEndorsingEncryptedSupporting509TokenSecurityEvent = new X509TokenSecurityEvent(); + signedEndorsingEncryptedSupporting509TokenSecurityEvent.setSecurityToken(signedEndorsingEncryptedSupportingToken); + signedEndorsingEncryptedSupportingToken.addTokenUsage(SecurityToken.TokenUsage.Signature); + inboundWSSecurityContext.registerSecurityEvent(signedEndorsingEncryptedSupporting509TokenSecurityEvent); + + signature2ValueSecurityEvent = new SignatureValueSecurityEvent(); + inboundWSSecurityContext.registerSecurityEvent(signature2ValueSecurityEvent); + + signatureElementSecurityEvent = new SignedElementSecurityEvent(signedEndorsingEncryptedSupportingToken, true, protectionOrder); + signatureElementSecurityEvent.setElementPath(signaturePath); + inboundWSSecurityContext.registerSecurityEvent(signatureElementSecurityEvent); + + bstElementSecurityEvent = new SignedElementSecurityEvent(signedEndorsingEncryptedSupportingToken, true, protectionOrder); + bstElementSecurityEvent.setElementPath(bstPath); + bstElementSecurityEvent.setXmlEvent(signedEndorsingEncryptedTokenXmlEvent); + inboundWSSecurityContext.registerSecurityEvent(bstElementSecurityEvent); + + EncryptedPartSecurityEvent bodyEncryptedPartSecurityEvent = new EncryptedPartSecurityEvent(recipientToken, true, protectionOrder); + bodyEncryptedPartSecurityEvent.setElementPath(bodyPath); + inboundWSSecurityContext.registerSecurityEvent(bodyEncryptedPartSecurityEvent); + + EncryptedPartSecurityEvent header2EncryptedPartSecurityEvent = new EncryptedPartSecurityEvent(recipientToken, true, protectionOrder); + header2EncryptedPartSecurityEvent.setElementPath(header2Path); + inboundWSSecurityContext.registerSecurityEvent(header2EncryptedPartSecurityEvent); + + OperationSecurityEvent operationSecurityEvent = new OperationSecurityEvent(); + operationSecurityEvent.setOperation(new QName("definitions")); + inboundWSSecurityContext.registerSecurityEvent(operationSecurityEvent); + return securityEventList; + } + + @Test + public void testTokenIdentificationSymmetricSecurity() throws Exception { + + final List<SecurityEvent> securityEventList = generateSymmetricBindingSecurityEvents(); + + Assert.assertEquals(securityEventList.size(), 22); + + for (int i = 0; i < securityEventList.size(); i++) { + SecurityEvent securityEvent = securityEventList.get(i); + if (securityEvent instanceof X509TokenSecurityEvent) { + X509TokenSecurityEvent tokenSecurityEvent = (X509TokenSecurityEvent) securityEvent; + Assert.assertEquals(tokenSecurityEvent.getSecurityToken().getTokenUsages().size(), 1); + Assert.assertTrue(tokenSecurityEvent.getSecurityToken().getTokenUsages().contains(SecurityToken.TokenUsage.SignedEndorsingSupportingTokens)); + } else if (securityEvent instanceof UsernameTokenSecurityEvent) { + UsernameTokenSecurityEvent tokenSecurityEvent = (UsernameTokenSecurityEvent) securityEvent; + Assert.assertEquals(tokenSecurityEvent.getSecurityToken().getTokenUsages().size(), 1); + Assert.assertTrue(tokenSecurityEvent.getSecurityToken().getTokenUsages().contains(SecurityToken.TokenUsage.SignedEncryptedSupportingTokens)); + } else if (securityEvent instanceof SamlTokenSecurityEvent) { + SamlTokenSecurityEvent tokenSecurityEvent = (SamlTokenSecurityEvent) securityEvent; + Assert.assertEquals(tokenSecurityEvent.getSecurityToken().getTokenUsages().size(), 2); + Assert.assertTrue(tokenSecurityEvent.getSecurityToken().getTokenUsages().contains(SecurityToken.TokenUsage.MainSignature)); + Assert.assertTrue(tokenSecurityEvent.getSecurityToken().getTokenUsages().contains(SecurityToken.TokenUsage.MainEncryption)); + } + } + } + + public List<SecurityEvent> generateSymmetricBindingSecurityEvents() throws Exception { + final List<SecurityEvent> securityEventList = new LinkedList<SecurityEvent>(); + + SecurityEventListener securityEventListener = new SecurityEventListener() { + @Override + public void registerSecurityEvent(SecurityEvent securityEvent) throws WSSecurityException { + securityEventList.add(securityEvent); + } + }; + + InboundWSSecurityContextImpl inboundWSSecurityContext = new InboundWSSecurityContextImpl(); + inboundWSSecurityContext.addSecurityEventListener(securityEventListener); + + TimestampSecurityEvent timestampSecurityEvent = new TimestampSecurityEvent(); + inboundWSSecurityContext.registerSecurityEvent(timestampSecurityEvent); + + List<QName> timestampPath = new LinkedList<QName>(); + timestampPath.addAll(WSSConstants.WSSE_SECURITY_HEADER_PATH); + timestampPath.add(WSSConstants.TAG_wsu_Timestamp); + + RequiredElementSecurityEvent timestampRequiredElementSecurityEvent = new RequiredElementSecurityEvent(); + timestampRequiredElementSecurityEvent.setElementPath(timestampPath); + inboundWSSecurityContext.registerSecurityEvent(timestampRequiredElementSecurityEvent); + + List<QName> samlTokenPath = new LinkedList<QName>(); + samlTokenPath.addAll(WSSConstants.WSSE_SECURITY_HEADER_PATH); + samlTokenPath.add(WSSConstants.TAG_saml2_Assertion); + + XMLEventNS samlTokenXmlEvent = new XMLEventNS(null, null, null); + + SAMLSecurityToken samlSecurityToken = new SAMLSecurityToken(SAMLVersion.VERSION_20, null, null, null, null, "1"); + samlSecurityToken.setElementPath(samlTokenPath); + samlSecurityToken.setXMLEvent(samlTokenXmlEvent); + samlSecurityToken.addTokenUsage(SecurityToken.TokenUsage.Encryption); + SamlTokenSecurityEvent samlTokenSecurityEvent = new SamlTokenSecurityEvent(); + samlTokenSecurityEvent.setSecurityToken(samlSecurityToken); + inboundWSSecurityContext.registerSecurityEvent(samlTokenSecurityEvent); + + List<XMLSecurityConstants.ContentType> protectionOrder = new LinkedList<XMLSecurityConstants.ContentType>(); + protectionOrder.add(XMLSecurityConstants.ContentType.ENCRYPTION); + protectionOrder.add(XMLSecurityConstants.ContentType.SIGNATURE); + + List<QName> usernamePath = new LinkedList<QName>(); + usernamePath.addAll(WSSConstants.WSSE_SECURITY_HEADER_PATH); + usernamePath.add(WSSConstants.TAG_wsse_UsernameToken); + + XMLEventNS usernameTokenXmlEvent = new XMLEventNS(null, null, null); + + EncryptedElementSecurityEvent usernameEncryptedElementSecurityEvent = new EncryptedElementSecurityEvent(samlSecurityToken, true, protectionOrder); + usernameEncryptedElementSecurityEvent.setElementPath(usernamePath); + usernameEncryptedElementSecurityEvent.setXmlEvent(usernameTokenXmlEvent); + inboundWSSecurityContext.registerSecurityEvent(usernameEncryptedElementSecurityEvent); + + List<QName> usernameTokenPath = new LinkedList<QName>(); + usernameTokenPath.addAll(WSSConstants.WSSE_SECURITY_HEADER_PATH); + usernameTokenPath.add(WSSConstants.TAG_wsse_UsernameToken); + + UsernameTokenSecurityEvent usernameTokenSecurityEvent = new UsernameTokenSecurityEvent(); + UsernameSecurityToken usernameSecurityToken = new UsernameSecurityToken( + "username", "password", new Date().toString(), new byte[10], new byte[10], Long.valueOf(10), + (WSSecurityContext) null, null, null); + usernameSecurityToken.setElementPath(usernamePath); + usernameSecurityToken.setXMLEvent(usernameTokenXmlEvent); + usernameTokenSecurityEvent.setSecurityToken(usernameSecurityToken); + inboundWSSecurityContext.registerSecurityEvent(usernameTokenSecurityEvent); + + List<QName> signaturePath = new LinkedList<QName>(); + signaturePath.addAll(WSSConstants.WSSE_SECURITY_HEADER_PATH); + signaturePath.add(WSSConstants.TAG_dsig_Signature); + + EncryptedElementSecurityEvent signatureEncryptedElementSecurityEvent = new EncryptedElementSecurityEvent(samlSecurityToken, true, protectionOrder); + signatureEncryptedElementSecurityEvent.setElementPath(signaturePath); + inboundWSSecurityContext.registerSecurityEvent(signatureEncryptedElementSecurityEvent); + + samlSecurityToken.addTokenUsage(SecurityToken.TokenUsage.Signature); + samlTokenSecurityEvent = new SamlTokenSecurityEvent(); + samlTokenSecurityEvent.setSecurityToken(samlSecurityToken); + inboundWSSecurityContext.registerSecurityEvent(samlTokenSecurityEvent); + + SignatureValueSecurityEvent signatureValueSecurityEvent = new SignatureValueSecurityEvent(); + inboundWSSecurityContext.registerSecurityEvent(signatureValueSecurityEvent); + + SignedElementSecurityEvent signedTimestampElementSecurityEvent = new SignedElementSecurityEvent(samlSecurityToken, true, protectionOrder); + signedTimestampElementSecurityEvent.setElementPath(timestampPath); + inboundWSSecurityContext.registerSecurityEvent(signedTimestampElementSecurityEvent); + + SignedElementSecurityEvent signedUsernameTokenElementSecurityEvent = new SignedElementSecurityEvent(samlSecurityToken, true, protectionOrder); + signedUsernameTokenElementSecurityEvent.setElementPath(usernameTokenPath); + signedUsernameTokenElementSecurityEvent.setXmlEvent(usernameTokenXmlEvent); + inboundWSSecurityContext.registerSecurityEvent(signedUsernameTokenElementSecurityEvent); + + List<QName> bstPath = new LinkedList<QName>(); + bstPath.addAll(WSSConstants.WSSE_SECURITY_HEADER_PATH); + bstPath.add(WSSConstants.TAG_wsse_BinarySecurityToken); + + XMLEventNS bstTokenXmlEvent = new XMLEventNS(null, null, null); + + SignedElementSecurityEvent bstElementSecurityEvent = new SignedElementSecurityEvent(samlSecurityToken, true, protectionOrder); + bstElementSecurityEvent.setElementPath(bstPath); + bstElementSecurityEvent.setXmlEvent(bstTokenXmlEvent); + inboundWSSecurityContext.registerSecurityEvent(bstElementSecurityEvent); + + SignedElementSecurityEvent samlTokenElementSecurityEvent = new SignedElementSecurityEvent(samlSecurityToken, true, protectionOrder); + samlTokenElementSecurityEvent.setElementPath(samlTokenPath); + samlTokenElementSecurityEvent.setXmlEvent(samlTokenXmlEvent); + inboundWSSecurityContext.registerSecurityEvent(samlTokenElementSecurityEvent); + + List<QName> header1Path = new LinkedList<QName>(); + header1Path.addAll(WSSConstants.SOAP_11_HEADER_PATH); + header1Path.add(new QName("x", "Header1", "x")); + + SignedPartSecurityEvent header1SignedPartSecurityEvent = new SignedPartSecurityEvent(samlSecurityToken, true, protectionOrder); + header1SignedPartSecurityEvent.setElementPath(header1Path); + inboundWSSecurityContext.registerSecurityEvent(header1SignedPartSecurityEvent); + + List<QName> header2Path = new LinkedList<QName>(); + header2Path.addAll(WSSConstants.SOAP_11_HEADER_PATH); + header2Path.add(new QName("x", "Header1", "x")); + + SignedPartSecurityEvent header2SignedPartSecurityEvent = new SignedPartSecurityEvent(samlSecurityToken, true, protectionOrder); + header2SignedPartSecurityEvent.setElementPath(header2Path); + inboundWSSecurityContext.registerSecurityEvent(header2SignedPartSecurityEvent); + + List<QName> bodyPath = new LinkedList<QName>(); + bodyPath.addAll(WSSConstants.SOAP_11_BODY_PATH); + + SignedPartSecurityEvent bodySignedPartSecurityEvent = new SignedPartSecurityEvent(samlSecurityToken, true, protectionOrder); + bodySignedPartSecurityEvent.setElementPath(bodyPath); + inboundWSSecurityContext.registerSecurityEvent(bodySignedPartSecurityEvent); + + X509TokenSecurityEvent x509TokenSecurityEvent = new X509TokenSecurityEvent(); + X509SecurityToken signedEndorsingSupportingToken = getX509Token(WSSConstants.X509V3Token); + x509TokenSecurityEvent.setSecurityToken(signedEndorsingSupportingToken); + signedEndorsingSupportingToken.setElementPath(bstPath); + signedEndorsingSupportingToken.setXMLEvent(bstTokenXmlEvent); + signedEndorsingSupportingToken.addTokenUsage(SecurityToken.TokenUsage.Signature); + inboundWSSecurityContext.registerSecurityEvent(x509TokenSecurityEvent); + + SignatureValueSecurityEvent signature2ValueSecurityEvent = new SignatureValueSecurityEvent(); + inboundWSSecurityContext.registerSecurityEvent(signature2ValueSecurityEvent); + + SignedElementSecurityEvent signatureElementSecurityEvent = new SignedElementSecurityEvent(signedEndorsingSupportingToken, true, protectionOrder); + signatureElementSecurityEvent.setElementPath(signaturePath); + inboundWSSecurityContext.registerSecurityEvent(signatureElementSecurityEvent); + + bstElementSecurityEvent = new SignedElementSecurityEvent(signedEndorsingSupportingToken, true, protectionOrder); + bstElementSecurityEvent.setElementPath(bstPath); + bstElementSecurityEvent.setXmlEvent(bstTokenXmlEvent); + inboundWSSecurityContext.registerSecurityEvent(bstElementSecurityEvent); + + EncryptedPartSecurityEvent header2EncryptedPartSecurityEvent = new EncryptedPartSecurityEvent(samlSecurityToken, true, protectionOrder); + header2EncryptedPartSecurityEvent.setElementPath(header2Path); + inboundWSSecurityContext.registerSecurityEvent(header2EncryptedPartSecurityEvent); + + EncryptedPartSecurityEvent bodyEncryptedPartSecurityEvent = new EncryptedPartSecurityEvent(samlSecurityToken, true, protectionOrder); + bodyEncryptedPartSecurityEvent.setElementPath(bodyPath); + inboundWSSecurityContext.registerSecurityEvent(bodyEncryptedPartSecurityEvent); + + OperationSecurityEvent operationSecurityEvent = new OperationSecurityEvent(); + operationSecurityEvent.setOperation(new QName("definitions")); + inboundWSSecurityContext.registerSecurityEvent(operationSecurityEvent); + return securityEventList; + } + + private X509SecurityToken getX509Token(WSSConstants.TokenType tokenType) throws Exception { + + final KeyStore keyStore = KeyStore.getInstance("jks"); + keyStore.load(this.getClass().getClassLoader().getResourceAsStream("transmitter.jks"), "default".toCharArray()); + + return new X509SecurityToken(tokenType, null, null, null, "", WSSConstants.KeyIdentifierType.THUMBPRINT_IDENTIFIER) { + @Override + protected String getAlias() throws XMLSecurityException { + return "transmitter"; + } + + @Override + public Key getSecretKey(String algorithmURI, XMLSecurityConstants.KeyUsage keyUsage) throws XMLSecurityException { + try { + return keyStore.getKey("transmitter", "default".toCharArray()); + } catch (Exception e) { + throw new XMLSecurityException(e.getMessage(), e); + } + } + + @Override + public PublicKey getPublicKey(String algorithmURI, XMLSecurityConstants.KeyUsage keyUsage) throws XMLSecurityException { + try { + return keyStore.getCertificate("transmitter").getPublicKey(); + } catch (Exception e) { + throw new XMLSecurityException(e.getMessage(), e); + } + } + + @Override + public X509Certificate[] getX509Certificates() throws XMLSecurityException { + Certificate[] certificates; + try { + certificates = keyStore.getCertificateChain("transmitter"); + } catch (Exception e) { + throw new XMLSecurityException(e.getMessage(), e); + } + + X509Certificate[] x509Certificates = new X509Certificate[certificates.length]; + for (int i = 0; i < certificates.length; i++) { + Certificate certificate = certificates[i]; + x509Certificates[i] = (X509Certificate) certificate; + } + return x509Certificates; + } + }; + } +}
Modified: webservices/wss4j/branches/swssf/streaming-ws-security/src/test/java/org/swssf/wss/test/InteroperabilityTest.java URL: http://svn.apache.org/viewvc/webservices/wss4j/branches/swssf/streaming-ws-security/src/test/java/org/swssf/wss/test/InteroperabilityTest.java?rev=1299273&r1=1299272&r2=1299273&view=diff ============================================================================== --- webservices/wss4j/branches/swssf/streaming-ws-security/src/test/java/org/swssf/wss/test/InteroperabilityTest.java (original) +++ webservices/wss4j/branches/swssf/streaming-ws-security/src/test/java/org/swssf/wss/test/InteroperabilityTest.java Sat Mar 10 21:05:21 2012 @@ -73,7 +73,6 @@ public class InteroperabilityTest extend SecurityEvent.Event[] expectedSecurityEvents = new SecurityEvent.Event[]{ SecurityEvent.Event.Operation, SecurityEvent.Event.X509Token, - SecurityEvent.Event.EncryptedKeyToken, SecurityEvent.Event.X509Token, SecurityEvent.Event.SignatureValue, SecurityEvent.Event.AlgorithmSuite, @@ -85,7 +84,6 @@ public class InteroperabilityTest extend SecurityEvent.Event.AlgorithmSuite, SecurityEvent.Event.AlgorithmSuite, SecurityEvent.Event.SignedElement, - SecurityEvent.Event.EncryptedKeyToken, SecurityEvent.Event.EncryptedPart, SecurityEvent.Event.AlgorithmSuite, SecurityEvent.Event.AlgorithmSuite, @@ -130,7 +128,6 @@ public class InteroperabilityTest extend SecurityEvent.Event[] expectedSecurityEvents = new SecurityEvent.Event[]{ SecurityEvent.Event.Operation, SecurityEvent.Event.X509Token, - SecurityEvent.Event.EncryptedKeyToken, SecurityEvent.Event.X509Token, SecurityEvent.Event.SignatureValue, SecurityEvent.Event.AlgorithmSuite, @@ -142,7 +139,6 @@ public class InteroperabilityTest extend SecurityEvent.Event.AlgorithmSuite, SecurityEvent.Event.AlgorithmSuite, SecurityEvent.Event.SignedElement, - SecurityEvent.Event.EncryptedKeyToken, SecurityEvent.Event.EncryptedPart, SecurityEvent.Event.AlgorithmSuite, SecurityEvent.Event.AlgorithmSuite, @@ -188,8 +184,6 @@ public class InteroperabilityTest extend SecurityEvent.Event[] expectedSecurityEvents = new SecurityEvent.Event[]{ SecurityEvent.Event.Operation, SecurityEvent.Event.X509Token, - SecurityEvent.Event.EncryptedKeyToken, - SecurityEvent.Event.EncryptedKeyToken, SecurityEvent.Event.AlgorithmSuite, SecurityEvent.Event.AlgorithmSuite, SecurityEvent.Event.EncryptedElement, @@ -204,7 +198,6 @@ public class InteroperabilityTest extend SecurityEvent.Event.AlgorithmSuite, SecurityEvent.Event.AlgorithmSuite, SecurityEvent.Event.SignedElement, - SecurityEvent.Event.EncryptedKeyToken, SecurityEvent.Event.EncryptedPart, SecurityEvent.Event.AlgorithmSuite, }; @@ -290,11 +283,9 @@ public class InteroperabilityTest extend SecurityEvent.Event.SignatureValue, SecurityEvent.Event.AlgorithmSuite, SecurityEvent.Event.AlgorithmSuite, - SecurityEvent.Event.EncryptedKeyToken, SecurityEvent.Event.AlgorithmSuite, SecurityEvent.Event.AlgorithmSuite, SecurityEvent.Event.SignedElement, - SecurityEvent.Event.EncryptedKeyToken, SecurityEvent.Event.EncryptedPart, SecurityEvent.Event.AlgorithmSuite, SecurityEvent.Event.AlgorithmSuite, @@ -407,12 +398,10 @@ public class InteroperabilityTest extend SecurityEvent.Event[] expectedSecurityEvents = new SecurityEvent.Event[]{ SecurityEvent.Event.Operation, SecurityEvent.Event.X509Token, - SecurityEvent.Event.EncryptedKeyToken, SecurityEvent.Event.X509Token, SecurityEvent.Event.SignatureValue, SecurityEvent.Event.AlgorithmSuite, SecurityEvent.Event.AlgorithmSuite, - SecurityEvent.Event.EncryptedKeyToken, SecurityEvent.Event.AlgorithmSuite, SecurityEvent.Event.AlgorithmSuite, SecurityEvent.Event.EncryptedElement, @@ -423,7 +412,6 @@ public class InteroperabilityTest extend SecurityEvent.Event.AlgorithmSuite, SecurityEvent.Event.AlgorithmSuite, SecurityEvent.Event.SignedElement, - SecurityEvent.Event.EncryptedKeyToken, SecurityEvent.Event.EncryptedPart, SecurityEvent.Event.AlgorithmSuite, }; @@ -624,12 +612,10 @@ public class InteroperabilityTest extend SecurityEvent.Event[] expectedSecurityEvents = new SecurityEvent.Event[]{ SecurityEvent.Event.Operation, SecurityEvent.Event.X509Token, - SecurityEvent.Event.EncryptedKeyToken, SecurityEvent.Event.X509Token, SecurityEvent.Event.SignatureValue, SecurityEvent.Event.AlgorithmSuite, SecurityEvent.Event.AlgorithmSuite, - SecurityEvent.Event.EncryptedKeyToken, SecurityEvent.Event.EncryptedPart, SecurityEvent.Event.AlgorithmSuite, SecurityEvent.Event.AlgorithmSuite, @@ -748,7 +734,6 @@ public class InteroperabilityTest extend SecurityEvent.Event[] expectedSecurityEvents = new SecurityEvent.Event[]{ SecurityEvent.Event.Operation, SecurityEvent.Event.X509Token, - SecurityEvent.Event.EncryptedKeyToken, SecurityEvent.Event.X509Token, SecurityEvent.Event.SignatureValue, SecurityEvent.Event.AlgorithmSuite, @@ -760,7 +745,6 @@ public class InteroperabilityTest extend SecurityEvent.Event.AlgorithmSuite, SecurityEvent.Event.AlgorithmSuite, SecurityEvent.Event.SignedElement, - SecurityEvent.Event.EncryptedKeyToken, SecurityEvent.Event.EncryptedPart, SecurityEvent.Event.AlgorithmSuite, SecurityEvent.Event.AlgorithmSuite, @@ -846,7 +830,6 @@ public class InteroperabilityTest extend SecurityEvent.Event[] expectedSecurityEvents = new SecurityEvent.Event[]{ SecurityEvent.Event.Operation, SecurityEvent.Event.X509Token, - SecurityEvent.Event.EncryptedKeyToken, SecurityEvent.Event.X509Token, SecurityEvent.Event.SignatureValue, SecurityEvent.Event.AlgorithmSuite, @@ -858,7 +841,6 @@ public class InteroperabilityTest extend SecurityEvent.Event.AlgorithmSuite, SecurityEvent.Event.AlgorithmSuite, SecurityEvent.Event.SignedElement, - SecurityEvent.Event.EncryptedKeyToken, SecurityEvent.Event.EncryptedPart, SecurityEvent.Event.AlgorithmSuite, SecurityEvent.Event.AlgorithmSuite,
