forked from wupeixuan/JDKSourceCode1.8
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathECFieldFp.java
More file actions
98 lines (90 loc) · 1.96 KB
/
ECFieldFp.java
File metadata and controls
98 lines (90 loc) · 1.96 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
/*
* Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
* ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*/
package java.security.spec;
import java.math.BigInteger;
import java.util.Arrays;
/**
* This immutable class defines an elliptic curve (EC) prime
* finite field.
*
* @see ECField
*
* @author Valerie Peng
*
* @since 1.5
*/
public class ECFieldFp implements ECField {
private BigInteger p;
/**
* Creates an elliptic curve prime finite field
* with the specified prime {@code p}.
* @param p the prime.
* @exception NullPointerException if {@code p} is null.
* @exception IllegalArgumentException if {@code p}
* is not positive.
*/
public ECFieldFp(BigInteger p) {
if (p.signum() != 1) {
throw new IllegalArgumentException("p is not positive");
}
this.p = p;
}
/**
* Returns the field size in bits which is size of prime p
* for this prime finite field.
* @return the field size in bits.
*/
public int getFieldSize() {
return p.bitLength();
};
/**
* Returns the prime {@code p} of this prime finite field.
* @return the prime.
*/
public BigInteger getP() {
return p;
}
/**
* Compares this prime finite field for equality with the
* specified object.
* @param obj the object to be compared.
* @return true if {@code obj} is an instance
* of ECFieldFp and the prime value match, false otherwise.
*/
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj instanceof ECFieldFp) {
return (p.equals(((ECFieldFp)obj).p));
}
return false;
}
/**
* Returns a hash code value for this prime finite field.
* @return a hash code value.
*/
public int hashCode() {
return p.hashCode();
}
}