Exemplo n.º 1
0
DWORD
RpcVMCACopyCertificateToRPC(
    VMCA_CERTIFICATE_ARRAY* pInputCertArray,
    VMCA_CERTIFICATE_ARRAY** pOutputCertArray
    )
{
    DWORD dwError                               = 0;
    VMCA_CERTIFICATE_ARRAY* pCertArray          = NULL;

    dwError = VMCARpcAllocateMemory(
                    sizeof(VMCA_CERTIFICATE_ARRAY),
                    (PVOID*)&pCertArray);
    BAIL_ON_VMCA_ERROR(dwError);

    pCertArray->dwCount = pInputCertArray->dwCount;

    if (pCertArray->dwCount > 0)
    {
        DWORD iEntry = 0;
        dwError = VMCARpcAllocateMemory(
                    pCertArray->dwCount * sizeof(pCertArray->certificates[0]),
                    (PVOID*)&pCertArray->certificates);
        BAIL_ON_VMCA_ERROR(dwError);

        for (; iEntry < pCertArray->dwCount; iEntry++)
        {

            pCertArray->certificates[iEntry].dwCount
                    = pInputCertArray->certificates[iEntry].dwCount;

            dwError = VMCARpcAllocateString(
                    (RP_PSTR)pInputCertArray->certificates[iEntry].pCert,
                    (RP_PSTR*)&pCertArray->certificates[iEntry].pCert);

            BAIL_ON_VMCA_ERROR(dwError);
        }
    }

    *pOutputCertArray = pCertArray;

cleanup:

    return dwError;
error:
    if (pCertArray)
    {
        VMCARpcFreeCertificateArray(pCertArray);
    }

    goto cleanup;
}
Exemplo n.º 2
0
// db entry util 1
DWORD
VMCAClonePkgEntryContentsFromDbPkgEntry(
    PVMCA_DB_CERTIFICATE_ENTRY      pDbCertEntrySrc,
    PVMCA_CERTIFICATE_CONTAINER     pCertEntryDst
    )
{
    DWORD dwError =0;

    pCertEntryDst->dwCount = pDbCertEntrySrc->dwCertSize;
    dwError = VMCARpcAllocateString (
                            (RP_PSTR)pDbCertEntrySrc->pCertBlob,
                            (RP_PSTR*)&pCertEntryDst->pCert);
    BAIL_ON_VMCA_ERROR(dwError);

cleanup:
    return dwError;

error:
    goto cleanup;
}