javax.xml.crypto.dsig.Reference类的使用及代码示例

x33g5p2x  于2022-01-29 转载在 其他  
字(14.5k)|赞(0)|评价(0)|浏览(137)

本文整理了Java中javax.xml.crypto.dsig.Reference类的一些代码示例,展示了Reference类的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Reference类的具体详情如下:
包路径:javax.xml.crypto.dsig.Reference
类名称:Reference

Reference介绍

[英]A representation of the Reference element as defined in the W3C Recommendation for XML-Signature Syntax and Processing. The XML schema is defined as: <<$0$>>

A Reference instance may be created by invoking one of the XMLSignatureFactory#newReference methods of the XMLSignatureFactory class; for example:

XMLSignatureFactory factory = XMLSignatureFactory.getInstance("DOM"); 
Reference ref = factory.newReference 
("http://www.ietf.org/rfc/rfc3275.txt",  
factory.newDigestMethod(DigestMethod.SHA1, null));

[中][W3C Recommendation for XML-Signature Syntax and Processing](http://www.w3.org/TR/xmldsig-core/)中定义的Reference元素的表示形式。XML模式定义为:<<$0$>>
Reference实例可以通过调用XMLSignatureFactory类的一个XMLSignatureFactory#newReference方法来创建;例如:

XMLSignatureFactory factory = XMLSignatureFactory.getInstance("DOM"); 
Reference ref = factory.newReference 
("http://www.ietf.org/rfc/rfc3275.txt",  
factory.newDigestMethod(DigestMethod.SHA1, null));

代码示例

代码示例来源:origin: org.apache.poi/poi-ooxml

public int compare(Reference o1, Reference o2) {
    return o1.getURI().compareTo(o2.getURI());
  }
});

代码示例来源:origin: org.apache.poi/poi-ooxml

