16e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrompackage org.bouncycastle.asn1.x9; 26e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 36e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstromimport org.bouncycastle.asn1.ASN1EncodableVector; 44c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.asn1.ASN1Integer; 54c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.asn1.ASN1Object; 64c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.asn1.ASN1Primitive; 76e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstromimport org.bouncycastle.asn1.ASN1Sequence; 86e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstromimport org.bouncycastle.asn1.ASN1TaggedObject; 96e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstromimport org.bouncycastle.asn1.DERBitString; 106e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstromimport org.bouncycastle.asn1.DERSequence; 116e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 124c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrompublic class DHValidationParms extends ASN1Object 136e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom{ 146e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom private DERBitString seed; 154c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom private ASN1Integer pgenCounter; 166e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 176e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static DHValidationParms getInstance(ASN1TaggedObject obj, boolean explicit) 186e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom { 196e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom return getInstance(ASN1Sequence.getInstance(obj, explicit)); 206e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom } 216e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 226e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static DHValidationParms getInstance(Object obj) 236e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom { 246e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom if (obj == null || obj instanceof DHDomainParameters) 256e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom { 266e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom return (DHValidationParms)obj; 276e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom } 286e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 296e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom if (obj instanceof ASN1Sequence) 306e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom { 316e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom return new DHValidationParms((ASN1Sequence)obj); 326e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom } 336e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 346e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom throw new IllegalArgumentException("Invalid DHValidationParms: " + obj.getClass().getName()); 356e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom } 366e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 374c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public DHValidationParms(DERBitString seed, ASN1Integer pgenCounter) 386e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom { 396e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom if (seed == null) 406e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom { 416e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom throw new IllegalArgumentException("'seed' cannot be null"); 426e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom } 436e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom if (pgenCounter == null) 446e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom { 456e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom throw new IllegalArgumentException("'pgenCounter' cannot be null"); 466e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom } 476e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 486e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom this.seed = seed; 496e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom this.pgenCounter = pgenCounter; 506e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom } 516e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 526e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom private DHValidationParms(ASN1Sequence seq) 536e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom { 546e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom if (seq.size() != 2) 556e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom { 566e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom throw new IllegalArgumentException("Bad sequence size: " + seq.size()); 576e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom } 586e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 596e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom this.seed = DERBitString.getInstance(seq.getObjectAt(0)); 604c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom this.pgenCounter = ASN1Integer.getInstance(seq.getObjectAt(1)); 616e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom } 626e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 636e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public DERBitString getSeed() 646e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom { 656e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom return this.seed; 666e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom } 676e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 684c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public ASN1Integer getPgenCounter() 696e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom { 706e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom return this.pgenCounter; 716e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom } 726e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 734c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public ASN1Primitive toASN1Primitive() 746e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom { 756e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom ASN1EncodableVector v = new ASN1EncodableVector(); 766e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom v.add(this.seed); 776e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom v.add(this.pgenCounter); 786e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom return new DERSequence(v); 796e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom } 806e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom} 81