Package com.sun.xml.ws.security.opt.crypto.jaxb

Source Code of com.sun.xml.ws.security.opt.crypto.jaxb.JAXBSignatureFactory

/*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
*
* Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
*
* The contents of this file are subject to the terms of either the GNU
* General Public License Version 2 only ("GPL") or the Common Development
* and Distribution License("CDDL") (collectively, the "License").  You
* may not use this file except in compliance with the License.  You can
* obtain a copy of the License at
* https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
* or packager/legal/LICENSE.txt.  See the License for the specific
* language governing permissions and limitations under the License.
*
* When distributing the software, include this License Header Notice in each
* file and include the License file at packager/legal/LICENSE.txt.
*
* GPL Classpath Exception:
* Oracle designates this particular file as subject to the "Classpath"
* exception as provided by Oracle in the GPL Version 2 section of the License
* file that accompanied this code.
*
* Modifications:
* If applicable, add the following below the License Header, with the fields
* enclosed by brackets [] replaced by your own identifying information:
* "Portions Copyright [year] [name of copyright owner]"
*
* Contributor(s):
* If you wish your version of this file to be governed by only the CDDL or
* only the GPL Version 2, indicate your decision by adding "[Contributor]
* elects to include this software in this distribution under the [CDDL or GPL
* Version 2] license."  If you don't indicate a single choice of license, a
* recipient has the option to distribute your version of this file under
* either the CDDL, the GPL Version 2 or to extend the choice of license to
* its licensees as provided above.  However, if you add GPL Version 2 code
* and therefore, elected the GPL Version 2 license, then the option applies
* only if the new code is made subject to such option by the copyright
* holder.
*/

/*
* JAXBSignatureFactory.java
*
* Created on February 2, 2006, 12:48 PM
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/

package com.sun.xml.ws.security.opt.crypto.jaxb;


import com.sun.xml.ws.security.opt.impl.util.JAXBUtil;
import com.sun.xml.ws.security.opt.crypto.dsig.Signature;
import com.sun.xml.ws.security.opt.crypto.dsig.Transforms;
import com.sun.xml.ws.security.opt.crypto.dsig.keyinfo.DSAKeyValue;
import com.sun.xml.ws.security.opt.crypto.dsig.keyinfo.KeyName;
import com.sun.xml.ws.security.opt.crypto.dsig.keyinfo.KeyValue;
import com.sun.xml.ws.security.opt.crypto.dsig.keyinfo.PGPData;
import com.sun.xml.ws.security.opt.crypto.dsig.keyinfo.RSAKeyValue;
import com.sun.xml.ws.security.opt.crypto.dsig.keyinfo.RetrievalMethod;
import com.sun.xml.ws.security.opt.crypto.dsig.keyinfo.SPKIData;
import com.sun.xml.ws.security.opt.crypto.dsig.keyinfo.X509Data;
import com.sun.xml.ws.security.opt.crypto.dsig.keyinfo.X509IssuerSerial;
import java.math.BigInteger;
import java.security.InvalidAlgorithmParameterException;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.crypto.Data;
import javax.xml.crypto.MarshalException;
import javax.xml.crypto.URIDereferencer;
import javax.xml.crypto.XMLStructure;
import javax.xml.crypto.dsig.CanonicalizationMethod;
import javax.xml.crypto.dsig.DigestMethod;
import javax.xml.crypto.dsig.Manifest;
import javax.xml.crypto.dsig.Reference;
import javax.xml.crypto.dsig.SignatureMethod;
import javax.xml.crypto.dsig.SignatureProperties;
import javax.xml.crypto.dsig.SignatureProperty;
import javax.xml.crypto.dsig.SignedInfo;
import javax.xml.crypto.dsig.Transform;
import javax.xml.crypto.dsig.XMLObject;
import javax.xml.crypto.dsig.XMLSignature;
import javax.xml.crypto.dsig.XMLValidateContext;
import javax.xml.crypto.dsig.keyinfo.KeyInfo;
import javax.xml.crypto.dsig.spec.C14NMethodParameterSpec;
import javax.xml.crypto.dsig.spec.DigestMethodParameterSpec;
import javax.xml.crypto.dsig.spec.SignatureMethodParameterSpec;
import javax.xml.crypto.dsig.spec.TransformParameterSpec;

/**
*
* @author Abhijit Das
*/
public class JAXBSignatureFactory extends javax.xml.crypto.dsig.XMLSignatureFactory {
   
