/* SPDX-License-Identifier: GPL-2.0-or-later */
/* This file was generated by: ./scripts/crypto/gen-hash-testvecs.py sm3 */

static const struct {
	size_t data_len;
	u8 digest[SM3_DIGEST_SIZE];
} hash_testvecs[] = {
	{
		.data_len = 0,
		.digest = {
			0x1a, 0xb2, 0x1d, 0x83, 0x55, 0xcf, 0xa1, 0x7f,
			0x8e, 0x61, 0x19, 0x48, 0x31, 0xe8, 0x1a, 0x8f,
			0x22, 0xbe, 0xc8, 0xc7, 0x28, 0xfe, 0xfb, 0x74,
			0x7e, 0xd0, 0x35, 0xeb, 0x50, 0x82, 0xaa, 0x2b,
		},
	},
	{
		.data_len = 1,
		.digest = {
			0xb6, 0x22, 0x2c, 0x39, 0xdc, 0x14, 0x9a, 0xee,
			0x01, 0x9a, 0xcb, 0x0d, 0xe6, 0xc6, 0x75, 0x6e,
			0x8f, 0x18, 0x7b, 0x0e, 0xe8, 0x98, 0x61, 0x71,
			0x2b, 0xd8, 0x38, 0xa9, 0xee, 0x2c, 0x1e, 0x93,
		},
	},
	{
		.data_len = 2,
		.digest = {
			0x62, 0x0c, 0x66, 0x77, 0x67, 0x28, 0x74, 0x8a,
			0xe3, 0x64, 0xea, 0x44, 0x6a, 0x3f, 0x34, 0x61,
			0x55, 0xc5, 0xaa, 0xb2, 0x6c, 0x67, 0x97, 0x68,
			0x68, 0xae, 0x4d, 0x64, 0xa8, 0xb6, 0x72, 0x3e,
		},
	},
	{
		.data_len = 3,
		.digest = {
			0x71, 0xd4, 0x63, 0xb1, 0xfa, 0x27, 0xc7, 0xae,
			0x65, 0xed, 0x5c, 0x93, 0x70, 0xe0, 0x09, 0x34,
			0x2f, 0x42, 0xe6, 0x71, 0x16, 0x8e, 0x90, 0x90,
			0x9a, 0xdd, 0xa6, 0x44, 0x66, 0x71, 0x18, 0xf9,
		},
	},
	{
		.data_len = 16,
		.digest = {
			0x79, 0x0b, 0x68, 0xb5, 0x41, 0xc1, 0x97, 0xa0,
			0x50, 0xe6, 0x93, 0x70, 0xf6, 0x98, 0x49, 0xea,
			0x92, 0xc9, 0xd0, 0xb1, 0x46, 0xbd, 0x4a, 0x0c,
			0x8e, 0xe8, 0xf3, 0xe4, 0x8f, 0x90, 0x33, 0x3c,
		},
	},
	{
		.data_len = 32,
		.digest = {
			0x32, 0x9f, 0xa3, 0x18, 0x18, 0x45, 0xe0, 0x28,
			0xd3, 0xa4, 0x41, 0x3a, 0x25, 0x62, 0x9c, 0x95,
			0xab, 0xfe, 0x02, 0xe0, 0x37, 0x7d, 0x3c, 0xc4,
			0xce, 0x69, 0x57, 0x5a, 0x07, 0x0e, 0xb9, 0xf5,
		},
	},
	{
		.data_len = 48,
		.digest = {
			0x0c, 0xcf, 0x7c, 0x48, 0x44, 0xa0, 0xb0, 0x8d,
			0xdf, 0xbe, 0x22, 0x14, 0x7e, 0xd4, 0xc3, 0x8d,
			0x6a, 0x23, 0xfc, 0x44, 0x0e, 0x0f, 0xde, 0xa5,
			0x7c, 0x8b, 0xc4, 0x8b, 0xab, 0x8c, 0x87, 0x41,
		},
	},
	{
		.data_len = 49,
		.digest = {
			0xb3, 0x76, 0x8b, 0x19, 0xf9, 0x10, 0xa9, 0x56,
			0x4f, 0xce, 0x27, 0xaa, 0x65, 0x96, 0xe5, 0xdb,
			0x90, 0x9b, 0x92, 0xcd, 0x32, 0x0d, 0x16, 0xac,
			0xf8, 0xd0, 0x66, 0x62, 0x10, 0xf0, 0x44, 0xdf,
		},
	},
	{
		.data_len = 63,
		.digest = {
			0x07, 0xc9, 0x45, 0x65, 0x9f, 0x68, 0x75, 0xc3,
			0x74, 0xb2, 0x3b, 0x0c, 0x97, 0x05, 0xd3, 0x13,
			0xc0, 0xb6, 0x21, 0xed, 0xf6, 0x10, 0x7a, 0xed,
			0xec, 0xd8, 0x10, 0x29, 0xbf, 0x7a, 0x78, 0x37,
		},
	},
	{
		.data_len = 64,
		.digest = {
			0x3e, 0x69, 0x18, 0x45, 0xd8, 0x25, 0x6f, 0x44,
			0xc0, 0x02, 0xe5, 0xcf, 0xcd, 0x94, 0x42, 0xa9,
			0xd5, 0x12, 0x62, 0x10, 0x15, 0xa0, 0xf9, 0x16,
			0x19, 0x2d, 0x8d, 0x63, 0x31, 0xf2, 0x2f, 0x36,
		},
	},
	{
		.data_len = 65,
		.digest = {
			0x6b, 0x3e, 0xc0, 0x20, 0xb7, 0x74, 0x30, 0xa0,
			0xc6, 0x5c, 0xee, 0xbe, 0xdc, 0xe6, 0xe5, 0x4f,
			0x3c, 0x61, 0x8d, 0x91, 0xac, 0x31, 0x4b, 0x2a,
			0xdf, 0x1c, 0xef, 0x24, 0xdc, 0x0a, 0x10, 0xe8,
		},
	},
	{
		.data_len = 127,
		.digest = {
			0xab, 0xd6, 0xa1, 0xbf, 0x39, 0x43, 0x75, 0xda,
			0xbf, 0xc7, 0x22, 0xcc, 0x4e, 0xfc, 0xe4, 0x42,
			0x6d, 0x1b, 0x87, 0x25, 0x64, 0x7f, 0x88, 0xf7,
			0xc3, 0x0a, 0x0a, 0x4c, 0xd6, 0xa7, 0x68, 0xae,
		},
	},
	{
		.data_len = 128,
		.digest = {
			0x1b, 0x70, 0xd4, 0x5f, 0x6c, 0xe4, 0x2d, 0x58,
			0x2d, 0x0f, 0x9a, 0x12, 0x34, 0xbb, 0x5e, 0x38,
			0xd8, 0x1f, 0x6a, 0x46, 0x8a, 0xef, 0xdb, 0x68,
			0x18, 0x62, 0xbb, 0x85, 0xfc, 0xc4, 0x6e, 0x2e,
		},
	},
	{
		.data_len = 129,
		.digest = {
			0x33, 0x62, 0xba, 0xa7, 0x4a, 0xbc, 0xd7, 0x7b,
			0xd4, 0x67, 0x6d, 0x3e, 0xea, 0xe8, 0xb0, 0x64,
			0x0d, 0xf3, 0xae, 0x1d, 0x52, 0x24, 0x11, 0x9f,
			0xda, 0xa9, 0x7f, 0xd5, 0x22, 0x1a, 0xde, 0x8a,
		},
	},
	{
		.data_len = 256,
		.digest = {
			0x70, 0xa8, 0xa6, 0x2b, 0xfb, 0x1f, 0x3b, 0x5a,
			0xcc, 0x71, 0x76, 0x9e, 0x25, 0x4c, 0xfa, 0x8f,
			0x39, 0x4a, 0x21, 0x8a, 0x9d, 0x74, 0x8d, 0x2c,
			0x31, 0xa5, 0xb5, 0xff, 0x30, 0xc1, 0x14, 0xc4,
		},
	},
	{
		.data_len = 511,
		.digest = {
			0x39, 0xd0, 0x8c, 0x5f, 0xfc, 0x36, 0xc2, 0x7c,
			0xdb, 0x8b, 0x2e, 0xdc, 0x9d, 0x1b, 0xd1, 0xba,
			0x9b, 0x52, 0x6b, 0x35, 0x46, 0x46, 0x75, 0x73,
			0xe5, 0x62, 0x96, 0x6e, 0xf3, 0xba, 0xd9, 0x19,
		},
	},
	{
		.data_len = 513,
		.digest = {
			0x76, 0xa0, 0x3d, 0xa2, 0x5f, 0xd4, 0xa6, 0xbe,
			0x6b, 0xdb, 0xed, 0x14, 0x9e, 0xa8, 0x15, 0x77,
			0xa9, 0x38, 0x30, 0x6b, 0x68, 0xfa, 0xb6, 0xe2,
			0x93, 0x19, 0x24, 0x72, 0x67, 0x20, 0x72, 0xc3,
		},
	},
	{
		.data_len = 1000,
		.digest = {
			0x16, 0xbc, 0x33, 0x77, 0x0b, 0xcf, 0x93, 0x5e,
			0xec, 0x7d, 0x8d, 0x3c, 0xae, 0xd9, 0x75, 0xdf,
			0x46, 0x24, 0x17, 0x7e, 0x03, 0x88, 0xf2, 0x75,
			0xa9, 0x18, 0xa6, 0x1c, 0x7a, 0x74, 0x0d, 0xf3,
		},
	},
	{
		.data_len = 3333,
		.digest = {
			0xdb, 0x54, 0x89, 0xe7, 0x1c, 0x50, 0xf2, 0xbf,
			0xde, 0x3a, 0xbf, 0x5b, 0xee, 0x5a, 0x46, 0x62,
			0x20, 0xb1, 0x80, 0x48, 0xac, 0x56, 0x33, 0xb3,
			0xbb, 0x3f, 0xfa, 0x02, 0xc6, 0x43, 0xb5, 0x8c,
		},
	},
	{
		.data_len = 4096,
		.digest = {
			0xdf, 0x0d, 0xed, 0x3b, 0x8f, 0xea, 0x81, 0xfd,
			0xd6, 0x34, 0xae, 0x74, 0x24, 0x3a, 0x15, 0x38,
			0xe7, 0xcf, 0x45, 0x7e, 0x8f, 0xf5, 0x50, 0x6c,
			0xaa, 0x27, 0x23, 0x92, 0x6d, 0xab, 0x3b, 0xde,
		},
	},
	{
		.data_len = 4128,
		.digest = {
			0x6a, 0xbd, 0x56, 0x5a, 0xf1, 0xc6, 0x40, 0x4d,
			0xf3, 0x50, 0x77, 0x87, 0x86, 0x63, 0x1b, 0x4d,
			0x21, 0x99, 0x96, 0xad, 0x24, 0x62, 0xce, 0xc0,
			0x3e, 0xb7, 0x35, 0x52, 0x56, 0x0e, 0x55, 0x85,
		},
	},
	{
		.data_len = 4160,
		.digest = {
			0x5b, 0xc1, 0x1f, 0x25, 0x43, 0xa3, 0x1c, 0xa0,
			0x8c, 0xfc, 0x41, 0xf1, 0xcc, 0xb3, 0x95, 0x95,
			0xe0, 0xb9, 0xd3, 0x29, 0xf4, 0x08, 0x31, 0x47,
			0x6d, 0x09, 0xa8, 0x2e, 0xa5, 0xf4, 0xf1, 0x8d,
		},
	},
	{
		.data_len = 4224,
		.digest = {
			0xec, 0x56, 0x1e, 0xa6, 0x1f, 0xb2, 0x87, 0xb2,
			0x7e, 0x15, 0xd6, 0x30, 0x08, 0x74, 0xb0, 0x48,
			0x90, 0x2a, 0xbe, 0x2f, 0x80, 0x3a, 0x88, 0xcc,
			0xd7, 0xc5, 0x87, 0x8c, 0x04, 0xef, 0x78, 0x71,
		},
	},
	{
		.data_len = 16384,
		.digest = {
			0xe7, 0xb8, 0x84, 0x20, 0xff, 0xd5, 0x53, 0xe6,
			0x14, 0x31, 0x12, 0x75, 0xb7, 0x9a, 0x4f, 0x63,
			0x63, 0x00, 0xfe, 0x2c, 0x54, 0xee, 0x06, 0xfc,
			0x12, 0x16, 0xe5, 0xdc, 0xa4, 0x40, 0x62, 0x12,
		},
	},
};

static const u8 hash_testvec_consolidated[SM3_DIGEST_SIZE] = {
	0xe6, 0x58, 0xd4, 0x8e, 0x74, 0x92, 0xdf, 0xfe,
	0x58, 0x05, 0xe5, 0x29, 0x83, 0xfb, 0xb7, 0x51,
	0x7e, 0x66, 0x0c, 0x49, 0x3e, 0x11, 0x7e, 0x9b,
	0xb1, 0x83, 0x3a, 0xa6, 0xb0, 0x3c, 0xf5, 0xe0,
};
