001 /**
002 *
003 * Licensed to the Apache Software Foundation (ASF) under one or more
004 * contributor license agreements. See the NOTICE file distributed with
005 * this work for additional information regarding copyright ownership.
006 * The ASF licenses this file to You under the Apache License, Version 2.0
007 * (the "License"); you may not use this file except in compliance with
008 * the License. You may obtain a copy of the License at
009 *
010 * http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing, software
013 * distributed under the License is distributed on an "AS IS" BASIS,
014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015 * See the License for the specific language governing permissions and
016 * limitations under the License.
017 */
018
019 package org.apache.geronimo.util.crypto.params;
020
021 import java.math.BigInteger;
022
023 import org.apache.geronimo.util.crypto.CipherParameters;
024
025 public class DHParameters
026 implements CipherParameters
027 {
028 private BigInteger g;
029 private BigInteger p;
030 private BigInteger q;
031 private int j;
032 private DHValidationParameters validation;
033
034 public DHParameters(
035 BigInteger p,
036 BigInteger g)
037 {
038 this.g = g;
039 this.p = p;
040 }
041
042 public DHParameters(
043 BigInteger p,
044 BigInteger g,
045 BigInteger q,
046 int j)
047 {
048 this.g = g;
049 this.p = p;
050 this.q = q;
051 this.j = j;
052 }
053
054 public DHParameters(
055 BigInteger p,
056 BigInteger g,
057 BigInteger q,
058 int j,
059 DHValidationParameters validation)
060 {
061 this.g = g;
062 this.p = p;
063 this.q = q;
064 this.j = j;
065 }
066
067 public BigInteger getP()
068 {
069 return p;
070 }
071
072 public BigInteger getG()
073 {
074 return g;
075 }
076
077 public BigInteger getQ()
078 {
079 return q;
080 }
081
082 /**
083 * Return the private value length in bits - if set, zero otherwise (use bitLength(P) - 1).
084 *
085 * @return the private value length in bits, zero otherwise.
086 */
087 public int getJ()
088 {
089 return j;
090 }
091
092 public DHValidationParameters getValidationParameters()
093 {
094 return validation;
095 }
096
097 public boolean equals(
098 Object obj)
099 {
100 if (!(obj instanceof DHParameters))
101 {
102 return false;
103 }
104
105 DHParameters pm = (DHParameters)obj;
106
107 if (this.getValidationParameters() != null)
108 {
109 if (!this.getValidationParameters().equals(pm.getValidationParameters()))
110 {
111 return false;
112 }
113 }
114 else
115 {
116 if (pm.getValidationParameters() != null)
117 {
118 return false;
119 }
120 }
121
122 if (this.getQ() != null)
123 {
124 if (!this.getQ().equals(pm.getQ()))
125 {
126 return false;
127 }
128 }
129 else
130 {
131 if (pm.getQ() != null)
132 {
133 return false;
134 }
135 }
136
137 return (j == pm.getJ()) && pm.getP().equals(p) && pm.getG().equals(g);
138 }
139 }