Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

BOOL WINAPI CryptGetOIDFunctionAddress ( HCRYPTOIDFUNCSET  hFuncSet,
DWORD  dwEncodingType,
LPCSTR  pszOID,
DWORD  dwFlags,
void **  ppvFuncAddr,
HCRYPTOIDFUNCADDR phFuncAddr 
)

Definition at line 371 of file oid.c.

Referenced by CertVerifyCertificateChainPolicy(), CRYPT_ExportEncryptedKey(), CRYPT_GenKey(), CRYPT_GetCreateFunction(), CRYPT_GetRetrieveFunction(), CRYPT_ImportEncryptedKey(), CRYPT_LoadDecoderExFunc(), CRYPT_LoadDecoderFunc(), CRYPT_LoadEncoderExFunc(), CRYPT_LoadEncoderFunc(), CRYPT_ProvOpenStore(), CryptExportPublicKeyInfoEx(), CryptFormatObject(), CryptGetObjectUrl(), and CryptImportPublicKeyInfoEx().

00374 {
00375     BOOL ret = FALSE;
00376     struct OIDFunctionSet *set = hFuncSet;
00377 
00378     TRACE("(%p, %d, %s, %08x, %p, %p)\n", hFuncSet, dwEncodingType,
00379      debugstr_a(pszOID), dwFlags, ppvFuncAddr, phFuncAddr);
00380 
00381     *ppvFuncAddr = NULL;
00382     if (!(dwFlags & CRYPT_GET_INSTALLED_OID_FUNC_FLAG))
00383     {
00384         struct OIDFunction *function;
00385 
00386         EnterCriticalSection(&set->cs);
00387         LIST_FOR_EACH_ENTRY(function, &set->functions, struct OIDFunction, next)
00388         {
00389             if (function->encoding == GET_CERT_ENCODING_TYPE(dwEncodingType))
00390             {
00391                 if (!IS_INTOID(pszOID))
00392                 {
00393                     if (!IS_INTOID(function->entry.pszOID) &&
00394                      !strcasecmp(function->entry.pszOID, pszOID))
00395                     {
00396                         *ppvFuncAddr = function->entry.pvFuncAddr;
00397                         *phFuncAddr = NULL; /* FIXME: what should it be? */
00398                         ret = TRUE;
00399                         break;
00400                     }
00401                 }
00402                 else if (function->entry.pszOID == pszOID)
00403                 {
00404                     *ppvFuncAddr = function->entry.pvFuncAddr;
00405                     *phFuncAddr = NULL; /* FIXME: what should it be? */
00406                     ret = TRUE;
00407                     break;
00408                 }
00409             }
00410         }
00411         LeaveCriticalSection(&set->cs);
00412     }
00413     if (!*ppvFuncAddr)
00414         ret = CRYPT_GetFuncFromReg(dwEncodingType, pszOID, set->name,
00415          ppvFuncAddr, phFuncAddr);
00416     TRACE("returning %d\n", ret);
00417     return ret;
00418 }


Generated on Fri Feb 10 05:27:54 2012 for ReactOS by doxygen 1.6.3

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.