xref: /aosp_15_r20/external/tink/go/internal/aead/aead.go (revision e7b1675dde1b92d52ec075b0a92829627f2c52a5)
1// Copyright 2022 Google LLC
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//      http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14//
15////////////////////////////////////////////////////////////////////////////////
16
17// Package aead provides internal implementations of the AEAD primitive.
18package aead
19
20import "fmt"
21
22const (
23	// AESGCMIVSize is the acceptable IV size defined by RFC 5116.
24	AESGCMIVSize = 12
25	// AESGCMTagSize is the acceptable tag size defined by RFC 5116.
26	AESGCMTagSize = 16
27)
28
29// ValidateAESKeySize checks if the given key size is a valid AES key size.
30func ValidateAESKeySize(sizeInBytes uint32) error {
31	switch sizeInBytes {
32	case 16, 32:
33		return nil
34	default:
35		return fmt.Errorf("invalid AES key size; want 16 or 32, got %d", sizeInBytes)
36	}
37}
38