xmlSignature.sign(xmlSignContext);
    List<Reference> manifestReferences = manifest.getReferences();
    for (Reference manifestReference : manifestReferences) {
      if (manifestReference.getDigestValue() != null) {
        continue;
List<Reference> signedInfoReferences = signedInfo.getReferences();
for (Reference signedInfoReference : signedInfoReferences) {
  DOMReference domReference = (DOMReference)signedInfoReference;

代码示例来源:origin: org.picketlink/picketlink-fed

boolean coreValidity = signature.validate(valContext);
  boolean sv = signature.getSignatureValue().validate(valContext);
  log.trace("Signature validation status: " + sv);
  List<Reference> references = signature.getSignedInfo().getReferences();
  for (Reference ref : references)
   log.trace("[Ref id=" + ref.getId() + ":uri=" + ref.getURI() + "]validity status:"
      + ref.validate(valContext));

代码示例来源:origin: se.vgregion.commons-util/commons-util-core-bc-composite-security

boolean coreValidity = signature.validate(valContext);
  boolean sv = signature.getSignatureValue().validate(valContext);
  System.out.println("signature validation status: " + sv);
  Iterator i = signature.getSignedInfo().getReferences().iterator();
  for (int j=0; i.hasNext(); j++) {
    boolean refValid =
      ((Reference) i.next()).validate(valContext);
    System.out.println("ref["+j+"] validity status: " + refValid);

代码示例来源:origin: org.apache.juddi/uddi-tck-base

valContext.setProperty("javax.xml.crypto.dsig.cacheReference", Boolean.TRUE);
XMLSignature signature = fac.unmarshalXMLSignature(valContext);
boolean coreValidity = signature.validate(valContext);
  boolean sv = signature.getSignatureValue().validate(valContext);
  System.out.println("signature validation status: " + sv);
  Iterator<Reference> i = signature.getSignedInfo().getReferences().iterator();
  System.out.println("---------------------------------------------");
  for (int j = 0; i.hasNext(); j++) {
    Reference ref = (Reference) i.next();
    boolean refValid = ref.validate(valContext);
    System.out.println("ref[" + j + "] validity status: " + refValid);
    System.out.println("Ref type: " + ref.getType() + ", URI: " + ref.getURI());
    for (Object xform : ref.getTransforms()) {
      System.out.println("Transform: " + xform);
    String calcDigValStr = digestToString(ref.getCalculatedDigestValue());
    String expectedDigValStr = digestToString(ref.getDigestValue());
    System.out.println("    Calc Digest: " + calcDigValStr);
    System.out.println("Expected Digest: " + expectedDigValStr);
    InputStream is = ref.getDigestInputStream();
    InputStreamReader isr = new InputStreamReader(is);
    BufferedReader br = new BufferedReader(isr);

代码示例来源:origin: org.apache.wss4j/wss4j-ws-security-dom

xmlSignature.getSignedInfo().getSignatureMethod().getAlgorithm();
for (Object refObject : xmlSignature.getSignedInfo().getReferences()) {
  Reference reference = (Reference)refObject;
  if ("".equals(reference.getURI())
    || reference.getURI().equals(samlAssertion.getId())
    || reference.getURI().equals("#" + samlAssertion.getId())) {
    WSDataRef ref = new WSDataRef();
    ref.setWsuId(reference.getURI());
    ref.setProtectedElement(token);
    ref.setAlgorithm(signatureMethod);
    ref.setDigestAlgorithm(reference.getDigestMethod().getAlgorithm());
    ref.setDigestValue(reference.getDigestValue());
    List<Transform> transforms = (List<Transform>)reference.getTransforms();
    List<String> transformAlgorithms = new ArrayList<>(transforms.size());
    for (Transform transform : transforms) {

代码示例来源:origin: be.fedict.eid-dss/eid-dss-document-odf

private void checkIntegrity(XMLSignature xmlSignature, byte[] document,
      byte[] originalDocument) throws IOException {
    if (null != originalDocument) {
      throw new IllegalArgumentException(
          "cannot perform original document verifications");
    }
    Set<String> dsReferenceUris = new HashSet<String>();
    SignedInfo signedInfo = xmlSignature.getSignedInfo();
    @SuppressWarnings("unchecked")
    List<Reference> references = signedInfo.getReferences();
    for (Reference reference : references) {
      String referenceUri = reference.getURI();
      dsReferenceUris.add(referenceUri);
    }
    ZipInputStream odfZipInputStream = new ZipInputStream(
        new ByteArrayInputStream(document));
    ZipEntry zipEntry;
    while (null != (zipEntry = odfZipInputStream.getNextEntry())) {
      if (false == ODFUtil.isToBeSigned(zipEntry)) {
        continue;
      }
      String uri = zipEntry.getName().replaceAll(" ", "%20");
      if (false == dsReferenceUris.contains(uri)) {
        LOG.warn("no ds:Reference for ODF entry: " + zipEntry.getName());
        throw new RuntimeException("no ds:Reference for ODF entry: "
            + zipEntry.getName());
      }
    }
  }
}

代码示例来源:origin: org.apache.ws.security/wss4j

xmlSignature.getSignedInfo().getSignatureMethod().getAlgorithm();
checkSignatureMethod(signatureMethod);
  xmlSignature.getSignedInfo().getCanonicalizationMethod().getAlgorithm();
checkC14nAlgorithm(c14nMethod);
for (Object refObject : xmlSignature.getSignedInfo().getReferences()) {
  Reference reference = (Reference)refObject;
  String digestMethod = reference.getDigestMethod().getAlgorithm();
  Set<String> allowedDigestAlgorithms = algorithmSuite.getDigestAlgorithms();
  if (!allowedDigestAlgorithms.isEmpty()
  for (int i = 0; i < reference.getTransforms().size(); i++) {
    Transform transform = (Transform)reference.getTransforms().get(i);
    String algorithm = transform.getAlgorithm();
    Set<String> allowedTransformAlgorithms =

代码示例来源:origin: be.fedict.eid-dss/eid-dss-document-zip

SignedInfo signedInfo = xmlSignature.getSignedInfo();
@SuppressWarnings("unchecked")
List<Reference> references = signedInfo.getReferences();
Set<String> referenceUris = new HashSet<String>();
for (Reference reference : references) {
  String referenceUri = reference.getURI();
  referenceUris.add(URLDecoder.decode(referenceUri, "UTF-8"));
    if (null != reference.getType()) {
    String digestAlgo = reference.getDigestMethod()
        .getAlgorithm();
    LOG.debug("ds:Reference digest algo: " + digestAlgo);
    String referenceUri = reference.getURI();
    LOG.debug("ds:Reference URI: " + referenceUri);
    byte[] digestValue = reference.getDigestValue();
  Set<String> referencedEntryNames = new HashSet<String>();
  for (Reference reference : references) {
    if (null != reference.getType()) {
      continue;
    referencedEntryNames.add(reference.getURI());

代码示例来源:origin: org.apache.ws.security/wss4j

) throws WSSecurityException {
  List<WSDataRef> protectedRefs = new java.util.ArrayList<WSDataRef>();
  List<?> referencesList = signedInfo.getReferences();
  for (int i = 0; i < referencesList.size(); i++) {
    Reference siRef = (Reference)referencesList.get(i);
    String uri = siRef.getURI();
        NodeSetData data = (NodeSetData)siRef.getDereferencedData();
        if (data != null) {
          java.util.Iterator<?> iter = data.iterator();
      ref.setWsuId(uri);
      ref.setProtectedElement(se);
      ref.setAlgorithm(signedInfo.getSignatureMethod().getAlgorithm());
      ref.setDigestAlgorithm(siRef.getDigestMethod().getAlgorithm());
      List<Transform> transforms = (List<Transform>)siRef.getTransforms();
      List<String> transformAlgorithms = new ArrayList<String>(transforms.size());
      for (Transform transform : transforms) {

代码示例来源:origin: org.apache.ws.security/wss4j

) throws WSSecurityException {
  for (Object object : xmlSignature.getObjects()) {
    if (object instanceof XMLObject) {
      XMLObject xmlObject = (XMLObject)object;
    xmlSignature.getSignedInfo().getCanonicalizationMethod().getAlgorithm();
  if (!WSConstants.C14N_EXCL_OMIT_COMMENTS.equals(c14nMethod)) {
    throw new WSSecurityException(WSSecurityException.INVALID_SECURITY, "badC14nAlgo");
  for (Object refObject : xmlSignature.getSignedInfo().getReferences()) {
    Reference reference = (Reference)refObject;
    if (reference.getTransforms().isEmpty()) {
      throw new WSSecurityException(WSSecurityException.INVALID_SECURITY, "R5416");
    for (int i = 0; i < reference.getTransforms().size(); i++) {
      Transform transform = (Transform)reference.getTransforms().get(i);
      String algorithm = transform.getAlgorithm();
      if (!(WSConstants.C14N_EXCL_OMIT_COMMENTS.equals(algorithm)
        throw new WSSecurityException(WSSecurityException.INVALID_SECURITY, "R5423");
      if (i == (reference.getTransforms().size() - 1)
        && (!(WSConstants.C14N_EXCL_OMIT_COMMENTS.equals(algorithm)
          || STRTransform.TRANSFORM_URI.equals(algorithm)

代码示例来源:origin: be.fedict.eid-dss/eid-dss-document-asic

XMLSignature xmlSignature = xmlSignatureFactory
    .unmarshalXMLSignature(domValidateContext);
boolean valid = xmlSignature.validate(domValidateContext);
if (!valid) {
  continue;
SignedInfo signedInfo = xmlSignature.getSignedInfo();
@SuppressWarnings("unchecked")
List<Reference> references = signedInfo.getReferences();
Set<String> referenceUris = new HashSet<String>();
for (Reference reference : references) {
  String referenceUri = reference.getURI();
  referenceUris.add(URLDecoder.decode(referenceUri, "UTF-8"));

代码示例来源:origin: be.fedict.eid-dss/eid-dss-spi-utils

@SuppressWarnings("unchecked")
public static String findReferenceUri(XMLSignature xmlSignature, String type) {
  SignedInfo signedInfo = xmlSignature.getSignedInfo();
  List<Reference> references = signedInfo.getReferences();
  for (Reference reference : references) {
    if (type.equals(reference.getType())) {
      return reference.getURI();
    }
  }
  return null;
}

代码示例来源:origin: org.apache.santuario/xmlsec

@Override
public boolean equals(Object o) {
  if (this == o) {
    return true;
  }
  if (!(o instanceof Reference)) {
    return false;
  }
  Reference oref = (Reference)o;
  boolean idsEqual = id == null ? oref.getId() == null
                  : id.equals(oref.getId());
  boolean urisEqual = uri == null ? oref.getURI() == null
                   : uri.equals(oref.getURI());
  boolean typesEqual = type == null ? oref.getType() == null
                    : type.equals(oref.getType());
  boolean digestValuesEqual =
    Arrays.equals(digestValue, oref.getDigestValue());
  return digestMethod.equals(oref.getDigestMethod()) && idsEqual &&
    urisEqual && typesEqual &&
    allTransforms.equals(oref.getTransforms()) && digestValuesEqual;
}

代码示例来源:origin: com.hynnet/xws-security

public void constructSignaturePolicy(SignedInfo signedInfo, boolean isBSP,SignaturePolicy policy){
  List referencesList = signedInfo.getReferences();
  //SignatureMethod sm = signedInfo.getSignatureMethod();
  CanonicalizationMethod cm = signedInfo.getCanonicalizationMethod();
  
  policy.isBSP(isBSP);
  SignaturePolicy.FeatureBinding featureBinding = (SignaturePolicy.FeatureBinding )policy.getFeatureBinding();
  featureBinding.setCanonicalizationAlgorithm(cm.getAlgorithm());
  Iterator itr = referencesList.iterator();
  while(itr.hasNext()){
    Reference ref = (Reference) itr.next();
    SignatureTarget.Transform transform = getSignatureTransform(ref);
    SignatureTarget target = new SignatureTarget();
    target.isBSP(isBSP);
    if(transform != null){
      target.addTransform(transform);
    }
    target.setDigestAlgorithm(ref.getDigestMethod().getAlgorithm());
    if(ref.getURI().length() >0){
      target.setValue(SecurableSoapMessage.getIdFromFragmentRef(ref.getURI()));
    }else{
      target.setValue(ref.getURI());
    }
    target.setType(SignatureTarget.TARGET_TYPE_VALUE_URI);
    featureBinding.addTargetBinding(target);
  }
}

代码示例来源:origin: be.fedict.eid-dss/eid-dss-document-xml

TransformationException, XMLSignatureException,
  ReferenceNotInitializedException, Base64DecodingException {
SignedInfo signedInfo = xmlSignature.getSignedInfo();
@SuppressWarnings("unchecked")
List<Reference> references = signedInfo.getReferences();
for (Reference reference : references) {
  LOG.debug("reference type: " + reference.getType());
  if (null != reference.getType()) {
  String digestAlgo = reference.getDigestMethod().getAlgorithm();
  LOG.debug("ds:Reference digest algo: " + digestAlgo);
  byte[] digestValue = reference.getDigestValue();

代码示例来源:origin: be.fedict.eid-applet/eid-applet-service-signer

boolean valid = xmlSignature.validate(domValidateContext);
List<XMLObject> objects = xmlSignature.getObjects();
XMLObject idPackageObject = null;
for (XMLObject object : objects) {
Set<String> remainingIdPackageObjectReferenceUris = new HashSet<String>();
for (Reference idPackageObjectReference : idPackageObjectReferences) {
  idPackageObjectReferenceUris.add(idPackageObjectReference.getURI());
  remainingIdPackageObjectReferenceUris.add(idPackageObjectReference.getURI());

代码示例来源:origin: org.apache.santuario/xmlsec

for (int i = 0, size = refs.size(); validateRefs && i < size; i++) {
  Reference ref = refs.get(i);
  boolean refValid = ref.validate(vc);
  LOG.debug("Reference [{}] is valid: {}", ref.getURI(), refValid);
  validateRefs &= refValid;
        for (int k = 0; validateMans && k < rsize; k++) {
          Reference ref = manRefs.get(k);
          boolean refValid = ref.validate(vc);
          LOG.debug(
            "Manifest ref [{}] is valid: {}", ref.getURI(),  refValid
          );
          validateMans &= refValid;

代码示例来源:origin: net.java.xades/jxades

public InvalidSignatureReason(Reference reference)
{
  invalidSignature = InvalidSignature.BAD_REFERENCE;
  StringBuilder sb = new StringBuilder();
  sb.append("Bad reference");
  String id = reference.getId();
  if (id != null && (id = id.trim()).length() > 0)
    sb.append(" with Id '").append(id).append("'");
  String uri = reference.getURI();
  if (uri != null && (uri = uri.trim()).length() > 0)
  {
    if (id != null && id.length() > 0)
      sb.append(" and URI = '");
    else
      sb.append(" with URI = '");
    sb.append(uri).append("'");
  }
  reason = sb.toString();
}

代码示例来源:origin: be.fedict.eid-applet/eid-applet-service-signer

List<Reference> manifestReferences = manifest.getReferences();
    for (Reference manifestReference : manifestReferences) {
      if (null != manifestReference.getDigestValue()) {
        continue;
List<Reference> signedInfoReferences = signedInfo.getReferences();
for (Reference signedInfoReference : signedInfoReferences) {
  DOMReference domReference = (DOMReference) signedInfoReference;

相关文章