1 /* 2 * Copyright (c) 2025 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"){return 0;} 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 #include <string> 16 #include "media_permission_check.h" 17 #include "media_system_api_permission_check.h" 18 #include "media_private_permission_check.h" 19 #include "media_read_permission_check.h" 20 #include "media_write_permission_check.h" 21 22 using namespace std; 23 namespace OHOS::Media { 24 // API whitelist for deprecated read or write permission 25 // Allow access to these interfaces using the deprecated permissions 26 std::unordered_set<uint32_t> PermissionCheck::deprecatedReadPermissionSet = { 27 // assets start 28 static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_GET_ASSET_ANALYSIS_DATA), 29 static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_GET_ASSETS), 30 static_cast<uint32_t>(MediaLibraryBusinessCode::GET_BURST_ASSETS), 31 static_cast<uint32_t>(MediaLibraryBusinessCode::FIND_ALL_DUPLICATE_ASSETS), 32 static_cast<uint32_t>(MediaLibraryBusinessCode::FIND_DUPLICATE_ASSETS_TO_DELETE), 33 static_cast<uint32_t>(MediaLibraryBusinessCode::GET_INDEX_CONSTRUCT_PROGRESS), 34 static_cast<uint32_t>(MediaLibraryBusinessCode::QUERY_IS_EDITED), 35 static_cast<uint32_t>(MediaLibraryBusinessCode::QUERY_REQUEST_EDIT_DATA), 36 static_cast<uint32_t>(MediaLibraryBusinessCode::QUERY_GET_EDIT_DATA), 37 static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_REQUEST_CONTENT), 38 static_cast<uint32_t>(MediaLibraryBusinessCode::INNER_GET_RESULT_SET_FROM_DB), 39 static_cast<uint32_t>(MediaLibraryBusinessCode::INNER_GET_FILEPATH_FROM_URI), 40 static_cast<uint32_t>(MediaLibraryBusinessCode::INNER_GET_URI_FROM_FILEPATH), 41 static_cast<uint32_t>(MediaLibraryBusinessCode::INNER_GET_MOVING_PHOTO_DATE_MODIFIED), 42 static_cast<uint32_t>(MediaLibraryBusinessCode::INNER_GET_RESULT_SET_FROM_PHOTOS_EXTEND), 43 static_cast<uint32_t>(MediaLibraryBusinessCode::INNER_GET_RESULT_SET_FROM_DB_EXTEND), 44 // albums start 45 static_cast<uint32_t>(MediaLibraryBusinessCode::ALBUM_SYS_GET_ASSETS), 46 static_cast<uint32_t>(MediaLibraryBusinessCode::ALBUM_GET_ASSETS), 47 static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_QUERY_PHOTO_ALBUMS), 48 static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_QUERY_HIDDEN_ALBUMS), 49 static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_QUERY_GET_ALBUMS_BY_IDS), 50 }; 51 52 std::unordered_set<uint32_t> PermissionCheck::deprecatedWritePermissionSet = { 53 // business start 54 static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_START_THUMBNAIL_CREATION_TASK), 55 static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_STOP_THUMBNAIL_CREATION_TASK), 56 // assets start 57 static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_PUBLIC_CREATE_ASSET), 58 static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_SYSTEM_CREATE_ASSET), 59 static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_PUBLIC_CREATE_ASSET_FOR_APP), 60 static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_SYSTEM_CREATE_ASSET_FOR_APP), 61 static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_SYSTEM_CREATE_ASSET_FOR_APP_WITH_MODE), 62 static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_SYSTEM_CREATE_ASSET_FOR_APP_WITH_ALBUM), 63 static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_PUBLIC_SET_TITLE), 64 static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_SYSTEM_SET_PENDING), 65 static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_SYSTEM_SET_FAVORITE), 66 static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_SYSTEM_SET_USER_COMMENT), 67 static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_SYSTEM_BATCH_SET_HIDDEN), 68 static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_SYSTEM_BATCH_SET_FAVORITE), 69 static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_SYSTEM_BATCH_SET_RECENT_SHOW), 70 static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_SYSTEM_BATCH_SET_USER_COMMENT), 71 static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_SYS_TRASH_PHOTOS), 72 static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_TRASH_PHOTOS), 73 static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_DELETE_PHOTOS), 74 static_cast<uint32_t>(MediaLibraryBusinessCode::DELETE_PHOTOS_COMPLETED), 75 static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_GRANT_PHOTO_URI_PERMISSION), 76 static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_GRANT_PHOTO_URIS_PERMISSION), 77 static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_CANCEL_PHOTO_URI_PERMISSION), 78 static_cast<uint32_t>(MediaLibraryBusinessCode::ASSET_CHANGE_SET_FAVORITE), 79 static_cast<uint32_t>(MediaLibraryBusinessCode::ASSET_CHANGE_SET_HIDDEN), 80 static_cast<uint32_t>(MediaLibraryBusinessCode::ASSET_CHANGE_SET_USER_COMMENT), 81 static_cast<uint32_t>(MediaLibraryBusinessCode::ASSET_CHANGE_SET_LOCATION), 82 static_cast<uint32_t>(MediaLibraryBusinessCode::ASSET_CHANGE_SET_TITLE), 83 static_cast<uint32_t>(MediaLibraryBusinessCode::ASSET_CHANGE_SET_EDIT_DATA), 84 static_cast<uint32_t>(MediaLibraryBusinessCode::ASSET_CHANGE_SUBMIT_CACHE), 85 static_cast<uint32_t>(MediaLibraryBusinessCode::ASSET_CHANGE_CREATE_ASSET), 86 static_cast<uint32_t>(MediaLibraryBusinessCode::ASSET_CHANGE_ADD_IMAGE), 87 static_cast<uint32_t>(MediaLibraryBusinessCode::SET_CAMERA_SHOT_KEY), 88 static_cast<uint32_t>(MediaLibraryBusinessCode::DISCARD_CAMERA_PHOTO), 89 static_cast<uint32_t>(MediaLibraryBusinessCode::SET_EFFECT_MODE), 90 static_cast<uint32_t>(MediaLibraryBusinessCode::SET_ORIENTATION), 91 static_cast<uint32_t>(MediaLibraryBusinessCode::SET_VIDEO_ENHANCEMENT_ATTR), 92 static_cast<uint32_t>(MediaLibraryBusinessCode::SET_SUPPORTED_WATERMARK_TYPE), 93 static_cast<uint32_t>(MediaLibraryBusinessCode::INNER_CREATE_ASSET), 94 static_cast<uint32_t>(MediaLibraryBusinessCode::INNER_CLOSE_ASSET), 95 static_cast<uint32_t>(MediaLibraryBusinessCode::INNER_CUSTOM_RESTORE), 96 static_cast<uint32_t>(MediaLibraryBusinessCode::INNER_CUSTOM_RESTORE_CANCEL), 97 // albums start 98 static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_SYSTEM_CREATE_ALBUM), 99 static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_DELETE_PHOTO_ALBUMS), 100 static_cast<uint32_t>(MediaLibraryBusinessCode::CHANGE_REQUEST_ADD_ASSETS), 101 static_cast<uint32_t>(MediaLibraryBusinessCode::CHANGE_REQUEST_REMOVE_ASSETS), 102 static_cast<uint32_t>(MediaLibraryBusinessCode::CHANGE_REQUEST_MOVE_ASSETS), 103 static_cast<uint32_t>(MediaLibraryBusinessCode::CHANGE_REQUEST_RECOVER_ASSETS), 104 static_cast<uint32_t>(MediaLibraryBusinessCode::CHANGE_REQUEST_DELETE_ASSETS), 105 static_cast<uint32_t>(MediaLibraryBusinessCode::CHANGE_REQUEST_DISMISS_ASSETS), 106 static_cast<uint32_t>(MediaLibraryBusinessCode::CHANGE_REQUEST_MERGE_ALBUM), 107 static_cast<uint32_t>(MediaLibraryBusinessCode::CHANGE_REQUEST_PLACE_BEFORE), 108 static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_COMMIT_MODIFY), 109 static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_ADD_ASSETS), 110 static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_REMOVE_ASSETS), 111 static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_RECOVER_ASSETS), 112 static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_SET_COVER_URI), 113 }; 114 // API whitelist for check grant operation permission 115 std::unordered_set<uint32_t> PermissionCheck::grantOperationPermissionSet = { 116 static_cast<uint32_t>(MediaLibraryBusinessCode::INNER_CANCEL_PHOTO_URI_PERMISSION), 117 static_cast<uint32_t>(MediaLibraryBusinessCode::INNER_GRANT_PHOTO_URI_PERMISSION), 118 static_cast<uint32_t>(MediaLibraryBusinessCode::INNER_CHECK_PHOTO_URI_PERMISSION), 119 static_cast<uint32_t>(MediaLibraryBusinessCode::INNER_CHECK_AUDIO_URI_PERMISSION), 120 }; 121 // API whitelist for check media tool operation permission 122 std::unordered_set<uint32_t> PermissionCheck::mediaToolOperationPermissionSet = { 123 static_cast<uint32_t>(MediaLibraryBusinessCode::MEDIA_BUSINESS_CODE_START)}; 124 } // namespace OHOS::Media 125