    private static JAXBSignatureFactory instance = null;
   
    /** Creates a new instance of JAXBSignatureFactory */
    private JAXBSignatureFactory() {
    }

    public static JAXBSignatureFactory newInstance() {
        if ( instance == null )
            instance = new JAXBSignatureFactory();
       
        return instance;
    }
   
    public JAXBContext getJAXBContext() throws JAXBException{
        return JAXBUtil.getJAXBContext();
    }
   
    /**
     * Creates an XMLSignature and initializes it with the contents of
     * the specified SignedInfo and KeyInfo objects.
     *
     * @param signedInfo - signed info
     * @param keyInfo - key info (may be null)
     *
     * @return XMLSignature
     */
    public XMLSignature newXMLSignature(SignedInfo signedInfo, KeyInfo keyInfo) {
        if ( signedInfo == null ) {
            throw new NullPointerException("SignedInfo can not be null");
        }
        Signature signature = new Signature();
        signature.setKeyInfo((com.sun.xml.ws.security.opt.crypto.dsig.keyinfo.KeyInfo) keyInfo);
        signature.setSignedInfo((com.sun.xml.ws.security.opt.crypto.dsig.SignedInfo) signedInfo);
        return signature;
    }

    /**
     * Creates an XMLSignature and initializes it with the specified parameters.
     *
     * @param signedInfo - the Signed Info
     * @param keyInfo - ths key info (may be null)
     * @param objects - a list of XMLObjects (may be null)
     * @param id - the id (may be null)
     * @param type - the type (may be null)
     *
     * @return XMLSignature
     *
     */
    @SuppressWarnings("unchecked")
    public XMLSignature newXMLSignature(SignedInfo signedInfo, KeyInfo keyInfo, List objects, String id, String type) {
        Signature signature = (Signature) newXMLSignature(signedInfo, keyInfo);
        signature.setId(id);
        signature.setType(type);
        signature.setObjects(objects);
        return signature;
    }

    /**
     *
     * Creates a Reference with the specified URI and digest method.
     *
     * @param uri
     * @param digestMethod
     *
     * @return Reference
     *
     */
    public Reference newReference(String uri, DigestMethod digestMethod) {
        if ( digestMethod == null ) {
            throw new NullPointerException("Digest method can not be null");
        }
        com.sun.xml.ws.security.opt.crypto.dsig.Reference ref = new com.sun.xml.ws.security.opt.crypto.dsig.Reference();
        ref.setURI(uri);
        ref.setDigestMethod((com.sun.xml.ws.security.opt.crypto.dsig.DigestMethod) digestMethod);
        return ref;
    }

    /**
     * Creates a Reference with the specified parameters
     *
     * @param uri
     * @param digestMethod
     * @param transforms
     * @param type
     * @param id
     * @return Reference
     */
    @SuppressWarnings("unchecked")
    public Reference newReference(String uri, DigestMethod digestMethod, List transforms, String type, String id) {
        com.sun.xml.ws.security.opt.crypto.dsig.Reference ref = (com.sun.xml.ws.security.opt.crypto.dsig.Reference) newReference(uri, digestMethod);
        ref.setType(type);
        ref.setId(id);
       
        Transforms transfrormList = new Transforms();
        transfrormList.setTransform(transforms);
       
        ref.setTransforms(transfrormList);
        return ref;
    }

