blob: c8789559a866ba2332b670d9b3059da16fe83949 [file] [log] [blame]
Matthias Andreas Benkardb5d657a2022-02-03 21:14:30 +01001// SPDX-FileCopyrightText: © 2021 Matthias Andreas Benkard <code@mail.matthias.benkard.de>
2//
3// SPDX-License-Identifier: LGPL-3.0-or-later
4
Matthias Andreas Benkard4e8423d2021-12-19 22:56:09 +01005package eu.mulk.jgvariant.ostree;
6
7import eu.mulk.jgvariant.core.Decoder;
8import eu.mulk.jgvariant.core.Variant;
9import java.nio.charset.StandardCharsets;
Matthias Andreas Benkard329168c2021-12-28 01:20:05 +010010import java.util.Map;
Matthias Andreas Benkard4e8423d2021-12-19 22:56:09 +010011
12/**
13 * A collection of cryptographic signatures for a {@link Summary}.
14 *
15 * <p>Stored as a file named {@code summary.sig} in the OSTree repository root.
16 *
17 * <p>Reference: {@code ostree-repo-static-delta-private.h#OSTREE_SUMMARY_SIG_GVARIANT_STRING}
Matthias Andreas Benkard05114642021-12-29 21:51:29 +010018 *
19 * @param signatures a list of signatures, indexed by type.
Matthias Andreas Benkard4e8423d2021-12-19 22:56:09 +010020 */
Matthias Andreas Benkard329168c2021-12-28 01:20:05 +010021public record SummarySignature(Map<String, Variant> signatures) {
Matthias Andreas Benkard4e8423d2021-12-19 22:56:09 +010022
23 private static final Decoder<SummarySignature> DECODER =
Matthias Andreas Benkard329168c2021-12-28 01:20:05 +010024 Decoder.ofDictionary(Decoder.ofString(StandardCharsets.UTF_8), Decoder.ofVariant())
25 .map(SummarySignature::new);
Matthias Andreas Benkard4e8423d2021-12-19 22:56:09 +010026
Matthias Andreas Benkard05114642021-12-29 21:51:29 +010027 /**
28 * Acquires a {@link Decoder} for the enclosing type.
29 *
30 * @return a possibly shared {@link Decoder}.
31 */
Matthias Andreas Benkard4e8423d2021-12-19 22:56:09 +010032 public static Decoder<SummarySignature> decoder() {
33 return DECODER;
34 }
35}