001package org.apache.commons.ssl.org.bouncycastle.asn1.pkcs; 002 003import java.math.BigInteger; 004import java.util.Enumeration; 005 006import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1EncodableVector; 007import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Integer; 008import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Object; 009import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Primitive; 010import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Sequence; 011import org.apache.commons.ssl.org.bouncycastle.asn1.DERSequence; 012 013public class DHParameter 014 extends ASN1Object 015{ 016 ASN1Integer p, g, l; 017 018 public DHParameter( 019 BigInteger p, 020 BigInteger g, 021 int l) 022 { 023 this.p = new ASN1Integer(p); 024 this.g = new ASN1Integer(g); 025 026 if (l != 0) 027 { 028 this.l = new ASN1Integer(l); 029 } 030 else 031 { 032 this.l = null; 033 } 034 } 035 036 public static DHParameter getInstance( 037 Object obj) 038 { 039 if (obj instanceof DHParameter) 040 { 041 return (DHParameter)obj; 042 } 043 044 if (obj != null) 045 { 046 return new DHParameter(ASN1Sequence.getInstance(obj)); 047 } 048 049 return null; 050 } 051 052 private DHParameter( 053 ASN1Sequence seq) 054 { 055 Enumeration e = seq.getObjects(); 056 057 p = ASN1Integer.getInstance(e.nextElement()); 058 g = ASN1Integer.getInstance(e.nextElement()); 059 060 if (e.hasMoreElements()) 061 { 062 l = (ASN1Integer)e.nextElement(); 063 } 064 else 065 { 066 l = null; 067 } 068 } 069 070 public BigInteger getP() 071 { 072 return p.getPositiveValue(); 073 } 074 075 public BigInteger getG() 076 { 077 return g.getPositiveValue(); 078 } 079 080 public BigInteger getL() 081 { 082 if (l == null) 083 { 084 return null; 085 } 086 087 return l.getPositiveValue(); 088 } 089 090 public ASN1Primitive toASN1Primitive() 091 { 092 ASN1EncodableVector v = new ASN1EncodableVector(); 093 094 v.add(p); 095 v.add(g); 096 097 if (this.getL() != null) 098 { 099 v.add(l); 100 } 101 102 return new DERSequence(v); 103 } 104}