/** * xmlSecBase64CtxFinal: * @ctx: the pointer to #xmlSecBase64Ctx structure * @out: the output buffer * @outSize: the output buffer size * * Encodes or decodes the last piece of data stored in the context * and finalizes the result. * * Returns: the number of bytes written to output buffer or * -1 if an error occurs. */ int xmlSecBase64CtxFinal(xmlSecBase64CtxPtr ctx, xmlSecByte *out, xmlSecSize outSize) { xmlSecSize outResSize = 0; int ret; xmlSecAssert2(ctx != NULL, -1); xmlSecAssert2(out != NULL, -1); xmlSecAssert2(outSize > 0, -1); if(ctx->encode != 0) { ret = xmlSecBase64CtxEncodeFinal(ctx, out, outSize, &outResSize); if(ret < 0) { xmlSecInternalError2("xmlSecBase64CtxEncodeFinal", NULL, "outSize=%d", outSize); return(-1); } } else { if(!xmlSecBase64CtxDecodeIsFinished(ctx)) { xmlSecInternalError("xmlSecBase64CtxIsFinished", NULL); return(-1); } } /* add \0 */ if((outResSize + 1) < outSize) { out[outResSize] = '\0'; } return(outResSize); }
/** * xmlSecBase64CtxFinal: * @ctx: the pointer to #xmlSecBase64Ctx structure * @out: the output buffer * @outSize: the output buffer size * * Encodes or decodes the last piece of data stored in the context * and finalizes the result. * * Returns the number of bytes written to output buffer or * -1 if an error occurs. */ int xmlSecBase64CtxFinal(xmlSecBase64CtxPtr ctx, xmlSecByte *out, xmlSecSize outSize) { xmlSecSize outResSize = 0; int ret; xmlSecAssert2(ctx != NULL, -1); xmlSecAssert2(out != NULL, -1); xmlSecAssert2(outSize > 0, -1); if(ctx->encode != 0) { ret = xmlSecBase64CtxEncodeFinal(ctx, out, outSize, &outResSize); if(ret < 0) { xmlSecErr_a_ignorar6(XMLSEC_ERRORS_HERE, NULL, "xmlSecBase64CtxEncodeFinal", XMLSEC_ERRORS_R_XMLSEC_FAILED, "outSize=%d", outSize); return(-1); } } else { if(!xmlSecBase64CtxDecodeIsFinished(ctx)) { xmlSecErr_a_ignorar5(XMLSEC_ERRORS_HERE, NULL, "xmlSecBase64CtxIsFinished", XMLSEC_ERRORS_R_XMLSEC_FAILED, XMLSEC_ERRORS_NO_MESSAGE); return(-1); } } /* add \0 */ if((outResSize + 1) < outSize) { out[outResSize] = '\0'; } return(outResSize); }