From: "Ghanshyam Thakkar" <shyamthakkar001@gmail.com>
To: "Jeff King" <peff@peff.net>
Cc: "Junio C Hamano" <gitster@pobox.com>,
"Christian Couder" <christian.couder@gmail.com>,
"Patrick Steinhardt" <ps@pks.im>, <ach.lumap@gmail.com>,
<chriscool@tuxfamily.org>, <git@vger.kernel.org>,
<kaartic.sivaraam@gmail.com>
Subject: Re: [PATCH v3 2/3] t/: port helper/test-sha1.c to unit-tests/t-hash.c
Date: Sat, 22 Jun 2024 00:07:58 +0530 [thread overview]
Message-ID: <D25WWD6D1KLF.YET0CQPHSAAL@gmail.com> (raw)
In-Reply-To: <20240616045259.GA17750@coredump.intra.peff.net>
On Sun Jun 16, 2024 at 10:22 AM IST, Jeff King wrote:
> On Sun, Jun 16, 2024 at 01:44:07AM +0530, Ghanshyam Thakkar wrote:
>
> > On Fri, 24 May 2024, Junio C Hamano <gitster@pobox.com> wrote:
> > > Christian Couder <christian.couder@gmail.com> writes:
> > >
> > > >> Can we refactor this test to stop doing that? E.g., would it work if we
> > > >> used git-hash-object(1) to check that SHA1DC does its thing? Then we
> > > >> could get rid of the helper altogether, as far as I understand.
> > > >
> > > > It could perhaps work if we used git-hash-object(1) instead of
> > > > `test-tool sha1` in t0013-sha1dc to check that SHA1DC does its thing,
> > > > but we could do that in a separate patch or patch series.
> > >
> > > Yeah, I think such a plan to make preliminary refactoring as a
> > > separate series, and then have another series to get rid of
> > > "test-tool sha1" (and "test-tool sha256" as well?) on top of it
> > > would work well.
> >
> > It seems that git-hash-object does not die (or give an error) when
> > providing t0013/shattered-1.pdf, and gives a different hash than the
> > one explicitly mentioned t0013-sha1dc.sh. I suppose it is silently
> > replacing the hash when it detects the collision. Is this an expected
> > behaviour?
>
> The shattered files do not create a collision (nor trigger the detection
> in sha1dc) when hashed as Git objects. The reason is that Git objects
> are not a straight hash of the contents, but have the object type and
> size prepended. One _could_ use the same techniques that created the
> shattered files to create a colliding set of Git objects, but AFAIK
> nobody has done so (and it probably costs tens of thousands of USD,
> though perhaps getting cheaper every year).
>
> So no, git-hash-object can't be used to test this. You have to directly
> hash some contents with sha1, and I don't think there is any way to do
> that with regular Git commands. Anything working with objects will use
> the type+size format. We also use sha1 for the csum-file.[ch] mechanism,
> where it is a straight hash of the contents (and we use this for
> packfiles, etc). But there's not an easy way to feed an arbitrary file
> to that system.
>
> It's possible there might be a way to abuse hashfd_check() to feed an
> arbitrary file. E.g., stick shattered-1.pdf into a .pack file or
> something, then ask "index-pack --verify" to check it. But I don't think
> even that works, because before we even get to the final checksum, we're
> verifying the actual contents as we go.
>
> So I think we need to keep some mechanism for computing the sha1 of
> arbitrary contents.
Thank you for the detailed explanation. Then I suppose we should keep
these helpers (test-{sha1, sha256, hash}) as it is.
next prev parent reply other threads:[~2024-06-21 18:38 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-26 14:33 [Outreachy][PATCH 1/2] strbuf: introduce strbuf_addstrings() to repeatedly add a string Achu Luma
2024-02-26 14:33 ` [Outreachy][PATCH 2/2] Port helper/test-sha256.c and helper/test-sha1.c to unit-tests/t-hash.c Achu Luma
2024-02-26 16:39 ` [Outreachy][PATCH 1/2] strbuf: introduce strbuf_addstrings() to repeatedly add a string Junio C Hamano
2024-02-26 17:15 ` Christian Couder
2024-02-26 18:10 ` Junio C Hamano
2024-02-27 10:07 ` Christian Couder
2024-02-29 5:40 ` [Outreachy][PATCH v2 " Achu Luma
2024-02-29 5:40 ` [Outreachy][PATCH v2 2/2] Port helper/test-sha256.c and helper/test-sha1.c to unit-tests/t-hash.c Achu Luma
2024-03-06 14:25 ` Christian Couder
2024-03-26 11:39 ` Patrick Steinhardt
2024-03-26 11:51 ` Christian Couder
2024-05-16 19:30 ` Ghanshyam Thakkar
2024-05-23 23:59 ` [PATCH v3 0/3] Port t0015-hash to the unit testing framework Ghanshyam Thakkar
2024-05-23 23:59 ` [PATCH v3 1/3] strbuf: introduce strbuf_addstrings() to repeatedly add a string Ghanshyam Thakkar
2024-05-23 23:59 ` [PATCH v3 2/3] t/: port helper/test-sha1.c to unit-tests/t-hash.c Ghanshyam Thakkar
2024-05-24 13:30 ` Patrick Steinhardt
2024-05-24 14:08 ` Christian Couder
2024-05-24 15:49 ` Junio C Hamano
2024-06-15 20:14 ` Ghanshyam Thakkar
2024-06-16 4:52 ` Jeff King
2024-06-17 17:44 ` Junio C Hamano
2024-06-21 18:37 ` Ghanshyam Thakkar [this message]
2024-05-23 23:59 ` [PATCH v3 3/3] t/: port helper/test-sha256.c " Ghanshyam Thakkar
2024-05-24 13:30 ` Patrick Steinhardt
2024-05-25 1:15 ` Ghanshyam Thakkar
2024-05-26 8:43 ` [PATCH v4 0/2] t/: port helper/test-{sha1, sha256} to unit-tests/t-hash Ghanshyam Thakkar
2024-05-26 8:43 ` [PATCH v4 1/2] strbuf: introduce strbuf_addstrings() to repeatedly add a string Ghanshyam Thakkar
2024-05-26 8:43 ` [PATCH v4 2/2] t/: migrate helper/test-{sha1, sha256} to unit-tests/t-hash Ghanshyam Thakkar
2024-05-29 6:26 ` Patrick Steinhardt
2024-05-29 14:54 ` Junio C Hamano
2024-05-29 8:00 ` [GSoC][PATCH v5 0/2] " Ghanshyam Thakkar
2024-05-29 8:00 ` [PATCH v5 1/2] strbuf: introduce strbuf_addstrings() to repeatedly add a string Ghanshyam Thakkar
2024-05-29 8:00 ` [PATCH v5 2/2] t/: migrate helper/test-{sha1, sha256} to unit-tests/t-hash Ghanshyam Thakkar
2024-05-29 9:19 ` [GSoC][PATCH v5 0/2] " Patrick Steinhardt
2024-05-29 16:09 ` Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=D25WWD6D1KLF.YET0CQPHSAAL@gmail.com \
--to=shyamthakkar001@gmail.com \
--cc=ach.lumap@gmail.com \
--cc=chriscool@tuxfamily.org \
--cc=christian.couder@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=kaartic.sivaraam@gmail.com \
--cc=peff@peff.net \
--cc=ps@pks.im \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.