mirror of https://gitlab.com/qemu-project/qemu
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
85 lines
3.0 KiB
C
85 lines
3.0 KiB
C
/*
|
|
* QTest testcase for the ASPEED Hash and Crypto Engine
|
|
*
|
|
* SPDX-License-Identifier: GPL-2.0-or-later
|
|
* Copyright 2021 IBM Corp.
|
|
*/
|
|
|
|
#ifndef TESTS_ASPEED_HACE_UTILS_H
|
|
#define TESTS_ASPEED_HACE_UTILS_H
|
|
|
|
#include "qemu/osdep.h"
|
|
#include "libqtest.h"
|
|
#include "qemu/bitops.h"
|
|
|
|
#define HACE_CMD 0x10
|
|
#define HACE_SHA_BE_EN BIT(3)
|
|
#define HACE_MD5_LE_EN BIT(2)
|
|
#define HACE_ALGO_MD5 0
|
|
#define HACE_ALGO_SHA1 BIT(5)
|
|
#define HACE_ALGO_SHA224 BIT(6)
|
|
#define HACE_ALGO_SHA256 (BIT(4) | BIT(6))
|
|
#define HACE_ALGO_SHA512 (BIT(5) | BIT(6))
|
|
#define HACE_ALGO_SHA384 (BIT(5) | BIT(6) | BIT(10))
|
|
#define HACE_SG_EN BIT(18)
|
|
#define HACE_ACCUM_EN BIT(8)
|
|
|
|
#define HACE_STS 0x1c
|
|
#define HACE_RSA_ISR BIT(13)
|
|
#define HACE_CRYPTO_ISR BIT(12)
|
|
#define HACE_HASH_ISR BIT(9)
|
|
#define HACE_RSA_BUSY BIT(2)
|
|
#define HACE_CRYPTO_BUSY BIT(1)
|
|
#define HACE_HASH_BUSY BIT(0)
|
|
#define HACE_HASH_SRC 0x20
|
|
#define HACE_HASH_DIGEST 0x24
|
|
#define HACE_HASH_KEY_BUFF 0x28
|
|
#define HACE_HASH_DATA_LEN 0x2c
|
|
#define HACE_HASH_CMD 0x30
|
|
#define HACE_HASH_SRC_HI 0x90
|
|
#define HACE_HASH_DIGEST_HI 0x94
|
|
#define HACE_HASH_KEY_BUFF_HI 0x98
|
|
|
|
/* Scatter-Gather Hash */
|
|
#define SG_LIST_LEN_LAST BIT(31)
|
|
struct AspeedSgList {
|
|
uint32_t len;
|
|
uint32_t addr;
|
|
} __attribute__ ((__packed__));
|
|
|
|
struct AspeedMasks {
|
|
uint32_t src;
|
|
uint32_t dest;
|
|
uint32_t key;
|
|
uint32_t len;
|
|
uint32_t src_hi;
|
|
uint32_t dest_hi;
|
|
uint32_t key_hi;
|
|
};
|
|
|
|
void aspeed_test_md5(const char *machine, const uint32_t base,
|
|
const uint64_t src_addr);
|
|
void aspeed_test_sha256(const char *machine, const uint32_t base,
|
|
const uint64_t src_addr);
|
|
void aspeed_test_sha384(const char *machine, const uint32_t base,
|
|
const uint64_t src_addr);
|
|
void aspeed_test_sha512(const char *machine, const uint32_t base,
|
|
const uint64_t src_addr);
|
|
void aspeed_test_sha256_sg(const char *machine, const uint32_t base,
|
|
const uint64_t src_addr);
|
|
void aspeed_test_sha384_sg(const char *machine, const uint32_t base,
|
|
const uint64_t src_addr);
|
|
void aspeed_test_sha512_sg(const char *machine, const uint32_t base,
|
|
const uint64_t src_addr);
|
|
void aspeed_test_sha256_accum(const char *machine, const uint32_t base,
|
|
const uint64_t src_addr);
|
|
void aspeed_test_sha384_accum(const char *machine, const uint32_t base,
|
|
const uint64_t src_addr);
|
|
void aspeed_test_sha512_accum(const char *machine, const uint32_t base,
|
|
const uint64_t src_addr);
|
|
void aspeed_test_addresses(const char *machine, const uint32_t base,
|
|
const struct AspeedMasks *expected);
|
|
|
|
#endif /* TESTS_ASPEED_HACE_UTILS_H */
|
|
|