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