//--------------------------------------------------------------------- DocumentPtr IdentityAccessRolodexCredentialsGetRequest::encode() { DocumentPtr ret = IMessageHelper::createDocumentWithRoot(*this); ElementPtr root = ret->getFirstChildElement(); String clientNonce = IHelper::randomString(32); IdentityInfo identityInfo; identityInfo.mURI = mIdentityInfo.mURI; identityInfo.mProvider = mIdentityInfo.mProvider; identityInfo.mAccessToken = mIdentityInfo.mAccessToken; if (mIdentityInfo.mAccessSecret.hasData()) { identityInfo.mAccessSecretProofExpires = zsLib::now() + Seconds(OPENPEER_STACK_MESSAGE_IDENTITY_ACCESS_LOCKBOX_UPDATE_EXPIRES_TIME_IN_SECONDS); identityInfo.mAccessSecretProof = IHelper::convertToHex(*IHelper::hmac(*IHelper::hmacKeyFromPassphrase(mIdentityInfo.mAccessSecret), "identity-access-validate:" + identityInfo.mURI + ":" + clientNonce + ":" + IHelper::timeToString(identityInfo.mAccessSecretProofExpires) + ":" + identityInfo.mAccessToken + ":rolodex-credentials-get")); } root->adoptAsLastChild(IMessageHelper::createElementWithText("nonce", clientNonce)); if (identityInfo.hasData()) { root->adoptAsLastChild(MessageHelper::createElement(identityInfo)); } return ret; }
//--------------------------------------------------------------------- DocumentPtr LockboxContentGetRequest::encode() { DocumentPtr ret = IMessageHelper::createDocumentWithRoot(*this); ElementPtr root = ret->getFirstChildElement(); String clientNonce = IHelper::randomString(32); LockboxInfo lockboxInfo; lockboxInfo.mAccessToken = mLockboxInfo.mAccessToken; if (mLockboxInfo.mAccessSecret.hasData()) { lockboxInfo.mAccessSecretProofExpires = zsLib::now() + Seconds(OPENPEER_STACK_MESSAGE_LOCKBOX_CONTENT_GET_REQUEST_EXPIRES_TIME_IN_SECONDS); lockboxInfo.mAccessSecretProof = IHelper::convertToHex(*IHelper::hmac(*IHelper::hmacKeyFromPassphrase(mLockboxInfo.mAccessSecret), "lockbox-access-validate:" + clientNonce + ":" + IHelper::timeToString(lockboxInfo.mAccessSecretProofExpires) + ":" + lockboxInfo.mAccessToken + ":lockbox-content-get")); } root->adoptAsLastChild(IMessageHelper::createElementWithText("nonce", clientNonce)); if (lockboxInfo.hasData()) { root->adoptAsLastChild(MessageHelper::createElement(lockboxInfo)); } ElementPtr namespacesEl = IMessageHelper::createElement("namespaces"); for (NamespaceInfoMap::iterator iter = mNamespaceInfos.begin(); iter != mNamespaceInfos.end(); ++iter) { const NamespaceInfo &namespaceInfo = (*iter).second; namespacesEl->adoptAsLastChild(MessageHelper::createElement(namespaceInfo)); } if (namespacesEl->hasChildren()) { root->adoptAsLastChild(namespacesEl); } return ret; }
//--------------------------------------------------------------------- DocumentPtr RolodexAccessRequest::encode() { DocumentPtr ret = IMessageHelper::createDocumentWithRoot(*this); ElementPtr rootEl = ret->getFirstChildElement(); String clientNonce = IHelper::randomString(32); IdentityInfo identityInfo; identityInfo.mURI = mIdentityInfo.mURI; identityInfo.mProvider = mIdentityInfo.mProvider; identityInfo.mAccessToken = mIdentityInfo.mAccessToken; if (mIdentityInfo.mAccessSecret.hasData()) { identityInfo.mAccessSecretProofExpires = zsLib::now() + Seconds(OPENPEER_STACK_MESSAGE_ROLODEX_ACCESS_REQUEST_EXPIRES_TIME_IN_SECONDS); identityInfo.mAccessSecretProof = IHelper::convertToHex(*IHelper::hmac(*IHelper::hmacKeyFromPassphrase(mIdentityInfo.mAccessSecret), "identity-access-validate:" + identityInfo.mURI + ":" + clientNonce + ":" + IHelper::timeToString(identityInfo.mAccessSecretProofExpires) + ":" + identityInfo.mAccessToken + ":lockbox-access")); } rootEl->adoptAsLastChild(IMessageHelper::createElementWithText("nonce", clientNonce)); if (identityInfo.hasData()) { rootEl->adoptAsLastChild(MessageHelper::createElement(identityInfo)); } RolodexInfo rolodexInfo; rolodexInfo.mServerToken = mRolodexInfo.mServerToken; rolodexInfo.mVersion = mRolodexInfo.mVersion; rolodexInfo.mRefreshFlag = mRolodexInfo.mRefreshFlag; if (rolodexInfo.hasData()) { rootEl->adoptAsLastChild(MessageHelper::createElement(rolodexInfo)); } AgentInfo agentInfo; agentInfo = UseStack::agentInfo(); agentInfo.mergeFrom(mAgentInfo, true); if (mAgentInfo.hasData()) { rootEl->adoptAsLastChild(MessageHelper::createElement(agentInfo)); } if (mGrantID.hasData()) { rootEl->adoptAsLastChild(IMessageHelper::createElementWithID("grant", mGrantID)); } return ret; }
//--------------------------------------------------------------------- DocumentPtr LockboxIdentitiesUpdateRequest::encode() { DocumentPtr ret = IMessageHelper::createDocumentWithRoot(*this); ElementPtr root = ret->getFirstChildElement(); String clientNonce = IHelper::randomString(32); LockboxInfo lockboxInfo; lockboxInfo.mAccessToken = mLockboxInfo.mAccessToken; if (mLockboxInfo.mAccessSecret.hasData()) { lockboxInfo.mAccessSecretProofExpires = zsLib::now() + Seconds(OPENPEER_STACK_MESSAGE_LOCKBOX_IDENTITIES_UPDATE_REQUEST_EXPIRES_TIME_IN_SECONDS); lockboxInfo.mAccessSecretProof = IHelper::convertToHex(*IHelper::hmac(*IHelper::hmacKeyFromPassphrase(mLockboxInfo.mAccessSecret), "lockbox-access-validate:" + clientNonce + ":" + IHelper::timeToString(lockboxInfo.mAccessSecretProofExpires) + ":" + lockboxInfo.mAccessToken + ":lockbox-identities-update")); } IdentityInfoList identities; for (IdentityInfoList::iterator iter = mIdentitiesToUpdate.begin(); iter != mIdentitiesToUpdate.end(); ++iter) { IdentityInfo &listIdentity = (*iter); IdentityInfo identityInfo; identityInfo.mURI = listIdentity.mURI; identityInfo.mProvider = listIdentity.mProvider; identityInfo.mAccessToken = listIdentity.mAccessToken; if (listIdentity.mAccessSecret.hasData()) { identityInfo.mAccessSecretProofExpires = zsLib::now() + Seconds(OPENPEER_STACK_MESSAGE_LOCKBOX_IDENTITIES_UPDATE_REQUEST_EXPIRES_TIME_IN_SECONDS); identityInfo.mAccessSecretProof = IHelper::convertToHex(*IHelper::hmac(*IHelper::hmacKeyFromPassphrase(listIdentity.mAccessSecret), "identity-access-validate:" + identityInfo.mURI + ":" + clientNonce + ":" + IHelper::timeToString(identityInfo.mAccessSecretProofExpires) + ":" + identityInfo.mAccessToken + ":lockbox-access-update")); } if (identityInfo.hasData()) { identityInfo.mDisposition = IdentityInfo::Disposition_Update; identities.push_back(identityInfo); } } for (IdentityInfoList::iterator iter = mIdentitiesToRemove.begin(); iter != mIdentitiesToRemove.end(); ++iter) { IdentityInfo &listIdentity = (*iter); IdentityInfo identityInfo; identityInfo.mURI = listIdentity.mURI; identityInfo.mProvider = listIdentity.mProvider; if (identityInfo.hasData()) { identityInfo.mDisposition = IdentityInfo::Disposition_Remove; identities.push_back(identityInfo); } } root->adoptAsLastChild(IMessageHelper::createElementWithText("nonce", clientNonce)); if (lockboxInfo.hasData()) { root->adoptAsLastChild(MessageHelper::createElement(lockboxInfo)); } ElementPtr identitiesEl = IMessageHelper::createElement("identities"); for (IdentityInfoList::iterator iter = identities.begin(); iter != identities.end(); ++iter) { IdentityInfo &listIdentity = (*iter); identitiesEl->adoptAsLastChild(MessageHelper::createElement(listIdentity)); } if (identitiesEl->hasChildren()) { root->adoptAsLastChild(identitiesEl); } return ret; }