1 package org.bouncycastle.asn1.x9;
2 
3 import org.bouncycastle.asn1.ASN1ObjectIdentifier;
4 
5 /**
6  *
7  * Object identifiers for the various X9 standards.
8  * <pre>
9  * ansi-X9-62 OBJECT IDENTIFIER ::= { iso(1) member-body(2)
10  *                                    us(840) ansi-x962(10045) }
11  * </pre>
12  */
13 public interface X9ObjectIdentifiers
14 {
15     /** Base OID: 1.2.840.10045 */
16     ASN1ObjectIdentifier ansi_X9_62 = new ASN1ObjectIdentifier("1.2.840.10045");
17 
18     /** OID: 1.2.840.10045.1 */
19     ASN1ObjectIdentifier id_fieldType = ansi_X9_62.branch("1");
20 
21     /** OID: 1.2.840.10045.1.1 */
22     ASN1ObjectIdentifier prime_field = id_fieldType.branch("1");
23 
24     /** OID: 1.2.840.10045.1.2 */
25     ASN1ObjectIdentifier characteristic_two_field = id_fieldType.branch("2");
26 
27     /** OID: 1.2.840.10045.1.2.3.1 */
28     ASN1ObjectIdentifier gnBasis = characteristic_two_field.branch("3.1");
29 
30     /** OID: 1.2.840.10045.1.2.3.2 */
31     ASN1ObjectIdentifier tpBasis = characteristic_two_field.branch("3.2");
32 
33     /** OID: 1.2.840.10045.1.2.3.3 */
34     ASN1ObjectIdentifier ppBasis = characteristic_two_field.branch("3.3");
35 
36     /** OID: 1.2.840.10045.4 */
37     ASN1ObjectIdentifier id_ecSigType = ansi_X9_62.branch("4");
38 
39     /** OID: 1.2.840.10045.4.1 */
40     ASN1ObjectIdentifier ecdsa_with_SHA1 = id_ecSigType.branch("1");
41 
42     /** OID: 1.2.840.10045.2 */
43     ASN1ObjectIdentifier id_publicKeyType = ansi_X9_62.branch("2");
44 
45     /** OID: 1.2.840.10045.2.1 */
46     ASN1ObjectIdentifier id_ecPublicKey = id_publicKeyType.branch("1");
47 
48     /** OID: 1.2.840.10045.4.3 */
49     ASN1ObjectIdentifier ecdsa_with_SHA2 = id_ecSigType.branch("3");
50 
51     /** OID: 1.2.840.10045.4.3.1 */
52     ASN1ObjectIdentifier ecdsa_with_SHA224 = ecdsa_with_SHA2.branch("1");
53 
54     /** OID: 1.2.840.10045.4.3.2 */
55     ASN1ObjectIdentifier ecdsa_with_SHA256 = ecdsa_with_SHA2.branch("2");
56 
57     /** OID: 1.2.840.10045.4.3.3 */
58     ASN1ObjectIdentifier ecdsa_with_SHA384 = ecdsa_with_SHA2.branch("3");
59 
60     /** OID: 1.2.840.10045.4.3.4 */
61     ASN1ObjectIdentifier ecdsa_with_SHA512 = ecdsa_with_SHA2.branch("4");
62 
63     /**
64      * Named curves base
65      * <p>
66      * OID: 1.2.840.10045.3
67      */
68     ASN1ObjectIdentifier ellipticCurve = ansi_X9_62.branch("3");
69 
70     /**
71      * Two Curves
72      * <p>
73      * OID: 1.2.840.10045.3.0
74      */
75     ASN1ObjectIdentifier  cTwoCurve = ellipticCurve.branch("0");
76 
77     /** Two Curve c2pnb163v1, OID: 1.2.840.10045.3.0.1 */
78     ASN1ObjectIdentifier c2pnb163v1 = cTwoCurve.branch("1");
79     /** Two Curve c2pnb163v2, OID: 1.2.840.10045.3.0.2 */
80     ASN1ObjectIdentifier c2pnb163v2 = cTwoCurve.branch("2");
81     /** Two Curve c2pnb163v3, OID: 1.2.840.10045.3.0.3 */
82     ASN1ObjectIdentifier c2pnb163v3 = cTwoCurve.branch("3");
83     /** Two Curve c2pnb176w1, OID: 1.2.840.10045.3.0.4 */
84     ASN1ObjectIdentifier c2pnb176w1 = cTwoCurve.branch("4");
85     /** Two Curve c2tnb191v1, OID: 1.2.840.10045.3.0.5 */
86     ASN1ObjectIdentifier c2tnb191v1 = cTwoCurve.branch("5");
87     /** Two Curve c2tnb191v2, OID: 1.2.840.10045.3.0.6 */
88     ASN1ObjectIdentifier c2tnb191v2 = cTwoCurve.branch("6");
89     /** Two Curve c2tnb191v3, OID: 1.2.840.10045.3.0.7 */
90     ASN1ObjectIdentifier c2tnb191v3 = cTwoCurve.branch("7");
91     /** Two Curve c2onb191v4, OID: 1.2.840.10045.3.0.8 */
92     ASN1ObjectIdentifier c2onb191v4 = cTwoCurve.branch("8");
93     /** Two Curve c2onb191v5, OID: 1.2.840.10045.3.0.9 */
94     ASN1ObjectIdentifier c2onb191v5 = cTwoCurve.branch("9");
95     /** Two Curve c2pnb208w1, OID: 1.2.840.10045.3.0.10 */
96     ASN1ObjectIdentifier c2pnb208w1 = cTwoCurve.branch("10");
97     /** Two Curve c2tnb239v1, OID: 1.2.840.10045.3.0.11 */
98     ASN1ObjectIdentifier c2tnb239v1 = cTwoCurve.branch("11");
99     /** Two Curve c2tnb239v2, OID: 1.2.840.10045.3.0.12 */
100     ASN1ObjectIdentifier c2tnb239v2 = cTwoCurve.branch("12");
101     /** Two Curve c2tnb239v3, OID: 1.2.840.10045.3.0.13 */
102     ASN1ObjectIdentifier c2tnb239v3 = cTwoCurve.branch("13");
103     /** Two Curve c2onb239v4, OID: 1.2.840.10045.3.0.14 */
104     ASN1ObjectIdentifier c2onb239v4 = cTwoCurve.branch("14");
105     /** Two Curve c2onb239v5, OID: 1.2.840.10045.3.0.15 */
106     ASN1ObjectIdentifier c2onb239v5 = cTwoCurve.branch("15");
107     /** Two Curve c2pnb272w1, OID: 1.2.840.10045.3.0.16 */
108     ASN1ObjectIdentifier c2pnb272w1 = cTwoCurve.branch("16");
109     /** Two Curve c2pnb304w1, OID: 1.2.840.10045.3.0.17 */
110     ASN1ObjectIdentifier c2pnb304w1 = cTwoCurve.branch("17");
111     /** Two Curve c2tnb359v1, OID: 1.2.840.10045.3.0.18 */
112     ASN1ObjectIdentifier c2tnb359v1 = cTwoCurve.branch("18");
113     /** Two Curve c2pnb368w1, OID: 1.2.840.10045.3.0.19 */
114     ASN1ObjectIdentifier c2pnb368w1 = cTwoCurve.branch("19");
115     /** Two Curve c2tnb431r1, OID: 1.2.840.10045.3.0.20 */
116     ASN1ObjectIdentifier c2tnb431r1 = cTwoCurve.branch("20");
117 
118     /**
119      * Prime Curves
120      * <p>
121      * OID: 1.2.840.10045.3.1
122      */
123     ASN1ObjectIdentifier primeCurve = ellipticCurve.branch("1");
124 
125     /** Prime Curve prime192v1, OID: 1.2.840.10045.3.1.1 */
126     ASN1ObjectIdentifier prime192v1 = primeCurve.branch("1");
127     /** Prime Curve prime192v2, OID: 1.2.840.10045.3.1.2 */
128     ASN1ObjectIdentifier prime192v2 = primeCurve.branch("2");
129     /** Prime Curve prime192v3, OID: 1.2.840.10045.3.1.3 */
130     ASN1ObjectIdentifier prime192v3 = primeCurve.branch("3");
131     /** Prime Curve prime239v1, OID: 1.2.840.10045.3.1.4 */
132     ASN1ObjectIdentifier prime239v1 = primeCurve.branch("4");
133     /** Prime Curve prime239v2, OID: 1.2.840.10045.3.1.5 */
134     ASN1ObjectIdentifier prime239v2 = primeCurve.branch("5");
135     /** Prime Curve prime239v3, OID: 1.2.840.10045.3.1.6 */
136     ASN1ObjectIdentifier prime239v3 = primeCurve.branch("6");
137     /** Prime Curve prime256v1, OID: 1.2.840.10045.3.1.7 */
138     ASN1ObjectIdentifier prime256v1 = primeCurve.branch("7");
139 
140     /**
141      * DSA
142      * <pre>
143      * dsapublicnumber OBJECT IDENTIFIER ::= { iso(1) member-body(2)
144      *                                         us(840) ansi-x957(10040) number-type(4) 1 }
145      * </pre>
146      * Base OID: 1.2.840.10040.4.1
147      */
148     ASN1ObjectIdentifier id_dsa = new ASN1ObjectIdentifier("1.2.840.10040.4.1");
149 
150     /**
151      * <pre>
152      * id-dsa-with-sha1 OBJECT IDENTIFIER ::= {
153      *     iso(1) member-body(2) us(840) x9-57(10040) x9cm(4) 3 }
154      * </pre>
155      * OID: 1.2.840.10040.4.3
156      */
157     ASN1ObjectIdentifier id_dsa_with_sha1 = new ASN1ObjectIdentifier("1.2.840.10040.4.3");
158 
159     /**
160      * X9.63 - Signature Specification
161      * <p>
162      * Base OID: 1.3.133.16.840.63.0
163      */
164     ASN1ObjectIdentifier x9_63_scheme = new ASN1ObjectIdentifier("1.3.133.16.840.63.0");
165     /** OID: 1.3.133.16.840.63.0.2 */
166     ASN1ObjectIdentifier dhSinglePass_stdDH_sha1kdf_scheme      = x9_63_scheme.branch("2");
167     /** OID: 1.3.133.16.840.63.0.3 */
168     ASN1ObjectIdentifier dhSinglePass_cofactorDH_sha1kdf_scheme = x9_63_scheme.branch("3");
169     /** OID: 1.3.133.16.840.63.0.16 */
170     ASN1ObjectIdentifier mqvSinglePass_sha1kdf_scheme           = x9_63_scheme.branch("16");
171 
172     /**
173      * X9.42
174      */
175 
176     ASN1ObjectIdentifier ansi_X9_42 = new ASN1ObjectIdentifier("1.2.840.10046");
177 
178     /**
179      * Diffie-Hellman
180      * <pre>
181      * dhpublicnumber OBJECT IDENTIFIER ::= {
182      *    iso(1) member-body(2)  us(840) ansi-x942(10046) number-type(2) 1
183      * }
184      * </pre>
185      * OID: 1.2.840.10046.2.1
186      */
187     ASN1ObjectIdentifier dhpublicnumber = ansi_X9_42.branch("2.1");
188 
189     /** X9.42 schemas base OID: 1.2.840.10046.3 */
190     ASN1ObjectIdentifier x9_42_schemes = ansi_X9_42.branch("3");
191     /** X9.42 dhStatic OID: 1.2.840.10046.3.1 */
192     ASN1ObjectIdentifier dhStatic        = x9_42_schemes.branch("1");
193     /** X9.42 dhEphem OID: 1.2.840.10046.3.2 */
194     ASN1ObjectIdentifier dhEphem         = x9_42_schemes.branch("2");
195     /** X9.42 dhOneFlow OID: 1.2.840.10046.3.3 */
196     ASN1ObjectIdentifier dhOneFlow       = x9_42_schemes.branch("3");
197     /** X9.42 dhHybrid1 OID: 1.2.840.10046.3.4 */
198     ASN1ObjectIdentifier dhHybrid1       = x9_42_schemes.branch("4");
199     /** X9.42 dhHybrid2 OID: 1.2.840.10046.3.5 */
200     ASN1ObjectIdentifier dhHybrid2       = x9_42_schemes.branch("5");
201     /** X9.42 dhHybridOneFlow OID: 1.2.840.10046.3.6 */
202     ASN1ObjectIdentifier dhHybridOneFlow = x9_42_schemes.branch("6");
203     /** X9.42 MQV2 OID: 1.2.840.10046.3.7 */
204     ASN1ObjectIdentifier mqv2            = x9_42_schemes.branch("7");
205     /** X9.42 MQV1 OID: 1.2.840.10046.3.8 */
206     ASN1ObjectIdentifier mqv1            = x9_42_schemes.branch("8");
207 
208     /**
209      * X9.44
210      * <pre>
211      *    x9-44 OID ::= {
212      *      iso(1) identified-organization(3) tc68(133) country(16) x9(840)
213      *      x9Standards(9) x9-44(44)
214      *   }
215      * </pre>
216      */
217 
218     ASN1ObjectIdentifier x9_44 = new ASN1ObjectIdentifier("1.3.133.16.840.9.44");
219 
220     ASN1ObjectIdentifier x9_44_components = x9_44.branch("1");
221 
222     ASN1ObjectIdentifier id_kdf_kdf2 = x9_44_components.branch("1");
223     ASN1ObjectIdentifier id_kdf_kdf3 = x9_44_components.branch("2");
224 }
225