author | jlahoda |
Tue, 24 Sep 2019 15:40:26 +0200 | |
branch | JDK-8226585-branch |
changeset 58290 | d885633d9de4 |
parent 54731 | 81de17a33575 |
permissions | -rw-r--r-- |
54731
81de17a33575
8219013: Update Apache Santuario (XML Signature) to version 2.1.3
weijun
parents:
53998
diff
changeset
|
1 |
/* |
81de17a33575
8219013: Update Apache Santuario (XML Signature) to version 2.1.3
weijun
parents:
53998
diff
changeset
|
2 |
* reserved comment block |
81de17a33575
8219013: Update Apache Santuario (XML Signature) to version 2.1.3
weijun
parents:
53998
diff
changeset
|
3 |
* DO NOT REMOVE OR ALTER! |
81de17a33575
8219013: Update Apache Santuario (XML Signature) to version 2.1.3
weijun
parents:
53998
diff
changeset
|
4 |
*/ |
53998
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
5 |
/** |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
6 |
* Licensed to the Apache Software Foundation (ASF) under one |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
7 |
* or more contributor license agreements. See the NOTICE file |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
8 |
* distributed with this work for additional information |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
9 |
* regarding copyright ownership. The ASF licenses this file |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
10 |
* to you under the Apache License, Version 2.0 (the |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
11 |
* "License"); you may not use this file except in compliance |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
12 |
* with the License. You may obtain a copy of the License at |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
13 |
* |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
14 |
* http://www.apache.org/licenses/LICENSE-2.0 |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
15 |
* |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
16 |
* Unless required by applicable law or agreed to in writing, |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
17 |
* software distributed under the License is distributed on an |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
18 |
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
19 |
* KIND, either express or implied. See the License for the |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
20 |
* specific language governing permissions and limitations |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
21 |
* under the License. |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
22 |
*/ |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
23 |
/* |
54731
81de17a33575
8219013: Update Apache Santuario (XML Signature) to version 2.1.3
weijun
parents:
53998
diff
changeset
|
24 |
* Copyright (c) 2005, 2019, Oracle and/or its affiliates. All rights reserved. |
53998
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
25 |
*/ |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
26 |
/* |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
27 |
* $Id$ |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
28 |
*/ |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
29 |
package org.jcp.xml.dsig.internal.dom; |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
30 |
|
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
31 |
import java.math.BigInteger; |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
32 |
import javax.xml.crypto.*; |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
33 |
import javax.xml.crypto.dom.DOMCryptoContext; |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
34 |
|
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
35 |
import com.sun.org.apache.xml.internal.security.utils.XMLUtils; |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
36 |
import org.w3c.dom.Node; |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
37 |
import org.w3c.dom.Text; |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
38 |
|
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
39 |
/** |
54731
81de17a33575
8219013: Update Apache Santuario (XML Signature) to version 2.1.3
weijun
parents:
53998
diff
changeset
|
40 |
* A DOM-based representation of the XML {@code CryptoBinary} simple type |
53998
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
41 |
* as defined in the W3C specification for XML-Signature Syntax and Processing. |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
42 |
* The XML Schema Definition is defined as: |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
43 |
* |
54731
81de17a33575
8219013: Update Apache Santuario (XML Signature) to version 2.1.3
weijun
parents:
53998
diff
changeset
|
44 |
* <pre>{@code |
53998
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
45 |
* <simpleType name="CryptoBinary"> |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
46 |
* <restriction base = "base64Binary"> |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
47 |
* </restriction> |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
48 |
* </simpleType> |
54731
81de17a33575
8219013: Update Apache Santuario (XML Signature) to version 2.1.3
weijun
parents:
53998
diff
changeset
|
49 |
* }</pre> |
53998
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
50 |
* |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
51 |
* @author Sean Mullan |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
52 |
*/ |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
53 |
public final class DOMCryptoBinary extends DOMStructure { |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
54 |
|
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
55 |
private final BigInteger bigNum; |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
56 |
private final String value; |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
57 |
|
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
58 |
/** |
54731
81de17a33575
8219013: Update Apache Santuario (XML Signature) to version 2.1.3
weijun
parents:
53998
diff
changeset
|
59 |
* Create a {@code DOMCryptoBinary} instance from the specified |
81de17a33575
8219013: Update Apache Santuario (XML Signature) to version 2.1.3
weijun
parents:
53998
diff
changeset
|
60 |
* {@code BigInteger} |
53998
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
61 |
* |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
62 |
* @param bigNum the arbitrary-length integer |
54731
81de17a33575
8219013: Update Apache Santuario (XML Signature) to version 2.1.3
weijun
parents:
53998
diff
changeset
|
63 |
* @throws NullPointerException if {@code bigNum} is {@code null} |
53998
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
64 |
*/ |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
65 |
public DOMCryptoBinary(BigInteger bigNum) { |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
66 |
if (bigNum == null) { |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
67 |
throw new NullPointerException("bigNum is null"); |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
68 |
} |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
69 |
this.bigNum = bigNum; |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
70 |
// convert to bitstring |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
71 |
byte[] bytes = XMLUtils.getBytes(bigNum, bigNum.bitLength()); |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
72 |
value = XMLUtils.encodeToString(bytes); |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
73 |
} |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
74 |
|
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
75 |
/** |
54731
81de17a33575
8219013: Update Apache Santuario (XML Signature) to version 2.1.3
weijun
parents:
53998
diff
changeset
|
76 |
* Creates a {@code DOMCryptoBinary} from a node. |
53998
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
77 |
* |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
78 |
* @param cbNode a CryptoBinary text node |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
79 |
* @throws MarshalException if value cannot be decoded (invalid format) |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
80 |
*/ |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
81 |
public DOMCryptoBinary(Node cbNode) throws MarshalException { |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
82 |
value = cbNode.getNodeValue(); |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
83 |
try { |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
84 |
bigNum = new BigInteger(1, XMLUtils.decode(((Text) cbNode).getData())); |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
85 |
} catch (Exception ex) { |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
86 |
throw new MarshalException(ex); |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
87 |
} |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
88 |
} |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
89 |
|
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
90 |
/** |
54731
81de17a33575
8219013: Update Apache Santuario (XML Signature) to version 2.1.3
weijun
parents:
53998
diff
changeset
|
91 |
* Returns the {@code BigInteger} that this object contains. |
53998
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
92 |
* |
54731
81de17a33575
8219013: Update Apache Santuario (XML Signature) to version 2.1.3
weijun
parents:
53998
diff
changeset
|
93 |
* @return the {@code BigInteger} that this object contains |
53998
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
94 |
*/ |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
95 |
public BigInteger getBigNum() { |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
96 |
return bigNum; |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
97 |
} |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
98 |
|
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
99 |
@Override |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
100 |
public void marshal(Node parent, String prefix, DOMCryptoContext context) |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
101 |
throws MarshalException { |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
102 |
parent.appendChild |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
103 |
(DOMUtils.getOwnerDocument(parent).createTextNode(value)); |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
104 |
} |
d870bb08194a
8217878: ENVELOPING XML signature no longer works in JDK 11
mullan
parents:
diff
changeset
|
105 |
} |