    /**
     *
     * Creates a Reference with the specified parameters 
     *
     * @param uri
     * @param digestMethod
     * @param transforms
     * @param type
     * @param id
     * @param digestValue
     * @return Reference
     */
    public Reference newReference(String uri, DigestMethod digestMethod, List transforms, String type, String id, byte[] digestValue) {
        if ( digestMethod == null ) {
            throw new NullPointerException("DigestMethod can not be null");
        } else if (digestValue == null ) {
            throw new NullPointerException("Digest value can not be null");
        }
       
        com.sun.xml.ws.security.opt.crypto.dsig.Reference ref = (com.sun.xml.ws.security.opt.crypto.dsig.Reference) newReference(uri, digestMethod, transforms, type, id);
        ref.setDigestValue(digestValue);
        return ref;
    }

    /**
     *
     * Creates a Reference with the specified parameters
     *
     * @param string
     * @param digestMethod
     * @param list
     * @param data
     * @param list0
     * @param string0
     * @param string1
     * @return Reference
     */
    public Reference newReference(String string, DigestMethod digestMethod, List list, Data data, List list0, String string0, String string1) {
        throw new UnsupportedOperationException("Not yet suported");
    }

    /**
     *
     * Creates a SignedInfo with the specified parameters
     *
     * @param canonicalizationMethod
     * @param signatureMethod
     * @param references
     * @return SignedInfo
     */
    @SuppressWarnings("unchecked")
    public SignedInfo newSignedInfo(CanonicalizationMethod canonicalizationMethod, SignatureMethod signatureMethod, List references) {
       
        if ( canonicalizationMethod == null ) {
            throw new NullPointerException("Canonicalization Method can not be null");
        } else if ( signatureMethod == null ) {
            throw new NullPointerException("Signature Method can not be null");
        } else if ( references == null || references.size() == 0 ) {
            throw new NullPointerException("References can not be null");
        }
       
        com.sun.xml.ws.security.opt.crypto.dsig.SignedInfo signedInfo = new com.sun.xml.ws.security.opt.crypto.dsig.SignedInfo();
        signedInfo.setCanonicalizationMethod((com.sun.xml.ws.security.opt.crypto.dsig.CanonicalizationMethod) canonicalizationMethod);
        signedInfo.setSignatureMethod((com.sun.xml.ws.security.opt.crypto.dsig.SignatureMethod) signatureMethod);
        signedInfo.setReference(references);
       
        return signedInfo;
    }

    /**
     *
     * Creates a SignedInfo with the specified parameters
     *
     * @param canonicalizationMethod
     * @param signatureMethod
     * @param references
     * @param id
     * @return SignedInfo
     */
    public SignedInfo newSignedInfo(CanonicalizationMethod canonicalizationMethod, SignatureMethod signatureMethod, List references, String id) {
        com.sun.xml.ws.security.opt.crypto.dsig.SignedInfo signedInfo =
                (com.sun.xml.ws.security.opt.crypto.dsig.SignedInfo) newSignedInfo(canonicalizationMethod, signatureMethod, references);
        signedInfo.setId(id);
        return signedInfo;
    }

    /**
     *
     * Creates a XMLObject with the specified parameters
     *
     * @param content
     * @param id
     * @param mime
     * @param encoding
     * @return XMLObject
     */
    public XMLObject newXMLObject(List content, String id, String mime, String encoding) {
        com.sun.xml.ws.security.opt.crypto.dsig.XMLObject xmlObject =
                new com.sun.xml.ws.security.opt.crypto.dsig.XMLObject();
        xmlObject.setEncoding(encoding);
        xmlObject.setMimeType(mime);
        xmlObject.setId(id);
        xmlObject.setContent(content);
        return xmlObject;
    }

    /**
     *
     * Creates a Manifest with the specified parameters
     *
     * @param list
     * @return Manifest
     */
    public Manifest newManifest(List list) {
        return null;
    }

