/** {@inheritDoc} */ public void createReference(@Nonnull final XMLSignature signature) { try { Transforms dsigTransforms = new Transforms(signature.getDocument()); for (int i=0; i<transforms.size(); i++) { String transform = transforms.get(i); dsigTransforms.addTransform(transform); if (transform.equals(SignatureConstants.TRANSFORM_C14N_EXCL_WITH_COMMENTS) || transform.equals(SignatureConstants.TRANSFORM_C14N_EXCL_OMIT_COMMENTS)) { processExclusiveTransform(signature, dsigTransforms.item(i)); } } if (!Strings.isNullOrEmpty(signableObject.getSignatureReferenceID()) ) { signature.addDocument("#" + signableObject.getSignatureReferenceID(), dsigTransforms, digestAlgorithm); } else { log.debug("SignableSAMLObject had no reference ID, signing using whole document Reference URI"); signature.addDocument("" , dsigTransforms, digestAlgorithm); } } catch (TransformationException e) { log.error("Unsupported signature transformation", e); } catch (XMLSignatureException e) { log.error("Error adding content reference to signature", e); } }