Don't verify-fail if the fst has no certificate

Also remove some debugging prints
This commit is contained in:
Simon Walton 2019-05-01 17:28:10 -07:00
parent 119b4fd826
commit 4c0dc118c9

View file

@ -33,8 +33,6 @@ void MixerAvatar::fetchAvatarFST() {
_pendingEvent = false; _pendingEvent = false;
QUrl avatarURL = getSkeletonModelURL(); QUrl avatarURL = getSkeletonModelURL();
auto avatarString = avatarURL.toString();
qCDebug(avatars) << "MixerAvatar::fetchAvatarFST: called with" << avatarString;
if (avatarURL.isEmpty() || avatarURL.isLocalFile() || avatarURL.scheme() == "qrc") { if (avatarURL.isEmpty() || avatarURL.isLocalFile() || avatarURL.scheme() == "qrc") {
// Not network FST. // Not network FST.
return; return;
@ -61,7 +59,6 @@ void MixerAvatar::fetchAvatarFST() {
ResourceRequest* fstRequest = resourceManager->createResourceRequest(this, avatarURL); ResourceRequest* fstRequest = resourceManager->createResourceRequest(this, avatarURL);
if (fstRequest) { if (fstRequest) {
QMutexLocker certifyLocker(&_avatarCertifyLock); QMutexLocker certifyLocker(&_avatarCertifyLock);
qCDebug(avatars) << "Requesting FST at" << avatarURL;
_avatarRequest = fstRequest; _avatarRequest = fstRequest;
_verifyState = requestingFST; _verifyState = requestingFST;
@ -195,29 +192,34 @@ void MixerAvatar::processCertifyEvents() {
case receivedFST: case receivedFST:
{ {
generateFSTHash(); generateFSTHash();
QString& marketplacePublicKey = EntityItem::_marketplacePublicKey; if (_certificateIdFromFST.length() != 0) {
bool staticVerification = validateFSTHash(marketplacePublicKey); QString& marketplacePublicKey = EntityItem::_marketplacePublicKey;
_verifyState = staticVerification ? staticValidation : verificationFailed; bool staticVerification = validateFSTHash(marketplacePublicKey);
_verifyState = staticVerification ? staticValidation : verificationFailed;
if (_verifyState == staticValidation) { if (_verifyState == staticValidation) {
static const QString POP_MARKETPLACE_API { "/api/v1/commerce/proof_of_purchase_status/transfer" }; static const QString POP_MARKETPLACE_API { "/api/v1/commerce/proof_of_purchase_status/transfer" };
auto& networkAccessManager = NetworkAccessManager::getInstance(); auto& networkAccessManager = NetworkAccessManager::getInstance();
QNetworkRequest networkRequest; QNetworkRequest networkRequest;
networkRequest.setAttribute(QNetworkRequest::FollowRedirectsAttribute, true); networkRequest.setAttribute(QNetworkRequest::FollowRedirectsAttribute, true);
networkRequest.setHeader(QNetworkRequest::ContentTypeHeader, "application/json"); networkRequest.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
QUrl requestURL = NetworkingConstants::METAVERSE_SERVER_URL(); QUrl requestURL = NetworkingConstants::METAVERSE_SERVER_URL();
requestURL.setPath(POP_MARKETPLACE_API); requestURL.setPath(POP_MARKETPLACE_API);
networkRequest.setUrl(requestURL); networkRequest.setUrl(requestURL);
QJsonObject request; QJsonObject request;
request["certificate_id"] = _certificateIdFromFST; request["certificate_id"] = _certificateIdFromFST;
_verifyState = requestingOwner; _verifyState = requestingOwner;
QNetworkReply* networkReply = networkAccessManager.put(networkRequest, QJsonDocument(request).toJson()); QNetworkReply* networkReply = networkAccessManager.put(networkRequest, QJsonDocument(request).toJson());
connect(networkReply, &QNetworkReply::finished, this, &MixerAvatar::ownerRequestComplete); connect(networkReply, &QNetworkReply::finished, this, &MixerAvatar::ownerRequestComplete);
} else { } else {
_needsIdentityUpdate = true; _needsIdentityUpdate = true;
_pendingEvent = false;
qCDebug(avatars) << "Avatar" << getDisplayName() << "FAILED static certification";
}
} else { // FST doesn't have a certificate, so noncertified rather than failed:
_pendingEvent = false; _pendingEvent = false;
qCDebug(avatars) << "Avatar" << getDisplayName() << "FAILED static certification"; _verifyState = nonCertified;
} }
break; break;
} }
@ -227,7 +229,6 @@ void MixerAvatar::processCertifyEvents() {
QJsonDocument responseJson = QJsonDocument::fromJson(_dynamicMarketResponse.toUtf8()); QJsonDocument responseJson = QJsonDocument::fromJson(_dynamicMarketResponse.toUtf8());
QString ownerPublicKey; QString ownerPublicKey;
bool ownerValid = false; bool ownerValid = false;
qCDebug(avatars) << "Marketplace response for avatar" << getDisplayName() << ":" << _dynamicMarketResponse;
if (responseJson["status"].toString() == "success") { if (responseJson["status"].toString() == "success") {
QJsonValue jsonData = responseJson["data"]; QJsonValue jsonData = responseJson["data"];
if (jsonData.isObject()) { if (jsonData.isObject()) {