Example usage for javax.xml.crypto.dsig SignatureMethod RSA_SHA1

List of usage examples for javax.xml.crypto.dsig SignatureMethod RSA_SHA1

Introduction

In this page you can find the example usage for javax.xml.crypto.dsig SignatureMethod RSA_SHA1.

Prototype

String RSA_SHA1

To view the source code for javax.xml.crypto.dsig SignatureMethod RSA_SHA1.

Click Source Link

Document

The <a href="http://www.w3.org/2000/09/xmldsig#rsa-sha1">RSA-SHA1</a> (PKCS #1) signature method algorithm URI.

Usage

From source file:org.jcp.xml.dsig.internal.dom.DOMSignatureMethod.java

static SignatureMethod unmarshal(Element smElem) throws MarshalException {
    String alg = DOMUtils.getAttributeValue(smElem, "Algorithm");
    if (alg.equals(SignatureMethod.RSA_SHA1)) {
        return new SHA1withRSA(smElem);
    } else if (alg.equals(RSA_SHA256)) {
        return new SHA256withRSA(smElem);
    } else if (alg.equals(RSA_SHA384)) {
        return new SHA384withRSA(smElem);
    } else if (alg.equals(RSA_SHA512)) {
        return new SHA512withRSA(smElem);
    } else if (alg.equals(SignatureMethod.DSA_SHA1)) {
        return new SHA1withDSA(smElem);
    } else if (alg.equals(ECDSA_SHA1)) {
        return new SHA1withECDSA(smElem);
    } else if (alg.equals(ECDSA_SHA256)) {
        return new SHA256withECDSA(smElem);
    } else if (alg.equals(ECDSA_SHA384)) {
        return new SHA384withECDSA(smElem);
    } else if (alg.equals(ECDSA_SHA512)) {
        return new SHA512withECDSA(smElem);
    } else if (alg.equals(SignatureMethod.HMAC_SHA1)) {
        return new DOMHMACSignatureMethod.SHA1(smElem);
    } else if (alg.equals(DOMHMACSignatureMethod.HMAC_SHA256)) {
        return new DOMHMACSignatureMethod.SHA256(smElem);
    } else if (alg.equals(DOMHMACSignatureMethod.HMAC_SHA384)) {
        return new DOMHMACSignatureMethod.SHA384(smElem);
    } else if (alg.equals(DOMHMACSignatureMethod.HMAC_SHA512)) {
        return new DOMHMACSignatureMethod.SHA512(smElem);
    } else {/*w  w  w . j a va 2s  .  c o  m*/
        throw new MarshalException("unsupported SignatureMethod algorithm: " + alg);
    }
}

From source file:org.openehealth.coms.cc.web_frontend.consentcreator.service.DocumentFactory.java

static boolean algEquals(String algURI, String algName) {
    if ((algName.equalsIgnoreCase("DSA") && algURI.equalsIgnoreCase(SignatureMethod.DSA_SHA1))
            || (algName.equalsIgnoreCase("RSA") && algURI.equalsIgnoreCase(SignatureMethod.RSA_SHA1))) {
        return true;
    } else {//  w  w w. j  a  v  a 2 s.co  m
        return false;
    }
}

From source file:org.roda.common.certification.ODFSignatureUtils.java

private static void digitalSign(XMLSignatureFactory factory, List<Reference> referenceList,
        DigestMethod digestMethod, X509Certificate certificate, Document docSignatures, Element rootSignatures,
        Key key) throws MarshalException, XMLSignatureException, NoSuchAlgorithmException,
        InvalidAlgorithmParameterException {

    String signatureId = UUID.randomUUID().toString();
    String signaturePropertyId = UUID.randomUUID().toString();
    CanonicalizationMethod canMethod = factory.newCanonicalizationMethod(CanonicalizationMethod.INCLUSIVE,
            (C14NMethodParameterSpec) null);
    SignatureMethod signMethod = factory.newSignatureMethod(SignatureMethod.RSA_SHA1, null);

    Reference signaturePropertyReference = factory.newReference("#" + signaturePropertyId, digestMethod);
    referenceList.add(signaturePropertyReference);
    SignedInfo si = factory.newSignedInfo(canMethod, signMethod, referenceList);

    KeyInfo ki = getKeyInfo(factory, certificate);
    List<XMLObject> objectList = getXMLObjectList(factory, docSignatures, signatureId, signaturePropertyId);
    XMLSignature signature = factory.newXMLSignature(si, ki, objectList, signatureId, null);
    DOMSignContext signContext = new DOMSignContext(key, rootSignatures);
    signature.sign(signContext);/*from w  w  w. j  a v  a 2  s .co m*/
}

From source file:org.roda.core.plugins.plugins.characterization.ODFSignatureUtils.java

private static void digitalSign(XMLSignatureFactory factory, List<Reference> referenceList,
        DigestMethod digestMethod, X509Certificate certificate, Document docSignatures, Element rootSignatures,
        Key key) throws MarshalException, XMLSignatureException, NoSuchAlgorithmException,
        InvalidAlgorithmParameterException {

    String signatureId = IdUtils.createUUID();
    String signaturePropertyId = IdUtils.createUUID();
    CanonicalizationMethod canMethod = factory.newCanonicalizationMethod(CanonicalizationMethod.INCLUSIVE,
            (C14NMethodParameterSpec) null);
    SignatureMethod signMethod = factory.newSignatureMethod(SignatureMethod.RSA_SHA1, null);

    Reference signaturePropertyReference = factory.newReference("#" + signaturePropertyId, digestMethod);
    referenceList.add(signaturePropertyReference);
    SignedInfo si = factory.newSignedInfo(canMethod, signMethod, referenceList);

    KeyInfo ki = getKeyInfo(factory, certificate);
    List<XMLObject> objectList = getXMLObjectList(factory, docSignatures, signatureId, signaturePropertyId);
    XMLSignature signature = factory.newXMLSignature(si, ki, objectList, signatureId, null);
    DOMSignContext signContext = new DOMSignContext(key, rootSignatures);
    signature.sign(signContext);/*from   www.j ava2s  . co  m*/
}

From source file:org.signserver.module.xades.signer.XAdESSignerUnitTest.java

/**
 * Test signing with signature algorithm SHA1withRSA.
 * //  w  w w  .j a  v  a2  s.  c  o  m
 * @throws Exception
 */
@Test
public void testProcessData_basicSigningRSASHA1() throws Exception {
    testProcessData_basicSigningInternal(KeyType.RSA, "SHA1withRSA", SignatureMethod.RSA_SHA1, "NONE",
            Collections.<String>emptyList(), null, false, false, null, null);
}

From source file:org.warlock.itk.distributionenvelope.Payload.java

/** 
 * Sign the payloadBody as-is. Note that this is going to be encrypted anyway
 * so we avoid any incompatibilities due to canonicalisation, and we don't
 * care if the payloadBody is text, compressed and so on. Re-writes payloadBody
 * with a serialised XML Digital Signature "Signature" element containing an
 * enveloping signature, or throws an exception to signal failure. 
 * /*  w  ww .  j av  a2 s .c o  m*/
 * @param pk
 * @param cert
 * @throws Exception 
 */
private void signPayload(PrivateKey pk, X509Certificate cert) throws Exception {
    if ((pk == null) || (cert == null)) {
        throw new Exception("Null signing material");
    }
    cert.checkValidity();

    XMLSignatureFactory xsf = XMLSignatureFactory.getInstance("DOM");
    Reference ref = null;
    String objectRef = "uuid" + UUID.randomUUID().toString();
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    dbf.setNamespaceAware(true);
    Document doc = null;
    DOMStructure payloadContent = null;
    if (compressed || base64 || !mimeType.contains("xml")) {
        ref = xsf.newReference("#" + objectRef, xsf.newDigestMethod(DigestMethod.SHA1, null));
        doc = dbf.newDocumentBuilder().newDocument();
        payloadContent = new DOMStructure(doc.createTextNode(payloadBody));
    } else {
        Transform t = xsf.newTransform("http://www.w3.org/2001/10/xml-exc-c14n#",
                (TransformParameterSpec) null);
        ref = xsf.newReference("#" + objectRef, xsf.newDigestMethod(DigestMethod.SHA1, null),
                Collections.singletonList(t), null, null);
        doc = dbf.newDocumentBuilder().parse(new InputSource(new StringReader(payloadBody)));
        payloadContent = new DOMStructure(doc.getDocumentElement());
    }
    XMLObject payloadObject = xsf.newXMLObject(Collections.singletonList(payloadContent), objectRef, null,
            null);
    SignedInfo si = xsf.newSignedInfo(
            xsf.newCanonicalizationMethod(CanonicalizationMethod.INCLUSIVE_WITH_COMMENTS,
                    (C14NMethodParameterSpec) null),
            xsf.newSignatureMethod(SignatureMethod.RSA_SHA1, null), Collections.singletonList(ref));

    KeyInfoFactory kif = xsf.getKeyInfoFactory();
    ArrayList<Object> x509content = new ArrayList<Object>();
    x509content.add(cert);
    X509Data xd = kif.newX509Data(x509content);

    KeyInfo ki = kif.newKeyInfo(Collections.singletonList(xd));
    XMLSignature signature = xsf.newXMLSignature(si, ki, Collections.singletonList(payloadObject), null, null);
    DOMSignContext dsc = new DOMSignContext(pk, doc);
    signature.sign(dsc);
    StringWriter sw = new StringWriter();
    StreamResult sr = new StreamResult(sw);
    Transformer tx = TransformerFactory.newInstance().newTransformer();
    tx.transform(new DOMSource(doc), sr);
    if (sw.toString().indexOf("<?xml ") == 0) {
        payloadBody = sw.toString().substring(sw.toString().indexOf("?>") + "?>".length());
    } else {
        payloadBody = sw.toString();
    }
}

From source file:test.be.fedict.eid.applet.model.XmlSignatureServiceBean.java

private String getSignatureMethod(String digestAlgo) {
    if (null == digestAlgo) {
        throw new RuntimeException("digest algo is null");
    }/*from   w  w  w  . j a va2 s  . c  om*/
    if ("SHA-1".equals(digestAlgo)) {
        return SignatureMethod.RSA_SHA1;
    }
    if ("SHA-256".equals(digestAlgo)) {
        return XMLSignature.ALGO_ID_SIGNATURE_RSA_SHA256;
    }
    if ("SHA-512".equals(digestAlgo)) {
        return XMLSignature.ALGO_ID_SIGNATURE_RSA_SHA512;
    }
    if ("SHA-384".equals(digestAlgo)) {
        return XMLSignature.ALGO_ID_SIGNATURE_RSA_SHA384;
    }
    if ("RIPEMD160".equals(digestAlgo)) {
        return XMLSignature.ALGO_ID_SIGNATURE_RSA_RIPEMD160;
    }
    throw new RuntimeException("unsupported sign algo: " + digestAlgo);
}

From source file:test.be.fedict.eid.dss.DigitalSignatureServiceTest.java

private void signDocument(Document document) throws IOException, PKCS11Exception, InterruptedException,
        NoSuchFieldException, IllegalAccessException, InvocationTargetException, NoSuchMethodException,
        KeyStoreException, NoSuchAlgorithmException, CertificateException, UnrecoverableEntryException,
        InvalidAlgorithmParameterException, MarshalException, XMLSignatureException, CardException {
    Messages messages = new Messages(Locale.getDefault());
    PcscEid pcscEid = new PcscEid(new TestView(), messages);
    if (false == pcscEid.isEidPresent()) {
        LOG.debug("insert eID...");
        pcscEid.waitForEidPresent();//from   w  ww . j a  v a 2 s. c  o m
    }
    // PrivateKeyEntry privateKeyEntry = pcscEid.getPrivateKeyEntry();
    PrivateKeyEntry privateKeyEntry = null;
    // TODO: refactor once Commons eID has been released.

    XMLSignatureFactory signatureFactory = XMLSignatureFactory.getInstance("DOM");
    XMLSignContext signContext = new DOMSignContext(privateKeyEntry.getPrivateKey(),
            document.getDocumentElement());
    signContext.putNamespacePrefix(javax.xml.crypto.dsig.XMLSignature.XMLNS, "ds");

    DigestMethod digestMethod = signatureFactory.newDigestMethod(DigestMethod.SHA1, null);
    Reference reference = signatureFactory.newReference("#id", digestMethod);
    SignatureMethod signatureMethod = signatureFactory.newSignatureMethod(SignatureMethod.RSA_SHA1, null);
    CanonicalizationMethod canonicalizationMethod = signatureFactory.newCanonicalizationMethod(
            CanonicalizationMethod.EXCLUSIVE_WITH_COMMENTS, (C14NMethodParameterSpec) null);
    SignedInfo signedInfo = signatureFactory.newSignedInfo(canonicalizationMethod, signatureMethod,
            Collections.singletonList(reference));
    KeyInfoFactory keyInfoFactory = KeyInfoFactory.getInstance();
    List<Object> x509DataObjects = new LinkedList<Object>();
    X509Certificate signingCertificate = (X509Certificate) privateKeyEntry.getCertificate();
    x509DataObjects.add(signingCertificate);
    X509Data x509Data = keyInfoFactory.newX509Data(x509DataObjects);
    List<Object> keyInfoContent = new LinkedList<Object>();
    keyInfoContent.add(x509Data);
    KeyInfo keyInfo = keyInfoFactory.newKeyInfo(keyInfoContent);
    javax.xml.crypto.dsig.XMLSignature xmlSignature = signatureFactory.newXMLSignature(signedInfo, keyInfo);
    xmlSignature.sign(signContext);

    pcscEid.close();
}

From source file:test.unit.be.fedict.eid.applet.service.signer.AbstractXmlSignatureServiceTest.java

@Test
public void testJsr105Signature() throws Exception {
    KeyPair keyPair = PkiTestUtils.generateKeyPair();

    DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
    documentBuilderFactory.setNamespaceAware(true);
    DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
    Document document = documentBuilder.newDocument();
    Element rootElement = document.createElementNS("urn:test", "tns:root");
    rootElement.setAttributeNS(Constants.NamespaceSpecNS, "xmlns:tns", "urn:test");
    document.appendChild(rootElement);//from w  ww  .  java  2  s  .  co  m
    Element dataElement = document.createElementNS("urn:test", "tns:data");
    dataElement.setAttributeNS(null, "Id", "id-1234");
    dataElement.setIdAttribute("Id", true);
    dataElement.setTextContent("data to be signed");
    rootElement.appendChild(dataElement);

    XMLSignatureFactory signatureFactory = XMLSignatureFactory.getInstance("DOM", new XMLDSigRI());

    XMLSignContext signContext = new DOMSignContext(keyPair.getPrivate(), document.getDocumentElement());
    signContext.putNamespacePrefix(javax.xml.crypto.dsig.XMLSignature.XMLNS, "ds");

    DigestMethod digestMethod = signatureFactory.newDigestMethod(DigestMethod.SHA1, null);
    Reference reference = signatureFactory.newReference("#id-1234", digestMethod);
    DOMReference domReference = (DOMReference) reference;
    assertNull(domReference.getCalculatedDigestValue());
    assertNull(domReference.getDigestValue());

    SignatureMethod signatureMethod = signatureFactory.newSignatureMethod(SignatureMethod.RSA_SHA1, null);
    CanonicalizationMethod canonicalizationMethod = signatureFactory.newCanonicalizationMethod(
            CanonicalizationMethod.EXCLUSIVE_WITH_COMMENTS, (C14NMethodParameterSpec) null);
    SignedInfo signedInfo = signatureFactory.newSignedInfo(canonicalizationMethod, signatureMethod,
            Collections.singletonList(reference));

    javax.xml.crypto.dsig.XMLSignature xmlSignature = signatureFactory.newXMLSignature(signedInfo, null);

    DOMXMLSignature domXmlSignature = (DOMXMLSignature) xmlSignature;
    domXmlSignature.marshal(document.getDocumentElement(), "ds", (DOMCryptoContext) signContext);
    domReference.digest(signContext);
    // xmlSignature.sign(signContext);
    // LOG.debug("signed document: " + toString(document));

    Element nsElement = document.createElement("ns");
    nsElement.setAttributeNS(Constants.NamespaceSpecNS, "xmlns:ds", Constants.SignatureSpecNS);
    Node digestValueNode = XPathAPI.selectSingleNode(document, "//ds:DigestValue", nsElement);
    assertNotNull(digestValueNode);
    String digestValueTextContent = digestValueNode.getTextContent();
    LOG.debug("digest value text content: " + digestValueTextContent);
    assertFalse(digestValueTextContent.isEmpty());
}

From source file:test.unit.be.fedict.eid.applet.service.signer.AbstractXmlSignatureServiceTest.java

@Test
public void testJsr105SignatureExternalXML() throws Exception {
    KeyPair keyPair = PkiTestUtils.generateKeyPair();

    DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
    documentBuilderFactory.setNamespaceAware(true);
    DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
    Document document = documentBuilder.newDocument();
    Element rootElement = document.createElementNS("urn:test", "tns:root");
    rootElement.setAttributeNS(Constants.NamespaceSpecNS, "xmlns:tns", "urn:test");
    document.appendChild(rootElement);// w w  w  . j av a 2  s. c  om
    Element dataElement = document.createElementNS("urn:test", "tns:data");
    dataElement.setAttributeNS(null, "Id", "id-1234");
    dataElement.setTextContent("data to be signed");
    rootElement.appendChild(dataElement);

    XMLSignatureFactory signatureFactory = XMLSignatureFactory.getInstance("DOM", new XMLDSigRI());

    XMLSignContext signContext = new DOMSignContext(keyPair.getPrivate(), document.getDocumentElement());
    signContext.setURIDereferencer(new MyURIDereferencer());
    signContext.putNamespacePrefix(javax.xml.crypto.dsig.XMLSignature.XMLNS, "ds");

    DigestMethod digestMethod = signatureFactory.newDigestMethod(DigestMethod.SHA1, null);

    List<Transform> transforms = new LinkedList<Transform>();
    Transform transform = signatureFactory.newTransform(CanonicalizationMethod.INCLUSIVE,
            (TransformParameterSpec) null);
    transforms.add(transform);
    Reference reference = signatureFactory.newReference("/helloworld.xml", digestMethod, transforms, null,
            null);

    DOMReference domReference = (DOMReference) reference;
    assertNull(domReference.getCalculatedDigestValue());
    assertNull(domReference.getDigestValue());

    SignatureMethod signatureMethod = signatureFactory.newSignatureMethod(SignatureMethod.RSA_SHA1, null);
    CanonicalizationMethod canonicalizationMethod = signatureFactory.newCanonicalizationMethod(
            CanonicalizationMethod.EXCLUSIVE_WITH_COMMENTS, (C14NMethodParameterSpec) null);
    SignedInfo signedInfo = signatureFactory.newSignedInfo(canonicalizationMethod, signatureMethod,
            Collections.singletonList(reference));

    javax.xml.crypto.dsig.XMLSignature xmlSignature = signatureFactory.newXMLSignature(signedInfo, null);

    DOMXMLSignature domXmlSignature = (DOMXMLSignature) xmlSignature;
    domXmlSignature.marshal(document.getDocumentElement(), "ds", (DOMCryptoContext) signContext);
    domReference.digest(signContext);
    // xmlSignature.sign(signContext);
    // LOG.debug("signed document: " + toString(document));

    Element nsElement = document.createElement("ns");
    nsElement.setAttributeNS(Constants.NamespaceSpecNS, "xmlns:ds", Constants.SignatureSpecNS);
    Node digestValueNode = XPathAPI.selectSingleNode(document, "//ds:DigestValue", nsElement);
    assertNotNull(digestValueNode);
    String digestValueTextContent = digestValueNode.getTextContent();
    LOG.debug("digest value text content: " + digestValueTextContent);
    assertFalse(digestValueTextContent.isEmpty());
}