# libcurl dependency for implementing RFC3161 timestamps

4 messages from 2016-03-09 to 2016-03-09. Participants: Anton Wuerfel, Duy Nguyen, Randall S. Becker, Junio C Hamano.
Thread: https://gitlist.dev/t/41646

## Anton Wuerfel, 2016-03-09 11:24

Subject: libcurl dependency for implementing RFC3161 timestamps
Message-ID: <59de05c280143e7dd3ead6139df7a525.squirrel@faumail.uni-erlangen.de>
URL: https://gitlist.dev/e/59de05c280143e7dd3ead6139df7a525.squirrel%40faumail.uni-erlangen.de
In-Reply-To: <e57d18f6010c0b581b38a3daef145221.squirrel@faumail.uni-erlangen.de>

```
Hello,

for implementing RFC3161 timestamps in git tag, HTTP POST requests have to
be sent via libcurl. We already changed http.c to our needs.

Is there any best-practice how to introduce this libcurl dependency? There
are several options:

-As git tag is a builtin part of the main git executable, introduce a
libcurl dependency for the main executable (maybe not best-practice).

-Move git tag to a separate git-tag binary and introduce a libcurl
dependency to this new submodule.

-Create an own submodule like git-http-timestamp with a libcurl dependency
and call it from git tag and from other places where timestamp signatures
are needed.

Regards,
Phillip Raffeck
Anton Wuerfel

```

## Duy Nguyen, 2016-03-09 11:41

Subject: Re: libcurl dependency for implementing RFC3161 timestamps
Message-ID: <CACsJy8BNNQFP3LHxH06KewUjUVc1eox1mQPsg8b=acq-M=mHNQ@mail.gmail.com>
URL: https://gitlist.dev/e/CACsJy8BNNQFP3LHxH06KewUjUVc1eox1mQPsg8b%3Dacq-M%3DmHNQ%40mail.gmail.com
In-Reply-To: <59de05c280143e7dd3ead6139df7a525.squirrel@faumail.uni-erlangen.de>

```
On Wed, Mar 9, 2016 at 6:24 PM, Anton Wuerfel <anton.wuerfel@fau.de> wrote:
> -As git tag is a builtin part of the main git executable, introduce a
> libcurl dependency for the main executable (maybe not best-practice).

libcurl was part of the main executable and then split out because it
increased startup time [1]. I don't know if it's still true nowadays,
maybe you should do a simple test before deciding to go that way.

[1] http://article.gmane.org/gmane.comp.version-control.git/123946
-- 
Duy

```

## Randall S. Becker, 2016-03-09 13:04

Subject: RE: libcurl dependency for implementing RFC3161 timestamps
Message-ID: <001a01d17a04$2fb1bbd0$8f153370$@nexbridge.com>
URL: https://gitlist.dev/e/001a01d17a04%242fb1bbd0%248f153370%24%40nexbridge.com
In-Reply-To: <CACsJy8BNNQFP3LHxH06KewUjUVc1eox1mQPsg8b=acq-M=mHNQ@mail.gmail.com>

```
On March 9, 2016 6:41 AM, Duy Nguyen wrote:
> To: Anton Wuerfel <anton.wuerfel@fau.de>
> Cc: Git Mailing List <git@vger.kernel.org>; i4passt@cs.fau.de;
> phillip.raffeck@fau.de
> Subject: Re: libcurl dependency for implementing RFC3161 timestamps
> 
> On Wed, Mar 9, 2016 at 6:24 PM, Anton Wuerfel <anton.wuerfel@fau.de>
> wrote:
> > -As git tag is a builtin part of the main git executable, introduce a
> > libcurl dependency for the main executable (maybe not best-practice).
> 
> libcurl was part of the main executable and then split out because it
> increased startup time [1]. I don't know if it's still true nowadays, maybe you
> should do a simple test before deciding to go that way.

The NSE NonStop port observed that at 2.7.3 (admittedly old) that libcurl was not used for local operations including status, log, reset, etc., but was needed for push, pull, fetch (a.k.a. network) operations. The libcurl.so is loaded statically at start-up for any components needing the latter operations. Added it for local processing is not going to help performance :(, which is quite bad enough on our platform.

Sincerely,
Randall

-- Brief whoami: NonStop&UNIX developer since approximately UNIX(421664400)/NonStop(211288444200000000)
-- In my real life, I talk too much.

```

## Junio C Hamano, 2016-03-09 18:53

Subject: Re: libcurl dependency for implementing RFC3161 timestamps
Message-ID: <xmqq7fhbiitc.fsf@gitster.mtv.corp.google.com>
URL: https://gitlist.dev/e/xmqq7fhbiitc.fsf%40gitster.mtv.corp.google.com
In-Reply-To: <59de05c280143e7dd3ead6139df7a525.squirrel@faumail.uni-erlangen.de>

```
"Anton Wuerfel" <anton.wuerfel@fau.de> writes:

> Is there any best-practice how to introduce this libcurl dependency? There
> are several options:
>
> -As git tag is a builtin part of the main git executable, introduce a
> libcurl dependency for the main executable (maybe not best-practice).
>
> -Move git tag to a separate git-tag binary and introduce a libcurl
> dependency to this new submodule.
>
> -Create an own submodule like git-http-timestamp with a libcurl dependency
> and call it from git tag and from other places where timestamp signatures
> are needed.

If this were to become part of the official Git distribution, I
think the last one would be the most realistic approach.

In fact, just like the way that Git does not care how GPG implements
its crypto, manages the chain of trust, and any other details, I
think the best way to integrate it would be to write your own RFC3161
program that can be invoked just like we invoke GPG, and drive it
via an interface like we drive GPG via gpg-interface.[ch], since Git
shouldn't even care where your timestamp is coming from and over
what transport.

```
