History

My first initial commit with all of mine experimental changes.

Dmitry Kabak (userdima committed 13 years ago

Commit d37b88d1 parent 3f5b46618352 files · +2598093 −-8690Browse files

Showing the changes to java/pkg/java/security/spec (56 of 18352 files). Show all

Unified · Split

56 files
  1. java/pkg/java/security/spec/AlgorithmParameterSpec.class +0 −0
  2. java/pkg/java/security/spec/AlgorithmParameterSpec.java +44 −0
  3. java/pkg/java/security/spec/DSAParameterSpec.class +0 −0
  4. java/pkg/java/security/spec/DSAParameterSpec.java +89 −0
  5. java/pkg/java/security/spec/DSAPrivateKeySpec.class +0 −0
  6. java/pkg/java/security/spec/DSAPrivateKeySpec.java +106 −0
  7. java/pkg/java/security/spec/DSAPublicKeySpec.class +0 −0
  8. java/pkg/java/security/spec/DSAPublicKeySpec.java +106 −0
  9. java/pkg/java/security/spec/ECField.class +0 −0
  10. java/pkg/java/security/spec/ECField.java +49 −0
  11. java/pkg/java/security/spec/ECFieldF2m.class +0 −0
  12. java/pkg/java/security/spec/ECFieldF2m.java +241 −0
  13. java/pkg/java/security/spec/ECFieldFp.class +0 −0
  14. java/pkg/java/security/spec/ECFieldFp.java +98 −0
  15. java/pkg/java/security/spec/ECGenParameterSpec.class +0 −0
  16. java/pkg/java/security/spec/ECGenParameterSpec.java +68 −0
  17. java/pkg/java/security/spec/ECParameterSpec.class +0 −0
  18. java/pkg/java/security/spec/ECParameterSpec.java +113 −0
  19. java/pkg/java/security/spec/ECPoint.class +0 −0
  20. java/pkg/java/security/spec/ECPoint.java +114 −0
  21. java/pkg/java/security/spec/ECPrivateKeySpec.class +0 −0
  22. java/pkg/java/security/spec/ECPrivateKeySpec.java +81 −0
  23. java/pkg/java/security/spec/ECPublicKeySpec.class +0 −0
  24. java/pkg/java/security/spec/ECPublicKeySpec.java +85 −0
  25. java/pkg/java/security/spec/EllipticCurve.class +0 −0
  26. java/pkg/java/security/spec/EllipticCurve.java +196 −0
  27. java/pkg/java/security/spec/EncodedKeySpec.class +0 −0
  28. java/pkg/java/security/spec/EncodedKeySpec.java +85 −0
  29. java/pkg/java/security/spec/InvalidKeySpecException.class +0 −0
  30. java/pkg/java/security/spec/InvalidKeySpecException.java +94 −0
  31. java/pkg/java/security/spec/InvalidParameterSpecException.class +0 −0
  32. java/pkg/java/security/spec/InvalidParameterSpecException.java +66 −0
  33. java/pkg/java/security/spec/KeySpec.class +0 −0
  34. java/pkg/java/security/spec/KeySpec.java +62 −0
  35. java/pkg/java/security/spec/MGF1ParameterSpec.class +0 −0
  36. java/pkg/java/security/spec/MGF1ParameterSpec.java +107 −0
  37. java/pkg/java/security/spec/PKCS8EncodedKeySpec.class +0 −0
  38. java/pkg/java/security/spec/PKCS8EncodedKeySpec.java +96 −0
  39. java/pkg/java/security/spec/PSSParameterSpec.class +0 −0
  40. java/pkg/java/security/spec/PSSParameterSpec.java +211 −0
  41. java/pkg/java/security/spec/RSAKeyGenParameterSpec.class +0 −0
  42. java/pkg/java/security/spec/RSAKeyGenParameterSpec.java +86 −0
  43. java/pkg/java/security/spec/RSAMultiPrimePrivateCrtKeySpec.class +0 −0
  44. java/pkg/java/security/spec/RSAMultiPrimePrivateCrtKeySpec.java +212 −0
  45. java/pkg/java/security/spec/RSAOtherPrimeInfo.class +0 −0
  46. java/pkg/java/security/spec/RSAOtherPrimeInfo.java +120 −0
  47. java/pkg/java/security/spec/RSAPrivateCrtKeySpec.class +0 −0
  48. java/pkg/java/security/spec/RSAPrivateCrtKeySpec.java +143 −0
  49. java/pkg/java/security/spec/RSAPrivateKeySpec.class +0 −0
  50. java/pkg/java/security/spec/RSAPrivateKeySpec.java +77 −0
  51. java/pkg/java/security/spec/RSAPublicKeySpec.class +0 −0
  52. java/pkg/java/security/spec/RSAPublicKeySpec.java +77 −0
  53. java/pkg/java/security/spec/X509EncodedKeySpec.class +0 −0
  54. java/pkg/java/security/spec/X509EncodedKeySpec.java +86 −0
  55. java/pkg/java/security/spec/mkfile +34 −0
  56. java/pkg/java/security/spec/package.html +78 −0
java/pkg/java/security/spec/AlgorithmParameterSpec.class+0−0

Binary file not shown.

java/pkg/java/security/spec/AlgorithmParameterSpec.java+44−0
@@ -0,0 +1,44 @@
1/*
2 * Copyright (c) 1997, 1999, 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 java.security.spec;
27
28/**
29 * A (transparent) specification of cryptographic parameters.
30 *
31 * <P> This interface contains no methods or constants. Its only purpose
32 * is to group (and provide type safety for) all parameter specifications.
33 * All parameter specifications must implement this interface.
34 *
35 * @author Jan Luehe
36 *
37 *
38 * @see java.security.AlgorithmParameters
39 * @see DSAParameterSpec
40 *
41 * @since 1.2
42 */
43
44public interface AlgorithmParameterSpec { }
java/pkg/java/security/spec/DSAParameterSpec.class+0−0

Binary file not shown.

java/pkg/java/security/spec/DSAParameterSpec.java+89−0
@@ -0,0 +1,89 @@
1/*
2 * Copyright (c) 1997, 1999, 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 java.security.spec;
27
28import java.math.BigInteger;
29
30/**
31 * This class specifies the set of parameters used with the DSA algorithm.
32 *
33 * @author Jan Luehe
34 *
35 *
36 * @see AlgorithmParameterSpec
37 *
38 * @since 1.2
39 */
40
41public class DSAParameterSpec implements AlgorithmParameterSpec,
42java.security.interfaces.DSAParams {
43
44 BigInteger p;
45 BigInteger q;
46 BigInteger g;
47
48 /**
49 * Creates a new DSAParameterSpec with the specified parameter values.
50 *
51 * @param p the prime.
52 *
53 * @param q the sub-prime.
54 *
55 * @param g the base.
56 */
57 public DSAParameterSpec(BigInteger p, BigInteger q, BigInteger g) {
58 this.p = p;
59 this.q = q;
60 this.g = g;
61 }
62
63 /**
64 * Returns the prime <code>p</code>.
65 *
66 * @return the prime <code>p</code>.
67 */
68 public BigInteger getP() {
69 return this.p;
70 }
71
72 /**
73 * Returns the sub-prime <code>q</code>.
74 *
75 * @return the sub-prime <code>q</code>.
76 */
77 public BigInteger getQ() {
78 return this.q;
79 }
80
81 /**
82 * Returns the base <code>g</code>.
83 *
84 * @return the base <code>g</code>.
85 */
86 public BigInteger getG() {
87 return this.g;
88 }
89}
java/pkg/java/security/spec/DSAPrivateKeySpec.class+0−0

Binary file not shown.

java/pkg/java/security/spec/DSAPrivateKeySpec.java+106−0
@@ -0,0 +1,106 @@
1/*
2 * Copyright (c) 1997, 1999, 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 java.security.spec;
27
28import java.math.BigInteger;
29
30/**
31 * This class specifies a DSA private key with its associated parameters.
32 *
33 * @author Jan Luehe
34 *
35 *
36 * @see java.security.Key
37 * @see java.security.KeyFactory
38 * @see KeySpec
39 * @see DSAPublicKeySpec
40 * @see PKCS8EncodedKeySpec
41 *
42 * @since 1.2
43 */
44
45public class DSAPrivateKeySpec implements KeySpec {
46
47 private BigInteger x;
48 private BigInteger p;
49 private BigInteger q;
50 private BigInteger g;
51
52 /**
53 * Creates a new DSAPrivateKeySpec with the specified parameter values.
54 *
55 * @param x the private key.
56 *
57 * @param p the prime.
58 *
59 * @param q the sub-prime.
60 *
61 * @param g the base.
62 */
63 public DSAPrivateKeySpec(BigInteger x, BigInteger p, BigInteger q,
64 BigInteger g) {
65 this.x = x;
66 this.p = p;
67 this.q = q;
68 this.g = g;
69 }
70
71 /**
72 * Returns the private key <code>x</code>.
73 *
74 * @return the private key <code>x</code>.
75 */
76 public BigInteger getX() {
77 return this.x;
78 }
79
80 /**
81 * Returns the prime <code>p</code>.
82 *
83 * @return the prime <code>p</code>.
84 */
85 public BigInteger getP() {
86 return this.p;
87 }
88
89 /**
90 * Returns the sub-prime <code>q</code>.
91 *
92 * @return the sub-prime <code>q</code>.
93 */
94 public BigInteger getQ() {
95 return this.q;
96 }
97
98 /**
99 * Returns the base <code>g</code>.
100 *
101 * @return the base <code>g</code>.
102 */
103 public BigInteger getG() {
104 return this.g;
105 }
106}
java/pkg/java/security/spec/DSAPublicKeySpec.class+0−0

Binary file not shown.

java/pkg/java/security/spec/DSAPublicKeySpec.java+106−0
@@ -0,0 +1,106 @@
1/*
2 * Copyright (c) 1997, 1999, 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 java.security.spec;
27
28import java.math.BigInteger;
29
30/**
31 * This class specifies a DSA public key with its associated parameters.
32 *
33 * @author Jan Luehe
34 *
35 *
36 * @see java.security.Key
37 * @see java.security.KeyFactory
38 * @see KeySpec
39 * @see DSAPrivateKeySpec
40 * @see X509EncodedKeySpec
41 *
42 * @since 1.2
43 */
44
45public class DSAPublicKeySpec implements KeySpec {
46
47 private BigInteger y;
48 private BigInteger p;
49 private BigInteger q;
50 private BigInteger g;
51
52 /**
53 * Creates a new DSAPublicKeySpec with the specified parameter values.
54 *
55 * @param y the public key.
56 *
57 * @param p the prime.
58 *
59 * @param q the sub-prime.
60 *
61 * @param g the base.
62 */
63 public DSAPublicKeySpec(BigInteger y, BigInteger p, BigInteger q,
64 BigInteger g) {
65 this.y = y;
66 this.p = p;
67 this.q = q;
68 this.g = g;
69 }
70
71 /**
72 * Returns the public key <code>y</code>.
73 *
74 * @return the public key <code>y</code>.
75 */
76 public BigInteger getY() {
77 return this.y;
78 }
79
80 /**
81 * Returns the prime <code>p</code>.
82 *
83 * @return the prime <code>p</code>.
84 */
85 public BigInteger getP() {
86 return this.p;
87 }
88
89 /**
90 * Returns the sub-prime <code>q</code>.
91 *
92 * @return the sub-prime <code>q</code>.
93 */
94 public BigInteger getQ() {
95 return this.q;
96 }
97
98 /**
99 * Returns the base <code>g</code>.
100 *
101 * @return the base <code>g</code>.
102 */
103 public BigInteger getG() {
104 return this.g;
105 }
106}
java/pkg/java/security/spec/ECField.class+0−0

Binary file not shown.

java/pkg/java/security/spec/ECField.java+49−0
@@ -0,0 +1,49 @@
1/*
2 * Copyright (c) 2003, 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 */
25package java.security.spec;
26
27import java.math.BigInteger;
28import java.util.Arrays;
29
30/**
31 * This interface represents an elliptic curve (EC) finite field.
32 * All specialized EC fields must implements this interface.
33 *
34 * @see ECFieldFp
35 * @see ECFieldF2m
36 *
37 * @author Valerie Peng
38 *
39 * @since 1.5
40 */
41public interface ECField {
42 /**
43 * Returns the field size in bits. Note: For prime finite
44 * field ECFieldFp, size of prime p in bits is returned.
45 * For characteristic 2 finite field ECFieldF2m, m is returned.
46 * @return the field size in bits.
47 */
48 int getFieldSize();
49}
java/pkg/java/security/spec/ECFieldF2m.class+0−0

Binary file not shown.

java/pkg/java/security/spec/ECFieldF2m.java+241−0
@@ -0,0 +1,241 @@
1/*
2 * Copyright (c) 2003, 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 */
25package java.security.spec;
26
27import java.math.BigInteger;
28import java.util.Arrays;
29
30/**
31 * This immutable class defines an elliptic curve (EC)
32 * characteristic 2 finite field.
33 *
34 * @see ECField
35 *
36 * @author Valerie Peng
37 *
38 * @since 1.5
39 */
40public class ECFieldF2m implements ECField {
41
42 private int m;
43 private int[] ks;
44 private BigInteger rp;
45
46 /**
47 * Creates an elliptic curve characteristic 2 finite
48 * field which has 2^<code>m</code> elements with normal basis.
49 * @param m with 2^<code>m</code> being the number of elements.
50 * @exception IllegalArgumentException if <code>m</code>
51 * is not positive.
52 */
53 public ECFieldF2m(int m) {
54 if (m <= 0) {
55 throw new IllegalArgumentException("m is not positive");
56 }
57 this.m = m;
58 this.ks = null;
59 this.rp = null;
60 }
61
62 /**
63 * Creates an elliptic curve characteristic 2 finite
64 * field which has 2^<code>m</code> elements with
65 * polynomial basis.
66 * The reduction polynomial for this field is based
67 * on <code>rp</code> whose i-th bit correspondes to
68 * the i-th coefficient of the reduction polynomial.<p>
69 * Note: A valid reduction polynomial is either a
70 * trinomial (X^<code>m</code> + X^<code>k</code> + 1
71 * with <code>m</code> > <code>k</code> >= 1) or a
72 * pentanomial (X^<code>m</code> + X^<code>k3</code>
73 * + X^<code>k2</code> + X^<code>k1</code> + 1 with
74 * <code>m</code> > <code>k3</code> > <code>k2</code>
75 * > <code>k1</code> >= 1).
76 * @param m with 2^<code>m</code> being the number of elements.
77 * @param rp the BigInteger whose i-th bit corresponds to
78 * the i-th coefficient of the reduction polynomial.
79 * @exception NullPointerException if <code>rp</code> is null.
80 * @exception IllegalArgumentException if <code>m</code>
81 * is not positive, or <code>rp</code> does not represent
82 * a valid reduction polynomial.
83 */
84 public ECFieldF2m(int m, BigInteger rp) {
85 // check m and rp
86 this.m = m;
87 this.rp = rp;
88 if (m <= 0) {
89 throw new IllegalArgumentException("m is not positive");
90 }
91 int bitCount = this.rp.bitCount();
92 if (!this.rp.testBit(0) || !this.rp.testBit(m) ||
93 ((bitCount != 3) && (bitCount != 5))) {
94 throw new IllegalArgumentException
95 ("rp does not represent a valid reduction polynomial");
96 }
97 // convert rp into ks
98 BigInteger temp = this.rp.clearBit(0).clearBit(m);
99 this.ks = new int[bitCount-2];
100 for (int i = this.ks.length-1; i >= 0; i--) {
101 int index = temp.getLowestSetBit();
102 this.ks[i] = index;
103 temp = temp.clearBit(index);
104 }
105 }
106
107 /**
108 * Creates an elliptic curve characteristic 2 finite
109 * field which has 2^<code>m</code> elements with
110 * polynomial basis. The reduction polynomial for this
111 * field is based on <code>ks</code> whose content
112 * contains the order of the middle term(s) of the
113 * reduction polynomial.
114 * Note: A valid reduction polynomial is either a
115 * trinomial (X^<code>m</code> + X^<code>k</code> + 1
116 * with <code>m</code> > <code>k</code> >= 1) or a
117 * pentanomial (X^<code>m</code> + X^<code>k3</code>
118 * + X^<code>k2</code> + X^<code>k1</code> + 1 with
119 * <code>m</code> > <code>k3</code> > <code>k2</code>
120 * > <code>k1</code> >= 1), so <code>ks</code> should
121 * have length 1 or 3.
122 * @param m with 2^<code>m</code> being the number of elements.
123 * @param ks the order of the middle term(s) of the
124 * reduction polynomial. Contents of this array are copied
125 * to protect against subsequent modification.
126 * @exception NullPointerException if <code>ks</code> is null.
127 * @exception IllegalArgumentException if<code>m</code>
128 * is not positive, or the length of <code>ks</code>
129 * is neither 1 nor 3, or values in <code>ks</code>
130 * are not between <code>m</code>-1 and 1 (inclusive)
131 * and in descending order.
132 */
133 public ECFieldF2m(int m, int[] ks) {
134 // check m and ks
135 this.m = m;
136 this.ks = ks.clone();
137 if (m <= 0) {
138 throw new IllegalArgumentException("m is not positive");
139 }
140 if ((this.ks.length != 1) && (this.ks.length != 3)) {
141 throw new IllegalArgumentException
142 ("length of ks is neither 1 nor 3");
143 }
144 for (int i = 0; i < this.ks.length; i++) {
145 if ((this.ks[i] < 1) || (this.ks[i] > m-1)) {
146 throw new IllegalArgumentException
147 ("ks["+ i + "] is out of range");
148 }
149 if ((i != 0) && (this.ks[i] >= this.ks[i-1])) {
150 throw new IllegalArgumentException
151 ("values in ks are not in descending order");
152 }
153 }
154 // convert ks into rp
155 this.rp = BigInteger.ONE;
156 this.rp = rp.setBit(m);
157 for (int j = 0; j < this.ks.length; j++) {
158 rp = rp.setBit(this.ks[j]);
159 }
160 }
161
162 /**
163 * Returns the field size in bits which is <code>m</code>
164 * for this characteristic 2 finite field.
165 * @return the field size in bits.
166 */
167 public int getFieldSize() {
168 return m;
169 }
170
171 /**
172 * Returns the value <code>m</code> of this characteristic
173 * 2 finite field.
174 * @return <code>m</code> with 2^<code>m</code> being the
175 * number of elements.
176 */
177 public int getM() {
178 return m;
179 }
180
181 /**
182 * Returns a BigInteger whose i-th bit corresponds to the
183 * i-th coefficient of the reduction polynomial for polynomial
184 * basis or null for normal basis.
185 * @return a BigInteger whose i-th bit corresponds to the
186 * i-th coefficient of the reduction polynomial for polynomial
187 * basis or null for normal basis.
188 */
189 public BigInteger getReductionPolynomial() {
190 return rp;
191 }
192
193 /**
194 * Returns an integer array which contains the order of the
195 * middle term(s) of the reduction polynomial for polynomial
196 * basis or null for normal basis.
197 * @return an integer array which contains the order of the
198 * middle term(s) of the reduction polynomial for polynomial
199 * basis or null for normal basis. A new array is returned
200 * each time this method is called.
201 */
202 public int[] getMidTermsOfReductionPolynomial() {
203 if (ks == null) {
204 return null;
205 } else {
206 return ks.clone();
207 }
208 }
209
210 /**
211 * Compares this finite field for equality with the
212 * specified object.
213 * @param obj the object to be compared.
214 * @return true if <code>obj</code> is an instance
215 * of ECFieldF2m and both <code>m</code> and the reduction
216 * polynomial match, false otherwise.
217 */
218 public boolean equals(Object obj) {
219 if (this == obj) return true;
220 if (obj instanceof ECFieldF2m) {
221 // no need to compare rp here since ks and rp
222 // should be equivalent
223 return ((m == ((ECFieldF2m)obj).m) &&
224 (Arrays.equals(ks, ((ECFieldF2m) obj).ks)));
225 }
226 return false;
227 }
228
229 /**
230 * Returns a hash code value for this characteristic 2
231 * finite field.
232 * @return a hash code value.
233 */
234 public int hashCode() {
235 int value = m << 5;
236 value += (rp==null? 0:rp.hashCode());
237 // no need to involve ks here since ks and rp
238 // should be equivalent.
239 return value;
240 }
241}
java/pkg/java/security/spec/ECFieldFp.class+0−0

Binary file not shown.

java/pkg/java/security/spec/ECFieldFp.java+98−0
@@ -0,0 +1,98 @@
1/*
2 * Copyright (c) 2003, 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 */
25package java.security.spec;
26
27import java.math.BigInteger;
28import java.util.Arrays;
29
30/**
31 * This immutable class defines an elliptic curve (EC) prime
32 * finite field.
33 *
34 * @see ECField
35 *
36 * @author Valerie Peng
37 *
38 * @since 1.5
39 */
40public class ECFieldFp implements ECField {
41
42 private BigInteger p;
43
44 /**
45 * Creates an elliptic curve prime finite field
46 * with the specified prime <code>p</code>.
47 * @param p the prime.
48 * @exception NullPointerException if <code>p</code> is null.
49 * @exception IllegalArgumentException if <code>p</code>
50 * is not positive.
51 */
52 public ECFieldFp(BigInteger p) {
53 if (p.signum() != 1) {
54 throw new IllegalArgumentException("p is not positive");
55 }
56 this.p = p;
57 }
58
59 /**
60 * Returns the field size in bits which is size of prime p
61 * for this prime finite field.
62 * @return the field size in bits.
63 */
64 public int getFieldSize() {
65 return p.bitLength();
66 };
67
68 /**
69 * Returns the prime <code>p</code> of this prime finite field.
70 * @return the prime.
71 */
72 public BigInteger getP() {
73 return p;
74 }
75
76 /**
77 * Compares this prime finite field for equality with the
78 * specified object.
79 * @param obj the object to be compared.
80 * @return true if <code>obj</code> is an instance
81 * of ECFieldFp and the prime value match, false otherwise.
82 */
83 public boolean equals(Object obj) {
84 if (this == obj) return true;
85 if (obj instanceof ECFieldFp) {
86 return (p.equals(((ECFieldFp)obj).p));
87 }
88 return false;
89 }
90
91 /**
92 * Returns a hash code value for this prime finite field.
93 * @return a hash code value.
94 */
95 public int hashCode() {
96 return p.hashCode();
97 }
98}
java/pkg/java/security/spec/ECGenParameterSpec.class+0−0

Binary file not shown.

java/pkg/java/security/spec/ECGenParameterSpec.java+68−0
@@ -0,0 +1,68 @@
1/*
2 * Copyright (c) 2003, 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 */
25package java.security.spec;
26
27/**
28 * This immutable class specifies the set of parameters used for
29 * generating elliptic curve (EC) domain parameters.
30 *
31 * @see AlgorithmParameterSpec
32 *
33 * @author Valerie Peng
34 *
35 * @since 1.5
36 */
37public class ECGenParameterSpec implements AlgorithmParameterSpec {
38
39 private String name;
40
41 /**
42 * Creates a parameter specification for EC parameter
43 * generation using a standard (or predefined) name
44 * <code>stdName</code> in order to generate the corresponding
45 * (precomputed) elliptic curve domain parameters. For the
46 * list of supported names, please consult the documentation
47 * of provider whose implementation will be used.
48 * @param stdName the standard name of the to-be-generated EC
49 * domain parameters.
50 * @exception NullPointerException if <code>stdName</code>
51 * is null.
52 */
53 public ECGenParameterSpec(String stdName) {
54 if (stdName == null) {
55 throw new NullPointerException("stdName is null");
56 }
57 this.name = stdName;
58 }
59
60 /**
61 * Returns the standard or predefined name of the
62 * to-be-generated EC domain parameters.
63 * @return the standard or predefined name.
64 */
65 public String getName() {
66 return name;
67 }
68}
java/pkg/java/security/spec/ECParameterSpec.class+0−0

Binary file not shown.

java/pkg/java/security/spec/ECParameterSpec.java+113−0
@@ -0,0 +1,113 @@
1/*
2 * Copyright (c) 2003, 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 */
25package java.security.spec;
26
27import java.math.BigInteger;
28
29/**
30 * This immutable class specifies the set of domain parameters
31 * used with elliptic curve cryptography (ECC).
32 *
33 * @see AlgorithmParameterSpec
34 *
35 * @author Valerie Peng
36 *
37 * @since 1.5
38 */
39public class ECParameterSpec implements AlgorithmParameterSpec {
40
41 private final EllipticCurve curve;
42 private final ECPoint g;
43 private final BigInteger n;
44 private final int h;
45
46 /**
47 * Creates elliptic curve domain parameters based on the
48 * specified values.
49 * @param curve the elliptic curve which this parameter
50 * defines.
51 * @param g the generator which is also known as the base point.
52 * @param n the order of the generator <code>g</code>.
53 * @param h the cofactor.
54 * @exception NullPointerException if <code>curve</code>,
55 * <code>g</code>, or <code>n</code> is null.
56 * @exception IllegalArgumentException if <code>n</code>
57 * or <code>h</code> is not positive.
58 */
59 public ECParameterSpec(EllipticCurve curve, ECPoint g,
60 BigInteger n, int h) {
61 if (curve == null) {
62 throw new NullPointerException("curve is null");
63 }
64 if (g == null) {
65 throw new NullPointerException("g is null");
66 }
67 if (n == null) {
68 throw new NullPointerException("n is null");
69 }
70 if (n.signum() != 1) {
71 throw new IllegalArgumentException("n is not positive");
72 }
73 if (h <= 0) {
74 throw new IllegalArgumentException("h is not positive");
75 }
76 this.curve = curve;
77 this.g = g;
78 this.n = n;
79 this.h = h;
80 }
81
82 /**
83 * Returns the elliptic curve that this parameter defines.
84 * @return the elliptic curve that this parameter defines.
85 */
86 public EllipticCurve getCurve() {
87 return curve;
88 }
89
90 /**
91 * Returns the generator which is also known as the base point.
92 * @return the generator which is also known as the base point.
93 */
94 public ECPoint getGenerator() {
95 return g;
96 }
97
98 /**
99 * Returns the order of the generator.
100 * @return the order of the generator.
101 */
102 public BigInteger getOrder() {
103 return n;
104 }
105
106 /**
107 * Returns the cofactor.
108 * @return the cofactor.
109 */
110 public int getCofactor() {
111 return h;
112 }
113}
java/pkg/java/security/spec/ECPoint.class+0−0

Binary file not shown.

java/pkg/java/security/spec/ECPoint.java+114−0
@@ -0,0 +1,114 @@
1/*
2 * Copyright (c) 2003, 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 */
25package java.security.spec;
26
27import java.math.BigInteger;
28
29/**
30 * This immutable class represents a point on an elliptic curve (EC)
31 * in affine coordinates. Other coordinate systems can
32 * extend this class to represent this point in other
33 * coordinates.
34 *
35 * @author Valerie Peng
36 *
37 * @since 1.5
38 */
39public class ECPoint {
40
41 private final BigInteger x;
42 private final BigInteger y;
43
44 /**
45 * This defines the point at infinity.
46 */
47 public static final ECPoint POINT_INFINITY = new ECPoint();
48
49 // private constructor for constructing point at infinity
50 private ECPoint() {
51 this.x = null;
52 this.y = null;
53 }
54
55 /**
56 * Creates an ECPoint from the specified affine x-coordinate
57 * <code>x</code> and affine y-coordinate <code>y</code>.
58 * @param x the affine x-coordinate.
59 * @param y the affine y-coordinate.
60 * @exception NullPointerException if <code>x</code> or
61 * <code>y</code> is null.
62 */
63 public ECPoint(BigInteger x, BigInteger y) {
64 if ((x==null) || (y==null)) {
65 throw new NullPointerException("affine coordinate x or y is null");
66 }
67 this.x = x;
68 this.y = y;
69 }
70
71 /**
72 * Returns the affine x-coordinate <code>x</code>.
73 * Note: POINT_INFINITY has a null affine x-coordinate.
74 * @return the affine x-coordinate.
75 */
76 public BigInteger getAffineX() {
77 return x;
78 }
79
80 /**
81 * Returns the affine y-coordinate <code>y</code>.
82 * Note: POINT_INFINITY has a null affine y-coordinate.
83 * @return the affine y-coordinate.
84 */
85 public BigInteger getAffineY() {
86 return y;
87 }
88
89 /**
90 * Compares this elliptic curve point for equality with
91 * the specified object.
92 * @param obj the object to be compared.
93 * @return true if <code>obj</code> is an instance of
94 * ECPoint and the affine coordinates match, false otherwise.
95 */
96 public boolean equals(Object obj) {
97 if (this == obj) return true;
98 if (this == POINT_INFINITY) return false;
99 if (obj instanceof ECPoint) {
100 return ((x.equals(((ECPoint)obj).x)) &&
101 (y.equals(((ECPoint)obj).y)));
102 }
103 return false;
104 }
105
106 /**
107 * Returns a hash code value for this elliptic curve point.
108 * @return a hash code value.
109 */
110 public int hashCode() {
111 if (this == POINT_INFINITY) return 0;
112 return x.hashCode() << 5 + y.hashCode();
113 }
114}
java/pkg/java/security/spec/ECPrivateKeySpec.class+0−0

Binary file not shown.

java/pkg/java/security/spec/ECPrivateKeySpec.java+81−0
@@ -0,0 +1,81 @@
1/*
2 * Copyright (c) 2003, 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 */
25package java.security.spec;
26
27import java.math.BigInteger;
28
29/**
30 * This immutable class specifies an elliptic curve private key with
31 * its associated parameters.
32 *
33 * @see KeySpec
34 * @see ECParameterSpec
35 *
36 * @author Valerie Peng
37 *
38 * @since 1.5
39 */
40public class ECPrivateKeySpec implements KeySpec {
41
42 private BigInteger s;
43 private ECParameterSpec params;
44
45 /**
46 * Creates a new ECPrivateKeySpec with the specified
47 * parameter values.
48 * @param s the private value.
49 * @param params the associated elliptic curve domain
50 * parameters.
51 * @exception NullPointerException if <code>s</code>
52 * or <code>params</code> is null.
53 */
54 public ECPrivateKeySpec(BigInteger s, ECParameterSpec params) {
55 if (s == null) {
56 throw new NullPointerException("s is null");
57 }
58 if (params == null) {
59 throw new NullPointerException("params is null");
60 }
61 this.s = s;
62 this.params = params;
63 }
64
65 /**
66 * Returns the private value S.
67 * @return the private value S.
68 */
69 public BigInteger getS() {
70 return s;
71 }
72
73 /**
74 * Returns the associated elliptic curve domain
75 * parameters.
76 * @return the EC domain parameters.
77 */
78 public ECParameterSpec getParams() {
79 return params;
80 }
81}
java/pkg/java/security/spec/ECPublicKeySpec.class+0−0

Binary file not shown.

java/pkg/java/security/spec/ECPublicKeySpec.java+85−0
@@ -0,0 +1,85 @@
1/*
2 * Copyright (c) 2003, 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 */
25package java.security.spec;
26
27/**
28 * This immutable class specifies an elliptic curve public key with
29 * its associated parameters.
30 *
31 * @see KeySpec
32 * @see ECPoint
33 * @see ECParameterSpec
34 *
35 * @author Valerie Peng
36 *
37 * @since 1.5
38 */
39public class ECPublicKeySpec implements KeySpec {
40
41 private ECPoint w;
42 private ECParameterSpec params;
43
44 /**
45 * Creates a new ECPublicKeySpec with the specified
46 * parameter values.
47 * @param w the public point.
48 * @param params the associated elliptic curve domain
49 * parameters.
50 * @exception NullPointerException if <code>w</code>
51 * or <code>params</code> is null.
52 * @exception IllegalArgumentException if <code>w</code>
53 * is point at infinity, i.e. ECPoint.POINT_INFINITY
54 */
55 public ECPublicKeySpec(ECPoint w, ECParameterSpec params) {
56 if (w == null) {
57 throw new NullPointerException("w is null");
58 }
59 if (params == null) {
60 throw new NullPointerException("params is null");
61 }
62 if (w == ECPoint.POINT_INFINITY) {
63 throw new IllegalArgumentException("w is ECPoint.POINT_INFINITY");
64 }
65 this.w = w;
66 this.params = params;
67 }
68
69 /**
70 * Returns the public point W.
71 * @return the public point W.
72 */
73 public ECPoint getW() {
74 return w;
75 }
76
77 /**
78 * Returns the associated elliptic curve domain
79 * parameters.
80 * @return the EC domain parameters.
81 */
82 public ECParameterSpec getParams() {
83 return params;
84 }
85}
java/pkg/java/security/spec/EllipticCurve.class+0−0

Binary file not shown.

java/pkg/java/security/spec/EllipticCurve.java+196−0
@@ -0,0 +1,196 @@
1/*
2 * Copyright (c) 2003, 2011, 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 java.security.spec;
27
28import java.math.BigInteger;
29import java.util.Arrays;
30
31/**
32 * This immutable class holds the necessary values needed to represent
33 * an elliptic curve.
34 *
35 * @see ECField
36 * @see ECFieldFp
37 * @see ECFieldF2m
38 *
39 * @author Valerie Peng
40 *
41 * @since 1.5
42 */
43public class EllipticCurve {
44
45 private final ECField field;
46 private final BigInteger a;
47 private final BigInteger b;
48 private final byte[] seed;
49
50 // Check coefficient c is a valid element in ECField field.
51 private static void checkValidity(ECField field, BigInteger c,
52 String cName) {
53 // can only perform check if field is ECFieldFp or ECFieldF2m.
54 if (field instanceof ECFieldFp) {
55 BigInteger p = ((ECFieldFp)field).getP();
56 if (p.compareTo(c) != 1) {
57 throw new IllegalArgumentException(cName + " is too large");
58 } else if (c.signum() < 0) {
59 throw new IllegalArgumentException(cName + " is negative");
60 }
61 } else if (field instanceof ECFieldF2m) {
62 int m = ((ECFieldF2m)field).getM();
63 if (c.bitLength() > m) {
64 throw new IllegalArgumentException(cName + " is too large");
65 }
66 }
67 }
68
69 /**
70 * Creates an elliptic curve with the specified elliptic field
71 * <code>field</code> and the coefficients <code>a</code> and
72 * <code>b</code>.
73 * @param field the finite field that this elliptic curve is over.
74 * @param a the first coefficient of this elliptic curve.
75 * @param b the second coefficient of this elliptic curve.
76 * @exception NullPointerException if <code>field</code>,
77 * <code>a</code>, or <code>b</code> is null.
78 * @exception IllegalArgumentException if <code>a</code>
79 * or <code>b</code> is not null and not in <code>field</code>.
80 */
81 public EllipticCurve(ECField field, BigInteger a,
82 BigInteger b) {
83 this(field, a, b, null);
84 }
85
86 /**
87 * Creates an elliptic curve with the specified elliptic field
88 * <code>field</code>, the coefficients <code>a</code> and
89 * <code>b</code>, and the <code>seed</code> used for curve generation.
90 * @param field the finite field that this elliptic curve is over.
91 * @param a the first coefficient of this elliptic curve.
92 * @param b the second coefficient of this elliptic curve.
93 * @param seed the bytes used during curve generation for later
94 * validation. Contents of this array are copied to protect against
95 * subsequent modification.
96 * @exception NullPointerException if <code>field</code>,
97 * <code>a</code>, or <code>b</code> is null.
98 * @exception IllegalArgumentException if <code>a</code>
99 * or <code>b</code> is not null and not in <code>field</code>.
100 */
101 public EllipticCurve(ECField field, BigInteger a,
102 BigInteger b, byte[] seed) {
103 if (field == null) {
104 throw new NullPointerException("field is null");
105 }
106 if (a == null) {
107 throw new NullPointerException("first coefficient is null");
108 }
109 if (b == null) {
110 throw new NullPointerException("second coefficient is null");
111 }
112 checkValidity(field, a, "first coefficient");
113 checkValidity(field, b, "second coefficient");
114 this.field = field;
115 this.a = a;
116 this.b = b;
117 if (seed != null) {
118 this.seed = seed.clone();
119 } else {
120 this.seed = null;
121 }
122 }
123
124 /**
125 * Returns the finite field <code>field</code> that this
126 * elliptic curve is over.
127 * @return the field <code>field</code> that this curve
128 * is over.
129 */
130 public ECField getField() {
131 return field;
132 }
133
134 /**
135 * Returns the first coefficient <code>a</code> of the
136 * elliptic curve.
137 * @return the first coefficient <code>a</code>.
138 */
139 public BigInteger getA() {
140 return a;
141 }
142
143 /**
144 * Returns the second coefficient <code>b</code> of the
145 * elliptic curve.
146 * @return the second coefficient <code>b</code>.
147 */
148 public BigInteger getB() {
149 return b;
150 }
151
152 /**
153 * Returns the seeding bytes <code>seed</code> used
154 * during curve generation. May be null if not specified.
155 * @return the seeding bytes <code>seed</code>. A new
156 * array is returned each time this method is called.
157 */
158 public byte[] getSeed() {
159 if (seed == null) return null;
160 else return seed.clone();
161 }
162
163 /**
164 * Compares this elliptic curve for equality with the
165 * specified object.
166 * @param obj the object to be compared.
167 * @return true if <code>obj</code> is an instance of
168 * EllipticCurve and the field, A, and B match, false otherwise.
169 */
170 public boolean equals(Object obj) {
171 if (this == obj) return true;
172 if (obj instanceof EllipticCurve) {
173 EllipticCurve curve = (EllipticCurve) obj;
174 if ((field.equals(curve.field)) &&
175 (a.equals(curve.a)) &&
176 (b.equals(curve.b))) {
177 return true;
178 }
179 }
180 return false;
181 }
182
183 /**
184 * Returns a hash code value for this elliptic curve.
185 * @return a hash code value computed from the hash codes of the field, A,
186 * and B, as follows:
187 * <code>
188 * (field.hashCode() << 6) + (a.hashCode() << 4) + (b.hashCode() << 2)
189 * </code>
190 */
191 public int hashCode() {
192 return (field.hashCode() << 6 +
193 (a.hashCode() << 4) +
194 (b.hashCode() << 2));
195 }
196}
java/pkg/java/security/spec/EncodedKeySpec.class+0−0

Binary file not shown.

java/pkg/java/security/spec/EncodedKeySpec.java+85−0
@@ -0,0 +1,85 @@
1/*
2 * Copyright (c) 1997, 2005, 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 java.security.spec;
27
28/**
29 * This class represents a public or private key in encoded format.
30 *
31 * @author Jan Luehe
32 *
33 *
34 * @see java.security.Key
35 * @see java.security.KeyFactory
36 * @see KeySpec
37 * @see X509EncodedKeySpec
38 * @see PKCS8EncodedKeySpec
39 *
40 * @since 1.2
41 */
42
43public abstract class EncodedKeySpec implements KeySpec {
44
45 private byte[] encodedKey;
46
47 /**
48 * Creates a new EncodedKeySpec with the given encoded key.
49 *
50 * @param encodedKey the encoded key. The contents of the
51 * array are copied to protect against subsequent modification.
52 * @exception NullPointerException if <code>encodedKey</code>
53 * is null.
54 */
55 public EncodedKeySpec(byte[] encodedKey) {
56 this.encodedKey = encodedKey.clone();
57 }
58
59 /**
60 * Returns the encoded key.
61 *
62 * @return the encoded key. Returns a new array each time
63 * this method is called.
64 */
65 public byte[] getEncoded() {
66 return this.encodedKey.clone();
67 }
68
69 /**
70 * Returns the name of the encoding format associated with this
71 * key specification.
72 *
73 * <p>If the opaque representation of a key
74 * (see {@link java.security.Key Key}) can be transformed
75 * (see {@link java.security.KeyFactory KeyFactory})
76 * into this key specification (or a subclass of it),
77 * <code>getFormat</code> called
78 * on the opaque key returns the same value as the
79 * <code>getFormat</code> method
80 * of this key specification.
81 *
82 * @return a string representation of the encoding format.
83 */
84 public abstract String getFormat();
85}
java/pkg/java/security/spec/InvalidKeySpecException.class+0−0

Binary file not shown.

java/pkg/java/security/spec/InvalidKeySpecException.java+94−0
@@ -0,0 +1,94 @@
1/*
2 * Copyright (c) 1997, 2003, 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 java.security.spec;
27
28import java.security.GeneralSecurityException;
29
30/**
31 * This is the exception for invalid key specifications.
32 *
33 * @author Jan Luehe
34 *
35 *
36 * @see KeySpec
37 *
38 * @since 1.2
39 */
40
41public class InvalidKeySpecException extends GeneralSecurityException {
42
43 private static final long serialVersionUID = 3546139293998810778L;
44
45 /**
46 * Constructs an InvalidKeySpecException with no detail message. A
47 * detail message is a String that describes this particular
48 * exception.
49 */
50 public InvalidKeySpecException() {
51 super();
52 }
53
54 /**
55 * Constructs an InvalidKeySpecException with the specified detail
56 * message. A detail message is a String that describes this
57 * particular exception.
58 *
59 * @param msg the detail message.
60 */
61 public InvalidKeySpecException(String msg) {
62 super(msg);
63 }
64
65 /**
66 * Creates a <code>InvalidKeySpecException</code> with the specified
67 * detail message and cause.
68 *
69 * @param message the detail message (which is saved for later retrieval
70 * by the {@link #getMessage()} method).
71 * @param cause the cause (which is saved for later retrieval by the
72 * {@link #getCause()} method). (A <tt>null</tt> value is permitted,
73 * and indicates that the cause is nonexistent or unknown.)
74 * @since 1.5
75 */
76 public InvalidKeySpecException(String message, Throwable cause) {
77 super(message, cause);
78 }
79
80 /**
81 * Creates a <code>InvalidKeySpecException</code> with the specified cause
82 * and a detail message of <tt>(cause==null ? null : cause.toString())</tt>
83 * (which typically contains the class and detail message of
84 * <tt>cause</tt>).
85 *
86 * @param cause the cause (which is saved for later retrieval by the
87 * {@link #getCause()} method). (A <tt>null</tt> value is permitted,
88 * and indicates that the cause is nonexistent or unknown.)
89 * @since 1.5
90 */
91 public InvalidKeySpecException(Throwable cause) {
92 super(cause);
93 }
94}
java/pkg/java/security/spec/InvalidParameterSpecException.class+0−0

Binary file not shown.

java/pkg/java/security/spec/InvalidParameterSpecException.java+66−0
@@ -0,0 +1,66 @@
1/*
2 * Copyright (c) 1997, 2003, 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 java.security.spec;
27
28import java.security.GeneralSecurityException;
29
30/**
31 * This is the exception for invalid parameter specifications.
32 *
33 * @author Jan Luehe
34 *
35 *
36 * @see java.security.AlgorithmParameters
37 * @see AlgorithmParameterSpec
38 * @see DSAParameterSpec
39 *
40 * @since 1.2
41 */
42
43public class InvalidParameterSpecException extends GeneralSecurityException {
44
45 private static final long serialVersionUID = -970468769593399342L;
46
47 /**
48 * Constructs an InvalidParameterSpecException with no detail message. A
49 * detail message is a String that describes this particular
50 * exception.
51 */
52 public InvalidParameterSpecException() {
53 super();
54 }
55
56 /**
57 * Constructs an InvalidParameterSpecException with the specified detail
58 * message. A detail message is a String that describes this
59 * particular exception.
60 *
61 * @param msg the detail message.
62 */
63 public InvalidParameterSpecException(String msg) {
64 super(msg);
65 }
66}
java/pkg/java/security/spec/KeySpec.class+0−0

Binary file not shown.

java/pkg/java/security/spec/KeySpec.java+62−0
@@ -0,0 +1,62 @@
1/*
2 * Copyright (c) 1997, 1999, 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 java.security.spec;
27
28/**
29 * A (transparent) specification of the key material
30 * that constitutes a cryptographic key.
31 *
32 * <p>If the key is stored on a hardware device, its
33 * specification may contain information that helps identify the key on the
34 * device.
35 *
36 * <P> A key may be specified in an algorithm-specific way, or in an
37 * algorithm-independent encoding format (such as ASN.1).
38 * For example, a DSA private key may be specified by its components
39 * <code>x</code>, <code>p</code>, <code>q</code>, and <code>g</code>
40 * (see {@link DSAPrivateKeySpec}), or it may be
41 * specified using its DER encoding
42 * (see {@link PKCS8EncodedKeySpec}).
43 *
44 * <P> This interface contains no methods or constants. Its only purpose
45 * is to group (and provide type safety for) all key specifications.
46 * All key specifications must implement this interface.
47 *
48 * @author Jan Luehe
49 *
50 *
51 * @see java.security.Key
52 * @see java.security.KeyFactory
53 * @see EncodedKeySpec
54 * @see X509EncodedKeySpec
55 * @see PKCS8EncodedKeySpec
56 * @see DSAPrivateKeySpec
57 * @see DSAPublicKeySpec
58 *
59 * @since 1.2
60 */
61
62public interface KeySpec { }
java/pkg/java/security/spec/MGF1ParameterSpec.class+0−0

Binary file not shown.

java/pkg/java/security/spec/MGF1ParameterSpec.java+107−0
@@ -0,0 +1,107 @@
1/*
2 * Copyright (c) 2003, 2006, 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 java.security.spec;
27
28import java.security.spec.AlgorithmParameterSpec;
29
30/**
31 * This class specifies the set of parameters used with mask generation
32 * function MGF1 in OAEP Padding and RSA-PSS signature scheme, as
33 * defined in the
34 * <a href="http://www.ietf.org/rfc/rfc3447.txt">PKCS #1 v2.1</a>
35 * standard.
36 *
37 * <p>Its ASN.1 definition in PKCS#1 standard is described below:
38 * <pre>
39 * MGF1Parameters ::= OAEP-PSSDigestAlgorthms
40 * </pre>
41 * where
42 * <pre>
43 * OAEP-PSSDigestAlgorithms ALGORITHM-IDENTIFIER ::= {
44 * { OID id-sha1 PARAMETERS NULL }|
45 * { OID id-sha256 PARAMETERS NULL }|
46 * { OID id-sha384 PARAMETERS NULL }|
47 * { OID id-sha512 PARAMETERS NULL },
48 * ... -- Allows for future expansion --
49 * }
50 * </pre>
51 * @see PSSParameterSpec
52 * @see javax.crypto.spec.OAEPParameterSpec
53 *
54 * @author Valerie Peng
55 *
56 * @since 1.5
57 */
58public class MGF1ParameterSpec implements AlgorithmParameterSpec {
59
60 /**
61 * The MGF1ParameterSpec which uses "SHA-1" message digest.
62 */
63 public static final MGF1ParameterSpec SHA1 =
64 new MGF1ParameterSpec("SHA-1");
65 /**
66 * The MGF1ParameterSpec which uses "SHA-256" message digest.
67 */
68 public static final MGF1ParameterSpec SHA256 =
69 new MGF1ParameterSpec("SHA-256");
70 /**
71 * The MGF1ParameterSpec which uses "SHA-384" message digest.
72 */
73 public static final MGF1ParameterSpec SHA384 =
74 new MGF1ParameterSpec("SHA-384");
75 /**
76 * The MGF1ParameterSpec which uses SHA-512 message digest.
77 */
78 public static final MGF1ParameterSpec SHA512 =
79 new MGF1ParameterSpec("SHA-512");
80
81 private String mdName;
82
83 /**
84 * Constructs a parameter set for mask generation function MGF1
85 * as defined in the PKCS #1 standard.
86 *
87 * @param mdName the algorithm name for the message digest
88 * used in this mask generation function MGF1.
89 * @exception NullPointerException if <code>mdName</code> is null.
90 */
91 public MGF1ParameterSpec(String mdName) {
92 if (mdName == null) {
93 throw new NullPointerException("digest algorithm is null");
94 }
95 this.mdName = mdName;
96 }
97
98 /**
99 * Returns the algorithm name of the message digest used by the mask
100 * generation function.
101 *
102 * @return the algorithm name of the message digest.
103 */
104 public String getDigestAlgorithm() {
105 return mdName;
106 }
107}
java/pkg/java/security/spec/PKCS8EncodedKeySpec.class+0−0

Binary file not shown.

java/pkg/java/security/spec/PKCS8EncodedKeySpec.java+96−0
@@ -0,0 +1,96 @@
1/*
2 * Copyright (c) 1997, 2005, 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 java.security.spec;
27
28/**
29 * This class represents the ASN.1 encoding of a private key,
30 * encoded according to the ASN.1 type <code>PrivateKeyInfo</code>.
31 * The <code>PrivateKeyInfo</code> syntax is defined in the PKCS#8 standard
32 * as follows:
33 *
34 * <pre>
35 * PrivateKeyInfo ::= SEQUENCE {
36 * version Version,
37 * privateKeyAlgorithm PrivateKeyAlgorithmIdentifier,
38 * privateKey PrivateKey,
39 * attributes [0] IMPLICIT Attributes OPTIONAL }
40 *
41 * Version ::= INTEGER
42 *
43 * PrivateKeyAlgorithmIdentifier ::= AlgorithmIdentifier
44 *
45 * PrivateKey ::= OCTET STRING
46 *
47 * Attributes ::= SET OF Attribute
48 * </pre>
49 *
50 * @author Jan Luehe
51 *
52 *
53 * @see java.security.Key
54 * @see java.security.KeyFactory
55 * @see KeySpec
56 * @see EncodedKeySpec
57 * @see X509EncodedKeySpec
58 *
59 * @since 1.2
60 */
61
62public class PKCS8EncodedKeySpec extends EncodedKeySpec {
63
64 /**
65 * Creates a new PKCS8EncodedKeySpec with the given encoded key.
66 *
67 * @param encodedKey the key, which is assumed to be
68 * encoded according to the PKCS #8 standard. The contents of
69 * the array are copied to protect against subsequent modification.
70 * @exception NullPointerException if <code>encodedKey</code>
71 * is null.
72 */
73 public PKCS8EncodedKeySpec(byte[] encodedKey) {
74 super(encodedKey);
75 }
76
77 /**
78 * Returns the key bytes, encoded according to the PKCS #8 standard.
79 *
80 * @return the PKCS #8 encoding of the key. Returns a new array
81 * each time this method is called.
82 */
83 public byte[] getEncoded() {
84 return super.getEncoded();
85 }
86
87 /**
88 * Returns the name of the encoding format associated with this
89 * key specification.
90 *
91 * @return the string <code>"PKCS#8"</code>.
92 */
93 public final String getFormat() {
94 return "PKCS#8";
95 }
96}
java/pkg/java/security/spec/PSSParameterSpec.class+0−0

Binary file not shown.

java/pkg/java/security/spec/PSSParameterSpec.java+211−0
@@ -0,0 +1,211 @@
1/*
2 * Copyright (c) 2001, 2006, 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 java.security.spec;
27
28import java.math.BigInteger;
29import java.security.spec.MGF1ParameterSpec;
30
31/**
32 * This class specifies a parameter spec for RSA-PSS signature scheme,
33 * as defined in the
34 * <a href="http://www.ietf.org/rfc/rfc3447.txt">PKCS#1 v2.1</a>
35 * standard.
36 *
37 * <p>Its ASN.1 definition in PKCS#1 standard is described below:
38 * <pre>
39 * RSASSA-PSS-params ::= SEQUENCE {
40 * hashAlgorithm [0] OAEP-PSSDigestAlgorithms DEFAULT sha1,
41 * maskGenAlgorithm [1] PKCS1MGFAlgorithms DEFAULT mgf1SHA1,
42 * saltLength [2] INTEGER DEFAULT 20,
43 * trailerField [3] INTEGER DEFAULT 1
44 * }
45 * </pre>
46 * where
47 * <pre>
48 * OAEP-PSSDigestAlgorithms ALGORITHM-IDENTIFIER ::= {
49 * { OID id-sha1 PARAMETERS NULL }|
50 * { OID id-sha256 PARAMETERS NULL }|
51 * { OID id-sha384 PARAMETERS NULL }|
52 * { OID id-sha512 PARAMETERS NULL },
53 * ... -- Allows for future expansion --
54 * }
55 *
56 * PKCS1MGFAlgorithms ALGORITHM-IDENTIFIER ::= {
57 * { OID id-mgf1 PARAMETERS OAEP-PSSDigestAlgorithms },
58 * ... -- Allows for future expansion --
59 * }
60 * </pre>
61 * <p>Note: the PSSParameterSpec.DEFAULT uses the following:
62 * message digest -- "SHA-1"
63 * mask generation function (mgf) -- "MGF1"
64 * parameters for mgf -- MGF1ParameterSpec.SHA1
65 * SaltLength -- 20
66 * TrailerField -- 1
67 *
68 * @see MGF1ParameterSpec
69 * @see AlgorithmParameterSpec
70 * @see java.security.Signature
71 *
72 * @author Valerie Peng
73 *
74 *
75 * @since 1.4
76 */
77
78public class PSSParameterSpec implements AlgorithmParameterSpec {
79
80 private String mdName = "SHA-1";
81 private String mgfName = "MGF1";
82 private AlgorithmParameterSpec mgfSpec = MGF1ParameterSpec.SHA1;
83 private int saltLen = 20;
84 private int trailerField = 1;
85
86 /**
87 * The PSS parameter set with all default values.
88 * @since 1.5
89 */
90 public static final PSSParameterSpec DEFAULT = new PSSParameterSpec();
91
92 /**
93 * Constructs a new <code>PSSParameterSpec</code> as defined in
94 * the PKCS #1 standard using the default values.
95 */
96 private PSSParameterSpec() {
97 }
98
99 /**
100 * Creates a new <code>PSSParameterSpec</code> as defined in
101 * the PKCS #1 standard using the specified message digest,
102 * mask generation function, parameters for mask generation
103 * function, salt length, and trailer field values.
104 *
105 * @param mdName the algorithm name of the hash function.
106 * @param mgfName the algorithm name of the mask generation
107 * function.
108 * @param mgfSpec the parameters for the mask generation
109 * function. If null is specified, null will be returned by
110 * getMGFParameters().
111 * @param saltLen the length of salt.
112 * @param trailerField the value of the trailer field.
113 * @exception NullPointerException if <code>mdName</code>,
114 * or <code>mgfName</code> is null.
115 * @exception IllegalArgumentException if <code>saltLen</code>
116 * or <code>trailerField</code> is less than 0.
117 * @since 1.5
118 */
119 public PSSParameterSpec(String mdName, String mgfName,
120 AlgorithmParameterSpec mgfSpec,
121 int saltLen, int trailerField) {
122 if (mdName == null) {
123 throw new NullPointerException("digest algorithm is null");
124 }
125 if (mgfName == null) {
126 throw new NullPointerException("mask generation function " +
127 "algorithm is null");
128 }
129 if (saltLen < 0) {
130 throw new IllegalArgumentException("negative saltLen value: " +
131 saltLen);
132 }
133 if (trailerField < 0) {
134 throw new IllegalArgumentException("negative trailerField: " +
135 trailerField);
136 }
137 this.mdName = mdName;
138 this.mgfName = mgfName;
139 this.mgfSpec = mgfSpec;
140 this.saltLen = saltLen;
141 this.trailerField = trailerField;
142 }
143
144 /**
145 * Creates a new <code>PSSParameterSpec</code>
146 * using the specified salt length and other default values as
147 * defined in PKCS#1.
148 *
149 * @param saltLen the length of salt in bits to be used in PKCS#1
150 * PSS encoding.
151 * @exception IllegalArgumentException if <code>saltLen</code> is
152 * less than 0.
153 */
154 public PSSParameterSpec(int saltLen) {
155 if (saltLen < 0) {
156 throw new IllegalArgumentException("negative saltLen value: " +
157 saltLen);
158 }
159 this.saltLen = saltLen;
160 }
161
162 /**
163 * Returns the message digest algorithm name.
164 *
165 * @return the message digest algorithm name.
166 * @since 1.5
167 */
168 public String getDigestAlgorithm() {
169 return mdName;
170 }
171
172 /**
173 * Returns the mask generation function algorithm name.
174 *
175 * @return the mask generation function algorithm name.
176 *
177 * @since 1.5
178 */
179 public String getMGFAlgorithm() {
180 return mgfName;
181 }
182
183 /**
184 * Returns the parameters for the mask generation function.
185 *
186 * @return the parameters for the mask generation function.
187 * @since 1.5
188 */
189 public AlgorithmParameterSpec getMGFParameters() {
190 return mgfSpec;
191 }
192
193 /**
194 * Returns the salt length in bits.
195 *
196 * @return the salt length.
197 */
198 public int getSaltLength() {
199 return saltLen;
200 }
201
202 /**
203 * Returns the value for the trailer field, i.e. bc in PKCS#1 v2.1.
204 *
205 * @return the value for the trailer field, i.e. bc in PKCS#1 v2.1.
206 * @since 1.5
207 */
208 public int getTrailerField() {
209 return trailerField;
210 }
211}
java/pkg/java/security/spec/RSAKeyGenParameterSpec.class+0−0

Binary file not shown.

java/pkg/java/security/spec/RSAKeyGenParameterSpec.java+86−0
@@ -0,0 +1,86 @@
1/*
2 * Copyright (c) 1999, 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 java.security.spec;
27
28import java.math.BigInteger;
29import java.security.spec.AlgorithmParameterSpec;
30
31/**
32 * This class specifies the set of parameters used to generate an RSA
33 * key pair.
34 *
35 * @author Jan Luehe
36 *
37 * @see java.security.KeyPairGenerator#initialize(java.security.spec.AlgorithmParameterSpec)
38 *
39 * @since 1.3
40 */
41
42public class RSAKeyGenParameterSpec implements AlgorithmParameterSpec {
43
44 private int keysize;
45 private BigInteger publicExponent;
46
47 /**
48 * The public-exponent value F0 = 3.
49 */
50 public static final BigInteger F0 = BigInteger.valueOf(3);
51
52 /**
53 * The public exponent-value F4 = 65537.
54 */
55 public static final BigInteger F4 = BigInteger.valueOf(65537);
56
57 /**
58 * Constructs a new <code>RSAParameterSpec</code> object from the
59 * given keysize and public-exponent value.
60 *
61 * @param keysize the modulus size (specified in number of bits)
62 * @param publicExponent the public exponent
63 */
64 public RSAKeyGenParameterSpec(int keysize, BigInteger publicExponent) {
65 this.keysize = keysize;
66 this.publicExponent = publicExponent;
67 }
68
69 /**
70 * Returns the keysize.
71 *
72 * @return the keysize.
73 */
74 public int getKeysize() {
75 return keysize;
76 }
77
78 /**
79 * Returns the public-exponent value.
80 *
81 * @return the public-exponent value.
82 */
83 public BigInteger getPublicExponent() {
84 return publicExponent;
85 }
86}
java/pkg/java/security/spec/RSAMultiPrimePrivateCrtKeySpec.class+0−0

Binary file not shown.

java/pkg/java/security/spec/RSAMultiPrimePrivateCrtKeySpec.java+212−0
@@ -0,0 +1,212 @@
1/*
2 * Copyright (c) 2001, 2003, 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 java.security.spec;
27
28import java.math.BigInteger;
29
30/**
31 * This class specifies an RSA multi-prime private key, as defined in the
32 * PKCS#1 v2.1, using the Chinese Remainder Theorem (CRT) information
33 * values for efficiency.
34 *
35 * @author Valerie Peng
36 *
37 *
38 * @see java.security.Key
39 * @see java.security.KeyFactory
40 * @see KeySpec
41 * @see PKCS8EncodedKeySpec
42 * @see RSAPrivateKeySpec
43 * @see RSAPublicKeySpec
44 * @see RSAOtherPrimeInfo
45 *
46 * @since 1.4
47 */
48
49public class RSAMultiPrimePrivateCrtKeySpec extends RSAPrivateKeySpec {
50
51 private final BigInteger publicExponent;
52 private final BigInteger primeP;
53 private final BigInteger primeQ;
54 private final BigInteger primeExponentP;
55 private final BigInteger primeExponentQ;
56 private final BigInteger crtCoefficient;
57 private final RSAOtherPrimeInfo otherPrimeInfo[];
58
59 /**
60 * Creates a new <code>RSAMultiPrimePrivateCrtKeySpec</code>
61 * given the modulus, publicExponent, privateExponent,
62 * primeP, primeQ, primeExponentP, primeExponentQ,
63 * crtCoefficient, and otherPrimeInfo as defined in PKCS#1 v2.1.
64 *
65 * <p>Note that the contents of <code>otherPrimeInfo</code>
66 * are copied to protect against subsequent modification when
67 * constructing this object.
68 *
69 * @param modulus the modulus n.
70 * @param publicExponent the public exponent e.
71 * @param privateExponent the private exponent d.
72 * @param primeP the prime factor p of n.
73 * @param primeQ the prime factor q of n.
74 * @param primeExponentP this is d mod (p-1).
75 * @param primeExponentQ this is d mod (q-1).
76 * @param crtCoefficient the Chinese Remainder Theorem
77 * coefficient q-1 mod p.
78 * @param otherPrimeInfo triplets of the rest of primes, null can be
79 * specified if there are only two prime factors (p and q).
80 * @exception NullPointerException if any of the parameters, i.e.
81 * <code>modulus</code>,
82 * <code>publicExponent</code>, <code>privateExponent</code>,
83 * <code>primeP</code>, <code>primeQ</code>,
84 * <code>primeExponentP</code>, <code>primeExponentQ</code>,
85 * <code>crtCoefficient</code>, is null.
86 * @exception IllegalArgumentException if an empty, i.e. 0-length,
87 * <code>otherPrimeInfo</code> is specified.
88 */
89 public RSAMultiPrimePrivateCrtKeySpec(BigInteger modulus,
90 BigInteger publicExponent,
91 BigInteger privateExponent,
92 BigInteger primeP,
93 BigInteger primeQ,
94 BigInteger primeExponentP,
95 BigInteger primeExponentQ,
96 BigInteger crtCoefficient,
97 RSAOtherPrimeInfo[] otherPrimeInfo) {
98 super(modulus, privateExponent);
99 if (modulus == null) {
100 throw new NullPointerException("the modulus parameter must be " +
101 "non-null");
102 }
103 if (publicExponent == null) {
104 throw new NullPointerException("the publicExponent parameter " +
105 "must be non-null");
106 }
107 if (privateExponent == null) {
108 throw new NullPointerException("the privateExponent parameter " +
109 "must be non-null");
110 }
111 if (primeP == null) {
112 throw new NullPointerException("the primeP parameter " +
113 "must be non-null");
114 }
115 if (primeQ == null) {
116 throw new NullPointerException("the primeQ parameter " +
117 "must be non-null");
118 }
119 if (primeExponentP == null) {
120 throw new NullPointerException("the primeExponentP parameter " +
121 "must be non-null");
122 }
123 if (primeExponentQ == null) {
124 throw new NullPointerException("the primeExponentQ parameter " +
125 "must be non-null");
126 }
127 if (crtCoefficient == null) {
128 throw new NullPointerException("the crtCoefficient parameter " +
129 "must be non-null");
130 }
131 this.publicExponent = publicExponent;
132 this.primeP = primeP;
133 this.primeQ = primeQ;
134 this.primeExponentP = primeExponentP;
135 this.primeExponentQ = primeExponentQ;
136 this.crtCoefficient = crtCoefficient;
137 if (otherPrimeInfo == null) {
138 this.otherPrimeInfo = null;
139 } else if (otherPrimeInfo.length == 0) {
140 throw new IllegalArgumentException("the otherPrimeInfo " +
141 "parameter must not be empty");
142 } else {
143 this.otherPrimeInfo = otherPrimeInfo.clone();
144 }
145 }
146
147 /**
148 * Returns the public exponent.
149 *
150 * @return the public exponent.
151 */
152 public BigInteger getPublicExponent() {
153 return this.publicExponent;
154 }
155
156 /**
157 * Returns the primeP.
158 *
159 * @return the primeP.
160 */
161 public BigInteger getPrimeP() {
162 return this.primeP;
163 }
164
165 /**
166 * Returns the primeQ.
167 *
168 * @return the primeQ.
169 */
170 public BigInteger getPrimeQ() {
171 return this.primeQ;
172 }
173
174 /**
175 * Returns the primeExponentP.
176 *
177 * @return the primeExponentP.
178 */
179 public BigInteger getPrimeExponentP() {
180 return this.primeExponentP;
181 }
182
183 /**
184 * Returns the primeExponentQ.
185 *
186 * @return the primeExponentQ.
187 */
188 public BigInteger getPrimeExponentQ() {
189 return this.primeExponentQ;
190 }
191
192 /**
193 * Returns the crtCoefficient.
194 *
195 * @return the crtCoefficient.
196 */
197 public BigInteger getCrtCoefficient() {
198 return this.crtCoefficient;
199 }
200
201 /**
202 * Returns a copy of the otherPrimeInfo or null if there are
203 * only two prime factors (p and q).
204 *
205 * @return the otherPrimeInfo. Returns a new array each
206 * time this method is called.
207 */
208 public RSAOtherPrimeInfo[] getOtherPrimeInfo() {
209 if (otherPrimeInfo == null) return null;
210 return otherPrimeInfo.clone();
211 }
212}
java/pkg/java/security/spec/RSAOtherPrimeInfo.class+0−0

Binary file not shown.

java/pkg/java/security/spec/RSAOtherPrimeInfo.java+120−0
@@ -0,0 +1,120 @@
1/*
2 * Copyright (c) 2001, 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 java.security.spec;
27
28import java.math.BigInteger;
29
30/**
31 * This class represents the triplet (prime, exponent, and coefficient)
32 * inside RSA's OtherPrimeInfo structure, as defined in the PKCS#1 v2.1.
33 * The ASN.1 syntax of RSA's OtherPrimeInfo is as follows:
34 *
35 * <pre>
36 * OtherPrimeInfo ::= SEQUENCE {
37 * prime INTEGER,
38 * exponent INTEGER,
39 * coefficient INTEGER
40 * }
41 *
42 * </pre>
43 *
44 * @author Valerie Peng
45 *
46 *
47 * @see RSAPrivateCrtKeySpec
48 * @see java.security.interfaces.RSAMultiPrimePrivateCrtKey
49 *
50 * @since 1.4
51 */
52
53public class RSAOtherPrimeInfo {
54
55 private BigInteger prime;
56 private BigInteger primeExponent;
57 private BigInteger crtCoefficient;
58
59
60 /**
61 * Creates a new <code>RSAOtherPrimeInfo</code>
62 * given the prime, primeExponent, and
63 * crtCoefficient as defined in PKCS#1.
64 *
65 * @param prime the prime factor of n.
66 * @param primeExponent the exponent.
67 * @param crtCoefficient the Chinese Remainder Theorem
68 * coefficient.
69 * @exception NullPointerException if any of the parameters, i.e.
70 * <code>prime</code>, <code>primeExponent</code>,
71 * <code>crtCoefficient</code>, is null.
72 *
73 */
74 public RSAOtherPrimeInfo(BigInteger prime,
75 BigInteger primeExponent,
76 BigInteger crtCoefficient) {
77 if (prime == null) {
78 throw new NullPointerException("the prime parameter must be " +
79 "non-null");
80 }
81 if (primeExponent == null) {
82 throw new NullPointerException("the primeExponent parameter " +
83 "must be non-null");
84 }
85 if (crtCoefficient == null) {
86 throw new NullPointerException("the crtCoefficient parameter " +
87 "must be non-null");
88 }
89 this.prime = prime;
90 this.primeExponent = primeExponent;
91 this.crtCoefficient = crtCoefficient;
92 }
93
94 /**
95 * Returns the prime.
96 *
97 * @return the prime.
98 */
99 public final BigInteger getPrime() {
100 return this.prime;
101 }
102
103 /**
104 * Returns the prime's exponent.
105 *
106 * @return the primeExponent.
107 */
108 public final BigInteger getExponent() {
109 return this.primeExponent;
110 }
111
112 /**
113 * Returns the prime's crtCoefficient.
114 *
115 * @return the crtCoefficient.
116 */
117 public final BigInteger getCrtCoefficient() {
118 return this.crtCoefficient;
119 }
120}
java/pkg/java/security/spec/RSAPrivateCrtKeySpec.class+0−0

Binary file not shown.

java/pkg/java/security/spec/RSAPrivateCrtKeySpec.java+143−0
@@ -0,0 +1,143 @@
1/*
2 * Copyright (c) 1998, 2003, 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 java.security.spec;
27
28import java.math.BigInteger;
29
30/**
31 * This class specifies an RSA private key, as defined in the PKCS#1
32 * standard, using the Chinese Remainder Theorem (CRT) information values for
33 * efficiency.
34 *
35 * @author Jan Luehe
36 *
37 *
38 * @see java.security.Key
39 * @see java.security.KeyFactory
40 * @see KeySpec
41 * @see PKCS8EncodedKeySpec
42 * @see RSAPrivateKeySpec
43 * @see RSAPublicKeySpec
44 */
45
46public class RSAPrivateCrtKeySpec extends RSAPrivateKeySpec {
47
48 private final BigInteger publicExponent;
49 private final BigInteger primeP;
50 private final BigInteger primeQ;
51 private final BigInteger primeExponentP;
52 private final BigInteger primeExponentQ;
53 private final BigInteger crtCoefficient;
54
55
56
57 /**
58 * Creates a new <code>RSAPrivateCrtKeySpec</code>
59 * given the modulus, publicExponent, privateExponent,
60 * primeP, primeQ, primeExponentP, primeExponentQ, and
61 * crtCoefficient as defined in PKCS#1.
62 *
63 * @param modulus the modulus n
64 * @param publicExponent the public exponent e
65 * @param privateExponent the private exponent d
66 * @param primeP the prime factor p of n
67 * @param primeQ the prime factor q of n
68 * @param primeExponentP this is d mod (p-1)
69 * @param primeExponentQ this is d mod (q-1)
70 * @param crtCoefficient the Chinese Remainder Theorem
71 * coefficient q-1 mod p
72 */
73 public RSAPrivateCrtKeySpec(BigInteger modulus,
74 BigInteger publicExponent,
75 BigInteger privateExponent,
76 BigInteger primeP,
77 BigInteger primeQ,
78 BigInteger primeExponentP,
79 BigInteger primeExponentQ,
80 BigInteger crtCoefficient) {
81 super(modulus, privateExponent);
82 this.publicExponent = publicExponent;
83 this.primeP = primeP;
84 this.primeQ = primeQ;
85 this.primeExponentP = primeExponentP;
86 this.primeExponentQ = primeExponentQ;
87 this.crtCoefficient = crtCoefficient;
88 }
89
90 /**
91 * Returns the public exponent.
92 *
93 * @return the public exponent
94 */
95 public BigInteger getPublicExponent() {
96 return this.publicExponent;
97 }
98
99 /**
100 * Returns the primeP.
101
102 * @return the primeP
103 */
104 public BigInteger getPrimeP() {
105 return this.primeP;
106 }
107
108 /**
109 * Returns the primeQ.
110 *
111 * @return the primeQ
112 */
113 public BigInteger getPrimeQ() {
114 return this.primeQ;
115 }
116
117 /**
118 * Returns the primeExponentP.
119 *
120 * @return the primeExponentP
121 */
122 public BigInteger getPrimeExponentP() {
123 return this.primeExponentP;
124 }
125
126 /**
127 * Returns the primeExponentQ.
128 *
129 * @return the primeExponentQ
130 */
131 public BigInteger getPrimeExponentQ() {
132 return this.primeExponentQ;
133 }
134
135 /**
136 * Returns the crtCoefficient.
137 *
138 * @return the crtCoefficient
139 */
140 public BigInteger getCrtCoefficient() {
141 return this.crtCoefficient;
142 }
143}
java/pkg/java/security/spec/RSAPrivateKeySpec.class+0−0

Binary file not shown.

java/pkg/java/security/spec/RSAPrivateKeySpec.java+77−0
@@ -0,0 +1,77 @@
1/*
2 * Copyright (c) 1998, 2001, 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 java.security.spec;
27
28import java.math.BigInteger;
29
30/**
31 * This class specifies an RSA private key.
32 *
33 * @author Jan Luehe
34 *
35 *
36 * @see java.security.Key
37 * @see java.security.KeyFactory
38 * @see KeySpec
39 * @see PKCS8EncodedKeySpec
40 * @see RSAPublicKeySpec
41 * @see RSAPrivateCrtKeySpec
42 */
43
44public class RSAPrivateKeySpec implements KeySpec {
45
46 private BigInteger modulus;
47 private BigInteger privateExponent;
48
49 /**
50 * Creates a new RSAPrivateKeySpec.
51 *
52 * @param modulus the modulus
53 * @param privateExponent the private exponent
54 */
55 public RSAPrivateKeySpec(BigInteger modulus, BigInteger privateExponent) {
56 this.modulus = modulus;
57 this.privateExponent = privateExponent;
58 }
59
60 /**
61 * Returns the modulus.
62 *
63 * @return the modulus
64 */
65 public BigInteger getModulus() {
66 return this.modulus;
67 }
68
69 /**
70 * Returns the private exponent.
71 *
72 * @return the private exponent
73 */
74 public BigInteger getPrivateExponent() {
75 return this.privateExponent;
76 }
77}
java/pkg/java/security/spec/RSAPublicKeySpec.class+0−0

Binary file not shown.

java/pkg/java/security/spec/RSAPublicKeySpec.java+77−0
@@ -0,0 +1,77 @@
1/*
2 * Copyright (c) 1998, 2001, 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 java.security.spec;
27
28import java.math.BigInteger;
29
30/**
31 * This class specifies an RSA public key.
32 *
33 * @author Jan Luehe
34 *
35 *
36 * @see java.security.Key
37 * @see java.security.KeyFactory
38 * @see KeySpec
39 * @see X509EncodedKeySpec
40 * @see RSAPrivateKeySpec
41 * @see RSAPrivateCrtKeySpec
42 */
43
44public class RSAPublicKeySpec implements KeySpec {
45
46 private BigInteger modulus;
47 private BigInteger publicExponent;
48
49 /**
50 * Creates a new RSAPublicKeySpec.
51 *
52 * @param modulus the modulus
53 * @param publicExponent the public exponent
54 */
55 public RSAPublicKeySpec(BigInteger modulus, BigInteger publicExponent) {
56 this.modulus = modulus;
57 this.publicExponent = publicExponent;
58 }
59
60 /**
61 * Returns the modulus.
62 *
63 * @return the modulus
64 */
65 public BigInteger getModulus() {
66 return this.modulus;
67 }
68
69 /**
70 * Returns the public exponent.
71 *
72 * @return the public exponent
73 */
74 public BigInteger getPublicExponent() {
75 return this.publicExponent;
76 }
77}
java/pkg/java/security/spec/X509EncodedKeySpec.class+0−0

Binary file not shown.

java/pkg/java/security/spec/X509EncodedKeySpec.java+86−0
@@ -0,0 +1,86 @@
1/*
2 * Copyright (c) 1997, 2005, 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 java.security.spec;
27
28/**
29 * This class represents the ASN.1 encoding of a public key,
30 * encoded according to the ASN.1 type <code>SubjectPublicKeyInfo</code>.
31 * The <code>SubjectPublicKeyInfo</code> syntax is defined in the X.509
32 * standard as follows:
33 *
34 * <pre>
35 * SubjectPublicKeyInfo ::= SEQUENCE {
36 * algorithm AlgorithmIdentifier,
37 * subjectPublicKey BIT STRING }
38 * </pre>
39 *
40 * @author Jan Luehe
41 *
42 *
43 * @see java.security.Key
44 * @see java.security.KeyFactory
45 * @see KeySpec
46 * @see EncodedKeySpec
47 * @see PKCS8EncodedKeySpec
48 *
49 * @since 1.2
50 */
51
52public class X509EncodedKeySpec extends EncodedKeySpec {
53
54 /**
55 * Creates a new X509EncodedKeySpec with the given encoded key.
56 *
57 * @param encodedKey the key, which is assumed to be
58 * encoded according to the X.509 standard. The contents of the
59 * array are copied to protect against subsequent modification.
60 * @exception NullPointerException if <code>encodedKey</code>
61 * is null.
62 */
63 public X509EncodedKeySpec(byte[] encodedKey) {
64 super(encodedKey);
65 }
66
67 /**
68 * Returns the key bytes, encoded according to the X.509 standard.
69 *
70 * @return the X.509 encoding of the key. Returns a new array
71 * each time this method is called.
72 */
73 public byte[] getEncoded() {
74 return super.getEncoded();
75 }
76
77 /**
78 * Returns the name of the encoding format associated with this
79 * key specification.
80 *
81 * @return the string <code>"X.509"</code>.
82 */
83 public final String getFormat() {
84 return "X.509";
85 }
86}
java/pkg/java/security/spec/mkfile+34−0
@@ -0,0 +1,34 @@
1<../../../../../mkconfig
2
3TARG=\
4 AlgorithmParameterSpec.dis\
5 DSAParameterSpec.dis\
6 DSAPrivateKeySpec.dis\
7 DSAPublicKeySpec.dis\
8 ECField.dis\
9 ECFieldF2m.dis\
10 ECFieldFp.dis\
11 ECGenParameterSpec.dis\
12 ECParameterSpec.dis\
13 ECPoint.dis\
14 ECPrivateKeySpec.dis\
15 ECPublicKeySpec.dis\
16 EllipticCurve.dis\
17 EncodedKeySpec.dis\
18 InvalidKeySpecException.dis\
19 InvalidParameterSpecException.dis\
20 KeySpec.dis\
21 MGF1ParameterSpec.dis\
22 PKCS8EncodedKeySpec.dis\
23 PSSParameterSpec.dis\
24 RSAKeyGenParameterSpec.dis\
25 RSAMultiPrimePrivateCrtKeySpec.dis\
26 RSAOtherPrimeInfo.dis\
27 RSAPrivateCrtKeySpec.dis\
28 RSAPrivateKeySpec.dis\
29 RSAPublicKeySpec.dis\
30 X509EncodedKeySpec.dis\
31
32DISBIN=$ROOT/java/dis/java/java/java/security/spec
33
34<$ROOT/mkfiles/mkjava
java/pkg/java/security/spec/package.html+78−0
@@ -0,0 +1,78 @@
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
2<html>
3<head>
4<!--
5Copyright (c) 1998, 2006, Oracle and/or its affiliates. All rights reserved.
6DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
7
8This code is free software; you can redistribute it and/or modify it
9under the terms of the GNU General Public License version 2 only, as
10published by the Free Software Foundation. Oracle designates this
11particular file as subject to the "Classpath" exception as provided
12by Oracle in the LICENSE file that accompanied this code.
13
14This code is distributed in the hope that it will be useful, but WITHOUT
15ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
16FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
17version 2 for more details (a copy is included in the LICENSE file that
18accompanied this code).
19
20You should have received a copy of the GNU General Public License version
212 along with this work; if not, write to the Free Software Foundation,
22Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
23
24Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
25or visit www.oracle.com if you need additional information or have any
26questions.
27-->
28
29</head>
30<body bgcolor="white">
31
32Provides classes and interfaces for key specifications and algorithm
33parameter specifications.
34
35<p>A key specification is a transparent representation of the key material
36that constitutes a key. A key may be specified in an algorithm-specific
37way, or in an algorithm-independent encoding format (such as ASN.1).
38This package contains key specifications for DSA public and private keys,
39RSA public and private keys, PKCS #8 private keys in DER-encoded format,
40and X.509 public and private keys in DER-encoded format.
41
42<p>An algorithm parameter specification is a transparent representation
43of the sets of parameters used with an algorithm. This package contains
44an algorithm parameter specification for parameters used with the
45DSA algorithm.
46
47<h2>Package Specification</h2>
48
49<ul>
50 <li>PKCS #1: RSA Encryption Standard, Version 1.5, November 1993</li>
51 <li>PKCS #8: Private-Key Information Syntax Standard,
52 Version 1.2, November 1993</li>
53 <li>Federal Information Processing Standards Publication (FIPS PUB) 186:
54 Digital Signature Standard (DSS)</li>
55</ul>
56
57<h2>Related Documentation</h2>
58
59For documentation that includes information about algorithm parameter
60and key specifications, please see:
61<ul>
62 <li>
63 <a href=
64 "{@docRoot}/../technotes/guides/security/crypto/CryptoSpec.html">
65 <b>Java<FONT SIZE=-2><SUP>TM</SUP></FONT>
66 Cryptography Architecture API Specification and Reference
67 </b></a></li>
68 <li>
69 <a href=
70 "{@docRoot}/../technotes/guides/security/crypto/HowToImplAProvider.html">
71 <b>How to Implement a Provider for the
72 Java<FONT SIZE=-2><SUP>TM</SUP></FONT> Cryptography Architecture
73 </b></a></li>
74</ul>
75
76@since 1.2
77</body>
78</html>