1/*
2 * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.  Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26package javax.crypto.spec;
27
28import java.math.BigInteger;
29
30/**
31 * This class specifies a Diffie-Hellman public key with its associated
32 * parameters.
33 *
34 * <p>Note that this class does not perform any validation on specified
35 * parameters. Thus, the specified values are returned directly even
36 * if they are null.
37 *
38 * @author Jan Luehe
39 *
40 * @see DHPrivateKeySpec
41 * @since 1.4
42 */
43public class DHPublicKeySpec implements java.security.spec.KeySpec {
44
45    // The public value
46    private BigInteger y;
47
48    // The prime modulus
49    private BigInteger p;
50
51    // The base generator
52    private BigInteger g;
53
54    /**
55     * Constructor that takes a public value <code>y</code>, a prime
56     * modulus <code>p</code>, and a base generator <code>g</code>.
57     * @param y  public value y
58     * @param p  prime modulus p
59     * @param g  base generator g
60     */
61    public DHPublicKeySpec(BigInteger y, BigInteger p, BigInteger g) {
62        this.y = y;
63        this.p = p;
64        this.g = g;
65    }
66
67    /**
68     * Returns the public value <code>y</code>.
69     *
70     * @return the public value <code>y</code>
71     */
72    public BigInteger getY() {
73        return this.y;
74    }
75
76    /**
77     * Returns the prime modulus <code>p</code>.
78     *
79     * @return the prime modulus <code>p</code>
80     */
81    public BigInteger getP() {
82        return this.p;
83    }
84
85    /**
86     * Returns the base generator <code>g</code>.
87     *
88     * @return the base generator <code>g</code>
89     */
90    public BigInteger getG() {
91        return this.g;
92    }
93}
94