001package org.apache.commons.ssl.org.bouncycastle.asn1.eac; 002 003import java.math.BigInteger; 004 005import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Object; 006import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1OctetString; 007import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Primitive; 008import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1TaggedObject; 009import org.apache.commons.ssl.org.bouncycastle.asn1.DEROctetString; 010import org.apache.commons.ssl.org.bouncycastle.asn1.DERTaggedObject; 011 012public class UnsignedInteger 013 extends ASN1Object 014{ 015 private int tagNo; 016 private BigInteger value; 017 018 public UnsignedInteger(int tagNo, BigInteger value) 019 { 020 this.tagNo = tagNo; 021 this.value = value; 022 } 023 024 private UnsignedInteger(ASN1TaggedObject obj) 025 { 026 this.tagNo = obj.getTagNo(); 027 this.value = new BigInteger(1, ASN1OctetString.getInstance(obj, false).getOctets()); 028 } 029 030 public static UnsignedInteger getInstance(Object obj) 031 { 032 if (obj instanceof UnsignedInteger) 033 { 034 return (UnsignedInteger)obj; 035 } 036 if (obj != null) 037 { 038 return new UnsignedInteger(ASN1TaggedObject.getInstance(obj)); 039 } 040 041 return null; 042 } 043 044 private byte[] convertValue() 045 { 046 byte[] v = value.toByteArray(); 047 048 if (v[0] == 0) 049 { 050 byte[] tmp = new byte[v.length - 1]; 051 052 System.arraycopy(v, 1, tmp, 0, tmp.length); 053 054 return tmp; 055 } 056 057 return v; 058 } 059 060 public int getTagNo() 061 { 062 return tagNo; 063 } 064 065 public BigInteger getValue() 066 { 067 return value; 068 } 069 070 public ASN1Primitive toASN1Primitive() 071 { 072 return new DERTaggedObject(false, tagNo, new DEROctetString(convertValue())); 073 } 074}