1f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpackage org.bouncycastle.asn1.misc; 2f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport org.bouncycastle.asn1.*; 4f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 5f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpublic class IDEACBCPar 6f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project extends ASN1Encodable 7f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project{ 8f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ASN1OctetString iv; 9f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 10f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static IDEACBCPar getInstance( 11f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Object o) 12f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project { 13f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (o instanceof IDEACBCPar) 14f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project { 15f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return (IDEACBCPar)o; 16f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 17f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project else if (o instanceof ASN1Sequence) 18f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project { 19f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return new IDEACBCPar((ASN1Sequence)o); 20f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 21f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 22f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new IllegalArgumentException("unknown object in IDEACBCPar factory"); 23f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 24f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 25f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public IDEACBCPar( 26f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] iv) 27f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project { 28f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project this.iv = new DEROctetString(iv); 29f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 30f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 31f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public IDEACBCPar( 32f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ASN1Sequence seq) 33f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project { 34f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (seq.size() == 1) 35f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project { 36f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project iv = (ASN1OctetString)seq.getObjectAt(0); 37f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 38f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project else 39f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project { 40f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project iv = null; 41f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 42f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 43f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 44f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public byte[] getIV() 45f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project { 46f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (iv != null) 47f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project { 48f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return iv.getOctets(); 49f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 50f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project else 51f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project { 52f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return null; 53f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 54f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 55f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 56f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 57f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Produce an object suitable for an ASN1OutputStream. 58f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <pre> 59f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * IDEA-CBCPar ::= SEQUENCE { 60f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * iv OCTET STRING OPTIONAL -- exactly 8 octets 61f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * } 62f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * </pre> 63f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 64f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public DERObject toASN1Object() 65f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project { 66f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ASN1EncodableVector v = new ASN1EncodableVector(); 67f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 68f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (iv != null) 69f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project { 70f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project v.add(iv); 71f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 72f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 73f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return new DERSequence(v); 74f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 75f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project} 76