blob: a11369b8846ace2a5dfb1d3faf236b5bff059826 [file] [log] [blame]
/** @file
* Copyright (c) 2018-2021, Arm Limited or its affiliates. All rights reserved.
* SPDX-License-Identifier : Apache-2.0
*
* 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 _VAL_CRYPTO_H_
#define _VAL_CRYPTO_H_
#include "val.h"
#define BYTES_TO_BITS(byte) (byte * 8)
#define BITS_TO_BYTES(bits) (((bits) + 7) / 8)
/* Size */
#define AES_16B_KEY_SIZE 16
#define AES_24B_KEY_SIZE 24
#define AES_32B_KEY_SIZE 32
#define AES_18B_KEY_SIZE 18
#define AES_34B_KEY_SIZE 34
#define DES_8B_KEY_SIZE 8
#define DES3_2B_KEY_SIZE 16
#define DES3_3B_KEY_SIZE 24
#define SIZE_32B 32
#define SIZE_50B 50
#define SIZE_128B 128
#define SIZE_256B 256
#define SIZE_512B 512
#define BUFFER_SIZE 1200
#define HASH_64B 64
#define BUFFER_SIZE_HIGH 5130
/* Key Slot */
#define INVALID_KEY_SLOT 0xDEAD
#define ZERO_KEY_SLOT 0
#define OCCUPIED_KEY_SLOT 1
#define MAX_KEY_SLOT 32
#define PSA_KEY_LIFETIME_INVALID 0xFFFFFFFF
#define PSA_KEY_USAGE_INVALID 0xFFFFFFFF
#define PSA_HASH_ALG_INVALID 0x02FFFFFF
#define PSA_ALG_INVALID 0xFFFFFFFF
#define PSA_KEY_DERIVATION_STEP_INVALID 0x0000FFFF
#define PSA_ALG_NONE ((psa_algorithm_t)0)
#define PSA_KEY_ID_NULL ((psa_key_id_t)0)
#if 0
#define PSA_ALG_AEAD_WITH_DEFAULT_LENGTH_TAG(aead_alg) \
((((aead_alg) & ~0x003f0000) == 0x05400100) ? PSA_ALG_CCM : \
(((aead_alg) & ~0x003f0000) == 0x05400200) ? PSA_ALG_GCM : \
(((aead_alg) & ~0x003f0000) == 0x05000500) ? PSA_ALG_CHACHA20_POLY1305 : \
PSA_ALG_NONE)
#define PSA_ALG_AEAD_WITH_SHORTENED_TAG(aead_alg, tag_length) \
((psa_algorithm_t) (((aead_alg) & ~0x003f0000) | (((tag_length) & 0x3f) << 16)))
#endif
enum crypto_function_code {
VAL_CRYPTO_AEAD_ABORT = 0x1,
VAL_CRYPTO_AEAD_DECRYPT,
VAL_CRYPTO_AEAD_DECRYPT_SETUP,
VAL_CRYPTO_AEAD_ENCRYPT,
VAL_CRYPTO_AEAD_ENCRYPT_SETUP,
VAL_CRYPTO_AEAD_FINISH,
VAL_CRYPTO_AEAD_GENERATE_NONCE,
VAL_CRYPTO_AEAD_OPERATION_INIT,
VAL_CRYPTO_AEAD_SET_LENGTHS,
VAL_CRYPTO_AEAD_SET_NONCE,
VAL_CRYPTO_AEAD_UPDATE,
VAL_CRYPTO_AEAD_UPDATE_AD,
VAL_CRYPTO_AEAD_VERIFY,
VAL_CRYPTO_ASYMMETRIC_DECRYPT,
VAL_CRYPTO_ASYMMETRIC_ENCRYPT,
VAL_CRYPTO_CIPHER_ABORT,
VAL_CRYPTO_CIPHER_DECRYPT,
VAL_CRYPTO_CIPHER_DECRYPT_SETUP,
VAL_CRYPTO_CIPHER_ENCRYPT,
VAL_CRYPTO_CIPHER_ENCRYPT_SETUP,
VAL_CRYPTO_CIPHER_FINISH,
VAL_CRYPTO_CIPHER_GENERATE_IV,
VAL_CRYPTO_CIPHER_OPERATION_INIT,
VAL_CRYPTO_CIPHER_SET_IV,
VAL_CRYPTO_CIPHER_UPDATE,
VAL_CRYPTO_COPY_KEY,
VAL_CRYPTO_INIT,
VAL_CRYPTO_DESTROY_KEY,
VAL_CRYPTO_EXPORT_KEY,
VAL_CRYPTO_EXPORT_PUBLIC_KEY,
VAL_CRYPTO_GENERATE_KEY,
VAL_CRYPTO_GENERATE_RANDOM,
VAL_CRYPTO_GET_KEY_ALGORITHM,
VAL_CRYPTO_GET_KEY_ATTRIBUTES,
VAL_CRYPTO_GET_KEY_BITS,
VAL_CRYPTO_GET_KEY_ID,
VAL_CRYPTO_GET_KEY_LIFETIME,
VAL_CRYPTO_GET_KEY_TYPE,
VAL_CRYPTO_GET_KEY_USAGE_FLAGS,
VAL_CRYPTO_HASH_ABORT,
VAL_CRYPTO_HASH_CLONE,
VAL_CRYPTO_HASH_COMPARE,
VAL_CRYPTO_HASH_COMPUTE,
VAL_CRYPTO_HASH_FINISH,
VAL_CRYPTO_HASH_OPERATION_INIT,
VAL_CRYPTO_HASH_RESUME,
VAL_CRYPTO_HASH_SETUP,
VAL_CRYPTO_HASH_SUSPEND,
VAL_CRYPTO_HASH_UPDATE,
VAL_CRYPTO_HASH_VERIFY,
VAL_CRYPTO_IMPORT_KEY,
VAL_CRYPTO_KEY_ATTRIBUTES_INIT,
VAL_CRYPTO_KEY_DERIVATION_ABORT,
VAL_CRYPTO_KEY_DERIVATION_GET_CAPACITY,
VAL_CRYPTO_KEY_DERIVATION_INPUT_BYTES,
VAL_CRYPTO_KEY_DERIVATION_INPUT_KEY,
VAL_CRYPTO_KEY_DERIVATION_KEY_AGREEMENT,
VAL_CRYPTO_KEY_DERIVATION_OPERATION_INIT,
VAL_CRYPTO_KEY_DERIVATION_OUTPUT_BYTES,
VAL_CRYPTO_KEY_DERIVATION_OUTPUT_KEY,
VAL_CRYPTO_KEY_DERIVATION_SET_CAPACITY,
VAL_CRYPTO_KEY_DERIVATION_SETUP,
VAL_CRYPTO_MAC_ABORT,
VAL_CRYPTO_MAC_COMPUTE,
VAL_CRYPTO_MAC_OPERATION_INIT,
VAL_CRYPTO_MAC_SIGN_FINISH,
VAL_CRYPTO_MAC_SIGN_SETUP,
VAL_CRYPTO_MAC_UPDATE,
VAL_CRYPTO_MAC_VERIFY,
VAL_CRYPTO_MAC_VERIFY_FINISH,
VAL_CRYPTO_MAC_VERIFY_SETUP,
VAL_CRYPTO_PURGE_KEY,
VAL_CRYPTO_RAW_KEY_AGREEMENT,
VAL_CRYPTO_RESET_KEY_ATTRIBUTES,
VAL_CRYPTO_SET_KEY_ALGORITHM,
VAL_CRYPTO_SET_KEY_BITS,
VAL_CRYPTO_SET_KEY_ID,
VAL_CRYPTO_SET_KEY_LIFETIME,
VAL_CRYPTO_SET_KEY_TYPE,
VAL_CRYPTO_SET_KEY_USAGE_FLAGS,
VAL_CRYPTO_SIGN_HASH,
VAL_CRYPTO_SIGN_MESSAGE,
VAL_CRYPTO_VERIFY_HASH,
VAL_CRYPTO_VERIFY_MESSAGE,
VAL_CRYPTO_RESET = 0xF0,
VAL_CRYPTO_FREE = 0xFE,
};
int32_t val_crypto_function(int type, ...);
#endif /* _VAL_CRYPTO_H_ */