From 4fff9c3ca50028a7b0fa98324a01cf1ce0ab1894 Mon Sep 17 00:00:00 2001 From: David Sansome Date: Mon, 31 Dec 2012 21:45:26 +1100 Subject: [PATCH] Use a new Amazon access key --- src/covers/amazoncoverprovider.cpp | 14 +++++++++----- src/covers/amazoncoverprovider.h | 4 ++-- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/covers/amazoncoverprovider.cpp b/src/covers/amazoncoverprovider.cpp index e935c8e28..18b31235f 100644 --- a/src/covers/amazoncoverprovider.cpp +++ b/src/covers/amazoncoverprovider.cpp @@ -26,10 +26,13 @@ #include #include -const char* AmazonCoverProvider::kAccessKey = "AKIAJ4QO3GQTSM3A43BQ"; -const char* AmazonCoverProvider::kSecretAccessKey = "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"; +// Amazon has a web crawler that looks for access keys in public source code, +// so we apply some sophisticated encryption to these keys. +const char* AmazonCoverProvider::kAccessKeyB64 = "QUtJQUlRSDI2UlZNNlVaNFdBNlE="; +const char* AmazonCoverProvider::kSecretAccessKeyB64 = + "ZTQ2UGczM0JRNytDajd4MWR6eFNvODVFd2tpdi9FbGVCcUZjMkVmMQ=="; const char* AmazonCoverProvider::kUrl = "http://ecs.amazonaws.com/onca/xml"; -const char* AmazonCoverProvider::kAssociateTag = "clementine-20"; +const char* AmazonCoverProvider::kAssociateTag = "clemmusiplay-20"; AmazonCoverProvider::AmazonCoverProvider(QObject* parent) : CoverProvider("Amazon", parent), @@ -46,7 +49,7 @@ bool AmazonCoverProvider::StartSearch(const QString& artist, const QString& albu // Must be sorted by parameter name ArgList args = ArgList() - << Arg("AWSAccessKeyId", kAccessKey) + << Arg("AWSAccessKeyId", QByteArray::fromBase64(kAccessKeyB64)) << Arg("AssociateTag", kAssociateTag) << Arg("Keywords", artist + " " + album) << Arg("Operation", "ItemSearch") @@ -72,7 +75,8 @@ bool AmazonCoverProvider::StartSearch(const QString& artist, const QString& albu const QByteArray data_to_sign = QString("GET\n%1\n%2\n%3").arg( url.host(), url.path(), query_items.join("&")).toAscii(); - const QByteArray signature(Utilities::HmacSha256(kSecretAccessKey, data_to_sign)); + const QByteArray signature(Utilities::HmacSha256( + QByteArray::fromBase64(kSecretAccessKeyB64), data_to_sign)); // Add the signature to the request encoded_args << EncodedArg("Signature", QUrl::toPercentEncoding(signature.toBase64())); diff --git a/src/covers/amazoncoverprovider.h b/src/covers/amazoncoverprovider.h index 726aadddb..766a6746d 100644 --- a/src/covers/amazoncoverprovider.h +++ b/src/covers/amazoncoverprovider.h @@ -31,8 +31,8 @@ class AmazonCoverProvider : public CoverProvider { public: AmazonCoverProvider(QObject* parent = NULL); - static const char* kAccessKey; - static const char* kSecretAccessKey; + static const char* kAccessKeyB64; + static const char* kSecretAccessKeyB64; static const char* kUrl; static const char* kAssociateTag;