/* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * * Copyright (c) 2006 Sun Microsystems Inc. All Rights Reserved * * The contents of this file are subject to the terms * of the Common Development and Distribution License * (the License). You may not use this file except in * compliance with the License. * * You can obtain a copy of the License at * https://opensso.dev.java.net/public/CDDLv1.0.html or * opensso/legal/CDDLv1.0.txt * See the License for the specific language governing * permission and limitations under the License. * * When distributing Covered Code, include this CDDL * Header Notice in each file and include the License file * at opensso/legal/CDDLv1.0.txt. * If applicable, add the following below the CDDL Header, * with the fields enclosed by brackets [] replaced by * your own identifying information: * "Portions Copyrighted [year] [name of copyright owner]" * * $Id: NewEncryptedIDImpl.java,v 1.2 2008/06/25 05:48:00 qcheng Exp $ * * Portions copyright 2014-2015 ForgeRock AS. */ package com.sun.identity.saml2.protocol.impl; import java.security.PrivateKey; import java.util.Set; import org.w3c.dom.Document; import org.w3c.dom.Element; import com.sun.identity.shared.xml.XMLUtils; import com.sun.identity.saml2.common.SAML2Exception; import com.sun.identity.saml2.common.SAML2SDKUtils; import com.sun.identity.saml2.assertion.impl.EncryptedElementImpl; import com.sun.identity.saml2.protocol.NewEncryptedID; import com.sun.identity.saml2.protocol.NewID; import com.sun.identity.saml2.protocol.ProtocolFactory; import com.sun.identity.saml2.xmlenc.EncManager; /** * Java content class for NewEncryptedID element declaration. *
The following schema fragment specifies the expected * content contained within this java content object. *
*
* <element name="NewEncryptedID" * type="{urn:oasis:names:tc:SAML:2.0:assertion}EncryptedElementType"/> **/ public class NewEncryptedIDImpl extends EncryptedElementImpl implements NewEncryptedID { public final String elementName = "NewEncryptedID"; private NewID newID = null; // used by the constructors. private void parseElement(Element element) throws SAML2Exception { // make sure that the input xml block is not null if (element == null) { if (SAML2SDKUtils.debug.messageEnabled()) { SAML2SDKUtils.debug.message("NewEncryptedIDImpl.parseElement: " + "Input is null."); } throw new SAML2Exception( SAML2SDKUtils.bundle.getString("nullInput")); } // Make sure this is an EncryptedID. String tag = null; tag = element.getLocalName(); if ((tag == null) || (!tag.equals(elementName))) { if (SAML2SDKUtils.debug.messageEnabled()) { SAML2SDKUtils.debug.message("NewEncryptedIDImpl.parseElement: " + "not EncryptedIDImpl."); } throw new SAML2Exception( SAML2SDKUtils.bundle.getString("wrongInput")); } } /** * Constructor to create
NewEncryptedID
Object.
*
* @param element Document Element of
* NewEncryptedID object.
* @throws SAML2Exception
* if NewEncryptedID cannot be created.
*/
public NewEncryptedIDImpl(Element element)
throws SAML2Exception {
parseElement(element);
xmlString = XMLUtils.print(element);
}
/**
* Constructor to create NewEncryptedID
Object.
*
* @param xmlString XML Representation of
* the NewEncryptedID object.
* @throws SAML2Exception
* if NewEncryptedID cannot be created.
*/
public NewEncryptedIDImpl(String xmlString)
throws SAML2Exception {
Document doc = XMLUtils.toDOMDocument(xmlString, SAML2SDKUtils.debug);
if (doc == null) {
throw new SAML2Exception(
SAML2SDKUtils.bundle.getString("errorObtainingElement"));
}
parseElement(doc.getDocumentElement());
this.xmlString = xmlString;
}
@Override
public NewID decrypt(Set privateKeys) throws SAML2Exception {
Element el = EncManager.getEncInstance().decrypt(xmlString, privateKeys);
SAML2SDKUtils.decodeXMLToDebugLog("NewEncryptedIDImpl.decrypt: ", el);
return ProtocolFactory.getInstance().createNewID(el);
}
}