I am trying to get my android app (qt5 c++) to upload taken pictures to an amazon bucket using PUT method but keep getting errors about calculated signature not matching the one provided.

here's my code:


Qt Code:
  1. QFile * fileData = new QFile(path, this);
  2. if (fileData->open(QIODevice::ReadOnly))
  3. {
  4. QFileInfo fileInfo(fileData->fileName());
  5.  
  6. QByteArray AccessKey = "SOMEACCESKEY";
  7. QByteArray SecretKey = "SOMESECRETKEY";
  8. QByteArray DayOfWeek = QDateTime::currentDateTime().date().toString("ddd").toUtf8();
  9. QByteArray RFCDate = DayOfWeek + ", " + QDateTime::currentDateTime().toString(Qt::RFC2822Date).toUtf8();
  10. QByteArray S3Bucket = "somes3bucket";
  11. QByteArray S3region = "us-east-1";
  12. QByteArray ContentType = "image/jpeg";
  13. QByteArray StringToSign = "PUT\\n\\n" + ContentType + "\\n" + RFCDate + "\\n" + "/" + S3Bucket + "/" + fileInfo.fileName().toUtf8();
  14.  
  15. QByteArray SignString = QMessageAuthenticationCode::hash(StringToSign, SecretKey, QCryptographicHash::Sha1).toBase64();
  16.  
  17. QNetworkAccessManager * networkAccessManager = new QNetworkAccessManager(this);
  18.  
  19. QNetworkRequest request(QUrl("https://" + S3Bucket + ".s3." + S3region + ".amazonaws.com/" + fileInfo.fileName()));
  20. request.setHeader(QNetworkRequest::ContentTypeHeader, ContentType);
  21. request.setHeader(QNetworkRequest::ContentLengthHeader, fileInfo.size());
  22. request.setRawHeader("Host", S3Bucket + ".s3." + S3region + ".amazonaws.com");
  23. request.setRawHeader("Date", RFCDate);
  24. request.setRawHeader("Authorization", "AWS " + AccessKey + ":" + SignString);
  25.  
  26. m_reply = networkAccessManager->put(request, fileData);
  27. connect(m_reply, SIGNAL(finished()), this, SLOT(mySlot()));
  28. }
To copy to clipboard, switch view to plain text mode 


here's the error msg I am getting when reading m_reply->readAll():

<Code>SignatureDoesNotMatch</?Code>
<Message>The request signature we calculated does not match the signature you provided.? Check your key and signing method.?</?Message>


any help is much appreciated!