All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.sun.xml.wss.core.reference.X509IssuerSerial Maven / Gradle / Ivy

There is a newer version: 4.0.3
Show newest version
/*
 * Copyright (c) 2010, 2020 Oracle and/or its affiliates. All rights reserved.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Distribution License v. 1.0, which is available at
 * http://www.eclipse.org/org/documents/edl-v10.php.
 *
 * SPDX-License-Identifier: BSD-3-Clause
 */

/*
 * $Id: X509IssuerSerial.java,v 1.2 2010-10-21 15:37:14 snajper Exp $
 */

package com.sun.xml.wss.core.reference;

import java.math.BigInteger;
import java.security.cert.X509Certificate;
import java.util.Iterator;
import java.util.logging.Level;
import java.util.logging.Logger;

import jakarta.xml.soap.SOAPElement;
import jakarta.xml.soap.SOAPException;

import org.w3c.dom.Document;

import org.apache.xml.security.keys.content.x509.XMLX509IssuerSerial;
import com.sun.xml.wss.logging.LogDomainConstants;
import com.sun.xml.wss.impl.MessageConstants;
import com.sun.xml.wss.core.ReferenceElement;
import com.sun.xml.wss.impl.XMLUtil;
import com.sun.xml.wss.XWSSecurityException;

/**
 * @author Vishal Mahajan
 */
public class X509IssuerSerial extends ReferenceElement {

    private static Logger log =
        Logger.getLogger(
            LogDomainConstants.WSS_API_DOMAIN,
            LogDomainConstants.WSS_API_DOMAIN_BUNDLE);

    private XMLX509IssuerSerial delegate;
    private X509Certificate cert = null;

    private Document ownerDoc;

    /**
    * Constructor X509IssuerSerial
    *
    * @param element
    */
    public X509IssuerSerial(SOAPElement element)
        throws XWSSecurityException {

        boolean throwAnException = false;
        if (!(element.getLocalName().equals("X509Data") &&
              XMLUtil.inSignatureNS(element))) {
              throwAnException = true;
        }

        SOAPElement issuerSerialElement;
        try {
            issuerSerialElement =
                (SOAPElement) element.getChildElements(
                    soapFactory.createName(
                        "X509IssuerSerial",
                        MessageConstants.DSIG_PREFIX,
                        MessageConstants.DSIG_NS)).next();
        } catch (Exception e) {
            log.log(Level.SEVERE,
                    "WSS0750.soap.exception",
                    new Object[] {"ds:X509IssuerSerial", e.getMessage()}); 
            throw new XWSSecurityException(e);
        }

        Iterator issuerNames;
        try {
            issuerNames =
                issuerSerialElement.getChildElements(
                    soapFactory.createName(
                        "X509IssuerName",
                        MessageConstants.DSIG_PREFIX,
                        MessageConstants.DSIG_NS));
        } catch (SOAPException e) {
            log.log(Level.SEVERE,
                    "WSS0758.soap.exception",
                    new Object[] {"ds:X509IssuerName", e.getMessage()}); 
            throw new XWSSecurityException(e);
        }
        if (!issuerNames.hasNext())
            throwAnException = true;
        SOAPElement issuerNameElement = (SOAPElement) issuerNames.next();
        String issuerName =
            XMLUtil.getFullTextFromChildren(issuerNameElement);

        Iterator serialNumbers;
        try {
            serialNumbers =
                issuerSerialElement.getChildElements(
                    soapFactory.createName(
                        "X509SerialNumber",
                        MessageConstants.DSIG_PREFIX,
                        MessageConstants.DSIG_NS));
        } catch (SOAPException e) {
            log.log(Level.SEVERE,
                    "WSS0758.soap.exception",
                    new Object[] {"ds:X509SerialNumber", e.getMessage()});
            throw new XWSSecurityException(e);
        }
        if (!serialNumbers.hasNext())
            throwAnException = true;
        SOAPElement serialNumberElement = (SOAPElement) serialNumbers.next();
        String serialNumberString =
            XMLUtil.getFullTextFromChildren(serialNumberElement);
        BigInteger serialNumber = new BigInteger(serialNumberString);

        if (throwAnException) {
            log.log(Level.SEVERE,
                    "WSS0759.error.creating.issuerserial");
            throw new XWSSecurityException(
                "Cannot create X509IssuerSerial object out of given element");
        }
        ownerDoc = element.getOwnerDocument();
        delegate =
            new XMLX509IssuerSerial(ownerDoc, issuerName, serialNumber);
    }

