aboutsummaryrefslogtreecommitdiffstats
path: root/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/TrustStoreItem.java
blob: c24a2ec463aefbae3b9827fd3d617f558497141b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.

package com.yahoo.vespa.hosted.provision.node;

import com.yahoo.slime.Cursor;
import com.yahoo.slime.Inspector;

import java.time.Instant;
import java.util.Objects;

/**
 * Contains the fingerprint and expiry of certificates in a hosts truststore.
 *
 * @author mortent
 */
public class TrustStoreItem {
    private static final String FINGERPRINT_FIELD = "fingerprint";
    private static final String EXPIRY_FIELD = "expiry";

    private final String fingerprint;
    private final Instant expiry;

    public TrustStoreItem(String fingerprint, Instant expiry) {
        this.fingerprint = fingerprint;
        this.expiry = expiry;
    }

    public String fingerprint() {
        return fingerprint;
    }

    public Instant expiry() {
        return expiry;
    }

    public void toSlime(Cursor trustedCertificatesRoot) {
        Cursor object = trustedCertificatesRoot.addObject();
        object.setString(FINGERPRINT_FIELD, fingerprint);
        object.setLong(EXPIRY_FIELD, expiry.toEpochMilli());
    }

    public static TrustStoreItem fromSlime(Inspector inspector) {
        String fingerprint = inspector.field(FINGERPRINT_FIELD).asString();
        Instant expiry = Instant.ofEpochMilli(inspector.field(EXPIRY_FIELD).asLong());
        return new TrustStoreItem(fingerprint, expiry);
    }

    @Override
    public String toString() {
        return "TrustedCertificate{" +
               "fingerprint='" + fingerprint + '\'' +
               ", expiry=" + expiry +
               '}';
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        TrustStoreItem that = (TrustStoreItem) o;
        return Objects.equals(fingerprint, that.fingerprint) && Objects.equals(expiry, that.expiry);
    }

    @Override
    public int hashCode() {
        return Objects.hash(fingerprint, expiry);
    }
}