Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:122210 Return-Path: Delivered-To: mailing list internals@lists.php.net Received: (qmail 79532 invoked from network); 22 Jan 2024 06:10:40 -0000 Received: from unknown (HELO php-smtp4.php.net) (45.112.84.5) by pb1.pair.com with SMTP; 22 Jan 2024 06:10:40 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=php.net; s=mail; t=1705903883; bh=RvCIh9tiN82LJemwN7qrbP7S3edoV1LhtfjInTySx/s=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=ePlVh762YvwmHG1kyYa2YEdBCH0ZG9Iv4PEmFAYef95VmwL1HpuO9Ggs2GyaZwbpS keIPGzN3HplZQ1aOBQOAZgPDFs+8UahXEOPNlbF1+OBxO1VF0K7nfgfuHUQGJiZwbz 4oORFG062BWwpEBjyKE4/weI/GsrGSv8gY5LwxxgtdkZ8+KrFljVlE3BWsTl2Z5y9q f59KFRBjBKnnSI5KN92oOA42i9lHjLZkQBsKXJvz779Ijooxri4e2aJBOp4D51yAjw vbP80QPWGfwwFTHM0q+ikPXrg0T7iu1zPHDYcMyTgLR4apJo3XiZCY5b7VklBi7lW0 vWmHb86ndHpxQ== Received: from php-smtp4.php.net (localhost [127.0.0.1]) by php-smtp4.php.net (Postfix) with ESMTP id A8E7218005A for ; Sun, 21 Jan 2024 22:11:22 -0800 (PST) X-Spam-Checker-Version: SpamAssassin 4.0.0 (2022-12-13) on php-smtp4.php.net X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,DMARC_PASS,FREEMAIL_FROM, HTML_MESSAGE,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL, SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=4.0.0 X-Spam-Virus: No X-Envelope-From: Received: from mail-pf1-f181.google.com (mail-pf1-f181.google.com [209.85.210.181]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by php-smtp4.php.net (Postfix) with ESMTPS for ; Sun, 21 Jan 2024 22:11:22 -0800 (PST) Received: by mail-pf1-f181.google.com with SMTP id d2e1a72fcca58-6db599d5cb8so1912723b3a.0 for ; Sun, 21 Jan 2024 22:10:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1705903838; x=1706508638; darn=lists.php.net; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=FSylGcmnYLe49DnVFJ9RUN47uDIjdTnpNjCn8K55PIw=; b=dYvqJmIlO37FDiML7IdtpBzWYXRHE3SdihVqJhCglCmwuTjUwiv8isO09qYgSQ/8zu 1jyVa/lYwbaJa6vjtM2NQV3frs0/nxGm3V4eiKsa+GAET0iYkjMWY3KCc6GPrtBhiNhr rvkzA/5ugU/+4Ad9Aa9975t0GWjh0Ee3mik0DgJvFLgEsHF0xwwBF4eTpyWapu4BLyO2 hUjcozwubqkk+bttRaaClEY+hj/qcbq91uGuz0TuedqA4N92RUQATuvkOebekH6RHGVz mBsNob6U9B4o+xfFv9D3AzDz351Vvoq5qt52TQ2NvU3BbZR5k74bMi4Kmd6yK+hJbuHf WbZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1705903838; x=1706508638; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=FSylGcmnYLe49DnVFJ9RUN47uDIjdTnpNjCn8K55PIw=; b=XiwE+W51jeryspoLK8BkCO5/9dP9S9GjUu80jlGBz5ovYOtF4iNxf7a3GuQAJoytn6 nRAIF6aSxlv4TjztvEJ8OaAn2+BRefFzGSlom/JjVBj8Z6zL8MCpovZLOtQqiEzCeoYC lKJEd/+TeM6BmFUgwBrxDwBaMfZgWpGcEuBNPgYkVld2Orb83IjY/MFRnnvWz9atP2Tg 8ncflgz3I2/eoBIh3DK+acCXuPYcIRAcozl3NEwtygg17WMF/dw2vmmdBnC7HcivrGB+ HuuUxiFGClw2oysLvlBSfMwLOynlMYipQo38mHNqpQY5R1bVEyfz6XXBgMTx9gb68fAI 5ObQ== X-Gm-Message-State: AOJu0YzuzqW30ZqlK5+9mlXn4t5dOHEqvNmnF7EORwr9E55ucOTpiY03 YUU2LeSOwh9GzfNRToqVuME2PKO9Fg6dZJXNLWWKIRy8PRABONLhY79WIKoKH6JdgRbcDQO8yKI HDocL4F4EeJhOCVoFza8uqVNy5zw= X-Google-Smtp-Source: AGHT+IHFzcj9q+qiyq2iJS/ccikGZfJAghIa5+5xveB5qQMvjiyUTcqhkI7dhTJpOmilVcsZN0vvR6Nj00qTGL2fE4g= X-Received: by 2002:a05:6a21:1a5:b0:19a:68b1:e973 with SMTP id le37-20020a056a2101a500b0019a68b1e973mr1511474pzb.0.1705903838504; Sun, 21 Jan 2024 22:10:38 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: Date: Mon, 22 Jan 2024 06:10:27 +0000 Message-ID: To: Hans Henrik Bergan Cc: Hans Henrik Bergan , internals@lists.php.net Content-Type: multipart/alternative; boundary="00000000000050aa9d060f82b0f5" Subject: Re: [PHP-DEV] BLAKE3 hash From: fenniclog@gmail.com (tag Knife) --00000000000050aa9d060f82b0f5 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, 19 Jan 2024 at 21:03, Hans Henrik Bergan wrote: > Having looked into it, it seems difficult after all, > I would want a new $options argument for hash_final(), and some > internal changes to struct php_hash_blake3_ops, > and that internal change would have to be updated for all other hashes > PHP support.. > I'm not up for doing that now. > > And I think it should be a separate PR, after the initial support gets > merged. > > On Fri, 19 Jan 2024 at 21:42, Hans Henrik Bergan > wrote: > > > > >BLAKE3 has 2 default sizes > > > > Nope, only 1 canonical size, 256 bits. > > *BUT* BLAKE3 is XOF, it can be exactly as long as you want it to be: > > > > $ echo test | b3sum --length 5 > > dea2b412aa - > > $ echo test | b3sum --length 10 > > dea2b412aa90f1b43a06 - > > $ echo test | b3sum --length 32 > > dea2b412aa90f1b43a06ca5e8b8feafec45ae1357971322749480f4e1572eaa2 - > > $ echo test | b3sum --length 64 > > > dea2b412aa90f1b43a06ca5e8b8feafec45ae1357971322749480f4e1572eaa2ea67cf3c7= 3a3acbfa2bdab694345d8ecf5e353dd1a3d5a9628aec9bffc3e4cca > > - > > $ echo test | b3sum --length 999 > > > dea2b412aa90f1b43a06ca5e8b8feafec45ae1357971322749480f4e1572eaa2ea67cf3c7= 3a3acbfa2bdab694345d8ecf5e353dd1a3d5a9628aec9bffc3e4ccaa32f434df18da6161cab= b08b6278dcebca9833fe8d9f65d64db922cecf78c55b521f60dbd77d8ad8378a8f481f2941f= edc817d7e1fdeb9c9c9915f3e0a8a8b3cbd4849e21dbe4e359b21224dee5b75bcee0f2083bb= 8c25559b109727d23b02bde4d2e212529106a1b23be564007909fa23e39c8fdca42a86e75f1= 568d77a85b0efb0acfa0258907f6d9bfae259234d782d53276f823fe32e29b7165818cbc75e= 4860188d60f6bb31b00308b1a7293b75e007eaf2de846709bb1856ed398e1c354a093b4f485= 3b9127ba2e9d85b5336b3e09eb802eef8168f1954c34cc9c61bb933de56790caaff3e03b43f= 85febfc175e3534e687527a757c2b2e5474efa6db51873da140f5ebc65dca5545b73dd64ac7= 585fe1d123475e128878962ff8952cd2c8372c4808c4893c8038e6ffb52ef7cf9416ad71588= d779c8d60d19c997524b6f756b1d0d5934d41a8e3644fb3fc23e2403bf8b94b95a36f66fb10= 8b6ed824b117f3de9314566bd7042bdd5116e096f0846121ba7034559b234074eac403d2d0f= 9a4386745375c54d2c22cc970a1cd9836cc9ad1bc3b8c511e5674f05cd5cb8d844c3e802199= f0d8b9f3b6e2abd8e830b5768c1539b2d445181fbdcf77c51c330c67aa7b62691d18ecdb7d3= 124ac4e5fd83a8251ec072740aa4029624ad0a51ebfc8281a5e098ceda2b468e0f936a93b34= 98b0f11484c4e04cd7be657614ddebe9c08eb0c912431239605e1924009d32afeb965e9c7bb= de77bc8efc2ebbc7eb3555286bb7b97fc30fe33806b36aef129d975251a737f0a285fd7cb61= 7b9326211d22924704a2760e235ffa0c125eabb556698120229880b3af0f6dc81336af17fc9= 0f3e889142a5e338a28816c0b6b3944d2f05b7a70189d3e8a19a1e6f6ca0041d4eb165ab4e4= aad2f6ec87dc2986263e395c5a5d626bf8847d8b4a70126858f6adda1f39ce0cacf26689585= 6c9ea118418b80c1a37260c7ef73598beb6b2cb3665eece981e249fec4ab8ad2424f1243b08= 35a7f079a3a9e9c288395a88e70f75eb5610251a416a7189d6e1c3c25a6729d3c9bae65970f= 8fa48d3ef8f8469ab62c19c3adc04a5c7debea10a910df7d389b183c18cd33fe6b946ebfc5b= 8a0505968a63122fe0f618e8cf07a978777381bdbafac8024226eee532b76d63ee4a0b45f1f= 623928afcce21977284868747d7949dd912c8b0894b6a782d2985085f0e629c0c7be7ab19b3= 7e4c5f01a1636f62ee55783b86df8d53698e8b4bbe03fd69322609bb6fdee35cb433d44ec73= 22d6f1d040f87072bba06ab793bd857c7f754b080b8b04b28c > > - > > > > And what's more, thanks to PHP8.1.0's new $options argument for hash() > > we can expose blake3's XOF like > > hash("blake3", "test", options: ["length"=3D>512/8]): blake3_512 > > hash("blake3", "test", options: ["length"=3D>256/8]): blake3_256 > > hash("blake3", "test", options: ["length"=3D>8/8]): blake3_8 > > hash("blake3", "test", options: ["length"=3D>1000]): blake3_8000 > > > > > > that shouldn't be too difficult to implement either! good idea > > > > On Fri, 19 Jan 2024 at 20:20, tag Knife wrote: > > > > > > On Fri, 19 Jan 2024 at 18:43, Hans Henrik Bergan > wrote: > > > > > > > Can we add the BLAKE3 hash? > > > > > > > > Created a PR here: https://github.com/php/php-src/pull/13194 > > > > > > > > BLAKE3 is a very fast ("blazing fast") cryptographically secure > hash. It is > > > > the latest iteration of the BLAKE hash, which was a SHA3 finalist~ > see > > > > https://github.com/BLAKE3-team/BLAKE3 for more info on BLAKE3. > > > > > > > > In the PR is a portable C implementation, along with optimized > ARM-neon and > > > > x86_64 SSE2, SSE41, AVX2, and AVX512 implementations for GCC+unix a= nd > > > > GCC+windows and MSVC (*MSVC is currently only using the portable > > > > implementation, but it should be easy for a developer equipped with > MSVC to > > > > enable the optimized implementations. I don't have MSVC personally) > > > > > > > > That means the PR includes ~35 copies of the same algorithm, in > > > > hand-written assembly, optimized for various CPU/compiler/OS > combinations. > > > > Which means the PR is hug*e.* > > > > > > > > It would be possible to only ship a subset of them (For example, > keeping > > > > just the gcc+unix+SSE2 and gcc+unix+AVX2 and ARM-neon and trash the > rest, > > > > would benefit a lot systems in-the-wild, and reduce the size of the > PR > > > > substantially) > > > > > > > > It would also be possible to only ship the portable pure C > implementation, > > > > but that would also be detrimental to the performance, which is the > main > > > > motivator for adding BLAKE3 in the first place. > > > > > > > > But the groundwork to ship them all is already done (see the PR) > > > > > > > > Thoughts? > > > > > > > > > > BLAKE3 has 2 default sizes, BLAKE3_256 and BLAKE3_512. Internally the > > > hashblock size is 512, > > > With other algo's we have added these different hash sizes, would it = be > > > possible for you to expose the 2 hash sizes. > That's why I suggested implementing separate lengths of the like we have for SHA3, so we could have BLAKE3_256 and BLAKE3_512 and maybe inbetweens. --00000000000050aa9d060f82b0f5--