blob: efa48c35f08d1a5139f41bfc42af389a750c5217 [file] [log] [blame]
Matthias Andreas Benkard4e8423d2021-12-19 22:56:09 +01001package eu.mulk.jgvariant.ostree;
2
3import eu.mulk.jgvariant.core.Decoder;
4import eu.mulk.jgvariant.core.Variant;
5import java.nio.charset.StandardCharsets;
Matthias Andreas Benkard329168c2021-12-28 01:20:05 +01006import java.util.Map;
Matthias Andreas Benkard4e8423d2021-12-19 22:56:09 +01007
8/**
9 * A collection of cryptographic signatures for a {@link Summary}.
10 *
11 * <p>Stored as a file named {@code summary.sig} in the OSTree repository root.
12 *
13 * <p>Reference: {@code ostree-repo-static-delta-private.h#OSTREE_SUMMARY_SIG_GVARIANT_STRING}
Matthias Andreas Benkard05114642021-12-29 21:51:29 +010014 *
15 * @param signatures a list of signatures, indexed by type.
Matthias Andreas Benkard4e8423d2021-12-19 22:56:09 +010016 */
Matthias Andreas Benkard329168c2021-12-28 01:20:05 +010017public record SummarySignature(Map<String, Variant> signatures) {
Matthias Andreas Benkard4e8423d2021-12-19 22:56:09 +010018
19 private static final Decoder<SummarySignature> DECODER =
Matthias Andreas Benkard329168c2021-12-28 01:20:05 +010020 Decoder.ofDictionary(Decoder.ofString(StandardCharsets.UTF_8), Decoder.ofVariant())
21 .map(SummarySignature::new);
Matthias Andreas Benkard4e8423d2021-12-19 22:56:09 +010022
Matthias Andreas Benkard05114642021-12-29 21:51:29 +010023 /**
24 * Acquires a {@link Decoder} for the enclosing type.
25 *
26 * @return a possibly shared {@link Decoder}.
27 */
Matthias Andreas Benkard4e8423d2021-12-19 22:56:09 +010028 public static Decoder<SummarySignature> decoder() {
29 return DECODER;
30 }
31}