00947 {
00948 HKEY key;
00949 LPWSTR dlls;
00950 BOOL ret = FALSE;
00951
00952 TRACE("(%x, %s, %d, %s)\n", dwEncodingType, debugstr_a(pszFuncName),
00953 dwIndex, debugstr_w(pwszDll));
00954
00955 if (!pwszDll)
00956 {
00957 SetLastError(E_INVALIDARG);
00958 return FALSE;
00959 }
00960
00961 if (!CRYPT_GetDefaultOIDKey(dwEncodingType, pszFuncName, &key))
00962 return FALSE;
00963
00964 dlls = CRYPT_GetDefaultOIDDlls(key);
00965 if (CRYPT_FindStringInMultiString(dlls, pwszDll))
00966 SetLastError(ERROR_FILE_EXISTS);
00967 else
00968 {
00969 dlls = CRYPT_AddStringToMultiString(dlls, pwszDll, dwIndex);
00970 if (dlls)
00971 ret = CRYPT_SetDefaultOIDDlls(key, dlls);
00972 }
00973 CryptMemFree(dlls);
00974 RegCloseKey(key);
00975 return ret;
00976 }