1 /* 2 * reserved comment block 3 * DO NOT REMOVE OR ALTER! 4 */ 5 /** 6 * Licensed to the Apache Software Foundation (ASF) under one 7 * or more contributor license agreements. See the NOTICE file 8 * distributed with this work for additional information 9 * regarding copyright ownership. The ASF licenses this file 10 * to you under the Apache License, Version 2.0 (the 11 * "License"); you may not use this file except in compliance 12 * with the License. You may obtain a copy of the License at 13 * 14 * http://www.apache.org/licenses/LICENSE-2.0 15 * 16 * Unless required by applicable law or agreed to in writing, 17 * software distributed under the License is distributed on an 18 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 19 * KIND, either express or implied. See the License for the 20 * specific language governing permissions and limitations 21 * under the License. 22 */ 23 package com.sun.org.apache.xml.internal.security.keys.content.x509; 24 25 import java.math.BigInteger; 26 import java.security.cert.X509Certificate; 27 28 import com.sun.org.apache.xml.internal.security.exceptions.XMLSecurityException; 29 import com.sun.org.apache.xml.internal.security.utils.Constants; 30 import com.sun.org.apache.xml.internal.security.utils.RFC2253Parser; 31 import com.sun.org.apache.xml.internal.security.utils.SignatureElementProxy; 32 import org.w3c.dom.Document; 33 import org.w3c.dom.Element; 34 35 public class XMLX509IssuerSerial extends SignatureElementProxy implements XMLX509DataContent { 36 37 private static final com.sun.org.slf4j.internal.Logger LOG = 38 com.sun.org.slf4j.internal.LoggerFactory.getLogger(XMLX509IssuerSerial.class); 39 40 /** 41 * Constructor XMLX509IssuerSerial 42 * 43 * @param element 44 * @param baseURI 45 * @throws XMLSecurityException 46 */ XMLX509IssuerSerial(Element element, String baseURI)47 public XMLX509IssuerSerial(Element element, String baseURI) throws XMLSecurityException { 48 super(element, baseURI); 49 } 50 51 /** 52 * Constructor XMLX509IssuerSerial 53 * 54 * @param doc 55 * @param x509IssuerName 56 * @param x509SerialNumber 57 */ XMLX509IssuerSerial(Document doc, String x509IssuerName, BigInteger x509SerialNumber)58 public XMLX509IssuerSerial(Document doc, String x509IssuerName, BigInteger x509SerialNumber) { 59 super(doc); 60 addReturnToSelf(); 61 addTextElement(x509IssuerName, Constants._TAG_X509ISSUERNAME); 62 addTextElement(x509SerialNumber.toString(), Constants._TAG_X509SERIALNUMBER); 63 } 64 65 /** 66 * Constructor XMLX509IssuerSerial 67 * 68 * @param doc 69 * @param x509IssuerName 70 * @param x509SerialNumber 71 */ XMLX509IssuerSerial(Document doc, String x509IssuerName, String x509SerialNumber)72 public XMLX509IssuerSerial(Document doc, String x509IssuerName, String x509SerialNumber) { 73 this(doc, x509IssuerName, new BigInteger(x509SerialNumber)); 74 } 75 76 /** 77 * Constructor XMLX509IssuerSerial 78 * 79 * @param doc 80 * @param x509IssuerName 81 * @param x509SerialNumber 82 */ XMLX509IssuerSerial(Document doc, String x509IssuerName, int x509SerialNumber)83 public XMLX509IssuerSerial(Document doc, String x509IssuerName, int x509SerialNumber) { 84 this(doc, x509IssuerName, new BigInteger(Integer.toString(x509SerialNumber))); 85 } 86 87 /** 88 * Constructor XMLX509IssuerSerial 89 * 90 * @param doc 91 * @param x509certificate 92 */ XMLX509IssuerSerial(Document doc, X509Certificate x509certificate)93 public XMLX509IssuerSerial(Document doc, X509Certificate x509certificate) { 94 this( 95 doc, 96 x509certificate.getIssuerX500Principal().getName(), 97 x509certificate.getSerialNumber() 98 ); 99 } 100 101 /** 102 * Method getSerialNumber 103 * 104 * @return the serial number 105 */ getSerialNumber()106 public BigInteger getSerialNumber() { 107 String text = 108 this.getTextFromChildElement(Constants._TAG_X509SERIALNUMBER, Constants.SignatureSpecNS); 109 LOG.debug("X509SerialNumber text: {}", text); 110 111 return new BigInteger(text); 112 } 113 114 /** 115 * Method getSerialNumberInteger 116 * 117 * @return the serial number as plain int 118 */ getSerialNumberInteger()119 public int getSerialNumberInteger() { 120 return this.getSerialNumber().intValue(); 121 } 122 123 /** 124 * Method getIssuerName 125 * 126 * @return the issuer name 127 */ getIssuerName()128 public String getIssuerName() { 129 return RFC2253Parser.normalize( 130 this.getTextFromChildElement(Constants._TAG_X509ISSUERNAME, Constants.SignatureSpecNS) 131 ); 132 } 133 134 /** {@inheritDoc} */ equals(Object obj)135 public boolean equals(Object obj) { 136 if (!(obj instanceof XMLX509IssuerSerial)) { 137 return false; 138 } 139 140 XMLX509IssuerSerial other = (XMLX509IssuerSerial) obj; 141 142 return this.getSerialNumber().equals(other.getSerialNumber()) 143 && this.getIssuerName().equals(other.getIssuerName()); 144 } 145 hashCode()146 public int hashCode() { 147 int result = 17; 148 result = 31 * result + getSerialNumber().hashCode(); 149 result = 31 * result + getIssuerName().hashCode(); 150 return result; 151 } 152 153 /** {@inheritDoc} */ getBaseLocalName()154 public String getBaseLocalName() { 155 return Constants._TAG_X509ISSUERSERIAL; 156 } 157 } 158