1e1051a39Sopenharmony_ci/*
2e1051a39Sopenharmony_ci * Copyright 2017-2021 The OpenSSL Project Authors. All Rights Reserved.
3e1051a39Sopenharmony_ci *
4e1051a39Sopenharmony_ci * Licensed under the Apache License 2.0 (the "License").  You may not use
5e1051a39Sopenharmony_ci * this file except in compliance with the License.  You can obtain a copy
6e1051a39Sopenharmony_ci * in the file LICENSE in the source distribution or at
7e1051a39Sopenharmony_ci * https://www.openssl.org/source/license.html
8e1051a39Sopenharmony_ci */
9e1051a39Sopenharmony_ci#include <stdio.h>
10e1051a39Sopenharmony_ci#include <string.h>
11e1051a39Sopenharmony_ci#include <openssl/e_os2.h>
12e1051a39Sopenharmony_ci#include <openssl/evp.h>
13e1051a39Sopenharmony_ci#include "crypto/ecx.h"
14e1051a39Sopenharmony_ci#include "curve448_local.h"
15e1051a39Sopenharmony_ci#include "testutil.h"
16e1051a39Sopenharmony_ci
17e1051a39Sopenharmony_cistatic unsigned int max = 1000;
18e1051a39Sopenharmony_cistatic unsigned int verbose = 0;
19e1051a39Sopenharmony_ci
20e1051a39Sopenharmony_ci/* Test vectors from RFC7748 for X448 */
21e1051a39Sopenharmony_ci
22e1051a39Sopenharmony_cistatic const uint8_t in_scalar1[56] = {
23e1051a39Sopenharmony_ci    0x3d, 0x26, 0x2f, 0xdd, 0xf9, 0xec, 0x8e, 0x88, 0x49, 0x52, 0x66, 0xfe,
24e1051a39Sopenharmony_ci    0xa1, 0x9a, 0x34, 0xd2, 0x88, 0x82, 0xac, 0xef, 0x04, 0x51, 0x04, 0xd0,
25e1051a39Sopenharmony_ci    0xd1, 0xaa, 0xe1, 0x21, 0x70, 0x0a, 0x77, 0x9c, 0x98, 0x4c, 0x24, 0xf8,
26e1051a39Sopenharmony_ci    0xcd, 0xd7, 0x8f, 0xbf, 0xf4, 0x49, 0x43, 0xeb, 0xa3, 0x68, 0xf5, 0x4b,
27e1051a39Sopenharmony_ci    0x29, 0x25, 0x9a, 0x4f, 0x1c, 0x60, 0x0a, 0xd3
28e1051a39Sopenharmony_ci};
29e1051a39Sopenharmony_ci
30e1051a39Sopenharmony_cistatic const uint8_t in_u1[56] = {
31e1051a39Sopenharmony_ci    0x06, 0xfc, 0xe6, 0x40, 0xfa, 0x34, 0x87, 0xbf, 0xda, 0x5f, 0x6c, 0xf2,
32e1051a39Sopenharmony_ci    0xd5, 0x26, 0x3f, 0x8a, 0xad, 0x88, 0x33, 0x4c, 0xbd, 0x07, 0x43, 0x7f,
33e1051a39Sopenharmony_ci    0x02, 0x0f, 0x08, 0xf9, 0x81, 0x4d, 0xc0, 0x31, 0xdd, 0xbd, 0xc3, 0x8c,
34e1051a39Sopenharmony_ci    0x19, 0xc6, 0xda, 0x25, 0x83, 0xfa, 0x54, 0x29, 0xdb, 0x94, 0xad, 0xa1,
35e1051a39Sopenharmony_ci    0x8a, 0xa7, 0xa7, 0xfb, 0x4e, 0xf8, 0xa0, 0x86
36e1051a39Sopenharmony_ci};
37e1051a39Sopenharmony_ci
38e1051a39Sopenharmony_cistatic const uint8_t out_u1[56] = {
39e1051a39Sopenharmony_ci    0xce, 0x3e, 0x4f, 0xf9, 0x5a, 0x60, 0xdc, 0x66, 0x97, 0xda, 0x1d, 0xb1,
40e1051a39Sopenharmony_ci    0xd8, 0x5e, 0x6a, 0xfb, 0xdf, 0x79, 0xb5, 0x0a, 0x24, 0x12, 0xd7, 0x54,
41e1051a39Sopenharmony_ci    0x6d, 0x5f, 0x23, 0x9f, 0xe1, 0x4f, 0xba, 0xad, 0xeb, 0x44, 0x5f, 0xc6,
42e1051a39Sopenharmony_ci    0x6a, 0x01, 0xb0, 0x77, 0x9d, 0x98, 0x22, 0x39, 0x61, 0x11, 0x1e, 0x21,
43e1051a39Sopenharmony_ci    0x76, 0x62, 0x82, 0xf7, 0x3d, 0xd9, 0x6b, 0x6f
44e1051a39Sopenharmony_ci};
45e1051a39Sopenharmony_ci
46e1051a39Sopenharmony_cistatic const uint8_t in_scalar2[56] = {
47e1051a39Sopenharmony_ci    0x20, 0x3d, 0x49, 0x44, 0x28, 0xb8, 0x39, 0x93, 0x52, 0x66, 0x5d, 0xdc,
48e1051a39Sopenharmony_ci    0xa4, 0x2f, 0x9d, 0xe8, 0xfe, 0xf6, 0x00, 0x90, 0x8e, 0x0d, 0x46, 0x1c,
49e1051a39Sopenharmony_ci    0xb0, 0x21, 0xf8, 0xc5, 0x38, 0x34, 0x5d, 0xd7, 0x7c, 0x3e, 0x48, 0x06,
50e1051a39Sopenharmony_ci    0xe2, 0x5f, 0x46, 0xd3, 0x31, 0x5c, 0x44, 0xe0, 0xa5, 0xb4, 0x37, 0x12,
51e1051a39Sopenharmony_ci    0x82, 0xdd, 0x2c, 0x8d, 0x5b, 0xe3, 0x09, 0x5f
52e1051a39Sopenharmony_ci};
53e1051a39Sopenharmony_ci
54e1051a39Sopenharmony_cistatic const uint8_t in_u2[56] = {
55e1051a39Sopenharmony_ci    0x0f, 0xbc, 0xc2, 0xf9, 0x93, 0xcd, 0x56, 0xd3, 0x30, 0x5b, 0x0b, 0x7d,
56e1051a39Sopenharmony_ci    0x9e, 0x55, 0xd4, 0xc1, 0xa8, 0xfb, 0x5d, 0xbb, 0x52, 0xf8, 0xe9, 0xa1,
57e1051a39Sopenharmony_ci    0xe9, 0xb6, 0x20, 0x1b, 0x16, 0x5d, 0x01, 0x58, 0x94, 0xe5, 0x6c, 0x4d,
58e1051a39Sopenharmony_ci    0x35, 0x70, 0xbe, 0xe5, 0x2f, 0xe2, 0x05, 0xe2, 0x8a, 0x78, 0xb9, 0x1c,
59e1051a39Sopenharmony_ci    0xdf, 0xbd, 0xe7, 0x1c, 0xe8, 0xd1, 0x57, 0xdb
60e1051a39Sopenharmony_ci};
61e1051a39Sopenharmony_ci
62e1051a39Sopenharmony_cistatic const uint8_t out_u2[56] = {
63e1051a39Sopenharmony_ci    0x88, 0x4a, 0x02, 0x57, 0x62, 0x39, 0xff, 0x7a, 0x2f, 0x2f, 0x63, 0xb2,
64e1051a39Sopenharmony_ci    0xdb, 0x6a, 0x9f, 0xf3, 0x70, 0x47, 0xac, 0x13, 0x56, 0x8e, 0x1e, 0x30,
65e1051a39Sopenharmony_ci    0xfe, 0x63, 0xc4, 0xa7, 0xad, 0x1b, 0x3e, 0xe3, 0xa5, 0x70, 0x0d, 0xf3,
66e1051a39Sopenharmony_ci    0x43, 0x21, 0xd6, 0x20, 0x77, 0xe6, 0x36, 0x33, 0xc5, 0x75, 0xc1, 0xc9,
67e1051a39Sopenharmony_ci    0x54, 0x51, 0x4e, 0x99, 0xda, 0x7c, 0x17, 0x9d
68e1051a39Sopenharmony_ci};
69e1051a39Sopenharmony_ci
70e1051a39Sopenharmony_cistatic const uint8_t in_u3[56] = {
71e1051a39Sopenharmony_ci    0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
72e1051a39Sopenharmony_ci    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
73e1051a39Sopenharmony_ci    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
74e1051a39Sopenharmony_ci    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
75e1051a39Sopenharmony_ci    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
76e1051a39Sopenharmony_ci};
77e1051a39Sopenharmony_ci
78e1051a39Sopenharmony_cistatic const uint8_t out_u3[3][56] = {
79e1051a39Sopenharmony_ci    {
80e1051a39Sopenharmony_ci        0x3f, 0x48, 0x2c, 0x8a, 0x9f, 0x19, 0xb0, 0x1e, 0x6c, 0x46, 0xee, 0x97,
81e1051a39Sopenharmony_ci        0x11, 0xd9, 0xdc, 0x14, 0xfd, 0x4b, 0xf6, 0x7a, 0xf3, 0x07, 0x65, 0xc2,
82e1051a39Sopenharmony_ci        0xae, 0x2b, 0x84, 0x6a, 0x4d, 0x23, 0xa8, 0xcd, 0x0d, 0xb8, 0x97, 0x08,
83e1051a39Sopenharmony_ci        0x62, 0x39, 0x49, 0x2c, 0xaf, 0x35, 0x0b, 0x51, 0xf8, 0x33, 0x86, 0x8b,
84e1051a39Sopenharmony_ci        0x9b, 0xc2, 0xb3, 0xbc, 0xa9, 0xcf, 0x41, 0x13
85e1051a39Sopenharmony_ci    }, {
86e1051a39Sopenharmony_ci        0xaa, 0x3b, 0x47, 0x49, 0xd5, 0x5b, 0x9d, 0xaf, 0x1e, 0x5b, 0x00, 0x28,
87e1051a39Sopenharmony_ci        0x88, 0x26, 0xc4, 0x67, 0x27, 0x4c, 0xe3, 0xeb, 0xbd, 0xd5, 0xc1, 0x7b,
88e1051a39Sopenharmony_ci        0x97, 0x5e, 0x09, 0xd4, 0xaf, 0x6c, 0x67, 0xcf, 0x10, 0xd0, 0x87, 0x20,
89e1051a39Sopenharmony_ci        0x2d, 0xb8, 0x82, 0x86, 0xe2, 0xb7, 0x9f, 0xce, 0xea, 0x3e, 0xc3, 0x53,
90e1051a39Sopenharmony_ci        0xef, 0x54, 0xfa, 0xa2, 0x6e, 0x21, 0x9f, 0x38
91e1051a39Sopenharmony_ci    }, {
92e1051a39Sopenharmony_ci        0x07, 0x7f, 0x45, 0x36, 0x81, 0xca, 0xca, 0x36, 0x93, 0x19, 0x84, 0x20,
93e1051a39Sopenharmony_ci        0xbb, 0xe5, 0x15, 0xca, 0xe0, 0x00, 0x24, 0x72, 0x51, 0x9b, 0x3e, 0x67,
94e1051a39Sopenharmony_ci        0x66, 0x1a, 0x7e, 0x89, 0xca, 0xb9, 0x46, 0x95, 0xc8, 0xf4, 0xbc, 0xd6,
95e1051a39Sopenharmony_ci        0x6e, 0x61, 0xb9, 0xb9, 0xc9, 0x46, 0xda, 0x8d, 0x52, 0x4d, 0xe3, 0xd6,
96e1051a39Sopenharmony_ci        0x9b, 0xd9, 0xd9, 0xd6, 0x6b, 0x99, 0x7e, 0x37
97e1051a39Sopenharmony_ci    }
98e1051a39Sopenharmony_ci};
99e1051a39Sopenharmony_ci
100e1051a39Sopenharmony_ci/* Test vectors from RFC8032 for Ed448 */
101e1051a39Sopenharmony_ci
102e1051a39Sopenharmony_ci/* Pure Ed448 */
103e1051a39Sopenharmony_ci
104e1051a39Sopenharmony_cistatic const uint8_t privkey1[57] = {
105e1051a39Sopenharmony_ci    0x6c, 0x82, 0xa5, 0x62, 0xcb, 0x80, 0x8d, 0x10, 0xd6, 0x32, 0xbe, 0x89,
106e1051a39Sopenharmony_ci    0xc8, 0x51, 0x3e, 0xbf, 0x6c, 0x92, 0x9f, 0x34, 0xdd, 0xfa, 0x8c, 0x9f,
107e1051a39Sopenharmony_ci    0x63, 0xc9, 0x96, 0x0e, 0xf6, 0xe3, 0x48, 0xa3, 0x52, 0x8c, 0x8a, 0x3f,
108e1051a39Sopenharmony_ci    0xcc, 0x2f, 0x04, 0x4e, 0x39, 0xa3, 0xfc, 0x5b, 0x94, 0x49, 0x2f, 0x8f,
109e1051a39Sopenharmony_ci    0x03, 0x2e, 0x75, 0x49, 0xa2, 0x00, 0x98, 0xf9, 0x5b
110e1051a39Sopenharmony_ci};
111e1051a39Sopenharmony_ci
112e1051a39Sopenharmony_cistatic const uint8_t pubkey1[57] = {
113e1051a39Sopenharmony_ci    0x5f, 0xd7, 0x44, 0x9b, 0x59, 0xb4, 0x61, 0xfd, 0x2c, 0xe7, 0x87, 0xec,
114e1051a39Sopenharmony_ci    0x61, 0x6a, 0xd4, 0x6a, 0x1d, 0xa1, 0x34, 0x24, 0x85, 0xa7, 0x0e, 0x1f,
115e1051a39Sopenharmony_ci    0x8a, 0x0e, 0xa7, 0x5d, 0x80, 0xe9, 0x67, 0x78, 0xed, 0xf1, 0x24, 0x76,
116e1051a39Sopenharmony_ci    0x9b, 0x46, 0xc7, 0x06, 0x1b, 0xd6, 0x78, 0x3d, 0xf1, 0xe5, 0x0f, 0x6c,
117e1051a39Sopenharmony_ci    0xd1, 0xfa, 0x1a, 0xbe, 0xaf, 0xe8, 0x25, 0x61, 0x80
118e1051a39Sopenharmony_ci};
119e1051a39Sopenharmony_ci
120e1051a39Sopenharmony_cistatic const uint8_t sig1[114] = {
121e1051a39Sopenharmony_ci    0x53, 0x3a, 0x37, 0xf6, 0xbb, 0xe4, 0x57, 0x25, 0x1f, 0x02, 0x3c, 0x0d,
122e1051a39Sopenharmony_ci    0x88, 0xf9, 0x76, 0xae, 0x2d, 0xfb, 0x50, 0x4a, 0x84, 0x3e, 0x34, 0xd2,
123e1051a39Sopenharmony_ci    0x07, 0x4f, 0xd8, 0x23, 0xd4, 0x1a, 0x59, 0x1f, 0x2b, 0x23, 0x3f, 0x03,
124e1051a39Sopenharmony_ci    0x4f, 0x62, 0x82, 0x81, 0xf2, 0xfd, 0x7a, 0x22, 0xdd, 0xd4, 0x7d, 0x78,
125e1051a39Sopenharmony_ci    0x28, 0xc5, 0x9b, 0xd0, 0xa2, 0x1b, 0xfd, 0x39, 0x80, 0xff, 0x0d, 0x20,
126e1051a39Sopenharmony_ci    0x28, 0xd4, 0xb1, 0x8a, 0x9d, 0xf6, 0x3e, 0x00, 0x6c, 0x5d, 0x1c, 0x2d,
127e1051a39Sopenharmony_ci    0x34, 0x5b, 0x92, 0x5d, 0x8d, 0xc0, 0x0b, 0x41, 0x04, 0x85, 0x2d, 0xb9,
128e1051a39Sopenharmony_ci    0x9a, 0xc5, 0xc7, 0xcd, 0xda, 0x85, 0x30, 0xa1, 0x13, 0xa0, 0xf4, 0xdb,
129e1051a39Sopenharmony_ci    0xb6, 0x11, 0x49, 0xf0, 0x5a, 0x73, 0x63, 0x26, 0x8c, 0x71, 0xd9, 0x58,
130e1051a39Sopenharmony_ci    0x08, 0xff, 0x2e, 0x65, 0x26, 0x00
131e1051a39Sopenharmony_ci};
132e1051a39Sopenharmony_ci
133e1051a39Sopenharmony_cistatic const uint8_t privkey2[57] = {
134e1051a39Sopenharmony_ci    0xc4, 0xea, 0xb0, 0x5d, 0x35, 0x70, 0x07, 0xc6, 0x32, 0xf3, 0xdb, 0xb4,
135e1051a39Sopenharmony_ci    0x84, 0x89, 0x92, 0x4d, 0x55, 0x2b, 0x08, 0xfe, 0x0c, 0x35, 0x3a, 0x0d,
136e1051a39Sopenharmony_ci    0x4a, 0x1f, 0x00, 0xac, 0xda, 0x2c, 0x46, 0x3a, 0xfb, 0xea, 0x67, 0xc5,
137e1051a39Sopenharmony_ci    0xe8, 0xd2, 0x87, 0x7c, 0x5e, 0x3b, 0xc3, 0x97, 0xa6, 0x59, 0x94, 0x9e,
138e1051a39Sopenharmony_ci    0xf8, 0x02, 0x1e, 0x95, 0x4e, 0x0a, 0x12, 0x27, 0x4e
139e1051a39Sopenharmony_ci};
140e1051a39Sopenharmony_ci
141e1051a39Sopenharmony_cistatic const uint8_t pubkey2[57] = {
142e1051a39Sopenharmony_ci    0x43, 0xba, 0x28, 0xf4, 0x30, 0xcd, 0xff, 0x45, 0x6a, 0xe5, 0x31, 0x54,
143e1051a39Sopenharmony_ci    0x5f, 0x7e, 0xcd, 0x0a, 0xc8, 0x34, 0xa5, 0x5d, 0x93, 0x58, 0xc0, 0x37,
144e1051a39Sopenharmony_ci    0x2b, 0xfa, 0x0c, 0x6c, 0x67, 0x98, 0xc0, 0x86, 0x6a, 0xea, 0x01, 0xeb,
145e1051a39Sopenharmony_ci    0x00, 0x74, 0x28, 0x02, 0xb8, 0x43, 0x8e, 0xa4, 0xcb, 0x82, 0x16, 0x9c,
146e1051a39Sopenharmony_ci    0x23, 0x51, 0x60, 0x62, 0x7b, 0x4c, 0x3a, 0x94, 0x80
147e1051a39Sopenharmony_ci};
148e1051a39Sopenharmony_ci
149e1051a39Sopenharmony_cistatic const uint8_t msg2[1] = {
150e1051a39Sopenharmony_ci    0x03
151e1051a39Sopenharmony_ci};
152e1051a39Sopenharmony_ci
153e1051a39Sopenharmony_cistatic const uint8_t sig2[114] = {
154e1051a39Sopenharmony_ci    0x26, 0xb8, 0xf9, 0x17, 0x27, 0xbd, 0x62, 0x89, 0x7a, 0xf1, 0x5e, 0x41,
155e1051a39Sopenharmony_ci    0xeb, 0x43, 0xc3, 0x77, 0xef, 0xb9, 0xc6, 0x10, 0xd4, 0x8f, 0x23, 0x35,
156e1051a39Sopenharmony_ci    0xcb, 0x0b, 0xd0, 0x08, 0x78, 0x10, 0xf4, 0x35, 0x25, 0x41, 0xb1, 0x43,
157e1051a39Sopenharmony_ci    0xc4, 0xb9, 0x81, 0xb7, 0xe1, 0x8f, 0x62, 0xde, 0x8c, 0xcd, 0xf6, 0x33,
158e1051a39Sopenharmony_ci    0xfc, 0x1b, 0xf0, 0x37, 0xab, 0x7c, 0xd7, 0x79, 0x80, 0x5e, 0x0d, 0xbc,
159e1051a39Sopenharmony_ci    0xc0, 0xaa, 0xe1, 0xcb, 0xce, 0xe1, 0xaf, 0xb2, 0xe0, 0x27, 0xdf, 0x36,
160e1051a39Sopenharmony_ci    0xbc, 0x04, 0xdc, 0xec, 0xbf, 0x15, 0x43, 0x36, 0xc1, 0x9f, 0x0a, 0xf7,
161e1051a39Sopenharmony_ci    0xe0, 0xa6, 0x47, 0x29, 0x05, 0xe7, 0x99, 0xf1, 0x95, 0x3d, 0x2a, 0x0f,
162e1051a39Sopenharmony_ci    0xf3, 0x34, 0x8a, 0xb2, 0x1a, 0xa4, 0xad, 0xaf, 0xd1, 0xd2, 0x34, 0x44,
163e1051a39Sopenharmony_ci    0x1c, 0xf8, 0x07, 0xc0, 0x3a, 0x00
164e1051a39Sopenharmony_ci};
165e1051a39Sopenharmony_ci
166e1051a39Sopenharmony_cistatic const uint8_t privkey3[57] = {
167e1051a39Sopenharmony_ci    0xc4, 0xea, 0xb0, 0x5d, 0x35, 0x70, 0x07, 0xc6, 0x32, 0xf3, 0xdb, 0xb4,
168e1051a39Sopenharmony_ci    0x84, 0x89, 0x92, 0x4d, 0x55, 0x2b, 0x08, 0xfe, 0x0c, 0x35, 0x3a, 0x0d,
169e1051a39Sopenharmony_ci    0x4a, 0x1f, 0x00, 0xac, 0xda, 0x2c, 0x46, 0x3a, 0xfb, 0xea, 0x67, 0xc5,
170e1051a39Sopenharmony_ci    0xe8, 0xd2, 0x87, 0x7c, 0x5e, 0x3b, 0xc3, 0x97, 0xa6, 0x59, 0x94, 0x9e,
171e1051a39Sopenharmony_ci    0xf8, 0x02, 0x1e, 0x95, 0x4e, 0x0a, 0x12, 0x27, 0x4e
172e1051a39Sopenharmony_ci};
173e1051a39Sopenharmony_ci
174e1051a39Sopenharmony_cistatic const uint8_t pubkey3[57] = {
175e1051a39Sopenharmony_ci    0x43, 0xba, 0x28, 0xf4, 0x30, 0xcd, 0xff, 0x45, 0x6a, 0xe5, 0x31, 0x54,
176e1051a39Sopenharmony_ci    0x5f, 0x7e, 0xcd, 0x0a, 0xc8, 0x34, 0xa5, 0x5d, 0x93, 0x58, 0xc0, 0x37,
177e1051a39Sopenharmony_ci    0x2b, 0xfa, 0x0c, 0x6c, 0x67, 0x98, 0xc0, 0x86, 0x6a, 0xea, 0x01, 0xeb,
178e1051a39Sopenharmony_ci    0x00, 0x74, 0x28, 0x02, 0xb8, 0x43, 0x8e, 0xa4, 0xcb, 0x82, 0x16, 0x9c,
179e1051a39Sopenharmony_ci    0x23, 0x51, 0x60, 0x62, 0x7b, 0x4c, 0x3a, 0x94, 0x80
180e1051a39Sopenharmony_ci};
181e1051a39Sopenharmony_ci
182e1051a39Sopenharmony_cistatic const uint8_t msg3[1] = {
183e1051a39Sopenharmony_ci    0x03
184e1051a39Sopenharmony_ci};
185e1051a39Sopenharmony_ci
186e1051a39Sopenharmony_cistatic const uint8_t context3[3] = {
187e1051a39Sopenharmony_ci    0x66, 0x6f, 0x6f
188e1051a39Sopenharmony_ci};
189e1051a39Sopenharmony_ci
190e1051a39Sopenharmony_cistatic const uint8_t sig3[114] = {
191e1051a39Sopenharmony_ci    0xd4, 0xf8, 0xf6, 0x13, 0x17, 0x70, 0xdd, 0x46, 0xf4, 0x08, 0x67, 0xd6,
192e1051a39Sopenharmony_ci    0xfd, 0x5d, 0x50, 0x55, 0xde, 0x43, 0x54, 0x1f, 0x8c, 0x5e, 0x35, 0xab,
193e1051a39Sopenharmony_ci    0xbc, 0xd0, 0x01, 0xb3, 0x2a, 0x89, 0xf7, 0xd2, 0x15, 0x1f, 0x76, 0x47,
194e1051a39Sopenharmony_ci    0xf1, 0x1d, 0x8c, 0xa2, 0xae, 0x27, 0x9f, 0xb8, 0x42, 0xd6, 0x07, 0x21,
195e1051a39Sopenharmony_ci    0x7f, 0xce, 0x6e, 0x04, 0x2f, 0x68, 0x15, 0xea, 0x00, 0x0c, 0x85, 0x74,
196e1051a39Sopenharmony_ci    0x1d, 0xe5, 0xc8, 0xda, 0x11, 0x44, 0xa6, 0xa1, 0xab, 0xa7, 0xf9, 0x6d,
197e1051a39Sopenharmony_ci    0xe4, 0x25, 0x05, 0xd7, 0xa7, 0x29, 0x85, 0x24, 0xfd, 0xa5, 0x38, 0xfc,
198e1051a39Sopenharmony_ci    0xcb, 0xbb, 0x75, 0x4f, 0x57, 0x8c, 0x1c, 0xad, 0x10, 0xd5, 0x4d, 0x0d,
199e1051a39Sopenharmony_ci    0x54, 0x28, 0x40, 0x7e, 0x85, 0xdc, 0xbc, 0x98, 0xa4, 0x91, 0x55, 0xc1,
200e1051a39Sopenharmony_ci    0x37, 0x64, 0xe6, 0x6c, 0x3c, 0x00
201e1051a39Sopenharmony_ci};
202e1051a39Sopenharmony_ci
203e1051a39Sopenharmony_cistatic const uint8_t privkey4[57] = {
204e1051a39Sopenharmony_ci    0xcd, 0x23, 0xd2, 0x4f, 0x71, 0x42, 0x74, 0xe7, 0x44, 0x34, 0x32, 0x37,
205e1051a39Sopenharmony_ci    0xb9, 0x32, 0x90, 0xf5, 0x11, 0xf6, 0x42, 0x5f, 0x98, 0xe6, 0x44, 0x59,
206e1051a39Sopenharmony_ci    0xff, 0x20, 0x3e, 0x89, 0x85, 0x08, 0x3f, 0xfd, 0xf6, 0x05, 0x00, 0x55,
207e1051a39Sopenharmony_ci    0x3a, 0xbc, 0x0e, 0x05, 0xcd, 0x02, 0x18, 0x4b, 0xdb, 0x89, 0xc4, 0xcc,
208e1051a39Sopenharmony_ci    0xd6, 0x7e, 0x18, 0x79, 0x51, 0x26, 0x7e, 0xb3, 0x28
209e1051a39Sopenharmony_ci};
210e1051a39Sopenharmony_ci
211e1051a39Sopenharmony_cistatic const uint8_t pubkey4[57] = {
212e1051a39Sopenharmony_ci    0xdc, 0xea, 0x9e, 0x78, 0xf3, 0x5a, 0x1b, 0xf3, 0x49, 0x9a, 0x83, 0x1b,
213e1051a39Sopenharmony_ci    0x10, 0xb8, 0x6c, 0x90, 0xaa, 0xc0, 0x1c, 0xd8, 0x4b, 0x67, 0xa0, 0x10,
214e1051a39Sopenharmony_ci    0x9b, 0x55, 0xa3, 0x6e, 0x93, 0x28, 0xb1, 0xe3, 0x65, 0xfc, 0xe1, 0x61,
215e1051a39Sopenharmony_ci    0xd7, 0x1c, 0xe7, 0x13, 0x1a, 0x54, 0x3e, 0xa4, 0xcb, 0x5f, 0x7e, 0x9f,
216e1051a39Sopenharmony_ci    0x1d, 0x8b, 0x00, 0x69, 0x64, 0x47, 0x00, 0x14, 0x00
217e1051a39Sopenharmony_ci};
218e1051a39Sopenharmony_ci
219e1051a39Sopenharmony_cistatic const uint8_t msg4[11] = {
220e1051a39Sopenharmony_ci    0x0c, 0x3e, 0x54, 0x40, 0x74, 0xec, 0x63, 0xb0, 0x26, 0x5e, 0x0c
221e1051a39Sopenharmony_ci};
222e1051a39Sopenharmony_ci
223e1051a39Sopenharmony_cistatic const uint8_t sig4[114] = {
224e1051a39Sopenharmony_ci    0x1f, 0x0a, 0x88, 0x88, 0xce, 0x25, 0xe8, 0xd4, 0x58, 0xa2, 0x11, 0x30,
225e1051a39Sopenharmony_ci    0x87, 0x9b, 0x84, 0x0a, 0x90, 0x89, 0xd9, 0x99, 0xaa, 0xba, 0x03, 0x9e,
226e1051a39Sopenharmony_ci    0xaf, 0x3e, 0x3a, 0xfa, 0x09, 0x0a, 0x09, 0xd3, 0x89, 0xdb, 0xa8, 0x2c,
227e1051a39Sopenharmony_ci    0x4f, 0xf2, 0xae, 0x8a, 0xc5, 0xcd, 0xfb, 0x7c, 0x55, 0xe9, 0x4d, 0x5d,
228e1051a39Sopenharmony_ci    0x96, 0x1a, 0x29, 0xfe, 0x01, 0x09, 0x94, 0x1e, 0x00, 0xb8, 0xdb, 0xde,
229e1051a39Sopenharmony_ci    0xea, 0x6d, 0x3b, 0x05, 0x10, 0x68, 0xdf, 0x72, 0x54, 0xc0, 0xcd, 0xc1,
230e1051a39Sopenharmony_ci    0x29, 0xcb, 0xe6, 0x2d, 0xb2, 0xdc, 0x95, 0x7d, 0xbb, 0x47, 0xb5, 0x1f,
231e1051a39Sopenharmony_ci    0xd3, 0xf2, 0x13, 0xfb, 0x86, 0x98, 0xf0, 0x64, 0x77, 0x42, 0x50, 0xa5,
232e1051a39Sopenharmony_ci    0x02, 0x89, 0x61, 0xc9, 0xbf, 0x8f, 0xfd, 0x97, 0x3f, 0xe5, 0xd5, 0xc2,
233e1051a39Sopenharmony_ci    0x06, 0x49, 0x2b, 0x14, 0x0e, 0x00
234e1051a39Sopenharmony_ci};
235e1051a39Sopenharmony_ci
236e1051a39Sopenharmony_cistatic const uint8_t privkey5[57] = {
237e1051a39Sopenharmony_ci    0x25, 0x8c, 0xdd, 0x4a, 0xda, 0x32, 0xed, 0x9c, 0x9f, 0xf5, 0x4e, 0x63,
238e1051a39Sopenharmony_ci    0x75, 0x6a, 0xe5, 0x82, 0xfb, 0x8f, 0xab, 0x2a, 0xc7, 0x21, 0xf2, 0xc8,
239e1051a39Sopenharmony_ci    0xe6, 0x76, 0xa7, 0x27, 0x68, 0x51, 0x3d, 0x93, 0x9f, 0x63, 0xdd, 0xdb,
240e1051a39Sopenharmony_ci    0x55, 0x60, 0x91, 0x33, 0xf2, 0x9a, 0xdf, 0x86, 0xec, 0x99, 0x29, 0xdc,
241e1051a39Sopenharmony_ci    0xcb, 0x52, 0xc1, 0xc5, 0xfd, 0x2f, 0xf7, 0xe2, 0x1b
242e1051a39Sopenharmony_ci};
243e1051a39Sopenharmony_ci
244e1051a39Sopenharmony_cistatic const uint8_t pubkey5[57] = {
245e1051a39Sopenharmony_ci    0x3b, 0xa1, 0x6d, 0xa0, 0xc6, 0xf2, 0xcc, 0x1f, 0x30, 0x18, 0x77, 0x40,
246e1051a39Sopenharmony_ci    0x75, 0x6f, 0x5e, 0x79, 0x8d, 0x6b, 0xc5, 0xfc, 0x01, 0x5d, 0x7c, 0x63,
247e1051a39Sopenharmony_ci    0xcc, 0x95, 0x10, 0xee, 0x3f, 0xd4, 0x4a, 0xdc, 0x24, 0xd8, 0xe9, 0x68,
248e1051a39Sopenharmony_ci    0xb6, 0xe4, 0x6e, 0x6f, 0x94, 0xd1, 0x9b, 0x94, 0x53, 0x61, 0x72, 0x6b,
249e1051a39Sopenharmony_ci    0xd7, 0x5e, 0x14, 0x9e, 0xf0, 0x98, 0x17, 0xf5, 0x80
250e1051a39Sopenharmony_ci};
251e1051a39Sopenharmony_ci
252e1051a39Sopenharmony_cistatic const uint8_t msg5[12] = {
253e1051a39Sopenharmony_ci    0x64, 0xa6, 0x5f, 0x3c, 0xde, 0xdc, 0xdd, 0x66, 0x81, 0x1e, 0x29, 0x15
254e1051a39Sopenharmony_ci};
255e1051a39Sopenharmony_ci
256e1051a39Sopenharmony_cistatic const uint8_t sig5[114] = {
257e1051a39Sopenharmony_ci    0x7e, 0xee, 0xab, 0x7c, 0x4e, 0x50, 0xfb, 0x79, 0x9b, 0x41, 0x8e, 0xe5,
258e1051a39Sopenharmony_ci    0xe3, 0x19, 0x7f, 0xf6, 0xbf, 0x15, 0xd4, 0x3a, 0x14, 0xc3, 0x43, 0x89,
259e1051a39Sopenharmony_ci    0xb5, 0x9d, 0xd1, 0xa7, 0xb1, 0xb8, 0x5b, 0x4a, 0xe9, 0x04, 0x38, 0xac,
260e1051a39Sopenharmony_ci    0xa6, 0x34, 0xbe, 0xa4, 0x5e, 0x3a, 0x26, 0x95, 0xf1, 0x27, 0x0f, 0x07,
261e1051a39Sopenharmony_ci    0xfd, 0xcd, 0xf7, 0xc6, 0x2b, 0x8e, 0xfe, 0xaf, 0x00, 0xb4, 0x5c, 0x2c,
262e1051a39Sopenharmony_ci    0x96, 0xba, 0x45, 0x7e, 0xb1, 0xa8, 0xbf, 0x07, 0x5a, 0x3d, 0xb2, 0x8e,
263e1051a39Sopenharmony_ci    0x5c, 0x24, 0xf6, 0xb9, 0x23, 0xed, 0x4a, 0xd7, 0x47, 0xc3, 0xc9, 0xe0,
264e1051a39Sopenharmony_ci    0x3c, 0x70, 0x79, 0xef, 0xb8, 0x7c, 0xb1, 0x10, 0xd3, 0xa9, 0x98, 0x61,
265e1051a39Sopenharmony_ci    0xe7, 0x20, 0x03, 0xcb, 0xae, 0x6d, 0x6b, 0x8b, 0x82, 0x7e, 0x4e, 0x6c,
266e1051a39Sopenharmony_ci    0x14, 0x30, 0x64, 0xff, 0x3c, 0x00
267e1051a39Sopenharmony_ci};
268e1051a39Sopenharmony_ci
269e1051a39Sopenharmony_cistatic const uint8_t privkey6[57] = {
270e1051a39Sopenharmony_ci    0x7e, 0xf4, 0xe8, 0x45, 0x44, 0x23, 0x67, 0x52, 0xfb, 0xb5, 0x6b, 0x8f,
271e1051a39Sopenharmony_ci    0x31, 0xa2, 0x3a, 0x10, 0xe4, 0x28, 0x14, 0xf5, 0xf5, 0x5c, 0xa0, 0x37,
272e1051a39Sopenharmony_ci    0xcd, 0xcc, 0x11, 0xc6, 0x4c, 0x9a, 0x3b, 0x29, 0x49, 0xc1, 0xbb, 0x60,
273e1051a39Sopenharmony_ci    0x70, 0x03, 0x14, 0x61, 0x17, 0x32, 0xa6, 0xc2, 0xfe, 0xa9, 0x8e, 0xeb,
274e1051a39Sopenharmony_ci    0xc0, 0x26, 0x6a, 0x11, 0xa9, 0x39, 0x70, 0x10, 0x0e
275e1051a39Sopenharmony_ci};
276e1051a39Sopenharmony_ci
277e1051a39Sopenharmony_cistatic const uint8_t pubkey6[57] = {
278e1051a39Sopenharmony_ci    0xb3, 0xda, 0x07, 0x9b, 0x0a, 0xa4, 0x93, 0xa5, 0x77, 0x20, 0x29, 0xf0,
279e1051a39Sopenharmony_ci    0x46, 0x7b, 0xae, 0xbe, 0xe5, 0xa8, 0x11, 0x2d, 0x9d, 0x3a, 0x22, 0x53,
280e1051a39Sopenharmony_ci    0x23, 0x61, 0xda, 0x29, 0x4f, 0x7b, 0xb3, 0x81, 0x5c, 0x5d, 0xc5, 0x9e,
281e1051a39Sopenharmony_ci    0x17, 0x6b, 0x4d, 0x9f, 0x38, 0x1c, 0xa0, 0x93, 0x8e, 0x13, 0xc6, 0xc0,
282e1051a39Sopenharmony_ci    0x7b, 0x17, 0x4b, 0xe6, 0x5d, 0xfa, 0x57, 0x8e, 0x80
283e1051a39Sopenharmony_ci};
284e1051a39Sopenharmony_ci
285e1051a39Sopenharmony_cistatic const uint8_t msg6[13] = {
286e1051a39Sopenharmony_ci    0x64, 0xa6, 0x5f, 0x3c, 0xde, 0xdc, 0xdd, 0x66, 0x81, 0x1e, 0x29, 0x15,
287e1051a39Sopenharmony_ci    0xe7
288e1051a39Sopenharmony_ci};
289e1051a39Sopenharmony_ci
290e1051a39Sopenharmony_cistatic const uint8_t sig6[114] = {
291e1051a39Sopenharmony_ci    0x6a, 0x12, 0x06, 0x6f, 0x55, 0x33, 0x1b, 0x6c, 0x22, 0xac, 0xd5, 0xd5,
292e1051a39Sopenharmony_ci    0xbf, 0xc5, 0xd7, 0x12, 0x28, 0xfb, 0xda, 0x80, 0xae, 0x8d, 0xec, 0x26,
293e1051a39Sopenharmony_ci    0xbd, 0xd3, 0x06, 0x74, 0x3c, 0x50, 0x27, 0xcb, 0x48, 0x90, 0x81, 0x0c,
294e1051a39Sopenharmony_ci    0x16, 0x2c, 0x02, 0x74, 0x68, 0x67, 0x5e, 0xcf, 0x64, 0x5a, 0x83, 0x17,
295e1051a39Sopenharmony_ci    0x6c, 0x0d, 0x73, 0x23, 0xa2, 0xcc, 0xde, 0x2d, 0x80, 0xef, 0xe5, 0xa1,
296e1051a39Sopenharmony_ci    0x26, 0x8e, 0x8a, 0xca, 0x1d, 0x6f, 0xbc, 0x19, 0x4d, 0x3f, 0x77, 0xc4,
297e1051a39Sopenharmony_ci    0x49, 0x86, 0xeb, 0x4a, 0xb4, 0x17, 0x79, 0x19, 0xad, 0x8b, 0xec, 0x33,
298e1051a39Sopenharmony_ci    0xeb, 0x47, 0xbb, 0xb5, 0xfc, 0x6e, 0x28, 0x19, 0x6f, 0xd1, 0xca, 0xf5,
299e1051a39Sopenharmony_ci    0x6b, 0x4e, 0x7e, 0x0b, 0xa5, 0x51, 0x92, 0x34, 0xd0, 0x47, 0x15, 0x5a,
300e1051a39Sopenharmony_ci    0xc7, 0x27, 0xa1, 0x05, 0x31, 0x00
301e1051a39Sopenharmony_ci};
302e1051a39Sopenharmony_ci
303e1051a39Sopenharmony_cistatic const uint8_t privkey7[57] = {
304e1051a39Sopenharmony_ci    0xd6, 0x5d, 0xf3, 0x41, 0xad, 0x13, 0xe0, 0x08, 0x56, 0x76, 0x88, 0xba,
305e1051a39Sopenharmony_ci    0xed, 0xda, 0x8e, 0x9d, 0xcd, 0xc1, 0x7d, 0xc0, 0x24, 0x97, 0x4e, 0xa5,
306e1051a39Sopenharmony_ci    0xb4, 0x22, 0x7b, 0x65, 0x30, 0xe3, 0x39, 0xbf, 0xf2, 0x1f, 0x99, 0xe6,
307e1051a39Sopenharmony_ci    0x8c, 0xa6, 0x96, 0x8f, 0x3c, 0xca, 0x6d, 0xfe, 0x0f, 0xb9, 0xf4, 0xfa,
308e1051a39Sopenharmony_ci    0xb4, 0xfa, 0x13, 0x5d, 0x55, 0x42, 0xea, 0x3f, 0x01
309e1051a39Sopenharmony_ci};
310e1051a39Sopenharmony_ci
311e1051a39Sopenharmony_cistatic const uint8_t pubkey7[57] = {
312e1051a39Sopenharmony_ci    0xdf, 0x97, 0x05, 0xf5, 0x8e, 0xdb, 0xab, 0x80, 0x2c, 0x7f, 0x83, 0x63,
313e1051a39Sopenharmony_ci    0xcf, 0xe5, 0x56, 0x0a, 0xb1, 0xc6, 0x13, 0x2c, 0x20, 0xa9, 0xf1, 0xdd,
314e1051a39Sopenharmony_ci    0x16, 0x34, 0x83, 0xa2, 0x6f, 0x8a, 0xc5, 0x3a, 0x39, 0xd6, 0x80, 0x8b,
315e1051a39Sopenharmony_ci    0xf4, 0xa1, 0xdf, 0xbd, 0x26, 0x1b, 0x09, 0x9b, 0xb0, 0x3b, 0x3f, 0xb5,
316e1051a39Sopenharmony_ci    0x09, 0x06, 0xcb, 0x28, 0xbd, 0x8a, 0x08, 0x1f, 0x00
317e1051a39Sopenharmony_ci};
318e1051a39Sopenharmony_ci
319e1051a39Sopenharmony_cistatic const uint8_t msg7[64] = {
320e1051a39Sopenharmony_ci    0xbd, 0x0f, 0x6a, 0x37, 0x47, 0xcd, 0x56, 0x1b, 0xdd, 0xdf, 0x46, 0x40,
321e1051a39Sopenharmony_ci    0xa3, 0x32, 0x46, 0x1a, 0x4a, 0x30, 0xa1, 0x2a, 0x43, 0x4c, 0xd0, 0xbf,
322e1051a39Sopenharmony_ci    0x40, 0xd7, 0x66, 0xd9, 0xc6, 0xd4, 0x58, 0xe5, 0x51, 0x22, 0x04, 0xa3,
323e1051a39Sopenharmony_ci    0x0c, 0x17, 0xd1, 0xf5, 0x0b, 0x50, 0x79, 0x63, 0x1f, 0x64, 0xeb, 0x31,
324e1051a39Sopenharmony_ci    0x12, 0x18, 0x2d, 0xa3, 0x00, 0x58, 0x35, 0x46, 0x11, 0x13, 0x71, 0x8d,
325e1051a39Sopenharmony_ci    0x1a, 0x5e, 0xf9, 0x44
326e1051a39Sopenharmony_ci};
327e1051a39Sopenharmony_ci
328e1051a39Sopenharmony_cistatic const uint8_t sig7[114] = {
329e1051a39Sopenharmony_ci    0x55, 0x4b, 0xc2, 0x48, 0x08, 0x60, 0xb4, 0x9e, 0xab, 0x85, 0x32, 0xd2,
330e1051a39Sopenharmony_ci    0xa5, 0x33, 0xb7, 0xd5, 0x78, 0xef, 0x47, 0x3e, 0xeb, 0x58, 0xc9, 0x8b,
331e1051a39Sopenharmony_ci    0xb2, 0xd0, 0xe1, 0xce, 0x48, 0x8a, 0x98, 0xb1, 0x8d, 0xfd, 0xe9, 0xb9,
332e1051a39Sopenharmony_ci    0xb9, 0x07, 0x75, 0xe6, 0x7f, 0x47, 0xd4, 0xa1, 0xc3, 0x48, 0x20, 0x58,
333e1051a39Sopenharmony_ci    0xef, 0xc9, 0xf4, 0x0d, 0x2c, 0xa0, 0x33, 0xa0, 0x80, 0x1b, 0x63, 0xd4,
334e1051a39Sopenharmony_ci    0x5b, 0x3b, 0x72, 0x2e, 0xf5, 0x52, 0xba, 0xd3, 0xb4, 0xcc, 0xb6, 0x67,
335e1051a39Sopenharmony_ci    0xda, 0x35, 0x01, 0x92, 0xb6, 0x1c, 0x50, 0x8c, 0xf7, 0xb6, 0xb5, 0xad,
336e1051a39Sopenharmony_ci    0xad, 0xc2, 0xc8, 0xd9, 0xa4, 0x46, 0xef, 0x00, 0x3f, 0xb0, 0x5c, 0xba,
337e1051a39Sopenharmony_ci    0x5f, 0x30, 0xe8, 0x8e, 0x36, 0xec, 0x27, 0x03, 0xb3, 0x49, 0xca, 0x22,
338e1051a39Sopenharmony_ci    0x9c, 0x26, 0x70, 0x83, 0x39, 0x00
339e1051a39Sopenharmony_ci};
340e1051a39Sopenharmony_ci
341e1051a39Sopenharmony_cistatic const uint8_t privkey8[57] = {
342e1051a39Sopenharmony_ci    0x2e, 0xc5, 0xfe, 0x3c, 0x17, 0x04, 0x5a, 0xbd, 0xb1, 0x36, 0xa5, 0xe6,
343e1051a39Sopenharmony_ci    0xa9, 0x13, 0xe3, 0x2a, 0xb7, 0x5a, 0xe6, 0x8b, 0x53, 0xd2, 0xfc, 0x14,
344e1051a39Sopenharmony_ci    0x9b, 0x77, 0xe5, 0x04, 0x13, 0x2d, 0x37, 0x56, 0x9b, 0x7e, 0x76, 0x6b,
345e1051a39Sopenharmony_ci    0xa7, 0x4a, 0x19, 0xbd, 0x61, 0x62, 0x34, 0x3a, 0x21, 0xc8, 0x59, 0x0a,
346e1051a39Sopenharmony_ci    0xa9, 0xce, 0xbc, 0xa9, 0x01, 0x4c, 0x63, 0x6d, 0xf5
347e1051a39Sopenharmony_ci};
348e1051a39Sopenharmony_ci
349e1051a39Sopenharmony_cistatic const uint8_t pubkey8[57] = {
350e1051a39Sopenharmony_ci    0x79, 0x75, 0x6f, 0x01, 0x4d, 0xcf, 0xe2, 0x07, 0x9f, 0x5d, 0xd9, 0xe7,
351e1051a39Sopenharmony_ci    0x18, 0xbe, 0x41, 0x71, 0xe2, 0xef, 0x24, 0x86, 0xa0, 0x8f, 0x25, 0x18,
352e1051a39Sopenharmony_ci    0x6f, 0x6b, 0xff, 0x43, 0xa9, 0x93, 0x6b, 0x9b, 0xfe, 0x12, 0x40, 0x2b,
353e1051a39Sopenharmony_ci    0x08, 0xae, 0x65, 0x79, 0x8a, 0x3d, 0x81, 0xe2, 0x2e, 0x9e, 0xc8, 0x0e,
354e1051a39Sopenharmony_ci    0x76, 0x90, 0x86, 0x2e, 0xf3, 0xd4, 0xed, 0x3a, 0x00
355e1051a39Sopenharmony_ci};
356e1051a39Sopenharmony_ci
357e1051a39Sopenharmony_cistatic const uint8_t msg8[256] = {
358e1051a39Sopenharmony_ci    0x15, 0x77, 0x75, 0x32, 0xb0, 0xbd, 0xd0, 0xd1, 0x38, 0x9f, 0x63, 0x6c,
359e1051a39Sopenharmony_ci    0x5f, 0x6b, 0x9b, 0xa7, 0x34, 0xc9, 0x0a, 0xf5, 0x72, 0x87, 0x7e, 0x2d,
360e1051a39Sopenharmony_ci    0x27, 0x2d, 0xd0, 0x78, 0xaa, 0x1e, 0x56, 0x7c, 0xfa, 0x80, 0xe1, 0x29,
361e1051a39Sopenharmony_ci    0x28, 0xbb, 0x54, 0x23, 0x30, 0xe8, 0x40, 0x9f, 0x31, 0x74, 0x50, 0x41,
362e1051a39Sopenharmony_ci    0x07, 0xec, 0xd5, 0xef, 0xac, 0x61, 0xae, 0x75, 0x04, 0xda, 0xbe, 0x2a,
363e1051a39Sopenharmony_ci    0x60, 0x2e, 0xde, 0x89, 0xe5, 0xcc, 0xa6, 0x25, 0x7a, 0x7c, 0x77, 0xe2,
364e1051a39Sopenharmony_ci    0x7a, 0x70, 0x2b, 0x3a, 0xe3, 0x9f, 0xc7, 0x69, 0xfc, 0x54, 0xf2, 0x39,
365e1051a39Sopenharmony_ci    0x5a, 0xe6, 0xa1, 0x17, 0x8c, 0xab, 0x47, 0x38, 0xe5, 0x43, 0x07, 0x2f,
366e1051a39Sopenharmony_ci    0xc1, 0xc1, 0x77, 0xfe, 0x71, 0xe9, 0x2e, 0x25, 0xbf, 0x03, 0xe4, 0xec,
367e1051a39Sopenharmony_ci    0xb7, 0x2f, 0x47, 0xb6, 0x4d, 0x04, 0x65, 0xaa, 0xea, 0x4c, 0x7f, 0xad,
368e1051a39Sopenharmony_ci    0x37, 0x25, 0x36, 0xc8, 0xba, 0x51, 0x6a, 0x60, 0x39, 0xc3, 0xc2, 0xa3,
369e1051a39Sopenharmony_ci    0x9f, 0x0e, 0x4d, 0x83, 0x2b, 0xe4, 0x32, 0xdf, 0xa9, 0xa7, 0x06, 0xa6,
370e1051a39Sopenharmony_ci    0xe5, 0xc7, 0xe1, 0x9f, 0x39, 0x79, 0x64, 0xca, 0x42, 0x58, 0x00, 0x2f,
371e1051a39Sopenharmony_ci    0x7c, 0x05, 0x41, 0xb5, 0x90, 0x31, 0x6d, 0xbc, 0x56, 0x22, 0xb6, 0xb2,
372e1051a39Sopenharmony_ci    0xa6, 0xfe, 0x7a, 0x4a, 0xbf, 0xfd, 0x96, 0x10, 0x5e, 0xca, 0x76, 0xea,
373e1051a39Sopenharmony_ci    0x7b, 0x98, 0x81, 0x6a, 0xf0, 0x74, 0x8c, 0x10, 0xdf, 0x04, 0x8c, 0xe0,
374e1051a39Sopenharmony_ci    0x12, 0xd9, 0x01, 0x01, 0x5a, 0x51, 0xf1, 0x89, 0xf3, 0x88, 0x81, 0x45,
375e1051a39Sopenharmony_ci    0xc0, 0x36, 0x50, 0xaa, 0x23, 0xce, 0x89, 0x4c, 0x3b, 0xd8, 0x89, 0xe0,
376e1051a39Sopenharmony_ci    0x30, 0xd5, 0x65, 0x07, 0x1c, 0x59, 0xf4, 0x09, 0xa9, 0x98, 0x1b, 0x51,
377e1051a39Sopenharmony_ci    0x87, 0x8f, 0xd6, 0xfc, 0x11, 0x06, 0x24, 0xdc, 0xbc, 0xde, 0x0b, 0xf7,
378e1051a39Sopenharmony_ci    0xa6, 0x9c, 0xcc, 0xe3, 0x8f, 0xab, 0xdf, 0x86, 0xf3, 0xbe, 0xf6, 0x04,
379e1051a39Sopenharmony_ci    0x48, 0x19, 0xde, 0x11
380e1051a39Sopenharmony_ci};
381e1051a39Sopenharmony_ci
382e1051a39Sopenharmony_cistatic const uint8_t sig8[114] = {
383e1051a39Sopenharmony_ci    0xc6, 0x50, 0xdd, 0xbb, 0x06, 0x01, 0xc1, 0x9c, 0xa1, 0x14, 0x39, 0xe1,
384e1051a39Sopenharmony_ci    0x64, 0x0d, 0xd9, 0x31, 0xf4, 0x3c, 0x51, 0x8e, 0xa5, 0xbe, 0xa7, 0x0d,
385e1051a39Sopenharmony_ci    0x3d, 0xcd, 0xe5, 0xf4, 0x19, 0x1f, 0xe5, 0x3f, 0x00, 0xcf, 0x96, 0x65,
386e1051a39Sopenharmony_ci    0x46, 0xb7, 0x2b, 0xcc, 0x7d, 0x58, 0xbe, 0x2b, 0x9b, 0xad, 0xef, 0x28,
387e1051a39Sopenharmony_ci    0x74, 0x39, 0x54, 0xe3, 0xa4, 0x4a, 0x23, 0xf8, 0x80, 0xe8, 0xd4, 0xf1,
388e1051a39Sopenharmony_ci    0xcf, 0xce, 0x2d, 0x7a, 0x61, 0x45, 0x2d, 0x26, 0xda, 0x05, 0x89, 0x6f,
389e1051a39Sopenharmony_ci    0x0a, 0x50, 0xda, 0x66, 0xa2, 0x39, 0xa8, 0xa1, 0x88, 0xb6, 0xd8, 0x25,
390e1051a39Sopenharmony_ci    0xb3, 0x30, 0x5a, 0xd7, 0x7b, 0x73, 0xfb, 0xac, 0x08, 0x36, 0xec, 0xc6,
391e1051a39Sopenharmony_ci    0x09, 0x87, 0xfd, 0x08, 0x52, 0x7c, 0x1a, 0x8e, 0x80, 0xd5, 0x82, 0x3e,
392e1051a39Sopenharmony_ci    0x65, 0xca, 0xfe, 0x2a, 0x3d, 0x00
393e1051a39Sopenharmony_ci};
394e1051a39Sopenharmony_ci
395e1051a39Sopenharmony_cistatic const uint8_t privkey9[57] = {
396e1051a39Sopenharmony_ci    0x87, 0x2d, 0x09, 0x37, 0x80, 0xf5, 0xd3, 0x73, 0x0d, 0xf7, 0xc2, 0x12,
397e1051a39Sopenharmony_ci    0x66, 0x4b, 0x37, 0xb8, 0xa0, 0xf2, 0x4f, 0x56, 0x81, 0x0d, 0xaa, 0x83,
398e1051a39Sopenharmony_ci    0x82, 0xcd, 0x4f, 0xa3, 0xf7, 0x76, 0x34, 0xec, 0x44, 0xdc, 0x54, 0xf1,
399e1051a39Sopenharmony_ci    0xc2, 0xed, 0x9b, 0xea, 0x86, 0xfa, 0xfb, 0x76, 0x32, 0xd8, 0xbe, 0x19,
400e1051a39Sopenharmony_ci    0x9e, 0xa1, 0x65, 0xf5, 0xad, 0x55, 0xdd, 0x9c, 0xe8
401e1051a39Sopenharmony_ci};
402e1051a39Sopenharmony_ci
403e1051a39Sopenharmony_cistatic const uint8_t pubkey9[57] = {
404e1051a39Sopenharmony_ci    0xa8, 0x1b, 0x2e, 0x8a, 0x70, 0xa5, 0xac, 0x94, 0xff, 0xdb, 0xcc, 0x9b,
405e1051a39Sopenharmony_ci    0xad, 0xfc, 0x3f, 0xeb, 0x08, 0x01, 0xf2, 0x58, 0x57, 0x8b, 0xb1, 0x14,
406e1051a39Sopenharmony_ci    0xad, 0x44, 0xec, 0xe1, 0xec, 0x0e, 0x79, 0x9d, 0xa0, 0x8e, 0xff, 0xb8,
407e1051a39Sopenharmony_ci    0x1c, 0x5d, 0x68, 0x5c, 0x0c, 0x56, 0xf6, 0x4e, 0xec, 0xae, 0xf8, 0xcd,
408e1051a39Sopenharmony_ci    0xf1, 0x1c, 0xc3, 0x87, 0x37, 0x83, 0x8c, 0xf4, 0x00
409e1051a39Sopenharmony_ci};
410e1051a39Sopenharmony_ci
411e1051a39Sopenharmony_cistatic const uint8_t msg9[1023] = {
412e1051a39Sopenharmony_ci    0x6d, 0xdf, 0x80, 0x2e, 0x1a, 0xae, 0x49, 0x86, 0x93, 0x5f, 0x7f, 0x98,
413e1051a39Sopenharmony_ci    0x1b, 0xa3, 0xf0, 0x35, 0x1d, 0x62, 0x73, 0xc0, 0xa0, 0xc2, 0x2c, 0x9c,
414e1051a39Sopenharmony_ci    0x0e, 0x83, 0x39, 0x16, 0x8e, 0x67, 0x54, 0x12, 0xa3, 0xde, 0xbf, 0xaf,
415e1051a39Sopenharmony_ci    0x43, 0x5e, 0xd6, 0x51, 0x55, 0x80, 0x07, 0xdb, 0x43, 0x84, 0xb6, 0x50,
416e1051a39Sopenharmony_ci    0xfc, 0xc0, 0x7e, 0x3b, 0x58, 0x6a, 0x27, 0xa4, 0xf7, 0xa0, 0x0a, 0xc8,
417e1051a39Sopenharmony_ci    0xa6, 0xfe, 0xc2, 0xcd, 0x86, 0xae, 0x4b, 0xf1, 0x57, 0x0c, 0x41, 0xe6,
418e1051a39Sopenharmony_ci    0xa4, 0x0c, 0x93, 0x1d, 0xb2, 0x7b, 0x2f, 0xaa, 0x15, 0xa8, 0xce, 0xdd,
419e1051a39Sopenharmony_ci    0x52, 0xcf, 0xf7, 0x36, 0x2c, 0x4e, 0x6e, 0x23, 0xda, 0xec, 0x0f, 0xbc,
420e1051a39Sopenharmony_ci    0x3a, 0x79, 0xb6, 0x80, 0x6e, 0x31, 0x6e, 0xfc, 0xc7, 0xb6, 0x81, 0x19,
421e1051a39Sopenharmony_ci    0xbf, 0x46, 0xbc, 0x76, 0xa2, 0x60, 0x67, 0xa5, 0x3f, 0x29, 0x6d, 0xaf,
422e1051a39Sopenharmony_ci    0xdb, 0xdc, 0x11, 0xc7, 0x7f, 0x77, 0x77, 0xe9, 0x72, 0x66, 0x0c, 0xf4,
423e1051a39Sopenharmony_ci    0xb6, 0xa9, 0xb3, 0x69, 0xa6, 0x66, 0x5f, 0x02, 0xe0, 0xcc, 0x9b, 0x6e,
424e1051a39Sopenharmony_ci    0xdf, 0xad, 0x13, 0x6b, 0x4f, 0xab, 0xe7, 0x23, 0xd2, 0x81, 0x3d, 0xb3,
425e1051a39Sopenharmony_ci    0x13, 0x6c, 0xfd, 0xe9, 0xb6, 0xd0, 0x44, 0x32, 0x2f, 0xee, 0x29, 0x47,
426e1051a39Sopenharmony_ci    0x95, 0x2e, 0x03, 0x1b, 0x73, 0xab, 0x5c, 0x60, 0x33, 0x49, 0xb3, 0x07,
427e1051a39Sopenharmony_ci    0xbd, 0xc2, 0x7b, 0xc6, 0xcb, 0x8b, 0x8b, 0xbd, 0x7b, 0xd3, 0x23, 0x21,
428e1051a39Sopenharmony_ci    0x9b, 0x80, 0x33, 0xa5, 0x81, 0xb5, 0x9e, 0xad, 0xeb, 0xb0, 0x9b, 0x3c,
429e1051a39Sopenharmony_ci    0x4f, 0x3d, 0x22, 0x77, 0xd4, 0xf0, 0x34, 0x36, 0x24, 0xac, 0xc8, 0x17,
430e1051a39Sopenharmony_ci    0x80, 0x47, 0x28, 0xb2, 0x5a, 0xb7, 0x97, 0x17, 0x2b, 0x4c, 0x5c, 0x21,
431e1051a39Sopenharmony_ci    0xa2, 0x2f, 0x9c, 0x78, 0x39, 0xd6, 0x43, 0x00, 0x23, 0x2e, 0xb6, 0x6e,
432e1051a39Sopenharmony_ci    0x53, 0xf3, 0x1c, 0x72, 0x3f, 0xa3, 0x7f, 0xe3, 0x87, 0xc7, 0xd3, 0xe5,
433e1051a39Sopenharmony_ci    0x0b, 0xdf, 0x98, 0x13, 0xa3, 0x0e, 0x5b, 0xb1, 0x2c, 0xf4, 0xcd, 0x93,
434e1051a39Sopenharmony_ci    0x0c, 0x40, 0xcf, 0xb4, 0xe1, 0xfc, 0x62, 0x25, 0x92, 0xa4, 0x95, 0x88,
435e1051a39Sopenharmony_ci    0x79, 0x44, 0x94, 0xd5, 0x6d, 0x24, 0xea, 0x4b, 0x40, 0xc8, 0x9f, 0xc0,
436e1051a39Sopenharmony_ci    0x59, 0x6c, 0xc9, 0xeb, 0xb9, 0x61, 0xc8, 0xcb, 0x10, 0xad, 0xde, 0x97,
437e1051a39Sopenharmony_ci    0x6a, 0x5d, 0x60, 0x2b, 0x1c, 0x3f, 0x85, 0xb9, 0xb9, 0xa0, 0x01, 0xed,
438e1051a39Sopenharmony_ci    0x3c, 0x6a, 0x4d, 0x3b, 0x14, 0x37, 0xf5, 0x20, 0x96, 0xcd, 0x19, 0x56,
439e1051a39Sopenharmony_ci    0xd0, 0x42, 0xa5, 0x97, 0xd5, 0x61, 0xa5, 0x96, 0xec, 0xd3, 0xd1, 0x73,
440e1051a39Sopenharmony_ci    0x5a, 0x8d, 0x57, 0x0e, 0xa0, 0xec, 0x27, 0x22, 0x5a, 0x2c, 0x4a, 0xaf,
441e1051a39Sopenharmony_ci    0xf2, 0x63, 0x06, 0xd1, 0x52, 0x6c, 0x1a, 0xf3, 0xca, 0x6d, 0x9c, 0xf5,
442e1051a39Sopenharmony_ci    0xa2, 0xc9, 0x8f, 0x47, 0xe1, 0xc4, 0x6d, 0xb9, 0xa3, 0x32, 0x34, 0xcf,
443e1051a39Sopenharmony_ci    0xd4, 0xd8, 0x1f, 0x2c, 0x98, 0x53, 0x8a, 0x09, 0xeb, 0xe7, 0x69, 0x98,
444e1051a39Sopenharmony_ci    0xd0, 0xd8, 0xfd, 0x25, 0x99, 0x7c, 0x7d, 0x25, 0x5c, 0x6d, 0x66, 0xec,
445e1051a39Sopenharmony_ci    0xe6, 0xfa, 0x56, 0xf1, 0x11, 0x44, 0x95, 0x0f, 0x02, 0x77, 0x95, 0xe6,
446e1051a39Sopenharmony_ci    0x53, 0x00, 0x8f, 0x4b, 0xd7, 0xca, 0x2d, 0xee, 0x85, 0xd8, 0xe9, 0x0f,
447e1051a39Sopenharmony_ci    0x3d, 0xc3, 0x15, 0x13, 0x0c, 0xe2, 0xa0, 0x03, 0x75, 0xa3, 0x18, 0xc7,
448e1051a39Sopenharmony_ci    0xc3, 0xd9, 0x7b, 0xe2, 0xc8, 0xce, 0x5b, 0x6d, 0xb4, 0x1a, 0x62, 0x54,
449e1051a39Sopenharmony_ci    0xff, 0x26, 0x4f, 0xa6, 0x15, 0x5b, 0xae, 0xe3, 0xb0, 0x77, 0x3c, 0x0f,
450e1051a39Sopenharmony_ci    0x49, 0x7c, 0x57, 0x3f, 0x19, 0xbb, 0x4f, 0x42, 0x40, 0x28, 0x1f, 0x0b,
451e1051a39Sopenharmony_ci    0x1f, 0x4f, 0x7b, 0xe8, 0x57, 0xa4, 0xe5, 0x9d, 0x41, 0x6c, 0x06, 0xb4,
452e1051a39Sopenharmony_ci    0xc5, 0x0f, 0xa0, 0x9e, 0x18, 0x10, 0xdd, 0xc6, 0xb1, 0x46, 0x7b, 0xae,
453e1051a39Sopenharmony_ci    0xac, 0x5a, 0x36, 0x68, 0xd1, 0x1b, 0x6e, 0xca, 0xa9, 0x01, 0x44, 0x00,
454e1051a39Sopenharmony_ci    0x16, 0xf3, 0x89, 0xf8, 0x0a, 0xcc, 0x4d, 0xb9, 0x77, 0x02, 0x5e, 0x7f,
455e1051a39Sopenharmony_ci    0x59, 0x24, 0x38, 0x8c, 0x7e, 0x34, 0x0a, 0x73, 0x2e, 0x55, 0x44, 0x40,
456e1051a39Sopenharmony_ci    0xe7, 0x65, 0x70, 0xf8, 0xdd, 0x71, 0xb7, 0xd6, 0x40, 0xb3, 0x45, 0x0d,
457e1051a39Sopenharmony_ci    0x1f, 0xd5, 0xf0, 0x41, 0x0a, 0x18, 0xf9, 0xa3, 0x49, 0x4f, 0x70, 0x7c,
458e1051a39Sopenharmony_ci    0x71, 0x7b, 0x79, 0xb4, 0xbf, 0x75, 0xc9, 0x84, 0x00, 0xb0, 0x96, 0xb2,
459e1051a39Sopenharmony_ci    0x16, 0x53, 0xb5, 0xd2, 0x17, 0xcf, 0x35, 0x65, 0xc9, 0x59, 0x74, 0x56,
460e1051a39Sopenharmony_ci    0xf7, 0x07, 0x03, 0x49, 0x7a, 0x07, 0x87, 0x63, 0x82, 0x9b, 0xc0, 0x1b,
461e1051a39Sopenharmony_ci    0xb1, 0xcb, 0xc8, 0xfa, 0x04, 0xea, 0xdc, 0x9a, 0x6e, 0x3f, 0x66, 0x99,
462e1051a39Sopenharmony_ci    0x58, 0x7a, 0x9e, 0x75, 0xc9, 0x4e, 0x5b, 0xab, 0x00, 0x36, 0xe0, 0xb2,
463e1051a39Sopenharmony_ci    0xe7, 0x11, 0x39, 0x2c, 0xff, 0x00, 0x47, 0xd0, 0xd6, 0xb0, 0x5b, 0xd2,
464e1051a39Sopenharmony_ci    0xa5, 0x88, 0xbc, 0x10, 0x97, 0x18, 0x95, 0x42, 0x59, 0xf1, 0xd8, 0x66,
465e1051a39Sopenharmony_ci    0x78, 0xa5, 0x79, 0xa3, 0x12, 0x0f, 0x19, 0xcf, 0xb2, 0x96, 0x3f, 0x17,
466e1051a39Sopenharmony_ci    0x7a, 0xeb, 0x70, 0xf2, 0xd4, 0x84, 0x48, 0x26, 0x26, 0x2e, 0x51, 0xb8,
467e1051a39Sopenharmony_ci    0x02, 0x71, 0x27, 0x20, 0x68, 0xef, 0x5b, 0x38, 0x56, 0xfa, 0x85, 0x35,
468e1051a39Sopenharmony_ci    0xaa, 0x2a, 0x88, 0xb2, 0xd4, 0x1f, 0x2a, 0x0e, 0x2f, 0xda, 0x76, 0x24,
469e1051a39Sopenharmony_ci    0xc2, 0x85, 0x02, 0x72, 0xac, 0x4a, 0x2f, 0x56, 0x1f, 0x8f, 0x2f, 0x7a,
470e1051a39Sopenharmony_ci    0x31, 0x8b, 0xfd, 0x5c, 0xaf, 0x96, 0x96, 0x14, 0x9e, 0x4a, 0xc8, 0x24,
471e1051a39Sopenharmony_ci    0xad, 0x34, 0x60, 0x53, 0x8f, 0xdc, 0x25, 0x42, 0x1b, 0xee, 0xc2, 0xcc,
472e1051a39Sopenharmony_ci    0x68, 0x18, 0x16, 0x2d, 0x06, 0xbb, 0xed, 0x0c, 0x40, 0xa3, 0x87, 0x19,
473e1051a39Sopenharmony_ci    0x23, 0x49, 0xdb, 0x67, 0xa1, 0x18, 0xba, 0xda, 0x6c, 0xd5, 0xab, 0x01,
474e1051a39Sopenharmony_ci    0x40, 0xee, 0x27, 0x32, 0x04, 0xf6, 0x28, 0xaa, 0xd1, 0xc1, 0x35, 0xf7,
475e1051a39Sopenharmony_ci    0x70, 0x27, 0x9a, 0x65, 0x1e, 0x24, 0xd8, 0xc1, 0x4d, 0x75, 0xa6, 0x05,
476e1051a39Sopenharmony_ci    0x9d, 0x76, 0xb9, 0x6a, 0x6f, 0xd8, 0x57, 0xde, 0xf5, 0xe0, 0xb3, 0x54,
477e1051a39Sopenharmony_ci    0xb2, 0x7a, 0xb9, 0x37, 0xa5, 0x81, 0x5d, 0x16, 0xb5, 0xfa, 0xe4, 0x07,
478e1051a39Sopenharmony_ci    0xff, 0x18, 0x22, 0x2c, 0x6d, 0x1e, 0xd2, 0x63, 0xbe, 0x68, 0xc9, 0x5f,
479e1051a39Sopenharmony_ci    0x32, 0xd9, 0x08, 0xbd, 0x89, 0x5c, 0xd7, 0x62, 0x07, 0xae, 0x72, 0x64,
480e1051a39Sopenharmony_ci    0x87, 0x56, 0x7f, 0x9a, 0x67, 0xda, 0xd7, 0x9a, 0xbe, 0xc3, 0x16, 0xf6,
481e1051a39Sopenharmony_ci    0x83, 0xb1, 0x7f, 0x2d, 0x02, 0xbf, 0x07, 0xe0, 0xac, 0x8b, 0x5b, 0xc6,
482e1051a39Sopenharmony_ci    0x16, 0x2c, 0xf9, 0x46, 0x97, 0xb3, 0xc2, 0x7c, 0xd1, 0xfe, 0xa4, 0x9b,
483e1051a39Sopenharmony_ci    0x27, 0xf2, 0x3b, 0xa2, 0x90, 0x18, 0x71, 0x96, 0x25, 0x06, 0x52, 0x0c,
484e1051a39Sopenharmony_ci    0x39, 0x2d, 0xa8, 0xb6, 0xad, 0x0d, 0x99, 0xf7, 0x01, 0x3f, 0xbc, 0x06,
485e1051a39Sopenharmony_ci    0xc2, 0xc1, 0x7a, 0x56, 0x95, 0x00, 0xc8, 0xa7, 0x69, 0x64, 0x81, 0xc1,
486e1051a39Sopenharmony_ci    0xcd, 0x33, 0xe9, 0xb1, 0x4e, 0x40, 0xb8, 0x2e, 0x79, 0xa5, 0xf5, 0xdb,
487e1051a39Sopenharmony_ci    0x82, 0x57, 0x1b, 0xa9, 0x7b, 0xae, 0x3a, 0xd3, 0xe0, 0x47, 0x95, 0x15,
488e1051a39Sopenharmony_ci    0xbb, 0x0e, 0x2b, 0x0f, 0x3b, 0xfc, 0xd1, 0xfd, 0x33, 0x03, 0x4e, 0xfc,
489e1051a39Sopenharmony_ci    0x62, 0x45, 0xed, 0xdd, 0x7e, 0xe2, 0x08, 0x6d, 0xda, 0xe2, 0x60, 0x0d,
490e1051a39Sopenharmony_ci    0x8c, 0xa7, 0x3e, 0x21, 0x4e, 0x8c, 0x2b, 0x0b, 0xdb, 0x2b, 0x04, 0x7c,
491e1051a39Sopenharmony_ci    0x6a, 0x46, 0x4a, 0x56, 0x2e, 0xd7, 0x7b, 0x73, 0xd2, 0xd8, 0x41, 0xc4,
492e1051a39Sopenharmony_ci    0xb3, 0x49, 0x73, 0x55, 0x12, 0x57, 0x71, 0x3b, 0x75, 0x36, 0x32, 0xef,
493e1051a39Sopenharmony_ci    0xba, 0x34, 0x81, 0x69, 0xab, 0xc9, 0x0a, 0x68, 0xf4, 0x26, 0x11, 0xa4,
494e1051a39Sopenharmony_ci    0x01, 0x26, 0xd7, 0xcb, 0x21, 0xb5, 0x86, 0x95, 0x56, 0x81, 0x86, 0xf7,
495e1051a39Sopenharmony_ci    0xe5, 0x69, 0xd2, 0xff, 0x0f, 0x9e, 0x74, 0x5d, 0x04, 0x87, 0xdd, 0x2e,
496e1051a39Sopenharmony_ci    0xb9, 0x97, 0xca, 0xfc, 0x5a, 0xbf, 0x9d, 0xd1, 0x02, 0xe6, 0x2f, 0xf6,
497e1051a39Sopenharmony_ci    0x6c, 0xba, 0x87
498e1051a39Sopenharmony_ci};
499e1051a39Sopenharmony_ci
500e1051a39Sopenharmony_cistatic const uint8_t sig9[114] = {
501e1051a39Sopenharmony_ci    0xe3, 0x01, 0x34, 0x5a, 0x41, 0xa3, 0x9a, 0x4d, 0x72, 0xff, 0xf8, 0xdf,
502e1051a39Sopenharmony_ci    0x69, 0xc9, 0x80, 0x75, 0xa0, 0xcc, 0x08, 0x2b, 0x80, 0x2f, 0xc9, 0xb2,
503e1051a39Sopenharmony_ci    0xb6, 0xbc, 0x50, 0x3f, 0x92, 0x6b, 0x65, 0xbd, 0xdf, 0x7f, 0x4c, 0x8f,
504e1051a39Sopenharmony_ci    0x1c, 0xb4, 0x9f, 0x63, 0x96, 0xaf, 0xc8, 0xa7, 0x0a, 0xbe, 0x6d, 0x8a,
505e1051a39Sopenharmony_ci    0xef, 0x0d, 0xb4, 0x78, 0xd4, 0xc6, 0xb2, 0x97, 0x00, 0x76, 0xc6, 0xa0,
506e1051a39Sopenharmony_ci    0x48, 0x4f, 0xe7, 0x6d, 0x76, 0xb3, 0xa9, 0x76, 0x25, 0xd7, 0x9f, 0x1c,
507e1051a39Sopenharmony_ci    0xe2, 0x40, 0xe7, 0xc5, 0x76, 0x75, 0x0d, 0x29, 0x55, 0x28, 0x28, 0x6f,
508e1051a39Sopenharmony_ci    0x71, 0x9b, 0x41, 0x3d, 0xe9, 0xad, 0xa3, 0xe8, 0xeb, 0x78, 0xed, 0x57,
509e1051a39Sopenharmony_ci    0x36, 0x03, 0xce, 0x30, 0xd8, 0xbb, 0x76, 0x17, 0x85, 0xdc, 0x30, 0xdb,
510e1051a39Sopenharmony_ci    0xc3, 0x20, 0x86, 0x9e, 0x1a, 0x00
511e1051a39Sopenharmony_ci};
512e1051a39Sopenharmony_ci
513e1051a39Sopenharmony_ci/* Prehash Ed448 */
514e1051a39Sopenharmony_ci
515e1051a39Sopenharmony_cistatic const uint8_t phprivkey1[57] = {
516e1051a39Sopenharmony_ci    0x83, 0x3f, 0xe6, 0x24, 0x09, 0x23, 0x7b, 0x9d, 0x62, 0xec, 0x77, 0x58,
517e1051a39Sopenharmony_ci    0x75, 0x20, 0x91, 0x1e, 0x9a, 0x75, 0x9c, 0xec, 0x1d, 0x19, 0x75, 0x5b,
518e1051a39Sopenharmony_ci    0x7d, 0xa9, 0x01, 0xb9, 0x6d, 0xca, 0x3d, 0x42, 0xef, 0x78, 0x22, 0xe0,
519e1051a39Sopenharmony_ci    0xd5, 0x10, 0x41, 0x27, 0xdc, 0x05, 0xd6, 0xdb, 0xef, 0xde, 0x69, 0xe3,
520e1051a39Sopenharmony_ci    0xab, 0x2c, 0xec, 0x7c, 0x86, 0x7c, 0x6e, 0x2c, 0x49
521e1051a39Sopenharmony_ci};
522e1051a39Sopenharmony_ci
523e1051a39Sopenharmony_cistatic const uint8_t phpubkey1[57] = {
524e1051a39Sopenharmony_ci    0x25, 0x9b, 0x71, 0xc1, 0x9f, 0x83, 0xef, 0x77, 0xa7, 0xab, 0xd2, 0x65,
525e1051a39Sopenharmony_ci    0x24, 0xcb, 0xdb, 0x31, 0x61, 0xb5, 0x90, 0xa4, 0x8f, 0x7d, 0x17, 0xde,
526e1051a39Sopenharmony_ci    0x3e, 0xe0, 0xba, 0x9c, 0x52, 0xbe, 0xb7, 0x43, 0xc0, 0x94, 0x28, 0xa1,
527e1051a39Sopenharmony_ci    0x31, 0xd6, 0xb1, 0xb5, 0x73, 0x03, 0xd9, 0x0d, 0x81, 0x32, 0xc2, 0x76,
528e1051a39Sopenharmony_ci    0xd5, 0xed, 0x3d, 0x5d, 0x01, 0xc0, 0xf5, 0x38, 0x80
529e1051a39Sopenharmony_ci};
530e1051a39Sopenharmony_ci
531e1051a39Sopenharmony_cistatic const uint8_t phmsg1[3] = {
532e1051a39Sopenharmony_ci    0x61, 0x62, 0x63
533e1051a39Sopenharmony_ci};
534e1051a39Sopenharmony_ci
535e1051a39Sopenharmony_cistatic const uint8_t phsig1[114] = {
536e1051a39Sopenharmony_ci    0x82, 0x2f, 0x69, 0x01, 0xf7, 0x48, 0x0f, 0x3d, 0x5f, 0x56, 0x2c, 0x59,
537e1051a39Sopenharmony_ci    0x29, 0x94, 0xd9, 0x69, 0x36, 0x02, 0x87, 0x56, 0x14, 0x48, 0x32, 0x56,
538e1051a39Sopenharmony_ci    0x50, 0x56, 0x00, 0xbb, 0xc2, 0x81, 0xae, 0x38, 0x1f, 0x54, 0xd6, 0xbc,
539e1051a39Sopenharmony_ci    0xe2, 0xea, 0x91, 0x15, 0x74, 0x93, 0x2f, 0x52, 0xa4, 0xe6, 0xca, 0xdd,
540e1051a39Sopenharmony_ci    0x78, 0x76, 0x93, 0x75, 0xec, 0x3f, 0xfd, 0x1b, 0x80, 0x1a, 0x0d, 0x9b,
541e1051a39Sopenharmony_ci    0x3f, 0x40, 0x30, 0xcd, 0x43, 0x39, 0x64, 0xb6, 0x45, 0x7e, 0xa3, 0x94,
542e1051a39Sopenharmony_ci    0x76, 0x51, 0x12, 0x14, 0xf9, 0x74, 0x69, 0xb5, 0x7d, 0xd3, 0x2d, 0xbc,
543e1051a39Sopenharmony_ci    0x56, 0x0a, 0x9a, 0x94, 0xd0, 0x0b, 0xff, 0x07, 0x62, 0x04, 0x64, 0xa3,
544e1051a39Sopenharmony_ci    0xad, 0x20, 0x3d, 0xf7, 0xdc, 0x7c, 0xe3, 0x60, 0xc3, 0xcd, 0x36, 0x96,
545e1051a39Sopenharmony_ci    0xd9, 0xd9, 0xfa, 0xb9, 0x0f, 0x00
546e1051a39Sopenharmony_ci};
547e1051a39Sopenharmony_ci
548e1051a39Sopenharmony_cistatic const uint8_t phprivkey2[57] = {
549e1051a39Sopenharmony_ci    0x83, 0x3f, 0xe6, 0x24, 0x09, 0x23, 0x7b, 0x9d, 0x62, 0xec, 0x77, 0x58,
550e1051a39Sopenharmony_ci    0x75, 0x20, 0x91, 0x1e, 0x9a, 0x75, 0x9c, 0xec, 0x1d, 0x19, 0x75, 0x5b,
551e1051a39Sopenharmony_ci    0x7d, 0xa9, 0x01, 0xb9, 0x6d, 0xca, 0x3d, 0x42, 0xef, 0x78, 0x22, 0xe0,
552e1051a39Sopenharmony_ci    0xd5, 0x10, 0x41, 0x27, 0xdc, 0x05, 0xd6, 0xdb, 0xef, 0xde, 0x69, 0xe3,
553e1051a39Sopenharmony_ci    0xab, 0x2c, 0xec, 0x7c, 0x86, 0x7c, 0x6e, 0x2c, 0x49
554e1051a39Sopenharmony_ci};
555e1051a39Sopenharmony_ci
556e1051a39Sopenharmony_cistatic const uint8_t phpubkey2[57] = {
557e1051a39Sopenharmony_ci    0x25, 0x9b, 0x71, 0xc1, 0x9f, 0x83, 0xef, 0x77, 0xa7, 0xab, 0xd2, 0x65,
558e1051a39Sopenharmony_ci    0x24, 0xcb, 0xdb, 0x31, 0x61, 0xb5, 0x90, 0xa4, 0x8f, 0x7d, 0x17, 0xde,
559e1051a39Sopenharmony_ci    0x3e, 0xe0, 0xba, 0x9c, 0x52, 0xbe, 0xb7, 0x43, 0xc0, 0x94, 0x28, 0xa1,
560e1051a39Sopenharmony_ci    0x31, 0xd6, 0xb1, 0xb5, 0x73, 0x03, 0xd9, 0x0d, 0x81, 0x32, 0xc2, 0x76,
561e1051a39Sopenharmony_ci    0xd5, 0xed, 0x3d, 0x5d, 0x01, 0xc0, 0xf5, 0x38, 0x80
562e1051a39Sopenharmony_ci};
563e1051a39Sopenharmony_ci
564e1051a39Sopenharmony_cistatic const uint8_t phmsg2[3] = {
565e1051a39Sopenharmony_ci    0x61, 0x62, 0x63
566e1051a39Sopenharmony_ci};
567e1051a39Sopenharmony_ci
568e1051a39Sopenharmony_cistatic const uint8_t phcontext2[3] = {
569e1051a39Sopenharmony_ci    0x66, 0x6f, 0x6f
570e1051a39Sopenharmony_ci};
571e1051a39Sopenharmony_ci
572e1051a39Sopenharmony_cistatic const uint8_t phsig2[114] = {
573e1051a39Sopenharmony_ci    0xc3, 0x22, 0x99, 0xd4, 0x6e, 0xc8, 0xff, 0x02, 0xb5, 0x45, 0x40, 0x98,
574e1051a39Sopenharmony_ci    0x28, 0x14, 0xdc, 0xe9, 0xa0, 0x58, 0x12, 0xf8, 0x19, 0x62, 0xb6, 0x49,
575e1051a39Sopenharmony_ci    0xd5, 0x28, 0x09, 0x59, 0x16, 0xa2, 0xaa, 0x48, 0x10, 0x65, 0xb1, 0x58,
576e1051a39Sopenharmony_ci    0x04, 0x23, 0xef, 0x92, 0x7e, 0xcf, 0x0a, 0xf5, 0x88, 0x8f, 0x90, 0xda,
577e1051a39Sopenharmony_ci    0x0f, 0x6a, 0x9a, 0x85, 0xad, 0x5d, 0xc3, 0xf2, 0x80, 0xd9, 0x12, 0x24,
578e1051a39Sopenharmony_ci    0xba, 0x99, 0x11, 0xa3, 0x65, 0x3d, 0x00, 0xe4, 0x84, 0xe2, 0xce, 0x23,
579e1051a39Sopenharmony_ci    0x25, 0x21, 0x48, 0x1c, 0x86, 0x58, 0xdf, 0x30, 0x4b, 0xb7, 0x74, 0x5a,
580e1051a39Sopenharmony_ci    0x73, 0x51, 0x4c, 0xdb, 0x9b, 0xf3, 0xe1, 0x57, 0x84, 0xab, 0x71, 0x28,
581e1051a39Sopenharmony_ci    0x4f, 0x8d, 0x07, 0x04, 0xa6, 0x08, 0xc5, 0x4a, 0x6b, 0x62, 0xd9, 0x7b,
582e1051a39Sopenharmony_ci    0xeb, 0x51, 0x1d, 0x13, 0x21, 0x00
583e1051a39Sopenharmony_ci};
584e1051a39Sopenharmony_ci
585e1051a39Sopenharmony_cistatic const uint8_t *dohash(EVP_MD_CTX *hashctx, const uint8_t *msg,
586e1051a39Sopenharmony_ci                             size_t msglen)
587e1051a39Sopenharmony_ci{
588e1051a39Sopenharmony_ci    static uint8_t hashout[64];
589e1051a39Sopenharmony_ci
590e1051a39Sopenharmony_ci    if (!EVP_DigestInit_ex(hashctx, EVP_shake256(), NULL)
591e1051a39Sopenharmony_ci            || !EVP_DigestUpdate(hashctx, msg, msglen)
592e1051a39Sopenharmony_ci            || !EVP_DigestFinalXOF(hashctx, hashout, sizeof(hashout)))
593e1051a39Sopenharmony_ci        return NULL;
594e1051a39Sopenharmony_ci
595e1051a39Sopenharmony_ci    return hashout;
596e1051a39Sopenharmony_ci}
597e1051a39Sopenharmony_ci
598e1051a39Sopenharmony_cistatic int test_ed448(void)
599e1051a39Sopenharmony_ci{
600e1051a39Sopenharmony_ci    uint8_t outsig[114];
601e1051a39Sopenharmony_ci    EVP_MD_CTX *hashctx = EVP_MD_CTX_new();
602e1051a39Sopenharmony_ci
603e1051a39Sopenharmony_ci    if (!TEST_ptr(hashctx)
604e1051a39Sopenharmony_ci            || !TEST_true(ossl_ed448_sign(NULL, outsig, NULL, 0, pubkey1,
605e1051a39Sopenharmony_ci                                          privkey1, NULL, 0, NULL))
606e1051a39Sopenharmony_ci            || !TEST_int_eq(memcmp(sig1, outsig, sizeof(sig1)), 0)
607e1051a39Sopenharmony_ci            || !TEST_true(ossl_ed448_sign(NULL, outsig, msg2, sizeof(msg2),
608e1051a39Sopenharmony_ci                                          pubkey2, privkey2, NULL, 0, NULL))
609e1051a39Sopenharmony_ci            || !TEST_int_eq(memcmp(sig2, outsig, sizeof(sig2)), 0)
610e1051a39Sopenharmony_ci            || !TEST_true(ossl_ed448_sign(NULL, outsig, msg3, sizeof(msg3),
611e1051a39Sopenharmony_ci                                          pubkey3, privkey3, context3,
612e1051a39Sopenharmony_ci                                          sizeof(context3), NULL))
613e1051a39Sopenharmony_ci            || !TEST_int_eq(memcmp(sig3, outsig, sizeof(sig3)), 0)
614e1051a39Sopenharmony_ci            || !TEST_true(ossl_ed448_sign(NULL, outsig, msg4, sizeof(msg4),
615e1051a39Sopenharmony_ci                                          pubkey4, privkey4, NULL, 0, NULL))
616e1051a39Sopenharmony_ci            || !TEST_int_eq(memcmp(sig4, outsig, sizeof(sig4)), 0)
617e1051a39Sopenharmony_ci            || !TEST_true(ossl_ed448_sign(NULL, outsig, msg5, sizeof(msg5),
618e1051a39Sopenharmony_ci                                          pubkey5, privkey5, NULL, 0, NULL))
619e1051a39Sopenharmony_ci            || !TEST_int_eq(memcmp(sig5, outsig, sizeof(sig5)), 0)
620e1051a39Sopenharmony_ci            || !TEST_true(ossl_ed448_sign(NULL, outsig, msg6, sizeof(msg6),
621e1051a39Sopenharmony_ci                                          pubkey6, privkey6, NULL, 0, NULL))
622e1051a39Sopenharmony_ci            || !TEST_int_eq(memcmp(sig6, outsig, sizeof(sig6)), 0)
623e1051a39Sopenharmony_ci            || !TEST_true(ossl_ed448_sign(NULL, outsig, msg7, sizeof(msg7),
624e1051a39Sopenharmony_ci                                          pubkey7, privkey7, NULL, 0, NULL))
625e1051a39Sopenharmony_ci            || !TEST_int_eq(memcmp(sig7, outsig, sizeof(sig7)), 0)
626e1051a39Sopenharmony_ci            || !TEST_true(ossl_ed448_sign(NULL, outsig, msg8, sizeof(msg8),
627e1051a39Sopenharmony_ci                                          pubkey8, privkey8, NULL, 0, NULL))
628e1051a39Sopenharmony_ci            || !TEST_int_eq(memcmp(sig8, outsig, sizeof(sig8)), 0)
629e1051a39Sopenharmony_ci            || !TEST_true(ossl_ed448_sign(NULL, outsig, msg9, sizeof(msg9),
630e1051a39Sopenharmony_ci                                          pubkey9, privkey9, NULL, 0, NULL))
631e1051a39Sopenharmony_ci            || !TEST_int_eq(memcmp(sig9, outsig, sizeof(sig9)), 0)
632e1051a39Sopenharmony_ci            || !TEST_true(ossl_ed448ph_sign(NULL, outsig,
633e1051a39Sopenharmony_ci                                            dohash(hashctx, phmsg1,
634e1051a39Sopenharmony_ci                                                   sizeof(phmsg1)), phpubkey1,
635e1051a39Sopenharmony_ci                                                   phprivkey1, NULL, 0, NULL))
636e1051a39Sopenharmony_ci            || !TEST_int_eq(memcmp(phsig1, outsig, sizeof(phsig1)), 0)
637e1051a39Sopenharmony_ci            || !TEST_true(ossl_ed448ph_sign(NULL, outsig,
638e1051a39Sopenharmony_ci                                            dohash(hashctx, phmsg2,
639e1051a39Sopenharmony_ci                                                   sizeof(phmsg2)), phpubkey2,
640e1051a39Sopenharmony_ci                                                   phprivkey2, phcontext2,
641e1051a39Sopenharmony_ci                                                   sizeof(phcontext2), NULL))
642e1051a39Sopenharmony_ci            || !TEST_int_eq(memcmp(phsig2, outsig, sizeof(phsig2)), 0)) {
643e1051a39Sopenharmony_ci        EVP_MD_CTX_free(hashctx);
644e1051a39Sopenharmony_ci        return 0;
645e1051a39Sopenharmony_ci    }
646e1051a39Sopenharmony_ci
647e1051a39Sopenharmony_ci    EVP_MD_CTX_free(hashctx);
648e1051a39Sopenharmony_ci    return 1;
649e1051a39Sopenharmony_ci}
650e1051a39Sopenharmony_ci
651e1051a39Sopenharmony_cistatic int test_x448(void)
652e1051a39Sopenharmony_ci{
653e1051a39Sopenharmony_ci    uint8_t u[56], k[56], out[56];
654e1051a39Sopenharmony_ci    unsigned int i;
655e1051a39Sopenharmony_ci    int j = -1;
656e1051a39Sopenharmony_ci
657e1051a39Sopenharmony_ci    /* Curve448 tests */
658e1051a39Sopenharmony_ci
659e1051a39Sopenharmony_ci    if (!TEST_true(ossl_x448(out, in_scalar1, in_u1))
660e1051a39Sopenharmony_ci          || !TEST_int_eq(memcmp(out, out_u1, sizeof(out)), 0)
661e1051a39Sopenharmony_ci          || !TEST_true(ossl_x448(out, in_scalar2, in_u2))
662e1051a39Sopenharmony_ci          || !TEST_int_eq(memcmp(out, out_u2, sizeof(out)), 0))
663e1051a39Sopenharmony_ci        return 0;
664e1051a39Sopenharmony_ci
665e1051a39Sopenharmony_ci    memcpy(u, in_u3, sizeof(u));
666e1051a39Sopenharmony_ci    memcpy(k, in_u3, sizeof(k));
667e1051a39Sopenharmony_ci    for (i = 1; i <= max; i++) {
668e1051a39Sopenharmony_ci        if (verbose && i % 10000 == 0) {
669e1051a39Sopenharmony_ci            printf(".");
670e1051a39Sopenharmony_ci            fflush(stdout);
671e1051a39Sopenharmony_ci        }
672e1051a39Sopenharmony_ci
673e1051a39Sopenharmony_ci        if (!TEST_true(ossl_x448(out, k, u)))
674e1051a39Sopenharmony_ci            return 0;
675e1051a39Sopenharmony_ci
676e1051a39Sopenharmony_ci        if (i == 1 || i == 1000 || i == 1000000) {
677e1051a39Sopenharmony_ci            j++;
678e1051a39Sopenharmony_ci            if (!TEST_int_eq(memcmp(out, out_u3[j], sizeof(out)), 0)) {
679e1051a39Sopenharmony_ci                TEST_info("Failed at iteration %d", i);
680e1051a39Sopenharmony_ci                return 0;
681e1051a39Sopenharmony_ci            }
682e1051a39Sopenharmony_ci        }
683e1051a39Sopenharmony_ci        memcpy(u, k, sizeof(u));
684e1051a39Sopenharmony_ci        memcpy(k, out, sizeof(k));
685e1051a39Sopenharmony_ci    }
686e1051a39Sopenharmony_ci
687e1051a39Sopenharmony_ci    return 1;
688e1051a39Sopenharmony_ci}
689e1051a39Sopenharmony_ci
690e1051a39Sopenharmony_citypedef enum OPTION_choice {
691e1051a39Sopenharmony_ci    OPT_ERR = -1,
692e1051a39Sopenharmony_ci    OPT_EOF = 0,
693e1051a39Sopenharmony_ci    OPT_PROGRESS,
694e1051a39Sopenharmony_ci    OPT_SLOW,
695e1051a39Sopenharmony_ci    OPT_TEST_ENUM
696e1051a39Sopenharmony_ci} OPTION_CHOICE;
697e1051a39Sopenharmony_ci
698e1051a39Sopenharmony_ciconst OPTIONS *test_get_options(void)
699e1051a39Sopenharmony_ci{
700e1051a39Sopenharmony_ci    static const OPTIONS test_options[] = {
701e1051a39Sopenharmony_ci        OPT_TEST_OPTIONS_WITH_EXTRA_USAGE("conf_file\n"),
702e1051a39Sopenharmony_ci        { "f", OPT_SLOW, '-', "Enables a slow test" },
703e1051a39Sopenharmony_ci        { "v", OPT_PROGRESS, '-',
704e1051a39Sopenharmony_ci              "Enables verbose mode (prints progress dots)" },
705e1051a39Sopenharmony_ci        { NULL }
706e1051a39Sopenharmony_ci    };
707e1051a39Sopenharmony_ci    return test_options;
708e1051a39Sopenharmony_ci}
709e1051a39Sopenharmony_ci
710e1051a39Sopenharmony_ciint setup_tests(void)
711e1051a39Sopenharmony_ci{
712e1051a39Sopenharmony_ci    OPTION_CHOICE o;
713e1051a39Sopenharmony_ci
714e1051a39Sopenharmony_ci    while ((o = opt_next()) != OPT_EOF) {
715e1051a39Sopenharmony_ci        switch (o) {
716e1051a39Sopenharmony_ci        case OPT_TEST_CASES:
717e1051a39Sopenharmony_ci            break;
718e1051a39Sopenharmony_ci        default:
719e1051a39Sopenharmony_ci            return 0;
720e1051a39Sopenharmony_ci        /*
721e1051a39Sopenharmony_ci         * The test vectors contain one test which takes a very long time to run
722e1051a39Sopenharmony_ci         * so we don't do that be default. Using the -f option will cause it to
723e1051a39Sopenharmony_ci         * be run.
724e1051a39Sopenharmony_ci         */
725e1051a39Sopenharmony_ci        case OPT_SLOW:
726e1051a39Sopenharmony_ci            max = 1000000;
727e1051a39Sopenharmony_ci            break;
728e1051a39Sopenharmony_ci        case OPT_PROGRESS:
729e1051a39Sopenharmony_ci            verbose = 1; /* Print progress dots */
730e1051a39Sopenharmony_ci            break;
731e1051a39Sopenharmony_ci        }
732e1051a39Sopenharmony_ci    }
733e1051a39Sopenharmony_ci
734e1051a39Sopenharmony_ci    ADD_TEST(test_x448);
735e1051a39Sopenharmony_ci    ADD_TEST(test_ed448);
736e1051a39Sopenharmony_ci    return 1;
737e1051a39Sopenharmony_ci}
738