Package org.apache.xml.security.signature

Examples of org.apache.xml.security.signature.XMLSignature


   public void sign(char[] password) throws IOException {

      try {
         this.removeOldSignatures();

         XMLSignature signature =
            new XMLSignature(this._doc, "", XMLSignature.ALGO_ID_MAC_HMAC_SHA1);

         this._constructionElement.appendChild(signature.getElement());
         XMLUtils.addReturnToElement(this);

         Transforms enveloped = new Transforms(this._doc);

         enveloped.addTransform(Transforms.TRANSFORM_ENVELOPED_SIGNATURE);
         signature.addDocument("", enveloped);

         SecretKey secretKey = this.generateKeyFromPass(signature, password);

         signature.sign(secretKey);
      } catch (XMLSignatureException ex) {
         throw new IOException(ex.getMessage());
      } catch (XMLSecurityException ex) {
         throw new IOException(ex.getMessage());
      }
View Full Code Here


         if (signatureElement == null) {
            throw new IOException(
               "There must be exactly one ds:Signature in the KeyStore");
         }

         XMLSignature signature = new XMLSignature(signatureElement,
                                                   "memory://");

         if (signature.getSignedInfo().getLength() != 1) {
            throw new IOException(
               "ds:Signature/ds:getSignedInfo must contain exactly one ds:Reference but it was "
               + signature.getSignedInfo().getLength());
         }

         Reference reference = signature.getSignedInfo().item(0);

         if (!reference.getURI().equals("")) {
            throw new IOException("ds:Reference/@URI!=\"\"");
         }

         Transforms transforms = reference.getTransforms();

         if ((transforms == null) || (transforms.getLength() != 1)) {
            throw new IOException(
               "There must be exactly one EnvelopedSignature Transform");
         }

         Transform transform = transforms.item(0);

         if (!transform.getURI()
                 .equals(Transforms.TRANSFORM_ENVELOPED_SIGNATURE)) {
            throw new IOException(
               "There must be exactly one EnvelopedSignature Transform");
         }

         SecretKey secretKey = this.generateKeyFromPass(signature, password);

         return signature.checkSignatureValue(secretKey);
      } catch (XMLSignatureException ex) {
         throw new IOException(ex.getMessage());
      } catch (XMLSecurityException ex) {
         throw new IOException(ex.getMessage());
      }
View Full Code Here

            throwFault("Crypto can not be loaded", ex);
        }
        boolean valid = false;
        Reference ref = null;
        try {
            XMLSignature signature = new XMLSignature(signatureElement, "");   
            // See also WSS4J SAMLUtil.getCredentialFromKeyInfo
            KeyInfo keyInfo = signature.getKeyInfo();
           
            X509Certificate cert = keyInfo.getX509Certificate();
            if (cert != null) {
                valid = signature.checkSignatureValue(cert);
            } else {
                PublicKey pk = keyInfo.getPublicKey();
                if (pk != null) {
                    valid = signature.checkSignatureValue(pk);
                }
            }
            // is this call redundant given that signature.checkSignatureValue uses References ?
            ref = getReference(signature);
            Element signedElement = validateReference(root, ref);
View Full Code Here

        }
       
        String id = UUID.randomUUID().toString();
        String referenceId = "#" + id;
       
        XMLSignature sig = null;
        if (enveloping) {
            sig = prepareEnvelopingSignature(doc, id, referenceId, sigAlgo);
        } else if (envelopeQName != null) {
            sig = prepareDetachedSignature(doc, id, referenceId, sigAlgo);
        } else {
            sig = prepareEnvelopedSignature(doc, id, referenceId, sigAlgo);
        }
       
       
        sig.addKeyInfo(issuerCerts[0]);
        sig.addKeyInfo(issuerCerts[0].getPublicKey());
        sig.sign(privateKey);
        return sig.getElement().getOwnerDocument();
    }
View Full Code Here

        newDoc.adoptNode(docEl);
        Element object = newDoc.createElementNS(Constants.SignatureSpecNS, "ds:Object");
        object.appendChild(docEl);
        object.setAttribute("ID", id);
       
        XMLSignature sig = new XMLSignature(newDoc, "", sigAlgo);
        newDoc.appendChild(sig.getElement());
        sig.getElement().appendChild(object);
       
        Transforms transforms = new Transforms(newDoc);
        transforms.addTransform(Transforms.TRANSFORM_C14N_EXCL_OMIT_COMMENTS);
       
        sig.addDocument(referenceId, transforms, digestAlgo);
        return sig;
    }
