001package org.apache.commons.ssl.org.bouncycastle.asn1.pkcs; 002 003import java.math.BigInteger; 004 005import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1EncodableVector; 006import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Integer; 007import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Object; 008import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1OctetString; 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.DEROctetString; 012import org.apache.commons.ssl.org.bouncycastle.asn1.DERSequence; 013 014public class RC2CBCParameter 015 extends ASN1Object 016{ 017 ASN1Integer version; 018 ASN1OctetString iv; 019 020 public static RC2CBCParameter getInstance( 021 Object o) 022 { 023 if (o instanceof RC2CBCParameter) 024 { 025 return (RC2CBCParameter)o; 026 } 027 if (o != null) 028 { 029 return new RC2CBCParameter(ASN1Sequence.getInstance(o)); 030 } 031 032 return null; 033 } 034 035 public RC2CBCParameter( 036 byte[] iv) 037 { 038 this.version = null; 039 this.iv = new DEROctetString(iv); 040 } 041 042 public RC2CBCParameter( 043 int parameterVersion, 044 byte[] iv) 045 { 046 this.version = new ASN1Integer(parameterVersion); 047 this.iv = new DEROctetString(iv); 048 } 049 050 private RC2CBCParameter( 051 ASN1Sequence seq) 052 { 053 if (seq.size() == 1) 054 { 055 version = null; 056 iv = (ASN1OctetString)seq.getObjectAt(0); 057 } 058 else 059 { 060 version = (ASN1Integer)seq.getObjectAt(0); 061 iv = (ASN1OctetString)seq.getObjectAt(1); 062 } 063 } 064 065 public BigInteger getRC2ParameterVersion() 066 { 067 if (version == null) 068 { 069 return null; 070 } 071 072 return version.getValue(); 073 } 074 075 public byte[] getIV() 076 { 077 return iv.getOctets(); 078 } 079 080 public ASN1Primitive toASN1Primitive() 081 { 082 ASN1EncodableVector v = new ASN1EncodableVector(); 083 084 if (version != null) 085 { 086 v.add(version); 087 } 088 089 v.add(iv); 090 091 return new DERSequence(v); 092 } 093}