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 }