1e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pellypackage org.bouncycastle.asn1.pkcs; 261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 3e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pellyimport java.math.BigInteger; 4e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pellyimport java.util.Enumeration; 5e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 6e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pellyimport org.bouncycastle.asn1.ASN1EncodableVector; 7e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pellyimport org.bouncycastle.asn1.ASN1Integer; 8e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pellyimport org.bouncycastle.asn1.ASN1Object; 9e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pellyimport org.bouncycastle.asn1.ASN1Primitive; 10e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pellyimport org.bouncycastle.asn1.ASN1Sequence; 116eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittalimport org.bouncycastle.asn1.DERSequence; 12e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 13e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pellypublic class DHParameter 14e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly extends ASN1Object 15e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly{ 16e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly ASN1Integer p, g, l; 17e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 18e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly public DHParameter( 19e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly BigInteger p, 20e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly BigInteger g, 21e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly int l) 22e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly { 23e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly this.p = new ASN1Integer(p); 24e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly this.g = new ASN1Integer(g); 25e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 26e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly if (l != 0) 27e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly { 28e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly this.l = new ASN1Integer(l); 29e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly } 30e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly else 31e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly { 32e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly this.l = null; 33e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly } 34e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly } 35e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 36e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly public static DHParameter getInstance( 37826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev Object obj) 38278952ff92fab2da0c47b912daeb662130676be1Haynes Mathew George { 39826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev if (obj instanceof DHParameter) 40e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly { 418767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan return (DHParameter)obj; 428767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan } 438767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan 448767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan if (obj != null) 458767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan { 468767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan return new DHParameter(ASN1Sequence.getInstance(obj)); 47e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly } 48e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 49e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly return null; 50e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly } 51e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 52e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly private DHParameter( 53e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly ASN1Sequence seq) 54e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly { 55e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly Enumeration e = seq.getObjects(); 56e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 57e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly p = ASN1Integer.getInstance(e.nextElement()); 58e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly g = ASN1Integer.getInstance(e.nextElement()); 59e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 60e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly if (e.hasMoreElements()) 61e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly { 62e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly l = (ASN1Integer)e.nextElement(); 638767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan } 648767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan else 658767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan { 668767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan l = null; 67e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin } 68e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin } 69e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin 70e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin public BigInteger getP() 71e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly { 7261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return p.getPositiveValue(); 7361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 7461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 7561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan public BigInteger getG() 7661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan { 77e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly return g.getPositiveValue(); 78e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly } 7961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 8061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan public BigInteger getL() 8161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan { 8261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (l == null) 8361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan { 84e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly return null; 858767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan } 868767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan 878767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan return l.getPositiveValue(); 888767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan } 898767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan 90e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin public ASN1Primitive toASN1Primitive() 918767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan { 928767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan ASN1EncodableVector v = new ASN1EncodableVector(); 938767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan 94e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin v.add(p); 958767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan v.add(g); 968767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan 978767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan if (this.getL() != null) 988767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan { 99e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin v.add(l); 1008767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan } 101826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 10261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return new DERSequence(v); 103826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev } 104826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} 105826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev