From patchwork Mon Dec 6 01:12:41 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 32048 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:cd86:0:0:0:0:0 with SMTP id d128csp3913044iog; Sun, 5 Dec 2021 17:13:35 -0800 (PST) X-Google-Smtp-Source: ABdhPJwrqCDN2RRruJ5ZEADKd3rUXJ8sh1FkUJaHX7OnFCkglId7oNWp7gtJtZ/yJGZNop0kqT9a X-Received: by 2002:a17:907:d17:: with SMTP id gn23mr40831555ejc.25.1638753215744; Sun, 05 Dec 2021 17:13:35 -0800 (PST) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id do16si19232682ejc.357.2021.12.05.17.13.35; Sun, 05 Dec 2021 17:13:35 -0800 (PST) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@outlook.com header.s=selector1 header.b="R/wdTV1v"; arc=fail (body hash mismatch); spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id DB00E68AA67; Mon, 6 Dec 2021 03:13:19 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-oln040092074036.outbound.protection.outlook.com [40.92.74.36]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id BD06A68A78A for ; Mon, 6 Dec 2021 03:13:12 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=OHMxi4ZMgG2vo9K8rexT34Y3pzegCY9NjPFPIsyssxOK/odhDoWFLklPKAMMDYGDOHLV0U7sRHIP+NGGr38dKVXYY1JMTRU3TtFky1gVcuaK3QcgampzT9hFTKRyD8nyKy+VPJpGRyz3jQT4KxDWGTmCnaantM4TuQu2jv3rBf0fW7vzq2SsIpzvT5CdgFDypr7kU0PnCXOr6MMVg+rjiVAhCRULsJFHr08ErlTI2D4vlFcj4tUAxbfvS/IKWceuXL7CwfhYLhXwdN9IlWqHEpx6xeBMgTT/G2te8c0vnrjIbRpKV3pjoO1Kv5xUEjb7WSSXYvuoAC7TG6euAeBZcQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=NQrfDqhlhOFzlj+Fpne4x/j1tTbKbuhwSdcqcrPwFfI=; b=ZsymIh1iozY78PTVtvqB+efbwQq9r46FM+2r9Cb/zFOguZr5f15WPMzR+26Oask4Od21jJ/vYilQ1rEuOUy4PzMXCwQecgUPRY3Gq3XUAzjcKcTAqLuBu/Iju0BJlRfbLz87nfkOJYJ7x7IRU4q3flS8GdftEil2QTEhkkYywVUBVWuPrR5DSdGbHnIaHir6py+u7I9DWoDo1R4egZyeZTfZIZzOHmguc4hsZn4bNzJYxhDacVwxKZR2RchqdWeB9pAlcptlALRxH0Rl1y0OHGBaZH5ZwYia8nPHoLUKciiAuM/hG/kOZrieZIchHg+SimIAvunSOuh8+8wDn7Ux/w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=NQrfDqhlhOFzlj+Fpne4x/j1tTbKbuhwSdcqcrPwFfI=; b=R/wdTV1vZBWIMvhloiUjH6KbJh+LTudzGWKpYavO96AJ9wIZzuo057LkP1JWUAO53KHeZ/+x6Vj+bE/KEtc1PPzzXlbQgyCHJrij0NMDDLc9mASZP3JwCOTgwTFb6zvxw/EV4nqRJdDG5sDc0LI2bHrn6S+cGSUY8D8Pky/HYHLMX4lR8HLqW47KnnurmlErp9YlTgQlNzW4dcuyizj49uI6Mvz1MnTmR6XSv0L88vwVygUUS4h5xDoXzIj64VRQoNlC3hzmDtz+9LhEA/twboOkRAKnMzSuNOzdGGxPULLm2KqYcRX67DFOjvNSyqsHzUEAytG2M4UONZpyBYevdg== Received: from AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) by AM6PR03MB3686.eurprd03.prod.outlook.com (2603:10a6:209:2d::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4755.21; Mon, 6 Dec 2021 01:13:05 +0000 Received: from AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::f0dc:92f5:6bc2:45ca]) by AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::f0dc:92f5:6bc2:45ca%4]) with mapi id 15.20.4755.021; Mon, 6 Dec 2021 01:13:05 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Mon, 6 Dec 2021 02:12:41 +0100 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [dZN4BIX7pXRN+JhsCrBo3UMzYCSOhgNb] X-ClientProxiedBy: FR3P281CA0055.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:4b::18) To AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) X-Microsoft-Original-Message-ID: <20211206011246.239514-4-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from sblaptop.fritz.box (188.192.248.74) by FR3P281CA0055.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:4b::18) with Microsoft SMTP Server (version=TLS1_2, cipher=) via Frontend Transport; Mon, 6 Dec 2021 01:13:05 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 162c98dc-99f8-4872-543d-08d9b8558eb4 X-MS-Exchange-SLBlob-MailProps: gjx25WM8ZNWqLpJmXNddFmQxwc0tuI0lsNYdo24ZJVsamWg5s7ZeX/SS9XP5KPxG3y28yRf+qbGSYAhOYFFO9pz6EEM31xj7XeA0JUmbrnNbK7VFElJFp1gY2QqZxpw9qQeVpEJqMV4pu1B3RGsLWW5HEc9f+TOg1GuhwqsAEC4nedTDehDyuigX1UQxbIzd5MYqgi1duy+v9Sx/YkZT6TgOiIKh3TuU/LPwY7XkrnSig9vVSO8yfKCUYdvvApyaRoLWOvSZlOyQEYU16F2oW7uQwqXRxoGHPT3cNLE+o+gDMWTLjmWy/0VHmi2GKL58mZNd0OYPyM9BTochcxunOkP7fiFfTPANgUW6Q3Tbj4aSOK8nQOnWD1ga3SX0EPjCuijyjMTckmQgYSirnfdrhAmRzVL84HBYF7JwWEGqKAC6/mIJ8xWpnpIxSYmzfTjqfwJvtMPfWG9JYBRnZW3kTPKRdJ7uichtK6RH6XUxovjiJRLdwY5VRPicRdtyxFYp+DIEuP1+T1+ap33zA7kHbFNShyOxEWBUObOcEfLy9D+0ESYjI0KkzeVCZVbKqwSS6sBZzwbHtc9KlXoHyZND3WUh3g9hd96Hjxr18cIEu1cGcaSfniTbkD8ZUPwB6nSpEXdIql/dKFq5oe9LTct9daoU7UKFgbMjC+KXGgbnTuTTNZ7zCQN+iPSCC0BMrX0wAPFq6wz4Opgd7BJmPibfkEiXrAB1e4W8CBT/nM0xTSE= X-MS-TrafficTypeDiagnostic: AM6PR03MB3686: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: wXD6WkYnOuuCFudinawjG+hylzj9jezlkQCnD2hEXNRWqsSgwznK/PmYlQmwLkRkfRslKgiQ1jH4Dg8zu404JAI4IrirfDkUee9+JqeAC3bLaC8OWKxqn626/vlHPGJqMnkQQXKqQpUtcsJRFBSMgIC6rsICjWX0OAdeZ41N7WZZ8EMef4jY0u3EW8tWwX+CuPAf6T0n3o8AqnR5JJMNRCJjP/657/07xLuVaxTrIyjY6HmdIHe5de8zmOoPDaazsh/tarodsBhce4GZl4gnYE4m/KQEQyRqH/K8kO6d9jSFk2+z53YcM+r3y0MYCQa0JevBZXkpFGT0ZZAAGtRd3/bz5UtqVVJUyz/tcXBzIO1Dn3ZZ9XRSA0hLsvobrxRwF95ULE/7rqR3dP0DIoRs9osowybJPMDIbvzK7ahYGPsOu1AuO6h4MZqEri8lpX1oJstMpRo0eFUzxtFlQ3SHkB+9balncxkY8l4bptGh+/nP2JC9IT2Fa3+c8yKhawyenmt1KPPq8aMYGsI/2tmo8m9C+ldinT8pnmwjncZfOXUEJm+hhouJ0O/ScHcgPc20DgWBuN0XSrVv4AXeTXROEg== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: JtKkAhhkRvpTx9pUiSptb7wqbXYZlRvTwiMsgBZgfoqTDLSGUnxeoxUrSjUbq2c0iwWB7BxCpTbsobXetsEvrPuhypUxIDrWevi9UrAUhrRWFMxxSIORD3oYWDELWXSnttF6spptw9ibOhJAZ17kYano5WgKWYr35xlMNwmP37lqVV50m17MU0hdxWv+MHoSZUUUG4qIzuA6Ku/feD1qJ/88Mu9Gjuty+xy/9slEajw4q2gNfCq0VW8pTscHG1T2h0u1BA4iEgWzi0Sbt8mwQiIK/rrM/oInXjygHG/MPKFZWnNR75PvomBtolKhnkyC7SPG9kxY0HBGw2/b1d2o/d9XWNMhkZUsg2jFXHM5v5KU/Qbd0Eb/lv+PbkVDO8W8I9Bnx1wgunQPfI1fotxDmf0EN8SRjEGTfCotv4fIgfYGkHfDAewraxp+NRO/8vuVNolO39ikjDCh4hiBLG+/WJXeG/k/wHKmf6x8oRP3enxeS9JwSRf0BdI+25iUMZk+pdvn209W20+bXSF4clSnZGkJCbi8Ga6ambYCjUsZmxwEDvR9Q8LIo6mFB3kp+iTF+NbDIKRKd1/1kpImwJ8Sh+MOWrvINIjDKyzSRNRYdpRslF0uZCt58tdur/cnAx/5wrVvo/pYiYcl7rmb1szHcpemYNVONN97LhKixvOvFuRprOyDUbAgCYQe5tUqZVpyCjEFPa7aQQvEBOQMh+mea197nNOvh69pP30m5yKJQV7t/3hfv508LA7XGE8ymXoiMSHmwNNWDwgChxRpLzpJTDC7Tvvo5dSJkz8cwjMt73VyzuC4PQ3DGwbmnCixEZcrUVI9xL4gIYI4kElhjl2o387B9NW6zVOGBgIIiwOHcVkeGays4FaWdo6bUnhI1vmVZ2CDZvpeoLm7Vh3k9axeEciDyDEak02lR6Vby8Iy/UReqviuMBh89ONmYUBhrWGVn9reVOdZV5Cu6hA21mhMOQ== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 162c98dc-99f8-4872-543d-08d9b8558eb4 X-MS-Exchange-CrossTenant-AuthSource: AM7PR03MB6660.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Dec 2021 01:13:05.7280 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR03MB3686 Subject: [FFmpeg-devel] [PATCH 05/10] avformat/aadec: Simplify deriving file key X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: n+8G+thSTnFo Don't use different src and dst in av_tea_crypt(); use in-place modifications instead. Also let av_tea_crypt() encrypt all three blocks in one call. Signed-off-by: Andreas Rheinhardt --- libavformat/aadec.c | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/libavformat/aadec.c b/libavformat/aadec.c index 24116b1f70..5f49a543e4 100644 --- a/libavformat/aadec.c +++ b/libavformat/aadec.c @@ -71,10 +71,10 @@ static int get_second_size(char *codec_name) static int aa_read_header(AVFormatContext *s) { - int i, j, idx, largest_idx = -1; + int i, idx, largest_idx = -1; uint32_t toc_size, npairs, header_seed = 0, start; char codec_name[64] = {0}; - uint8_t output[24], dst[8], src[8]; + uint8_t buf[24]; int64_t largest_size = -1, current_size = -1, chapter_pos; struct toc_entry { uint32_t offset; @@ -156,19 +156,11 @@ static int aa_read_header(AVFormatContext *s) if (!c->tea_ctx) return AVERROR(ENOMEM); av_tea_init(c->tea_ctx, c->aa_fixed_key, 16); - output[0] = output[1] = 0; // purely for padding purposes - memcpy(output + 2, header_key, 16); - idx = 0; - for (i = 0; i < 3; i++) { // TEA CBC with weird mixed endianness - AV_WB32(src, header_seed); - AV_WB32(src + 4, header_seed + 1); - header_seed += 2; - av_tea_crypt(c->tea_ctx, dst, src, 1, NULL, 0); // TEA ECB encrypt - for (j = 0; j < TEA_BLOCK_SIZE && idx < 18; j+=1, idx+=1) { - output[idx] = output[idx] ^ dst[j]; - } - } - memcpy(c->file_key, output + 2, 16); // skip first 2 bytes of output + for (int i = 0; i < 6; i++) + AV_WB32(buf + 4 * i, header_seed + i); + av_tea_crypt(c->tea_ctx, buf, buf, 3, NULL, 0); + AV_WN64(c->file_key, AV_RN64(buf + 2) ^ AV_RN64(header_key)); + AV_WN64(c->file_key + 8, AV_RN64(buf + 10) ^ AV_RN64(header_key + 8)); av_log(s, AV_LOG_DEBUG, "File key is "); for (i = 0; i < 16; i++) av_log(s, AV_LOG_DEBUG, "%02x", c->file_key[i]);