001package org.apache.commons.ssl.org.bouncycastle.asn1.x509.qualified; 002 003import java.math.BigInteger; 004import java.util.Enumeration; 005 006import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1EncodableVector; 007import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Integer; 008import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Object; 009import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Primitive; 010import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Sequence; 011import org.apache.commons.ssl.org.bouncycastle.asn1.DERSequence; 012 013/** 014 * The MonetaryValue object. 015 * <pre> 016 * MonetaryValue ::= SEQUENCE { 017 * currency Iso4217CurrencyCode, 018 * amount INTEGER, 019 * exponent INTEGER } 020 * -- value = amount * 10^exponent 021 * </pre> 022 */ 023public class MonetaryValue 024 extends ASN1Object 025{ 026 private Iso4217CurrencyCode currency; 027 private ASN1Integer amount; 028 private ASN1Integer exponent; 029 030 public static MonetaryValue getInstance( 031 Object obj) 032 { 033 if (obj instanceof MonetaryValue) 034 { 035 return (MonetaryValue)obj; 036 } 037 038 if (obj != null) 039 { 040 return new MonetaryValue(ASN1Sequence.getInstance(obj)); 041 } 042 043 return null; 044 } 045 046 private MonetaryValue( 047 ASN1Sequence seq) 048 { 049 Enumeration e = seq.getObjects(); 050 // currency 051 currency = Iso4217CurrencyCode.getInstance(e.nextElement()); 052 // hashAlgorithm 053 amount = ASN1Integer.getInstance(e.nextElement()); 054 // exponent 055 exponent = ASN1Integer.getInstance(e.nextElement()); 056 } 057 058 public MonetaryValue( 059 Iso4217CurrencyCode currency, 060 int amount, 061 int exponent) 062 { 063 this.currency = currency; 064 this.amount = new ASN1Integer(amount); 065 this.exponent = new ASN1Integer(exponent); 066 } 067 068 public Iso4217CurrencyCode getCurrency() 069 { 070 return currency; 071 } 072 073 public BigInteger getAmount() 074 { 075 return amount.getValue(); 076 } 077 078 public BigInteger getExponent() 079 { 080 return exponent.getValue(); 081 } 082 083 public ASN1Primitive toASN1Primitive() 084 { 085 ASN1EncodableVector seq = new ASN1EncodableVector(); 086 seq.add(currency); 087 seq.add(amount); 088 seq.add(exponent); 089 090 return new DERSequence(seq); 091 } 092}