    /**
     * Creates a Manifest with the specified parameters
     * @param list
     * @param string
     * @return Manifest
     */
    public Manifest newManifest(List list, String string) {
        return null;
    }

    /**
     * Creates a SignatureProperty with the specified parameters
     * @param list
     * @param string
     * @param string0
     * @return SignatureProperty
     */
    public SignatureProperty newSignatureProperty(List list, String string, String string0) {
        return null;
    }

    /**
     * Creates a SignatureProperties with the specified parameters
     * @param list
     * @param string
     * @return SignatureProperties
     */
    public SignatureProperties newSignatureProperties(List list, String string) {
        return null;
    }

    /**
     * Creates a DigestMethod with the specified parameters
     * @param algorithm
     * @param digestMethodParameterSpec
     * @throws java.security.NoSuchAlgorithmException
     * @throws java.security.InvalidAlgorithmParameterException
     * @return DigestMethod
     */
    public DigestMethod newDigestMethod(String algorithm, DigestMethodParameterSpec digestMethodParameterSpec) throws NoSuchAlgorithmException, InvalidAlgorithmParameterException {
        if ( algorithm == null ) {
            throw new NullPointerException("Digest algorithm can not be null");
        }
        com.sun.xml.ws.security.opt.crypto.dsig.DigestMethod digestMethod =
                new com.sun.xml.ws.security.opt.crypto.dsig.DigestMethod();
        digestMethod.setParameterSpec(digestMethodParameterSpec);
        digestMethod.setAlgorithm(algorithm);
        return digestMethod;
    }

    /**
     * Creates a SignatureMethod with the specified parameters
     * @param algorithm
     * @param signatureMethodParameterSpec
     * @throws java.security.NoSuchAlgorithmException
     * @throws java.security.InvalidAlgorithmParameterException
     * @return SignatureMethod
     */
    public SignatureMethod newSignatureMethod(String algorithm, SignatureMethodParameterSpec signatureMethodParameterSpec) throws NoSuchAlgorithmException, InvalidAlgorithmParameterException {
        if ( algorithm == null ) {
            throw new NullPointerException("Signature Method algorithm can not be null");
        }
       
        com.sun.xml.ws.security.opt.crypto.dsig.SignatureMethod signatureMethod =
                new com.sun.xml.ws.security.opt.crypto.dsig.SignatureMethod();
        signatureMethod.setAlgorithm(algorithm);
        if ( signatureMethodParameterSpec != null )
            signatureMethod.setParameter(signatureMethodParameterSpec);
        return signatureMethod;
    }

    /**
     * Creates a Transform with the specified parameters
     * @param algorithm
     * @param transformParameterSpec
     * @throws java.security.NoSuchAlgorithmException
     * @throws java.security.InvalidAlgorithmParameterException
     * @return Transforms
     */
    public Transform newTransform(String algorithm, TransformParameterSpec transformParameterSpec) throws NoSuchAlgorithmException, InvalidAlgorithmParameterException {
        com.sun.xml.ws.security.opt.crypto.dsig.Transform transform =
                new com.sun.xml.ws.security.opt.crypto.dsig.Transform();
        transform.setAlgorithm(algorithm);
        transform.setParameterSpec(transformParameterSpec);
        return transform;
    }

    /**
     * Creates a Transform with the specified parameters
     * @param algorithm
     * @param xMLStructure
     * @throws java.security.NoSuchAlgorithmException
     * @throws java.security.InvalidAlgorithmParameterException
     * @return Transform
     */
    @SuppressWarnings("unchecked")
    public Transform newTransform(String algorithm, XMLStructure xMLStructure) throws NoSuchAlgorithmException, InvalidAlgorithmParameterException {
        if ( algorithm == null ) {
            throw new NullPointerException("Algorithm can not be null");
        }
        com.sun.xml.ws.security.opt.crypto.dsig.Transform transform =
                new com.sun.xml.ws.security.opt.crypto.dsig.Transform();
        transform.setAlgorithm(algorithm);
       
        List content = new ArrayList();
        content.add(((JAXBStructure)xMLStructure).getJAXBElement());
       
        transform.setContent(content);
        return transform;
    }

