xref: /freebsd/contrib/netbsd-tests/dev/cgd/t_cgd_3des.c (revision 7fdf597e96a02165cfe22ff357b857d5fa15ed8a)
1 /*	$NetBSD: t_cgd_3des.c,v 1.2 2017/01/13 21:30:39 christos Exp $	*/
2 /*-
3  * Copyright (c) 2016 The NetBSD Foundation, Inc.
4  * All rights reserved.
5  *
6  * This code is derived from software contributed to The NetBSD Foundation
7  * by Alexander Nasonov.
8  *
9  * Redistribution and use in source and binary forms, with or without
10  * modification, are permitted provided that the following conditions
11  * are met:
12  *
13  * 1. Redistributions of source code must retain the above copyright
14  *    notice, this list of conditions and the following disclaimer.
15  * 2. Redistributions in binary form must reproduce the above copyright
16  *    notice, this list of conditions and the following disclaimer in
17  *    the documentation and/or other materials provided with the
18  *    distribution.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
23  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
24  * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
25  * INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING,
26  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
27  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
28  * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
29  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
30  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31  * SUCH DAMAGE.
32  */
33 
34 #include <sys/types.h>
35 #include <sys/ioctl.h>
36 #include <sys/sysctl.h>
37 
38 #include <atf-c.h>
39 #include <fcntl.h>
40 #include <stdio.h>
41 #include <stdlib.h>
42 #include <string.h>
43 #include <unistd.h>
44 #include <util.h>
45 
46 #include <dev/cgdvar.h>
47 
48 #include <rump/rump.h>
49 #include <rump/rump_syscalls.h>
50 
51 #include "h_macros.h"
52 
53 #define SECSIZE 512
54 
55 struct testvec {
56 	unsigned int blkno;
57 	const uint8_t *ptxt;	/* PlainText  */
58 	const uint8_t *ctxt;	/* CipherText */
59 };
60 
61 /*
62  * 192 bits CBC key, NUL terminated.
63  */
64 static const char c3des_cbc_192_key[25] = {
65 	0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, /* ABCDEFGH */
66 	0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, /* IJKLMNOP */
67 	0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, /* QRSTUVWX */
68 	0
69 };
70 
71 static const uint8_t c3des_cbc_ptxt[SECSIZE] =
72 	"                abcdefghijklmnop"
73 	"                abcdefghijklmnop"
74 	"                abcdefghijklmnop"
75 	"                abcdefghijklmnop"
76 	"                abcdefghijklmnop"
77 	"                abcdefghijklmnop"
78 	"                abcdefghijklmnop"
79 	"                abcdefghijklmnop"
80 	"                abcdefghijklmnop"
81 	"                abcdefghijklmnop"
82 	"                abcdefghijklmnop"
83 	"                abcdefghijklmnop"
84 	"                abcdefghijklmnop"
85 	"                abcdefghijklmnop"
86 	"                abcdefghijklmnop"
87 	"                abcdefghijklmnop";
88 
89 /*
90  * IV method encblkno1, blkno 0.
91  */
92 static const uint8_t c3des_cbc_192_encblkno1_vec0_ctxt[SECSIZE] = {
93 	0x19, 0x92, 0xc8, 0xce, 0xdf, 0xa3, 0x14, 0xef,
94 	0xff, 0x88, 0x9f, 0x01, 0xfa, 0x6f, 0xfa, 0xa6,
95 	0xdd, 0x2b, 0x43, 0x67, 0xfa, 0xce, 0x37, 0x95,
96 	0x73, 0x4d, 0x18, 0x33, 0x0c, 0x29, 0xb6, 0xbb,
97 	0x37, 0x77, 0x31, 0x74, 0xf6, 0x62, 0x03, 0xd2,
98 	0x78, 0x13, 0x55, 0xf6, 0x58, 0x49, 0xaf, 0x2a,
99 	0x15, 0x4c, 0xc2, 0x4a, 0x55, 0x99, 0x82, 0xb9,
100 	0xfb, 0x8b, 0x4f, 0x92, 0xe3, 0xbc, 0x9b, 0x09,
101 	0x42, 0x7b, 0x5f, 0x54, 0xed, 0xf0, 0xcb, 0x5d,
102 	0x93, 0xba, 0x09, 0x4b, 0x20, 0xf3, 0xe6, 0x44,
103 	0x30, 0x5e, 0x9e, 0xfc, 0x7a, 0x3c, 0x7d, 0x11,
104 	0x63, 0xea, 0x40, 0x94, 0xaa, 0xd0, 0xa9, 0xf6,
105 	0xc7, 0x1e, 0x8f, 0xc8, 0xa6, 0x2c, 0xf7, 0xeb,
106 	0x51, 0x26, 0xdc, 0xf8, 0x73, 0xf9, 0xb4, 0xa8,
107 	0x80, 0x4a, 0xe5, 0x6f, 0xb6, 0x33, 0x13, 0x6b,
108 	0x1b, 0x7d, 0x00, 0xde, 0x44, 0x7e, 0x26, 0xa2,
109 	0x82, 0xa7, 0x80, 0x16, 0x34, 0xde, 0xb9, 0x82,
110 	0x4c, 0x42, 0x8e, 0x0d, 0x48, 0x7e, 0x38, 0xbd,
111 	0x1d, 0x7d, 0x98, 0xbb, 0x11, 0x8a, 0x72, 0x14,
112 	0x4e, 0xaa, 0xd0, 0xef, 0x4d, 0x7f, 0xa3, 0xa6,
113 	0xfc, 0x85, 0x9d, 0x74, 0x63, 0x9d, 0xe4, 0x5c,
114 	0xf7, 0xa8, 0xd0, 0xd7, 0x95, 0xb4, 0x28, 0x64,
115 	0x41, 0x2d, 0x5d, 0xd9, 0xba, 0x79, 0xa7, 0xb3,
116 	0x9c, 0x16, 0xfa, 0xb8, 0x10, 0x5d, 0x1d, 0xd4,
117 	0xce, 0xad, 0x67, 0x27, 0x91, 0x8a, 0xb3, 0xbc,
118 	0x37, 0x20, 0x95, 0xac, 0xf7, 0x0d, 0xe0, 0x1e,
119 	0x59, 0xa7, 0xe5, 0x81, 0x82, 0x6a, 0x71, 0x07,
120 	0x85, 0x43, 0x43, 0xdb, 0xbf, 0x56, 0xb0, 0x0a,
121 	0x4c, 0xf1, 0xcd, 0xcd, 0xa3, 0x9a, 0x10, 0x8e,
122 	0x0c, 0xe2, 0x6d, 0xf2, 0x16, 0xd0, 0x4c, 0xac,
123 	0xf9, 0xfc, 0xc9, 0x56, 0x1f, 0x31, 0x89, 0x1c,
124 	0xfa, 0xb7, 0x49, 0xea, 0x69, 0x91, 0xfe, 0x45,
125 	0x96, 0x5e, 0x45, 0xc3, 0x2c, 0xb1, 0x40, 0xd9,
126 	0x1f, 0x82, 0x3f, 0xc1, 0x45, 0x7c, 0x39, 0x72,
127 	0x6f, 0x52, 0xe4, 0xaf, 0x15, 0xa4, 0xe2, 0xd4,
128 	0xa1, 0xa4, 0xb2, 0xb5, 0x4a, 0x0b, 0xad, 0xe4,
129 	0x1e, 0x5c, 0x26, 0x62, 0x81, 0x78, 0x3e, 0xd3,
130 	0x6a, 0x98, 0x94, 0x2a, 0x00, 0xa7, 0xe4, 0x04,
131 	0x9d, 0x9a, 0xfc, 0xcf, 0xad, 0x2b, 0xba, 0x9b,
132 	0x40, 0x1e, 0x71, 0x3a, 0xb6, 0x92, 0xc4, 0xc5,
133 	0x56, 0x58, 0x92, 0x2a, 0x69, 0xbe, 0x0f, 0xb0,
134 	0x91, 0xae, 0xaa, 0x3f, 0x07, 0xe8, 0xf9, 0x71,
135 	0x20, 0x06, 0xed, 0xe0, 0x80, 0xec, 0xc9, 0xe7,
136 	0x54, 0xaa, 0xaa, 0xf4, 0x4c, 0xb2, 0x34, 0xf7,
137 	0x8a, 0x76, 0xc2, 0x4a, 0xae, 0x71, 0x7a, 0x07,
138 	0xd7, 0xec, 0x75, 0x2f, 0x8a, 0x99, 0x59, 0x13,
139 	0xd0, 0x8d, 0x18, 0x69, 0x0d, 0xd9, 0x39, 0x73,
140 	0x2b, 0xd0, 0xa3, 0xbc, 0x9e, 0x29, 0x4d, 0x88,
141 	0xff, 0x98, 0x02, 0xb4, 0xcf, 0xa1, 0xf9, 0x2a,
142 	0xa6, 0xef, 0x7c, 0x72, 0x26, 0x4e, 0xd7, 0xdf,
143 	0xec, 0x3a, 0xbc, 0x8e, 0xe6, 0xb3, 0x2b, 0x43,
144 	0xcd, 0x67, 0x8b, 0x72, 0x00, 0x6f, 0xe5, 0x85,
145 	0xe2, 0x2a, 0x4c, 0x8d, 0x02, 0x44, 0x6b, 0x7a,
146 	0x89, 0x7a, 0x18, 0x3b, 0xc8, 0x9c, 0x8d, 0x60,
147 	0xec, 0x79, 0x58, 0x15, 0x98, 0x71, 0x4b, 0x1a,
148 	0x34, 0x69, 0x96, 0xd0, 0x0f, 0x01, 0x27, 0x2e,
149 	0x19, 0x02, 0xf0, 0x17, 0x8c, 0x89, 0xbf, 0x05,
150 	0xf0, 0xfe, 0xc3, 0xe6, 0x90, 0x9d, 0xa2, 0xb1,
151 	0x40, 0x06, 0x7e, 0xcd, 0x20, 0x7e, 0x5f, 0x54,
152 	0x31, 0xfb, 0x79, 0x84, 0x47, 0x38, 0x71, 0x69,
153 	0xe1, 0xd5, 0x4e, 0x84, 0xa3, 0x2b, 0x4a, 0x86,
154 	0xc2, 0x21, 0x5b, 0x15, 0xc3, 0x63, 0xbb, 0xc5,
155 	0x5c, 0xc1, 0xfb, 0x31, 0x3a, 0x4d, 0xb1, 0x9e,
156 	0xe1, 0xd8, 0x67, 0x4b, 0x08, 0x42, 0xc4, 0xe8,
157 };
158 
159 /*
160  * IV method encblkno1, blkno 1.
161  */
162 static const uint8_t c3des_cbc_192_encblkno1_vec1_ctxt[SECSIZE] = {
163 	0x1d, 0x65, 0xdf, 0x01, 0x9b, 0x24, 0xa5, 0x10,
164 	0x94, 0x9a, 0x5b, 0x81, 0x96, 0x4e, 0xa3, 0x42,
165 	0x42, 0xd5, 0x05, 0x52, 0xab, 0x3c, 0x67, 0x40,
166 	0x79, 0xf9, 0x4b, 0x58, 0x39, 0xf6, 0xd0, 0x97,
167 	0x48, 0xf4, 0x77, 0xb8, 0xac, 0xe2, 0x10, 0x66,
168 	0xa8, 0x04, 0x0a, 0x1e, 0xa6, 0xbb, 0x4c, 0xd9,
169 	0x5d, 0x0c, 0x11, 0xb5, 0xe0, 0x26, 0x84, 0x50,
170 	0x10, 0x80, 0xbf, 0xd6, 0xdc, 0x82, 0x53, 0x0a,
171 	0xcf, 0xf6, 0xd3, 0x07, 0x45, 0xb0, 0x8e, 0x36,
172 	0x2e, 0x60, 0x0f, 0xd0, 0xc1, 0xb9, 0xd8, 0x29,
173 	0x6e, 0x13, 0x8e, 0xc1, 0xa8, 0x63, 0x20, 0xe0,
174 	0x8d, 0x47, 0x8b, 0xf9, 0xa0, 0x60, 0x55, 0x53,
175 	0x1d, 0xaf, 0x43, 0x46, 0xe5, 0x10, 0xd5, 0xcd,
176 	0x91, 0x9e, 0x11, 0x4a, 0x6f, 0x6a, 0x13, 0xdf,
177 	0xee, 0x7a, 0x88, 0xbe, 0x59, 0x96, 0xdb, 0x65,
178 	0x25, 0x57, 0x9e, 0x82, 0xad, 0xc2, 0xd6, 0x28,
179 	0x96, 0xb3, 0x7f, 0x57, 0x5d, 0xb2, 0xfa, 0x60,
180 	0x43, 0x22, 0xa5, 0x33, 0x14, 0x99, 0x8f, 0x68,
181 	0x5a, 0x7f, 0xaf, 0x9e, 0xe9, 0x23, 0x57, 0x9b,
182 	0x52, 0xe9, 0x20, 0x59, 0x26, 0x89, 0x9b, 0x59,
183 	0xb0, 0xee, 0xe8, 0x6d, 0x06, 0x8c, 0x01, 0xc2,
184 	0xea, 0xbc, 0x7d, 0x93, 0x3f, 0x79, 0x7f, 0xeb,
185 	0x57, 0xc9, 0x0a, 0xca, 0x37, 0x81, 0xa7, 0x82,
186 	0xde, 0x37, 0x7d, 0x69, 0x01, 0xaa, 0x19, 0x98,
187 	0x26, 0xfe, 0x06, 0x83, 0xeb, 0x9d, 0x26, 0xdc,
188 	0x04, 0x5d, 0xc9, 0x05, 0xee, 0x1a, 0xd3, 0xeb,
189 	0x20, 0x8c, 0xb7, 0x99, 0x75, 0xe0, 0x19, 0x98,
190 	0xca, 0x83, 0xae, 0x94, 0x28, 0xbf, 0x47, 0x42,
191 	0x92, 0x05, 0x8c, 0xaa, 0xeb, 0x99, 0x0f, 0xcc,
192 	0x33, 0x79, 0x24, 0x62, 0xa0, 0x7a, 0x65, 0xcb,
193 	0x53, 0xb7, 0x86, 0x0d, 0xcb, 0x44, 0x2d, 0xbf,
194 	0xe8, 0x5d, 0x62, 0xeb, 0x21, 0x4d, 0x35, 0x86,
195 	0x56, 0x6c, 0x51, 0xff, 0xa3, 0x45, 0xcc, 0x88,
196 	0x09, 0x43, 0x08, 0x97, 0x13, 0x7d, 0x00, 0xd8,
197 	0x82, 0x2d, 0xbe, 0xbe, 0x44, 0x0c, 0x2c, 0xa4,
198 	0x4f, 0x84, 0x07, 0x20, 0x9c, 0x3f, 0xf6, 0x5b,
199 	0x9e, 0xe8, 0x68, 0x40, 0xd3, 0x64, 0x8f, 0xb4,
200 	0x9e, 0xac, 0xc6, 0x41, 0x11, 0xda, 0xf2, 0x60,
201 	0xfa, 0x29, 0x9d, 0x26, 0x68, 0x5b, 0x79, 0x3a,
202 	0xd1, 0x66, 0x78, 0xca, 0x80, 0x87, 0xae, 0xab,
203 	0x7b, 0x29, 0x3c, 0xb0, 0xe6, 0xa2, 0x6b, 0x24,
204 	0x81, 0xeb, 0x51, 0xf9, 0xcb, 0x4a, 0x08, 0x37,
205 	0x2a, 0x75, 0xb5, 0xd3, 0xb3, 0x8f, 0x3d, 0x13,
206 	0x11, 0x0c, 0xa9, 0xf7, 0xf6, 0x57, 0x7e, 0xb7,
207 	0xa6, 0x22, 0xe8, 0x13, 0xfd, 0xf1, 0x6a, 0xe9,
208 	0xc1, 0x94, 0xa6, 0xf5, 0xa5, 0xec, 0xfa, 0x31,
209 	0xd2, 0x66, 0x8f, 0xe3, 0x6e, 0x9a, 0xaa, 0xb0,
210 	0xe3, 0x04, 0x09, 0x00, 0x1e, 0x67, 0x3c, 0xbe,
211 	0x2a, 0x8c, 0xd5, 0x1f, 0x4f, 0x55, 0x2c, 0x1d,
212 	0x26, 0x7f, 0xc9, 0x27, 0x00, 0x88, 0x7d, 0x45,
213 	0x4e, 0xe1, 0x36, 0xf6, 0xf5, 0xa8, 0xd4, 0xef,
214 	0x8b, 0x26, 0x76, 0x41, 0x28, 0x87, 0xf4, 0x51,
215 	0x14, 0x36, 0xad, 0x60, 0x8d, 0xe9, 0xe2, 0x9d,
216 	0x3c, 0xea, 0x09, 0x51, 0x3c, 0x81, 0xdf, 0x1a,
217 	0xc2, 0xc2, 0xf6, 0x45, 0xe1, 0x73, 0xac, 0xae,
218 	0x85, 0x74, 0x83, 0x8f, 0x56, 0x3c, 0x36, 0x1c,
219 	0xe0, 0x07, 0xc6, 0x6a, 0x48, 0xe4, 0x34, 0xe9,
220 	0x81, 0x53, 0xb7, 0x53, 0x95, 0xa7, 0x94, 0x21,
221 	0x7e, 0x32, 0x53, 0xda, 0x83, 0xd8, 0x57, 0x92,
222 	0xd1, 0x15, 0x45, 0x86, 0x40, 0xac, 0xf1, 0x6f,
223 	0x3c, 0x29, 0xef, 0x8d, 0x12, 0xe1, 0x9d, 0x04,
224 	0x17, 0x3a, 0xcc, 0xa6, 0xc5, 0xe4, 0x27, 0x41,
225 	0xcb, 0xfb, 0x5e, 0x77, 0x73, 0x5a, 0x2c, 0x03,
226 	0xe9, 0x2b, 0x76, 0x4e, 0x69, 0xea, 0xcb, 0xb3,
227 };
228 
229 /*
230  * IV method encblkno1, blkno 2.
231  */
232 static const uint8_t c3des_cbc_192_encblkno1_vec2_ctxt[SECSIZE] = {
233 	0x87, 0xb1, 0x3c, 0xd6, 0x60, 0xa0, 0x5a, 0x35,
234 	0xf7, 0xe1, 0x6b, 0x87, 0xa0, 0x90, 0x2f, 0xc7,
235 	0x8c, 0xed, 0x53, 0xda, 0x93, 0x32, 0x78, 0x5d,
236 	0x24, 0x23, 0x42, 0xdd, 0x93, 0x5b, 0x2e, 0x40,
237 	0xa1, 0xb1, 0x3b, 0xbb, 0xf0, 0x50, 0xb4, 0x61,
238 	0xea, 0x15, 0x37, 0xf3, 0x49, 0xe1, 0xa0, 0x32,
239 	0x88, 0x85, 0x81, 0xfd, 0xb7, 0x96, 0xd7, 0x9d,
240 	0xd7, 0x29, 0x4b, 0x14, 0xf9, 0x18, 0x6a, 0xf6,
241 	0x46, 0xae, 0x69, 0xdf, 0x63, 0x9a, 0xe0, 0x0b,
242 	0x2c, 0x53, 0xd7, 0x82, 0x6f, 0xe5, 0xa0, 0x95,
243 	0x2f, 0x61, 0x7f, 0x15, 0xff, 0xc7, 0xe8, 0x83,
244 	0xfc, 0xfc, 0x16, 0x1c, 0x37, 0x0f, 0x9b, 0xbb,
245 	0x14, 0xb2, 0xe2, 0xb7, 0x1f, 0x85, 0xb7, 0x07,
246 	0x8a, 0x18, 0xed, 0xf7, 0x5f, 0x27, 0xff, 0x2f,
247 	0x07, 0xf9, 0x9d, 0xe3, 0x79, 0x45, 0x1f, 0x51,
248 	0x08, 0x54, 0x0f, 0x56, 0x84, 0xee, 0x87, 0x9a,
249 	0xa9, 0x46, 0xb8, 0x77, 0x85, 0x40, 0x46, 0x50,
250 	0xc1, 0x58, 0x07, 0xfd, 0xfa, 0x2b, 0x20, 0xd6,
251 	0x4e, 0xba, 0x08, 0x02, 0x59, 0x3d, 0x23, 0x3b,
252 	0x5d, 0xf9, 0x5e, 0x2f, 0xac, 0x9e, 0xa0, 0xd7,
253 	0x3f, 0x9a, 0xdf, 0x50, 0x66, 0xcc, 0x28, 0xce,
254 	0x93, 0xc8, 0x11, 0x5c, 0x74, 0xe2, 0x4f, 0xfd,
255 	0xaf, 0x33, 0xbb, 0xce, 0x96, 0x1f, 0xb3, 0x46,
256 	0x6e, 0xcd, 0xe4, 0xef, 0xfa, 0x2f, 0x93, 0xb1,
257 	0xe5, 0x7c, 0x54, 0xbc, 0x17, 0x1f, 0xd5, 0x31,
258 	0x0e, 0x88, 0xe7, 0xcd, 0xb0, 0xb5, 0x2e, 0x1e,
259 	0x9e, 0x40, 0x36, 0xa5, 0xbb, 0xa7, 0x4e, 0xc8,
260 	0x11, 0x6c, 0xae, 0x1c, 0x2d, 0xdb, 0x55, 0xd8,
261 	0x14, 0x40, 0x02, 0xad, 0xaf, 0x19, 0x28, 0x59,
262 	0xd7, 0x4f, 0x81, 0xd0, 0xc1, 0x54, 0x63, 0x73,
263 	0x0e, 0xfb, 0x26, 0xf2, 0xa6, 0x80, 0xca, 0x2e,
264 	0xf3, 0xca, 0x1e, 0xa4, 0x62, 0x07, 0x22, 0x10,
265 	0x11, 0x6a, 0x57, 0x28, 0x45, 0x80, 0xdf, 0x34,
266 	0x88, 0xe5, 0xf1, 0x23, 0xe0, 0xb6, 0x44, 0x51,
267 	0x54, 0xd8, 0xb3, 0x66, 0xac, 0x46, 0x4d, 0xdf,
268 	0xa2, 0x8e, 0x72, 0x3a, 0x1c, 0x87, 0x2a, 0x43,
269 	0xfe, 0xdb, 0x00, 0xff, 0xb7, 0x1c, 0x13, 0xc3,
270 	0x18, 0xfc, 0x71, 0x13, 0xe3, 0xd1, 0x1f, 0xde,
271 	0x16, 0x63, 0x73, 0xf5, 0x0e, 0xf7, 0x18, 0xe5,
272 	0x48, 0x8d, 0x30, 0xd9, 0x26, 0x20, 0x6d, 0xa1,
273 	0xba, 0xde, 0xe8, 0x7d, 0x77, 0x02, 0x33, 0x0d,
274 	0x73, 0xb2, 0xab, 0x35, 0xfd, 0xa5, 0x6e, 0x4c,
275 	0x5c, 0x27, 0xc7, 0x7e, 0x4a, 0x28, 0xf8, 0xf5,
276 	0x00, 0xbe, 0x4c, 0xd7, 0x2c, 0x27, 0x83, 0x16,
277 	0x37, 0xda, 0x0c, 0xb1, 0xd7, 0x89, 0xd8, 0x8f,
278 	0x17, 0x69, 0x1b, 0x6b, 0x48, 0x2b, 0xce, 0x9c,
279 	0xbd, 0xf4, 0x0d, 0xb5, 0x4d, 0x12, 0x11, 0x36,
280 	0x49, 0xd3, 0x8b, 0x52, 0xce, 0x7e, 0x47, 0xb0,
281 	0xb5, 0x54, 0x77, 0xef, 0x90, 0xb8, 0x0e, 0xaf,
282 	0x6f, 0x97, 0x88, 0xde, 0x6b, 0x37, 0x24, 0xdd,
283 	0x91, 0x84, 0x00, 0x51, 0xab, 0x06, 0x96, 0x3c,
284 	0x82, 0x73, 0xcf, 0xae, 0x8d, 0x23, 0x86, 0x59,
285 	0x62, 0x5b, 0xeb, 0x2a, 0xaf, 0x40, 0x17, 0xed,
286 	0x2b, 0x60, 0x73, 0x7d, 0x99, 0x95, 0x3f, 0xd6,
287 	0x6c, 0xca, 0x1e, 0xf3, 0xb0, 0xcd, 0xd5, 0x1d,
288 	0x53, 0xe0, 0xd2, 0x8b, 0x57, 0x7b, 0xac, 0x67,
289 	0x5a, 0x5a, 0x0a, 0x64, 0x82, 0xab, 0x8f, 0x5a,
290 	0x36, 0xe2, 0x45, 0x50, 0xec, 0x3e, 0x14, 0x80,
291 	0x7c, 0xfd, 0x0c, 0xa9, 0x94, 0xfb, 0xfe, 0x72,
292 	0xec, 0x47, 0x71, 0x2e, 0x90, 0x97, 0xf6, 0x33,
293 	0xbd, 0x7d, 0x7e, 0x77, 0x8f, 0xad, 0xd4, 0x1d,
294 	0x1d, 0x53, 0x0f, 0x28, 0x39, 0x77, 0x06, 0x1a,
295 	0x75, 0xfc, 0x12, 0xe6, 0x45, 0xfc, 0x87, 0xe1,
296 	0x46, 0xac, 0xb0, 0x73, 0xca, 0x24, 0x7c, 0x71,
297 };
298 
299 /*
300  * IV method encblkno1, blkno 3.
301  */
302 static const uint8_t c3des_cbc_192_encblkno1_vec3_ctxt[SECSIZE] = {
303 	0xb1, 0xef, 0x7c, 0xd0, 0xa0, 0x6b, 0xe4, 0x88,
304 	0x5c, 0xd7, 0xf1, 0xbf, 0x5f, 0xce, 0xda, 0x19,
305 	0x81, 0x32, 0xbb, 0x96, 0x7e, 0xb9, 0x6e, 0xa1,
306 	0x43, 0xde, 0x53, 0x66, 0x9c, 0x27, 0x94, 0x85,
307 	0xcb, 0x09, 0x4e, 0x16, 0xd8, 0x60, 0x7a, 0x38,
308 	0x27, 0x21, 0x4d, 0x08, 0xaa, 0xe2, 0x1e, 0x6e,
309 	0xa3, 0xcb, 0x9a, 0x7f, 0xd1, 0xbf, 0x18, 0x36,
310 	0x5a, 0x4d, 0x7a, 0x7f, 0xcf, 0x3f, 0xba, 0xa5,
311 	0x77, 0x5b, 0xb4, 0x79, 0xdc, 0xbf, 0x2a, 0x28,
312 	0x16, 0x27, 0x0f, 0x8b, 0xd7, 0x95, 0xc3, 0xcb,
313 	0xa1, 0x6a, 0x49, 0x53, 0xa8, 0x0c, 0x70, 0xde,
314 	0x90, 0x2e, 0x36, 0x74, 0x40, 0x5d, 0x81, 0x74,
315 	0x03, 0x11, 0xbd, 0xba, 0x40, 0x8d, 0x03, 0x86,
316 	0x2b, 0x17, 0x55, 0x20, 0xd8, 0x81, 0x30, 0xd2,
317 	0x2a, 0xbd, 0xea, 0xff, 0x5c, 0x69, 0x9b, 0xe6,
318 	0xe3, 0x21, 0x9a, 0x10, 0x3e, 0xb0, 0xf4, 0x7a,
319 	0xfc, 0x6e, 0x66, 0xec, 0x44, 0x0b, 0x95, 0x8d,
320 	0x13, 0xd4, 0xf6, 0x3e, 0xa1, 0xa1, 0xac, 0xb1,
321 	0xd8, 0x3d, 0x86, 0xaf, 0x5e, 0xef, 0x14, 0x6a,
322 	0x32, 0xf3, 0x13, 0x75, 0x3b, 0x64, 0x9a, 0xf4,
323 	0xd0, 0xf5, 0x00, 0x36, 0x9e, 0xdb, 0xfd, 0xcb,
324 	0xda, 0x1f, 0xed, 0x9d, 0x6d, 0x52, 0xd7, 0xb5,
325 	0x48, 0xce, 0x53, 0x5e, 0xdc, 0xc8, 0xe4, 0x96,
326 	0x04, 0x32, 0xa5, 0xcf, 0x0c, 0xba, 0xa0, 0xd0,
327 	0x44, 0xb3, 0xe8, 0x72, 0xc6, 0xff, 0x8f, 0xd4,
328 	0x4d, 0x0a, 0x22, 0x89, 0x74, 0x50, 0xaa, 0x65,
329 	0x15, 0xab, 0x99, 0xc8, 0xf9, 0xa4, 0x10, 0xe6,
330 	0xa6, 0x4b, 0x0c, 0xc8, 0xb9, 0xa7, 0x60, 0x41,
331 	0xe7, 0x57, 0x31, 0xfa, 0x86, 0x55, 0xdf, 0x29,
332 	0x49, 0xac, 0x55, 0x7b, 0x21, 0xf9, 0x3b, 0x1e,
333 	0x1f, 0xb4, 0x1c, 0x0b, 0x77, 0xcb, 0x88, 0xbf,
334 	0xa6, 0x79, 0xbf, 0x9a, 0x51, 0xc4, 0x8e, 0x59,
335 	0x9c, 0xb3, 0x9d, 0x9d, 0x6b, 0xb2, 0x15, 0x41,
336 	0x0d, 0x6c, 0xf7, 0x5e, 0xe2, 0xf9, 0xb3, 0x80,
337 	0x8f, 0x03, 0x67, 0x68, 0x6e, 0x4b, 0x4d, 0x52,
338 	0xbc, 0x9b, 0xa2, 0xd8, 0x29, 0x1e, 0x5c, 0xd7,
339 	0x59, 0x67, 0x94, 0x40, 0x9e, 0x08, 0x15, 0x0d,
340 	0x7e, 0xc9, 0x14, 0x53, 0xa8, 0x67, 0xb3, 0xb8,
341 	0xaa, 0x21, 0x0f, 0x79, 0x69, 0x48, 0x52, 0xea,
342 	0x56, 0x03, 0x7b, 0x55, 0xb7, 0xf3, 0xfe, 0xb1,
343 	0x8a, 0x22, 0x7d, 0x75, 0x55, 0x31, 0xad, 0x20,
344 	0x6a, 0xc2, 0xa4, 0xd1, 0x1e, 0xab, 0xdd, 0x29,
345 	0xb5, 0xf8, 0xdd, 0x9b, 0x1a, 0xb8, 0xe7, 0xde,
346 	0xae, 0xa1, 0xab, 0xbb, 0xf6, 0x00, 0x87, 0xc4,
347 	0x29, 0xee, 0x2b, 0xa1, 0xa9, 0x1a, 0x46, 0x05,
348 	0x5a, 0x12, 0x3f, 0x32, 0x81, 0x25, 0x20, 0x71,
349 	0xb6, 0xfa, 0x1f, 0x27, 0x2a, 0x33, 0x49, 0xfc,
350 	0x95, 0x00, 0x72, 0x6b, 0x03, 0x53, 0x94, 0x57,
351 	0x2f, 0x47, 0x3d, 0x2d, 0x7c, 0xb4, 0xde, 0xa7,
352 	0x96, 0x81, 0x12, 0xff, 0x2c, 0xec, 0x5c, 0x03,
353 	0x2a, 0x8c, 0x76, 0xc4, 0xed, 0x09, 0xe6, 0x00,
354 	0x28, 0xdb, 0x9b, 0x44, 0xb0, 0xb4, 0x7b, 0x57,
355 	0x3b, 0xb6, 0x4f, 0x0b, 0xff, 0xf2, 0xf5, 0x02,
356 	0x56, 0xcf, 0xd5, 0xbf, 0x71, 0xe6, 0x66, 0xf3,
357 	0x08, 0x8e, 0x8b, 0x15, 0x57, 0x07, 0x41, 0xa3,
358 	0x91, 0xc1, 0xe4, 0x64, 0x92, 0x89, 0xed, 0x22,
359 	0x88, 0x8f, 0x17, 0x91, 0xde, 0xea, 0x0c, 0xa6,
360 	0x86, 0x8e, 0x4c, 0xd9, 0x63, 0xc9, 0xe5, 0xdc,
361 	0xd6, 0xd3, 0x7b, 0x2b, 0x65, 0xfa, 0x36, 0x47,
362 	0x20, 0xa4, 0xe7, 0x0b, 0x52, 0xfa, 0xa6, 0xeb,
363 	0x1d, 0x20, 0xd0, 0x4b, 0xfd, 0x88, 0x8c, 0xbb,
364 	0x52, 0x9c, 0x2f, 0xb7, 0xba, 0x8b, 0xdd, 0x10,
365 	0x2d, 0x7d, 0x77, 0x79, 0x40, 0xa7, 0xed, 0xf9,
366 	0xbd, 0x2a, 0x55, 0x1f, 0x87, 0x1e, 0x3c, 0xfc,
367 };
368 
369 const struct testvec c3des_cbc_192_1_vectors[] = {
370 	{
371 		.blkno = 0,
372 		.ptxt = c3des_cbc_ptxt,
373 		.ctxt = c3des_cbc_192_encblkno1_vec0_ctxt,
374 	},
375 	{
376 		.blkno = 1,
377 		.ptxt = c3des_cbc_ptxt,
378 		.ctxt = c3des_cbc_192_encblkno1_vec1_ctxt,
379 	},
380 	{
381 		.blkno = 2,
382 		.ptxt = c3des_cbc_ptxt,
383 		.ctxt = c3des_cbc_192_encblkno1_vec2_ctxt,
384 	},
385 	{
386 		.blkno = 3,
387 		.ptxt = c3des_cbc_ptxt,
388 		.ctxt = c3des_cbc_192_encblkno1_vec3_ctxt,
389 	},
390 };
391 
392 /*
393  * IV method encblkno8, blkno 0.
394  */
395 static const uint8_t c3des_cbc_192_encblkno8_vec0_ctxt[SECSIZE] = {
396 	0x9e, 0x5d, 0x35, 0x56, 0xa7, 0xcc, 0xc0, 0x1c,
397 	0x60, 0x4c, 0x42, 0x90, 0x35, 0xf3, 0xc1, 0x20,
398 	0xf2, 0x07, 0x6f, 0xf8, 0x7c, 0x33, 0x6a, 0x74,
399 	0xdc, 0x85, 0xbc, 0x9c, 0xa2, 0x29, 0xc6, 0x69,
400 	0x0e, 0xef, 0x0f, 0xa9, 0x6e, 0xec, 0xf2, 0x23,
401 	0x2f, 0x9a, 0xbe, 0x1a, 0x89, 0x22, 0x00, 0xc4,
402 	0x5a, 0xaf, 0x4a, 0xa0, 0x4f, 0x30, 0x8f, 0x99,
403 	0xd2, 0x93, 0x6d, 0xfa, 0xcd, 0x2f, 0xad, 0x19,
404 	0x10, 0x14, 0x90, 0x3a, 0x4b, 0xab, 0x17, 0x2e,
405 	0x2c, 0xe1, 0x26, 0xe5, 0x76, 0xf1, 0xd1, 0x1d,
406 	0x4c, 0x77, 0x68, 0xfb, 0x45, 0x9a, 0x3e, 0x19,
407 	0xe0, 0xfb, 0xdc, 0xd4, 0x0e, 0x29, 0x7c, 0x06,
408 	0xd3, 0x45, 0xa8, 0xf7, 0x39, 0x91, 0xe6, 0x18,
409 	0x0f, 0x81, 0xe6, 0x7d, 0x6c, 0x65, 0x2e, 0x16,
410 	0x24, 0xa4, 0x16, 0x96, 0x0a, 0x7b, 0x5f, 0x3a,
411 	0x0c, 0xe9, 0x0e, 0x3f, 0x34, 0x38, 0xb0, 0xe1,
412 	0x39, 0x23, 0x5c, 0x3c, 0x00, 0xb4, 0xa0, 0xf7,
413 	0x42, 0x18, 0x70, 0x25, 0x82, 0x13, 0x24, 0x49,
414 	0xbb, 0x3f, 0xfb, 0xef, 0xb6, 0xc6, 0x7f, 0x3d,
415 	0x8c, 0x17, 0x62, 0x60, 0x6f, 0xd5, 0xda, 0x2c,
416 	0xf8, 0x85, 0xee, 0xa7, 0xc2, 0x76, 0x5d, 0x34,
417 	0x4c, 0xe1, 0x0d, 0x36, 0x6e, 0x02, 0xdd, 0x08,
418 	0x85, 0xe4, 0x90, 0xfe, 0x1f, 0x81, 0x4a, 0x06,
419 	0xa6, 0x72, 0x81, 0x79, 0x47, 0xd7, 0x6d, 0x92,
420 	0x8f, 0xb7, 0xb2, 0xfd, 0xd0, 0x60, 0x6c, 0x06,
421 	0x44, 0xcd, 0x20, 0x28, 0xef, 0x16, 0xc3, 0x01,
422 	0x19, 0x14, 0x34, 0x39, 0xad, 0x87, 0x9f, 0xde,
423 	0x76, 0xb9, 0xb9, 0x87, 0x1a, 0xbd, 0x8e, 0x2c,
424 	0xe6, 0xb3, 0xe7, 0xb6, 0x80, 0xf8, 0xc5, 0x22,
425 	0x5f, 0x53, 0xed, 0x03, 0xfe, 0x09, 0x2c, 0x9d,
426 	0xb6, 0x61, 0x4a, 0xbb, 0x07, 0x5d, 0xbd, 0x68,
427 	0x74, 0xab, 0x02, 0x81, 0x64, 0x7b, 0x97, 0xa3,
428 	0xad, 0x15, 0x99, 0x7a, 0x04, 0x33, 0xbd, 0x50,
429 	0x94, 0x11, 0xcc, 0xf7, 0x8b, 0x77, 0x88, 0x78,
430 	0x80, 0xfe, 0x5f, 0xa1, 0x63, 0xbc, 0xb0, 0x65,
431 	0xcb, 0x9d, 0x4c, 0xfe, 0x66, 0x4e, 0xff, 0xe3,
432 	0x43, 0x61, 0x99, 0x88, 0x88, 0x4c, 0xbc, 0x8a,
433 	0xf1, 0x69, 0x00, 0xc2, 0xe5, 0xb9, 0x65, 0x8b,
434 	0x10, 0xdf, 0x38, 0x3e, 0x9e, 0x9f, 0x87, 0xed,
435 	0x84, 0x71, 0xe7, 0xf2, 0xb5, 0xb6, 0x11, 0xed,
436 	0x1e, 0xd4, 0xc0, 0x6d, 0x77, 0x08, 0x4b, 0xfd,
437 	0x95, 0xd5, 0xc0, 0xbe, 0xa6, 0xcc, 0x3b, 0xea,
438 	0x11, 0x38, 0xa5, 0x59, 0x36, 0x2a, 0xf4, 0x98,
439 	0x52, 0x9d, 0x3b, 0x8c, 0x8a, 0x19, 0xbd, 0xfb,
440 	0x49, 0xcb, 0xb0, 0x57, 0x91, 0xc7, 0xf8, 0x2a,
441 	0x89, 0xa8, 0x85, 0x03, 0xdf, 0x6e, 0xad, 0xf4,
442 	0x8a, 0x88, 0x9a, 0x2b, 0x5d, 0xe8, 0xca, 0xa9,
443 	0x8f, 0x18, 0xa3, 0x6a, 0x37, 0x84, 0xa9, 0x24,
444 	0x5b, 0xce, 0xd6, 0xbe, 0x7e, 0x40, 0x86, 0x6a,
445 	0xc3, 0x47, 0x28, 0x66, 0xf0, 0x8c, 0x2d, 0x69,
446 	0x22, 0x64, 0x61, 0x36, 0x6a, 0x0c, 0xc4, 0x18,
447 	0x5f, 0xd7, 0xff, 0xbc, 0xf1, 0x94, 0x16, 0xfb,
448 	0x26, 0xa7, 0x80, 0xa4, 0x2d, 0x72, 0xc6, 0x9d,
449 	0xa7, 0xed, 0x04, 0x13, 0x0f, 0xe7, 0xf8, 0x93,
450 	0x57, 0x6b, 0xd5, 0xa4, 0xad, 0x9a, 0x97, 0xeb,
451 	0x97, 0xe7, 0x60, 0x01, 0x89, 0x3f, 0x88, 0xf2,
452 	0xee, 0xf3, 0x79, 0xd6, 0x5a, 0x03, 0x94, 0x07,
453 	0xd3, 0x33, 0xc8, 0xda, 0x15, 0x17, 0x0a, 0x8f,
454 	0xbd, 0x58, 0x1b, 0xfe, 0x3d, 0x77, 0x5d, 0x8f,
455 	0x4e, 0x0e, 0x98, 0x7d, 0x02, 0x63, 0x94, 0x73,
456 	0x4a, 0x58, 0x47, 0xed, 0x52, 0xfc, 0x85, 0x19,
457 	0x5d, 0x2f, 0xfa, 0x07, 0x44, 0xbd, 0x8e, 0xcb,
458 	0x20, 0x63, 0x9d, 0x2b, 0x61, 0x5c, 0x19, 0x71,
459 	0x80, 0xe5, 0x25, 0x5b, 0x2e, 0xc5, 0xfe, 0x1a,
460 };
461 
462 /*
463  * IV method encblkno8, blkno 1.
464  */
465 static const uint8_t c3des_cbc_192_encblkno8_vec1_ctxt[SECSIZE] = {
466 	0xf4, 0xb0, 0xb0, 0xcb, 0x79, 0xcc, 0x8c, 0x0a,
467 	0x3b, 0xc7, 0x43, 0x4e, 0x62, 0x9d, 0xde, 0xb4,
468 	0xab, 0xa5, 0x62, 0x63, 0x32, 0xa7, 0x18, 0x2b,
469 	0xe3, 0xee, 0x44, 0xc6, 0x6f, 0xb2, 0xdc, 0x21,
470 	0xc5, 0xc8, 0x9e, 0x32, 0x71, 0x4c, 0x7a, 0x82,
471 	0x8d, 0xe0, 0xad, 0x91, 0x88, 0x0c, 0x41, 0x83,
472 	0x28, 0x0d, 0xed, 0xa7, 0xeb, 0x48, 0xb1, 0x31,
473 	0xfa, 0x40, 0xd9, 0x44, 0x19, 0xee, 0x8d, 0x2c,
474 	0x7d, 0xe2, 0x39, 0xa0, 0x39, 0xaa, 0x86, 0xab,
475 	0xb5, 0x68, 0xe5, 0x83, 0x06, 0x61, 0xec, 0xe6,
476 	0xc2, 0x85, 0xb2, 0x46, 0xf4, 0x5b, 0x0e, 0x34,
477 	0x7e, 0x0c, 0xa0, 0xda, 0xef, 0x58, 0x9c, 0x39,
478 	0x95, 0xa2, 0xca, 0xd3, 0x3b, 0x4d, 0x76, 0xe3,
479 	0x34, 0x6d, 0x08, 0xa4, 0xba, 0x88, 0x58, 0x39,
480 	0xb4, 0xe4, 0x6b, 0xb6, 0x32, 0x50, 0x2c, 0xe2,
481 	0x0a, 0x37, 0xbc, 0x98, 0x38, 0x32, 0x17, 0x1b,
482 	0x12, 0xef, 0xdc, 0x9d, 0x91, 0x09, 0x8e, 0xd8,
483 	0xc3, 0xf8, 0x7b, 0x35, 0x41, 0x3b, 0xf8, 0xf5,
484 	0x37, 0x48, 0x04, 0xf7, 0x94, 0xbf, 0x54, 0x8d,
485 	0x79, 0x49, 0x8f, 0xf0, 0x3f, 0xb7, 0x90, 0x76,
486 	0x14, 0x09, 0xc6, 0x8c, 0xba, 0x1a, 0x30, 0x1b,
487 	0xbb, 0xd9, 0xe2, 0xb5, 0xe8, 0xd9, 0x9b, 0x68,
488 	0x60, 0x90, 0xd3, 0x4a, 0xe8, 0x65, 0x7b, 0xaa,
489 	0xb0, 0xda, 0x69, 0x1d, 0x45, 0x78, 0x2c, 0x3b,
490 	0x59, 0x29, 0x3c, 0x26, 0x9a, 0xd2, 0xa5, 0xfd,
491 	0xb7, 0x16, 0x59, 0x7c, 0x46, 0xea, 0x99, 0xd0,
492 	0x06, 0x01, 0x3f, 0xd2, 0x23, 0xcc, 0xde, 0xb8,
493 	0xaa, 0x88, 0x17, 0x03, 0xe1, 0x48, 0x2c, 0xdd,
494 	0xce, 0xd1, 0x2c, 0xce, 0x37, 0xee, 0xe6, 0xa6,
495 	0x47, 0x8c, 0x07, 0xe5, 0xfe, 0x01, 0xc6, 0x27,
496 	0xfe, 0x3f, 0x9d, 0x30, 0x18, 0x36, 0xe7, 0xa7,
497 	0x37, 0x1d, 0xcf, 0x6d, 0x4c, 0x82, 0xec, 0x58,
498 	0xa1, 0x6f, 0x56, 0xc6, 0x08, 0x25, 0x94, 0xda,
499 	0xae, 0x1a, 0x4f, 0xda, 0xb2, 0xf4, 0xbf, 0x94,
500 	0xff, 0x66, 0x6a, 0xb1, 0x1f, 0x42, 0xfe, 0x32,
501 	0xa4, 0x0e, 0x3d, 0x6a, 0x16, 0x44, 0xe0, 0xac,
502 	0xe8, 0xc1, 0xe2, 0xa8, 0x73, 0xab, 0xac, 0x58,
503 	0xb1, 0xbc, 0x94, 0xb2, 0x6a, 0xe4, 0x45, 0xf5,
504 	0x90, 0x6b, 0x82, 0xeb, 0x9e, 0x22, 0x9e, 0xb2,
505 	0x27, 0x3e, 0xc8, 0x55, 0xf4, 0x8f, 0xda, 0x04,
506 	0xa3, 0x9c, 0xa4, 0x79, 0xbd, 0x79, 0xd3, 0xbd,
507 	0xbe, 0x72, 0x7f, 0x90, 0xef, 0xc3, 0x34, 0x17,
508 	0x72, 0x6f, 0xb4, 0xfe, 0x62, 0x56, 0xc3, 0xd6,
509 	0x43, 0xc8, 0x4c, 0x76, 0x91, 0x04, 0x97, 0x4c,
510 	0x84, 0x98, 0x56, 0xb7, 0x7b, 0x4f, 0xd5, 0xcf,
511 	0x1b, 0x9c, 0x09, 0xe3, 0x1d, 0xdf, 0x0e, 0xfa,
512 	0x39, 0xc8, 0x48, 0x43, 0x84, 0xec, 0x79, 0xc8,
513 	0x7f, 0x4f, 0xa8, 0xc0, 0xb4, 0xde, 0x8b, 0x79,
514 	0xcb, 0x9c, 0x42, 0x81, 0x49, 0xdc, 0x39, 0xb5,
515 	0x31, 0xa6, 0x22, 0xba, 0x71, 0xb8, 0x2d, 0x1d,
516 	0xc8, 0x17, 0xd8, 0x9d, 0x26, 0x2b, 0xd5, 0xcf,
517 	0x57, 0x46, 0x0a, 0x61, 0x7e, 0xb7, 0xc3, 0x9c,
518 	0xa6, 0x44, 0x60, 0x2d, 0x30, 0xb8, 0x10, 0x47,
519 	0x7d, 0x7e, 0x87, 0x76, 0xc1, 0x4e, 0x85, 0x77,
520 	0xbc, 0x30, 0x32, 0x56, 0x0a, 0x5b, 0x1c, 0xd0,
521 	0xf6, 0x47, 0x48, 0x22, 0xf4, 0x6e, 0x38, 0xc5,
522 	0xab, 0xe2, 0xd0, 0x4d, 0x40, 0x27, 0xab, 0x8f,
523 	0x43, 0xb1, 0x60, 0x29, 0x07, 0xd0, 0xf5, 0x25,
524 	0xe5, 0xfa, 0xe7, 0x46, 0x32, 0x37, 0xb9, 0xae,
525 	0x2e, 0x02, 0x8c, 0x94, 0x15, 0x69, 0xd6, 0x74,
526 	0xb4, 0x36, 0xdd, 0x94, 0x70, 0xa7, 0x16, 0x7b,
527 	0x4c, 0xd3, 0x48, 0x83, 0xc5, 0xb2, 0xb0, 0x6a,
528 	0xfe, 0x7e, 0xd4, 0xe5, 0x6d, 0xa5, 0x96, 0x20,
529 	0x08, 0x59, 0xbd, 0x0c, 0x3d, 0x55, 0xa5, 0x03,
530 };
531 
532 /*
533  * IV method encblkno8, blkno 2.
534  */
535 static const uint8_t c3des_cbc_192_encblkno8_vec2_ctxt[SECSIZE] = {
536 	0xea, 0x7c, 0x8c, 0x8e, 0x3e, 0x61, 0x34, 0x3d,
537 	0xe0, 0x7f, 0xd3, 0xe1, 0x3a, 0xb9, 0xc8, 0xf2,
538 	0x98, 0xdc, 0x59, 0x26, 0xd2, 0xd8, 0xa7, 0x7f,
539 	0x41, 0x98, 0x24, 0xa8, 0x28, 0x0c, 0x88, 0x55,
540 	0x91, 0xdb, 0x29, 0x17, 0x70, 0xd7, 0x03, 0xff,
541 	0xbd, 0x0e, 0xbf, 0xf8, 0x73, 0x92, 0x19, 0xe9,
542 	0x92, 0x67, 0xdb, 0x08, 0x94, 0x77, 0x71, 0x2d,
543 	0x00, 0xad, 0x26, 0x42, 0x2d, 0xac, 0x8c, 0x67,
544 	0x6f, 0xb3, 0x8e, 0x36, 0x22, 0xeb, 0x1f, 0x8c,
545 	0xd4, 0x9b, 0x9f, 0xa6, 0xa9, 0xb1, 0x52, 0x65,
546 	0x9a, 0xfe, 0xcc, 0x92, 0x48, 0x75, 0xf6, 0xb8,
547 	0x59, 0xfe, 0x0e, 0x67, 0x93, 0xce, 0x3b, 0x7e,
548 	0x51, 0x74, 0xe5, 0x24, 0x35, 0x08, 0x68, 0x21,
549 	0x6a, 0x7f, 0xdd, 0x8c, 0xfd, 0xcd, 0x6d, 0x90,
550 	0xc5, 0x3b, 0x26, 0x9e, 0x00, 0xf4, 0x1e, 0x70,
551 	0xd3, 0xe7, 0xe8, 0x2f, 0x52, 0x87, 0x76, 0x84,
552 	0xbb, 0x5c, 0x76, 0x5a, 0xc8, 0xea, 0x74, 0xe2,
553 	0x9e, 0x85, 0xf6, 0x53, 0x85, 0x1a, 0x6e, 0x02,
554 	0x0d, 0x32, 0x11, 0xc4, 0xec, 0xee, 0x79, 0x27,
555 	0xda, 0xca, 0xc0, 0x0b, 0x8e, 0x2d, 0xb7, 0x7d,
556 	0x8c, 0x6e, 0xfb, 0xa3, 0xa8, 0x24, 0x24, 0x62,
557 	0xc8, 0xdd, 0xc7, 0x16, 0x09, 0x33, 0x0f, 0xe5,
558 	0xc8, 0x60, 0x3d, 0xb6, 0xbf, 0x6c, 0x28, 0xd2,
559 	0x0b, 0x9c, 0xd9, 0xcb, 0x64, 0x49, 0xe4, 0x80,
560 	0x72, 0x58, 0xaa, 0xaa, 0x7e, 0x1d, 0x9f, 0xd7,
561 	0x29, 0x15, 0x65, 0xfc, 0xfd, 0x3f, 0xe1, 0x82,
562 	0x25, 0x3c, 0xd4, 0xbe, 0x59, 0x79, 0x63, 0xd1,
563 	0xd6, 0x0e, 0xda, 0x00, 0xf3, 0xaa, 0x13, 0xd3,
564 	0xed, 0xef, 0xca, 0x8b, 0x97, 0x15, 0x2d, 0x10,
565 	0x6f, 0xcf, 0xee, 0xc7, 0x21, 0xad, 0xe3, 0xe4,
566 	0xd8, 0x95, 0x21, 0x1f, 0xc0, 0x06, 0x3a, 0xbc,
567 	0xbb, 0x2a, 0x92, 0x78, 0x76, 0x9d, 0x1e, 0x7b,
568 	0xb5, 0x29, 0xaf, 0x96, 0x75, 0x2b, 0x41, 0xbd,
569 	0xae, 0x79, 0x28, 0x72, 0xe7, 0x54, 0xc4, 0x08,
570 	0xd3, 0xd2, 0xac, 0x96, 0xd0, 0x0f, 0x9b, 0x68,
571 	0x7d, 0x3f, 0xc2, 0xdd, 0x3d, 0xfc, 0xca, 0xcd,
572 	0x11, 0x71, 0xd9, 0x48, 0x53, 0x9f, 0xd3, 0x79,
573 	0x7d, 0x47, 0x71, 0x2a, 0x6d, 0x9e, 0xa9, 0x47,
574 	0xa1, 0xf7, 0x97, 0x80, 0x83, 0x70, 0x6b, 0xfe,
575 	0x10, 0x11, 0x6a, 0x0e, 0xdd, 0xde, 0x22, 0x3c,
576 	0x19, 0x30, 0x73, 0x73, 0x2e, 0x4b, 0x54, 0x17,
577 	0xc3, 0x2e, 0xe9, 0xce, 0xe0, 0xe3, 0xa0, 0x1a,
578 	0x28, 0xd1, 0x50, 0xa8, 0xd2, 0x40, 0xe2, 0x1b,
579 	0xfa, 0x49, 0x06, 0x49, 0x8b, 0x4b, 0xd9, 0xd5,
580 	0xf5, 0x50, 0xae, 0x64, 0x19, 0xe1, 0xd9, 0x4e,
581 	0xbb, 0x29, 0x70, 0x66, 0x46, 0xa8, 0x7e, 0x5b,
582 	0xdc, 0xe2, 0xd5, 0x9d, 0x56, 0x6d, 0x4c, 0xe6,
583 	0x0e, 0x6b, 0x71, 0x40, 0x82, 0xf7, 0xb3, 0xad,
584 	0x23, 0x17, 0xe3, 0x1c, 0x61, 0x1d, 0x3b, 0x71,
585 	0xfc, 0x06, 0x17, 0xec, 0x6c, 0x77, 0x98, 0x27,
586 	0xc7, 0x4b, 0x65, 0x17, 0x81, 0xe7, 0xcb, 0xce,
587 	0x09, 0x76, 0x82, 0x82, 0x4a, 0x53, 0x67, 0xa0,
588 	0x05, 0x25, 0x4c, 0xc4, 0xa7, 0xad, 0xa7, 0xaf,
589 	0xa0, 0x11, 0xd7, 0x73, 0x3b, 0x30, 0xbf, 0x53,
590 	0x50, 0x9b, 0xd8, 0xf3, 0x32, 0x15, 0xdd, 0x36,
591 	0x88, 0xc2, 0x39, 0x51, 0xb6, 0xb8, 0x0d, 0x5c,
592 	0x20, 0x4e, 0x24, 0xee, 0x95, 0x32, 0x61, 0x25,
593 	0xda, 0x73, 0x0d, 0x8a, 0x58, 0xe6, 0xcc, 0xad,
594 	0x79, 0x3d, 0xef, 0x29, 0x0c, 0x9f, 0xe1, 0xa7,
595 	0x22, 0x1e, 0xea, 0x7a, 0x4f, 0xfb, 0xc1, 0x1f,
596 	0x17, 0xca, 0x69, 0xd6, 0xa4, 0xce, 0x6e, 0xc0,
597 	0x70, 0xa3, 0x08, 0x32, 0x87, 0xb4, 0x6b, 0x80,
598 	0x5c, 0x7f, 0x88, 0x5c, 0xbf, 0x07, 0xd8, 0xe9,
599 	0xdd, 0xd2, 0x76, 0xa9, 0xaa, 0xd9, 0x55, 0x48,
600 };
601 
602 /*
603  * IV method encblkno8, blkno 3.
604  */
605 static const uint8_t c3des_cbc_192_encblkno8_vec3_ctxt[SECSIZE] = {
606 	0xf3, 0x49, 0xda, 0x5c, 0xde, 0x9d, 0x3e, 0x9d,
607 	0xb9, 0xc2, 0x6e, 0x96, 0xa9, 0x93, 0x10, 0x73,
608 	0x0e, 0x26, 0x39, 0xd6, 0x9f, 0x04, 0x5f, 0x69,
609 	0x54, 0xa3, 0x7c, 0x46, 0x7b, 0x18, 0x93, 0xc0,
610 	0xbb, 0x0c, 0x96, 0x6f, 0xb0, 0xbf, 0xce, 0x67,
611 	0x33, 0x3e, 0x56, 0xe8, 0x6b, 0x4d, 0x3f, 0xc8,
612 	0x3c, 0xc6, 0x89, 0x2c, 0x0b, 0x95, 0x3a, 0xaf,
613 	0xc0, 0xf3, 0x1f, 0x0e, 0x07, 0x01, 0xa6, 0x35,
614 	0x19, 0x79, 0x91, 0x24, 0xaa, 0x0d, 0xf0, 0x53,
615 	0x27, 0x7d, 0xbb, 0xa6, 0xb6, 0x44, 0x31, 0x4b,
616 	0xd4, 0xcf, 0xf6, 0x6d, 0x18, 0xa2, 0x28, 0x8a,
617 	0xc1, 0x0a, 0xbe, 0x57, 0x0c, 0x61, 0x5f, 0xd9,
618 	0x12, 0x14, 0xfe, 0xe2, 0xc7, 0x10, 0x72, 0xee,
619 	0x19, 0xb8, 0x16, 0x0b, 0x88, 0x87, 0xce, 0xf3,
620 	0xfe, 0x57, 0x37, 0xd1, 0xa2, 0xf7, 0xd0, 0x5e,
621 	0x73, 0xde, 0x39, 0x35, 0xbc, 0xde, 0xed, 0x61,
622 	0x4b, 0x31, 0xdc, 0xfe, 0x3c, 0x4d, 0x98, 0xa9,
623 	0x36, 0xb0, 0x34, 0x5b, 0xb4, 0xb7, 0x79, 0x25,
624 	0x6e, 0x24, 0x7e, 0x10, 0xfe, 0x20, 0xd5, 0x16,
625 	0x86, 0xaf, 0xcd, 0x26, 0x34, 0xd3, 0x2e, 0xdc,
626 	0x7c, 0x69, 0xe3, 0xc5, 0x62, 0x0c, 0xba, 0x29,
627 	0x9c, 0x4b, 0x2f, 0x39, 0x45, 0xe1, 0xcf, 0xc5,
628 	0xfe, 0x35, 0xb6, 0x2f, 0xb1, 0x1a, 0x90, 0xe1,
629 	0xa7, 0x39, 0xe8, 0x1e, 0x5f, 0xac, 0xab, 0x1e,
630 	0x32, 0xba, 0xc5, 0x92, 0x39, 0x62, 0x37, 0x2c,
631 	0x49, 0xf1, 0x62, 0x90, 0xf7, 0x1e, 0x10, 0xce,
632 	0x8e, 0x95, 0xa3, 0xc6, 0xd8, 0xe5, 0xc8, 0xdf,
633 	0xcc, 0x94, 0x7d, 0x26, 0xab, 0x29, 0xbb, 0x9d,
634 	0xf3, 0x73, 0xce, 0xac, 0x76, 0xdf, 0x75, 0x2a,
635 	0x3e, 0x8f, 0x47, 0xff, 0x76, 0xfe, 0xea, 0xd4,
636 	0x4a, 0xa9, 0x36, 0x9d, 0x12, 0x45, 0xb7, 0x99,
637 	0x81, 0xb6, 0x77, 0x98, 0x13, 0xfb, 0x5a, 0xe5,
638 	0x40, 0x87, 0x61, 0x0d, 0x10, 0x76, 0xf6, 0x3e,
639 	0x48, 0xac, 0xc4, 0x27, 0x87, 0xcd, 0x07, 0xde,
640 	0x0b, 0x23, 0x97, 0x61, 0x3d, 0x18, 0x64, 0x7f,
641 	0xbf, 0xd6, 0x87, 0xc1, 0x11, 0xfb, 0xf9, 0xda,
642 	0x14, 0xa1, 0x01, 0xf8, 0x7e, 0xea, 0x5b, 0x5b,
643 	0xdd, 0x09, 0xf9, 0x31, 0x80, 0x3c, 0xee, 0x34,
644 	0x2d, 0xda, 0x71, 0xd9, 0x32, 0x7d, 0x45, 0xb2,
645 	0x53, 0xea, 0xd5, 0x7c, 0x85, 0x45, 0xce, 0x1d,
646 	0x2b, 0xe9, 0xd7, 0x95, 0xf8, 0x8c, 0x08, 0xe4,
647 	0xd0, 0x2f, 0x60, 0x75, 0x02, 0xf3, 0xde, 0xeb,
648 	0x46, 0x40, 0xa8, 0xd2, 0x37, 0xd6, 0xca, 0x5d,
649 	0xb9, 0xf4, 0x51, 0x31, 0x8a, 0x1a, 0x82, 0xbd,
650 	0x6f, 0x6d, 0x88, 0x2b, 0x63, 0x0f, 0xe1, 0xf0,
651 	0xcf, 0x13, 0x79, 0x1d, 0x78, 0x82, 0x66, 0xa1,
652 	0xef, 0xdb, 0x34, 0x50, 0xd2, 0x71, 0x47, 0x49,
653 	0x41, 0x74, 0xd9, 0x0b, 0x14, 0x38, 0x1f, 0xc3,
654 	0x09, 0x4d, 0xb3, 0xa6, 0x03, 0x3f, 0x56, 0x67,
655 	0xd7, 0x51, 0x4c, 0x8a, 0x1d, 0x37, 0x99, 0xfb,
656 	0xe1, 0x84, 0x57, 0x55, 0x9b, 0xf8, 0x73, 0x63,
657 	0x68, 0x73, 0x89, 0x52, 0x06, 0xe7, 0x34, 0xe7,
658 	0x1a, 0x15, 0x7e, 0xd9, 0x84, 0xa3, 0x0e, 0x68,
659 	0x14, 0x1c, 0xe8, 0x23, 0x9e, 0xe3, 0x8f, 0x71,
660 	0x02, 0x9b, 0x87, 0xd4, 0xd9, 0x1b, 0xd1, 0x9e,
661 	0x9e, 0xa0, 0x7e, 0x49, 0x8e, 0xaa, 0x89, 0xb5,
662 	0x16, 0x48, 0x07, 0xb3, 0x3d, 0x9e, 0x4c, 0x35,
663 	0x3e, 0x94, 0xa9, 0xf8, 0x82, 0x50, 0x6a, 0x41,
664 	0x28, 0x3e, 0x9f, 0x9a, 0x1a, 0x5d, 0x02, 0x7c,
665 	0xd0, 0x32, 0x52, 0xa5, 0xee, 0x09, 0x27, 0x2d,
666 	0x49, 0x17, 0xf7, 0x92, 0xa1, 0x63, 0x9d, 0x2a,
667 	0xfd, 0x53, 0x26, 0x14, 0x7c, 0x92, 0x72, 0xa6,
668 	0x38, 0x18, 0x8f, 0xb5, 0x54, 0xb3, 0x69, 0x63,
669 	0x6a, 0xdc, 0xb1, 0x5a, 0x12, 0x7a, 0x0b, 0xa3,
670 };
671 
672 const struct testvec c3des_cbc_192_8_vectors[] = {
673 	{
674 		.blkno = 0,
675 		.ptxt = c3des_cbc_ptxt,
676 		.ctxt = c3des_cbc_192_encblkno8_vec0_ctxt,
677 	},
678 	{
679 		.blkno = 1,
680 		.ptxt = c3des_cbc_ptxt,
681 		.ctxt = c3des_cbc_192_encblkno8_vec1_ctxt,
682 	},
683 	{
684 		.blkno = 2,
685 		.ptxt = c3des_cbc_ptxt,
686 		.ctxt = c3des_cbc_192_encblkno8_vec2_ctxt,
687 	},
688 	{
689 		.blkno = 3,
690 		.ptxt = c3des_cbc_ptxt,
691 		.ctxt = c3des_cbc_192_encblkno8_vec3_ctxt,
692 	},
693 };
694 
695 static int
696 open_disk(const char *devpath, const char *imgpath, size_t size)
697 {
698 	int fd;
699 
700 	fd = open(imgpath, O_CREAT | O_RDWR | O_TRUNC, 0600);
701 	if (fd < 0)
702 		return -1;
703 
704 	if (ftruncate(fd, size) < 0)
705 		goto fail;
706 
707 	if (rump_pub_etfs_register_withsize(devpath,
708 	    imgpath, RUMP_ETFS_BLK, 0, size) < 0) {
709 		goto fail;
710 	}
711 
712 	unlink(imgpath);
713 	return fd;
714 fail:
715 	close(fd);
716 	unlink(imgpath);
717 	return -1;
718 }
719 
720 static int
721 open_cgd(int devno)
722 {
723 	char devpath[32];
724 
725 	sprintf(devpath, "/dev/rcgd%d%c", devno, getrawpartition() + 'a');
726 
727 	return rump_sys_open(devpath, O_RDWR, 0);
728 }
729 
730 static int
731 configure_cgd(int fd, const char *dkpath, const char *alg,
732     const char *ivmethod, const char *key, size_t keylen)
733 {
734 	struct cgd_ioctl ci;
735 
736 	memset(&ci, 0, sizeof(ci));
737 	ci.ci_disk = dkpath;
738 	ci.ci_alg = alg;
739 	ci.ci_ivmethod = ivmethod;
740 	ci.ci_keylen = 8 * keylen - 8; /* Exclude the NUL terminator. */
741 	ci.ci_key = key;
742 	ci.ci_blocksize = 64;
743 
744 	return rump_sys_ioctl(fd, CGDIOCSET, &ci);
745 }
746 
747 static int
748 unconfigure_cgd(int fd)
749 {
750 	struct cgd_ioctl ci;
751 
752 	return rump_sys_ioctl(fd, CGDIOCCLR, &ci);
753 }
754 
755 static int
756 write_testvec(int cgdfd, const struct testvec *tv)
757 {
758 
759 	if (rump_sys_lseek(cgdfd, tv->blkno * SECSIZE, SEEK_SET) < 0)
760 		return -1;
761 
762 	if (rump_sys_write(cgdfd, tv->ptxt, SECSIZE) != SECSIZE)
763 		return -1;
764 
765 	return 0;
766 }
767 
768 static int
769 read_testvec(int cgdfd, const struct testvec *tv)
770 {
771 	char *buf;
772 	int res = -1;
773 
774 	buf = malloc(SECSIZE);
775 	if (buf == NULL)
776 		return -1;
777 
778 	if (rump_sys_lseek(cgdfd, tv->blkno * SECSIZE, SEEK_SET) < 0)
779 		goto fail;
780 
781 	if (rump_sys_read(cgdfd, buf, SECSIZE) != SECSIZE)
782 		goto fail;
783 
784 	res = memcmp(buf, tv->ptxt, SECSIZE);
785 fail:
786 	free(buf);
787 	return res;
788 }
789 
790 static int
791 check_testvec(int dkfd, const struct testvec *tv)
792 {
793 	char *buf;
794 	int res = -1;
795 
796 	buf = malloc(SECSIZE);
797 	if (buf == NULL)
798 		return -1;
799 
800 	if (lseek(dkfd, tv->blkno * SECSIZE, SEEK_SET) < 0)
801 		goto fail;
802 
803 	if (read(dkfd, buf, SECSIZE) != SECSIZE)
804 		goto fail;
805 
806 	res = memcmp(buf, tv->ctxt, SECSIZE);
807 fail:
808 	free(buf);
809 	return res;
810 }
811 
812 ATF_TC(cgd_3des_cbc_192_encblkno1);
813 ATF_TC_HEAD(cgd_3des_cbc_192_encblkno1, tc)
814 {
815 	atf_tc_set_md_var(tc, "descr",
816 	    "Test 3des-cbc with 192 bits key, ivmethod encblkno1");
817 }
818 
819 ATF_TC_BODY(cgd_3des_cbc_192_encblkno1, tc)
820 {
821 	const char imgpath[] = "3des-cbc-192-encblkno1.img";
822 	const char *dkpath = "/dev/dk";
823 	const size_t dksize = 4 * SECSIZE; /* Last blkno is 3. */
824 	int dkfd, cgdfd;
825 
826 	rump_init();
827 
828 	RL(dkfd = open_disk(dkpath, imgpath, dksize));
829 
830 	RL(cgdfd = open_cgd(0));
831 	RL(configure_cgd(cgdfd, dkpath, "3des-cbc", "encblkno1",
832 	    c3des_cbc_192_key, sizeof(c3des_cbc_192_key)));
833 
834 	ATF_CHECK_EQ(write_testvec(cgdfd, &c3des_cbc_192_1_vectors[0]), 0);
835 	ATF_CHECK_EQ(write_testvec(cgdfd, &c3des_cbc_192_1_vectors[1]), 0);
836 	ATF_CHECK_EQ(write_testvec(cgdfd, &c3des_cbc_192_1_vectors[2]), 0);
837 	ATF_CHECK_EQ(write_testvec(cgdfd, &c3des_cbc_192_1_vectors[3]), 0);
838 
839 	RL(unconfigure_cgd(cgdfd));
840 	RL(configure_cgd(cgdfd, dkpath, "3des-cbc", "encblkno1",
841 	    c3des_cbc_192_key, sizeof(c3des_cbc_192_key)));
842 
843 	ATF_CHECK_EQ(read_testvec(cgdfd, &c3des_cbc_192_1_vectors[0]), 0);
844 	ATF_CHECK_EQ(read_testvec(cgdfd, &c3des_cbc_192_1_vectors[1]), 0);
845 	ATF_CHECK_EQ(read_testvec(cgdfd, &c3des_cbc_192_1_vectors[2]), 0);
846 	ATF_CHECK_EQ(read_testvec(cgdfd, &c3des_cbc_192_1_vectors[3]), 0);
847 
848 	RL(unconfigure_cgd(cgdfd));
849 	RL(rump_sys_close(cgdfd));
850 
851 	ATF_CHECK_EQ(check_testvec(dkfd, &c3des_cbc_192_1_vectors[0]), 0);
852 	ATF_CHECK_EQ(check_testvec(dkfd, &c3des_cbc_192_1_vectors[1]), 0);
853 	ATF_CHECK_EQ(check_testvec(dkfd, &c3des_cbc_192_1_vectors[2]), 0);
854 	ATF_CHECK_EQ(check_testvec(dkfd, &c3des_cbc_192_1_vectors[3]), 0);
855 
856 	RL(close(dkfd));
857 }
858 
859 ATF_TC(cgd_3des_cbc_192_encblkno8);
860 ATF_TC_HEAD(cgd_3des_cbc_192_encblkno8, tc)
861 {
862 	atf_tc_set_md_var(tc, "descr",
863 	    "Test 3des-cbc with 192 bits key, ivmethod encblkno8");
864 }
865 
866 ATF_TC_BODY(cgd_3des_cbc_192_encblkno8, tc)
867 {
868 	const char imgpath[] = "3des-cbc-192-encblkno8.img";
869 	const char *dkpath = "/dev/dk";
870 	const size_t dksize = 4 * SECSIZE; /* Last blkno is 3. */
871 	int dkfd, cgdfd;
872 
873 	rump_init();
874 
875 	RL(dkfd = open_disk(dkpath, imgpath, dksize));
876 
877 	RL(cgdfd = open_cgd(0));
878 	RL(configure_cgd(cgdfd, dkpath, "3des-cbc", "encblkno8",
879 	    c3des_cbc_192_key, sizeof(c3des_cbc_192_key)));
880 
881 	ATF_CHECK_EQ(write_testvec(cgdfd, &c3des_cbc_192_8_vectors[0]), 0);
882 	ATF_CHECK_EQ(write_testvec(cgdfd, &c3des_cbc_192_8_vectors[1]), 0);
883 	ATF_CHECK_EQ(write_testvec(cgdfd, &c3des_cbc_192_8_vectors[2]), 0);
884 	ATF_CHECK_EQ(write_testvec(cgdfd, &c3des_cbc_192_8_vectors[3]), 0);
885 
886 	RL(unconfigure_cgd(cgdfd));
887 	RL(configure_cgd(cgdfd, dkpath, "3des-cbc", "encblkno8",
888 	    c3des_cbc_192_key, sizeof(c3des_cbc_192_key)));
889 
890 	ATF_CHECK_EQ(read_testvec(cgdfd, &c3des_cbc_192_8_vectors[0]), 0);
891 	ATF_CHECK_EQ(read_testvec(cgdfd, &c3des_cbc_192_8_vectors[1]), 0);
892 	ATF_CHECK_EQ(read_testvec(cgdfd, &c3des_cbc_192_8_vectors[2]), 0);
893 	ATF_CHECK_EQ(read_testvec(cgdfd, &c3des_cbc_192_8_vectors[3]), 0);
894 
895 	RL(unconfigure_cgd(cgdfd));
896 	RL(rump_sys_close(cgdfd));
897 
898 	ATF_CHECK_EQ(check_testvec(dkfd, &c3des_cbc_192_8_vectors[0]), 0);
899 	ATF_CHECK_EQ(check_testvec(dkfd, &c3des_cbc_192_8_vectors[1]), 0);
900 	ATF_CHECK_EQ(check_testvec(dkfd, &c3des_cbc_192_8_vectors[2]), 0);
901 	ATF_CHECK_EQ(check_testvec(dkfd, &c3des_cbc_192_8_vectors[3]), 0);
902 
903 	RL(close(dkfd));
904 }
905 
906 ATF_TP_ADD_TCS(tp)
907 {
908 
909 	ATF_TP_ADD_TC(tp, cgd_3des_cbc_192_encblkno1);
910 	ATF_TP_ADD_TC(tp, cgd_3des_cbc_192_encblkno8);
911 
912 	return atf_no_error();
913 }
914