View Full Code Here

        Element root = newDoc.createElementNS(envelopeQName.getNamespaceURI(),
                envelopeQName.getPrefix() + ":" + envelopeQName.getLocalPart());
        root.appendChild(docEl);
        newDoc.appendChild(root);
       
        XMLSignature sig = new XMLSignature(newDoc, "", sigAlgo);
        root.appendChild(sig.getElement());
       
        Transforms transforms = new Transforms(newDoc);
        transforms.addTransform(Transforms.TRANSFORM_C14N_EXCL_OMIT_COMMENTS);
       
        sig.addDocument(referenceId, transforms, digestAlgo);
        return sig;
    }
View Full Code Here

            String id,
            String referenceURI,
            String sigAlgo) throws Exception {
        doc.getDocumentElement().setAttribute("ID", id);   
   
        XMLSignature sig = new XMLSignature(doc, "", sigAlgo);
        doc.getDocumentElement().appendChild(sig.getElement());
        Transforms transforms = new Transforms(doc);
        transforms.addTransform(Transforms.TRANSFORM_ENVELOPED_SIGNATURE);
        transforms.addTransform(Transforms.TRANSFORM_C14N_EXCL_OMIT_COMMENTS);
       
        sig.addDocument(referenceURI, transforms, digestAlgo);
        return sig;
    }
View Full Code Here

        javax.xml.parsers.DocumentBuilder db = dbf.newDocumentBuilder();
        org.w3c.dom.Document doc = db.newDocument();

        //BaseURI provides the base for the path to referenced content from the signature
        String BaseURI = signatureFile.toURI().toURL().toString();
        XMLSignature sig = new XMLSignature(doc, BaseURI,
            XMLSignature.ALGO_ID_SIGNATURE_RSA_SHA256,
            Transforms.TRANSFORM_C14N11_OMIT_COMMENTS);
       
        sig.setId(role);

        doc.appendChild(sig.getElement());
        {

            Transforms transforms = new Transforms(doc);

            transforms.addTransform(Transforms.TRANSFORM_C14N11_OMIT_COMMENTS);
            addDocuments(sig, documentsList);

            customizeToRole(role);

            //Adding signature properties
            SignatureProperty profile = new SignatureProperty(doc, target,
                SignerConstants.SIGNATURE_PROPERTY_ID_PROFILE);
            Element profileElement = doc
                .createElement(SignerConstants.SIGNATURE_PROPERTY_ID_PROFILE_TAG_NAME);
            profileElement.setAttribute("URI", SignerConstants.PROFILE_URI);
            profile.appendChild(profileElement);

            SignatureProperty role = new SignatureProperty(doc, target,
                SignerConstants.SIGNATURE_PROPERTY_ID_ROLE);
            Element roleElement = doc
                .createElement(SignerConstants.SIGNATURE_PROPERTY_ID_ROLE_TAG_NAME);
            roleElement.setAttribute("URI", roleURI);
            role.appendChild(roleElement);

            SignatureProperty identifier = new SignatureProperty(doc, target,
                SignerConstants.SIGNATURE_PROPERTY_ID_IDENTIFIER);
            Element identifierElement = doc
                .createElement(SignerConstants.SIGNATURE_PROPERTY_ID_IDENTIFIER_TAG_NAME);
            identifierElement.setTextContent(name);
            identifier.appendChild(identifierElement);

            SignatureProperties props = new SignatureProperties(doc);

            props.setXPathNamespaceContext(SignerConstants.XMLNS_DSP,
                SignerConstants.SIGNATURE_PROPERTIES_NAMESPACE);
            props.addSignatureProperty(profile);
            props.addSignatureProperty(role);
            props.addSignatureProperty(identifier);
            ObjectContainer object = new ObjectContainer(doc);
            object.setId("prop");

            object.appendChild(doc.createTextNode("\n"));
            object.appendChild(props.getElement());
            object.appendChild(doc.createTextNode("\n"));

            //Refer the properties section of the signature which needs
            //to be signed too, that include role information.
            sig.appendObject(object);
            sig.addDocument("#prop", transforms,
                SignerConstants.DIGEST_METHOD_ALGORITHM);

            ResourceResolver offlineResolver = null;
            sig.addResourceResolver(offlineResolver);

            {
                X509Certificate cert = (X509Certificate) ks
                    .getCertificate(certificateAlias);
                if(cert.equals(null)){
                    throw new NullPointerException();
                }
                sig.addKeyInfo(cert);
                sig.addKeyInfo(cert.getPublicKey());

                System.out.println("Start signing");
                sig.sign(privateKey);
                System.out.println("Finished signing");
            }

            FileOutputStream f = new FileOutputStream(signatureFile);
View Full Code Here

    * @throws Exception
    */
   public static byte[][] apachesample_xfilter2_1(Document doc)
           throws Exception {

      XMLSignature sig = new XMLSignature(doc, null,
                                          XMLSignature.ALGO_ID_MAC_HMAC_SHA1);

      doc.getDocumentElement().appendChild(sig.getElement());

      Transforms transforms = new Transforms(doc);

      {
         transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER04,
                                 XPath2FilterContainer04
                                    .newInstanceIntersect(doc, "//E")
                                       .getElement());

         /*
         transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER04,
                                 XPath2FilterContainer04.newInstanceUnion(doc,
                                    "//B").getElement());
         transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER04,
                                 XPath2FilterContainer04.newInstanceSubtract(doc,
                                    "//C").getElement());
         transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER04,
                                 XPath2FilterContainer04.newInstanceUnion(doc,
                                    "//F").getElement());
         transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER04,
                                 XPath2FilterContainer04.newInstanceSubtract(doc,
                                    "//G").getElement());
         transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER04,
                                 XPath2FilterContainer04.newInstanceUnion(doc,
                                    "//H").getElement());
         transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER04,
                                 XPath2FilterContainer04.newInstanceSubtract(doc,
                                    "//@x:attr").getElement());
         */
         transforms.setXPathNamespaceContext("xmlns:x", "http://foo.bar/");
         transforms
            .setXPathNamespaceContext(Transforms
               .getDefaultPrefix(Transforms
               .TRANSFORM_XPATH2FILTER04), Transforms.TRANSFORM_XPATH2FILTER04);
      }

      sig.addDocument("", transforms);

      String secretKey = "secret";

      sig.getKeyInfo().addKeyName("The UTF-8 octets of \"" + secretKey
                                  + "\" are used for signing ("
                                  + secretKey.length() + " octets)");
      sig.sign(sig.createSecretKey(secretKey.getBytes()));

      Canonicalizer c14n =
         Canonicalizer.getInstance(Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS);
      byte[] full = c14n.canonicalizeSubtree(doc);
      byte[] ref = sig.getSignedInfo().item(0).getTransformsOutput().getBytes();
      byte[][] result = {
         full, ref
      };

      // we remove the signature now
      sig.getElement().getParentNode().removeChild(sig.getElement());

      return result;
   }
