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

package com.google.crypto.tink.streamingaead;

import com.google.crypto.tink.Parameters;
import com.google.crypto.tink.Key;
import com.google.crypto.tink.AccessesPartialKey;
import com.google.errorprone.annotations.RestrictedApi;
import java.security.GeneralSecurityException;
import com.google.crypto.tink.util.SecretBytes;

public final class AesGcmHkdfStreamingKey extends StreamingAeadKey
{
    private final AesGcmHkdfStreamingParameters parameters;
    private final SecretBytes initialKeymaterial;
    
    private AesGcmHkdfStreamingKey(final AesGcmHkdfStreamingParameters parameters, final SecretBytes initialKeymaterial) {
        this.parameters = parameters;
        this.initialKeymaterial = initialKeymaterial;
    }
    
    @RestrictedApi(explanation = "Accessing parts of keys can produce unexpected incompatibilities, annotate the function with @AccessesPartialKey", link = "https://developers.google.com/tink/design/access_control#accessing_partial_keys", allowedOnPath = ".*Test\\.java", allowlistAnnotations = { AccessesPartialKey.class })
    public static AesGcmHkdfStreamingKey create(final AesGcmHkdfStreamingParameters parameters, final SecretBytes initialKeymaterial) throws GeneralSecurityException {
        if (parameters.getKeySizeBytes() != initialKeymaterial.size()) {
            throw new GeneralSecurityException("Key size mismatch");
        }
        return new AesGcmHkdfStreamingKey(parameters, initialKeymaterial);
    }
    
    @RestrictedApi(explanation = "Accessing parts of keys can produce unexpected incompatibilities, annotate the function with @AccessesPartialKey", link = "https://developers.google.com/tink/design/access_control#accessing_partial_keys", allowedOnPath = ".*Test\\.java", allowlistAnnotations = { AccessesPartialKey.class })
    public SecretBytes getInitialKeyMaterial() {
        return this.initialKeymaterial;
    }
    
    @Override
    public AesGcmHkdfStreamingParameters getParameters() {
        return this.parameters;
    }
    
    @Override
    public boolean equalsKey(final Key o) {
        if (!(o instanceof AesGcmHkdfStreamingKey)) {
            return false;
        }
        final AesGcmHkdfStreamingKey that = (AesGcmHkdfStreamingKey)o;
        return that.parameters.equals(this.parameters) && that.initialKeymaterial.equalsSecretBytes(this.initialKeymaterial);
    }
}
