本文整理匯總了C++中DecodeBase64函數的典型用法代碼示例。如果您正苦於以下問題:C++ DecodeBase64函數的具體用法?C++ DecodeBase64怎麽用?C++ DecodeBase64使用的例子?那麽, 這裏精選的函數代碼示例或許可以為您提供幫助。
在下文中一共展示了DecodeBase64函數的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的C++代碼示例。
示例1: HTTPServerHandleAuthHeader
void HTTPServerHandleAuthHeader(HTTPSession *Heads,int HeaderType, char *Type, char *Data)
{
char *Tempstr=NULL, *Name=NULL, *Value=NULL, *ptr;
char *nonce=NULL, *cnonce=NULL, *request_count=NULL, *qop=NULL, *algo=NULL, *uri=NULL;
int len;
if (strcmp(Type,"Basic")==0)
{
Tempstr=DecodeBase64(Tempstr, &len, Data);
ptr=GetToken(Tempstr,":",&Heads->UserName,0);
Heads->Password=CopyStr(Heads->Password,ptr);
}
else if (strcmp(Type,"Digest")==0)
{
uri=CopyStr(uri,"");
algo=CopyStr(algo,"");
ptr=GetNameValuePair(Data,",","=",&Name,&Value);
while (ptr)
{
if (StrLen(Name) && StrLen(Value))
{
StripLeadingWhitespace(Name);
StripLeadingWhitespace(Value);
if (strcmp(Name,"username")==0) Heads->UserName=CopyStr(Heads->UserName,Value);
if (strcmp(Name,"response")==0) Heads->Password=CopyStr(Heads->Password,Value);
if (strcmp(Name,"nonce")==0) nonce=CopyStr(nonce,Value);
if (strcmp(Name,"cnonce")==0) cnonce=CopyStr(cnonce,Value);
if (strcmp(Name,"nc")==0) request_count=CopyStr(request_count,Value);
if (strcmp(Name,"qop")==0) qop=CopyStr(qop,Value);
if (strcmp(Name,"uri")==0) uri=CopyStr(uri,Value);
if (strcmp(Name,"algorithm")==0) algo=CopyStr(algo,Value);
}
ptr=GetNameValuePair(ptr,",","=",&Name,&Value);
}
// server nonce (nonce), request counter (nc), client nonce (cnonce), quality of protection code (qop) and HA2 result is calculated. The result is the "response" value provided by the client.
if (StrLen(qop)) Heads->AuthDetails=MCopyStr(Heads->AuthDetails,uri,":",algo,":",nonce,":",request_count,":",cnonce,":",qop, NULL);
else Heads->AuthDetails=CopyStr(Heads->AuthDetails,nonce);
}
DestroyString(qop);
DestroyString(uri);
DestroyString(algo);
DestroyString(Name);
DestroyString(Value);
DestroyString(nonce);
DestroyString(cnonce);
DestroyString(Tempstr);
DestroyString(request_count);
}
示例2: DecodeStringToBinary
static void
DecodeStringToBinary(
byte *p,
size_t size,
char *str)
{
#ifdef BINARY_IS_BASE64
DecodeBase64(p,size,str,strlen(str));
#else
int i;
for ( i = 0 ; i < size ; i ++ , p ++ ) {
if ( *str == '\\' ) {
str ++;
switch (*str) {
case 'b':
*p = '\b';
str ++;
break;
case 'f':
*p = '\f';
str ++;
break;
case 'n':
*p = '\n';
str ++;
break;
case 'r':
*p = '\r';
str ++;
break;
case 't':
*p = '\t';
str ++;
break;
case 'u':
str ++;
*p = (unsigned char)HexToInt(str,2);
str += 2;
break;
default:
*p = *str;
str ++;
break;
}
} else {
*p = *str;
str ++;
}
}
#endif
}
示例3: GetBeaconPublicKey
std::string GetBeaconPublicKey(const std::string& cpid, bool bAdvertisingBeacon)
{
//3-26-2017 - Ensure beacon public key is within 6 months of network age (If advertising, let it be returned as missing after 5 months, to ensure the public key is renewed seamlessly).
int iMonths = bAdvertisingBeacon ? 5 : 6;
int64_t iMaxSeconds = 60 * 24 * 30 * iMonths * 60;
std::string sBeacon = RetrieveBeaconValueWithMaxAge(cpid, iMaxSeconds);
if (sBeacon.empty()) return "";
// Beacon data structure: CPID,hashRand,Address,beacon public key: base64 encoded
std::string sContract = DecodeBase64(sBeacon);
std::vector<std::string> vContract = split(sContract.c_str(),";");
if (vContract.size() < 4) return "";
std::string sBeaconPublicKey = vContract[3];
return sBeaconPublicKey;
}
示例4: DecodeBase64
/*static*/
std::string I2PSession::GenerateB32AddressFromDestination(const std::string& destination)
{
std::string canonicalDest = destination;
for (size_t pos = canonicalDest.find_first_of('-'); pos != std::string::npos; pos = canonicalDest.find_first_of('-', pos))
canonicalDest[pos] = '+';
for (size_t pos = canonicalDest.find_first_of('~'); pos != std::string::npos; pos = canonicalDest.find_first_of('~', pos))
canonicalDest[pos] = '/';
std::string rawHash = DecodeBase64(canonicalDest);
uint256 hash;
SHA256((const unsigned char*)rawHash.c_str(), rawHash.size(), (unsigned char*)&hash);
std::string result = EncodeBase32(hash.begin(), hash.end() - hash.begin()) + ".b32.i2p";
for (size_t pos = result.find_first_of('='); pos != std::string::npos; pos = result.find_first_of('=', pos-1))
result.erase(pos, 1);
return result;
}
示例5: DecodeBase64
int WXBizMsgCrypt::GenAesKeyFromEncodingKey( const std::string & sEncodingKey, std::string & sAesKey)
{
if(kEncodingKeySize != sEncodingKey.size())
{
return -1;
}
std::string sBase64 = sEncodingKey + "=";
int ret = DecodeBase64(sBase64, sAesKey);
if(0 != ret || kAesKeySize != sAesKey.size())
{
return -1;
}
return 0;
}
示例6: DecodePSBT
bool DecodePSBT(PartiallySignedTransaction& psbt, const std::string& base64_tx, std::string& error)
{
std::vector<unsigned char> tx_data = DecodeBase64(base64_tx.c_str());
CDataStream ss_data(tx_data, SER_NETWORK, PROTOCOL_VERSION);
try {
ss_data >> psbt;
if (!ss_data.empty()) {
error = "extra data after PSBT";
return false;
}
} catch (const std::exception& e) {
error = e.what();
return false;
}
return true;
}
示例7: DetectBase64DecodeDoMatch
int DetectBase64DecodeDoMatch(DetectEngineThreadCtx *det_ctx, Signature *s,
const SigMatch *sm, uint8_t *payload, uint32_t payload_len)
{
DetectBase64Decode *data = (DetectBase64Decode *)sm->ctx;
int decode_len;
#if 0
printf("Input data:\n");
PrintRawDataFp(stdout, payload, payload_len);
#endif
if (data->relative) {
payload += det_ctx->buffer_offset;
payload_len -= det_ctx->buffer_offset;
}
if (data->offset) {
if (data->offset >= payload_len) {
return 0;
}
payload = payload + data->offset;
payload_len -= data->offset;
}
decode_len = MIN(payload_len, data->bytes);
#if 0
printf("Decoding:\n");
PrintRawDataFp(stdout, payload, decode_len);
#endif
det_ctx->base64_decoded_len = DecodeBase64(det_ctx->base64_decoded,
payload, decode_len, 0);
SCLogDebug("Decoded %d bytes from base64 data.",
det_ctx->base64_decoded_len);
#if 0
if (det_ctx->base64_decoded_len) {
printf("Decoded data:\n");
PrintRawDataFp(stdout, det_ctx->base64_decoded,
det_ctx->base64_decoded_len);
}
#endif
return det_ctx->base64_decoded_len > 0;
}
示例8: SelectParams
void PaymentServerTests::paymentServerTests()
{
SelectParams(CBaseChainParams::MAIN);
OptionsModel optionsModel;
PaymentServer* server = new PaymentServer(NULL, false);
X509_STORE* caStore = X509_STORE_new();
X509_STORE_add_cert(caStore, parse_b64der_cert(caCert_BASE64));
PaymentServer::LoadRootCAs(caStore);
server->setOptionsModel(&optionsModel);
server->uiReady();
// Now feed PaymentRequests to server, and observe signals it produces:
std::vector<unsigned char> data = DecodeBase64(paymentrequest1_BASE64);
SendCoinsRecipient r = handleRequest(server, data);
QString merchant;
r.paymentRequest.getMerchant(caStore, merchant);
QCOMPARE(merchant, QString("testmerchant.org"));
// Version of the above, with an expired certificate:
data = DecodeBase64(paymentrequest2_BASE64);
r = handleRequest(server, data);
r.paymentRequest.getMerchant(caStore, merchant);
QCOMPARE(merchant, QString(""));
// Long certificate chain:
data = DecodeBase64(paymentrequest3_BASE64);
r = handleRequest(server, data);
r.paymentRequest.getMerchant(caStore, merchant);
QCOMPARE(merchant, QString("testmerchant8.org"));
// Long certificate chain, with an expired certificate in the middle:
data = DecodeBase64(paymentrequest4_BASE64);
r = handleRequest(server, data);
r.paymentRequest.getMerchant(caStore, merchant);
QCOMPARE(merchant, QString(""));
// Validly signed, but by a CA not in our root CA list:
data = DecodeBase64(paymentrequest5_BASE64);
r = handleRequest(server, data);
r.paymentRequest.getMerchant(caStore, merchant);
QCOMPARE(merchant, QString(""));
// Try again with no root CA's, verifiedMerchant should be empty:
caStore = X509_STORE_new();
PaymentServer::LoadRootCAs(caStore);
data = DecodeBase64(paymentrequest1_BASE64);
r = handleRequest(server, data);
r.paymentRequest.getMerchant(caStore, merchant);
QCOMPARE(merchant, QString(""));
delete server;
}
示例9: DecryptString2
//---------------------------------------------------------------------------
// 標準復號化
string DecryptString2(const string& encodedstr,const string &key)
{
string id=encodedstr.substr(0,9);
if(id!="!KAWA0001") return("");
string str=DecodeBase64(encodedstr.substr(9));
unsigned char k=Kawa0001CalcKey(key);
if(k!=(unsigned char)str[0]) return("");
string decodedstr;
decodedstr.reserve(str.size());
for(unsigned int i=1,max=str.size();i<max;i++) {
decodedstr+=str[i]^k;
}
return(decodedstr);
}
示例10: RPCAuthorized
static bool RPCAuthorized(const std::string& strAuth, std::string& strAuthUsernameOut)
{
if (strRPCUserColonPass.empty()) // Belt-and-suspenders measure if InitRPCAuthentication was not called
return false;
if (strAuth.substr(0, 6) != "Basic ")
return false;
std::string strUserPass64 = strAuth.substr(6);
boost::trim(strUserPass64);
std::string strUserPass = DecodeBase64(strUserPass64);
if (strUserPass.find(':') != std::string::npos)
strAuthUsernameOut = strUserPass.substr(0, strUserPass.find(':'));
//Check if authorized under single-user field
if (TimingResistantEqual(strUserPass, strRPCUserColonPass)) {
return true;
}
return multiUserAuthorized(strUserPass);
}
示例11: DecryptString
// 參考
// こっちを元にすれば、もうちょっと良いコードになると思うが、うーん・・・。
// (考え中)
string DecryptString(const string& encodedstr)
{
// long int = 32bit であることに依存したコーディングになってます
string str=DecodeBase64(encodedstr.substr(9));
unsigned cnt = str.size();
string decodedstr;
char *s = new char[cnt + 4];
str.copy(s, cnt);
for(unsigned int i=0;i<cnt ;i += 4) {
*(unsigned long *)(s + i) ^= 0xccccccccUL;
}
decodedstr.assign(s, cnt);
delete[] s;
return(decodedstr);
}
示例12: AdvancedDecrypt
std::string AdvancedDecrypt(std::string boinchash_encrypted)
{
try{
std::string pre_encrypted_boinchash = DecodeBase64(boinchash_encrypted);
std::vector<unsigned char> vchCryptedSecret(pre_encrypted_boinchash.begin(),pre_encrypted_boinchash.end());
std::vector<unsigned char> vchPlaintext;
GridDecrypt(vchCryptedSecret,vchPlaintext);
std::string decrypted = UnsignedVectorToString(vchPlaintext);
return decrypted;
} catch (std::exception &e)
{
LogPrintf("Error while decrypting %s",boinchash_encrypted);
return "";
}
catch(...)
{
LogPrintf("Error while decrypting 2.");
return "";
}
}
示例13: HTTPAuthorized
bool HTTPAuthorized (const std::map<std::string, std::string>& mapHeaders)
{
bool const credentialsRequired (! getConfig().RPC_USER.empty() &&
! getConfig().RPC_PASSWORD.empty());
if (! credentialsRequired)
return true;
auto const it = mapHeaders.find ("authorization");
if ((it == mapHeaders.end ()) || (it->second.substr (0, 6) != "Basic "))
return false;
std::string strUserPass64 = it->second.substr (6);
boost::trim (strUserPass64);
std::string strUserPass = DecodeBase64 (strUserPass64);
std::string::size_type nColon = strUserPass.find (":");
if (nColon == std::string::npos)
return false;
std::string strUser = strUserPass.substr (0, nColon);
std::string strPassword = strUserPass.substr (nColon + 1);
return (strUser == getConfig ().RPC_USER) && (strPassword == getConfig ().RPC_PASSWORD);
}
示例14: SelectParams
void PaymentServerTests::paymentServerTests()
{
SelectParams(CBaseChainParams::MAIN);
OptionsModel optionsModel;
PaymentServer* server = new PaymentServer(nullptr, false);
X509_STORE* caStore = X509_STORE_new();
X509_STORE_add_cert(caStore, parse_b64der_cert(caCert1_BASE64));
PaymentServer::LoadRootCAs(caStore);
server->setOptionsModel(&optionsModel);
server->uiReady();
std::vector<unsigned char> data;
SendCoinsRecipient r;
QString merchant;
// Now feed PaymentRequests to server, and observe signals it produces
// This payment request validates directly against the
// caCert1 certificate authority:
data = DecodeBase64(paymentrequest1_cert1_BASE64);
r = handleRequest(server, data);
r.paymentRequest.getMerchant(caStore, merchant);
QCOMPARE(merchant, QString("testmerchant.org"));
// Signed, but expired, merchant cert in the request:
data = DecodeBase64(paymentrequest2_cert1_BASE64);
r = handleRequest(server, data);
r.paymentRequest.getMerchant(caStore, merchant);
QCOMPARE(merchant, QString(""));
// 10-long certificate chain, all intermediates valid:
data = DecodeBase64(paymentrequest3_cert1_BASE64);
r = handleRequest(server, data);
r.paymentRequest.getMerchant(caStore, merchant);
QCOMPARE(merchant, QString("testmerchant8.org"));
// Long certificate chain, with an expired certificate in the middle:
data = DecodeBase64(paymentrequest4_cert1_BASE64);
r = handleRequest(server, data);
r.paymentRequest.getMerchant(caStore, merchant);
QCOMPARE(merchant, QString(""));
// Validly signed, but by a CA not in our root CA list:
data = DecodeBase64(paymentrequest5_cert1_BASE64);
r = handleRequest(server, data);
r.paymentRequest.getMerchant(caStore, merchant);
QCOMPARE(merchant, QString(""));
// Try again with no root CA's, verifiedMerchant should be empty:
caStore = X509_STORE_new();
PaymentServer::LoadRootCAs(caStore);
data = DecodeBase64(paymentrequest1_cert1_BASE64);
r = handleRequest(server, data);
r.paymentRequest.getMerchant(caStore, merchant);
QCOMPARE(merchant, QString(""));
// Load second root certificate
caStore = X509_STORE_new();
X509_STORE_add_cert(caStore, parse_b64der_cert(caCert2_BASE64));
PaymentServer::LoadRootCAs(caStore);
QByteArray byteArray;
// For the tests below we just need the payment request data from
// paymentrequestdata.h parsed + stored in r.paymentRequest.
//
// These tests require us to bypass the following normal client execution flow
// shown below to be able to explicitly just trigger a certain condition!
//
// handleRequest()
// -> PaymentServer::eventFilter()
// -> PaymentServer::handleURIOrFile()
// -> PaymentServer::readPaymentRequestFromFile()
// -> PaymentServer::processPaymentRequest()
// Contains a testnet paytoaddress, so payment request network doesn't match client network:
data = DecodeBase64(paymentrequest1_cert2_BASE64);
byteArray = QByteArray((const char*)data.data(), data.size());
r.paymentRequest.parse(byteArray);
// Ensure the request is initialized, because network "main" is default, even for
// uninitialized payment requests and that will fail our test here.
QVERIFY(r.paymentRequest.IsInitialized());
QCOMPARE(PaymentServer::verifyNetwork(r.paymentRequest.getDetails()), false);
// Expired payment request (expires is set to 1 = 1970-01-01 00:00:01):
data = DecodeBase64(paymentrequest2_cert2_BASE64);
byteArray = QByteArray((const char*)data.data(), data.size());
r.paymentRequest.parse(byteArray);
// Ensure the request is initialized
QVERIFY(r.paymentRequest.IsInitialized());
// compares 1 < GetTime() == false (treated as expired payment request)
QCOMPARE(PaymentServer::verifyExpired(r.paymentRequest.getDetails()), true);
// Unexpired payment request (expires is set to 0x7FFFFFFFFFFFFFFF = max. int64_t):
// 9223372036854775807 (uint64), 9223372036854775807 (int64_t) and -1 (int32_t)
// -1 is 1969-12-31 23:59:59 (for a 32 bit time values)
data = DecodeBase64(paymentrequest3_cert2_BASE64);
byteArray = QByteArray((const char*)data.data(), data.size());
r.paymentRequest.parse(byteArray);
// Ensure the request is initialized
//.........這裏部分代碼省略.........
示例15: DecodeBase64
std::string DecodeBase64(const std::string& str)
{
std::vector<unsigned char> vchRet = DecodeBase64(str.c_str());
return std::string((const char*)vchRet.data(), vchRet.size());
}