コード例 #1
0
        /// <summary>
        /// Get the HashAlgorithmName from the given ALG_ID
        /// </summary>
        private static HashAlgorithmName?GetHashAlgorithmName(Interop.BCrypt.ECC_CURVE_ALG_ID_ENUM hashId)
        {
            Interop.Crypt32.CRYPT_OID_INFO oid = Interop.Crypt32.FindAlgIdOidInfo((int)hashId);
            if (oid.AlgId == -1)
            {
                // The original hash algorithm may not be found and is optional
                return(null);
            }

            return(new HashAlgorithmName(oid.Name));
        }
コード例 #2
0
        public static unsafe CRYPT_OID_INFO FindAlgIdOidInfo(Interop.BCrypt.ECC_CURVE_ALG_ID_ENUM algId)
        {
            CRYPT_OID_INFO *fullOidInfo = CryptFindOIDInfo(
                CryptOidInfoKeyType.CRYPT_OID_INFO_ALGID_KEY,
                &algId,
                OidGroup.HashAlgorithm);

            if (fullOidInfo != null)
            {
                return(*fullOidInfo);
            }

            // Otherwise the lookup failed.
            return(new CRYPT_OID_INFO()
            {
                AlgId = -1
            });
        }
コード例 #3
0
        public static CRYPT_OID_INFO FindAlgIdOidInfo(Interop.BCrypt.ECC_CURVE_ALG_ID_ENUM algId)
        {
            int    intAlgId    = (int)algId;
            IntPtr fullOidInfo = CryptFindOIDInfo(
                CryptOidInfoKeyType.CRYPT_OID_INFO_ALGID_KEY,
                ref intAlgId,
                OidGroup.HashAlgorithm);

            if (fullOidInfo != IntPtr.Zero)
            {
                return(Marshal.PtrToStructure <CRYPT_OID_INFO>(fullOidInfo));
            }

            // Otherwise the lookup failed.
            return(new CRYPT_OID_INFO()
            {
                AlgId = -1
            });
        }