status_t Session::provideKeyResponse(const Vector<uint8_t>& response) { String8 responseString( reinterpret_cast<const char*>(response.array()), response.size()); KeyMap keys; Mutex::Autolock lock(mMapLock); JsonWebKey parser; if (parser.extractKeysFromJsonWebKeySet(responseString, &keys)) { for (size_t i = 0; i < keys.size(); ++i) { const KeyMap::key_type& keyId = keys.keyAt(i); const KeyMap::value_type& key = keys.valueAt(i); mKeyMap.add(keyId, key); } return android::OK; } else { return android::ERROR_DRM_UNKNOWN; } }