All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.google.crypto.tink.internal.ProtoParametersSerialization Maven / Gradle / Ivy

// Copyright 2022 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
////////////////////////////////////////////////////////////////////////////////

package com.google.crypto.tink.internal;

import static com.google.crypto.tink.internal.Util.checkedToBytesFromPrintableAscii;
import static com.google.crypto.tink.internal.Util.toBytesFromPrintableAscii;

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

/**
 * Represents a {@code Parameters} object serialized with binary protobuf Serialization.
 *
 * 

{@code ProtoParametersSerialization} objects fully describe a {@code Parameters} object, but * tailored for protocol buffer serialization. */ @Immutable public final class ProtoParametersSerialization implements Serialization { private final Bytes objectIdentifier; private final KeyTemplate keyTemplate; private ProtoParametersSerialization(KeyTemplate keyTemplate, Bytes objectIdentifier) { this.keyTemplate = keyTemplate; this.objectIdentifier = objectIdentifier; } /** * Creates a new {@code ProtoParametersSerialization} object from the individual parts. * *

Note: the given typeUrl must be valid and must not contain invalid characters. */ public static ProtoParametersSerialization create( String typeUrl, OutputPrefixType outputPrefixType, MessageLite value) { return create( KeyTemplate.newBuilder() .setTypeUrl(typeUrl) .setOutputPrefixType(outputPrefixType) .setValue(value.toByteString()) .build()); } /** * Creates a new {@code ProtoParametersSerialization} object. * *

Note: the given typeUrl must be valid and may not contain invalid characters. */ public static ProtoParametersSerialization create(KeyTemplate keyTemplate) { return new ProtoParametersSerialization( keyTemplate, toBytesFromPrintableAscii(keyTemplate.getTypeUrl())); } /** * Creates a new {@code ProtoParametersSerialization} object. * *

If the type URL contains invalid characters, such as spaces, this throws a * GeneralSecurityException */ public static ProtoParametersSerialization checkedCreate(KeyTemplate keyTemplate) throws GeneralSecurityException { return new ProtoParametersSerialization( keyTemplate, checkedToBytesFromPrintableAscii(keyTemplate.getTypeUrl())); } /** The contents of the field value in the message com.google.crypto.tink.proto.KeyData. */ public KeyTemplate getKeyTemplate() { return keyTemplate; } /** The typeUrl. */ @Override public Bytes getObjectIdentifier() { return objectIdentifier; } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy