From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.ffmpeg.org (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id 5A4164E652 for ; Wed, 11 Jun 2025 06:03:01 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id 5D23B68BE4A; Wed, 11 Jun 2025 09:02:57 +0300 (EEST) Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05olkn2072.outbound.protection.outlook.com [40.92.90.72]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id E6F4168BA3B for ; Wed, 11 Jun 2025 09:02:50 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=LNkek+fAUoOo/0iJSR9f+0I7TTbCahIzwOwTL3S2rAGIqMsv1+U8IYekSYrjzDbHLvEAiPK4erVrRroy3H9RaPyKsLCeTEqkKOrT7HF1BRBeTQDG2sLcAwH2tLYGKmv5+KwczDY47xzu/J7NJddeJiIa0FcAwQjFEpF9dlJFMn/SQpE/3INjyzkGwyGG/IFuZn3FB+Us+PTlvO7XRn3z2GhVIvCu+PjZ/4uZjWEftxAe4ApXF0U5M/KavRkPK/19B/qKKNM/ctcouv6rkH1qeVV48OB8B90wlJvXbsSfwqnKulDnyuNzLq7SnzeTnOaj4iutKrv3nB8RjmvyAZjMZQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=UXAWYOJ3u54qUjVT2nOqXS1LnZh9fdUsLsha7cPfA10=; b=wyPxVv/L2lmuJP0WxxtLiEJTQIMfZiOMIsprVKcjxVnLdeH/+xZin744WkiMEB+jn5cutA7sPsgUT7SquBoDtlmt9kXqV4LV2qVVhLK1Yy/dyxsvaPFreYwFV+2hCm2NsczrLXhsPivalrEW0Oz4ud0TlJBCA0EzZbbUKLmg8yOWd65LuwAbW2fxNi2ZBDRXoIArPzR+WVm2BS5xbRJlV5nMhcMdCFEUqy2LIjTx5LT88Kwt8nGQAjAxyR312GFrm0H22acT2C30EIWTx1oYMu1KAbUDyqBL9hQY+2bGkAWg5/MAQ3uxNc8cyqreOHLzoAquFxK1/Ao7cfU2rThfdw== 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=UXAWYOJ3u54qUjVT2nOqXS1LnZh9fdUsLsha7cPfA10=; b=SvC0/tqBMG3umvY1aJ/+p/KVroEbZFMkFR6wEfep/eSKlOLC+5V6DPzp1lJrAw4bWW4MKSTYsyBiJqxSaFFEPL3+qO5kTc14CNMiXRocPeyfEb+/JUyfwIesjQCRGaRcMMCf0hc7mSNurs0dZ7CHAz3iUanPmkVW0oweAjJ/UQ4wnW9jnzYMquNufhXtT4Ze5wVWThpg2Wl4y3YXIA82fdO4uAJGSdfWCNnVtmE3D4Ek/tndpipsjRjY3o8lXd6TZh2HVXoaB+gZN0C7lsVJabcYLPjhdbbpWFDk/j7wLstvKdOdMIOkX6WyrsABDOkClC3pqsiePWvImEvS70iRAg== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AS4P250MB0511.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:4b6::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8792.41; Wed, 11 Jun 2025 06:02:49 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::d6a1:e3af:a5f1:b614]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::d6a1:e3af:a5f1:b614%5]) with mapi id 15.20.8792.034; Wed, 11 Jun 2025 06:02:49 +0000 Message-ID: Date: Wed, 11 Jun 2025 08:02:48 +0200 User-Agent: Mozilla Thunderbird To: ffmpeg-devel@ffmpeg.org References: <20250611015415.19575-1-jamrial@gmail.com> <20250611015415.19575-3-jamrial@gmail.com> Content-Language: en-US From: Andreas Rheinhardt In-Reply-To: <20250611015415.19575-3-jamrial@gmail.com> X-ClientProxiedBy: FR4P281CA0156.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:ba::18) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <26b749df-d5cf-47f7-ad2f-44a13326d89b@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AS4P250MB0511:EE_ X-MS-Office365-Filtering-Correlation-Id: ff1421e9-6d0e-4af0-19cc-08dda8ad9805 X-MS-Exchange-SLBlob-MailProps: AZnQBsB9XmoPyh9MsvtGyOnGsZYppkuEh1ehg5ZFRoxW7Fk9hClhext4xZYhz6SKqfJE/WFGxs0m9poB+JHc9b/for6tU/bsFFVhaMiWrW6iLI1lpor1OWjrZMYmjYFUJlpkL4LbWPOU5ZrMB0HvfPG07V3NtJ0qcvT94frYKYPBSmr3Td0VLa38j0V1D5MOCbgj9A5FFVKyEp7O5An9ZmXFZo8Sh7SmcXOhWWqMAbEJUfFjyafdISgJyEstxTtvsgZrGlHuSVsZ5cDTK6Q2LFFKH0+6NDi2UC9gbUHvy3Atfu3VCVCRs31KOWh6oePjxuoMGMjyU/tN79sl6BDgv6tqshktpI7BAJRMQlHcug0XqChTdFyZs4IXEAjUaZcKHm8R5UyAl1byEOjc9KHKZCLQFp31WjNNuk+AiFjH8hiHDtlLsSGOmHoebkabUrNe33nmsotKLnPereJCRa+YshdqnpacMqKwxIv4wYUEJGVdxLRAHJaKKVXf9d2fvm6FPNe9WLWRO5IgHp3ntgwdDKnMuxyXkVqGH0tTpieRFFre5dkhSbx6zsOG9c8GCyBtJtX8CJksktddRKwFV1S0NJ7dk7vxwJSDhytfFkx8e+T6zl8PcrzQLcV/yYHQ2scIUclCqOr0L3+3y4H3XwZuv6knobdwOMQPZ+LEbl56/BKVYQvn4jaCdhwrQ04E6sGPCyvCogcGkoCTVL5ECRqO48DHU6asBpqsSWOymR+0Lasmf2Z3Nr0N73kgDAq8MHboQT0llz7RO7Q= X-Microsoft-Antispam: BCL:0; ARA:14566002|41001999006|5072599009|6090799003|461199028|7092599006|15080799009|19110799006|8060799009|440099028|3412199025|19111999003; X-Microsoft-Antispam-Message-Info: =?utf-8?B?NmU2YmxaVDBMdWRpekpDNzEzVmYrcEJ5bFpqTkM5empkSGV2UE9oN3A0MTM3?= =?utf-8?B?blFOWUxIU3NLY2lOVllkVkdYeEpVb2FLcXYrTC9TRWxrbE1Xa3hBS2thQ0pG?= =?utf-8?B?WnZhVzJBYnliUVBMZVRXYVdlY2h1WDhhT2ZJN3JPWGNnS1Z0bE5WWmNTOXV6?= =?utf-8?B?Zlc3aGZLMkZ3Ym1VejQ0NDFGS2xocDQwQmlRbU8wYklNSEpYQ0hEeU9mYW02?= =?utf-8?B?dlNZa2FvS2hCUDdiTjd5SlUvRUlTd3IwT2tRVDZqY0NiUnYzS25mUXdJUk5h?= =?utf-8?B?bEovc2FQa1N0RURaTWJvWjgzcllxeXd6MExNQTZEd0N0YW1Jb2NpbFZnR1RE?= =?utf-8?B?LzU5c041OEE5QmFKUTFwNDdoMEpLQ3R1NmdYNjlZYXM0dzgrZk5DTS83a3kz?= =?utf-8?B?eXYvZlRzcWJsVTBFYXVCQnBKYWZvbFBENmlNeFhKQkVxbTA4d0hGak5NWndr?= =?utf-8?B?blRvb0l2azhtYkVicGhtQzBQcHd2WmZBQk5GMkJ3d0ZQai9FNWI2OUY0TXJM?= =?utf-8?B?UW9sZksxZWNOSDlLOWoyWVhjVzhtaDl5aTNHUkE4Zm9PZjRPRTJmc0ZyNWVZ?= =?utf-8?B?MFNabFlBWjBxa0F1azNtaUFOam85Y0RJWTZWWG5SaG9mM2ZCQW4wMjVFcjQ0?= =?utf-8?B?UHkwVG1DVlhTY05ZU29MVGpBazhMaUpxUCtHbTYyRVBFaml6alcxdmpBeGRw?= =?utf-8?B?K3NxSWJLRXRuU2xocFJuRjlvQ3Y5WGwxcXJwcXBUc0pXNFZMUU5tVGJpZHlE?= =?utf-8?B?MzhDYlkyMFBiVFNiWUdNRTFYSy94RFJSa2dWQU1iYzZoN0w4R0RQT1J2aHcx?= =?utf-8?B?VGk4Uk0veWRmVVdhS2xYRnI3YjNJL0Fjc21KN09HalhiSHFuS1luWHpZTkRV?= =?utf-8?B?anF5dkp2WnAzUlpTOFR6R2pmdnhkdEJrWUJJc2p5ZWR4K1hudUVuRCtZbG00?= =?utf-8?B?N1NwdEk2TFh4N2NpL3NNbVVKczM1Szk5b2orWnEraHJzOFByS1p5LzFNYlM3?= =?utf-8?B?T0w5VnNFMHZPdEt3TlBRSThVQ2VWRXNRRlVvM1pBekJobXYzVmE0MmJCaXdS?= =?utf-8?B?dVdBZVg1RVJQemNBNTJTNUplK2d1N2gwcDYxY3RoVTAvUXMrTmV5VmxkTnEr?= =?utf-8?B?b3NpM0NhYmFiMXI2Q1hXbFVxY0pmUmEyME5sQm1uS2xYeVVxcisyUmZlSmpO?= =?utf-8?B?RUROZzlIMUVFSUMrOW9JRVpxZ0ZOcDE4OHlxbjkvSyt5Qk9DdS8wc09nWjdC?= =?utf-8?B?bWFDYk9odE13ZEIwMWVlNWlMUnA2QVFzcHJ3R29HUTJqN1NJaGoyYlh1MW5R?= =?utf-8?B?Q2g3RGRGK1dvR1dTSDFualJVaWp0d2ZuNjVqdHhsMmY1R25ZaXZ0cXdzRmQz?= =?utf-8?B?UzNTSHhsRGR0eDIzS2tyWlhSSm9jS2orRmZkN09tVTVGaHloeTkwWFNOcWhj?= =?utf-8?B?bGtoWHdKRGpjZTBHN05uWmZuNHpWK2VJV3R6b21zWmovYnFtQWtVV29KWGFu?= =?utf-8?B?c0RKdDZvVkFkUnN3VExsTnJjK2FRWmxqZnhjbXJkYUtJdDF4VGdCWGdHVW5I?= =?utf-8?B?Skd5SFc3SnFHbkw0Ti8reWdoT3RzTXBFd2hlMTJRb1dGa0ZHR2JHTFNnMzVC?= =?utf-8?B?WVptSDZYNWNuVWJsTzVJNHl1U3JZQ0E9PQ==?= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?MkFFcTBWeFdqOXV0YTBRUFNTZlQrUnZkWjljTS9NVTJPa2lwcWU2MzhPRjlC?= =?utf-8?B?MDhudm9OeElpV29HVERSS1BKbCtiSDIvaE1ydE40REsyOWhLWjdWcWVoRXBw?= =?utf-8?B?L3RFdVVVdnVZWFFNamNpd3N0bjZVZEhHL0FTdHB3amxvUndpUHJtYVNadlVH?= =?utf-8?B?c0VyRkIrS3ZVRHFRUGJwYkpSYXJWOGg4ZHpzdXYzWUM3UkVWOE1oUmJySDNl?= =?utf-8?B?YzB5K1pxRzRwQmZRMDlJOXF5cXNVU0xIcldlWTJrRUdjQzZrSENIdTF0ZTh1?= =?utf-8?B?M1l0YjBtUWh4dUFvQ2c0dG1YK01RUnZqTW9QU3I5TzUvaG9ZV0Jydkl5K0pP?= =?utf-8?B?ZXZJU21GMVhUejQ5NWVyaVg5clNLZEM1MHFrTi9vUEFta0I4UHhvOXF1OTNC?= =?utf-8?B?VFIrWXUxMWpPTGkvVlU3emlnTEV3WHdXSTVpYXgraDJFY1RYWDMzOVVtb2lh?= =?utf-8?B?YmlZL1NOWnI1OUNHbVpoRzl0Ymg5elNNamZrZnY0TTBmWDBkUjdnOEQxa3dT?= =?utf-8?B?WDNDSFd0ak45ZTlVdUIxVDgrSWcwSHYzMTNFNm1vK1AxUjJFbXUvUjNhT0ph?= =?utf-8?B?Z1dlcFF0UUNoOXRmSjFDZDRuQy9tWG1sQ3JqVERKWFZFeGNCSVBGcXpPNHFY?= =?utf-8?B?Z244REszUW9iUkRXTmJkU1ZFLzNVSGtZM2JQUENuanVITzdKa3drYVpZZ2hO?= =?utf-8?B?V1duU2VwUkJoNTNzdlFlaWZXRnZ0aHdzeXJJanZ3R3lDYVArUURpSGhuay96?= =?utf-8?B?dzVKYm9YV3NIYU5KakYzT3V2WjBvYnhONjY1SE9OUndHSzg5ZFZNQnNEWnhC?= =?utf-8?B?RlBMaXVGbXF1TWJlWVNSR3dOYlpvZ28rVThUaHNFd3pzUmZFZ2xEN0U5ZE9j?= =?utf-8?B?Z3IxeC9RZmF0ekJQWUM3Z3ZLWTR1cUQ1c0hUTVVwYloycnMvSlNrSVVZNDg4?= =?utf-8?B?a2xiUUVERFhDak91WVY1YVJna3JwN2ZkTm56OE1RN0E1S21SRS9BdjBrRXN2?= =?utf-8?B?SkExNTlEdVJ5QUZvZTQyNzRIVTBpRVpvT3BXOGZXS0pLK2N5S08wQ0FsSDQy?= =?utf-8?B?R0RScEVDeC9WU2s0SE82YkM5alBlTHZkamVxemlSNjBLR2hEYXVKcHJONHUw?= =?utf-8?B?UTdhVWNaYUNsRjJrQUR5ZEw5QXNUL3d6TVJGczZSOS93R05CeXNuWlpObEhE?= =?utf-8?B?dUEwa2t5b2JoTkpRdi9WYTZVbm4wSjlvWWFrTjJXZ3hiMml1NmhjejRPMHVm?= =?utf-8?B?UjhFTndjTjNNcUtmdysxTno2S1dxMy9Pd3RraHYxQm1SSVhySHRzRjhXamxu?= =?utf-8?B?c2VLNjhLc3NxN0tPbzNFTXQ4bWppVFBJQTVUdGEzbzJRQzRBYWtJK3M3UWdH?= =?utf-8?B?dTVrU3lncW1VVGRlUHNrK3V2Wjd3VXpxUzAwcjkxNWFDc1ZYbXdpcWVQRmRq?= =?utf-8?B?RDNZRFY3dUNWdXUzb1c5T291SW9HMll5TnR1cldCbkNJcnhSV3RDRnYvU3By?= =?utf-8?B?VTFKSkdYZXIzYUpucjI5L3JuQ3QxZnNIdWNKWTJ0SE9oRmZHZmRoOG5lYVl2?= =?utf-8?B?M3BiMXEvcXVyZzlZYStFV1B3WnpXbmp3M3dDUC92RlJxcmxETTVKbXpSSkhK?= =?utf-8?B?VVZjQjBUWitSMEVXNTY2TnVqT1lNbWpPcU1ZTHI1MlZNR254ZHpxYS9sNDBa?= =?utf-8?B?TzBydjdtSTMxYWU0WmtSUjRScm15MXVSTGJSNGlrMFk3VFl4TFI1RDZYd1Fm?= =?utf-8?Q?G0ZgBfi8KLP/CMuibL0bEnkmnXQytX5y23KHyhS?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ff1421e9-6d0e-4af0-19cc-08dda8ad9805 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jun 2025 06:02:49.5080 (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: AS4P250MB0511 Subject: Re: [FFmpeg-devel] [PATCH 3/3] avutil/aes: add an OpenSSL-libcrypto backed implementation 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 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: James Almer: > OpenSSL has optimizations for more architectures than x86-AESNI, so use it if > libavutil is configured with libcrypto explicitly (Enabling OpenSSL alone will > not make use of it). > > Signed-off-by: James Almer > --- > configure | 8 +++++++- > libavutil/aes.c | 37 ++++++++++++++++++++++++++++++++++--- > libavutil/aes_internal.h | 11 ++++++++++- > libavutil/x86/aes_init.c | 2 ++ > 4 files changed, 53 insertions(+), 5 deletions(-) > > diff --git a/configure b/configure > index 534b443f7d..c7b4fbb2fe 100755 > --- a/configure > +++ b/configure > @@ -223,6 +223,7 @@ External library support: > --enable-libcelt enable CELT decoding via libcelt [no] > --enable-libcdio enable audio CD grabbing with libcdio [no] > --enable-libcodec2 enable codec2 en/decoding using libcodec2 [no] > + --enable-libcrypto enable crypto via libcrypto (AES only) [no] > --enable-libdav1d enable AV1 decoding via libdav1d [no] > --enable-libdavs2 enable AVS2 decoding via libdavs2 [no] > --enable-libdc1394 enable IIDC-1394 grabbing using libdc1394 > @@ -1931,6 +1932,7 @@ EXTERNAL_LIBRARY_LIST=" > libcaca > libcelt > libcodec2 > + libcrypto > libdav1d > libdc1394 > libflite > @@ -4091,7 +4093,7 @@ avfilter_deps="avutil" > avfilter_suggest="libm stdatomic spirv_compiler" > avformat_deps="avcodec avutil" > avformat_suggest="libm network zlib stdatomic" > -avutil_suggest="clock_gettime ffnvcodec gcrypt libm libdrm libmfx opencl openssl user32 vaapi vulkan videotoolbox corefoundation corevideo coremedia bcrypt stdatomic" > +avutil_suggest="clock_gettime ffnvcodec gcrypt libcrypto libm libdrm libmfx opencl openssl user32 vaapi vulkan videotoolbox corefoundation corevideo coremedia bcrypt stdatomic" > swresample_deps="avutil" > swresample_suggest="libm libsoxr stdatomic" > swscale_deps="avutil" > @@ -7193,6 +7195,10 @@ enabled openssl && { { check_pkg_config openssl "openssl >= 3.0.0" ope > check_lib openssl openssl/ssl.h SSL_library_init -lssl32 -leay32 || > check_lib openssl openssl/ssl.h SSL_library_init -lssl -lcrypto -lws2_32 -lgdi32 || > die "ERROR: openssl not found"; } > +enabled libcrypto && { { check_pkg_config libcrypto "libcrypto >= 3.0.0" openssl/aes.h AES_set_encrypt_key && > + { enabled gplv3 || ! enabled gpl || enabled nonfree || die "ERROR: OpenSSL-libcrypto >= 3.0.0 requires --enable-version3"; }; } || > + { enabled gpl && ! enabled nonfree && die "ERROR: OpenSSL-libcrypto < 3.0.0 is incompatible with the gpl"; } || > + require_pkg_config libcrypto libcrypto openssl/aes.h AES_set_encrypt_key; } > enabled pocketsphinx && require_pkg_config pocketsphinx pocketsphinx pocketsphinx/pocketsphinx.h ps_init > enabled rkmpp && { require_pkg_config rkmpp rockchip_mpp rockchip/rk_mpi.h mpp_create && > require_pkg_config rockchip_mpp "rockchip_mpp >= 1.3.7" rockchip/rk_mpi.h mpp_create && > diff --git a/libavutil/aes.c b/libavutil/aes.c > index 7fe42a5548..3a0d4e1385 100644 > --- a/libavutil/aes.c > +++ b/libavutil/aes.c > @@ -39,6 +39,7 @@ struct AVAES *av_aes_alloc(void) > return av_mallocz(sizeof(struct AVAES)); > } > > +#if !CONFIG_LIBCRYPTO > static const uint8_t rcon[10] = { > 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36 > }; > @@ -137,7 +138,7 @@ static inline void aes_crypt(AVAES *a, int s, const uint8_t *sbox, > } > > static void aes_encrypt(AVAES *a, uint8_t *dst, const uint8_t *src, > - int count, uint8_t *iv) > + int count, uint8_t *iv, int decrypt) > { > while (count--) { > addkey_s(&a->state[1], src, &a->round_key[a->rounds]); > @@ -153,7 +154,7 @@ static void aes_encrypt(AVAES *a, uint8_t *dst, const uint8_t *src, > } > > static void aes_decrypt(AVAES *a, uint8_t *dst, const uint8_t *src, > - int count, uint8_t *iv) > + int count, uint8_t *iv, int decrypt) > { > while (count--) { > addkey_s(&a->state[1], src, &a->round_key[a->rounds]); > @@ -168,12 +169,32 @@ static void aes_decrypt(AVAES *a, uint8_t *dst, const uint8_t *src, > } > } > > +#else > + > +static void aes_libcrypto(AVAES *a, uint8_t *dst, const uint8_t *src, > + int count, uint8_t *iv, int decrypt) > +{ > + if (iv) > + AES_cbc_encrypt((const unsigned char *)src, > + (unsigned char *)dst, > + count, &a->key, > + (unsigned char *)iv, !decrypt); > + else { > + for (int i = 0; i < count; i++) > + AES_ecb_encrypt((const unsigned char *)&src[i*16], > + (unsigned char *)&dst[i*16], Casts seem pointless. Lots of other part of the code presume that uint8_t* and unsigned char* are compatible. > + &a->key, !decrypt); > + } > +} > +#endif > + > void av_aes_crypt(AVAES *a, uint8_t *dst, const uint8_t *src, > int count, uint8_t *iv, int decrypt) > { > - a->crypt(a, dst, src, count, iv); > + a->crypt(a, dst, src, count, iv, decrypt); This new argument can be #if'ed away. > } > > +#if !CONFIG_LIBCRYPTO > static void init_multbl2(uint32_t tbl[][256], const int c[4], > const uint8_t *log8, const uint8_t *alog8, > const uint8_t *sbox) > @@ -226,10 +247,19 @@ static av_cold void aes_init_static(void) > init_multbl2(enc_multbl, (const int[4]) { 0x2, 0x1, 0x1, 0x3 }, > log8, alog8, sbox); > } > +#endif > > // this is based on the reference AES code by Paulo Barreto and Vincent Rijmen > int av_aes_init(AVAES *a, const uint8_t *key, int key_bits, int decrypt) > { > +#if CONFIG_LIBCRYPTO > + int ret = decrypt ? AES_set_decrypt_key(key, key_bits, &a->key) : > + AES_set_encrypt_key(key, key_bits, &a->key); > + if (ret < 0) > + return AVERROR_EXTERNAL; > + > + a->crypt = aes_libcrypto; > +#else > int i, j, t, rconpointer = 0; > uint8_t tk[8][4]; > int KC = key_bits >> 5; > @@ -278,6 +308,7 @@ int av_aes_init(AVAES *a, const uint8_t *key, int key_bits, int decrypt) > for (i = 0; i < (rounds + 1) >> 1; i++) > FFSWAP(av_aes_block, a->round_key[i], a->round_key[rounds - i]); > } > +#endif > > return 0; > } > diff --git a/libavutil/aes_internal.h b/libavutil/aes_internal.h > index e2de382f26..6713798ce2 100644 > --- a/libavutil/aes_internal.h > +++ b/libavutil/aes_internal.h > @@ -21,8 +21,13 @@ > #ifndef AVUTIL_AES_INTERNAL_H > #define AVUTIL_AES_INTERNAL_H > > +#include "config.h" > + > #include "mem_internal.h" > #include > +#if CONFIG_LIBCRYPTO > +#include > +#endif > > typedef union { > uint64_t u64[2]; > @@ -32,12 +37,16 @@ typedef union { > } av_aes_block; > > typedef struct AVAES { > +#if CONFIG_LIBCRYPTO > + AES_KEY key; > +#else > // Note: round_key[16] is accessed in the init code, but this only > // overwrites state, which does not matter (see also commit ba554c0). > DECLARE_ALIGNED(16, av_aes_block, round_key)[15]; > DECLARE_ALIGNED(16, av_aes_block, state)[2]; > int rounds; > - void (*crypt)(struct AVAES *a, uint8_t *dst, const uint8_t *src, int count, uint8_t *iv); > +#endif > + void (*crypt)(struct AVAES *a, uint8_t *dst, const uint8_t *src, int count, uint8_t *iv, int decript); > } AVAES; > > void ff_init_aes_x86(AVAES *a, int decrypt); > diff --git a/libavutil/x86/aes_init.c b/libavutil/x86/aes_init.c > index f825e0799c..54487e8832 100644 > --- a/libavutil/x86/aes_init.c > +++ b/libavutil/x86/aes_init.c > @@ -37,6 +37,7 @@ void ff_aes_encrypt_14_aesni(AVAES *a, uint8_t *dst, const uint8_t *src, > > void ff_init_aes_x86(AVAES *a, int decrypt) > { > +#if !CONFIG_LIBCRYPTO > int cpu_flags = av_get_cpu_flags(); > > if (EXTERNAL_AESNI(cpu_flags)) { > @@ -47,4 +48,5 @@ void ff_init_aes_x86(AVAES *a, int decrypt) > else if (a->rounds == 14) > a->crypt = decrypt ? ff_aes_decrypt_14_aesni : ff_aes_encrypt_14_aesni; > } > +#endif > } Is this better than our implementation for x86 with AESNI? Apart from that: If you don't need anything from ff_init_aes_x86(), then it should not be exist, i.e. it should not be compiled (and neither should the asm file). - Andreas _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".