/
githubmirror
/
ipxe
Обзор
Документация
Войти
/
githubmirror
/
ipxe
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/tests/exchange_test.h
89 строк
2 KB
Michael Brown
[test] Allow for key exchange tests without an expected public key
09 авг 2026, 01:05
09 авг 2026, 01:05
257e8fa
Код
Авторство
О чём код?
#ifndef _EXCHANGE_TEST_H #define _EXCHANGE_TEST_H FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #include <stdint.h> #include <ipxe/crypto.h> #include <ipxe/test.h> /** A key exchange test */ struct exchange_test { /** Key exchange algorithm */ struct exchange_algorithm *exchange; /** Private key */ const void *private; /** Length of private key */ size_t private_len; /** Partner public key */ const void *partner; /** Length of partner key */ size_t partner_len; /** Expected public key */ const void *public; /** Length of expected public key */ size_t public_len; /** Expected shared secret */ const void *shared; /** Length of expected shared secret, or 0 to expect failure */ size_t shared_len; }; /** Define inline private key */ #define PRIVATE(...) { __VA_ARGS__ } /** Define inline partner public key */ #define PARTNER(...) { __VA_ARGS__ } /** Define inline expected public key */ #define PUBLIC(...) { __VA_ARGS__ } /** Define inline absence of expected public key */ #define PUBLIC_UNSPECIFIED PUBLIC() /** Define inline expected shared secret */ #define SHARED(...) { __VA_ARGS__ } /** Define inline expected failure result */ #define SHARED_FAIL SHARED() /** * Define a key exchange test * * @v name Test name * @v EXCHANGE Key exchange algorithm * @v PRIVATE Private key * @v PARTNER Partner public key * @v PUBLIC Expected public key * @v SHARED Expected shared secret * @ret test Key exchange test */ #define EXCHANGE_TEST( name, EXCHANGE, PRIVATE, PARTNER, PUBLIC, \ SHARED ) \ static const uint8_t name ## _private[] = PRIVATE; \ static const uint8_t name ## _partner[] = PARTNER; \ static const uint8_t name ## _public[] = PUBLIC; \ static const uint8_t name ## _shared[] = SHARED; \ static struct exchange_test name = { \ .exchange = EXCHANGE, \ .private = name ## _private, \ .private_len = sizeof ( name ## _private ), \ .partner = name ## _partner, \ .partner_len = sizeof ( name ## _partner ), \ .public = name ## _public, \ .public_len = sizeof ( name ## _public ), \ .shared = name ## _shared, \ .shared_len = sizeof ( name ## _shared ), \ }; /** * Report a key exchange test result * * @v test Key exchange test */ #define exchange_ok(test) exchange_okx ( test, __FILE__, __LINE__ ) extern void exchange_okx ( struct exchange_test *test, const char *file, unsigned int line ); #endif /* _EXCHANGE_TEST_H */