47 {
48 hashSize = 0;
49 global::Interop.BCrypt.BCryptAlgPseudoHandle bCryptAlgPseudoHandle;
50 int num;
51 switch (hashAlgorithmId)
52 {
53 case "MD5":
54 bCryptAlgPseudoHandle = (isHmac ? global::Interop.BCrypt.BCryptAlgPseudoHandle.BCRYPT_HMAC_MD5_ALG_HANDLE : global::Interop.BCrypt.BCryptAlgPseudoHandle.BCRYPT_MD5_ALG_HANDLE);
55 num = 16;
56 break;
57 case "SHA1":
58 bCryptAlgPseudoHandle = (isHmac ? global::Interop.BCrypt.BCryptAlgPseudoHandle.BCRYPT_HMAC_SHA1_ALG_HANDLE : global::Interop.BCrypt.BCryptAlgPseudoHandle.BCRYPT_SHA1_ALG_HANDLE);
59 num = 20;
60 break;
61 case "SHA256":
62 bCryptAlgPseudoHandle = (isHmac ? global::Interop.BCrypt.BCryptAlgPseudoHandle.BCRYPT_HMAC_SHA256_ALG_HANDLE : global::Interop.BCrypt.BCryptAlgPseudoHandle.BCRYPT_SHA256_ALG_HANDLE);
63 num = 32;
64 break;
65 case "SHA384":
66 bCryptAlgPseudoHandle = (isHmac ? global::Interop.BCrypt.BCryptAlgPseudoHandle.BCRYPT_HMAC_SHA384_ALG_HANDLE : global::Interop.BCrypt.BCryptAlgPseudoHandle.BCRYPT_SHA384_ALG_HANDLE);
67 num = 48;
68 break;
69 case "SHA512":
70 bCryptAlgPseudoHandle = (isHmac ? global::Interop.BCrypt.BCryptAlgPseudoHandle.BCRYPT_HMAC_SHA512_ALG_HANDLE : global::Interop.BCrypt.BCryptAlgPseudoHandle.BCRYPT_SHA512_ALG_HANDLE);
71 num = 64;
72 break;
73 default:
75 }
77 {
79 }
81 {
83 {
85 {
86 global::Interop.BCrypt.NTSTATUS nTSTATUS = global::Interop.BCrypt.BCryptHash((nuint)bCryptAlgPseudoHandle, pbSecret,
key.Length, pbInput,
source.Length, pbOutput, num);
87 if (nTSTATUS != 0)
88 {
89 throw global::Interop.BCrypt.CreateCryptographicException(nTSTATUS);
90 }
91 }
92 }
93 }
94 hashSize = num;
95 }