001 /** 002 * 003 * Licensed to the Apache Software Foundation (ASF) under one or more 004 * contributor license agreements. See the NOTICE file distributed with 005 * this work for additional information regarding copyright ownership. 006 * The ASF licenses this file to You under the Apache License, Version 2.0 007 * (the "License"); you may not use this file except in compliance with 008 * the License. You may obtain a copy of the License at 009 * 010 * http://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, software 013 * distributed under the License is distributed on an "AS IS" BASIS, 014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 015 * See the License for the specific language governing permissions and 016 * limitations under the License. 017 */ 018 019 package org.apache.geronimo.util.asn1.x509; 020 021 import org.apache.geronimo.util.asn1.ASN1OctetString; 022 import org.apache.geronimo.util.asn1.DERBoolean; 023 024 /** 025 * an object for the elements in the X.509 V3 extension block. 026 */ 027 public class X509Extension 028 { 029 boolean critical; 030 ASN1OctetString value; 031 032 public X509Extension( 033 DERBoolean critical, 034 ASN1OctetString value) 035 { 036 this.critical = critical.isTrue(); 037 this.value = value; 038 } 039 040 public X509Extension( 041 boolean critical, 042 ASN1OctetString value) 043 { 044 this.critical = critical; 045 this.value = value; 046 } 047 048 public boolean isCritical() 049 { 050 return critical; 051 } 052 053 public ASN1OctetString getValue() 054 { 055 return value; 056 } 057 058 public int hashCode() 059 { 060 if (this.isCritical()) 061 { 062 return this.getValue().hashCode(); 063 } 064 065 066 return ~this.getValue().hashCode(); 067 } 068 069 public boolean equals( 070 Object o) 071 { 072 if (o == null || !(o instanceof X509Extension)) 073 { 074 return false; 075 } 076 077 X509Extension other = (X509Extension)o; 078 079 return other.getValue().equals(this.getValue()) 080 && (other.isCritical() == this.isCritical()); 081 } 082 }