    /**
     * Creates a CanonicalizationMethod with the specified parameters
     * @param algorithm
     * @param c14NMethodParameterSpec
     * @throws java.security.NoSuchAlgorithmException
     * @throws java.security.InvalidAlgorithmParameterException
     * @return CanonicalizationMethod
     */
    public CanonicalizationMethod newCanonicalizationMethod(String algorithm, C14NMethodParameterSpec c14NMethodParameterSpec) throws NoSuchAlgorithmException, InvalidAlgorithmParameterException {
        com.sun.xml.ws.security.opt.crypto.dsig.CanonicalizationMethod canonicalizationMethod =
                new com.sun.xml.ws.security.opt.crypto.dsig.CanonicalizationMethod();
        canonicalizationMethod.setAlgorithm(algorithm);
        canonicalizationMethod.setParameterSpec(c14NMethodParameterSpec);
        return canonicalizationMethod;
    }

    /**
     * Creates a CanonicalizationMethod with the specified parameters
     * @param algorithm
     * @param xMLStructure
     * @throws java.security.NoSuchAlgorithmException
     * @throws java.security.InvalidAlgorithmParameterException
     * @return CanonicalizationMethod
     */
    @SuppressWarnings("unchecked")
    public CanonicalizationMethod newCanonicalizationMethod(String algorithm, XMLStructure xMLStructure) throws NoSuchAlgorithmException, InvalidAlgorithmParameterException {
        com.sun.xml.ws.security.opt.crypto.dsig.CanonicalizationMethod canonicalizationMethod =
                new com.sun.xml.ws.security.opt.crypto.dsig.CanonicalizationMethod();
        canonicalizationMethod.setAlgorithm(algorithm);
        if ( xMLStructure != null ) {
            List content = new ArrayList();
            content.add(xMLStructure);
            canonicalizationMethod.setContent(content);
        }
        return canonicalizationMethod;
    }
    @SuppressWarnings("unchecked")
    public KeyInfo newKeyInfo(List content){
        com.sun.xml.ws.security.opt.crypto.dsig.keyinfo.KeyInfo ki = new com.sun.xml.ws.security.opt.crypto.dsig.keyinfo.KeyInfo();
        ki.setContent(content);
        return ki;
    }
    /**
     * Creates a DSAKeyValue with the specified parameters
     * @param p
     * @param q
     * @param g
     * @param y
     * @param j
     * @param seed
     * @param pgenCounter
     * @return DSAKeyValue
     */
    public DSAKeyValue newDSAKeyValue(
            byte[] p,
            byte[] q,
            byte[] g,
            byte[] y,
            byte[] j,
            byte[] seed,
            byte[] pgenCounter) {
       
        DSAKeyValue dsaKeyValue = new DSAKeyValue();
        dsaKeyValue.setP(p);
        dsaKeyValue.setQ(q);
        dsaKeyValue.setG(g);
        dsaKeyValue.setY(y);
        dsaKeyValue.setJ(j);
        dsaKeyValue.setSeed(seed);
        dsaKeyValue.setPgenCounter(pgenCounter);
       
        return dsaKeyValue;
    }
   
    /**
     * Creates a KeyInfo with the specified parameters
     * @param id
     * @param content
     * @return KeyInfo
     */
    @SuppressWarnings("unchecked")
    public com.sun.xml.ws.security.opt.crypto.dsig.keyinfo.KeyInfo newKeyInfo (String id, List content) {
        com.sun.xml.ws.security.opt.crypto.dsig.keyinfo.KeyInfo keyInfo = new com.sun.xml.ws.security.opt.crypto.dsig.keyinfo.KeyInfo();
        keyInfo.setId(id);
        keyInfo.setContent(content);
        return keyInfo;
    }
   
