AWS Encryption SDK for C v2.4
Loading...
Searching...
No Matches
edk.h
Go to the documentation of this file.
1/*
2 * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License"). You may not use
5 * this file except in compliance with the License. A copy of the License is
6 * located at
7 *
8 * http://aws.amazon.com/apache2.0/
9 *
10 * or in the "license" file accompanying this file. This file is distributed on an
11 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
12 * implied. See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16#ifndef AWS_CRYPTOSDK_EDK_H
17#define AWS_CRYPTOSDK_EDK_H
18
19#include <aws/common/array_list.h>
20#include <aws/common/byte_buf.h>
21
22#include <aws/cryptosdk/exports.h>
23
24/*
25 * This public interface to the encrypted data key (EDK) objects is provided for
26 * developers of CMMs and keyrings only. If you are a user of the AWS Encryption
27 * SDK for C and you are not developing your own CMMs and/or keyrings, you do not
28 * need to use it and you should not do so.
29 */
30
35
40 struct aws_byte_buf provider_id;
41 struct aws_byte_buf provider_info;
42 struct aws_byte_buf ciphertext;
43};
44
45#ifdef __cplusplus
46extern "C" {
47#endif
48
53AWS_CRYPTOSDK_API
54bool aws_cryptosdk_edk_is_valid(const struct aws_cryptosdk_edk *const edk);
55
61AWS_CRYPTOSDK_API
62bool aws_cryptosdk_edk_list_is_valid(const struct aws_array_list *edk_list);
63
67AWS_CRYPTOSDK_API
68bool aws_cryptosdk_empty_edk_list_is_valid(const struct aws_array_list *edk_list);
69
74bool aws_cryptosdk_edk_list_elements_are_valid(const struct aws_array_list *edk_list);
75
80AWS_CRYPTOSDK_API
82
86AWS_CRYPTOSDK_API
87int aws_cryptosdk_edk_list_init(struct aws_allocator *alloc, struct aws_array_list *edk_list);
88
92AWS_CRYPTOSDK_API
93void aws_cryptosdk_edk_list_clean_up(struct aws_array_list *edk_list);
94
99AWS_CRYPTOSDK_API
100void aws_cryptosdk_edk_list_clear(struct aws_array_list *edk_list);
101
105AWS_CRYPTOSDK_API
107 struct aws_allocator *alloc, struct aws_cryptosdk_edk *dest, const struct aws_cryptosdk_edk *src);
108
112AWS_CRYPTOSDK_STATIC_INLINE bool aws_cryptosdk_edk_eq(
113 const struct aws_cryptosdk_edk *a, const struct aws_cryptosdk_edk *b) {
114 return aws_byte_buf_eq(&a->ciphertext, &b->ciphertext) && aws_byte_buf_eq(&a->provider_info, &b->provider_info) &&
115 aws_byte_buf_eq(&a->provider_id, &b->provider_id);
116}
117
118#ifdef __cplusplus
119}
120#endif
121 // doxygen group cmm_kr_lowlevel
123
124#endif // AWS_CRYPTOSDK_EDK_H
bool aws_cryptosdk_edk_is_valid(const struct aws_cryptosdk_edk *const edk)
int aws_cryptosdk_edk_list_init(struct aws_allocator *alloc, struct aws_array_list *edk_list)
bool aws_cryptosdk_edk_list_is_valid(const struct aws_array_list *edk_list)
bool aws_cryptosdk_edk_eq(const struct aws_cryptosdk_edk *a, const struct aws_cryptosdk_edk *b)
Definition edk.h:112
void aws_cryptosdk_edk_clean_up(struct aws_cryptosdk_edk *edk)
void aws_cryptosdk_edk_list_clear(struct aws_array_list *edk_list)
int aws_cryptosdk_edk_init_clone(struct aws_allocator *alloc, struct aws_cryptosdk_edk *dest, const struct aws_cryptosdk_edk *src)
void aws_cryptosdk_edk_list_clean_up(struct aws_array_list *edk_list)
bool aws_cryptosdk_empty_edk_list_is_valid(const struct aws_array_list *edk_list)
bool aws_cryptosdk_edk_list_elements_are_valid(const struct aws_array_list *edk_list)
struct aws_byte_buf ciphertext
Definition edk.h:42
struct aws_byte_buf provider_id
Definition edk.h:40
struct aws_byte_buf provider_info
Definition edk.h:41