001package org.apache.commons.ssl.org.bouncycastle.asn1.misc; 002 003import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1EncodableVector; 004import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Object; 005import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1OctetString; 006import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Primitive; 007import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Sequence; 008import org.apache.commons.ssl.org.bouncycastle.asn1.DEROctetString; 009import org.apache.commons.ssl.org.bouncycastle.asn1.DERSequence; 010 011public class IDEACBCPar 012 extends ASN1Object 013{ 014 ASN1OctetString iv; 015 016 public static IDEACBCPar getInstance( 017 Object o) 018 { 019 if (o instanceof IDEACBCPar) 020 { 021 return (IDEACBCPar)o; 022 } 023 else if (o != null) 024 { 025 return new IDEACBCPar(ASN1Sequence.getInstance(o)); 026 } 027 028 return null; 029 } 030 031 public IDEACBCPar( 032 byte[] iv) 033 { 034 this.iv = new DEROctetString(iv); 035 } 036 037 public IDEACBCPar( 038 ASN1Sequence seq) 039 { 040 if (seq.size() == 1) 041 { 042 iv = (ASN1OctetString)seq.getObjectAt(0); 043 } 044 else 045 { 046 iv = null; 047 } 048 } 049 050 public byte[] getIV() 051 { 052 if (iv != null) 053 { 054 return iv.getOctets(); 055 } 056 else 057 { 058 return null; 059 } 060 } 061 062 /** 063 * Produce an object suitable for an ASN1OutputStream. 064 * <pre> 065 * IDEA-CBCPar ::= SEQUENCE { 066 * iv OCTET STRING OPTIONAL -- exactly 8 octets 067 * } 068 * </pre> 069 */ 070 public ASN1Primitive toASN1Primitive() 071 { 072 ASN1EncodableVector v = new ASN1EncodableVector(); 073 074 if (iv != null) 075 { 076 v.add(iv); 077 } 078 079 return new DERSequence(v); 080 } 081}