View Full Code Here

    * @throws Exception
    */
   public static byte[][] apachesample_xfilter2_2(Document doc)
           throws Exception {

      XMLSignature sig = new XMLSignature(doc, null,
                                          XMLSignature.ALGO_ID_MAC_HMAC_SHA1);

      doc.getDocumentElement().appendChild(sig.getElement());

      Transforms transforms = new Transforms(doc);

      {
         transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER04,
                                 XPath2FilterContainer04
                                    .newInstanceIntersect(doc, "//E")
                                       .getElement());
         transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER04,
                                 XPath2FilterContainer04.newInstanceUnion(doc,
                                    "//B").getElement());

         /*
         transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER04,
                                 XPath2FilterContainer04.newInstanceSubtract(doc,
                                    "//C").getElement());
         transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER04,
                                 XPath2FilterContainer04.newInstanceUnion(doc,
                                    "//F").getElement());
         transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER04,
                                 XPath2FilterContainer04.newInstanceSubtract(doc,
                                    "//G").getElement());
         transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER04,
                                 XPath2FilterContainer04.newInstanceUnion(doc,
                                    "//H").getElement());
         transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER04,
                                 XPath2FilterContainer04.newInstanceSubtract(doc,
                                    "//@x:attr").getElement());
                              */
         transforms.setXPathNamespaceContext("xmlns:x", "http://foo.bar/");
         transforms
            .setXPathNamespaceContext(Transforms
               .getDefaultPrefix(Transforms
               .TRANSFORM_XPATH2FILTER04), Transforms.TRANSFORM_XPATH2FILTER04);
      }

      sig.addDocument("", transforms);

      String secretKey = "secret";

      sig.getKeyInfo().addKeyName("The UTF-8 octets of \"" + secretKey
                                  + "\" are used for signing ("
                                  + secretKey.length() + " octets)");
      sig.sign(sig.createSecretKey(secretKey.getBytes()));

      Canonicalizer c14n =
         Canonicalizer.getInstance(Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS);
      byte[] full = c14n.canonicalizeSubtree(doc);
      byte[] ref = sig.getSignedInfo().item(0).getTransformsOutput().getBytes();
      byte[][] result = {
         full, ref
      };

      // we remove the signature now
      sig.getElement().getParentNode().removeChild(sig.getElement());

      return result;
   }
View Full Code Here

TOP

Related Classes of org.apache.xml.security.signature.XMLSignature

Copyright © 2018 www.massapicom. 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.