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

package com.google.crypto.tink;

import java.io.IOException;
import com.google.crypto.tink.proto.KeyTemplate;
import com.google.protobuf.ExtensionRegistryLite;
import java.security.GeneralSecurityException;
import com.google.crypto.tink.internal.MutableSerializationRegistry;
import com.google.crypto.tink.internal.ProtoParametersSerialization;
import com.google.crypto.tink.internal.LegacyProtoParameters;

public final class TinkProtoParametersFormat
{
    public static byte[] serialize(final Parameters parameters) throws GeneralSecurityException {
        if (parameters instanceof LegacyProtoParameters) {
            return ((LegacyProtoParameters)parameters).getSerialization().getKeyTemplate().toByteArray();
        }
        final ProtoParametersSerialization s = MutableSerializationRegistry.globalInstance().serializeParameters(parameters, ProtoParametersSerialization.class);
        return s.getKeyTemplate().toByteArray();
    }
    
    public static Parameters parse(final byte[] serializedParameters) throws GeneralSecurityException {
        KeyTemplate t;
        try {
            t = KeyTemplate.parseFrom(serializedParameters, ExtensionRegistryLite.getEmptyRegistry());
        }
        catch (final IOException e) {
            throw new GeneralSecurityException("Failed to parse proto", e);
        }
        return MutableSerializationRegistry.globalInstance().parseParametersWithLegacyFallback(ProtoParametersSerialization.checkedCreate(t));
    }
    
    private TinkProtoParametersFormat() {
    }
}
