public class org.jcp.xml.dsig.internal.dom.DOMURIDereferencer implements javax.xml.crypto.URIDereferencer
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.jcp.xml.dsig.internal.dom.DOMURIDereferencer
super_class: java.lang.Object
{
static final javax.xml.crypto.URIDereferencer INSTANCE;
descriptor: Ljavax/xml/crypto/URIDereferencer;
flags: (0x0018) ACC_STATIC, ACC_FINAL
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=2, locals=0, args_size=0
0: .line 50
new org.jcp.xml.dsig.internal.dom.DOMURIDereferencer
dup
invokespecial org.jcp.xml.dsig.internal.dom.DOMURIDereferencer.<init>:()V
putstatic org.jcp.xml.dsig.internal.dom.DOMURIDereferencer.INSTANCE:Ljavax/xml/crypto/URIDereferencer;
return
LocalVariableTable:
Start End Slot Name Signature
private void <init>();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=1, locals=1, args_size=1
start local 0 // org.jcp.xml.dsig.internal.dom.DOMURIDereferencer this
0: .line 52
aload 0 /* this */
invokespecial java.lang.Object.<init>:()V
1: .line 55
invokestatic com.sun.org.apache.xml.internal.security.Init.init:()V
2: .line 56
return
end local 0 // org.jcp.xml.dsig.internal.dom.DOMURIDereferencer this
LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/jcp/xml/dsig/internal/dom/DOMURIDereferencer;
public javax.xml.crypto.Data dereference(javax.xml.crypto.URIReference, javax.xml.crypto.XMLCryptoContext);
descriptor: (Ljavax/xml/crypto/URIReference;Ljavax/xml/crypto/XMLCryptoContext;)Ljavax/xml/crypto/Data;
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=13, args_size=3
start local 0 // org.jcp.xml.dsig.internal.dom.DOMURIDereferencer this
start local 1 // javax.xml.crypto.URIReference uriRef
start local 2 // javax.xml.crypto.XMLCryptoContext context
0: .line 61
aload 1 /* uriRef */
ifnonnull 2
1: .line 62
new java.lang.NullPointerException
dup
ldc "uriRef cannot be null"
invokespecial java.lang.NullPointerException.<init>:(Ljava/lang/String;)V
athrow
2: .line 64
StackMap locals:
StackMap stack:
aload 2 /* context */
ifnonnull 4
3: .line 65
new java.lang.NullPointerException
dup
ldc "context cannot be null"
invokespecial java.lang.NullPointerException.<init>:(Ljava/lang/String;)V
athrow
4: .line 68
StackMap locals:
StackMap stack:
aload 1 /* uriRef */
checkcast javax.xml.crypto.dom.DOMURIReference
astore 3 /* domRef */
start local 3 // javax.xml.crypto.dom.DOMURIReference domRef
5: .line 69
aload 3 /* domRef */
invokeinterface javax.xml.crypto.dom.DOMURIReference.getHere:()Lorg/w3c/dom/Node;
checkcast org.w3c.dom.Attr
astore 4 /* uriAttr */
start local 4 // org.w3c.dom.Attr uriAttr
6: .line 70
aload 1 /* uriRef */
invokeinterface javax.xml.crypto.URIReference.getURI:()Ljava/lang/String;
astore 5 /* uri */
start local 5 // java.lang.String uri
7: .line 71
aload 2 /* context */
checkcast javax.xml.crypto.dom.DOMCryptoContext
astore 6 /* dcc */
start local 6 // javax.xml.crypto.dom.DOMCryptoContext dcc
8: .line 72
aload 2 /* context */
invokeinterface javax.xml.crypto.XMLCryptoContext.getBaseURI:()Ljava/lang/String;
astore 7 /* baseURI */
start local 7 // java.lang.String baseURI
9: .line 74
aload 2 /* context */
invokestatic org.jcp.xml.dsig.internal.dom.Utils.secureValidation:(Ljavax/xml/crypto/XMLCryptoContext;)Z
istore 8 /* secVal */
start local 8 // boolean secVal
10: .line 76
iload 8 /* secVal */
ifeq 14
aload 5 /* uri */
invokestatic org.jcp.xml.dsig.internal.dom.Policy.restrictReferenceUriScheme:(Ljava/lang/String;)Z
ifeq 14
11: .line 77
new javax.xml.crypto.URIReferenceException
dup
12: .line 78
new java.lang.StringBuilder
dup
ldc "Uri "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 5 /* uri */
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc " is forbidden when secure validation is enabled"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
13: .line 77
invokespecial javax.xml.crypto.URIReferenceException.<init>:(Ljava/lang/String;)V
athrow
14: .line 82
StackMap locals: org.jcp.xml.dsig.internal.dom.DOMURIDereferencer javax.xml.crypto.URIReference javax.xml.crypto.XMLCryptoContext javax.xml.crypto.dom.DOMURIReference org.w3c.dom.Attr java.lang.String javax.xml.crypto.dom.DOMCryptoContext java.lang.String int
StackMap stack:
aload 5 /* uri */
ifnull 41
aload 5 /* uri */
invokevirtual java.lang.String.length:()I
ifeq 41
aload 5 /* uri */
iconst_0
invokevirtual java.lang.String.charAt:(I)C
bipush 35
if_icmpne 41
15: .line 83
aload 5 /* uri */
iconst_1
invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
astore 9 /* id */
start local 9 // java.lang.String id
16: .line 85
aload 9 /* id */
ldc "xpointer(id("
invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
ifeq 20
17: .line 86
aload 9 /* id */
bipush 39
invokevirtual java.lang.String.indexOf:(I)I
istore 10 /* i1 */
start local 10 // int i1
18: .line 87
aload 9 /* id */
bipush 39
iload 10 /* i1 */
iconst_1
iadd
invokevirtual java.lang.String.indexOf:(II)I
istore 11 /* i2 */
start local 11 // int i2
19: .line 88
aload 9 /* id */
iload 10 /* i1 */
iconst_1
iadd
iload 11 /* i2 */
invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
astore 9 /* id */
end local 11 // int i2
end local 10 // int i1
20: .line 92
StackMap locals: java.lang.String
StackMap stack:
aload 4 /* uriAttr */
invokeinterface org.w3c.dom.Attr.getOwnerDocument:()Lorg/w3c/dom/Document;
aload 9 /* id */
invokeinterface org.w3c.dom.Document.getElementById:(Ljava/lang/String;)Lorg/w3c/dom/Element;
astore 10 /* referencedElem */
start local 10 // org.w3c.dom.Node referencedElem
21: .line 93
aload 10 /* referencedElem */
ifnonnull 23
22: .line 95
aload 6 /* dcc */
aload 9 /* id */
invokevirtual javax.xml.crypto.dom.DOMCryptoContext.getElementById:(Ljava/lang/String;)Lorg/w3c/dom/Element;
astore 10 /* referencedElem */
23: .line 97
StackMap locals: org.w3c.dom.Node
StackMap stack:
aload 10 /* referencedElem */
ifnull 41
24: .line 98
iload 8 /* secVal */
ifeq 32
invokestatic org.jcp.xml.dsig.internal.dom.Policy.restrictDuplicateIds:()Z
ifeq 32
25: .line 99
aload 10 /* referencedElem */
invokeinterface org.w3c.dom.Node.getOwnerDocument:()Lorg/w3c/dom/Document;
invokeinterface org.w3c.dom.Document.getDocumentElement:()Lorg/w3c/dom/Element;
astore 11 /* start */
start local 11 // org.w3c.dom.Element start
26: .line 100
aload 11 /* start */
aload 10 /* referencedElem */
checkcast org.w3c.dom.Element
aload 9 /* id */
invokestatic com.sun.org.apache.xml.internal.security.utils.XMLUtils.protectAgainstWrappingAttack:(Lorg/w3c/dom/Node;Lorg/w3c/dom/Element;Ljava/lang/String;)Z
ifne 32
27: .line 101
new java.lang.StringBuilder
dup
ldc "Multiple Elements with the same ID "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
28: .line 102
aload 9 /* id */
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc " detected when secure validation"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
29: .line 103
ldc " is enabled"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
30: .line 101
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 12 /* error */
start local 12 // java.lang.String error
31: .line 104
new javax.xml.crypto.URIReferenceException
dup
aload 12 /* error */
invokespecial javax.xml.crypto.URIReferenceException.<init>:(Ljava/lang/String;)V
athrow
end local 12 // java.lang.String error
end local 11 // org.w3c.dom.Element start
32: .line 108
StackMap locals:
StackMap stack:
new com.sun.org.apache.xml.internal.security.signature.XMLSignatureInput
dup
aload 10 /* referencedElem */
invokespecial com.sun.org.apache.xml.internal.security.signature.XMLSignatureInput.<init>:(Lorg/w3c/dom/Node;)V
astore 11 /* result */
start local 11 // com.sun.org.apache.xml.internal.security.signature.XMLSignatureInput result
33: .line 109
aload 5 /* uri */
iconst_1
invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
ldc "xpointer(id("
invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
ifne 35
34: .line 110
aload 11 /* result */
iconst_1
invokevirtual com.sun.org.apache.xml.internal.security.signature.XMLSignatureInput.setExcludeComments:(Z)V
35: .line 113
StackMap locals: com.sun.org.apache.xml.internal.security.signature.XMLSignatureInput
StackMap stack:
aload 11 /* result */
ldc "text/xml"
invokevirtual com.sun.org.apache.xml.internal.security.signature.XMLSignatureInput.setMIMEType:(Ljava/lang/String;)V
36: .line 114
aload 7 /* baseURI */
ifnull 39
aload 7 /* baseURI */
invokevirtual java.lang.String.length:()I
ifle 39
37: .line 115
aload 11 /* result */
aload 7 /* baseURI */
aload 4 /* uriAttr */
invokeinterface org.w3c.dom.Attr.getNodeValue:()Ljava/lang/String;
invokevirtual java.lang.String.concat:(Ljava/lang/String;)Ljava/lang/String;
invokevirtual com.sun.org.apache.xml.internal.security.signature.XMLSignatureInput.setSourceURI:(Ljava/lang/String;)V
38: .line 116
goto 40
39: .line 117
StackMap locals:
StackMap stack:
aload 11 /* result */
aload 4 /* uriAttr */
invokeinterface org.w3c.dom.Attr.getNodeValue:()Ljava/lang/String;
invokevirtual com.sun.org.apache.xml.internal.security.signature.XMLSignatureInput.setSourceURI:(Ljava/lang/String;)V
40: .line 119
StackMap locals:
StackMap stack:
new org.jcp.xml.dsig.internal.dom.ApacheNodeSetData
dup
aload 11 /* result */
invokespecial org.jcp.xml.dsig.internal.dom.ApacheNodeSetData.<init>:(Lcom/sun/org/apache/xml/internal/security/signature/XMLSignatureInput;)V
areturn
end local 11 // com.sun.org.apache.xml.internal.security.signature.XMLSignatureInput result
end local 10 // org.w3c.dom.Node referencedElem
end local 9 // java.lang.String id
41: .line 125
StackMap locals:
StackMap stack:
aload 4 /* uriAttr */
aload 7 /* baseURI */
iconst_0
invokestatic com.sun.org.apache.xml.internal.security.utils.resolver.ResourceResolver.getInstance:(Lorg/w3c/dom/Attr;Ljava/lang/String;Z)Lcom/sun/org/apache/xml/internal/security/utils/resolver/ResourceResolver;
42: .line 124
astore 9 /* apacheResolver */
start local 9 // com.sun.org.apache.xml.internal.security.utils.resolver.ResourceResolver apacheResolver
43: .line 126
aload 9 /* apacheResolver */
aload 4 /* uriAttr */
44: .line 127
aload 7 /* baseURI */
iconst_0
45: .line 126
invokevirtual com.sun.org.apache.xml.internal.security.utils.resolver.ResourceResolver.resolve:(Lorg/w3c/dom/Attr;Ljava/lang/String;Z)Lcom/sun/org/apache/xml/internal/security/signature/XMLSignatureInput;
astore 10 /* in */
start local 10 // com.sun.org.apache.xml.internal.security.signature.XMLSignatureInput in
46: .line 128
aload 10 /* in */
invokevirtual com.sun.org.apache.xml.internal.security.signature.XMLSignatureInput.isOctetStream:()Z
ifeq 49
47: .line 129
new org.jcp.xml.dsig.internal.dom.ApacheOctetStreamData
dup
aload 10 /* in */
invokespecial org.jcp.xml.dsig.internal.dom.ApacheOctetStreamData.<init>:(Lcom/sun/org/apache/xml/internal/security/signature/XMLSignatureInput;)V
48: areturn
49: .line 131
StackMap locals: com.sun.org.apache.xml.internal.security.utils.resolver.ResourceResolver com.sun.org.apache.xml.internal.security.signature.XMLSignatureInput
StackMap stack:
new org.jcp.xml.dsig.internal.dom.ApacheNodeSetData
dup
aload 10 /* in */
invokespecial org.jcp.xml.dsig.internal.dom.ApacheNodeSetData.<init>:(Lcom/sun/org/apache/xml/internal/security/signature/XMLSignatureInput;)V
50: areturn
end local 10 // com.sun.org.apache.xml.internal.security.signature.XMLSignatureInput in
end local 9 // com.sun.org.apache.xml.internal.security.utils.resolver.ResourceResolver apacheResolver
51: .line 133
StackMap locals: org.jcp.xml.dsig.internal.dom.DOMURIDereferencer javax.xml.crypto.URIReference javax.xml.crypto.XMLCryptoContext javax.xml.crypto.dom.DOMURIReference org.w3c.dom.Attr java.lang.String javax.xml.crypto.dom.DOMCryptoContext java.lang.String int
StackMap stack: java.lang.Exception
astore 9 /* e */
start local 9 // java.lang.Exception e
52: .line 134
new javax.xml.crypto.URIReferenceException
dup
aload 9 /* e */
invokespecial javax.xml.crypto.URIReferenceException.<init>:(Ljava/lang/Throwable;)V
athrow
end local 9 // java.lang.Exception e
end local 8 // boolean secVal
end local 7 // java.lang.String baseURI
end local 6 // javax.xml.crypto.dom.DOMCryptoContext dcc
end local 5 // java.lang.String uri
end local 4 // org.w3c.dom.Attr uriAttr
end local 3 // javax.xml.crypto.dom.DOMURIReference domRef
end local 2 // javax.xml.crypto.XMLCryptoContext context
end local 1 // javax.xml.crypto.URIReference uriRef
end local 0 // org.jcp.xml.dsig.internal.dom.DOMURIDereferencer this
LocalVariableTable:
Start End Slot Name Signature
0 53 0 this Lorg/jcp/xml/dsig/internal/dom/DOMURIDereferencer;
0 53 1 uriRef Ljavax/xml/crypto/URIReference;
0 53 2 context Ljavax/xml/crypto/XMLCryptoContext;
5 53 3 domRef Ljavax/xml/crypto/dom/DOMURIReference;
6 53 4 uriAttr Lorg/w3c/dom/Attr;
7 53 5 uri Ljava/lang/String;
8 53 6 dcc Ljavax/xml/crypto/dom/DOMCryptoContext;
9 53 7 baseURI Ljava/lang/String;
10 53 8 secVal Z
16 41 9 id Ljava/lang/String;
18 20 10 i1 I
19 20 11 i2 I
21 41 10 referencedElem Lorg/w3c/dom/Node;
26 32 11 start Lorg/w3c/dom/Element;
31 32 12 error Ljava/lang/String;
33 41 11 result Lcom/sun/org/apache/xml/internal/security/signature/XMLSignatureInput;
43 51 9 apacheResolver Lcom/sun/org/apache/xml/internal/security/utils/resolver/ResourceResolver;
46 51 10 in Lcom/sun/org/apache/xml/internal/security/signature/XMLSignatureInput;
52 53 9 e Ljava/lang/Exception;
Exception table:
from to target type
41 48 51 Class java.lang.Exception
49 50 51 Class java.lang.Exception
Exceptions:
throws javax.xml.crypto.URIReferenceException
MethodParameters:
Name Flags
uriRef
context
}
SourceFile: "DOMURIDereferencer.java"