    /**
     * Creates a KeyName with the specified parameters
     * @param name
     * @return KeyName
     */
    public KeyName newKeyName(String name) {
        KeyName keyName = new KeyName();
        keyName.setKeyName(name);
        return keyName;
    }
   
    /**
     * Creates a KeyValue with the specified parameters
     * @param content
     * @return KeyValue
     */
    @SuppressWarnings("unchecked")
    public KeyValue newKeyValue(List content) {
        KeyValue keyValue = new KeyValue();
        keyValue.setContent(content);
        return keyValue;
    }
   
   
   
    /**
     * Creates a PGPData with the specified parameters
     * @param content
     * @return PGPData
     */
    @SuppressWarnings("unchecked")
    public PGPData newPGPData(List content) {
        PGPData pgpData = new PGPData();
        pgpData.setContent(content);
        return pgpData;
    }
   
    /**
     * Creates a RSAKeyValue with the specified parameters
     * @param modulas
     * @param exponent
     * @return RSAKeyValue
     */
    public RSAKeyValue newRSAKeyValue(byte[] modulas, byte[] exponent) {
        RSAKeyValue rsaKeyValue = new RSAKeyValue();
        rsaKeyValue.setExponent(exponent);
        rsaKeyValue.setModulus(modulas);
        return rsaKeyValue;
    }
   
    /**
     * Creates a RetrievalMethod with the specified parameters
     * @param transforms
     * @param type
     * @param uri
     * @return RetrievalMethod
     */
    public RetrievalMethod newRetrievalMethod(Transforms transforms, String type, String uri) {
        RetrievalMethod rm = new RetrievalMethod();
        rm.setTransforms(transforms);
        rm.setType(type);
        rm.setURI(uri);
        return rm;
    }
   
    /**
     * Creates a SPKIData with the specified parameters
     * @param spkiSexpAndAny
     * @return SPKIData
     */
    @SuppressWarnings("unchecked")
    public SPKIData newSPKIData(List spkiSexpAndAny) {
        SPKIData spkiData = new SPKIData();
        spkiData.setSpkiSexpAndAny(spkiSexpAndAny);
        return spkiData;
    }
   
    /**
     * Creates a X509Data with the specified parameters
     * @param content
     * @return X509Data
     */
    @SuppressWarnings("unchecked")
    public X509Data newX509Data(List content) {
        X509Data x509Data = new X509Data();
        x509Data.setX509IssuerSerialOrX509SKIOrX509SubjectName(content);
        return x509Data;
    }
   
    /**
     * Creates a X509IssuerSerial with the specified parameters
     * @param issuer
     * @param serialno
     * @return X509IssuerSerial
     */
    public X509IssuerSerial newX509IssuerSerial(String issuer, BigInteger serialno) {
        X509IssuerSerial x509IssuerSerial = new X509IssuerSerial();
        x509IssuerSerial.setX509IssuerName(issuer);
        x509IssuerSerial.setX509SerialNumber(serialno);
        return x509IssuerSerial;
    }
   
    /**
     *
     * @param xMLValidateContext
     * @throws javax.xml.crypto.MarshalException
     * @return
     */
    public XMLSignature unmarshalXMLSignature(XMLValidateContext xMLValidateContext) throws MarshalException {
        return null;
    }

    /**
     *
     * @param xMLStructure
     * @throws javax.xml.crypto.MarshalException
     * @return
     */
    public XMLSignature unmarshalXMLSignature(XMLStructure xMLStructure) throws MarshalException {
        return null;
    }

    /**
     *
     * @param string
     * @return
     */
    public boolean isFeatureSupported(String string) {
        return false;
    }

    /**
     *
     * @return
     */
    public URIDereferencer getURIDereferencer() {
        return null;
    }
   
}
TOP

Related Classes of com.sun.xml.ws.security.opt.crypto.jaxb.JAXBSignatureFactory

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.