    /**
    * Constructor X509IssuerSerial
    *
    * @param doc
    * @param X509IssuerName
    * @param X509SerialNumber
    */
    public X509IssuerSerial(
        Document doc,
        String X509IssuerName,
        BigInteger X509SerialNumber) {
        delegate =
            new XMLX509IssuerSerial(doc, X509IssuerName, X509SerialNumber);
        ownerDoc = doc;
    }

    /**
     * Constructor X509IssuerSerial
     *
     * @param doc
     * @param X509IssuerName
     * @param X509SerialNumber
     */
    public X509IssuerSerial(
        Document doc,
        String X509IssuerName,
        String X509SerialNumber) {
        delegate =
            new XMLX509IssuerSerial(doc, X509IssuerName, X509SerialNumber);
        ownerDoc = doc;
    }

    /**
     * Constructor X509IssuerSerial
     *
     * @param doc
     * @param X509IssuerName
     * @param X509SerialNumber
     */
    public X509IssuerSerial(
        Document doc,
        String X509IssuerName,
        int X509SerialNumber) {
        delegate =
            new XMLX509IssuerSerial(doc, X509IssuerName, X509SerialNumber);
        ownerDoc = doc;
    }

    /**
     * Constructor X509IssuerSerial
     *
     * @param doc
     * @param x509certificate
     */
    public X509IssuerSerial(Document doc, X509Certificate x509certificate) {
        delegate = new XMLX509IssuerSerial(doc, x509certificate);
        ownerDoc = doc;
    }

    /**
     * Method getSerialNumber
     *
     * @throws XWSSecurityException
     */
    public BigInteger getSerialNumber() throws XWSSecurityException {
        try {
            return delegate.getSerialNumber();
        } catch (Exception e) {
            throw new XWSSecurityException(e);
        }
    }

    /**
     * Method getSerialNumberInteger
     *
     * @throws XWSSecurityException
     */
    public int getSerialNumberInteger() throws XWSSecurityException {
        try {
            return delegate.getSerialNumberInteger();
        } catch (Exception e) {
            throw new XWSSecurityException(e);
        }
    }

    /**
     * Method getIssuerName
     *
     * @throws XWSSecurityException
     */
    public String getIssuerName() throws XWSSecurityException {
        try {
            return delegate.getIssuerName();
        } catch (Exception e) {
            log.log(Level.SEVERE,
                "WSS0763.exception.issuername", 
                new Object[] {e.getMessage()});             
            throw new XWSSecurityException(e);
        }
    }

    public SOAPElement getAsSoapElement() throws XWSSecurityException {
        try {
            SOAPElement issuerSerialElement = (SOAPElement) delegate.getElement();
            SOAPElement x509DataElement =
                (SOAPElement) ownerDoc.createElementNS(
                    MessageConstants.DSIG_NS,
                    MessageConstants.DSIG_PREFIX + ":X509Data");
            x509DataElement.addNamespaceDeclaration(
                MessageConstants.DSIG_PREFIX, MessageConstants.DSIG_NS);
            x509DataElement.addChildElement(issuerSerialElement);
            setSOAPElement(x509DataElement);
            return x509DataElement;
        } catch (Exception e) {
            log.log(Level.SEVERE,
                    "WSS0750.soap.exception",
                    new Object[] {"ds:X509IssuerSerial", e.getMessage()}); 
            throw new XWSSecurityException(e);
        }
    }
    
    public void setCertificate(X509Certificate cert){
        this.cert = cert;
    }
 
    public X509Certificate getCertificate(){
        return cert;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy