/* Load CRL File of type, SSL_SUCCESS on ok */ int BufferLoadCRL(CYASSL_CRL* crl, const byte* buff, long sz, int type) { int ret = SSL_SUCCESS; const byte* myBuffer = buff; /* if DER ok, otherwise switch */ buffer der; DecodedCRL dcrl; der.buffer = NULL; CYASSL_ENTER("BufferLoadCRL"); if (crl == NULL || buff == NULL || sz == 0) return BAD_FUNC_ARG; if (type == SSL_FILETYPE_PEM) { int eccKey = 0; /* not used */ EncryptedInfo info; info.ctx = NULL; ret = PemToDer(buff, sz, CRL_TYPE, &der, NULL, &info, &eccKey); if (ret == 0) { myBuffer = der.buffer; sz = der.length; } else { CYASSL_MSG("Pem to Der failed"); return -1; } } InitDecodedCRL(&dcrl); ret = ParseCRL(&dcrl, myBuffer, (word32)sz, crl->cm); if (ret != 0) { CYASSL_MSG("ParseCRL error"); } else { ret = AddCRL(crl, &dcrl); if (ret != 0) { CYASSL_MSG("AddCRL error"); } } FreeDecodedCRL(&dcrl); if (der.buffer) XFREE(der.buffer, NULL, DYNAMIC_TYPE_CRL); if (ret == 0) return SSL_SUCCESS; /* convert */ return ret; }
/* Load CRL File of type, SSL_SUCCESS on ok */ int BufferLoadCRL(WOLFSSL_CRL* crl, const byte* buff, long sz, int type) { int ret = SSL_SUCCESS; const byte* myBuffer = buff; /* if DER ok, otherwise switch */ DerBuffer* der = NULL; #ifdef WOLFSSL_SMALL_STACK DecodedCRL* dcrl; #else DecodedCRL dcrl[1]; #endif WOLFSSL_ENTER("BufferLoadCRL"); if (crl == NULL || buff == NULL || sz == 0) return BAD_FUNC_ARG; if (type == SSL_FILETYPE_PEM) { int eccKey = 0; /* not used */ EncryptedInfo info; info.ctx = NULL; ret = PemToDer(buff, sz, CRL_TYPE, &der, NULL, &info, &eccKey); if (ret == 0) { myBuffer = der->buffer; sz = der->length; } else { WOLFSSL_MSG("Pem to Der failed"); FreeDer(&der); return -1; } } #ifdef WOLFSSL_SMALL_STACK dcrl = (DecodedCRL*)XMALLOC(sizeof(DecodedCRL), NULL, DYNAMIC_TYPE_TMP_BUFFER); if (dcrl == NULL) { FreeDer(&der); return MEMORY_E; } #endif InitDecodedCRL(dcrl, crl->heap); ret = ParseCRL(dcrl, myBuffer, (word32)sz, crl->cm); if (ret != 0) { WOLFSSL_MSG("ParseCRL error"); } else { ret = AddCRL(crl, dcrl); if (ret != 0) { WOLFSSL_MSG("AddCRL error"); } } FreeDecodedCRL(dcrl); #ifdef WOLFSSL_SMALL_STACK XFREE(dcrl, NULL, DYNAMIC_TYPE_TMP_BUFFER); #endif FreeDer(&der); return ret ? ret : SSL_SUCCESS; /* convert 0 to SSL_SUCCESS */ }