mirror of https://github.com/ipxe/ipxe.git
74 lines
1.8 KiB
C
74 lines
1.8 KiB
C
#ifndef _ASN1_TEST_H
|
|
#define _ASN1_TEST_H
|
|
|
|
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
|
|
|
|
#include <stdint.h>
|
|
#include <ipxe/image.h>
|
|
#include <ipxe/sha1.h>
|
|
#include <ipxe/test.h>
|
|
|
|
/** Digest algorithm used for ASN.1 tests */
|
|
#define asn1_test_digest_algorithm sha1_algorithm
|
|
|
|
/** Digest size used for ASN.1 tests */
|
|
#define ASN1_TEST_DIGEST_SIZE SHA1_DIGEST_SIZE
|
|
|
|
/** An ASN.1 test digest */
|
|
struct asn1_test_digest {
|
|
/** Digest value */
|
|
uint8_t digest[ASN1_TEST_DIGEST_SIZE];
|
|
};
|
|
|
|
/** An ASN.1 test */
|
|
struct asn1_test {
|
|
/** Image type */
|
|
struct image_type *type;
|
|
/** Source image */
|
|
struct image *image;
|
|
/** Expected digests of ASN.1 objects */
|
|
struct asn1_test_digest *expected;
|
|
/** Number of ASN.1 objects */
|
|
unsigned int count;
|
|
};
|
|
|
|
/**
|
|
* Define an ASN.1 test
|
|
*
|
|
* @v _name Test name
|
|
* @v _type Test image file type
|
|
* @v _file Test image file data
|
|
* @v ... Expected ASN.1 object digests
|
|
* @ret test ASN.1 test
|
|
*/
|
|
#define ASN1( _name, _type, _file, ... ) \
|
|
static const char _name ## __file[] = _file; \
|
|
static struct image _name ## __image = { \
|
|
.refcnt = REF_INIT ( ref_no_free ), \
|
|
.name = #_name, \
|
|
.data = ( userptr_t ) ( _name ## __file ), \
|
|
.len = sizeof ( _name ## __file ), \
|
|
}; \
|
|
static struct asn1_test_digest _name ## _expected[] = { \
|
|
__VA_ARGS__ \
|
|
}; \
|
|
static struct asn1_test _name = { \
|
|
.type = _type, \
|
|
.image = & _name ## __image, \
|
|
.expected = _name ## _expected, \
|
|
.count = ( sizeof ( _name ## _expected ) / \
|
|
sizeof ( _name ## _expected[0] ) ), \
|
|
};
|
|
|
|
extern void asn1_okx ( struct asn1_test *test, const char *file,
|
|
unsigned int line );
|
|
|
|
/**
|
|
* Report ASN.1 test result
|
|
*
|
|
* @v test ASN.1 test
|
|
*/
|
|
#define asn1_ok( test ) asn1_okx ( test, __FILE__, __LINE__ )
|
|
|
|
#endif /* _ASN1_TEST_H */
|