1 package org.bouncycastle.asn1.bsi;
2 
3 import org.bouncycastle.asn1.ASN1ObjectIdentifier;
4 
5 /**
6  * See https://www.bsi.bund.de/cae/servlet/contentblob/471398/publicationFile/30615/BSI-TR-03111_pdf.pdf
7  */
8 public interface BSIObjectIdentifiers
9 {
10     static final ASN1ObjectIdentifier bsi_de = new ASN1ObjectIdentifier("0.4.0.127.0.7");
11 
12     /* 0.4.0.127.0.7.1.1 */
13     static final ASN1ObjectIdentifier id_ecc = bsi_de.branch("1.1");
14 
15     /* 0.4.0.127.0.7.1.1.4.1 */
16     static final ASN1ObjectIdentifier ecdsa_plain_signatures = id_ecc.branch("4.1");
17 
18     /* 0.4.0.127.0.7.1.1.4.1.1 */
19     static final ASN1ObjectIdentifier ecdsa_plain_SHA1 = ecdsa_plain_signatures.branch("1");
20 
21     /* 0.4.0.127.0.7.1.1.4.1.2 */
22     static final ASN1ObjectIdentifier ecdsa_plain_SHA224 = ecdsa_plain_signatures.branch("2");
23 
24     /* 0.4.0.127.0.7.1.1.4.1.3 */
25     static final ASN1ObjectIdentifier ecdsa_plain_SHA256 = ecdsa_plain_signatures.branch("3");
26 
27     /* 0.4.0.127.0.7.1.1.4.1.4 */
28     static final ASN1ObjectIdentifier ecdsa_plain_SHA384 = ecdsa_plain_signatures.branch("4");
29 
30     /* 0.4.0.127.0.7.1.1.4.1.5 */
31     static final ASN1ObjectIdentifier ecdsa_plain_SHA512 = ecdsa_plain_signatures.branch("5");
32 
33     /* 0.4.0.127.0.7.1.1.4.1.6 */
34     static final ASN1ObjectIdentifier ecdsa_plain_RIPEMD160 = ecdsa_plain_signatures.branch("6");
35 
36 	/* 0.4.0.127.0.7.1.1.4.1.8 */
37 	static final ASN1ObjectIdentifier ecdsa_plain_SHA3_224 = ecdsa_plain_signatures.branch("8");
38 
39 	/* 0.4.0.127.0.7.1.1.4.1.9 */
40 	static final ASN1ObjectIdentifier ecdsa_plain_SHA3_256 = ecdsa_plain_signatures.branch("9");
41 
42 	/* 0.4.0.127.0.7.1.1.4.1.10 */
43 	static final ASN1ObjectIdentifier ecdsa_plain_SHA3_384 = ecdsa_plain_signatures.branch("10");
44 
45 	/* 0.4.0.127.0.7.1.1.4.1.11 */
46 	static final ASN1ObjectIdentifier ecdsa_plain_SHA3_512 = ecdsa_plain_signatures.branch("11");
47 
48 	/** 0.4.0.127.0.7.1 */
49 	static final ASN1ObjectIdentifier algorithm = bsi_de.branch("1");
50 
51 	static final ASN1ObjectIdentifier ecka_eg = id_ecc.branch("5.1");
52 
53 	/** ElGamal Elliptic Curve Key Agreement and Key Derivation according to X963 OID: 0.4.0.127.0.7.1.1.5.1.1 */
54 	static final ASN1ObjectIdentifier ecka_eg_X963kdf = ecka_eg.branch("1");
55 
56 	/** ElGamal Elliptic Curve Key Agreement and Key Derivation according to X963
57 	 * with hash function SHA-1
58 	 * OID: 0.4.0.127.0.7.1.1.5.1.1.1 */
59 	static final ASN1ObjectIdentifier ecka_eg_X963kdf_SHA1 = ecka_eg_X963kdf.branch("1");
60 
61 	/** ElGamal Elliptic Curve Key Agreement and Key Derivation according to X963
62 	 * with hash function SHA224
63 	 * OID: 0.4.0.127.0.7.1.1.5.1.1.2 */
64 	static final ASN1ObjectIdentifier ecka_eg_X963kdf_SHA224 = ecka_eg_X963kdf.branch("2");
65 
66 	/** ElGamal Elliptic Curve Key Agreement and Key Derivation according to X963
67 	 * with hash function SHA256
68 	 * OID: 0.4.0.127.0.7.1.1.5.1.1.3 */
69 	static final ASN1ObjectIdentifier ecka_eg_X963kdf_SHA256 = ecka_eg_X963kdf.branch("3");
70 
71 	/** ElGamal Elliptic Curve Key Agreement and Key Derivation according to X963
72 	 * with hash function SHA384
73 	 * OID: 0.4.0.127.0.7.1.1.5.1.1.4 */
74 	static final ASN1ObjectIdentifier ecka_eg_X963kdf_SHA384 = ecka_eg_X963kdf.branch("4");
75 
76 	/** ElGamal Elliptic Curve Key Agreement and Key Derivation according to X963
77 	 * with hash function SHA512
78 	 * OID: 0.4.0.127.0.7.1.1.5.1.1.5 */
79 	static final ASN1ObjectIdentifier ecka_eg_X963kdf_SHA512 = ecka_eg_X963kdf.branch("5");
80 
81 	/** ElGamal Elliptic Curve Key Agreement and Key Derivation according to X963
82 	 * with hash function RIPEMD160
83 	 * OID: 0.4.0.127.0.7.1.1.5.1.1.6 */
84 	static final ASN1ObjectIdentifier ecka_eg_X963kdf_RIPEMD160 = ecka_eg_X963kdf.branch("6");
85 
86 	/**
87 	 * 	Key Derivation Function for Session Keys
88 	 */
89 	static final ASN1ObjectIdentifier ecka_eg_SessionKDF = ecka_eg.branch("2");
90 
91 	static final ASN1ObjectIdentifier ecka_eg_SessionKDF_3DES    = ecka_eg_SessionKDF.branch("1");
92 	static final ASN1ObjectIdentifier ecka_eg_SessionKDF_AES128  = ecka_eg_SessionKDF.branch("2");
93 	static final ASN1ObjectIdentifier ecka_eg_SessionKDF_AES192  = ecka_eg_SessionKDF.branch("3");
94 	static final ASN1ObjectIdentifier ecka_eg_SessionKDF_AES256  = ecka_eg_SessionKDF.branch("4");
95 
96 	/** AES encryption (CBC) and authentication (CMAC)
97 	 * OID: 0.4.0.127.0.7.1.x */
98 	//TODO: replace "1" with correct OID
99 	//static final ASN1ObjectIdentifier aes_cbc_cmac = algorithm.branch("1");
100 
101 	/** AES encryption (CBC) and authentication (CMAC) with 128 bit
102 	 * OID: 0.4.0.127.0.7.1.x.y1 */
103 	//TODO:  replace "1" with correct OID
104 	//static final ASN1ObjectIdentifier id_aes128_CBC_CMAC = aes_cbc_cmac.branch("1");
105 
106 
107 	/** AES encryption (CBC) and authentication (CMAC) with 192 bit
108 	 * OID: 0.4.0.127.0.7.1.x.y2 */
109 	//TODO:  replace "1" with correct OID
110 	//static final ASN1ObjectIdentifier id_aes192_CBC_CMAC = aes_cbc_cmac.branch("1");
111 
112 	/** AES encryption (CBC) and authentication (CMAC) with 256 bit
113 	 * OID: 0.4.0.127.0.7.1.x.y3 */
114 	//TODO:  replace "1" with correct OID
115 	//static final ASN1ObjectIdentifier id_aes256_CBC_CMAC = aes_cbc_cmac.branch("1");
116 }
117