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.ASN1Integer; 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.ASN1Sequence; 009import org.apache.commons.ssl.org.bouncycastle.asn1.DEROctetString; 010import org.apache.commons.ssl.org.bouncycastle.asn1.DERSequence; 011 012public class CAST5CBCParameters 013 extends ASN1Object 014{ 015 ASN1Integer keyLength; 016 ASN1OctetString iv; 017 018 public static CAST5CBCParameters getInstance( 019 Object o) 020 { 021 if (o instanceof CAST5CBCParameters) 022 { 023 return (CAST5CBCParameters)o; 024 } 025 else if (o != null) 026 { 027 return new CAST5CBCParameters(ASN1Sequence.getInstance(o)); 028 } 029 030 return null; 031 } 032 033 public CAST5CBCParameters( 034 byte[] iv, 035 int keyLength) 036 { 037 this.iv = new DEROctetString(iv); 038 this.keyLength = new ASN1Integer(keyLength); 039 } 040 041 public CAST5CBCParameters( 042 ASN1Sequence seq) 043 { 044 iv = (ASN1OctetString)seq.getObjectAt(0); 045 keyLength = (ASN1Integer)seq.getObjectAt(1); 046 } 047 048 public byte[] getIV() 049 { 050 return iv.getOctets(); 051 } 052 053 public int getKeyLength() 054 { 055 return keyLength.getValue().intValue(); 056 } 057 058 /** 059 * Produce an object suitable for an ASN1OutputStream. 060 * <pre> 061 * cast5CBCParameters ::= SEQUENCE { 062 * iv OCTET STRING DEFAULT 0, 063 * -- Initialization vector 064 * keyLength INTEGER 065 * -- Key length, in bits 066 * } 067 * </pre> 068 */ 069 public ASN1Primitive toASN1Primitive() 070 { 071 ASN1EncodableVector v = new ASN1EncodableVector(); 072 073 v.add(iv); 074 v.add(keyLength); 075 076 return new DERSequence(v); 077 } 078}