blob: 5834c91a98760f7834c679338a0aad3fecfb4cbb [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
Matthias Andreas Benkard91dbd742022-10-17 19:38:56 +02007import static java.nio.charset.StandardCharsets.UTF_8;
8
Matthias Andreas Benkard4e8423d2021-12-19 22:56:09 +01009import eu.mulk.jgvariant.core.Decoder;
10import eu.mulk.jgvariant.core.Variant;
Matthias Andreas Benkard329168c2021-12-28 01:20:05 +010011import java.util.Map;
Matthias Andreas Benkard4e8423d2021-12-19 22:56:09 +010012
13/**
14 * A collection of cryptographic signatures for a {@link Summary}.
15 *
16 * <p>Stored as a file named {@code summary.sig} in the OSTree repository root.
17 *
18 * <p>Reference: {@code ostree-repo-static-delta-private.h#OSTREE_SUMMARY_SIG_GVARIANT_STRING}
Matthias Andreas Benkard05114642021-12-29 21:51:29 +010019 *
20 * @param signatures a list of signatures, indexed by type.
Matthias Andreas Benkard4e8423d2021-12-19 22:56:09 +010021 */
Matthias Andreas Benkard329168c2021-12-28 01:20:05 +010022public record SummarySignature(Map<String, Variant> signatures) {
Matthias Andreas Benkard4e8423d2021-12-19 22:56:09 +010023
24 private static final Decoder<SummarySignature> DECODER =
Matthias Andreas Benkardaa11d822023-12-10 09:20:48 +010025 Decoder.ofDictionary(Decoder.ofString(UTF_8), Decoder.ofVariant())
26 .map(SummarySignature::new, SummarySignature::signatures);
Matthias Andreas Benkard4e8423d2021-12-19 22:56:09 +010027
Matthias Andreas Benkard05114642021-12-29 21:51:29 +010028 /**
29 * Acquires a {@link Decoder} for the enclosing type.
30 *
31 * @return a possibly shared {@link Decoder}.
32 */
Matthias Andreas Benkard4e8423d2021-12-19 22:56:09 +010033 public static Decoder<SummarySignature> decoder() {
34 return DECODER;
35 }
36}