diff options
author | Bartosz Przydatek <przydatek@google.com> | 2018-10-04 02:45:12 -0700 |
---|---|---|
committer | Tink Team <noreply@google.com> | 2018-10-04 11:48:16 -0700 |
commit | 16486f27e7f14fa7bfaff6b137606f52f1d94cf9 (patch) | |
tree | 7ad90d89375e54a8e9f039e139048feaee04a00f /cc/deterministic_aead.h | |
parent | 42a021f9c5bb949f75c95779a3b1f83ae3020e40 (diff) | |
download | tink-16486f27e7f14fa7bfaff6b137606f52f1d94cf9.tar.gz |
Renaming C++ Daead-interface to DeterministicAead (for compatibility with Java).
PiperOrigin-RevId: 215708241
GitOrigin-RevId: b596f3df1821ab588e144bbd47790cda3fcf082a
Diffstat (limited to 'cc/deterministic_aead.h')
-rw-r--r-- | cc/deterministic_aead.h | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/cc/deterministic_aead.h b/cc/deterministic_aead.h new file mode 100644 index 000000000..73027b6fb --- /dev/null +++ b/cc/deterministic_aead.h @@ -0,0 +1,61 @@ +// Copyright 2017 Google Inc. +// +// 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. +// +/////////////////////////////////////////////////////////////////////////////// + +#ifndef TINK_DETERMINISTIC_AEAD_H_ +#define TINK_DETERMINISTIC_AEAD_H_ + +#include "absl/strings/string_view.h" +#include "tink/util/statusor.h" + +namespace crypto { +namespace tink { + +/////////////////////////////////////////////////////////////////////////////// +// The interface for deterministic authenticated encryption with associated +// data. +// TODO(bleichen): Copy the interface from Java. +// Check the properties: +// - authenticated +// - secure in multi-user setting +// - thread safe/copy safe +// References: +// https://eprint.iacr.org/2016/1124.pdf +class DeterministicAead { + public: + // Encrypts 'plaintext' with 'associated_data' as associated data + // deterministically, and returns the resulting ciphertext. + // The ciphertext allows for checking authenticity and integrity + // of the associated data, but does not guarantee its secrecy. + virtual crypto::tink::util::StatusOr<std::string> EncryptDeterministically( + absl::string_view plaintext, + absl::string_view associated_data) const = 0; + + // 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. + virtual crypto::tink::util::StatusOr<std::string> DecryptDeterministically( + absl::string_view ciphertext, + absl::string_view associated_data) const = 0; + + virtual ~DeterministicAead() {} +}; + +} // namespace tink +} // namespace crypto + +#endif // TINK_DETERMINISTIC_AEAD_H_ |