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

package com.google.crypto.tink.internal;

import java.security.GeneralSecurityException;
import com.google.protobuf.MessageLite;
import com.google.crypto.tink.proto.OutputPrefixType;
import com.google.crypto.tink.proto.KeyTemplate;
import com.google.crypto.tink.util.Bytes;
import com.google.errorprone.annotations.Immutable;

@Immutable
public final class ProtoParametersSerialization implements Serialization
{
    private final Bytes objectIdentifier;
    private final KeyTemplate keyTemplate;
    
    private ProtoParametersSerialization(final KeyTemplate keyTemplate, final Bytes objectIdentifier) {
        this.keyTemplate = keyTemplate;
        this.objectIdentifier = objectIdentifier;
    }
    
    public static ProtoParametersSerialization create(final String typeUrl, final OutputPrefixType outputPrefixType, final MessageLite value) {
        return create(KeyTemplate.newBuilder().setTypeUrl(typeUrl).setOutputPrefixType(outputPrefixType).setValue(value.toByteString()).build());
    }
    
    public static ProtoParametersSerialization create(final KeyTemplate keyTemplate) {
        return new ProtoParametersSerialization(keyTemplate, Util.toBytesFromPrintableAscii(keyTemplate.getTypeUrl()));
    }
    
    public static ProtoParametersSerialization checkedCreate(final KeyTemplate keyTemplate) throws GeneralSecurityException {
        return new ProtoParametersSerialization(keyTemplate, Util.checkedToBytesFromPrintableAscii(keyTemplate.getTypeUrl()));
    }
    
    public KeyTemplate getKeyTemplate() {
        return this.keyTemplate;
    }
    
    @Override
    public Bytes getObjectIdentifier() {
        return this.objectIdentifier;
    }
}
