blob: ca1e653f14c3527b10edcde12a72b46f17d721a8 [file] [log] [blame]
# Copyright 2019 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.
from "tink/python/util/clif.h" import * # StatusOr
from "tink/cc/aead.h":
namespace `crypto::tink`:
# The interface for authenticated encryption with associated data.
# Implementations of this interface are secure against adaptive
# chosen ciphertext attacks. Encryption with associated data ensures
# authenticity and integrity of that data, but not its secrecy.
# (see RFC 5116, https://tools.ietf.org/html/rfc5116)
class Aead:
# Encrypts 'plaintext' with 'associated_data' as associated data,
# and returns the resulting ciphertext.
# The ciphertext allows for checking authenticity and integrity
# of the associated data , but does not guarantee its secrecy.
def `Encrypt` as encrypt(self, plaintext: bytes, associated_data: bytes)
-> StatusOr<bytes>
# Decrypts 'ciphertext' with 'associated_data' as associated data,
# and returns the resulting plaintext.
# The decryption verifies the authenticity and integrity
# of the associated data, but there are no guarantees wrt. secrecy
# of that data.
def `Decrypt` as decrypt(self, ciphertext: bytes, associated_data: bytes)
-> StatusOr<bytes>