credential/libsecret: store new attributes
commit0ce02e2feca6b0a7b09c71cf890d116de4e09f36
authorM Hickford <mirth.hickford@gmail.com>
Fri, 16 Jun 2023 19:55:06 +0000 (16 19:55 +0000)
committerJunio C Hamano <gitster@pobox.com>
Fri, 16 Jun 2023 20:06:57 +0000 (16 13:06 -0700)
tree7f584231994ec86ddff6da55621732870a9f520e
parent0df2c180904f6b709766f9c24669a9d01543f915
credential/libsecret: store new attributes

d208bfd (credential: new attribute password_expiry_utc, 2023-02-18)
and a5c76569e7 (credential: new attribute oauth_refresh_token)
introduced new credential attributes.

libsecret assumes attribute values are non-confidential and
unchanging, so we encode the new attributes in the secret, separated by
newline:

    hunter2
    password_expiry_utc=1684189401
    oauth_refresh_token=xyzzy

This is extensible and backwards compatible. The credential protocol
already assumes that attribute values do not contain newlines.

Alternatives considered: store password_expiry_utc in a libsecret
attribute. This has the problem that libsecret creates new items
rather than overwrites when attribute values change.

Signed-off-by: M Hickford <mirth.hickford@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
contrib/credential/libsecret/git-credential-libsecret.c
t/lib-credential.sh
t/t0301-credential-cache.sh
t/t0303-credential-external.sh