001 package org.apache.commons.ssl.asn1; 002 003 import java.io.IOException; 004 005 /** We insert one of these when we find a tag we don't recognise. */ 006 public class DERUnknownTag 007 extends DERObject { 008 int tag; 009 byte[] data; 010 011 /** 012 * @param tag the tag value. 013 * @param data the octets making up the time. 014 */ 015 public DERUnknownTag( 016 int tag, 017 byte[] data) { 018 this.tag = tag; 019 this.data = data; 020 } 021 022 public int getTag() { 023 return tag; 024 } 025 026 public byte[] getData() { 027 return data; 028 } 029 030 void encode( 031 DEROutputStream out) 032 throws IOException { 033 out.writeEncoded(tag, data); 034 } 035 036 public boolean equals( 037 Object o) { 038 if (!(o instanceof DERUnknownTag)) { 039 return false; 040 } 041 042 DERUnknownTag other = (DERUnknownTag) o; 043 044 if (tag != other.tag) { 045 return false; 046 } 047 048 if (data.length != other.data.length) { 049 return false; 050 } 051 052 for (int i = 0; i < data.length; i++) { 053 if (data[i] != other.data[i]) { 054 return false; 055 } 056 } 057 058 return true; 059 } 060 061 public int hashCode() { 062 byte[] b = this.getData(); 063 int value = 0; 064 065 for (int i = 0; i != b.length; i++) { 066 value ^= (b[i] & 0xff) << (i % 4); 067 } 068 069 return value ^ this.getTag(); 070 } 071 }