xref: /aosp_15_r20/external/libwebsockets/minimal-examples/api-tests/api-test-cose/sign.c (revision 1c60b9aca93fdbc9b5f19b2d2194c91294b22281)
1*1c60b9acSAndroid Build Coastguard Worker /*
2*1c60b9acSAndroid Build Coastguard Worker  * lws-api-test-jose - RFC8152 cose_sign tests
3*1c60b9acSAndroid Build Coastguard Worker  *
4*1c60b9acSAndroid Build Coastguard Worker  * Written in 2010-2021 by Andy Green <[email protected]>
5*1c60b9acSAndroid Build Coastguard Worker  *
6*1c60b9acSAndroid Build Coastguard Worker  * This file is made available under the Creative Commons CC0 1.0
7*1c60b9acSAndroid Build Coastguard Worker  * Universal Public Domain Dedication.
8*1c60b9acSAndroid Build Coastguard Worker  *
9*1c60b9acSAndroid Build Coastguard Worker  * Raw key CBOR created from descriptions at
10*1c60b9acSAndroid Build Coastguard Worker  *
11*1c60b9acSAndroid Build Coastguard Worker  * https://github.com/cose-wg/Examples/blob/master/KeySet.txt
12*1c60b9acSAndroid Build Coastguard Worker  */
13*1c60b9acSAndroid Build Coastguard Worker 
14*1c60b9acSAndroid Build Coastguard Worker #include <libwebsockets.h>
15*1c60b9acSAndroid Build Coastguard Worker #include <stdlib.h>
16*1c60b9acSAndroid Build Coastguard Worker #include <fcntl.h>
17*1c60b9acSAndroid Build Coastguard Worker 
18*1c60b9acSAndroid Build Coastguard Worker static const uint8_t
19*1c60b9acSAndroid Build Coastguard Worker 	sign1_pass_01[] = {
20*1c60b9acSAndroid Build Coastguard Worker 		/*
21*1c60b9acSAndroid Build Coastguard Worker 		 * https://github.com/cose-wg/Examples/blob/master/
22*1c60b9acSAndroid Build Coastguard Worker 		 * sign1-tests/sign-pass-01.json
23*1c60b9acSAndroid Build Coastguard Worker 		 */
24*1c60b9acSAndroid Build Coastguard Worker 		0xd2, 0x84, 0x41, 0xa0, 0xa2,
25*1c60b9acSAndroid Build Coastguard Worker 		0x01, 0x26, 0x04, 0x42, 0x31,
26*1c60b9acSAndroid Build Coastguard Worker 		0x31, 0x54, 0x54, 0x68, 0x69,
27*1c60b9acSAndroid Build Coastguard Worker 		0x73, 0x20, 0x69, 0x73, 0x20,
28*1c60b9acSAndroid Build Coastguard Worker 		0x74, 0x68, 0x65, 0x20, 0x63,
29*1c60b9acSAndroid Build Coastguard Worker 		0x6f, 0x6e, 0x74, 0x65, 0x6e,
30*1c60b9acSAndroid Build Coastguard Worker 		0x74, 0x2e, 0x58, 0x40, 0x87,
31*1c60b9acSAndroid Build Coastguard Worker 		0xdb, 0x0d, 0x2e, 0x55, 0x71,
32*1c60b9acSAndroid Build Coastguard Worker 		0x84, 0x3b, 0x78, 0xac, 0x33,
33*1c60b9acSAndroid Build Coastguard Worker 		0xec, 0xb2, 0x83, 0x0d, 0xf7,
34*1c60b9acSAndroid Build Coastguard Worker 		0xb6, 0xe0, 0xa4, 0xd5, 0xb7,
35*1c60b9acSAndroid Build Coastguard Worker 		0x37, 0x6d, 0xe3, 0x36, 0xb2,
36*1c60b9acSAndroid Build Coastguard Worker 		0x3c, 0x59, 0x1c, 0x90, 0xc4,
37*1c60b9acSAndroid Build Coastguard Worker 		0x25, 0x31, 0x7e, 0x56, 0x12,
38*1c60b9acSAndroid Build Coastguard Worker 		0x7f, 0xbe, 0x04, 0x37, 0x00,
39*1c60b9acSAndroid Build Coastguard Worker 		0x97, 0xce, 0x34, 0x70, 0x87,
40*1c60b9acSAndroid Build Coastguard Worker 		0xb2, 0x33, 0xbf, 0x72, 0x2b,
41*1c60b9acSAndroid Build Coastguard Worker 		0x64, 0x07, 0x2b, 0xeb, 0x44,
42*1c60b9acSAndroid Build Coastguard Worker 		0x86, 0xbd, 0xa4, 0x03, 0x1d,
43*1c60b9acSAndroid Build Coastguard Worker 		0x27, 0x24, 0x4f },
44*1c60b9acSAndroid Build Coastguard Worker 	sign1_pass_02[] = {
45*1c60b9acSAndroid Build Coastguard Worker 		0xd2, 0x84, 0x43, 0xa1, 0x01,
46*1c60b9acSAndroid Build Coastguard Worker 		0x26, 0xa1, 0x04, 0x42, 0x31,
47*1c60b9acSAndroid Build Coastguard Worker 		0x31, 0x54, 0x54, 0x68, 0x69,
48*1c60b9acSAndroid Build Coastguard Worker 		0x73, 0x20, 0x69, 0x73, 0x20,
49*1c60b9acSAndroid Build Coastguard Worker 		0x74, 0x68, 0x65, 0x20, 0x63,
50*1c60b9acSAndroid Build Coastguard Worker 		0x6f, 0x6e, 0x74, 0x65, 0x6e,
51*1c60b9acSAndroid Build Coastguard Worker 		0x74, 0x2e, 0x58, 0x40, 0x10,
52*1c60b9acSAndroid Build Coastguard Worker 		0x72, 0x9c, 0xd7, 0x11, 0xcb,
53*1c60b9acSAndroid Build Coastguard Worker 		0x38, 0x13, 0xd8, 0xd8, 0xe9,
54*1c60b9acSAndroid Build Coastguard Worker 		0x44, 0xa8, 0xda, 0x71, 0x11,
55*1c60b9acSAndroid Build Coastguard Worker 		0xe7, 0xb2, 0x58, 0xc9, 0xbd,
56*1c60b9acSAndroid Build Coastguard Worker 		0xca, 0x61, 0x35, 0xf7, 0xae,
57*1c60b9acSAndroid Build Coastguard Worker 		0x1a, 0xdb, 0xee, 0x95, 0x09,
58*1c60b9acSAndroid Build Coastguard Worker 		0x89, 0x12, 0x67, 0x83, 0x7e,
59*1c60b9acSAndroid Build Coastguard Worker 		0x1e, 0x33, 0xbd, 0x36, 0xc1,
60*1c60b9acSAndroid Build Coastguard Worker 		0x50, 0x32, 0x6a, 0xe6, 0x27,
61*1c60b9acSAndroid Build Coastguard Worker 		0x55, 0xc6, 0xbd, 0x8e, 0x54,
62*1c60b9acSAndroid Build Coastguard Worker 		0x0c, 0x3e, 0x8f, 0x92, 0xd7,
63*1c60b9acSAndroid Build Coastguard Worker 		0xd2, 0x25, 0xe8, 0xdb, 0x72,
64*1c60b9acSAndroid Build Coastguard Worker 		0xb8, 0x82, 0x0b },
65*1c60b9acSAndroid Build Coastguard Worker 
66*1c60b9acSAndroid Build Coastguard Worker 	sign1_pass_02_ext[] = {
67*1c60b9acSAndroid Build Coastguard Worker 		0x11, 0xaa, 0x22, 0xbb, 0x33,
68*1c60b9acSAndroid Build Coastguard Worker 		0xcc, 0x44, 0xdd, 0x55, 0x00,
69*1c60b9acSAndroid Build Coastguard Worker 		0x66, 0x99 },
70*1c60b9acSAndroid Build Coastguard Worker 
71*1c60b9acSAndroid Build Coastguard Worker 	sign1_pass_03[] = {
72*1c60b9acSAndroid Build Coastguard Worker 		0x84, 0x43, 0xa1, 0x01, 0x26,
73*1c60b9acSAndroid Build Coastguard Worker 		0xa1, 0x04, 0x42, 0x31, 0x31,
74*1c60b9acSAndroid Build Coastguard Worker 		0x54, 0x54, 0x68, 0x69, 0x73,
75*1c60b9acSAndroid Build Coastguard Worker 		0x20, 0x69, 0x73, 0x20, 0x74,
76*1c60b9acSAndroid Build Coastguard Worker 		0x68, 0x65, 0x20, 0x63, 0x6f,
77*1c60b9acSAndroid Build Coastguard Worker 		0x6e, 0x74, 0x65, 0x6e, 0x74,
78*1c60b9acSAndroid Build Coastguard Worker 		0x2e, 0x58, 0x40, 0x8e, 0xb3,
79*1c60b9acSAndroid Build Coastguard Worker 		0x3e, 0x4c, 0xa3, 0x1d, 0x1c,
80*1c60b9acSAndroid Build Coastguard Worker 		0x46, 0x5a, 0xb0, 0x5a, 0xac,
81*1c60b9acSAndroid Build Coastguard Worker 		0x34, 0xcc, 0x6b, 0x23, 0xd5,
82*1c60b9acSAndroid Build Coastguard Worker 		0x8f, 0xef, 0x5c, 0x08, 0x31,
83*1c60b9acSAndroid Build Coastguard Worker 		0x06, 0xc4, 0xd2, 0x5a, 0x91,
84*1c60b9acSAndroid Build Coastguard Worker 		0xae, 0xf0, 0xb0, 0x11, 0x7e,
85*1c60b9acSAndroid Build Coastguard Worker 		0x2a, 0xf9, 0xa2, 0x91, 0xaa,
86*1c60b9acSAndroid Build Coastguard Worker 		0x32, 0xe1, 0x4a, 0xb8, 0x34,
87*1c60b9acSAndroid Build Coastguard Worker 		0xdc, 0x56, 0xed, 0x2a, 0x22,
88*1c60b9acSAndroid Build Coastguard Worker 		0x34, 0x44, 0x54, 0x7e, 0x01,
89*1c60b9acSAndroid Build Coastguard Worker 		0xf1, 0x1d, 0x3b, 0x09, 0x16,
90*1c60b9acSAndroid Build Coastguard Worker 		0xe5, 0xa4, 0xc3, 0x45, 0xca,
91*1c60b9acSAndroid Build Coastguard Worker 		0xcb, 0x36 },
92*1c60b9acSAndroid Build Coastguard Worker 	sign1_fail_01[] = {
93*1c60b9acSAndroid Build Coastguard Worker 		0xd9, 0x03, 0xe6, 0x84, 0x43,
94*1c60b9acSAndroid Build Coastguard Worker 		0xa1, 0x01, 0x26, 0xa1, 0x04,
95*1c60b9acSAndroid Build Coastguard Worker 		0x42, 0x31, 0x31, 0x54, 0x54,
96*1c60b9acSAndroid Build Coastguard Worker 		0x68, 0x69, 0x73, 0x20, 0x69,
97*1c60b9acSAndroid Build Coastguard Worker 		0x73, 0x20, 0x74, 0x68, 0x65,
98*1c60b9acSAndroid Build Coastguard Worker 		0x20, 0x63, 0x6f, 0x6e, 0x74,
99*1c60b9acSAndroid Build Coastguard Worker 		0x65, 0x6e, 0x74, 0x2e, 0x58,
100*1c60b9acSAndroid Build Coastguard Worker 		0x40, 0x8e, 0xb3, 0x3e, 0x4c,
101*1c60b9acSAndroid Build Coastguard Worker 		0xa3, 0x1d, 0x1c, 0x46, 0x5a,
102*1c60b9acSAndroid Build Coastguard Worker 		0xb0, 0x5a, 0xac, 0x34, 0xcc,
103*1c60b9acSAndroid Build Coastguard Worker 		0x6b, 0x23, 0xd5, 0x8f, 0xef,
104*1c60b9acSAndroid Build Coastguard Worker 		0x5c, 0x08, 0x31, 0x06, 0xc4,
105*1c60b9acSAndroid Build Coastguard Worker 		0xd2, 0x5a, 0x91, 0xae, 0xf0,
106*1c60b9acSAndroid Build Coastguard Worker 		0xb0, 0x11, 0x7e, 0x2a, 0xf9,
107*1c60b9acSAndroid Build Coastguard Worker 		0xa2, 0x91, 0xaa, 0x32, 0xe1,
108*1c60b9acSAndroid Build Coastguard Worker 		0x4a, 0xb8, 0x34, 0xdc, 0x56,
109*1c60b9acSAndroid Build Coastguard Worker 		0xed, 0x2a, 0x22, 0x34, 0x44,
110*1c60b9acSAndroid Build Coastguard Worker 		0x54, 0x7e, 0x01, 0xf1, 0x1d,
111*1c60b9acSAndroid Build Coastguard Worker 		0x3b, 0x09, 0x16, 0xe5, 0xa4,
112*1c60b9acSAndroid Build Coastguard Worker 		0xc3, 0x45, 0xca, 0xcb, 0x36 },
113*1c60b9acSAndroid Build Coastguard Worker 	sign1_fail_02[] = {
114*1c60b9acSAndroid Build Coastguard Worker 		0xd2, 0x84, 0x43, 0xa1, 0x01,
115*1c60b9acSAndroid Build Coastguard Worker 		0x26, 0xa1, 0x04, 0x42, 0x31,
116*1c60b9acSAndroid Build Coastguard Worker 		0x31, 0x54, 0x54, 0x68, 0x69,
117*1c60b9acSAndroid Build Coastguard Worker 		0x73, 0x20, 0x69, 0x73, 0x20,
118*1c60b9acSAndroid Build Coastguard Worker 		0x74, 0x68, 0x65, 0x20, 0x63,
119*1c60b9acSAndroid Build Coastguard Worker 		0x6f, 0x6e, 0x74, 0x65, 0x6e,
120*1c60b9acSAndroid Build Coastguard Worker 		0x74, 0x2f, 0x58, 0x40, 0x8e,
121*1c60b9acSAndroid Build Coastguard Worker 		0xb3, 0x3e, 0x4c, 0xa3, 0x1d,
122*1c60b9acSAndroid Build Coastguard Worker 		0x1c, 0x46, 0x5a, 0xb0, 0x5a,
123*1c60b9acSAndroid Build Coastguard Worker 		0xac, 0x34, 0xcc, 0x6b, 0x23,
124*1c60b9acSAndroid Build Coastguard Worker 		0xd5, 0x8f, 0xef, 0x5c, 0x08,
125*1c60b9acSAndroid Build Coastguard Worker 		0x31, 0x06, 0xc4, 0xd2, 0x5a,
126*1c60b9acSAndroid Build Coastguard Worker 		0x91, 0xae, 0xf0, 0xb0, 0x11,
127*1c60b9acSAndroid Build Coastguard Worker 		0x7e, 0x2a, 0xf9, 0xa2, 0x91,
128*1c60b9acSAndroid Build Coastguard Worker 		0xaa, 0x32, 0xe1, 0x4a, 0xb8,
129*1c60b9acSAndroid Build Coastguard Worker 		0x34, 0xdc, 0x56, 0xed, 0x2a,
130*1c60b9acSAndroid Build Coastguard Worker 		0x22, 0x34, 0x44, 0x54, 0x7e,
131*1c60b9acSAndroid Build Coastguard Worker 		0x01, 0xf1, 0x1d, 0x3b, 0x09,
132*1c60b9acSAndroid Build Coastguard Worker 		0x16, 0xe5, 0xa4, 0xc3, 0x45,
133*1c60b9acSAndroid Build Coastguard Worker 		0xca, 0xcb, 0x36 },
134*1c60b9acSAndroid Build Coastguard Worker 	sign1_fail_03[] = {
135*1c60b9acSAndroid Build Coastguard Worker 		0xd2, 0x84, 0x45, 0xa1, 0x01,
136*1c60b9acSAndroid Build Coastguard Worker 		0x39, 0x03, 0xe6, 0xa1, 0x04,
137*1c60b9acSAndroid Build Coastguard Worker 		0x42, 0x31, 0x31, 0x54, 0x54,
138*1c60b9acSAndroid Build Coastguard Worker 		0x68, 0x69, 0x73, 0x20, 0x69,
139*1c60b9acSAndroid Build Coastguard Worker 		0x73, 0x20, 0x74, 0x68, 0x65,
140*1c60b9acSAndroid Build Coastguard Worker 		0x20, 0x63, 0x6f, 0x6e, 0x74,
141*1c60b9acSAndroid Build Coastguard Worker 		0x65, 0x6e, 0x74, 0x2e, 0x58,
142*1c60b9acSAndroid Build Coastguard Worker 		0x40, 0x8e, 0xb3, 0x3e, 0x4c,
143*1c60b9acSAndroid Build Coastguard Worker 		0xa3, 0x1d, 0x1c, 0x46, 0x5a,
144*1c60b9acSAndroid Build Coastguard Worker 		0xb0, 0x5a, 0xac, 0x34, 0xcc,
145*1c60b9acSAndroid Build Coastguard Worker 		0x6b, 0x23, 0xd5, 0x8f, 0xef,
146*1c60b9acSAndroid Build Coastguard Worker 		0x5c, 0x08, 0x31, 0x06, 0xc4,
147*1c60b9acSAndroid Build Coastguard Worker 		0xd2, 0x5a, 0x91, 0xae, 0xf0,
148*1c60b9acSAndroid Build Coastguard Worker 		0xb0, 0x11, 0x7e, 0x2a, 0xf9,
149*1c60b9acSAndroid Build Coastguard Worker 		0xa2, 0x91, 0xaa, 0x32, 0xe1,
150*1c60b9acSAndroid Build Coastguard Worker 		0x4a, 0xb8, 0x34, 0xdc, 0x56,
151*1c60b9acSAndroid Build Coastguard Worker 		0xed, 0x2a, 0x22, 0x34, 0x44,
152*1c60b9acSAndroid Build Coastguard Worker 		0x54, 0x7e, 0x01, 0xf1, 0x1d,
153*1c60b9acSAndroid Build Coastguard Worker 		0x3b, 0x09, 0x16, 0xe5, 0xa4,
154*1c60b9acSAndroid Build Coastguard Worker 		0xc3, 0x45, 0xca, 0xcb, 0x36 },
155*1c60b9acSAndroid Build Coastguard Worker 	sign1_fail_04[] = {
156*1c60b9acSAndroid Build Coastguard Worker 		0xd2, 0x84, 0x4a, 0xa1, 0x01,
157*1c60b9acSAndroid Build Coastguard Worker 		0x67, 0x75, 0x6e, 0x6b, 0x6e,
158*1c60b9acSAndroid Build Coastguard Worker 		0x6f, 0x77, 0x6e, 0xa1, 0x04,
159*1c60b9acSAndroid Build Coastguard Worker 		0x42, 0x31, 0x31, 0x54, 0x54,
160*1c60b9acSAndroid Build Coastguard Worker 		0x68, 0x69, 0x73, 0x20, 0x69,
161*1c60b9acSAndroid Build Coastguard Worker 		0x73, 0x20, 0x74, 0x68, 0x65,
162*1c60b9acSAndroid Build Coastguard Worker 		0x20, 0x63, 0x6f, 0x6e, 0x74,
163*1c60b9acSAndroid Build Coastguard Worker 		0x65, 0x6e, 0x74, 0x2e, 0x58,
164*1c60b9acSAndroid Build Coastguard Worker 		0x40, 0x8e, 0xb3, 0x3e, 0x4c,
165*1c60b9acSAndroid Build Coastguard Worker 		0xa3, 0x1d, 0x1c, 0x46, 0x5a,
166*1c60b9acSAndroid Build Coastguard Worker 		0xb0, 0x5a, 0xac, 0x34, 0xcc,
167*1c60b9acSAndroid Build Coastguard Worker 		0x6b, 0x23, 0xd5, 0x8f, 0xef,
168*1c60b9acSAndroid Build Coastguard Worker 		0x5c, 0x08, 0x31, 0x06, 0xc4,
169*1c60b9acSAndroid Build Coastguard Worker 		0xd2, 0x5a, 0x91, 0xae, 0xf0,
170*1c60b9acSAndroid Build Coastguard Worker 		0xb0, 0x11, 0x7e, 0x2a, 0xf9,
171*1c60b9acSAndroid Build Coastguard Worker 		0xa2, 0x91, 0xaa, 0x32, 0xe1,
172*1c60b9acSAndroid Build Coastguard Worker 		0x4a, 0xb8, 0x34, 0xdc, 0x56,
173*1c60b9acSAndroid Build Coastguard Worker 		0xed, 0x2a, 0x22, 0x34, 0x44,
174*1c60b9acSAndroid Build Coastguard Worker 		0x54, 0x7e, 0x01, 0xf1, 0x1d,
175*1c60b9acSAndroid Build Coastguard Worker 		0x3b, 0x09, 0x16, 0xe5, 0xa4,
176*1c60b9acSAndroid Build Coastguard Worker 		0xc3, 0x45, 0xca, 0xcb, 0x36 },
177*1c60b9acSAndroid Build Coastguard Worker 
178*1c60b9acSAndroid Build Coastguard Worker 		/* sign1/fail05 is missing upstream */
179*1c60b9acSAndroid Build Coastguard Worker 
180*1c60b9acSAndroid Build Coastguard Worker 	sign1_fail_06[] = {
181*1c60b9acSAndroid Build Coastguard Worker 		0xd2, 0x84, 0x45, 0xa2, 0x01,
182*1c60b9acSAndroid Build Coastguard Worker 		0x26, 0x03, 0x00, 0xa1, 0x04,
183*1c60b9acSAndroid Build Coastguard Worker 		0x42, 0x31, 0x31, 0x54, 0x54,
184*1c60b9acSAndroid Build Coastguard Worker 		0x68, 0x69, 0x73, 0x20, 0x69,
185*1c60b9acSAndroid Build Coastguard Worker 		0x73, 0x20, 0x74, 0x68, 0x65,
186*1c60b9acSAndroid Build Coastguard Worker 		0x20, 0x63, 0x6f, 0x6e, 0x74,
187*1c60b9acSAndroid Build Coastguard Worker 		0x65, 0x6e, 0x74, 0x2e, 0x58,
188*1c60b9acSAndroid Build Coastguard Worker 		0x40, 0x8e, 0xb3, 0x3e, 0x4c,
189*1c60b9acSAndroid Build Coastguard Worker 		0xa3, 0x1d, 0x1c, 0x46, 0x5a,
190*1c60b9acSAndroid Build Coastguard Worker 		0xb0, 0x5a, 0xac, 0x34, 0xcc,
191*1c60b9acSAndroid Build Coastguard Worker 		0x6b, 0x23, 0xd5, 0x8f, 0xef,
192*1c60b9acSAndroid Build Coastguard Worker 		0x5c, 0x08, 0x31, 0x06, 0xc4,
193*1c60b9acSAndroid Build Coastguard Worker 		0xd2, 0x5a, 0x91, 0xae, 0xf0,
194*1c60b9acSAndroid Build Coastguard Worker 		0xb0, 0x11, 0x7e, 0x2a, 0xf9,
195*1c60b9acSAndroid Build Coastguard Worker 		0xa2, 0x91, 0xaa, 0x32, 0xe1,
196*1c60b9acSAndroid Build Coastguard Worker 		0x4a, 0xb8, 0x34, 0xdc, 0x56,
197*1c60b9acSAndroid Build Coastguard Worker 		0xed, 0x2a, 0x22, 0x34, 0x44,
198*1c60b9acSAndroid Build Coastguard Worker 		0x54, 0x7e, 0x01, 0xf1, 0x1d,
199*1c60b9acSAndroid Build Coastguard Worker 		0x3b, 0x09, 0x16, 0xe5, 0xa4,
200*1c60b9acSAndroid Build Coastguard Worker 		0xc3, 0x45, 0xca, 0xcb, 0x36 },
201*1c60b9acSAndroid Build Coastguard Worker 
202*1c60b9acSAndroid Build Coastguard Worker 	sign1_fail_07[] = {
203*1c60b9acSAndroid Build Coastguard Worker 		0xd2, 0x84, 0x43, 0xa1, 0x01,
204*1c60b9acSAndroid Build Coastguard Worker 		0x26, 0xa1, 0x04, 0x42, 0x31,
205*1c60b9acSAndroid Build Coastguard Worker 		0x31, 0x54, 0x54, 0x68, 0x69,
206*1c60b9acSAndroid Build Coastguard Worker 		0x73, 0x20, 0x69, 0x73, 0x20,
207*1c60b9acSAndroid Build Coastguard Worker 		0x74, 0x68, 0x65, 0x20, 0x63,
208*1c60b9acSAndroid Build Coastguard Worker 		0x6f, 0x6e, 0x74, 0x65, 0x6e,
209*1c60b9acSAndroid Build Coastguard Worker 		0x74, 0x2e, 0x58, 0x40, 0x65,
210*1c60b9acSAndroid Build Coastguard Worker 		0x20, 0xbb, 0xaf, 0x20, 0x81,
211*1c60b9acSAndroid Build Coastguard Worker 		0xd7, 0xe0, 0xed, 0x0f, 0x95,
212*1c60b9acSAndroid Build Coastguard Worker 		0xf7, 0x6e, 0xb0, 0x73, 0x3d,
213*1c60b9acSAndroid Build Coastguard Worker 		0x66, 0x70, 0x05, 0xf7, 0x46,
214*1c60b9acSAndroid Build Coastguard Worker 		0x7c, 0xec, 0x4b, 0x87, 0xb9,
215*1c60b9acSAndroid Build Coastguard Worker 		0x38, 0x1a, 0x6b, 0xa1, 0xed,
216*1c60b9acSAndroid Build Coastguard Worker 		0xe8, 0xe0, 0x0d, 0xf2, 0x9f,
217*1c60b9acSAndroid Build Coastguard Worker 		0x32, 0xa3, 0x72, 0x30, 0xf3,
218*1c60b9acSAndroid Build Coastguard Worker 		0x9a, 0x84, 0x2a, 0x54, 0x82,
219*1c60b9acSAndroid Build Coastguard Worker 		0x1f, 0xdd, 0x22, 0x30, 0x92,
220*1c60b9acSAndroid Build Coastguard Worker 		0x81, 0x9d, 0x77, 0x28, 0xef,
221*1c60b9acSAndroid Build Coastguard Worker 		0xb9, 0xd3, 0xa0, 0x08, 0x0b,
222*1c60b9acSAndroid Build Coastguard Worker 		0x75, 0x38, 0x0b },
223*1c60b9acSAndroid Build Coastguard Worker 
224*1c60b9acSAndroid Build Coastguard Worker 	sign_pass_01[] = {
225*1c60b9acSAndroid Build Coastguard Worker 		0xd8, 0x62, 0x84, 0x41, 0xa0,
226*1c60b9acSAndroid Build Coastguard Worker 		0xa0, 0x54, 0x54, 0x68, 0x69,
227*1c60b9acSAndroid Build Coastguard Worker 		0x73, 0x20, 0x69, 0x73, 0x20,
228*1c60b9acSAndroid Build Coastguard Worker 		0x74, 0x68, 0x65, 0x20, 0x63,
229*1c60b9acSAndroid Build Coastguard Worker 		0x6f, 0x6e, 0x74, 0x65, 0x6e,
230*1c60b9acSAndroid Build Coastguard Worker 		0x74, 0x2e, 0x81, 0x83, 0x43,
231*1c60b9acSAndroid Build Coastguard Worker 		0xa1, 0x01, 0x26, 0xa1, 0x04,
232*1c60b9acSAndroid Build Coastguard Worker 		0x42, 0x31, 0x31, 0x58, 0x40,
233*1c60b9acSAndroid Build Coastguard Worker 		0xe2, 0xae, 0xaf, 0xd4, 0x0d,
234*1c60b9acSAndroid Build Coastguard Worker 		0x69, 0xd1, 0x9d, 0xfe, 0x6e,
235*1c60b9acSAndroid Build Coastguard Worker 		0x52, 0x07, 0x7c, 0x5d, 0x7f,
236*1c60b9acSAndroid Build Coastguard Worker 		0xf4, 0xe4, 0x08, 0x28, 0x2c,
237*1c60b9acSAndroid Build Coastguard Worker 		0xbe, 0xfb, 0x5d, 0x06, 0xcb,
238*1c60b9acSAndroid Build Coastguard Worker 		0xf4, 0x14, 0xaf, 0x2e, 0x19,
239*1c60b9acSAndroid Build Coastguard Worker 		0xd9, 0x82, 0xac, 0x45, 0xac,
240*1c60b9acSAndroid Build Coastguard Worker 		0x98, 0xb8, 0x54, 0x4c, 0x90,
241*1c60b9acSAndroid Build Coastguard Worker 		0x8b, 0x45, 0x07, 0xde, 0x1e,
242*1c60b9acSAndroid Build Coastguard Worker 		0x90, 0xb7, 0x17, 0xc3, 0xd3,
243*1c60b9acSAndroid Build Coastguard Worker 		0x48, 0x16, 0xfe, 0x92, 0x6a,
244*1c60b9acSAndroid Build Coastguard Worker 		0x2b, 0x98, 0xf5, 0x3a, 0xfd,
245*1c60b9acSAndroid Build Coastguard Worker 		0x2f, 0xa0, 0xf3, 0x0a },
246*1c60b9acSAndroid Build Coastguard Worker 
247*1c60b9acSAndroid Build Coastguard Worker 	sign_pass_02[] = {
248*1c60b9acSAndroid Build Coastguard Worker 		0xd8, 0x62, 0x84, 0x40, 0xa0,
249*1c60b9acSAndroid Build Coastguard Worker 		0x54, 0x54, 0x68, 0x69, 0x73,
250*1c60b9acSAndroid Build Coastguard Worker 		0x20, 0x69, 0x73, 0x20, 0x74,
251*1c60b9acSAndroid Build Coastguard Worker 		0x68, 0x65, 0x20, 0x63, 0x6f,
252*1c60b9acSAndroid Build Coastguard Worker 		0x6e, 0x74, 0x65, 0x6e, 0x74,
253*1c60b9acSAndroid Build Coastguard Worker 		0x2e, 0x81, 0x83, 0x43, 0xa1,
254*1c60b9acSAndroid Build Coastguard Worker 		0x01, 0x26, 0xa1, 0x04, 0x42,
255*1c60b9acSAndroid Build Coastguard Worker 		0x31, 0x31, 0x58, 0x40, 0xcb,
256*1c60b9acSAndroid Build Coastguard Worker 		0xb8, 0xda, 0xd9, 0xbe, 0xaf,
257*1c60b9acSAndroid Build Coastguard Worker 		0xb8, 0x90, 0xe1, 0xa4, 0x14,
258*1c60b9acSAndroid Build Coastguard Worker 		0x12, 0x4d, 0x8b, 0xfb, 0xc2,
259*1c60b9acSAndroid Build Coastguard Worker 		0x6b, 0xed, 0xf2, 0xa9, 0x4f,
260*1c60b9acSAndroid Build Coastguard Worker 		0xcb, 0x5a, 0x88, 0x24, 0x32,
261*1c60b9acSAndroid Build Coastguard Worker 		0xbf, 0xf6, 0xd6, 0x3e, 0x15,
262*1c60b9acSAndroid Build Coastguard Worker 		0xf5, 0x74, 0xee, 0xb2, 0xab,
263*1c60b9acSAndroid Build Coastguard Worker 		0x51, 0xd8, 0x3f, 0xa2, 0xcb,
264*1c60b9acSAndroid Build Coastguard Worker 		0xf6, 0x26, 0x72, 0xeb, 0xf4,
265*1c60b9acSAndroid Build Coastguard Worker 		0xc7, 0xd9, 0x93, 0xb0, 0xf4,
266*1c60b9acSAndroid Build Coastguard Worker 		0xc2, 0x44, 0x76, 0x47, 0xd8,
267*1c60b9acSAndroid Build Coastguard Worker 		0x31, 0xba, 0x57, 0xcc, 0xa8,
268*1c60b9acSAndroid Build Coastguard Worker 		0x6b, 0x93, 0x0a },
269*1c60b9acSAndroid Build Coastguard Worker 
270*1c60b9acSAndroid Build Coastguard Worker 	sign_pass_03[] = {
271*1c60b9acSAndroid Build Coastguard Worker 		0x84, 0x40, 0xa0, 0x54, 0x54,
272*1c60b9acSAndroid Build Coastguard Worker 		0x68, 0x69, 0x73, 0x20, 0x69,
273*1c60b9acSAndroid Build Coastguard Worker 		0x73, 0x20, 0x74, 0x68, 0x65,
274*1c60b9acSAndroid Build Coastguard Worker 		0x20, 0x63, 0x6f, 0x6e, 0x74,
275*1c60b9acSAndroid Build Coastguard Worker 		0x65, 0x6e, 0x74, 0x2e, 0x81,
276*1c60b9acSAndroid Build Coastguard Worker 		0x83, 0x43, 0xa1, 0x01, 0x26,
277*1c60b9acSAndroid Build Coastguard Worker 		0xa1, 0x04, 0x42, 0x31, 0x31,
278*1c60b9acSAndroid Build Coastguard Worker 		0x58, 0x40, 0xe2, 0xae, 0xaf,
279*1c60b9acSAndroid Build Coastguard Worker 		0xd4, 0x0d, 0x69, 0xd1, 0x9d,
280*1c60b9acSAndroid Build Coastguard Worker 		0xfe, 0x6e, 0x52, 0x07, 0x7c,
281*1c60b9acSAndroid Build Coastguard Worker 		0x5d, 0x7f, 0xf4, 0xe4, 0x08,
282*1c60b9acSAndroid Build Coastguard Worker 		0x28, 0x2c, 0xbe, 0xfb, 0x5d,
283*1c60b9acSAndroid Build Coastguard Worker 		0x06, 0xcb, 0xf4, 0x14, 0xaf,
284*1c60b9acSAndroid Build Coastguard Worker 		0x2e, 0x19, 0xd9, 0x82, 0xac,
285*1c60b9acSAndroid Build Coastguard Worker 		0x45, 0xac, 0x98, 0xb8, 0x54,
286*1c60b9acSAndroid Build Coastguard Worker 		0x4c, 0x90, 0x8b, 0x45, 0x07,
287*1c60b9acSAndroid Build Coastguard Worker 		0xde, 0x1e, 0x90, 0xb7, 0x17,
288*1c60b9acSAndroid Build Coastguard Worker 		0xc3, 0xd3, 0x48, 0x16, 0xfe,
289*1c60b9acSAndroid Build Coastguard Worker 		0x92, 0x6a, 0x2b, 0x98, 0xf5,
290*1c60b9acSAndroid Build Coastguard Worker 		0x3a, 0xfd, 0x2f, 0xa0, 0xf3,
291*1c60b9acSAndroid Build Coastguard Worker 		0x0a },
292*1c60b9acSAndroid Build Coastguard Worker 
293*1c60b9acSAndroid Build Coastguard Worker 	sign_fail_01[] = {
294*1c60b9acSAndroid Build Coastguard Worker 		0xd9, 0x03, 0xe6, 0x84, 0x40,
295*1c60b9acSAndroid Build Coastguard Worker 		0xa0, 0x54, 0x54, 0x68, 0x69,
296*1c60b9acSAndroid Build Coastguard Worker 		0x73, 0x20, 0x69, 0x73, 0x20,
297*1c60b9acSAndroid Build Coastguard Worker 		0x74, 0x68, 0x65, 0x20, 0x63,
298*1c60b9acSAndroid Build Coastguard Worker 		0x6f, 0x6e, 0x74, 0x65, 0x6e,
299*1c60b9acSAndroid Build Coastguard Worker 		0x74, 0x2e, 0x81, 0x83, 0x43,
300*1c60b9acSAndroid Build Coastguard Worker 		0xa1, 0x01, 0x26, 0xa1, 0x04,
301*1c60b9acSAndroid Build Coastguard Worker 		0x42, 0x31, 0x31, 0x58, 0x40,
302*1c60b9acSAndroid Build Coastguard Worker 		0xe2, 0xae, 0xaf, 0xd4, 0x0d,
303*1c60b9acSAndroid Build Coastguard Worker 		0x69, 0xd1, 0x9d, 0xfe, 0x6e,
304*1c60b9acSAndroid Build Coastguard Worker 		0x52, 0x07, 0x7c, 0x5d, 0x7f,
305*1c60b9acSAndroid Build Coastguard Worker 		0xf4, 0xe4, 0x08, 0x28, 0x2c,
306*1c60b9acSAndroid Build Coastguard Worker 		0xbe, 0xfb, 0x5d, 0x06, 0xcb,
307*1c60b9acSAndroid Build Coastguard Worker 		0xf4, 0x14, 0xaf, 0x2e, 0x19,
308*1c60b9acSAndroid Build Coastguard Worker 		0xd9, 0x82, 0xac, 0x45, 0xac,
309*1c60b9acSAndroid Build Coastguard Worker 		0x98, 0xb8, 0x54, 0x4c, 0x90,
310*1c60b9acSAndroid Build Coastguard Worker 		0x8b, 0x45, 0x07, 0xde, 0x1e,
311*1c60b9acSAndroid Build Coastguard Worker 		0x90, 0xb7, 0x17, 0xc3, 0xd3,
312*1c60b9acSAndroid Build Coastguard Worker 		0x48, 0x16, 0xfe, 0x92, 0x6a,
313*1c60b9acSAndroid Build Coastguard Worker 		0x2b, 0x98, 0xf5, 0x3a, 0xfd,
314*1c60b9acSAndroid Build Coastguard Worker 		0x2f, 0xa0, 0xf3, 0x0a },
315*1c60b9acSAndroid Build Coastguard Worker 
316*1c60b9acSAndroid Build Coastguard Worker 	sign_fail_02[] = {
317*1c60b9acSAndroid Build Coastguard Worker 		0xd8, 0x62, 0x84, 0x40, 0xa0,
318*1c60b9acSAndroid Build Coastguard Worker 		0x54, 0x54, 0x68, 0x69, 0x73,
319*1c60b9acSAndroid Build Coastguard Worker 		0x20, 0x69, 0x73, 0x20, 0x74,
320*1c60b9acSAndroid Build Coastguard Worker 		0x68, 0x65, 0x20, 0x63, 0x6f,
321*1c60b9acSAndroid Build Coastguard Worker 		0x6e, 0x74, 0x65, 0x6e, 0x74,
322*1c60b9acSAndroid Build Coastguard Worker 		0x2e, 0x81, 0x83, 0x43, 0xa1,
323*1c60b9acSAndroid Build Coastguard Worker 		0x01, 0x26, 0xa1, 0x04, 0x42,
324*1c60b9acSAndroid Build Coastguard Worker 		0x31, 0x31, 0x58, 0x40, 0xe2,
325*1c60b9acSAndroid Build Coastguard Worker 		0xae, 0xaf, 0xd4, 0x0d, 0x69,
326*1c60b9acSAndroid Build Coastguard Worker 		0xd1, 0x9d, 0xfe, 0x6e, 0x52,
327*1c60b9acSAndroid Build Coastguard Worker 		0x07, 0x7c, 0x5d, 0x7f, 0xf4,
328*1c60b9acSAndroid Build Coastguard Worker 		0xe4, 0x08, 0x28, 0x2c, 0xbe,
329*1c60b9acSAndroid Build Coastguard Worker 		0xfb, 0x5d, 0x06, 0xcb, 0xf4,
330*1c60b9acSAndroid Build Coastguard Worker 		0x14, 0xaf, 0x2e, 0x19, 0xd9,
331*1c60b9acSAndroid Build Coastguard Worker 		0x82, 0xac, 0x45, 0xac, 0x98,
332*1c60b9acSAndroid Build Coastguard Worker 		0xb8, 0x54, 0x4c, 0x90, 0x8b,
333*1c60b9acSAndroid Build Coastguard Worker 		0x45, 0x07, 0xde, 0x1e, 0x90,
334*1c60b9acSAndroid Build Coastguard Worker 		0xb7, 0x17, 0xc3, 0xd3, 0x48,
335*1c60b9acSAndroid Build Coastguard Worker 		0x16, 0xfe, 0x92, 0x6a, 0x2b,
336*1c60b9acSAndroid Build Coastguard Worker 		0x98, 0xf5, 0x3a, 0xfd, 0x2f,
337*1c60b9acSAndroid Build Coastguard Worker 		0xa0, 0xf3, 0x0b },
338*1c60b9acSAndroid Build Coastguard Worker 
339*1c60b9acSAndroid Build Coastguard Worker 	sign_fail_03[] = {
340*1c60b9acSAndroid Build Coastguard Worker 		0xd8, 0x62, 0x84, 0x40, 0xa0,
341*1c60b9acSAndroid Build Coastguard Worker 		0x54, 0x54, 0x68, 0x69, 0x73,
342*1c60b9acSAndroid Build Coastguard Worker 		0x20, 0x69, 0x73, 0x20, 0x74,
343*1c60b9acSAndroid Build Coastguard Worker 		0x68, 0x65, 0x20, 0x63, 0x6f,
344*1c60b9acSAndroid Build Coastguard Worker 		0x6e, 0x74, 0x65, 0x6e, 0x74,
345*1c60b9acSAndroid Build Coastguard Worker 		0x2e, 0x81, 0x83, 0x45, 0xa1,
346*1c60b9acSAndroid Build Coastguard Worker 		0x01, 0x39, 0x03, 0xe6, 0xa1,
347*1c60b9acSAndroid Build Coastguard Worker 		0x04, 0x42, 0x31, 0x31, 0x58,
348*1c60b9acSAndroid Build Coastguard Worker 		0x40, 0xe2, 0xae, 0xaf, 0xd4,
349*1c60b9acSAndroid Build Coastguard Worker 		0x0d, 0x69, 0xd1, 0x9d, 0xfe,
350*1c60b9acSAndroid Build Coastguard Worker 		0x6e, 0x52, 0x07, 0x7c, 0x5d,
351*1c60b9acSAndroid Build Coastguard Worker 		0x7f, 0xf4, 0xe4, 0x08, 0x28,
352*1c60b9acSAndroid Build Coastguard Worker 		0x2c, 0xbe, 0xfb, 0x5d, 0x06,
353*1c60b9acSAndroid Build Coastguard Worker 		0xcb, 0xf4, 0x14, 0xaf, 0x2e,
354*1c60b9acSAndroid Build Coastguard Worker 		0x19, 0xd9, 0x82, 0xac, 0x45,
355*1c60b9acSAndroid Build Coastguard Worker 		0xac, 0x98, 0xb8, 0x54, 0x4c,
356*1c60b9acSAndroid Build Coastguard Worker 		0x90, 0x8b, 0x45, 0x07, 0xde,
357*1c60b9acSAndroid Build Coastguard Worker 		0x1e, 0x90, 0xb7, 0x17, 0xc3,
358*1c60b9acSAndroid Build Coastguard Worker 		0xd3, 0x48, 0x16, 0xfe, 0x92,
359*1c60b9acSAndroid Build Coastguard Worker 		0x6a, 0x2b, 0x98, 0xf5, 0x3a,
360*1c60b9acSAndroid Build Coastguard Worker 		0xfd, 0x2f, 0xa0, 0xf3, 0x0a },
361*1c60b9acSAndroid Build Coastguard Worker 
362*1c60b9acSAndroid Build Coastguard Worker 	sign_fail_04[] = {
363*1c60b9acSAndroid Build Coastguard Worker 		0xd8, 0x62, 0x84, 0x40, 0xa0,
364*1c60b9acSAndroid Build Coastguard Worker 		0x54, 0x54, 0x68, 0x69, 0x73,
365*1c60b9acSAndroid Build Coastguard Worker 		0x20, 0x69, 0x73, 0x20, 0x74,
366*1c60b9acSAndroid Build Coastguard Worker 		0x68, 0x65, 0x20, 0x63, 0x6f,
367*1c60b9acSAndroid Build Coastguard Worker 		0x6e, 0x74, 0x65, 0x6e, 0x74,
368*1c60b9acSAndroid Build Coastguard Worker 		0x2e, 0x81, 0x83, 0x4a, 0xa1,
369*1c60b9acSAndroid Build Coastguard Worker 		0x01, 0x67, 0x75, 0x6e, 0x6b,
370*1c60b9acSAndroid Build Coastguard Worker 		0x6e, 0x6f, 0x77, 0x6e, 0xa1,
371*1c60b9acSAndroid Build Coastguard Worker 		0x04, 0x42, 0x31, 0x31, 0x58,
372*1c60b9acSAndroid Build Coastguard Worker 		0x40, 0xe2, 0xae, 0xaf, 0xd4,
373*1c60b9acSAndroid Build Coastguard Worker 		0x0d, 0x69, 0xd1, 0x9d, 0xfe,
374*1c60b9acSAndroid Build Coastguard Worker 		0x6e, 0x52, 0x07, 0x7c, 0x5d,
375*1c60b9acSAndroid Build Coastguard Worker 		0x7f, 0xf4, 0xe4, 0x08, 0x28,
376*1c60b9acSAndroid Build Coastguard Worker 		0x2c, 0xbe, 0xfb, 0x5d, 0x06,
377*1c60b9acSAndroid Build Coastguard Worker 		0xcb, 0xf4, 0x14, 0xaf, 0x2e,
378*1c60b9acSAndroid Build Coastguard Worker 		0x19, 0xd9, 0x82, 0xac, 0x45,
379*1c60b9acSAndroid Build Coastguard Worker 		0xac, 0x98, 0xb8, 0x54, 0x4c,
380*1c60b9acSAndroid Build Coastguard Worker 		0x90, 0x8b, 0x45, 0x07, 0xde,
381*1c60b9acSAndroid Build Coastguard Worker 		0x1e, 0x90, 0xb7, 0x17, 0xc3,
382*1c60b9acSAndroid Build Coastguard Worker 		0xd3, 0x48, 0x16, 0xfe, 0x92,
383*1c60b9acSAndroid Build Coastguard Worker 		0x6a, 0x2b, 0x98, 0xf5, 0x3a,
384*1c60b9acSAndroid Build Coastguard Worker 		0xfd, 0x2f, 0xa0, 0xf3, 0x0a },
385*1c60b9acSAndroid Build Coastguard Worker 
386*1c60b9acSAndroid Build Coastguard Worker 		/* fail 5 missing upstream */
387*1c60b9acSAndroid Build Coastguard Worker 
388*1c60b9acSAndroid Build Coastguard Worker 	sign_fail_06[] = {
389*1c60b9acSAndroid Build Coastguard Worker 		0xd8, 0x62, 0x84, 0x43, 0xa1,
390*1c60b9acSAndroid Build Coastguard Worker 		0x03, 0x00, 0xa0, 0x54, 0x54,
391*1c60b9acSAndroid Build Coastguard Worker 		0x68, 0x69, 0x73, 0x20, 0x69,
392*1c60b9acSAndroid Build Coastguard Worker 		0x73, 0x20, 0x74, 0x68, 0x65,
393*1c60b9acSAndroid Build Coastguard Worker 		0x20, 0x63, 0x6f, 0x6e, 0x74,
394*1c60b9acSAndroid Build Coastguard Worker 		0x65, 0x6e, 0x74, 0x2e, 0x81,
395*1c60b9acSAndroid Build Coastguard Worker 		0x83, 0x43, 0xa1, 0x01, 0x26,
396*1c60b9acSAndroid Build Coastguard Worker 		0xa1, 0x04, 0x42, 0x31, 0x31,
397*1c60b9acSAndroid Build Coastguard Worker 		0x58, 0x40, 0xe2, 0xae, 0xaf,
398*1c60b9acSAndroid Build Coastguard Worker 		0xd4, 0x0d, 0x69, 0xd1, 0x9d,
399*1c60b9acSAndroid Build Coastguard Worker 		0xfe, 0x6e, 0x52, 0x07, 0x7c,
400*1c60b9acSAndroid Build Coastguard Worker 		0x5d, 0x7f, 0xf4, 0xe4, 0x08,
401*1c60b9acSAndroid Build Coastguard Worker 		0x28, 0x2c, 0xbe, 0xfb, 0x5d,
402*1c60b9acSAndroid Build Coastguard Worker 		0x06, 0xcb, 0xf4, 0x14, 0xaf,
403*1c60b9acSAndroid Build Coastguard Worker 		0x2e, 0x19, 0xd9, 0x82, 0xac,
404*1c60b9acSAndroid Build Coastguard Worker 		0x45, 0xac, 0x98, 0xb8, 0x54,
405*1c60b9acSAndroid Build Coastguard Worker 		0x4c, 0x90, 0x8b, 0x45, 0x07,
406*1c60b9acSAndroid Build Coastguard Worker 		0xde, 0x1e, 0x90, 0xb7, 0x17,
407*1c60b9acSAndroid Build Coastguard Worker 		0xc3, 0xd3, 0x48, 0x16, 0xfe,
408*1c60b9acSAndroid Build Coastguard Worker 		0x92, 0x6a, 0x2b, 0x98, 0xf5,
409*1c60b9acSAndroid Build Coastguard Worker 		0x3a, 0xfd, 0x2f, 0xa0, 0xf3,
410*1c60b9acSAndroid Build Coastguard Worker 		0x0a },
411*1c60b9acSAndroid Build Coastguard Worker 
412*1c60b9acSAndroid Build Coastguard Worker 	sign_fail_07[] = {
413*1c60b9acSAndroid Build Coastguard Worker 		0xd8, 0x62, 0x84, 0x41, 0xa0,
414*1c60b9acSAndroid Build Coastguard Worker 		0xa0, 0x54, 0x54, 0x68, 0x69,
415*1c60b9acSAndroid Build Coastguard Worker 		0x73, 0x20, 0x69, 0x73, 0x20,
416*1c60b9acSAndroid Build Coastguard Worker 		0x74, 0x68, 0x65, 0x20, 0x63,
417*1c60b9acSAndroid Build Coastguard Worker 		0x6f, 0x6e, 0x74, 0x65, 0x6e,
418*1c60b9acSAndroid Build Coastguard Worker 		0x74, 0x2e, 0x81, 0x83, 0x43,
419*1c60b9acSAndroid Build Coastguard Worker 		0xa1, 0x01, 0x26, 0xa1, 0x04,
420*1c60b9acSAndroid Build Coastguard Worker 		0x42, 0x31, 0x31, 0x58, 0x40,
421*1c60b9acSAndroid Build Coastguard Worker 		0xd7, 0x1c, 0x05, 0xdb, 0x52,
422*1c60b9acSAndroid Build Coastguard Worker 		0xc9, 0xce, 0x7f, 0x1b, 0xf5,
423*1c60b9acSAndroid Build Coastguard Worker 		0xaa, 0xc0, 0x13, 0x34, 0xbb,
424*1c60b9acSAndroid Build Coastguard Worker 		0xea, 0xca, 0xc1, 0xd8, 0x6a,
425*1c60b9acSAndroid Build Coastguard Worker 		0x23, 0x03, 0xe6, 0xee, 0xaa,
426*1c60b9acSAndroid Build Coastguard Worker 		0x89, 0x26, 0x6f, 0x45, 0xc0,
427*1c60b9acSAndroid Build Coastguard Worker 		0x1e, 0xd6, 0x02, 0xca, 0x64,
428*1c60b9acSAndroid Build Coastguard Worker 		0x9e, 0xaf, 0x79, 0x0d, 0x8b,
429*1c60b9acSAndroid Build Coastguard Worker 		0xc9, 0x9d, 0x24, 0x58, 0x45,
430*1c60b9acSAndroid Build Coastguard Worker 		0x7c, 0xa6, 0xa8, 0x72, 0x06,
431*1c60b9acSAndroid Build Coastguard Worker 		0x19, 0x40, 0xe7, 0xaf, 0xbe,
432*1c60b9acSAndroid Build Coastguard Worker 		0x48, 0xe2, 0x89, 0xdf, 0xac,
433*1c60b9acSAndroid Build Coastguard Worker 		0x14, 0x6a, 0xe2, 0x58 },
434*1c60b9acSAndroid Build Coastguard Worker 
435*1c60b9acSAndroid Build Coastguard Worker 	sign_hmac_01[] = {
436*1c60b9acSAndroid Build Coastguard Worker 		0xd8, 0x61, 0x85, 0x43, 0xa1,
437*1c60b9acSAndroid Build Coastguard Worker 		0x01, 0x05, 0xa0, 0x54, 0x54,
438*1c60b9acSAndroid Build Coastguard Worker 		0x68, 0x69, 0x73, 0x20, 0x69,
439*1c60b9acSAndroid Build Coastguard Worker 		0x73, 0x20, 0x74, 0x68, 0x65,
440*1c60b9acSAndroid Build Coastguard Worker 		0x20, 0x63, 0x6f, 0x6e, 0x74,
441*1c60b9acSAndroid Build Coastguard Worker 		0x65, 0x6e, 0x74, 0x2e, 0x58,
442*1c60b9acSAndroid Build Coastguard Worker 		0x20, 0x2b, 0xdc, 0xc8, 0x9f,
443*1c60b9acSAndroid Build Coastguard Worker 		0x05, 0x82, 0x16, 0xb8, 0xa2,
444*1c60b9acSAndroid Build Coastguard Worker 		0x08, 0xdd, 0xc6, 0xd8, 0xb5,
445*1c60b9acSAndroid Build Coastguard Worker 		0x4a, 0xa9, 0x1f, 0x48, 0xbd,
446*1c60b9acSAndroid Build Coastguard Worker 		0x63, 0x48, 0x49, 0x86, 0x56,
447*1c60b9acSAndroid Build Coastguard Worker 		0x51, 0x05, 0xc9, 0xad, 0x5a,
448*1c60b9acSAndroid Build Coastguard Worker 		0x66, 0x82, 0xf6, 0x81, 0x83,
449*1c60b9acSAndroid Build Coastguard Worker 		0x40, 0xa2, 0x01, 0x25, 0x04,
450*1c60b9acSAndroid Build Coastguard Worker 		0x4a, 0x6f, 0x75, 0x72, 0x2d,
451*1c60b9acSAndroid Build Coastguard Worker 		0x73, 0x65, 0x63, 0x72, 0x65,
452*1c60b9acSAndroid Build Coastguard Worker 		0x74, 0x40 },
453*1c60b9acSAndroid Build Coastguard Worker 
454*1c60b9acSAndroid Build Coastguard Worker 	sign_hmac_02[] = {
455*1c60b9acSAndroid Build Coastguard Worker 		0xd8, 0x61, 0x85, 0x43, 0xa1,
456*1c60b9acSAndroid Build Coastguard Worker 		0x01, 0x06, 0xa0, 0x54, 0x54,
457*1c60b9acSAndroid Build Coastguard Worker 		0x68, 0x69, 0x73, 0x20, 0x69,
458*1c60b9acSAndroid Build Coastguard Worker 		0x73, 0x20, 0x74, 0x68, 0x65,
459*1c60b9acSAndroid Build Coastguard Worker 		0x20, 0x63, 0x6f, 0x6e, 0x74,
460*1c60b9acSAndroid Build Coastguard Worker 		0x65, 0x6e, 0x74, 0x2e, 0x58,
461*1c60b9acSAndroid Build Coastguard Worker 		0x30, 0xb3, 0x09, 0x7f, 0x70,
462*1c60b9acSAndroid Build Coastguard Worker 		0x00, 0x9a, 0x11, 0x50, 0x74,
463*1c60b9acSAndroid Build Coastguard Worker 		0x09, 0x59, 0x8a, 0x83, 0xe1,
464*1c60b9acSAndroid Build Coastguard Worker 		0x5b, 0xbb, 0xbf, 0x19, 0x82,
465*1c60b9acSAndroid Build Coastguard Worker 		0xdc, 0xe2, 0x8e, 0x5a, 0xb6,
466*1c60b9acSAndroid Build Coastguard Worker 		0xd5, 0xa6, 0xaf, 0xf6, 0x89,
467*1c60b9acSAndroid Build Coastguard Worker 		0x7b, 0xd2, 0x4b, 0xb8, 0xb7,
468*1c60b9acSAndroid Build Coastguard Worker 		0x47, 0x96, 0x22, 0xc9, 0x40,
469*1c60b9acSAndroid Build Coastguard Worker 		0x1b, 0x24, 0x09, 0x0d, 0x45,
470*1c60b9acSAndroid Build Coastguard Worker 		0x82, 0x06, 0xd5, 0x87, 0x81,
471*1c60b9acSAndroid Build Coastguard Worker 		0x83, 0x40, 0xa2, 0x01, 0x25,
472*1c60b9acSAndroid Build Coastguard Worker 		0x04, 0x46, 0x73, 0x65, 0x63,
473*1c60b9acSAndroid Build Coastguard Worker 		0x2d, 0x34, 0x38, 0x40 },
474*1c60b9acSAndroid Build Coastguard Worker 
475*1c60b9acSAndroid Build Coastguard Worker 	sign_hmac_03[] = {
476*1c60b9acSAndroid Build Coastguard Worker 		0xd8, 0x61, 0x85, 0x43, 0xa1,
477*1c60b9acSAndroid Build Coastguard Worker 		0x01, 0x07, 0xa0, 0x54, 0x54,
478*1c60b9acSAndroid Build Coastguard Worker 		0x68, 0x69, 0x73, 0x20, 0x69,
479*1c60b9acSAndroid Build Coastguard Worker 		0x73, 0x20, 0x74, 0x68, 0x65,
480*1c60b9acSAndroid Build Coastguard Worker 		0x20, 0x63, 0x6f, 0x6e, 0x74,
481*1c60b9acSAndroid Build Coastguard Worker 		0x65, 0x6e, 0x74, 0x2e, 0x58,
482*1c60b9acSAndroid Build Coastguard Worker 		0x40, 0xcd, 0x28, 0xa6, 0xb3,
483*1c60b9acSAndroid Build Coastguard Worker 		0xcf, 0xbb, 0xbf, 0x21, 0x48,
484*1c60b9acSAndroid Build Coastguard Worker 		0x51, 0xb9, 0x06, 0xe0, 0x50,
485*1c60b9acSAndroid Build Coastguard Worker 		0x05, 0x6c, 0xb4, 0x38, 0xa8,
486*1c60b9acSAndroid Build Coastguard Worker 		0xb8, 0x89, 0x05, 0xb8, 0xb7,
487*1c60b9acSAndroid Build Coastguard Worker 		0x46, 0x19, 0x77, 0x02, 0x27,
488*1c60b9acSAndroid Build Coastguard Worker 		0x11, 0xa9, 0xd8, 0xac, 0x5d,
489*1c60b9acSAndroid Build Coastguard Worker 		0xbc, 0x54, 0xe2, 0x9a, 0x56,
490*1c60b9acSAndroid Build Coastguard Worker 		0xd9, 0x26, 0x04, 0x6b, 0x40,
491*1c60b9acSAndroid Build Coastguard Worker 		0xfc, 0x26, 0x07, 0xc2, 0x5b,
492*1c60b9acSAndroid Build Coastguard Worker 		0x34, 0x44, 0x54, 0xaa, 0x5f,
493*1c60b9acSAndroid Build Coastguard Worker 		0x68, 0xde, 0x09, 0xa3, 0xe5,
494*1c60b9acSAndroid Build Coastguard Worker 		0x25, 0xd3, 0x86, 0x5a, 0x05,
495*1c60b9acSAndroid Build Coastguard Worker 		0x81, 0x83, 0x40, 0xa2, 0x01,
496*1c60b9acSAndroid Build Coastguard Worker 		0x25, 0x04, 0x46, 0x73, 0x65,
497*1c60b9acSAndroid Build Coastguard Worker 		0x63, 0x2d, 0x36, 0x34, 0x40 },
498*1c60b9acSAndroid Build Coastguard Worker 
499*1c60b9acSAndroid Build Coastguard Worker 	sign_hmac_04[] = {
500*1c60b9acSAndroid Build Coastguard Worker 		0xd8, 0x61, 0x85, 0x43, 0xa1,
501*1c60b9acSAndroid Build Coastguard Worker 		0x01, 0x05, 0xa0, 0x54, 0x54,
502*1c60b9acSAndroid Build Coastguard Worker 		0x68, 0x69, 0x73, 0x20, 0x69,
503*1c60b9acSAndroid Build Coastguard Worker 		0x73, 0x20, 0x74, 0x68, 0x65,
504*1c60b9acSAndroid Build Coastguard Worker 		0x20, 0x63, 0x6f, 0x6e, 0x74,
505*1c60b9acSAndroid Build Coastguard Worker 		0x65, 0x6e, 0x74, 0x2e, 0x58,
506*1c60b9acSAndroid Build Coastguard Worker 		0x20, 0x2b, 0xdc, 0xc8, 0x9f,
507*1c60b9acSAndroid Build Coastguard Worker 		0x05, 0x82, 0x16, 0xb8, 0xa2,
508*1c60b9acSAndroid Build Coastguard Worker 		0x08, 0xdd, 0xc6, 0xd8, 0xb5,
509*1c60b9acSAndroid Build Coastguard Worker 		0x4a, 0xa9, 0x1f, 0x48, 0xbd,
510*1c60b9acSAndroid Build Coastguard Worker 		0x63, 0x48, 0x49, 0x86, 0x56,
511*1c60b9acSAndroid Build Coastguard Worker 		0x51, 0x05, 0xc9, 0xad, 0x5a,
512*1c60b9acSAndroid Build Coastguard Worker 		0x66, 0x82, 0xf7, 0x81, 0x83,
513*1c60b9acSAndroid Build Coastguard Worker 		0x40, 0xa2, 0x01, 0x25, 0x04,
514*1c60b9acSAndroid Build Coastguard Worker 		0x4a, 0x6f, 0x75, 0x72, 0x2d,
515*1c60b9acSAndroid Build Coastguard Worker 		0x73, 0x65, 0x63, 0x72, 0x65,
516*1c60b9acSAndroid Build Coastguard Worker 		0x74, 0x40 },
517*1c60b9acSAndroid Build Coastguard Worker 
518*1c60b9acSAndroid Build Coastguard Worker 	sign_hmac_05[] = {
519*1c60b9acSAndroid Build Coastguard Worker 		0xd8, 0x61, 0x85, 0x43, 0xa1,
520*1c60b9acSAndroid Build Coastguard Worker 		0x01, 0x04, 0xa0, 0x54, 0x54,
521*1c60b9acSAndroid Build Coastguard Worker 		0x68, 0x69, 0x73, 0x20, 0x69,
522*1c60b9acSAndroid Build Coastguard Worker 		0x73, 0x20, 0x74, 0x68, 0x65,
523*1c60b9acSAndroid Build Coastguard Worker 		0x20, 0x63, 0x6f, 0x6e, 0x74,
524*1c60b9acSAndroid Build Coastguard Worker 		0x65, 0x6e, 0x74, 0x2e, 0x48,
525*1c60b9acSAndroid Build Coastguard Worker 		0x6f, 0x35, 0xca, 0xb7, 0x79,
526*1c60b9acSAndroid Build Coastguard Worker 		0xf7, 0x78, 0x33, 0x81, 0x83,
527*1c60b9acSAndroid Build Coastguard Worker 		0x40, 0xa2, 0x01, 0x25, 0x04,
528*1c60b9acSAndroid Build Coastguard Worker 		0x4a, 0x6f, 0x75, 0x72, 0x2d,
529*1c60b9acSAndroid Build Coastguard Worker 		0x73, 0x65, 0x63, 0x72, 0x65,
530*1c60b9acSAndroid Build Coastguard Worker 		0x74, 0x40 },
531*1c60b9acSAndroid Build Coastguard Worker 
532*1c60b9acSAndroid Build Coastguard Worker 	enc_hmac_01[] = {
533*1c60b9acSAndroid Build Coastguard Worker 		0xd1, 0x84, 0x43, 0xa1, 0x01,
534*1c60b9acSAndroid Build Coastguard Worker 		0x05, 0xa0, 0x54, 0x54, 0x68,
535*1c60b9acSAndroid Build Coastguard Worker 		0x69, 0x73, 0x20, 0x69, 0x73,
536*1c60b9acSAndroid Build Coastguard Worker 		0x20, 0x74, 0x68, 0x65, 0x20,
537*1c60b9acSAndroid Build Coastguard Worker 		0x63, 0x6f, 0x6e, 0x74, 0x65,
538*1c60b9acSAndroid Build Coastguard Worker 		0x6e, 0x74, 0x2e, 0x58, 0x20,
539*1c60b9acSAndroid Build Coastguard Worker 		0xa1, 0xa8, 0x48, 0xd3, 0x47,
540*1c60b9acSAndroid Build Coastguard Worker 		0x1f, 0x9d, 0x61, 0xee, 0x49,
541*1c60b9acSAndroid Build Coastguard Worker 		0x01, 0x8d, 0x24, 0x4c, 0x82,
542*1c60b9acSAndroid Build Coastguard Worker 		0x47, 0x72, 0xf2, 0x23, 0xad,
543*1c60b9acSAndroid Build Coastguard Worker 		0x4f, 0x93, 0x52, 0x93, 0xf1,
544*1c60b9acSAndroid Build Coastguard Worker 		0x78, 0x9f, 0xc3, 0xa0, 0x8d,
545*1c60b9acSAndroid Build Coastguard Worker 		0x8c, 0x58 },
546*1c60b9acSAndroid Build Coastguard Worker 
547*1c60b9acSAndroid Build Coastguard Worker 	enc_hmac_02[] = {
548*1c60b9acSAndroid Build Coastguard Worker 		0xd1, 0x84, 0x43, 0xa1, 0x01,
549*1c60b9acSAndroid Build Coastguard Worker 		0x06, 0xa0, 0x54, 0x54, 0x68,
550*1c60b9acSAndroid Build Coastguard Worker 		0x69, 0x73, 0x20, 0x69, 0x73,
551*1c60b9acSAndroid Build Coastguard Worker 		0x20, 0x74, 0x68, 0x65, 0x20,
552*1c60b9acSAndroid Build Coastguard Worker 		0x63, 0x6f, 0x6e, 0x74, 0x65,
553*1c60b9acSAndroid Build Coastguard Worker 		0x6e, 0x74, 0x2e, 0x58, 0x30,
554*1c60b9acSAndroid Build Coastguard Worker 		0x99, 0x8d, 0x26, 0xc6, 0x45,
555*1c60b9acSAndroid Build Coastguard Worker 		0x9a, 0xae, 0xec, 0xf4, 0x4e,
556*1c60b9acSAndroid Build Coastguard Worker 		0xd2, 0x0c, 0xe0, 0x0c, 0x8c,
557*1c60b9acSAndroid Build Coastguard Worker 		0xce, 0xdf, 0x0a, 0x1f, 0x3d,
558*1c60b9acSAndroid Build Coastguard Worker 		0x22, 0xa9, 0x2f, 0xc0, 0x5d,
559*1c60b9acSAndroid Build Coastguard Worker 		0xb0, 0x8c, 0x5a, 0xeb, 0x1c,
560*1c60b9acSAndroid Build Coastguard Worker 		0xb5, 0x94, 0xca, 0xaf, 0x5a,
561*1c60b9acSAndroid Build Coastguard Worker 		0x5c, 0x5e, 0x2e, 0x9d, 0x01,
562*1c60b9acSAndroid Build Coastguard Worker 		0xcc, 0xe7, 0xe7, 0x7a, 0x93,
563*1c60b9acSAndroid Build Coastguard Worker 		0xaa, 0x8c, 0x62 },
564*1c60b9acSAndroid Build Coastguard Worker 
565*1c60b9acSAndroid Build Coastguard Worker 	enc_hmac_03[] = {
566*1c60b9acSAndroid Build Coastguard Worker 		0xd1, 0x84, 0x43, 0xa1, 0x01,
567*1c60b9acSAndroid Build Coastguard Worker 		0x07, 0xa0, 0x54, 0x54, 0x68,
568*1c60b9acSAndroid Build Coastguard Worker 		0x69, 0x73, 0x20, 0x69, 0x73,
569*1c60b9acSAndroid Build Coastguard Worker 		0x20, 0x74, 0x68, 0x65, 0x20,
570*1c60b9acSAndroid Build Coastguard Worker 		0x63, 0x6f, 0x6e, 0x74, 0x65,
571*1c60b9acSAndroid Build Coastguard Worker 		0x6e, 0x74, 0x2e, 0x58, 0x40,
572*1c60b9acSAndroid Build Coastguard Worker 		0x4a, 0x55, 0x5b, 0xf9, 0x71,
573*1c60b9acSAndroid Build Coastguard Worker 		0xf7, 0xc1, 0x89, 0x1d, 0x9d,
574*1c60b9acSAndroid Build Coastguard Worker 		0xdf, 0x30, 0x4a, 0x1a, 0x13,
575*1c60b9acSAndroid Build Coastguard Worker 		0x2e, 0x2d, 0x6f, 0x81, 0x74,
576*1c60b9acSAndroid Build Coastguard Worker 		0x49, 0x47, 0x4d, 0x81, 0x3e,
577*1c60b9acSAndroid Build Coastguard Worker 		0x6d, 0x04, 0xd6, 0x59, 0x62,
578*1c60b9acSAndroid Build Coastguard Worker 		0xbe, 0xd8, 0xbb, 0xa7, 0x0c,
579*1c60b9acSAndroid Build Coastguard Worker 		0x17, 0xe1, 0xf5, 0x30, 0x8f,
580*1c60b9acSAndroid Build Coastguard Worker 		0xa3, 0x99, 0x62, 0x95, 0x9a,
581*1c60b9acSAndroid Build Coastguard Worker 		0x4b, 0x9b, 0x8d, 0x7d, 0xa8,
582*1c60b9acSAndroid Build Coastguard Worker 		0xe6, 0xd8, 0x49, 0xb2, 0x09,
583*1c60b9acSAndroid Build Coastguard Worker 		0xdc, 0xd3, 0xe9, 0x8c, 0xc0,
584*1c60b9acSAndroid Build Coastguard Worker 		0xf1, 0x1e, 0xdd, 0xf2 },
585*1c60b9acSAndroid Build Coastguard Worker 
586*1c60b9acSAndroid Build Coastguard Worker 	enc_hmac_04[] = {
587*1c60b9acSAndroid Build Coastguard Worker 		0xd1, 0x84, 0x43, 0xa1, 0x01,
588*1c60b9acSAndroid Build Coastguard Worker 		0x05, 0xa0, 0x54, 0x54, 0x68,
589*1c60b9acSAndroid Build Coastguard Worker 		0x69, 0x73, 0x20, 0x69, 0x73,
590*1c60b9acSAndroid Build Coastguard Worker 		0x20, 0x74, 0x68, 0x65, 0x20,
591*1c60b9acSAndroid Build Coastguard Worker 		0x63, 0x6f, 0x6e, 0x74, 0x65,
592*1c60b9acSAndroid Build Coastguard Worker 		0x6e, 0x74, 0x2e, 0x58, 0x20,
593*1c60b9acSAndroid Build Coastguard Worker 		0xa1, 0xa8, 0x48, 0xd3, 0x47,
594*1c60b9acSAndroid Build Coastguard Worker 		0x1f, 0x9d, 0x61, 0xee, 0x49,
595*1c60b9acSAndroid Build Coastguard Worker 		0x01, 0x8d, 0x24, 0x4c, 0x82,
596*1c60b9acSAndroid Build Coastguard Worker 		0x47, 0x72, 0xf2, 0x23, 0xad,
597*1c60b9acSAndroid Build Coastguard Worker 		0x4f, 0x93, 0x52, 0x93, 0xf1,
598*1c60b9acSAndroid Build Coastguard Worker 		0x78, 0x9f, 0xc3, 0xa0, 0x8d,
599*1c60b9acSAndroid Build Coastguard Worker 		0x8c, 0x59 },
600*1c60b9acSAndroid Build Coastguard Worker 
601*1c60b9acSAndroid Build Coastguard Worker 	enc_hmac_05[] = {
602*1c60b9acSAndroid Build Coastguard Worker 		0xd1, 0x84, 0x43, 0xa1, 0x01,
603*1c60b9acSAndroid Build Coastguard Worker 		0x04, 0xa0, 0x54, 0x54, 0x68,
604*1c60b9acSAndroid Build Coastguard Worker 		0x69, 0x73, 0x20, 0x69, 0x73,
605*1c60b9acSAndroid Build Coastguard Worker 		0x20, 0x74, 0x68, 0x65, 0x20,
606*1c60b9acSAndroid Build Coastguard Worker 		0x63, 0x6f, 0x6e, 0x74, 0x65,
607*1c60b9acSAndroid Build Coastguard Worker 		0x6e, 0x74, 0x2e, 0x48, 0x11,
608*1c60b9acSAndroid Build Coastguard Worker 		0xf9, 0xe3, 0x57, 0x97, 0x5f,
609*1c60b9acSAndroid Build Coastguard Worker 		0xb8, 0x49 }
610*1c60b9acSAndroid Build Coastguard Worker #if 0
611*1c60b9acSAndroid Build Coastguard Worker ,
612*1c60b9acSAndroid Build Coastguard Worker 
613*1c60b9acSAndroid Build Coastguard Worker 	countersign_sign_01[] = {
614*1c60b9acSAndroid Build Coastguard Worker 		0xd8, 0x62, 0x84, 0x43, 0xa1,
615*1c60b9acSAndroid Build Coastguard Worker 		0x03, 0x00, 0xa0, 0x54, 0x54,
616*1c60b9acSAndroid Build Coastguard Worker 		0x68, 0x69, 0x73, 0x20, 0x69,
617*1c60b9acSAndroid Build Coastguard Worker 		0x73, 0x20, 0x74, 0x68, 0x65,
618*1c60b9acSAndroid Build Coastguard Worker 		0x20, 0x63, 0x6f, 0x6e, 0x74,
619*1c60b9acSAndroid Build Coastguard Worker 		0x65, 0x6e, 0x74, 0x2e, 0x81,
620*1c60b9acSAndroid Build Coastguard Worker 		0x83, 0x43, 0xa1, 0x01, 0x27,
621*1c60b9acSAndroid Build Coastguard Worker 		0xa2, 0x07, 0x83, 0x43, 0xa1,
622*1c60b9acSAndroid Build Coastguard Worker 		0x01, 0x27, 0xa1, 0x04, 0x42,
623*1c60b9acSAndroid Build Coastguard Worker 		0x31, 0x31, 0x58, 0x40, 0x8e,
624*1c60b9acSAndroid Build Coastguard Worker 		0x1b, 0xe2, 0xf9, 0x45, 0x3d,
625*1c60b9acSAndroid Build Coastguard Worker 		0x26, 0x48, 0x12, 0xe5, 0x90,
626*1c60b9acSAndroid Build Coastguard Worker 		0x49, 0x91, 0x32, 0xbe, 0xf3,
627*1c60b9acSAndroid Build Coastguard Worker 		0xfb, 0xf9, 0xee, 0x9d, 0xb2,
628*1c60b9acSAndroid Build Coastguard Worker 		0x7c, 0x2c, 0x16, 0x87, 0x88,
629*1c60b9acSAndroid Build Coastguard Worker 		0xe3, 0xb7, 0xeb, 0xe5, 0x06,
630*1c60b9acSAndroid Build Coastguard Worker 		0xc0, 0x4f, 0xd3, 0xd1, 0x9f,
631*1c60b9acSAndroid Build Coastguard Worker 		0xaa, 0x9f, 0x51, 0x23, 0x2a,
632*1c60b9acSAndroid Build Coastguard Worker 		0xf5, 0xc9, 0x59, 0xe4, 0xef,
633*1c60b9acSAndroid Build Coastguard Worker 		0x47, 0x92, 0x88, 0x34, 0x64,
634*1c60b9acSAndroid Build Coastguard Worker 		0x7f, 0x56, 0xdf, 0xbe, 0x93,
635*1c60b9acSAndroid Build Coastguard Worker 		0x91, 0x12, 0x88, 0x4d, 0x08,
636*1c60b9acSAndroid Build Coastguard Worker 		0xef, 0x25, 0x05, 0x04, 0x42,
637*1c60b9acSAndroid Build Coastguard Worker 		0x31, 0x31, 0x58, 0x40, 0x77,
638*1c60b9acSAndroid Build Coastguard Worker 		0xf3, 0xea, 0xcd, 0x11, 0x85,
639*1c60b9acSAndroid Build Coastguard Worker 		0x2c, 0x4b, 0xf9, 0xcb, 0x1d,
640*1c60b9acSAndroid Build Coastguard Worker 		0x72, 0xfa, 0xbe, 0x6b, 0x26,
641*1c60b9acSAndroid Build Coastguard Worker 		0xfb, 0xa1, 0xd7, 0x60, 0x92,
642*1c60b9acSAndroid Build Coastguard Worker 		0xb2, 0xb5, 0xb7, 0xec, 0x83,
643*1c60b9acSAndroid Build Coastguard Worker 		0xb8, 0x35, 0x57, 0x65, 0x22,
644*1c60b9acSAndroid Build Coastguard Worker 		0x64, 0xe6, 0x96, 0x90, 0xdb,
645*1c60b9acSAndroid Build Coastguard Worker 		0xc1, 0x17, 0x2d, 0xdc, 0x0b,
646*1c60b9acSAndroid Build Coastguard Worker 		0xf8, 0x84, 0x11, 0xc0, 0xd2,
647*1c60b9acSAndroid Build Coastguard Worker 		0x5a, 0x50, 0x7f, 0xdb, 0x24,
648*1c60b9acSAndroid Build Coastguard Worker 		0x7a, 0x20, 0xc4, 0x0d, 0x5e,
649*1c60b9acSAndroid Build Coastguard Worker 		0x24, 0x5f, 0xab, 0xd3, 0xfc,
650*1c60b9acSAndroid Build Coastguard Worker 		0x9e, 0xc1, 0x06 }
651*1c60b9acSAndroid Build Coastguard Worker #endif
652*1c60b9acSAndroid Build Coastguard Worker ;
653*1c60b9acSAndroid Build Coastguard Worker 
654*1c60b9acSAndroid Build Coastguard Worker extern const struct {
655*1c60b9acSAndroid Build Coastguard Worker 	const uint8_t		*set;
656*1c60b9acSAndroid Build Coastguard Worker 	size_t			len;
657*1c60b9acSAndroid Build Coastguard Worker } keyset1, key3, key8, key9, key10;
658*1c60b9acSAndroid Build Coastguard Worker 
659*1c60b9acSAndroid Build Coastguard Worker static int
xcb(lws_cose_sig_ext_pay_t * x)660*1c60b9acSAndroid Build Coastguard Worker xcb(lws_cose_sig_ext_pay_t *x)
661*1c60b9acSAndroid Build Coastguard Worker {
662*1c60b9acSAndroid Build Coastguard Worker 	x->ext = sign1_pass_02_ext;
663*1c60b9acSAndroid Build Coastguard Worker 	x->xl = sizeof(sign1_pass_02_ext);
664*1c60b9acSAndroid Build Coastguard Worker 
665*1c60b9acSAndroid Build Coastguard Worker 	return LCOSESIGEXTCB_RET_FINISHED;
666*1c60b9acSAndroid Build Coastguard Worker }
667*1c60b9acSAndroid Build Coastguard Worker 
668*1c60b9acSAndroid Build Coastguard Worker 
669*1c60b9acSAndroid Build Coastguard Worker 
670*1c60b9acSAndroid Build Coastguard Worker int
test_cose_sign(struct lws_context * context)671*1c60b9acSAndroid Build Coastguard Worker test_cose_sign(struct lws_context *context)
672*1c60b9acSAndroid Build Coastguard Worker {
673*1c60b9acSAndroid Build Coastguard Worker 	struct lws_cose_validate_context *cps;
674*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_validate_create_info_t info;
675*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_validate_res_t *res;
676*1c60b9acSAndroid Build Coastguard Worker 	lws_dll2_owner_t set;
677*1c60b9acSAndroid Build Coastguard Worker 	lws_dll2_owner_t *o;
678*1c60b9acSAndroid Build Coastguard Worker 	int n;
679*1c60b9acSAndroid Build Coastguard Worker 
680*1c60b9acSAndroid Build Coastguard Worker 	memset(&info, 0, sizeof(info));
681*1c60b9acSAndroid Build Coastguard Worker 	info.cx = context;
682*1c60b9acSAndroid Build Coastguard Worker 	info.keyset = &set;
683*1c60b9acSAndroid Build Coastguard Worker 
684*1c60b9acSAndroid Build Coastguard Worker #if 1
685*1c60b9acSAndroid Build Coastguard Worker 	{
686*1c60b9acSAndroid Build Coastguard Worker 		int fd = open("sign_hmac01.sig",
687*1c60b9acSAndroid Build Coastguard Worker 			      LWS_O_CREAT | LWS_O_TRUNC | LWS_O_WRONLY, 0600);
688*1c60b9acSAndroid Build Coastguard Worker 
689*1c60b9acSAndroid Build Coastguard Worker 		if (fd >= 0) {
690*1c60b9acSAndroid Build Coastguard Worker 			write(fd, sign_hmac_01, sizeof(sign_hmac_01));
691*1c60b9acSAndroid Build Coastguard Worker 			close(fd);
692*1c60b9acSAndroid Build Coastguard Worker 		}
693*1c60b9acSAndroid Build Coastguard Worker 	}
694*1c60b9acSAndroid Build Coastguard Worker #endif
695*1c60b9acSAndroid Build Coastguard Worker 
696*1c60b9acSAndroid Build Coastguard Worker 	/*
697*1c60b9acSAndroid Build Coastguard Worker 	 * valid sign1 we have key for
698*1c60b9acSAndroid Build Coastguard Worker 	 */
699*1c60b9acSAndroid Build Coastguard Worker 
700*1c60b9acSAndroid Build Coastguard Worker 	lwsl_user("%s: sign1/sign-pass-01\n", __func__);
701*1c60b9acSAndroid Build Coastguard Worker 
702*1c60b9acSAndroid Build Coastguard Worker 	lws_dll2_owner_clear(&set);
703*1c60b9acSAndroid Build Coastguard Worker 	if (!lws_cose_key_import(&set, NULL, NULL, keyset1.set, keyset1.len)) {
704*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: key import fail\n", __func__);
705*1c60b9acSAndroid Build Coastguard Worker 		return 1;
706*1c60b9acSAndroid Build Coastguard Worker 	}
707*1c60b9acSAndroid Build Coastguard Worker 
708*1c60b9acSAndroid Build Coastguard Worker 	info.sigtype = SIGTYPE_SINGLE;
709*1c60b9acSAndroid Build Coastguard Worker 	cps = lws_cose_validate_create(&info);
710*1c60b9acSAndroid Build Coastguard Worker 	if (!cps) {
711*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: sign_val_create fail\n", __func__);
712*1c60b9acSAndroid Build Coastguard Worker 		goto bail;
713*1c60b9acSAndroid Build Coastguard Worker 	}
714*1c60b9acSAndroid Build Coastguard Worker 
715*1c60b9acSAndroid Build Coastguard Worker 	n = lws_cose_validate_chunk(cps, sign1_pass_01, sizeof(sign1_pass_01),
716*1c60b9acSAndroid Build Coastguard Worker 				    NULL);
717*1c60b9acSAndroid Build Coastguard Worker 	if (n) {
718*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: sign_val_chunk failed\n", __func__);
719*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
720*1c60b9acSAndroid Build Coastguard Worker 	}
721*1c60b9acSAndroid Build Coastguard Worker 
722*1c60b9acSAndroid Build Coastguard Worker 	o = lws_cose_validate_results(cps);
723*1c60b9acSAndroid Build Coastguard Worker 	if (o->count != 1)
724*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
725*1c60b9acSAndroid Build Coastguard Worker 
726*1c60b9acSAndroid Build Coastguard Worker 	res = lws_container_of(o->head, lws_cose_validate_res_t, list);
727*1c60b9acSAndroid Build Coastguard Worker 	if (res->result)
728*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
729*1c60b9acSAndroid Build Coastguard Worker 
730*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_validate_destroy(&cps);
731*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_key_set_destroy(&set);
732*1c60b9acSAndroid Build Coastguard Worker 
733*1c60b9acSAndroid Build Coastguard Worker 	/*
734*1c60b9acSAndroid Build Coastguard Worker 	 * valid sign1 but empty key set, so can't judge it
735*1c60b9acSAndroid Build Coastguard Worker 	 */
736*1c60b9acSAndroid Build Coastguard Worker 
737*1c60b9acSAndroid Build Coastguard Worker 	lwsl_user("%s: sign1/sign-pass-01 - no key\n", __func__);
738*1c60b9acSAndroid Build Coastguard Worker 
739*1c60b9acSAndroid Build Coastguard Worker 	lws_dll2_owner_clear(&set);
740*1c60b9acSAndroid Build Coastguard Worker 
741*1c60b9acSAndroid Build Coastguard Worker 	info.sigtype = SIGTYPE_SINGLE;
742*1c60b9acSAndroid Build Coastguard Worker 	cps = lws_cose_validate_create(&info);
743*1c60b9acSAndroid Build Coastguard Worker 	if (!cps) {
744*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: sign_val_create fail\n", __func__);
745*1c60b9acSAndroid Build Coastguard Worker 		goto bail;
746*1c60b9acSAndroid Build Coastguard Worker 	}
747*1c60b9acSAndroid Build Coastguard Worker 
748*1c60b9acSAndroid Build Coastguard Worker 	n = lws_cose_validate_chunk(cps, sign1_pass_01, sizeof(sign1_pass_01),
749*1c60b9acSAndroid Build Coastguard Worker 				    NULL);
750*1c60b9acSAndroid Build Coastguard Worker 	if (n) {
751*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: sign_val_chunk failed\n", __func__);
752*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
753*1c60b9acSAndroid Build Coastguard Worker 	}
754*1c60b9acSAndroid Build Coastguard Worker 
755*1c60b9acSAndroid Build Coastguard Worker 	o = lws_cose_validate_results(cps);
756*1c60b9acSAndroid Build Coastguard Worker 	if (o->count != 1)
757*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
758*1c60b9acSAndroid Build Coastguard Worker 
759*1c60b9acSAndroid Build Coastguard Worker 	res = lws_container_of(o->head, lws_cose_validate_res_t, list);
760*1c60b9acSAndroid Build Coastguard Worker 	if (!res->result)
761*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
762*1c60b9acSAndroid Build Coastguard Worker 
763*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_validate_destroy(&cps);
764*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_key_set_destroy(&set);
765*1c60b9acSAndroid Build Coastguard Worker 
766*1c60b9acSAndroid Build Coastguard Worker 	/*
767*1c60b9acSAndroid Build Coastguard Worker 	 * valid sign1
768*1c60b9acSAndroid Build Coastguard Worker 	 */
769*1c60b9acSAndroid Build Coastguard Worker 
770*1c60b9acSAndroid Build Coastguard Worker 	lwsl_user("%s: sign1/sign-pass-02\n", __func__);
771*1c60b9acSAndroid Build Coastguard Worker 
772*1c60b9acSAndroid Build Coastguard Worker 	lws_dll2_owner_clear(&set);
773*1c60b9acSAndroid Build Coastguard Worker 	if (!lws_cose_key_import(&set, NULL, NULL, keyset1.set, keyset1.len)) {
774*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: key import fail\n", __func__);
775*1c60b9acSAndroid Build Coastguard Worker 		return 1;
776*1c60b9acSAndroid Build Coastguard Worker 	}
777*1c60b9acSAndroid Build Coastguard Worker 
778*1c60b9acSAndroid Build Coastguard Worker 	info.sigtype = SIGTYPE_SINGLE;
779*1c60b9acSAndroid Build Coastguard Worker 	info.ext_cb = xcb;
780*1c60b9acSAndroid Build Coastguard Worker 	info.ext_len = sizeof(sign1_pass_02_ext);
781*1c60b9acSAndroid Build Coastguard Worker 	cps = lws_cose_validate_create(&info);
782*1c60b9acSAndroid Build Coastguard Worker 	if (!cps) {
783*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: sign_val_create fail\n", __func__);
784*1c60b9acSAndroid Build Coastguard Worker 		goto bail;
785*1c60b9acSAndroid Build Coastguard Worker 	}
786*1c60b9acSAndroid Build Coastguard Worker 
787*1c60b9acSAndroid Build Coastguard Worker 	n = lws_cose_validate_chunk(cps, sign1_pass_02, sizeof(sign1_pass_02),
788*1c60b9acSAndroid Build Coastguard Worker 				    NULL);
789*1c60b9acSAndroid Build Coastguard Worker 	if (n) {
790*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: sign_val_chunk failed\n", __func__);
791*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
792*1c60b9acSAndroid Build Coastguard Worker 	}
793*1c60b9acSAndroid Build Coastguard Worker 
794*1c60b9acSAndroid Build Coastguard Worker 	o = lws_cose_validate_results(cps);
795*1c60b9acSAndroid Build Coastguard Worker 	if (o->count != 1)
796*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
797*1c60b9acSAndroid Build Coastguard Worker 
798*1c60b9acSAndroid Build Coastguard Worker 	res = lws_container_of(o->head, lws_cose_validate_res_t, list);
799*1c60b9acSAndroid Build Coastguard Worker 	if (res->result)
800*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
801*1c60b9acSAndroid Build Coastguard Worker 
802*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_validate_destroy(&cps);
803*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_key_set_destroy(&set);
804*1c60b9acSAndroid Build Coastguard Worker 
805*1c60b9acSAndroid Build Coastguard Worker 	/*
806*1c60b9acSAndroid Build Coastguard Worker 	 * valid sign1 without enclosing tag
807*1c60b9acSAndroid Build Coastguard Worker 	 */
808*1c60b9acSAndroid Build Coastguard Worker 
809*1c60b9acSAndroid Build Coastguard Worker 	lwsl_user("%s: sign1/sign-pass-03\n", __func__);
810*1c60b9acSAndroid Build Coastguard Worker 
811*1c60b9acSAndroid Build Coastguard Worker 	lws_dll2_owner_clear(&set);
812*1c60b9acSAndroid Build Coastguard Worker 	if (!lws_cose_key_import(&set, NULL, NULL, keyset1.set, keyset1.len)) {
813*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: key import fail\n", __func__);
814*1c60b9acSAndroid Build Coastguard Worker 		return 1;
815*1c60b9acSAndroid Build Coastguard Worker 	}
816*1c60b9acSAndroid Build Coastguard Worker 
817*1c60b9acSAndroid Build Coastguard Worker 	info.sigtype = SIGTYPE_SINGLE;
818*1c60b9acSAndroid Build Coastguard Worker 	info.ext_cb = NULL;
819*1c60b9acSAndroid Build Coastguard Worker 	info.ext_len = 0;
820*1c60b9acSAndroid Build Coastguard Worker 	cps = lws_cose_validate_create(&info);
821*1c60b9acSAndroid Build Coastguard Worker 	if (!cps) {
822*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: sign_val_create fail\n", __func__);
823*1c60b9acSAndroid Build Coastguard Worker 		goto bail;
824*1c60b9acSAndroid Build Coastguard Worker 	}
825*1c60b9acSAndroid Build Coastguard Worker 
826*1c60b9acSAndroid Build Coastguard Worker 	n = lws_cose_validate_chunk(cps, sign1_pass_03, sizeof(sign1_pass_03),
827*1c60b9acSAndroid Build Coastguard Worker 				    NULL);
828*1c60b9acSAndroid Build Coastguard Worker 	if (n) {
829*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: sign_val_chunk failed\n", __func__);
830*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
831*1c60b9acSAndroid Build Coastguard Worker 	}
832*1c60b9acSAndroid Build Coastguard Worker 
833*1c60b9acSAndroid Build Coastguard Worker 	o = lws_cose_validate_results(cps);
834*1c60b9acSAndroid Build Coastguard Worker 	if (o->count != 1)
835*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
836*1c60b9acSAndroid Build Coastguard Worker 
837*1c60b9acSAndroid Build Coastguard Worker 	res = lws_container_of(o->head, lws_cose_validate_res_t, list);
838*1c60b9acSAndroid Build Coastguard Worker 	if (res->result)
839*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
840*1c60b9acSAndroid Build Coastguard Worker 
841*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_validate_destroy(&cps);
842*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_key_set_destroy(&set);
843*1c60b9acSAndroid Build Coastguard Worker 
844*1c60b9acSAndroid Build Coastguard Worker 	/*
845*1c60b9acSAndroid Build Coastguard Worker 	 * sign1 with wrong tag
846*1c60b9acSAndroid Build Coastguard Worker 	 */
847*1c60b9acSAndroid Build Coastguard Worker 
848*1c60b9acSAndroid Build Coastguard Worker 	lwsl_user("%s: sign1/sign-fail-01\n", __func__);
849*1c60b9acSAndroid Build Coastguard Worker 
850*1c60b9acSAndroid Build Coastguard Worker 	lws_dll2_owner_clear(&set);
851*1c60b9acSAndroid Build Coastguard Worker 	if (!lws_cose_key_import(&set, NULL, NULL, keyset1.set, keyset1.len)) {
852*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: key import fail\n", __func__);
853*1c60b9acSAndroid Build Coastguard Worker 		return 1;
854*1c60b9acSAndroid Build Coastguard Worker 	}
855*1c60b9acSAndroid Build Coastguard Worker 
856*1c60b9acSAndroid Build Coastguard Worker 	info.sigtype = SIGTYPE_SINGLE;
857*1c60b9acSAndroid Build Coastguard Worker 	cps = lws_cose_validate_create(&info);
858*1c60b9acSAndroid Build Coastguard Worker 	if (!cps) {
859*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: sign_val_create fail\n", __func__);
860*1c60b9acSAndroid Build Coastguard Worker 		goto bail;
861*1c60b9acSAndroid Build Coastguard Worker 	}
862*1c60b9acSAndroid Build Coastguard Worker 
863*1c60b9acSAndroid Build Coastguard Worker 	n = lws_cose_validate_chunk(cps, sign1_fail_01, sizeof(sign1_fail_01),
864*1c60b9acSAndroid Build Coastguard Worker 				    NULL);
865*1c60b9acSAndroid Build Coastguard Worker 	if (!n) {
866*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: sign_val_chunk should have failed\n", __func__);
867*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
868*1c60b9acSAndroid Build Coastguard Worker 	}
869*1c60b9acSAndroid Build Coastguard Worker 
870*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_validate_destroy(&cps);
871*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_key_set_destroy(&set);
872*1c60b9acSAndroid Build Coastguard Worker 
873*1c60b9acSAndroid Build Coastguard Worker 	/*
874*1c60b9acSAndroid Build Coastguard Worker 	 * invalid sign1, signature tampered
875*1c60b9acSAndroid Build Coastguard Worker 	 */
876*1c60b9acSAndroid Build Coastguard Worker 
877*1c60b9acSAndroid Build Coastguard Worker 	lwsl_user("%s: sign1/sign-fail-02\n", __func__);
878*1c60b9acSAndroid Build Coastguard Worker 
879*1c60b9acSAndroid Build Coastguard Worker 	lws_dll2_owner_clear(&set);
880*1c60b9acSAndroid Build Coastguard Worker 	if (!lws_cose_key_import(&set, NULL, NULL, keyset1.set, keyset1.len)) {
881*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: key import fail\n", __func__);
882*1c60b9acSAndroid Build Coastguard Worker 		return 1;
883*1c60b9acSAndroid Build Coastguard Worker 	}
884*1c60b9acSAndroid Build Coastguard Worker 
885*1c60b9acSAndroid Build Coastguard Worker 	info.sigtype = SIGTYPE_SINGLE;
886*1c60b9acSAndroid Build Coastguard Worker 	cps = lws_cose_validate_create(&info);
887*1c60b9acSAndroid Build Coastguard Worker 	if (!cps) {
888*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: sign_val_create fail\n", __func__);
889*1c60b9acSAndroid Build Coastguard Worker 		goto bail;
890*1c60b9acSAndroid Build Coastguard Worker 	}
891*1c60b9acSAndroid Build Coastguard Worker 
892*1c60b9acSAndroid Build Coastguard Worker 	n = lws_cose_validate_chunk(cps, sign1_fail_02, sizeof(sign1_fail_02),
893*1c60b9acSAndroid Build Coastguard Worker 				    NULL);
894*1c60b9acSAndroid Build Coastguard Worker 	if (n) {
895*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: sign_val_chunk failed\n", __func__);
896*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
897*1c60b9acSAndroid Build Coastguard Worker 	}
898*1c60b9acSAndroid Build Coastguard Worker 
899*1c60b9acSAndroid Build Coastguard Worker 	o = lws_cose_validate_results(cps);
900*1c60b9acSAndroid Build Coastguard Worker 	if (o->count != 1)
901*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
902*1c60b9acSAndroid Build Coastguard Worker 
903*1c60b9acSAndroid Build Coastguard Worker 	res = lws_container_of(o->head, lws_cose_validate_res_t, list);
904*1c60b9acSAndroid Build Coastguard Worker 	if (!res->result)
905*1c60b9acSAndroid Build Coastguard Worker 		/* validation result must be fail */
906*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
907*1c60b9acSAndroid Build Coastguard Worker 
908*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_validate_destroy(&cps);
909*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_key_set_destroy(&set);
910*1c60b9acSAndroid Build Coastguard Worker 
911*1c60b9acSAndroid Build Coastguard Worker 	/*
912*1c60b9acSAndroid Build Coastguard Worker 	 * invalid sign1, alg tampered
913*1c60b9acSAndroid Build Coastguard Worker 	 */
914*1c60b9acSAndroid Build Coastguard Worker 
915*1c60b9acSAndroid Build Coastguard Worker 	lwsl_user("%s: sign1/sign-fail-03\n", __func__);
916*1c60b9acSAndroid Build Coastguard Worker 
917*1c60b9acSAndroid Build Coastguard Worker 	lws_dll2_owner_clear(&set);
918*1c60b9acSAndroid Build Coastguard Worker 	if (!lws_cose_key_import(&set, NULL, NULL, keyset1.set, keyset1.len)) {
919*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: key import fail\n", __func__);
920*1c60b9acSAndroid Build Coastguard Worker 		return 1;
921*1c60b9acSAndroid Build Coastguard Worker 	}
922*1c60b9acSAndroid Build Coastguard Worker 
923*1c60b9acSAndroid Build Coastguard Worker 	info.sigtype = SIGTYPE_SINGLE;
924*1c60b9acSAndroid Build Coastguard Worker 	cps = lws_cose_validate_create(&info);
925*1c60b9acSAndroid Build Coastguard Worker 	if (!cps) {
926*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: sign_val_create fail\n", __func__);
927*1c60b9acSAndroid Build Coastguard Worker 		goto bail;
928*1c60b9acSAndroid Build Coastguard Worker 	}
929*1c60b9acSAndroid Build Coastguard Worker 
930*1c60b9acSAndroid Build Coastguard Worker 	n = lws_cose_validate_chunk(cps, sign1_fail_03, sizeof(sign1_fail_03),
931*1c60b9acSAndroid Build Coastguard Worker 				    NULL);
932*1c60b9acSAndroid Build Coastguard Worker 	if (n) {
933*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: sign_val_chunk failed\n", __func__);
934*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
935*1c60b9acSAndroid Build Coastguard Worker 	}
936*1c60b9acSAndroid Build Coastguard Worker 
937*1c60b9acSAndroid Build Coastguard Worker 	o = lws_cose_validate_results(cps);
938*1c60b9acSAndroid Build Coastguard Worker 	if (o->count != 1)
939*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
940*1c60b9acSAndroid Build Coastguard Worker 
941*1c60b9acSAndroid Build Coastguard Worker 	res = lws_container_of(o->head, lws_cose_validate_res_t, list);
942*1c60b9acSAndroid Build Coastguard Worker 	if (!res->result)
943*1c60b9acSAndroid Build Coastguard Worker 		/* validation result must be fail */
944*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
945*1c60b9acSAndroid Build Coastguard Worker 
946*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_validate_destroy(&cps);
947*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_key_set_destroy(&set);
948*1c60b9acSAndroid Build Coastguard Worker 
949*1c60b9acSAndroid Build Coastguard Worker 	/*
950*1c60b9acSAndroid Build Coastguard Worker 	 * invalid sign1, alg sign tampered
951*1c60b9acSAndroid Build Coastguard Worker 	 */
952*1c60b9acSAndroid Build Coastguard Worker 
953*1c60b9acSAndroid Build Coastguard Worker 	lwsl_user("%s: sign1/sign-fail-04\n", __func__);
954*1c60b9acSAndroid Build Coastguard Worker 
955*1c60b9acSAndroid Build Coastguard Worker 	lws_dll2_owner_clear(&set);
956*1c60b9acSAndroid Build Coastguard Worker 	if (!lws_cose_key_import(&set, NULL, NULL, keyset1.set, keyset1.len)) {
957*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: key import fail\n", __func__);
958*1c60b9acSAndroid Build Coastguard Worker 		return 1;
959*1c60b9acSAndroid Build Coastguard Worker 	}
960*1c60b9acSAndroid Build Coastguard Worker 
961*1c60b9acSAndroid Build Coastguard Worker 	info.sigtype = SIGTYPE_SINGLE;
962*1c60b9acSAndroid Build Coastguard Worker 	cps = lws_cose_validate_create(&info);
963*1c60b9acSAndroid Build Coastguard Worker 	if (!cps) {
964*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: sign_val_create fail\n", __func__);
965*1c60b9acSAndroid Build Coastguard Worker 		goto bail;
966*1c60b9acSAndroid Build Coastguard Worker 	}
967*1c60b9acSAndroid Build Coastguard Worker 
968*1c60b9acSAndroid Build Coastguard Worker 	n = lws_cose_validate_chunk(cps, sign1_fail_04, sizeof(sign1_fail_04),
969*1c60b9acSAndroid Build Coastguard Worker 				    NULL);
970*1c60b9acSAndroid Build Coastguard Worker 	if (n) {
971*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: sign_val_chunk failed\n", __func__);
972*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
973*1c60b9acSAndroid Build Coastguard Worker 	}
974*1c60b9acSAndroid Build Coastguard Worker 
975*1c60b9acSAndroid Build Coastguard Worker 	o = lws_cose_validate_results(cps);
976*1c60b9acSAndroid Build Coastguard Worker 	if (o->count != 1)
977*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
978*1c60b9acSAndroid Build Coastguard Worker 
979*1c60b9acSAndroid Build Coastguard Worker 	res = lws_container_of(o->head, lws_cose_validate_res_t, list);
980*1c60b9acSAndroid Build Coastguard Worker 	if (!res->result)
981*1c60b9acSAndroid Build Coastguard Worker 		/* validation result must be fail */
982*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
983*1c60b9acSAndroid Build Coastguard Worker 
984*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_validate_destroy(&cps);
985*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_key_set_destroy(&set);
986*1c60b9acSAndroid Build Coastguard Worker 
987*1c60b9acSAndroid Build Coastguard Worker 	/*
988*1c60b9acSAndroid Build Coastguard Worker 	 * invalid sign1, protected attributes tampered
989*1c60b9acSAndroid Build Coastguard Worker 	 */
990*1c60b9acSAndroid Build Coastguard Worker 
991*1c60b9acSAndroid Build Coastguard Worker 	lwsl_user("%s: sign1/sign-fail-06\n", __func__);
992*1c60b9acSAndroid Build Coastguard Worker 
993*1c60b9acSAndroid Build Coastguard Worker 	lws_dll2_owner_clear(&set);
994*1c60b9acSAndroid Build Coastguard Worker 	if (!lws_cose_key_import(&set, NULL, NULL, keyset1.set, keyset1.len)) {
995*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: key import fail\n", __func__);
996*1c60b9acSAndroid Build Coastguard Worker 		return 1;
997*1c60b9acSAndroid Build Coastguard Worker 	}
998*1c60b9acSAndroid Build Coastguard Worker 
999*1c60b9acSAndroid Build Coastguard Worker 	info.sigtype = SIGTYPE_SINGLE;
1000*1c60b9acSAndroid Build Coastguard Worker 	cps = lws_cose_validate_create(&info);
1001*1c60b9acSAndroid Build Coastguard Worker 	if (!cps) {
1002*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: sign_val_create fail\n", __func__);
1003*1c60b9acSAndroid Build Coastguard Worker 		goto bail;
1004*1c60b9acSAndroid Build Coastguard Worker 	}
1005*1c60b9acSAndroid Build Coastguard Worker 
1006*1c60b9acSAndroid Build Coastguard Worker 	n = lws_cose_validate_chunk(cps, sign1_fail_06, sizeof(sign1_fail_06),
1007*1c60b9acSAndroid Build Coastguard Worker 				    NULL);
1008*1c60b9acSAndroid Build Coastguard Worker 	if (n) {
1009*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: sign_val_chunk failed\n", __func__);
1010*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
1011*1c60b9acSAndroid Build Coastguard Worker 	}
1012*1c60b9acSAndroid Build Coastguard Worker 
1013*1c60b9acSAndroid Build Coastguard Worker 	o = lws_cose_validate_results(cps);
1014*1c60b9acSAndroid Build Coastguard Worker 	if (o->count != 1)
1015*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
1016*1c60b9acSAndroid Build Coastguard Worker 
1017*1c60b9acSAndroid Build Coastguard Worker 	res = lws_container_of(o->head, lws_cose_validate_res_t, list);
1018*1c60b9acSAndroid Build Coastguard Worker 	if (!res->result)
1019*1c60b9acSAndroid Build Coastguard Worker 		/* validation result must be fail */
1020*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
1021*1c60b9acSAndroid Build Coastguard Worker 
1022*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_validate_destroy(&cps);
1023*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_key_set_destroy(&set);
1024*1c60b9acSAndroid Build Coastguard Worker 
1025*1c60b9acSAndroid Build Coastguard Worker 	/*
1026*1c60b9acSAndroid Build Coastguard Worker 	 * invalid sign1, protected attribute removed
1027*1c60b9acSAndroid Build Coastguard Worker 	 */
1028*1c60b9acSAndroid Build Coastguard Worker 
1029*1c60b9acSAndroid Build Coastguard Worker 	lwsl_user("%s: sign1/sign-fail-07\n", __func__);
1030*1c60b9acSAndroid Build Coastguard Worker 
1031*1c60b9acSAndroid Build Coastguard Worker 	lws_dll2_owner_clear(&set);
1032*1c60b9acSAndroid Build Coastguard Worker 	if (!lws_cose_key_import(&set, NULL, NULL, keyset1.set, keyset1.len)) {
1033*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: key import fail\n", __func__);
1034*1c60b9acSAndroid Build Coastguard Worker 		return 1;
1035*1c60b9acSAndroid Build Coastguard Worker 	}
1036*1c60b9acSAndroid Build Coastguard Worker 
1037*1c60b9acSAndroid Build Coastguard Worker 	info.sigtype = SIGTYPE_SINGLE;
1038*1c60b9acSAndroid Build Coastguard Worker 	cps = lws_cose_validate_create(&info);
1039*1c60b9acSAndroid Build Coastguard Worker 	if (!cps) {
1040*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: sign_val_create fail\n", __func__);
1041*1c60b9acSAndroid Build Coastguard Worker 		goto bail;
1042*1c60b9acSAndroid Build Coastguard Worker 	}
1043*1c60b9acSAndroid Build Coastguard Worker 
1044*1c60b9acSAndroid Build Coastguard Worker 	n = lws_cose_validate_chunk(cps, sign1_fail_07, sizeof(sign1_fail_07),
1045*1c60b9acSAndroid Build Coastguard Worker 				    NULL);
1046*1c60b9acSAndroid Build Coastguard Worker 	if (n) {
1047*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: sign_val_chunk failed\n", __func__);
1048*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
1049*1c60b9acSAndroid Build Coastguard Worker 	}
1050*1c60b9acSAndroid Build Coastguard Worker 
1051*1c60b9acSAndroid Build Coastguard Worker 	o = lws_cose_validate_results(cps);
1052*1c60b9acSAndroid Build Coastguard Worker 	if (o->count != 1)
1053*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
1054*1c60b9acSAndroid Build Coastguard Worker 
1055*1c60b9acSAndroid Build Coastguard Worker 	res = lws_container_of(o->head, lws_cose_validate_res_t, list);
1056*1c60b9acSAndroid Build Coastguard Worker 	if (!res->result)
1057*1c60b9acSAndroid Build Coastguard Worker 		/* validation result must be fail */
1058*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
1059*1c60b9acSAndroid Build Coastguard Worker 
1060*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_validate_destroy(&cps);
1061*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_key_set_destroy(&set);
1062*1c60b9acSAndroid Build Coastguard Worker 
1063*1c60b9acSAndroid Build Coastguard Worker 	/*
1064*1c60b9acSAndroid Build Coastguard Worker 	 * valid sign we have key for
1065*1c60b9acSAndroid Build Coastguard Worker 	 */
1066*1c60b9acSAndroid Build Coastguard Worker 
1067*1c60b9acSAndroid Build Coastguard Worker 	lwsl_user("%s: sign/sign-pass-01\n", __func__);
1068*1c60b9acSAndroid Build Coastguard Worker 
1069*1c60b9acSAndroid Build Coastguard Worker 	lws_dll2_owner_clear(&set);
1070*1c60b9acSAndroid Build Coastguard Worker 	if (!lws_cose_key_import(&set, NULL, NULL, keyset1.set, keyset1.len)) {
1071*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: key import fail\n", __func__);
1072*1c60b9acSAndroid Build Coastguard Worker 		return 1;
1073*1c60b9acSAndroid Build Coastguard Worker 	}
1074*1c60b9acSAndroid Build Coastguard Worker 
1075*1c60b9acSAndroid Build Coastguard Worker 	info.sigtype = SIGTYPE_MULTI;
1076*1c60b9acSAndroid Build Coastguard Worker 	cps = lws_cose_validate_create(&info);
1077*1c60b9acSAndroid Build Coastguard Worker 	if (!cps) {
1078*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: sign_val_create fail\n", __func__);
1079*1c60b9acSAndroid Build Coastguard Worker 		goto bail;
1080*1c60b9acSAndroid Build Coastguard Worker 	}
1081*1c60b9acSAndroid Build Coastguard Worker 
1082*1c60b9acSAndroid Build Coastguard Worker 	n = lws_cose_validate_chunk(cps, sign_pass_01, sizeof(sign_pass_01),
1083*1c60b9acSAndroid Build Coastguard Worker 				    NULL);
1084*1c60b9acSAndroid Build Coastguard Worker 	if (n) {
1085*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: sign_val_chunk failed\n", __func__);
1086*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
1087*1c60b9acSAndroid Build Coastguard Worker 	}
1088*1c60b9acSAndroid Build Coastguard Worker 
1089*1c60b9acSAndroid Build Coastguard Worker 	o = lws_cose_validate_results(cps);
1090*1c60b9acSAndroid Build Coastguard Worker 	if (o->count != 1) {
1091*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: results: %d\n", __func__, o->count);
1092*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
1093*1c60b9acSAndroid Build Coastguard Worker 	}
1094*1c60b9acSAndroid Build Coastguard Worker 
1095*1c60b9acSAndroid Build Coastguard Worker 	res = lws_container_of(o->head, lws_cose_validate_res_t, list);
1096*1c60b9acSAndroid Build Coastguard Worker 	if (res->result)
1097*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
1098*1c60b9acSAndroid Build Coastguard Worker 
1099*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_validate_destroy(&cps);
1100*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_key_set_destroy(&set);
1101*1c60b9acSAndroid Build Coastguard Worker 
1102*1c60b9acSAndroid Build Coastguard Worker 	/*
1103*1c60b9acSAndroid Build Coastguard Worker 	 * valid sign we have key for
1104*1c60b9acSAndroid Build Coastguard Worker 	 */
1105*1c60b9acSAndroid Build Coastguard Worker 
1106*1c60b9acSAndroid Build Coastguard Worker 	lwsl_user("%s: sign/sign-pass-02\n", __func__);
1107*1c60b9acSAndroid Build Coastguard Worker 
1108*1c60b9acSAndroid Build Coastguard Worker 	lws_dll2_owner_clear(&set);
1109*1c60b9acSAndroid Build Coastguard Worker 	if (!lws_cose_key_import(&set, NULL, NULL, keyset1.set, keyset1.len)) {
1110*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: key import fail\n", __func__);
1111*1c60b9acSAndroid Build Coastguard Worker 		return 1;
1112*1c60b9acSAndroid Build Coastguard Worker 	}
1113*1c60b9acSAndroid Build Coastguard Worker 
1114*1c60b9acSAndroid Build Coastguard Worker 	info.sigtype = SIGTYPE_MULTI;
1115*1c60b9acSAndroid Build Coastguard Worker 	info.ext_cb = xcb;
1116*1c60b9acSAndroid Build Coastguard Worker 	info.ext_len = sizeof(sign1_pass_02_ext);
1117*1c60b9acSAndroid Build Coastguard Worker 	cps = lws_cose_validate_create(&info);
1118*1c60b9acSAndroid Build Coastguard Worker 	if (!cps) {
1119*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: sign_val_create fail\n", __func__);
1120*1c60b9acSAndroid Build Coastguard Worker 		goto bail;
1121*1c60b9acSAndroid Build Coastguard Worker 	}
1122*1c60b9acSAndroid Build Coastguard Worker 
1123*1c60b9acSAndroid Build Coastguard Worker 	n = lws_cose_validate_chunk(cps, sign_pass_02, sizeof(sign_pass_02),
1124*1c60b9acSAndroid Build Coastguard Worker 				    NULL);
1125*1c60b9acSAndroid Build Coastguard Worker 	if (n) {
1126*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: sign_val_chunk failed\n", __func__);
1127*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
1128*1c60b9acSAndroid Build Coastguard Worker 	}
1129*1c60b9acSAndroid Build Coastguard Worker 
1130*1c60b9acSAndroid Build Coastguard Worker 	o = lws_cose_validate_results(cps);
1131*1c60b9acSAndroid Build Coastguard Worker 	if (o->count != 1) {
1132*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: results: %d\n", __func__, o->count);
1133*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
1134*1c60b9acSAndroid Build Coastguard Worker 	}
1135*1c60b9acSAndroid Build Coastguard Worker 
1136*1c60b9acSAndroid Build Coastguard Worker 	res = lws_container_of(o->head, lws_cose_validate_res_t, list);
1137*1c60b9acSAndroid Build Coastguard Worker 	if (res->result)
1138*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
1139*1c60b9acSAndroid Build Coastguard Worker 
1140*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_validate_destroy(&cps);
1141*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_key_set_destroy(&set);
1142*1c60b9acSAndroid Build Coastguard Worker 
1143*1c60b9acSAndroid Build Coastguard Worker 	/*
1144*1c60b9acSAndroid Build Coastguard Worker 	 * valid sign we have key for
1145*1c60b9acSAndroid Build Coastguard Worker 	 */
1146*1c60b9acSAndroid Build Coastguard Worker 
1147*1c60b9acSAndroid Build Coastguard Worker 	lwsl_user("%s: sign/sign-pass-03\n", __func__);
1148*1c60b9acSAndroid Build Coastguard Worker 
1149*1c60b9acSAndroid Build Coastguard Worker 	lws_dll2_owner_clear(&set);
1150*1c60b9acSAndroid Build Coastguard Worker 	if (!lws_cose_key_import(&set, NULL, NULL, keyset1.set, keyset1.len)) {
1151*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: key import fail\n", __func__);
1152*1c60b9acSAndroid Build Coastguard Worker 		return 1;
1153*1c60b9acSAndroid Build Coastguard Worker 	}
1154*1c60b9acSAndroid Build Coastguard Worker 
1155*1c60b9acSAndroid Build Coastguard Worker 	info.sigtype = SIGTYPE_MULTI;
1156*1c60b9acSAndroid Build Coastguard Worker 	info.ext_cb = NULL;
1157*1c60b9acSAndroid Build Coastguard Worker 	info.ext_len = 0;
1158*1c60b9acSAndroid Build Coastguard Worker 	cps = lws_cose_validate_create(&info);
1159*1c60b9acSAndroid Build Coastguard Worker 	if (!cps) {
1160*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: sign_val_create fail\n", __func__);
1161*1c60b9acSAndroid Build Coastguard Worker 		goto bail;
1162*1c60b9acSAndroid Build Coastguard Worker 	}
1163*1c60b9acSAndroid Build Coastguard Worker 
1164*1c60b9acSAndroid Build Coastguard Worker 	n = lws_cose_validate_chunk(cps, sign_pass_03, sizeof(sign_pass_03),
1165*1c60b9acSAndroid Build Coastguard Worker 				    NULL);
1166*1c60b9acSAndroid Build Coastguard Worker 	if (n) {
1167*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: sign_val_chunk failed\n", __func__);
1168*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
1169*1c60b9acSAndroid Build Coastguard Worker 	}
1170*1c60b9acSAndroid Build Coastguard Worker 
1171*1c60b9acSAndroid Build Coastguard Worker 	o = lws_cose_validate_results(cps);
1172*1c60b9acSAndroid Build Coastguard Worker 	if (o->count != 1) {
1173*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: results: %d\n", __func__, o->count);
1174*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
1175*1c60b9acSAndroid Build Coastguard Worker 	}
1176*1c60b9acSAndroid Build Coastguard Worker 
1177*1c60b9acSAndroid Build Coastguard Worker 	res = lws_container_of(o->head, lws_cose_validate_res_t, list);
1178*1c60b9acSAndroid Build Coastguard Worker 	if (res->result)
1179*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
1180*1c60b9acSAndroid Build Coastguard Worker 
1181*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_validate_destroy(&cps);
1182*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_key_set_destroy(&set);
1183*1c60b9acSAndroid Build Coastguard Worker 
1184*1c60b9acSAndroid Build Coastguard Worker 	/*
1185*1c60b9acSAndroid Build Coastguard Worker 	 * wrong cbor tag
1186*1c60b9acSAndroid Build Coastguard Worker 	 */
1187*1c60b9acSAndroid Build Coastguard Worker 
1188*1c60b9acSAndroid Build Coastguard Worker 	lwsl_user("%s: sign/sign-fail-01\n", __func__);
1189*1c60b9acSAndroid Build Coastguard Worker 
1190*1c60b9acSAndroid Build Coastguard Worker 	lws_dll2_owner_clear(&set);
1191*1c60b9acSAndroid Build Coastguard Worker 	if (!lws_cose_key_import(&set, NULL, NULL, keyset1.set, keyset1.len)) {
1192*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: key import fail\n", __func__);
1193*1c60b9acSAndroid Build Coastguard Worker 		return 1;
1194*1c60b9acSAndroid Build Coastguard Worker 	}
1195*1c60b9acSAndroid Build Coastguard Worker 
1196*1c60b9acSAndroid Build Coastguard Worker 	info.sigtype = SIGTYPE_MULTI;
1197*1c60b9acSAndroid Build Coastguard Worker 	cps = lws_cose_validate_create(&info);
1198*1c60b9acSAndroid Build Coastguard Worker 	if (!cps) {
1199*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: sign_val_create fail\n", __func__);
1200*1c60b9acSAndroid Build Coastguard Worker 		goto bail;
1201*1c60b9acSAndroid Build Coastguard Worker 	}
1202*1c60b9acSAndroid Build Coastguard Worker 
1203*1c60b9acSAndroid Build Coastguard Worker 	n = lws_cose_validate_chunk(cps, sign_fail_01, sizeof(sign_fail_01),
1204*1c60b9acSAndroid Build Coastguard Worker 				    NULL);
1205*1c60b9acSAndroid Build Coastguard Worker 	if (!n) {
1206*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: sign_val_chunk should fail\n", __func__);
1207*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
1208*1c60b9acSAndroid Build Coastguard Worker 	}
1209*1c60b9acSAndroid Build Coastguard Worker 
1210*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_validate_destroy(&cps);
1211*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_key_set_destroy(&set);
1212*1c60b9acSAndroid Build Coastguard Worker 
1213*1c60b9acSAndroid Build Coastguard Worker 	/*
1214*1c60b9acSAndroid Build Coastguard Worker 	 * tampered signature
1215*1c60b9acSAndroid Build Coastguard Worker 	 */
1216*1c60b9acSAndroid Build Coastguard Worker 
1217*1c60b9acSAndroid Build Coastguard Worker 	lwsl_user("%s: sign/sign-fail-02\n", __func__);
1218*1c60b9acSAndroid Build Coastguard Worker 
1219*1c60b9acSAndroid Build Coastguard Worker 	lws_dll2_owner_clear(&set);
1220*1c60b9acSAndroid Build Coastguard Worker 	if (!lws_cose_key_import(&set, NULL, NULL, keyset1.set, keyset1.len)) {
1221*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: key import fail\n", __func__);
1222*1c60b9acSAndroid Build Coastguard Worker 		return 1;
1223*1c60b9acSAndroid Build Coastguard Worker 	}
1224*1c60b9acSAndroid Build Coastguard Worker 
1225*1c60b9acSAndroid Build Coastguard Worker 	info.sigtype = SIGTYPE_MULTI;
1226*1c60b9acSAndroid Build Coastguard Worker 	cps = lws_cose_validate_create(&info);
1227*1c60b9acSAndroid Build Coastguard Worker 	if (!cps) {
1228*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: sign_val_create fail\n", __func__);
1229*1c60b9acSAndroid Build Coastguard Worker 		goto bail;
1230*1c60b9acSAndroid Build Coastguard Worker 	}
1231*1c60b9acSAndroid Build Coastguard Worker 
1232*1c60b9acSAndroid Build Coastguard Worker 	n = lws_cose_validate_chunk(cps, sign_fail_02, sizeof(sign_fail_02),
1233*1c60b9acSAndroid Build Coastguard Worker 				    NULL);
1234*1c60b9acSAndroid Build Coastguard Worker 	if (n) {
1235*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: sign_val_chunk failed\n", __func__);
1236*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
1237*1c60b9acSAndroid Build Coastguard Worker 	}
1238*1c60b9acSAndroid Build Coastguard Worker 
1239*1c60b9acSAndroid Build Coastguard Worker 	o = lws_cose_validate_results(cps);
1240*1c60b9acSAndroid Build Coastguard Worker 	if (o->count != 1) {
1241*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: results: %d\n", __func__, o->count);
1242*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
1243*1c60b9acSAndroid Build Coastguard Worker 	}
1244*1c60b9acSAndroid Build Coastguard Worker 
1245*1c60b9acSAndroid Build Coastguard Worker 	res = lws_container_of(o->head, lws_cose_validate_res_t, list);
1246*1c60b9acSAndroid Build Coastguard Worker 	if (!res->result)
1247*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
1248*1c60b9acSAndroid Build Coastguard Worker 
1249*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_validate_destroy(&cps);
1250*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_key_set_destroy(&set);
1251*1c60b9acSAndroid Build Coastguard Worker 
1252*1c60b9acSAndroid Build Coastguard Worker 	/*
1253*1c60b9acSAndroid Build Coastguard Worker 	 * tampered sign alg -999
1254*1c60b9acSAndroid Build Coastguard Worker 	 */
1255*1c60b9acSAndroid Build Coastguard Worker 
1256*1c60b9acSAndroid Build Coastguard Worker 	lwsl_user("%s: sign/sign-fail-03\n", __func__);
1257*1c60b9acSAndroid Build Coastguard Worker 
1258*1c60b9acSAndroid Build Coastguard Worker 	lws_dll2_owner_clear(&set);
1259*1c60b9acSAndroid Build Coastguard Worker 	if (!lws_cose_key_import(&set, NULL, NULL, keyset1.set, keyset1.len)) {
1260*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: key import fail\n", __func__);
1261*1c60b9acSAndroid Build Coastguard Worker 		return 1;
1262*1c60b9acSAndroid Build Coastguard Worker 	}
1263*1c60b9acSAndroid Build Coastguard Worker 
1264*1c60b9acSAndroid Build Coastguard Worker 	info.sigtype = SIGTYPE_MULTI;
1265*1c60b9acSAndroid Build Coastguard Worker 	cps = lws_cose_validate_create(&info);
1266*1c60b9acSAndroid Build Coastguard Worker 	if (!cps) {
1267*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: sign_val_create fail\n", __func__);
1268*1c60b9acSAndroid Build Coastguard Worker 		goto bail;
1269*1c60b9acSAndroid Build Coastguard Worker 	}
1270*1c60b9acSAndroid Build Coastguard Worker 
1271*1c60b9acSAndroid Build Coastguard Worker 	n = lws_cose_validate_chunk(cps, sign_fail_03, sizeof(sign_fail_03),
1272*1c60b9acSAndroid Build Coastguard Worker 				    NULL);
1273*1c60b9acSAndroid Build Coastguard Worker 	if (n) {
1274*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: sign_val_chunk failed\n", __func__);
1275*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
1276*1c60b9acSAndroid Build Coastguard Worker 	}
1277*1c60b9acSAndroid Build Coastguard Worker 
1278*1c60b9acSAndroid Build Coastguard Worker 	o = lws_cose_validate_results(cps);
1279*1c60b9acSAndroid Build Coastguard Worker 	if (o->count != 1) {
1280*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: results: %d\n", __func__, o->count);
1281*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
1282*1c60b9acSAndroid Build Coastguard Worker 	}
1283*1c60b9acSAndroid Build Coastguard Worker 
1284*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_validate_destroy(&cps);
1285*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_key_set_destroy(&set);
1286*1c60b9acSAndroid Build Coastguard Worker 
1287*1c60b9acSAndroid Build Coastguard Worker 	/*
1288*1c60b9acSAndroid Build Coastguard Worker 	 * tampered sign alg 0
1289*1c60b9acSAndroid Build Coastguard Worker 	 */
1290*1c60b9acSAndroid Build Coastguard Worker 
1291*1c60b9acSAndroid Build Coastguard Worker 	lwsl_user("%s: sign/sign-fail-04\n", __func__);
1292*1c60b9acSAndroid Build Coastguard Worker 
1293*1c60b9acSAndroid Build Coastguard Worker 	lws_dll2_owner_clear(&set);
1294*1c60b9acSAndroid Build Coastguard Worker 	if (!lws_cose_key_import(&set, NULL, NULL, keyset1.set, keyset1.len)) {
1295*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: key import fail\n", __func__);
1296*1c60b9acSAndroid Build Coastguard Worker 		return 1;
1297*1c60b9acSAndroid Build Coastguard Worker 	}
1298*1c60b9acSAndroid Build Coastguard Worker 
1299*1c60b9acSAndroid Build Coastguard Worker 	info.sigtype = SIGTYPE_MULTI;
1300*1c60b9acSAndroid Build Coastguard Worker 	cps = lws_cose_validate_create(&info);
1301*1c60b9acSAndroid Build Coastguard Worker 	if (!cps) {
1302*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: sign_val_create fail\n", __func__);
1303*1c60b9acSAndroid Build Coastguard Worker 		goto bail;
1304*1c60b9acSAndroid Build Coastguard Worker 	}
1305*1c60b9acSAndroid Build Coastguard Worker 
1306*1c60b9acSAndroid Build Coastguard Worker 	n = lws_cose_validate_chunk(cps, sign_fail_04, sizeof(sign_fail_04),
1307*1c60b9acSAndroid Build Coastguard Worker 				    NULL);
1308*1c60b9acSAndroid Build Coastguard Worker 	if (n) {
1309*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: sign_val_chunk failed\n", __func__);
1310*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
1311*1c60b9acSAndroid Build Coastguard Worker 	}
1312*1c60b9acSAndroid Build Coastguard Worker 
1313*1c60b9acSAndroid Build Coastguard Worker 	o = lws_cose_validate_results(cps);
1314*1c60b9acSAndroid Build Coastguard Worker 	if (o->count != 1) {
1315*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: results: %d\n", __func__, o->count);
1316*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
1317*1c60b9acSAndroid Build Coastguard Worker 	}
1318*1c60b9acSAndroid Build Coastguard Worker 
1319*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_validate_destroy(&cps);
1320*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_key_set_destroy(&set);
1321*1c60b9acSAndroid Build Coastguard Worker 
1322*1c60b9acSAndroid Build Coastguard Worker 	/*
1323*1c60b9acSAndroid Build Coastguard Worker 	 * add protected attribute
1324*1c60b9acSAndroid Build Coastguard Worker 	 */
1325*1c60b9acSAndroid Build Coastguard Worker 
1326*1c60b9acSAndroid Build Coastguard Worker 	lwsl_user("%s: sign/sign-fail-06\n", __func__);
1327*1c60b9acSAndroid Build Coastguard Worker 
1328*1c60b9acSAndroid Build Coastguard Worker 	lws_dll2_owner_clear(&set);
1329*1c60b9acSAndroid Build Coastguard Worker 	if (!lws_cose_key_import(&set, NULL, NULL, keyset1.set, keyset1.len)) {
1330*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: key import fail\n", __func__);
1331*1c60b9acSAndroid Build Coastguard Worker 		return 1;
1332*1c60b9acSAndroid Build Coastguard Worker 	}
1333*1c60b9acSAndroid Build Coastguard Worker 
1334*1c60b9acSAndroid Build Coastguard Worker 	info.sigtype = SIGTYPE_MULTI;
1335*1c60b9acSAndroid Build Coastguard Worker 	cps = lws_cose_validate_create(&info);
1336*1c60b9acSAndroid Build Coastguard Worker 	if (!cps) {
1337*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: sign_val_create fail\n", __func__);
1338*1c60b9acSAndroid Build Coastguard Worker 		goto bail;
1339*1c60b9acSAndroid Build Coastguard Worker 	}
1340*1c60b9acSAndroid Build Coastguard Worker 
1341*1c60b9acSAndroid Build Coastguard Worker 	n = lws_cose_validate_chunk(cps, sign_fail_06, sizeof(sign_fail_06),
1342*1c60b9acSAndroid Build Coastguard Worker 				    NULL);
1343*1c60b9acSAndroid Build Coastguard Worker 	if (n) {
1344*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: sign_val_chunk failed\n", __func__);
1345*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
1346*1c60b9acSAndroid Build Coastguard Worker 	}
1347*1c60b9acSAndroid Build Coastguard Worker 
1348*1c60b9acSAndroid Build Coastguard Worker 	o = lws_cose_validate_results(cps);
1349*1c60b9acSAndroid Build Coastguard Worker 	if (o->count != 1) {
1350*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: results: %d\n", __func__, o->count);
1351*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
1352*1c60b9acSAndroid Build Coastguard Worker 	}
1353*1c60b9acSAndroid Build Coastguard Worker 
1354*1c60b9acSAndroid Build Coastguard Worker 	res = lws_container_of(o->head, lws_cose_validate_res_t, list);
1355*1c60b9acSAndroid Build Coastguard Worker 	if (!res->result)
1356*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
1357*1c60b9acSAndroid Build Coastguard Worker 
1358*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_validate_destroy(&cps);
1359*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_key_set_destroy(&set);
1360*1c60b9acSAndroid Build Coastguard Worker 
1361*1c60b9acSAndroid Build Coastguard Worker 	/*
1362*1c60b9acSAndroid Build Coastguard Worker 	 * remove protected attribute
1363*1c60b9acSAndroid Build Coastguard Worker 	 */
1364*1c60b9acSAndroid Build Coastguard Worker 
1365*1c60b9acSAndroid Build Coastguard Worker 	lwsl_user("%s: sign/sign-fail-07\n", __func__);
1366*1c60b9acSAndroid Build Coastguard Worker 
1367*1c60b9acSAndroid Build Coastguard Worker 	lws_dll2_owner_clear(&set);
1368*1c60b9acSAndroid Build Coastguard Worker 	if (!lws_cose_key_import(&set, NULL, NULL, keyset1.set, keyset1.len)) {
1369*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: key import fail\n", __func__);
1370*1c60b9acSAndroid Build Coastguard Worker 		return 1;
1371*1c60b9acSAndroid Build Coastguard Worker 	}
1372*1c60b9acSAndroid Build Coastguard Worker 
1373*1c60b9acSAndroid Build Coastguard Worker 	info.sigtype = SIGTYPE_MULTI;
1374*1c60b9acSAndroid Build Coastguard Worker 	cps = lws_cose_validate_create(&info);
1375*1c60b9acSAndroid Build Coastguard Worker 	if (!cps) {
1376*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: sign_val_create fail\n", __func__);
1377*1c60b9acSAndroid Build Coastguard Worker 		goto bail;
1378*1c60b9acSAndroid Build Coastguard Worker 	}
1379*1c60b9acSAndroid Build Coastguard Worker 
1380*1c60b9acSAndroid Build Coastguard Worker 	n = lws_cose_validate_chunk(cps, sign_fail_07, sizeof(sign_fail_07),
1381*1c60b9acSAndroid Build Coastguard Worker 				    NULL);
1382*1c60b9acSAndroid Build Coastguard Worker 	if (n) {
1383*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: sign_val_chunk failed\n", __func__);
1384*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
1385*1c60b9acSAndroid Build Coastguard Worker 	}
1386*1c60b9acSAndroid Build Coastguard Worker 
1387*1c60b9acSAndroid Build Coastguard Worker 	o = lws_cose_validate_results(cps);
1388*1c60b9acSAndroid Build Coastguard Worker 	if (o->count != 1) {
1389*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: results: %d\n", __func__, o->count);
1390*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
1391*1c60b9acSAndroid Build Coastguard Worker 	}
1392*1c60b9acSAndroid Build Coastguard Worker 
1393*1c60b9acSAndroid Build Coastguard Worker 	res = lws_container_of(o->head, lws_cose_validate_res_t, list);
1394*1c60b9acSAndroid Build Coastguard Worker 	if (!res->result)
1395*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
1396*1c60b9acSAndroid Build Coastguard Worker 
1397*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_validate_destroy(&cps);
1398*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_key_set_destroy(&set);
1399*1c60b9acSAndroid Build Coastguard Worker 
1400*1c60b9acSAndroid Build Coastguard Worker 
1401*1c60b9acSAndroid Build Coastguard Worker 	/*
1402*1c60b9acSAndroid Build Coastguard Worker 	 * valid HMAC sign we have key for
1403*1c60b9acSAndroid Build Coastguard Worker 	 */
1404*1c60b9acSAndroid Build Coastguard Worker 
1405*1c60b9acSAndroid Build Coastguard Worker 	lwsl_user("%s: hmac-examples/hmac-01\n", __func__);
1406*1c60b9acSAndroid Build Coastguard Worker 
1407*1c60b9acSAndroid Build Coastguard Worker 	lws_dll2_owner_clear(&set);
1408*1c60b9acSAndroid Build Coastguard Worker 	if (!lws_cose_key_import(&set, NULL, NULL, keyset1.set, keyset1.len)) {
1409*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: key import fail\n", __func__);
1410*1c60b9acSAndroid Build Coastguard Worker 		return 1;
1411*1c60b9acSAndroid Build Coastguard Worker 	}
1412*1c60b9acSAndroid Build Coastguard Worker 
1413*1c60b9acSAndroid Build Coastguard Worker 	info.sigtype = SIGTYPE_MAC;
1414*1c60b9acSAndroid Build Coastguard Worker 	cps = lws_cose_validate_create(&info);
1415*1c60b9acSAndroid Build Coastguard Worker 	if (!cps) {
1416*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: sign_val_create fail\n", __func__);
1417*1c60b9acSAndroid Build Coastguard Worker 		goto bail;
1418*1c60b9acSAndroid Build Coastguard Worker 	}
1419*1c60b9acSAndroid Build Coastguard Worker 
1420*1c60b9acSAndroid Build Coastguard Worker 	n = lws_cose_validate_chunk(cps, sign_hmac_01, sizeof(sign_hmac_01),
1421*1c60b9acSAndroid Build Coastguard Worker 				    NULL);
1422*1c60b9acSAndroid Build Coastguard Worker 	if (n) {
1423*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: sign_val_chunk failed\n", __func__);
1424*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
1425*1c60b9acSAndroid Build Coastguard Worker 	}
1426*1c60b9acSAndroid Build Coastguard Worker 
1427*1c60b9acSAndroid Build Coastguard Worker 	o = lws_cose_validate_results(cps);
1428*1c60b9acSAndroid Build Coastguard Worker 	if (o->count != 1) {
1429*1c60b9acSAndroid Build Coastguard Worker 		lwsl_err("%s: count %d\n", __func__, o->count);
1430*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
1431*1c60b9acSAndroid Build Coastguard Worker 	}
1432*1c60b9acSAndroid Build Coastguard Worker 
1433*1c60b9acSAndroid Build Coastguard Worker 	res = lws_container_of(o->head, lws_cose_validate_res_t, list);
1434*1c60b9acSAndroid Build Coastguard Worker 	if (res->result) {
1435*1c60b9acSAndroid Build Coastguard Worker 		lwsl_err("%s: result is fail\n", __func__);
1436*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
1437*1c60b9acSAndroid Build Coastguard Worker 	}
1438*1c60b9acSAndroid Build Coastguard Worker 
1439*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_validate_destroy(&cps);
1440*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_key_set_destroy(&set);
1441*1c60b9acSAndroid Build Coastguard Worker 
1442*1c60b9acSAndroid Build Coastguard Worker 	/*
1443*1c60b9acSAndroid Build Coastguard Worker 	 * valid HMAC sign we have key for
1444*1c60b9acSAndroid Build Coastguard Worker 	 */
1445*1c60b9acSAndroid Build Coastguard Worker 
1446*1c60b9acSAndroid Build Coastguard Worker 	lwsl_user("%s: hmac-examples/hmac-02\n", __func__);
1447*1c60b9acSAndroid Build Coastguard Worker 
1448*1c60b9acSAndroid Build Coastguard Worker 	lws_dll2_owner_clear(&set);
1449*1c60b9acSAndroid Build Coastguard Worker 	if (!lws_cose_key_import(&set, NULL, NULL, keyset1.set, keyset1.len)) {
1450*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: key import fail\n", __func__);
1451*1c60b9acSAndroid Build Coastguard Worker 		return 1;
1452*1c60b9acSAndroid Build Coastguard Worker 	}
1453*1c60b9acSAndroid Build Coastguard Worker 
1454*1c60b9acSAndroid Build Coastguard Worker 	info.sigtype = SIGTYPE_MAC;
1455*1c60b9acSAndroid Build Coastguard Worker 	cps = lws_cose_validate_create(&info);
1456*1c60b9acSAndroid Build Coastguard Worker 	if (!cps) {
1457*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: sign_val_create fail\n", __func__);
1458*1c60b9acSAndroid Build Coastguard Worker 		goto bail;
1459*1c60b9acSAndroid Build Coastguard Worker 	}
1460*1c60b9acSAndroid Build Coastguard Worker 
1461*1c60b9acSAndroid Build Coastguard Worker 	n = lws_cose_validate_chunk(cps, sign_hmac_02, sizeof(sign_hmac_02),
1462*1c60b9acSAndroid Build Coastguard Worker 				    NULL);
1463*1c60b9acSAndroid Build Coastguard Worker 	if (n) {
1464*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: sign_val_chunk failed\n", __func__);
1465*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
1466*1c60b9acSAndroid Build Coastguard Worker 	}
1467*1c60b9acSAndroid Build Coastguard Worker 
1468*1c60b9acSAndroid Build Coastguard Worker 	o = lws_cose_validate_results(cps);
1469*1c60b9acSAndroid Build Coastguard Worker 	if (o->count != 1) {
1470*1c60b9acSAndroid Build Coastguard Worker 		lwsl_err("%s: count %d\n", __func__, o->count);
1471*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
1472*1c60b9acSAndroid Build Coastguard Worker 	}
1473*1c60b9acSAndroid Build Coastguard Worker 
1474*1c60b9acSAndroid Build Coastguard Worker 	res = lws_container_of(o->head, lws_cose_validate_res_t, list);
1475*1c60b9acSAndroid Build Coastguard Worker 	if (res->result) {
1476*1c60b9acSAndroid Build Coastguard Worker 		lwsl_err("%s: result is fail\n", __func__);
1477*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
1478*1c60b9acSAndroid Build Coastguard Worker 	}
1479*1c60b9acSAndroid Build Coastguard Worker 
1480*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_validate_destroy(&cps);
1481*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_key_set_destroy(&set);
1482*1c60b9acSAndroid Build Coastguard Worker 
1483*1c60b9acSAndroid Build Coastguard Worker 
1484*1c60b9acSAndroid Build Coastguard Worker 	/*
1485*1c60b9acSAndroid Build Coastguard Worker 	 * valid HMAC sign we have key for
1486*1c60b9acSAndroid Build Coastguard Worker 	 */
1487*1c60b9acSAndroid Build Coastguard Worker 
1488*1c60b9acSAndroid Build Coastguard Worker 	lwsl_user("%s: hmac-examples/hmac-03\n", __func__);
1489*1c60b9acSAndroid Build Coastguard Worker 
1490*1c60b9acSAndroid Build Coastguard Worker 	lws_dll2_owner_clear(&set);
1491*1c60b9acSAndroid Build Coastguard Worker 	if (!lws_cose_key_import(&set, NULL, NULL, keyset1.set, keyset1.len)) {
1492*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: key import fail\n", __func__);
1493*1c60b9acSAndroid Build Coastguard Worker 		return 1;
1494*1c60b9acSAndroid Build Coastguard Worker 	}
1495*1c60b9acSAndroid Build Coastguard Worker 
1496*1c60b9acSAndroid Build Coastguard Worker 	info.sigtype = SIGTYPE_MAC;
1497*1c60b9acSAndroid Build Coastguard Worker 	cps = lws_cose_validate_create(&info);
1498*1c60b9acSAndroid Build Coastguard Worker 	if (!cps) {
1499*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: sign_val_create fail\n", __func__);
1500*1c60b9acSAndroid Build Coastguard Worker 		goto bail;
1501*1c60b9acSAndroid Build Coastguard Worker 	}
1502*1c60b9acSAndroid Build Coastguard Worker 
1503*1c60b9acSAndroid Build Coastguard Worker 	n = lws_cose_validate_chunk(cps, sign_hmac_03, sizeof(sign_hmac_03),
1504*1c60b9acSAndroid Build Coastguard Worker 				    NULL);
1505*1c60b9acSAndroid Build Coastguard Worker 	if (n) {
1506*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: sign_val_chunk failed\n", __func__);
1507*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
1508*1c60b9acSAndroid Build Coastguard Worker 	}
1509*1c60b9acSAndroid Build Coastguard Worker 
1510*1c60b9acSAndroid Build Coastguard Worker 	o = lws_cose_validate_results(cps);
1511*1c60b9acSAndroid Build Coastguard Worker 	if (o->count != 1) {
1512*1c60b9acSAndroid Build Coastguard Worker 		lwsl_err("%s: count %d\n", __func__, o->count);
1513*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
1514*1c60b9acSAndroid Build Coastguard Worker 	}
1515*1c60b9acSAndroid Build Coastguard Worker 
1516*1c60b9acSAndroid Build Coastguard Worker 	res = lws_container_of(o->head, lws_cose_validate_res_t, list);
1517*1c60b9acSAndroid Build Coastguard Worker 	if (res->result) {
1518*1c60b9acSAndroid Build Coastguard Worker 		lwsl_err("%s: result is fail\n", __func__);
1519*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
1520*1c60b9acSAndroid Build Coastguard Worker 	}
1521*1c60b9acSAndroid Build Coastguard Worker 
1522*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_validate_destroy(&cps);
1523*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_key_set_destroy(&set);
1524*1c60b9acSAndroid Build Coastguard Worker 
1525*1c60b9acSAndroid Build Coastguard Worker 	/*
1526*1c60b9acSAndroid Build Coastguard Worker 	 * invalid HMAC sign we have key for
1527*1c60b9acSAndroid Build Coastguard Worker 	 */
1528*1c60b9acSAndroid Build Coastguard Worker 
1529*1c60b9acSAndroid Build Coastguard Worker 	lwsl_user("%s: hmac-examples/hmac-04 fail mac tag\n", __func__);
1530*1c60b9acSAndroid Build Coastguard Worker 
1531*1c60b9acSAndroid Build Coastguard Worker 	lws_dll2_owner_clear(&set);
1532*1c60b9acSAndroid Build Coastguard Worker 	if (!lws_cose_key_import(&set, NULL, NULL, keyset1.set, keyset1.len)) {
1533*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: key import fail\n", __func__);
1534*1c60b9acSAndroid Build Coastguard Worker 		return 1;
1535*1c60b9acSAndroid Build Coastguard Worker 	}
1536*1c60b9acSAndroid Build Coastguard Worker 
1537*1c60b9acSAndroid Build Coastguard Worker 	info.sigtype = SIGTYPE_MAC;
1538*1c60b9acSAndroid Build Coastguard Worker 	cps = lws_cose_validate_create(&info);
1539*1c60b9acSAndroid Build Coastguard Worker 	if (!cps) {
1540*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: sign_val_create fail\n", __func__);
1541*1c60b9acSAndroid Build Coastguard Worker 		goto bail;
1542*1c60b9acSAndroid Build Coastguard Worker 	}
1543*1c60b9acSAndroid Build Coastguard Worker 
1544*1c60b9acSAndroid Build Coastguard Worker 	n = lws_cose_validate_chunk(cps, sign_hmac_04, sizeof(sign_hmac_04),
1545*1c60b9acSAndroid Build Coastguard Worker 				    NULL);
1546*1c60b9acSAndroid Build Coastguard Worker 	if (n) {
1547*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: sign_val_chunk failed\n", __func__);
1548*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
1549*1c60b9acSAndroid Build Coastguard Worker 	}
1550*1c60b9acSAndroid Build Coastguard Worker 
1551*1c60b9acSAndroid Build Coastguard Worker 	o = lws_cose_validate_results(cps);
1552*1c60b9acSAndroid Build Coastguard Worker 	if (o->count != 1) {
1553*1c60b9acSAndroid Build Coastguard Worker 		lwsl_err("%s: count %d\n", __func__, o->count);
1554*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
1555*1c60b9acSAndroid Build Coastguard Worker 	}
1556*1c60b9acSAndroid Build Coastguard Worker 
1557*1c60b9acSAndroid Build Coastguard Worker 	res = lws_container_of(o->head, lws_cose_validate_res_t, list);
1558*1c60b9acSAndroid Build Coastguard Worker 	if (!res->result) {
1559*1c60b9acSAndroid Build Coastguard Worker 		lwsl_err("%s: result is wrongly succeeding\n", __func__);
1560*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
1561*1c60b9acSAndroid Build Coastguard Worker 	}
1562*1c60b9acSAndroid Build Coastguard Worker 
1563*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_validate_destroy(&cps);
1564*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_key_set_destroy(&set);
1565*1c60b9acSAndroid Build Coastguard Worker 
1566*1c60b9acSAndroid Build Coastguard Worker 	/*
1567*1c60b9acSAndroid Build Coastguard Worker 	 * valid HMAC sign we have key for HS256/64
1568*1c60b9acSAndroid Build Coastguard Worker 	 */
1569*1c60b9acSAndroid Build Coastguard Worker 
1570*1c60b9acSAndroid Build Coastguard Worker 	lwsl_user("%s: hmac-examples/hmac-05\n", __func__);
1571*1c60b9acSAndroid Build Coastguard Worker 
1572*1c60b9acSAndroid Build Coastguard Worker 	lws_dll2_owner_clear(&set);
1573*1c60b9acSAndroid Build Coastguard Worker 	if (!lws_cose_key_import(&set, NULL, NULL, keyset1.set, keyset1.len)) {
1574*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: key import fail\n", __func__);
1575*1c60b9acSAndroid Build Coastguard Worker 		return 1;
1576*1c60b9acSAndroid Build Coastguard Worker 	}
1577*1c60b9acSAndroid Build Coastguard Worker 
1578*1c60b9acSAndroid Build Coastguard Worker 	info.sigtype = SIGTYPE_MAC;
1579*1c60b9acSAndroid Build Coastguard Worker 	cps = lws_cose_validate_create(&info);
1580*1c60b9acSAndroid Build Coastguard Worker 	if (!cps) {
1581*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: sign_val_create fail\n", __func__);
1582*1c60b9acSAndroid Build Coastguard Worker 		goto bail;
1583*1c60b9acSAndroid Build Coastguard Worker 	}
1584*1c60b9acSAndroid Build Coastguard Worker 
1585*1c60b9acSAndroid Build Coastguard Worker 	n = lws_cose_validate_chunk(cps, sign_hmac_05, sizeof(sign_hmac_05),
1586*1c60b9acSAndroid Build Coastguard Worker 				    NULL);
1587*1c60b9acSAndroid Build Coastguard Worker 	if (n) {
1588*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: sign_val_chunk failed\n", __func__);
1589*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
1590*1c60b9acSAndroid Build Coastguard Worker 	}
1591*1c60b9acSAndroid Build Coastguard Worker 
1592*1c60b9acSAndroid Build Coastguard Worker 	o = lws_cose_validate_results(cps);
1593*1c60b9acSAndroid Build Coastguard Worker 	if (o->count != 1) {
1594*1c60b9acSAndroid Build Coastguard Worker 		lwsl_err("%s: count %d\n", __func__, o->count);
1595*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
1596*1c60b9acSAndroid Build Coastguard Worker 	}
1597*1c60b9acSAndroid Build Coastguard Worker 
1598*1c60b9acSAndroid Build Coastguard Worker 	res = lws_container_of(o->head, lws_cose_validate_res_t, list);
1599*1c60b9acSAndroid Build Coastguard Worker 	if (res->result) {
1600*1c60b9acSAndroid Build Coastguard Worker 		lwsl_err("%s: result is fail\n", __func__);
1601*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
1602*1c60b9acSAndroid Build Coastguard Worker 	}
1603*1c60b9acSAndroid Build Coastguard Worker 
1604*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_validate_destroy(&cps);
1605*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_key_set_destroy(&set);
1606*1c60b9acSAndroid Build Coastguard Worker 
1607*1c60b9acSAndroid Build Coastguard Worker 	/*
1608*1c60b9acSAndroid Build Coastguard Worker 	 * valid HMAC sign with implicit HS256 key
1609*1c60b9acSAndroid Build Coastguard Worker 	 */
1610*1c60b9acSAndroid Build Coastguard Worker 
1611*1c60b9acSAndroid Build Coastguard Worker 	lwsl_user("%s: hmac-examples/enc-01\n", __func__);
1612*1c60b9acSAndroid Build Coastguard Worker 
1613*1c60b9acSAndroid Build Coastguard Worker 	lws_dll2_owner_clear(&set);
1614*1c60b9acSAndroid Build Coastguard Worker 	if (!lws_cose_key_import(&set, NULL, NULL, key3.set, key3.len)) {
1615*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: key import fail\n", __func__);
1616*1c60b9acSAndroid Build Coastguard Worker 		return 1;
1617*1c60b9acSAndroid Build Coastguard Worker 	}
1618*1c60b9acSAndroid Build Coastguard Worker 
1619*1c60b9acSAndroid Build Coastguard Worker 	info.sigtype = SIGTYPE_MAC0;
1620*1c60b9acSAndroid Build Coastguard Worker 	cps = lws_cose_validate_create(&info);
1621*1c60b9acSAndroid Build Coastguard Worker 	if (!cps) {
1622*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: sign_val_create fail\n", __func__);
1623*1c60b9acSAndroid Build Coastguard Worker 		goto bail;
1624*1c60b9acSAndroid Build Coastguard Worker 	}
1625*1c60b9acSAndroid Build Coastguard Worker 
1626*1c60b9acSAndroid Build Coastguard Worker 	n = lws_cose_validate_chunk(cps, enc_hmac_01, sizeof(enc_hmac_01),
1627*1c60b9acSAndroid Build Coastguard Worker 				    NULL);
1628*1c60b9acSAndroid Build Coastguard Worker 	if (n) {
1629*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: sign_val_chunk failed\n", __func__);
1630*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
1631*1c60b9acSAndroid Build Coastguard Worker 	}
1632*1c60b9acSAndroid Build Coastguard Worker 
1633*1c60b9acSAndroid Build Coastguard Worker 	o = lws_cose_validate_results(cps);
1634*1c60b9acSAndroid Build Coastguard Worker 	if (o->count != 1) {
1635*1c60b9acSAndroid Build Coastguard Worker 		lwsl_err("%s: count %d\n", __func__, o->count);
1636*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
1637*1c60b9acSAndroid Build Coastguard Worker 	}
1638*1c60b9acSAndroid Build Coastguard Worker 
1639*1c60b9acSAndroid Build Coastguard Worker 	res = lws_container_of(o->head, lws_cose_validate_res_t, list);
1640*1c60b9acSAndroid Build Coastguard Worker 	if (res->result) {
1641*1c60b9acSAndroid Build Coastguard Worker 		lwsl_err("%s: result is fail\n", __func__);
1642*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
1643*1c60b9acSAndroid Build Coastguard Worker 	}
1644*1c60b9acSAndroid Build Coastguard Worker 
1645*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_validate_destroy(&cps);
1646*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_key_set_destroy(&set);
1647*1c60b9acSAndroid Build Coastguard Worker 
1648*1c60b9acSAndroid Build Coastguard Worker 	/*
1649*1c60b9acSAndroid Build Coastguard Worker 	 * valid HMAC sign with implicit HS384 key
1650*1c60b9acSAndroid Build Coastguard Worker 	 */
1651*1c60b9acSAndroid Build Coastguard Worker 
1652*1c60b9acSAndroid Build Coastguard Worker 	lwsl_user("%s: hmac-examples/enc-02\n", __func__);
1653*1c60b9acSAndroid Build Coastguard Worker 
1654*1c60b9acSAndroid Build Coastguard Worker 	lws_dll2_owner_clear(&set);
1655*1c60b9acSAndroid Build Coastguard Worker 	if (!lws_cose_key_import(&set, NULL, NULL, key8.set, key8.len)) {
1656*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: key import fail\n", __func__);
1657*1c60b9acSAndroid Build Coastguard Worker 		return 1;
1658*1c60b9acSAndroid Build Coastguard Worker 	}
1659*1c60b9acSAndroid Build Coastguard Worker 
1660*1c60b9acSAndroid Build Coastguard Worker 	info.sigtype = SIGTYPE_MAC0;
1661*1c60b9acSAndroid Build Coastguard Worker 	cps = lws_cose_validate_create(&info);
1662*1c60b9acSAndroid Build Coastguard Worker 	if (!cps) {
1663*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: sign_val_create fail\n", __func__);
1664*1c60b9acSAndroid Build Coastguard Worker 		goto bail;
1665*1c60b9acSAndroid Build Coastguard Worker 	}
1666*1c60b9acSAndroid Build Coastguard Worker 
1667*1c60b9acSAndroid Build Coastguard Worker 	n = lws_cose_validate_chunk(cps, enc_hmac_02, sizeof(enc_hmac_02),
1668*1c60b9acSAndroid Build Coastguard Worker 				    NULL);
1669*1c60b9acSAndroid Build Coastguard Worker 	if (n) {
1670*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: sign_val_chunk failed\n", __func__);
1671*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
1672*1c60b9acSAndroid Build Coastguard Worker 	}
1673*1c60b9acSAndroid Build Coastguard Worker 
1674*1c60b9acSAndroid Build Coastguard Worker 	o = lws_cose_validate_results(cps);
1675*1c60b9acSAndroid Build Coastguard Worker 	if (o->count != 1) {
1676*1c60b9acSAndroid Build Coastguard Worker 		lwsl_err("%s: count %d\n", __func__, o->count);
1677*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
1678*1c60b9acSAndroid Build Coastguard Worker 	}
1679*1c60b9acSAndroid Build Coastguard Worker 
1680*1c60b9acSAndroid Build Coastguard Worker 	res = lws_container_of(o->head, lws_cose_validate_res_t, list);
1681*1c60b9acSAndroid Build Coastguard Worker 	if (res->result) {
1682*1c60b9acSAndroid Build Coastguard Worker 		lwsl_err("%s: result is fail\n", __func__);
1683*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
1684*1c60b9acSAndroid Build Coastguard Worker 	}
1685*1c60b9acSAndroid Build Coastguard Worker 
1686*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_validate_destroy(&cps);
1687*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_key_set_destroy(&set);
1688*1c60b9acSAndroid Build Coastguard Worker 
1689*1c60b9acSAndroid Build Coastguard Worker 	/*
1690*1c60b9acSAndroid Build Coastguard Worker 	 * valid HMAC sign with implicit HS512 key
1691*1c60b9acSAndroid Build Coastguard Worker 	 */
1692*1c60b9acSAndroid Build Coastguard Worker 
1693*1c60b9acSAndroid Build Coastguard Worker 	lwsl_user("%s: hmac-examples/enc-03\n", __func__);
1694*1c60b9acSAndroid Build Coastguard Worker 
1695*1c60b9acSAndroid Build Coastguard Worker 	lws_dll2_owner_clear(&set);
1696*1c60b9acSAndroid Build Coastguard Worker 	if (!lws_cose_key_import(&set, NULL, NULL, key9.set, key9.len)) {
1697*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: key import fail\n", __func__);
1698*1c60b9acSAndroid Build Coastguard Worker 		return 1;
1699*1c60b9acSAndroid Build Coastguard Worker 	}
1700*1c60b9acSAndroid Build Coastguard Worker 
1701*1c60b9acSAndroid Build Coastguard Worker 	info.sigtype = SIGTYPE_MAC0;
1702*1c60b9acSAndroid Build Coastguard Worker 	cps = lws_cose_validate_create(&info);
1703*1c60b9acSAndroid Build Coastguard Worker 	if (!cps) {
1704*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: sign_val_create fail\n", __func__);
1705*1c60b9acSAndroid Build Coastguard Worker 		goto bail;
1706*1c60b9acSAndroid Build Coastguard Worker 	}
1707*1c60b9acSAndroid Build Coastguard Worker 
1708*1c60b9acSAndroid Build Coastguard Worker 	n = lws_cose_validate_chunk(cps, enc_hmac_03, sizeof(enc_hmac_03),
1709*1c60b9acSAndroid Build Coastguard Worker 				    NULL);
1710*1c60b9acSAndroid Build Coastguard Worker 	if (n) {
1711*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: sign_val_chunk failed\n", __func__);
1712*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
1713*1c60b9acSAndroid Build Coastguard Worker 	}
1714*1c60b9acSAndroid Build Coastguard Worker 
1715*1c60b9acSAndroid Build Coastguard Worker 	o = lws_cose_validate_results(cps);
1716*1c60b9acSAndroid Build Coastguard Worker 	if (o->count != 1) {
1717*1c60b9acSAndroid Build Coastguard Worker 		lwsl_err("%s: count %d\n", __func__, o->count);
1718*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
1719*1c60b9acSAndroid Build Coastguard Worker 	}
1720*1c60b9acSAndroid Build Coastguard Worker 
1721*1c60b9acSAndroid Build Coastguard Worker 	res = lws_container_of(o->head, lws_cose_validate_res_t, list);
1722*1c60b9acSAndroid Build Coastguard Worker 	if (res->result) {
1723*1c60b9acSAndroid Build Coastguard Worker 		lwsl_err("%s: result is fail\n", __func__);
1724*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
1725*1c60b9acSAndroid Build Coastguard Worker 	}
1726*1c60b9acSAndroid Build Coastguard Worker 
1727*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_validate_destroy(&cps);
1728*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_key_set_destroy(&set);
1729*1c60b9acSAndroid Build Coastguard Worker 
1730*1c60b9acSAndroid Build Coastguard Worker 	/*
1731*1c60b9acSAndroid Build Coastguard Worker 	 * invalid HMAC sign with implicit HS256 key, tampered hmac tag
1732*1c60b9acSAndroid Build Coastguard Worker 	 */
1733*1c60b9acSAndroid Build Coastguard Worker 
1734*1c60b9acSAndroid Build Coastguard Worker 	lwsl_user("%s: hmac-examples/enc-04\n", __func__);
1735*1c60b9acSAndroid Build Coastguard Worker 
1736*1c60b9acSAndroid Build Coastguard Worker 	lws_dll2_owner_clear(&set);
1737*1c60b9acSAndroid Build Coastguard Worker 	if (!lws_cose_key_import(&set, NULL, NULL, key3.set, key3.len)) {
1738*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: key import fail\n", __func__);
1739*1c60b9acSAndroid Build Coastguard Worker 		return 1;
1740*1c60b9acSAndroid Build Coastguard Worker 	}
1741*1c60b9acSAndroid Build Coastguard Worker 
1742*1c60b9acSAndroid Build Coastguard Worker 	info.sigtype = SIGTYPE_MAC0;
1743*1c60b9acSAndroid Build Coastguard Worker 	cps = lws_cose_validate_create(&info);
1744*1c60b9acSAndroid Build Coastguard Worker 	if (!cps) {
1745*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: sign_val_create fail\n", __func__);
1746*1c60b9acSAndroid Build Coastguard Worker 		goto bail;
1747*1c60b9acSAndroid Build Coastguard Worker 	}
1748*1c60b9acSAndroid Build Coastguard Worker 
1749*1c60b9acSAndroid Build Coastguard Worker 	n = lws_cose_validate_chunk(cps, enc_hmac_04, sizeof(enc_hmac_04),
1750*1c60b9acSAndroid Build Coastguard Worker 				    NULL);
1751*1c60b9acSAndroid Build Coastguard Worker 	if (n) {
1752*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: sign_val_chunk failed\n", __func__);
1753*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
1754*1c60b9acSAndroid Build Coastguard Worker 	}
1755*1c60b9acSAndroid Build Coastguard Worker 
1756*1c60b9acSAndroid Build Coastguard Worker 	o = lws_cose_validate_results(cps);
1757*1c60b9acSAndroid Build Coastguard Worker 	if (o->count != 1) {
1758*1c60b9acSAndroid Build Coastguard Worker 		lwsl_err("%s: count %d\n", __func__, o->count);
1759*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
1760*1c60b9acSAndroid Build Coastguard Worker 	}
1761*1c60b9acSAndroid Build Coastguard Worker 
1762*1c60b9acSAndroid Build Coastguard Worker 	res = lws_container_of(o->head, lws_cose_validate_res_t, list);
1763*1c60b9acSAndroid Build Coastguard Worker 	if (!res->result) {
1764*1c60b9acSAndroid Build Coastguard Worker 		lwsl_err("%s: result wrongly succeeds\n", __func__);
1765*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
1766*1c60b9acSAndroid Build Coastguard Worker 	}
1767*1c60b9acSAndroid Build Coastguard Worker 
1768*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_validate_destroy(&cps);
1769*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_key_set_destroy(&set);
1770*1c60b9acSAndroid Build Coastguard Worker 
1771*1c60b9acSAndroid Build Coastguard Worker 	/*
1772*1c60b9acSAndroid Build Coastguard Worker 	 * valid HMAC sign with implicit HS256 key, HS256/64
1773*1c60b9acSAndroid Build Coastguard Worker 	 */
1774*1c60b9acSAndroid Build Coastguard Worker 
1775*1c60b9acSAndroid Build Coastguard Worker 	lwsl_user("%s: hmac-examples/enc-05\n", __func__);
1776*1c60b9acSAndroid Build Coastguard Worker 
1777*1c60b9acSAndroid Build Coastguard Worker 	lws_dll2_owner_clear(&set);
1778*1c60b9acSAndroid Build Coastguard Worker 	if (!lws_cose_key_import(&set, NULL, NULL, key3.set, key3.len)) {
1779*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: key import fail\n", __func__);
1780*1c60b9acSAndroid Build Coastguard Worker 		return 1;
1781*1c60b9acSAndroid Build Coastguard Worker 	}
1782*1c60b9acSAndroid Build Coastguard Worker 
1783*1c60b9acSAndroid Build Coastguard Worker 	info.sigtype = SIGTYPE_MAC0;
1784*1c60b9acSAndroid Build Coastguard Worker 	cps = lws_cose_validate_create(&info);
1785*1c60b9acSAndroid Build Coastguard Worker 	if (!cps) {
1786*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: sign_val_create fail\n", __func__);
1787*1c60b9acSAndroid Build Coastguard Worker 		goto bail;
1788*1c60b9acSAndroid Build Coastguard Worker 	}
1789*1c60b9acSAndroid Build Coastguard Worker 
1790*1c60b9acSAndroid Build Coastguard Worker 	n = lws_cose_validate_chunk(cps, enc_hmac_05, sizeof(enc_hmac_05),
1791*1c60b9acSAndroid Build Coastguard Worker 				    NULL);
1792*1c60b9acSAndroid Build Coastguard Worker 	if (n) {
1793*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: sign_val_chunk failed\n", __func__);
1794*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
1795*1c60b9acSAndroid Build Coastguard Worker 	}
1796*1c60b9acSAndroid Build Coastguard Worker 
1797*1c60b9acSAndroid Build Coastguard Worker 	o = lws_cose_validate_results(cps);
1798*1c60b9acSAndroid Build Coastguard Worker 	if (o->count != 1) {
1799*1c60b9acSAndroid Build Coastguard Worker 		lwsl_err("%s: count %d\n", __func__, o->count);
1800*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
1801*1c60b9acSAndroid Build Coastguard Worker 	}
1802*1c60b9acSAndroid Build Coastguard Worker 
1803*1c60b9acSAndroid Build Coastguard Worker 	res = lws_container_of(o->head, lws_cose_validate_res_t, list);
1804*1c60b9acSAndroid Build Coastguard Worker 	if (res->result) {
1805*1c60b9acSAndroid Build Coastguard Worker 		lwsl_err("%s: result is fail\n", __func__);
1806*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
1807*1c60b9acSAndroid Build Coastguard Worker 	}
1808*1c60b9acSAndroid Build Coastguard Worker 
1809*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_validate_destroy(&cps);
1810*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_key_set_destroy(&set);
1811*1c60b9acSAndroid Build Coastguard Worker #if 0
1812*1c60b9acSAndroid Build Coastguard Worker 	/*
1813*1c60b9acSAndroid Build Coastguard Worker 	 * valid Ed25519 signature with countersignature from same key + alg
1814*1c60b9acSAndroid Build Coastguard Worker 	 */
1815*1c60b9acSAndroid Build Coastguard Worker 
1816*1c60b9acSAndroid Build Coastguard Worker 	lwsl_user("%s: countersign/sign-01\n", __func__);
1817*1c60b9acSAndroid Build Coastguard Worker 
1818*1c60b9acSAndroid Build Coastguard Worker 	lws_dll2_owner_clear(&set);
1819*1c60b9acSAndroid Build Coastguard Worker 	if (!lws_cose_key_import(&set, NULL, NULL, key10.set, key10.len)) {
1820*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: key import fail\n", __func__);
1821*1c60b9acSAndroid Build Coastguard Worker 		return 1;
1822*1c60b9acSAndroid Build Coastguard Worker 	}
1823*1c60b9acSAndroid Build Coastguard Worker 
1824*1c60b9acSAndroid Build Coastguard Worker 	info.sigtype = SIGTYPE_COUNTERSIGNED;
1825*1c60b9acSAndroid Build Coastguard Worker 	cps = lws_cose_validate_create(&info);
1826*1c60b9acSAndroid Build Coastguard Worker 	if (!cps) {
1827*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: sign_val_create fail\n", __func__);
1828*1c60b9acSAndroid Build Coastguard Worker 		goto bail;
1829*1c60b9acSAndroid Build Coastguard Worker 	}
1830*1c60b9acSAndroid Build Coastguard Worker 
1831*1c60b9acSAndroid Build Coastguard Worker 	n = lws_cose_validate_chunk(cps, countersign_sign_01,
1832*1c60b9acSAndroid Build Coastguard Worker 					 sizeof(countersign_sign_01), NULL);
1833*1c60b9acSAndroid Build Coastguard Worker 	if (n) {
1834*1c60b9acSAndroid Build Coastguard Worker 		lwsl_notice("%s: sign_val_chunk failed\n", __func__);
1835*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
1836*1c60b9acSAndroid Build Coastguard Worker 	}
1837*1c60b9acSAndroid Build Coastguard Worker 
1838*1c60b9acSAndroid Build Coastguard Worker 	o = lws_cose_validate_results(cps);
1839*1c60b9acSAndroid Build Coastguard Worker 	if (o->count != 1) {
1840*1c60b9acSAndroid Build Coastguard Worker 		lwsl_err("%s: result count %d\n", __func__, o->count);
1841*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
1842*1c60b9acSAndroid Build Coastguard Worker 	}
1843*1c60b9acSAndroid Build Coastguard Worker 
1844*1c60b9acSAndroid Build Coastguard Worker 	res = lws_container_of(o->head, lws_cose_validate_res_t, list);
1845*1c60b9acSAndroid Build Coastguard Worker 	if (res->result) {
1846*1c60b9acSAndroid Build Coastguard Worker 		lwsl_err("%s: result is fail\n", __func__);
1847*1c60b9acSAndroid Build Coastguard Worker 		goto bail1;
1848*1c60b9acSAndroid Build Coastguard Worker 	}
1849*1c60b9acSAndroid Build Coastguard Worker 
1850*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_validate_destroy(&cps);
1851*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_key_set_destroy(&set);
1852*1c60b9acSAndroid Build Coastguard Worker #endif
1853*1c60b9acSAndroid Build Coastguard Worker 
1854*1c60b9acSAndroid Build Coastguard Worker 	return 0;
1855*1c60b9acSAndroid Build Coastguard Worker 
1856*1c60b9acSAndroid Build Coastguard Worker bail1:
1857*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_validate_destroy(&cps);
1858*1c60b9acSAndroid Build Coastguard Worker bail:
1859*1c60b9acSAndroid Build Coastguard Worker 	lws_cose_key_set_destroy(&set);
1860*1c60b9acSAndroid Build Coastguard Worker 
1861*1c60b9acSAndroid Build Coastguard Worker 	return 1;
1862*1c60b9acSAndroid Build Coastguard Worker }
1863