// 
// Decompiled by Procyon v0.6.0
// 

package com.google.crypto.tink.aead;

import com.google.errorprone.annotations.Immutable;
import java.util.Objects;
import java.security.GeneralSecurityException;

public final class LegacyKmsAeadParameters extends AeadParameters
{
    private final String keyUri;
    private final Variant variant;
    
    private LegacyKmsAeadParameters(final String keyUri, final Variant variant) {
        this.keyUri = keyUri;
        this.variant = variant;
    }
    
    public static LegacyKmsAeadParameters create(final String keyUri) throws GeneralSecurityException {
        return new LegacyKmsAeadParameters(keyUri, Variant.NO_PREFIX);
    }
    
    public static LegacyKmsAeadParameters create(final String keyUri, final Variant variant) {
        return new LegacyKmsAeadParameters(keyUri, variant);
    }
    
    public String keyUri() {
        return this.keyUri;
    }
    
    public Variant variant() {
        return this.variant;
    }
    
    @Override
    public boolean hasIdRequirement() {
        return this.variant != Variant.NO_PREFIX;
    }
    
    @Override
    public boolean equals(final Object o) {
        if (!(o instanceof LegacyKmsAeadParameters)) {
            return false;
        }
        final LegacyKmsAeadParameters that = (LegacyKmsAeadParameters)o;
        return that.keyUri.equals(this.keyUri) && that.variant.equals(this.variant);
    }
    
    @Override
    public int hashCode() {
        return Objects.hash(LegacyKmsAeadParameters.class, this.keyUri, this.variant);
    }
    
    @Override
    public String toString() {
        return "LegacyKmsAead Parameters (keyUri: " + this.keyUri + ", variant: " + this.variant + ")";
    }
    
    @Immutable
    public static final class Variant
    {
        public static final Variant TINK;
        public static final Variant NO_PREFIX;
        private final String name;
        
        private Variant(final String name) {
            this.name = name;
        }
        
        @Override
        public String toString() {
            return this.name;
        }
        
        static {
            TINK = new Variant("TINK");
            NO_PREFIX = new Variant("NO_PREFIX");
        }
    }
}
