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