⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 defaultunsecure.c

📁 voltage 公司提供的一个开发Ibe的工具包
💻 C
字号:
/* Copyright 2003-2005, Voltage Security, all rights reserved.
 */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "vibe.h"
#include "environment.h"
#include "base.h"
#include "libctx.h"
#include "vsdistrict.h"
#include "derhelp.h"
#include "oidlist.h"
#include "ibe.h"

#if VOLT_OS != VOLT_WINDOWS_32
#include <sys/select.h>
#include <curl/curl.h>
#include <curl/types.h>
#include <curl/easy.h>

struct MemoryStruct {
  VoltLibCtx *libCtx ;
  char *memory;
  size_t size;
};

static size_t
WriteMemoryCallback(void *ptr, size_t size, size_t nmemb, void *data)
{
	register int realsize = size * nmemb;
	struct MemoryStruct *mem = (struct MemoryStruct *)data;
    VoltLibCtx *libCtx = mem->libCtx;
	mem->memory = (char *)Z2Realloc(mem->memory, mem->size + realsize + 1);
	if (mem->memory) 
	{
		Z2Memcpy(&(mem->memory[mem->size]), ptr, realsize);
		mem->size += realsize;
		mem->memory[mem->size] = 0;
	}
	return realsize;
}

int UnsecureDoHTTP (
   VtLibCtx libraryCtx,
   char **response,
   int *responseCode,   
   const unsigned char *url,
   const unsigned char *postData,
   int allowBadCert,
   const unsigned char *trustStore,
   void *appData)
{

  /* This implementation ignores the trustStore and allowBadCert
   */
  CURL *curl;
	struct MemoryStruct mem;	
	int ret;
	VoltLibCtx *libCtx = (VoltLibCtx *)libraryCtx;

	mem.libCtx = libCtx;
	mem.memory = NULL;
	mem.size = 0;

  curl = curl_easy_init();
  /*icSafeSnprintf (
   *  urlBuf, sizeof(urlBuf), libCtx, "http://%s%s", server, url);
   */

  curl_easy_setopt(curl, CURLOPT_URL, url);
  curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteMemoryCallback);
  curl_easy_setopt(curl, CURLOPT_FILE, (void *)&mem);

  if (postData != NULL)
    curl_easy_setopt(curl, CURLOPT_POSTFIELDS, postData);  

  curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0);

  ret = curl_easy_perform(curl);
  if (ret != 0)
    {
      curl_easy_cleanup(curl);
      return -1;
    }

  curl_easy_getinfo(curl, CURLINFO_HTTP_CODE, responseCode);
  curl_easy_cleanup(curl);
  *response = mem.memory;

  return 0;
}

#endif /* VOLT_OS != VOLT_WINDOWS_32 */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -