1 namespace System.Security.Cryptography {
2 
3 	static class CAPI {
4 		// OID key type.
5 		internal const uint CRYPT_OID_INFO_OID_KEY   = 1;
6 		internal const uint CRYPT_OID_INFO_NAME_KEY  = 2;
7 		internal const uint CRYPT_OID_INFO_ALGID_KEY = 3;
8 		internal const uint CRYPT_OID_INFO_SIGN_KEY  = 4;
9 
CryptFindOIDInfoNameFromKey(string key, OidGroup oidGroup)10 		public static string CryptFindOIDInfoNameFromKey (string key, OidGroup oidGroup)
11 		{
12 			// TODO: incomplete
13 			// TODO: oidGroup is ignored
14 			switch (key) {
15 			case "1.2.840.113549.1.1.5":
16 			case "1.3.14.3.2.29":
17 			case "1.3.14.3.2.15":
18 				return "sha1RSA";
19 			case "1.2.840.113549.1.1.4":
20 			case "1.3.14.3.2.3":
21 				return "md5RSA";
22 			case "1.2.840.10040.4.3":
23 			case "1.3.14.3.2.13":
24 				return "sha1DSA";
25 			case "1.2.840.113549.1.1.2":
26 			case "1.3.14.7.2.3.1":
27 				return "md2RSA";
28 			case "1.2.840.113549.1.1.3":
29 				return "md4RSA";
30 			case "1.3.14.3.2.27":
31 				return "dsaSHA1";
32 			case "2.16.840.1.101.2.1.1.19":
33 				return "mosaicUpdatedSig";
34 			case "1.3.14.3.2.26":
35 				return "sha1";
36 			case "1.2.840.113549.2.5":
37 				return "md5";
38 			case "2.16.840.1.101.3.4.2.1":
39 				return "sha256";
40 			case "2.16.840.1.101.3.4.2.2":
41 				return "sha384";
42 			case "2.16.840.1.101.3.4.2.3":
43 				return "sha512";
44 			case "1.2.840.113549.1.1.11":
45 				return "sha256RSA";
46 			case "1.2.840.113549.1.1.12":
47 				return "sha384RSA";
48 			case "1.2.840.113549.1.1.13":
49 				return "sha512RSA";
50 			case "1.2.840.113549.1.1.10":
51 				return "RSASSA-PSS";
52 			case "1.2.840.10045.4.1":
53 				return "sha1ECDSA";
54 			case "1.2.840.10045.4.3.2":
55 				return "sha256ECDSA";
56 			case "1.2.840.10045.4.3.3":
57 				return "sha384ECDSA";
58 			case "1.2.840.10045.4.3.4":
59 				return "sha512ECDSA";
60 			case "1.2.840.10045.4.3":
61 				return "specifiedECDSA";
62 			case "1.2.840.113549.1.1.1":
63 				return "RSA";
64 			case "1.2.840.113549.1.7.1":
65 				return "PKCS 7 Data";
66 			case "1.2.840.113549.1.9.3":
67 				return "Content Type";
68 			case "1.2.840.113549.1.9.4":
69 				return "Message Digest";
70 			case "1.2.840.113549.1.9.5":
71 				return "Signing Time";
72 			case "1.2.840.113549.3.7":
73 				return "3des";
74 			case "2.5.29.17":
75 				return "Subject Alternative Name";
76 			case "2.16.840.1.101.3.4.1.2":
77 				return "aes128";
78 			case "2.16.840.1.101.3.4.1.42":
79 				return "aes256";
80 			case "2.16.840.1.113730.1.1":
81 				return "Netscape Cert Type";
82 			}
83 
84 			return null;
85 		}
86 
CryptFindOIDInfoKeyFromName(string name, OidGroup oidGroup)87 		public static string CryptFindOIDInfoKeyFromName (string name, OidGroup oidGroup)
88 		{
89 			// TODO: incomplete
90 			// TODO: oidGroup is ignored
91 			switch(name) {
92 			case "sha1RSA":
93 				return "1.2.840.113549.1.1.5";
94 			case "md5RSA":
95 				return "1.2.840.113549.1.1.4";
96 			case "sha1DSA":
97 				return "1.2.840.10040.4.3";
98 			case "shaRSA":
99 				return "1.3.14.3.2.29";
100 			case "md2RSA":
101 				return "1.2.840.113549.1.1.2";
102 			case "md4RSA":
103 				return "1.2.840.113549.1.1.3";
104 			case "dsaSHA1":
105 				return "1.3.14.3.2.27";
106 			case "mosaicUpdatedSig":
107 				return "2.16.840.1.101.2.1.1.19";
108 			case "sha1":
109 				return "1.3.14.3.2.26";
110 			case "md5":
111 				return "1.2.840.113549.2.5";
112 			case "sha256":
113 				return "2.16.840.1.101.3.4.2.1";
114 			case "sha384":
115 				return "2.16.840.1.101.3.4.2.2";
116 			case "sha512":
117 				return "2.16.840.1.101.3.4.2.3";
118 			case "sha256RSA":
119 				return "1.2.840.113549.1.1.11";
120 			case "sha384RSA":
121 				return "1.2.840.113549.1.1.12";
122 			case "sha512RSA":
123 				return "1.2.840.113549.1.1.13";
124 			case "RSASSA-PSS":
125 				return "1.2.840.113549.1.1.10";
126 			case "sha1ECDSA":
127 				return "1.2.840.10045.4.1";
128 			case "sha256ECDSA":
129 				return "1.2.840.10045.4.3.2";
130 			case "sha384ECDSA":
131 				return "1.2.840.10045.4.3.3";
132 			case "sha512ECDSA":
133 				return "1.2.840.10045.4.3.4";
134 			case "specifiedECDSA":
135 				return "1.2.840.10045.4.3";
136 			case "RSA":
137 				return "1.2.840.113549.1.1.1";
138 			case "PKCS 7 Data":
139 				return "1.2.840.113549.1.7.1";
140 			case "Content Type":
141 				return "1.2.840.113549.1.9.3";
142 			case "Message Digest":
143 				return "1.2.840.113549.1.9.4";
144 			case "Signing Time":
145 				return "1.2.840.113549.1.9.5";
146 			case "3des":
147 				return "1.2.840.113549.3.7";
148 			case "Subject Alternative Name":
149 				return "2.5.29.17";
150 			case "aes128":
151 				return "2.16.840.1.101.3.4.1.2";
152 			case "aes256":
153 				return "2.16.840.1.101.3.4.1.42";
154 			case "Netscape Cert Type":
155 				return "2.16.840.1.113730.1.1";
156 			}
157 			return null;
158 		}
159 	}
160 }