diff --git a/a8/curl.cc b/a8/curl.cc index fa729a0..b2667e6 100644 --- a/a8/curl.cc +++ b/a8/curl.cc @@ -22,12 +22,19 @@ namespace a8 curl_easy_setopt(curl, CURLOPT_URL, url); curl_easy_setopt(curl, CURLOPT_HEADER, 0); curl_easy_setopt(curl, CURLOPT_HTTPPOST, 1); - curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers); + curl_slist* list = nullptr; + if (headers) { + list = curl_slist_append(list, headers); + curl_easy_setopt(curl, CURLOPT_HTTPHEADER, list); + } curl_easy_setopt(curl, CURLOPT_POSTFIELDS, content.c_str()); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, &_ReceiveResponse); curl_easy_setopt(curl, CURLOPT_WRITEDATA, &response); bool ok = curl_easy_perform(curl) == CURLE_OK; curl_easy_cleanup(curl); + if (list) { + curl_slist_free_all(list); + } return ok; } diff --git a/a8/openssl.cc b/a8/openssl.cc old mode 100644 new mode 100755 index dd73053..4a6a361 --- a/a8/openssl.cc +++ b/a8/openssl.cc @@ -134,5 +134,21 @@ namespace a8 return std::string((char*)md, SHA_DIGEST_LENGTH); } + std::string sha1(std::string& from) + { + unsigned char digest[SHA_DIGEST_LENGTH]; + + SHA_CTX ctx; + SHA1_Init(&ctx); + SHA1_Update(&ctx, from.data(), from.size()); + SHA1_Final(digest, &ctx); + + char mdString[SHA_DIGEST_LENGTH*2+1]; + for (int i = 0; i < SHA_DIGEST_LENGTH; i++){ + sprintf(&mdString[i*2], "%02x", (unsigned int)digest[i]); + } + return std::string(mdString); + } + } } diff --git a/a8/openssl.h b/a8/openssl.h old mode 100644 new mode 100755 index 73cca53..312843c --- a/a8/openssl.h +++ b/a8/openssl.h @@ -16,6 +16,7 @@ namespace a8 void Base64Encode(const std::string& from, std::string& to); std::string Sha1Encode(std::string& from); + std::string sha1(std::string& from); } }