1314818Sngie/*	$NetBSD: t_cgd_3des.c,v 1.2 2017/01/13 21:30:39 christos Exp $	*/
2311966Sngie/*-
3311966Sngie * Copyright (c) 2016 The NetBSD Foundation, Inc.
4311966Sngie * All rights reserved.
5311966Sngie *
6311966Sngie * This code is derived from software contributed to The NetBSD Foundation
7311966Sngie * by Alexander Nasonov.
8311966Sngie *
9311966Sngie * Redistribution and use in source and binary forms, with or without
10311966Sngie * modification, are permitted provided that the following conditions
11311966Sngie * are met:
12311966Sngie *
13311966Sngie * 1. Redistributions of source code must retain the above copyright
14311966Sngie *    notice, this list of conditions and the following disclaimer.
15311966Sngie * 2. Redistributions in binary form must reproduce the above copyright
16311966Sngie *    notice, this list of conditions and the following disclaimer in
17311966Sngie *    the documentation and/or other materials provided with the
18311966Sngie *    distribution.
19311966Sngie *
20311966Sngie * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21311966Sngie * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22311966Sngie * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
23311966Sngie * FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
24311966Sngie * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
25311966Sngie * INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING,
26311966Sngie * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
27311966Sngie * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
28311966Sngie * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
29311966Sngie * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
30311966Sngie * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31311966Sngie * SUCH DAMAGE.
32311966Sngie */
33311966Sngie
34311966Sngie#include <sys/types.h>
35311966Sngie#include <sys/ioctl.h>
36311966Sngie#include <sys/sysctl.h>
37311966Sngie
38311966Sngie#include <atf-c.h>
39311966Sngie#include <fcntl.h>
40311966Sngie#include <stdio.h>
41311966Sngie#include <stdlib.h>
42311966Sngie#include <string.h>
43311966Sngie#include <unistd.h>
44311966Sngie#include <util.h>
45311966Sngie
46311966Sngie#include <dev/cgdvar.h>
47311966Sngie
48311966Sngie#include <rump/rump.h>
49311966Sngie#include <rump/rump_syscalls.h>
50311966Sngie
51314818Sngie#include "h_macros.h"
52311966Sngie
53311966Sngie#define SECSIZE 512
54311966Sngie
55311966Sngiestruct testvec {
56311966Sngie	unsigned int blkno;
57311966Sngie	const uint8_t *ptxt;	/* PlainText  */
58311966Sngie	const uint8_t *ctxt;	/* CipherText */
59311966Sngie};
60311966Sngie
61311966Sngie/*
62311966Sngie * 192 bits CBC key, NUL terminated.
63311966Sngie */
64311966Sngiestatic const char c3des_cbc_192_key[25] = {
65311966Sngie	0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, /* ABCDEFGH */
66311966Sngie	0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, /* IJKLMNOP */
67311966Sngie	0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, /* QRSTUVWX */
68311966Sngie	0
69311966Sngie};
70311966Sngie
71311966Sngiestatic const uint8_t c3des_cbc_ptxt[SECSIZE] =
72311966Sngie	"                abcdefghijklmnop"
73311966Sngie	"                abcdefghijklmnop"
74311966Sngie	"                abcdefghijklmnop"
75311966Sngie	"                abcdefghijklmnop"
76311966Sngie	"                abcdefghijklmnop"
77311966Sngie	"                abcdefghijklmnop"
78311966Sngie	"                abcdefghijklmnop"
79311966Sngie	"                abcdefghijklmnop"
80311966Sngie	"                abcdefghijklmnop"
81311966Sngie	"                abcdefghijklmnop"
82311966Sngie	"                abcdefghijklmnop"
83311966Sngie	"                abcdefghijklmnop"
84311966Sngie	"                abcdefghijklmnop"
85311966Sngie	"                abcdefghijklmnop"
86311966Sngie	"                abcdefghijklmnop"
87311966Sngie	"                abcdefghijklmnop";
88311966Sngie
89311966Sngie/*
90311966Sngie * IV method encblkno1, blkno 0.
91311966Sngie */
92311966Sngiestatic const uint8_t c3des_cbc_192_encblkno1_vec0_ctxt[SECSIZE] = {
93311966Sngie	0x19, 0x92, 0xc8, 0xce, 0xdf, 0xa3, 0x14, 0xef,
94311966Sngie	0xff, 0x88, 0x9f, 0x01, 0xfa, 0x6f, 0xfa, 0xa6,
95311966Sngie	0xdd, 0x2b, 0x43, 0x67, 0xfa, 0xce, 0x37, 0x95,
96311966Sngie	0x73, 0x4d, 0x18, 0x33, 0x0c, 0x29, 0xb6, 0xbb,
97311966Sngie	0x37, 0x77, 0x31, 0x74, 0xf6, 0x62, 0x03, 0xd2,
98311966Sngie	0x78, 0x13, 0x55, 0xf6, 0x58, 0x49, 0xaf, 0x2a,
99311966Sngie	0x15, 0x4c, 0xc2, 0x4a, 0x55, 0x99, 0x82, 0xb9,
100311966Sngie	0xfb, 0x8b, 0x4f, 0x92, 0xe3, 0xbc, 0x9b, 0x09,
101311966Sngie	0x42, 0x7b, 0x5f, 0x54, 0xed, 0xf0, 0xcb, 0x5d,
102311966Sngie	0x93, 0xba, 0x09, 0x4b, 0x20, 0xf3, 0xe6, 0x44,
103311966Sngie	0x30, 0x5e, 0x9e, 0xfc, 0x7a, 0x3c, 0x7d, 0x11,
104311966Sngie	0x63, 0xea, 0x40, 0x94, 0xaa, 0xd0, 0xa9, 0xf6,
105311966Sngie	0xc7, 0x1e, 0x8f, 0xc8, 0xa6, 0x2c, 0xf7, 0xeb,
106311966Sngie	0x51, 0x26, 0xdc, 0xf8, 0x73, 0xf9, 0xb4, 0xa8,
107311966Sngie	0x80, 0x4a, 0xe5, 0x6f, 0xb6, 0x33, 0x13, 0x6b,
108311966Sngie	0x1b, 0x7d, 0x00, 0xde, 0x44, 0x7e, 0x26, 0xa2,
109311966Sngie	0x82, 0xa7, 0x80, 0x16, 0x34, 0xde, 0xb9, 0x82,
110311966Sngie	0x4c, 0x42, 0x8e, 0x0d, 0x48, 0x7e, 0x38, 0xbd,
111311966Sngie	0x1d, 0x7d, 0x98, 0xbb, 0x11, 0x8a, 0x72, 0x14,
112311966Sngie	0x4e, 0xaa, 0xd0, 0xef, 0x4d, 0x7f, 0xa3, 0xa6,
113311966Sngie	0xfc, 0x85, 0x9d, 0x74, 0x63, 0x9d, 0xe4, 0x5c,
114311966Sngie	0xf7, 0xa8, 0xd0, 0xd7, 0x95, 0xb4, 0x28, 0x64,
115311966Sngie	0x41, 0x2d, 0x5d, 0xd9, 0xba, 0x79, 0xa7, 0xb3,
116311966Sngie	0x9c, 0x16, 0xfa, 0xb8, 0x10, 0x5d, 0x1d, 0xd4,
117311966Sngie	0xce, 0xad, 0x67, 0x27, 0x91, 0x8a, 0xb3, 0xbc,
118311966Sngie	0x37, 0x20, 0x95, 0xac, 0xf7, 0x0d, 0xe0, 0x1e,
119311966Sngie	0x59, 0xa7, 0xe5, 0x81, 0x82, 0x6a, 0x71, 0x07,
120311966Sngie	0x85, 0x43, 0x43, 0xdb, 0xbf, 0x56, 0xb0, 0x0a,
121311966Sngie	0x4c, 0xf1, 0xcd, 0xcd, 0xa3, 0x9a, 0x10, 0x8e,
122311966Sngie	0x0c, 0xe2, 0x6d, 0xf2, 0x16, 0xd0, 0x4c, 0xac,
123311966Sngie	0xf9, 0xfc, 0xc9, 0x56, 0x1f, 0x31, 0x89, 0x1c,
124311966Sngie	0xfa, 0xb7, 0x49, 0xea, 0x69, 0x91, 0xfe, 0x45,
125311966Sngie	0x96, 0x5e, 0x45, 0xc3, 0x2c, 0xb1, 0x40, 0xd9,
126311966Sngie	0x1f, 0x82, 0x3f, 0xc1, 0x45, 0x7c, 0x39, 0x72,
127311966Sngie	0x6f, 0x52, 0xe4, 0xaf, 0x15, 0xa4, 0xe2, 0xd4,
128311966Sngie	0xa1, 0xa4, 0xb2, 0xb5, 0x4a, 0x0b, 0xad, 0xe4,
129311966Sngie	0x1e, 0x5c, 0x26, 0x62, 0x81, 0x78, 0x3e, 0xd3,
130311966Sngie	0x6a, 0x98, 0x94, 0x2a, 0x00, 0xa7, 0xe4, 0x04,
131311966Sngie	0x9d, 0x9a, 0xfc, 0xcf, 0xad, 0x2b, 0xba, 0x9b,
132311966Sngie	0x40, 0x1e, 0x71, 0x3a, 0xb6, 0x92, 0xc4, 0xc5,
133311966Sngie	0x56, 0x58, 0x92, 0x2a, 0x69, 0xbe, 0x0f, 0xb0,
134311966Sngie	0x91, 0xae, 0xaa, 0x3f, 0x07, 0xe8, 0xf9, 0x71,
135311966Sngie	0x20, 0x06, 0xed, 0xe0, 0x80, 0xec, 0xc9, 0xe7,
136311966Sngie	0x54, 0xaa, 0xaa, 0xf4, 0x4c, 0xb2, 0x34, 0xf7,
137311966Sngie	0x8a, 0x76, 0xc2, 0x4a, 0xae, 0x71, 0x7a, 0x07,
138311966Sngie	0xd7, 0xec, 0x75, 0x2f, 0x8a, 0x99, 0x59, 0x13,
139311966Sngie	0xd0, 0x8d, 0x18, 0x69, 0x0d, 0xd9, 0x39, 0x73,
140311966Sngie	0x2b, 0xd0, 0xa3, 0xbc, 0x9e, 0x29, 0x4d, 0x88,
141311966Sngie	0xff, 0x98, 0x02, 0xb4, 0xcf, 0xa1, 0xf9, 0x2a,
142311966Sngie	0xa6, 0xef, 0x7c, 0x72, 0x26, 0x4e, 0xd7, 0xdf,
143311966Sngie	0xec, 0x3a, 0xbc, 0x8e, 0xe6, 0xb3, 0x2b, 0x43,
144311966Sngie	0xcd, 0x67, 0x8b, 0x72, 0x00, 0x6f, 0xe5, 0x85,
145311966Sngie	0xe2, 0x2a, 0x4c, 0x8d, 0x02, 0x44, 0x6b, 0x7a,
146311966Sngie	0x89, 0x7a, 0x18, 0x3b, 0xc8, 0x9c, 0x8d, 0x60,
147311966Sngie	0xec, 0x79, 0x58, 0x15, 0x98, 0x71, 0x4b, 0x1a,
148311966Sngie	0x34, 0x69, 0x96, 0xd0, 0x0f, 0x01, 0x27, 0x2e,
149311966Sngie	0x19, 0x02, 0xf0, 0x17, 0x8c, 0x89, 0xbf, 0x05,
150311966Sngie	0xf0, 0xfe, 0xc3, 0xe6, 0x90, 0x9d, 0xa2, 0xb1,
151311966Sngie	0x40, 0x06, 0x7e, 0xcd, 0x20, 0x7e, 0x5f, 0x54,
152311966Sngie	0x31, 0xfb, 0x79, 0x84, 0x47, 0x38, 0x71, 0x69,
153311966Sngie	0xe1, 0xd5, 0x4e, 0x84, 0xa3, 0x2b, 0x4a, 0x86,
154311966Sngie	0xc2, 0x21, 0x5b, 0x15, 0xc3, 0x63, 0xbb, 0xc5,
155311966Sngie	0x5c, 0xc1, 0xfb, 0x31, 0x3a, 0x4d, 0xb1, 0x9e,
156311966Sngie	0xe1, 0xd8, 0x67, 0x4b, 0x08, 0x42, 0xc4, 0xe8,
157311966Sngie};
158311966Sngie
159311966Sngie/*
160311966Sngie * IV method encblkno1, blkno 1.
161311966Sngie */
162311966Sngiestatic const uint8_t c3des_cbc_192_encblkno1_vec1_ctxt[SECSIZE] = {
163311966Sngie	0x1d, 0x65, 0xdf, 0x01, 0x9b, 0x24, 0xa5, 0x10,
164311966Sngie	0x94, 0x9a, 0x5b, 0x81, 0x96, 0x4e, 0xa3, 0x42,
165311966Sngie	0x42, 0xd5, 0x05, 0x52, 0xab, 0x3c, 0x67, 0x40,
166311966Sngie	0x79, 0xf9, 0x4b, 0x58, 0x39, 0xf6, 0xd0, 0x97,
167311966Sngie	0x48, 0xf4, 0x77, 0xb8, 0xac, 0xe2, 0x10, 0x66,
168311966Sngie	0xa8, 0x04, 0x0a, 0x1e, 0xa6, 0xbb, 0x4c, 0xd9,
169311966Sngie	0x5d, 0x0c, 0x11, 0xb5, 0xe0, 0x26, 0x84, 0x50,
170311966Sngie	0x10, 0x80, 0xbf, 0xd6, 0xdc, 0x82, 0x53, 0x0a,
171311966Sngie	0xcf, 0xf6, 0xd3, 0x07, 0x45, 0xb0, 0x8e, 0x36,
172311966Sngie	0x2e, 0x60, 0x0f, 0xd0, 0xc1, 0xb9, 0xd8, 0x29,
173311966Sngie	0x6e, 0x13, 0x8e, 0xc1, 0xa8, 0x63, 0x20, 0xe0,
174311966Sngie	0x8d, 0x47, 0x8b, 0xf9, 0xa0, 0x60, 0x55, 0x53,
175311966Sngie	0x1d, 0xaf, 0x43, 0x46, 0xe5, 0x10, 0xd5, 0xcd,
176311966Sngie	0x91, 0x9e, 0x11, 0x4a, 0x6f, 0x6a, 0x13, 0xdf,
177311966Sngie	0xee, 0x7a, 0x88, 0xbe, 0x59, 0x96, 0xdb, 0x65,
178311966Sngie	0x25, 0x57, 0x9e, 0x82, 0xad, 0xc2, 0xd6, 0x28,
179311966Sngie	0x96, 0xb3, 0x7f, 0x57, 0x5d, 0xb2, 0xfa, 0x60,
180311966Sngie	0x43, 0x22, 0xa5, 0x33, 0x14, 0x99, 0x8f, 0x68,
181311966Sngie	0x5a, 0x7f, 0xaf, 0x9e, 0xe9, 0x23, 0x57, 0x9b,
182311966Sngie	0x52, 0xe9, 0x20, 0x59, 0x26, 0x89, 0x9b, 0x59,
183311966Sngie	0xb0, 0xee, 0xe8, 0x6d, 0x06, 0x8c, 0x01, 0xc2,
184311966Sngie	0xea, 0xbc, 0x7d, 0x93, 0x3f, 0x79, 0x7f, 0xeb,
185311966Sngie	0x57, 0xc9, 0x0a, 0xca, 0x37, 0x81, 0xa7, 0x82,
186311966Sngie	0xde, 0x37, 0x7d, 0x69, 0x01, 0xaa, 0x19, 0x98,
187311966Sngie	0x26, 0xfe, 0x06, 0x83, 0xeb, 0x9d, 0x26, 0xdc,
188311966Sngie	0x04, 0x5d, 0xc9, 0x05, 0xee, 0x1a, 0xd3, 0xeb,
189311966Sngie	0x20, 0x8c, 0xb7, 0x99, 0x75, 0xe0, 0x19, 0x98,
190311966Sngie	0xca, 0x83, 0xae, 0x94, 0x28, 0xbf, 0x47, 0x42,
191311966Sngie	0x92, 0x05, 0x8c, 0xaa, 0xeb, 0x99, 0x0f, 0xcc,
192311966Sngie	0x33, 0x79, 0x24, 0x62, 0xa0, 0x7a, 0x65, 0xcb,
193311966Sngie	0x53, 0xb7, 0x86, 0x0d, 0xcb, 0x44, 0x2d, 0xbf,
194311966Sngie	0xe8, 0x5d, 0x62, 0xeb, 0x21, 0x4d, 0x35, 0x86,
195311966Sngie	0x56, 0x6c, 0x51, 0xff, 0xa3, 0x45, 0xcc, 0x88,
196311966Sngie	0x09, 0x43, 0x08, 0x97, 0x13, 0x7d, 0x00, 0xd8,
197311966Sngie	0x82, 0x2d, 0xbe, 0xbe, 0x44, 0x0c, 0x2c, 0xa4,
198311966Sngie	0x4f, 0x84, 0x07, 0x20, 0x9c, 0x3f, 0xf6, 0x5b,
199311966Sngie	0x9e, 0xe8, 0x68, 0x40, 0xd3, 0x64, 0x8f, 0xb4,
200311966Sngie	0x9e, 0xac, 0xc6, 0x41, 0x11, 0xda, 0xf2, 0x60,
201311966Sngie	0xfa, 0x29, 0x9d, 0x26, 0x68, 0x5b, 0x79, 0x3a,
202311966Sngie	0xd1, 0x66, 0x78, 0xca, 0x80, 0x87, 0xae, 0xab,
203311966Sngie	0x7b, 0x29, 0x3c, 0xb0, 0xe6, 0xa2, 0x6b, 0x24,
204311966Sngie	0x81, 0xeb, 0x51, 0xf9, 0xcb, 0x4a, 0x08, 0x37,
205311966Sngie	0x2a, 0x75, 0xb5, 0xd3, 0xb3, 0x8f, 0x3d, 0x13,
206311966Sngie	0x11, 0x0c, 0xa9, 0xf7, 0xf6, 0x57, 0x7e, 0xb7,
207311966Sngie	0xa6, 0x22, 0xe8, 0x13, 0xfd, 0xf1, 0x6a, 0xe9,
208311966Sngie	0xc1, 0x94, 0xa6, 0xf5, 0xa5, 0xec, 0xfa, 0x31,
209311966Sngie	0xd2, 0x66, 0x8f, 0xe3, 0x6e, 0x9a, 0xaa, 0xb0,
210311966Sngie	0xe3, 0x04, 0x09, 0x00, 0x1e, 0x67, 0x3c, 0xbe,
211311966Sngie	0x2a, 0x8c, 0xd5, 0x1f, 0x4f, 0x55, 0x2c, 0x1d,
212311966Sngie	0x26, 0x7f, 0xc9, 0x27, 0x00, 0x88, 0x7d, 0x45,
213311966Sngie	0x4e, 0xe1, 0x36, 0xf6, 0xf5, 0xa8, 0xd4, 0xef,
214311966Sngie	0x8b, 0x26, 0x76, 0x41, 0x28, 0x87, 0xf4, 0x51,
215311966Sngie	0x14, 0x36, 0xad, 0x60, 0x8d, 0xe9, 0xe2, 0x9d,
216311966Sngie	0x3c, 0xea, 0x09, 0x51, 0x3c, 0x81, 0xdf, 0x1a,
217311966Sngie	0xc2, 0xc2, 0xf6, 0x45, 0xe1, 0x73, 0xac, 0xae,
218311966Sngie	0x85, 0x74, 0x83, 0x8f, 0x56, 0x3c, 0x36, 0x1c,
219311966Sngie	0xe0, 0x07, 0xc6, 0x6a, 0x48, 0xe4, 0x34, 0xe9,
220311966Sngie	0x81, 0x53, 0xb7, 0x53, 0x95, 0xa7, 0x94, 0x21,
221311966Sngie	0x7e, 0x32, 0x53, 0xda, 0x83, 0xd8, 0x57, 0x92,
222311966Sngie	0xd1, 0x15, 0x45, 0x86, 0x40, 0xac, 0xf1, 0x6f,
223311966Sngie	0x3c, 0x29, 0xef, 0x8d, 0x12, 0xe1, 0x9d, 0x04,
224311966Sngie	0x17, 0x3a, 0xcc, 0xa6, 0xc5, 0xe4, 0x27, 0x41,
225311966Sngie	0xcb, 0xfb, 0x5e, 0x77, 0x73, 0x5a, 0x2c, 0x03,
226311966Sngie	0xe9, 0x2b, 0x76, 0x4e, 0x69, 0xea, 0xcb, 0xb3,
227311966Sngie};
228311966Sngie
229311966Sngie/*
230311966Sngie * IV method encblkno1, blkno 2.
231311966Sngie */
232311966Sngiestatic const uint8_t c3des_cbc_192_encblkno1_vec2_ctxt[SECSIZE] = {
233311966Sngie	0x87, 0xb1, 0x3c, 0xd6, 0x60, 0xa0, 0x5a, 0x35,
234311966Sngie	0xf7, 0xe1, 0x6b, 0x87, 0xa0, 0x90, 0x2f, 0xc7,
235311966Sngie	0x8c, 0xed, 0x53, 0xda, 0x93, 0x32, 0x78, 0x5d,
236311966Sngie	0x24, 0x23, 0x42, 0xdd, 0x93, 0x5b, 0x2e, 0x40,
237311966Sngie	0xa1, 0xb1, 0x3b, 0xbb, 0xf0, 0x50, 0xb4, 0x61,
238311966Sngie	0xea, 0x15, 0x37, 0xf3, 0x49, 0xe1, 0xa0, 0x32,
239311966Sngie	0x88, 0x85, 0x81, 0xfd, 0xb7, 0x96, 0xd7, 0x9d,
240311966Sngie	0xd7, 0x29, 0x4b, 0x14, 0xf9, 0x18, 0x6a, 0xf6,
241311966Sngie	0x46, 0xae, 0x69, 0xdf, 0x63, 0x9a, 0xe0, 0x0b,
242311966Sngie	0x2c, 0x53, 0xd7, 0x82, 0x6f, 0xe5, 0xa0, 0x95,
243311966Sngie	0x2f, 0x61, 0x7f, 0x15, 0xff, 0xc7, 0xe8, 0x83,
244311966Sngie	0xfc, 0xfc, 0x16, 0x1c, 0x37, 0x0f, 0x9b, 0xbb,
245311966Sngie	0x14, 0xb2, 0xe2, 0xb7, 0x1f, 0x85, 0xb7, 0x07,
246311966Sngie	0x8a, 0x18, 0xed, 0xf7, 0x5f, 0x27, 0xff, 0x2f,
247311966Sngie	0x07, 0xf9, 0x9d, 0xe3, 0x79, 0x45, 0x1f, 0x51,
248311966Sngie	0x08, 0x54, 0x0f, 0x56, 0x84, 0xee, 0x87, 0x9a,
249311966Sngie	0xa9, 0x46, 0xb8, 0x77, 0x85, 0x40, 0x46, 0x50,
250311966Sngie	0xc1, 0x58, 0x07, 0xfd, 0xfa, 0x2b, 0x20, 0xd6,
251311966Sngie	0x4e, 0xba, 0x08, 0x02, 0x59, 0x3d, 0x23, 0x3b,
252311966Sngie	0x5d, 0xf9, 0x5e, 0x2f, 0xac, 0x9e, 0xa0, 0xd7,
253311966Sngie	0x3f, 0x9a, 0xdf, 0x50, 0x66, 0xcc, 0x28, 0xce,
254311966Sngie	0x93, 0xc8, 0x11, 0x5c, 0x74, 0xe2, 0x4f, 0xfd,
255311966Sngie	0xaf, 0x33, 0xbb, 0xce, 0x96, 0x1f, 0xb3, 0x46,
256311966Sngie	0x6e, 0xcd, 0xe4, 0xef, 0xfa, 0x2f, 0x93, 0xb1,
257311966Sngie	0xe5, 0x7c, 0x54, 0xbc, 0x17, 0x1f, 0xd5, 0x31,
258311966Sngie	0x0e, 0x88, 0xe7, 0xcd, 0xb0, 0xb5, 0x2e, 0x1e,
259311966Sngie	0x9e, 0x40, 0x36, 0xa5, 0xbb, 0xa7, 0x4e, 0xc8,
260311966Sngie	0x11, 0x6c, 0xae, 0x1c, 0x2d, 0xdb, 0x55, 0xd8,
261311966Sngie	0x14, 0x40, 0x02, 0xad, 0xaf, 0x19, 0x28, 0x59,
262311966Sngie	0xd7, 0x4f, 0x81, 0xd0, 0xc1, 0x54, 0x63, 0x73,
263311966Sngie	0x0e, 0xfb, 0x26, 0xf2, 0xa6, 0x80, 0xca, 0x2e,
264311966Sngie	0xf3, 0xca, 0x1e, 0xa4, 0x62, 0x07, 0x22, 0x10,
265311966Sngie	0x11, 0x6a, 0x57, 0x28, 0x45, 0x80, 0xdf, 0x34,
266311966Sngie	0x88, 0xe5, 0xf1, 0x23, 0xe0, 0xb6, 0x44, 0x51,
267311966Sngie	0x54, 0xd8, 0xb3, 0x66, 0xac, 0x46, 0x4d, 0xdf,
268311966Sngie	0xa2, 0x8e, 0x72, 0x3a, 0x1c, 0x87, 0x2a, 0x43,
269311966Sngie	0xfe, 0xdb, 0x00, 0xff, 0xb7, 0x1c, 0x13, 0xc3,
270311966Sngie	0x18, 0xfc, 0x71, 0x13, 0xe3, 0xd1, 0x1f, 0xde,
271311966Sngie	0x16, 0x63, 0x73, 0xf5, 0x0e, 0xf7, 0x18, 0xe5,
272311966Sngie	0x48, 0x8d, 0x30, 0xd9, 0x26, 0x20, 0x6d, 0xa1,
273311966Sngie	0xba, 0xde, 0xe8, 0x7d, 0x77, 0x02, 0x33, 0x0d,
274311966Sngie	0x73, 0xb2, 0xab, 0x35, 0xfd, 0xa5, 0x6e, 0x4c,
275311966Sngie	0x5c, 0x27, 0xc7, 0x7e, 0x4a, 0x28, 0xf8, 0xf5,
276311966Sngie	0x00, 0xbe, 0x4c, 0xd7, 0x2c, 0x27, 0x83, 0x16,
277311966Sngie	0x37, 0xda, 0x0c, 0xb1, 0xd7, 0x89, 0xd8, 0x8f,
278311966Sngie	0x17, 0x69, 0x1b, 0x6b, 0x48, 0x2b, 0xce, 0x9c,
279311966Sngie	0xbd, 0xf4, 0x0d, 0xb5, 0x4d, 0x12, 0x11, 0x36,
280311966Sngie	0x49, 0xd3, 0x8b, 0x52, 0xce, 0x7e, 0x47, 0xb0,
281311966Sngie	0xb5, 0x54, 0x77, 0xef, 0x90, 0xb8, 0x0e, 0xaf,
282311966Sngie	0x6f, 0x97, 0x88, 0xde, 0x6b, 0x37, 0x24, 0xdd,
283311966Sngie	0x91, 0x84, 0x00, 0x51, 0xab, 0x06, 0x96, 0x3c,
284311966Sngie	0x82, 0x73, 0xcf, 0xae, 0x8d, 0x23, 0x86, 0x59,
285311966Sngie	0x62, 0x5b, 0xeb, 0x2a, 0xaf, 0x40, 0x17, 0xed,
286311966Sngie	0x2b, 0x60, 0x73, 0x7d, 0x99, 0x95, 0x3f, 0xd6,
287311966Sngie	0x6c, 0xca, 0x1e, 0xf3, 0xb0, 0xcd, 0xd5, 0x1d,
288311966Sngie	0x53, 0xe0, 0xd2, 0x8b, 0x57, 0x7b, 0xac, 0x67,
289311966Sngie	0x5a, 0x5a, 0x0a, 0x64, 0x82, 0xab, 0x8f, 0x5a,
290311966Sngie	0x36, 0xe2, 0x45, 0x50, 0xec, 0x3e, 0x14, 0x80,
291311966Sngie	0x7c, 0xfd, 0x0c, 0xa9, 0x94, 0xfb, 0xfe, 0x72,
292311966Sngie	0xec, 0x47, 0x71, 0x2e, 0x90, 0x97, 0xf6, 0x33,
293311966Sngie	0xbd, 0x7d, 0x7e, 0x77, 0x8f, 0xad, 0xd4, 0x1d,
294311966Sngie	0x1d, 0x53, 0x0f, 0x28, 0x39, 0x77, 0x06, 0x1a,
295311966Sngie	0x75, 0xfc, 0x12, 0xe6, 0x45, 0xfc, 0x87, 0xe1,
296311966Sngie	0x46, 0xac, 0xb0, 0x73, 0xca, 0x24, 0x7c, 0x71,
297311966Sngie};
298311966Sngie
299311966Sngie/*
300311966Sngie * IV method encblkno1, blkno 3.
301311966Sngie */
302311966Sngiestatic const uint8_t c3des_cbc_192_encblkno1_vec3_ctxt[SECSIZE] = {
303311966Sngie	0xb1, 0xef, 0x7c, 0xd0, 0xa0, 0x6b, 0xe4, 0x88,
304311966Sngie	0x5c, 0xd7, 0xf1, 0xbf, 0x5f, 0xce, 0xda, 0x19,
305311966Sngie	0x81, 0x32, 0xbb, 0x96, 0x7e, 0xb9, 0x6e, 0xa1,
306311966Sngie	0x43, 0xde, 0x53, 0x66, 0x9c, 0x27, 0x94, 0x85,
307311966Sngie	0xcb, 0x09, 0x4e, 0x16, 0xd8, 0x60, 0x7a, 0x38,
308311966Sngie	0x27, 0x21, 0x4d, 0x08, 0xaa, 0xe2, 0x1e, 0x6e,
309311966Sngie	0xa3, 0xcb, 0x9a, 0x7f, 0xd1, 0xbf, 0x18, 0x36,
310311966Sngie	0x5a, 0x4d, 0x7a, 0x7f, 0xcf, 0x3f, 0xba, 0xa5,
311311966Sngie	0x77, 0x5b, 0xb4, 0x79, 0xdc, 0xbf, 0x2a, 0x28,
312311966Sngie	0x16, 0x27, 0x0f, 0x8b, 0xd7, 0x95, 0xc3, 0xcb,
313311966Sngie	0xa1, 0x6a, 0x49, 0x53, 0xa8, 0x0c, 0x70, 0xde,
314311966Sngie	0x90, 0x2e, 0x36, 0x74, 0x40, 0x5d, 0x81, 0x74,
315311966Sngie	0x03, 0x11, 0xbd, 0xba, 0x40, 0x8d, 0x03, 0x86,
316311966Sngie	0x2b, 0x17, 0x55, 0x20, 0xd8, 0x81, 0x30, 0xd2,
317311966Sngie	0x2a, 0xbd, 0xea, 0xff, 0x5c, 0x69, 0x9b, 0xe6,
318311966Sngie	0xe3, 0x21, 0x9a, 0x10, 0x3e, 0xb0, 0xf4, 0x7a,
319311966Sngie	0xfc, 0x6e, 0x66, 0xec, 0x44, 0x0b, 0x95, 0x8d,
320311966Sngie	0x13, 0xd4, 0xf6, 0x3e, 0xa1, 0xa1, 0xac, 0xb1,
321311966Sngie	0xd8, 0x3d, 0x86, 0xaf, 0x5e, 0xef, 0x14, 0x6a,
322311966Sngie	0x32, 0xf3, 0x13, 0x75, 0x3b, 0x64, 0x9a, 0xf4,
323311966Sngie	0xd0, 0xf5, 0x00, 0x36, 0x9e, 0xdb, 0xfd, 0xcb,
324311966Sngie	0xda, 0x1f, 0xed, 0x9d, 0x6d, 0x52, 0xd7, 0xb5,
325311966Sngie	0x48, 0xce, 0x53, 0x5e, 0xdc, 0xc8, 0xe4, 0x96,
326311966Sngie	0x04, 0x32, 0xa5, 0xcf, 0x0c, 0xba, 0xa0, 0xd0,
327311966Sngie	0x44, 0xb3, 0xe8, 0x72, 0xc6, 0xff, 0x8f, 0xd4,
328311966Sngie	0x4d, 0x0a, 0x22, 0x89, 0x74, 0x50, 0xaa, 0x65,
329311966Sngie	0x15, 0xab, 0x99, 0xc8, 0xf9, 0xa4, 0x10, 0xe6,
330311966Sngie	0xa6, 0x4b, 0x0c, 0xc8, 0xb9, 0xa7, 0x60, 0x41,
331311966Sngie	0xe7, 0x57, 0x31, 0xfa, 0x86, 0x55, 0xdf, 0x29,
332311966Sngie	0x49, 0xac, 0x55, 0x7b, 0x21, 0xf9, 0x3b, 0x1e,
333311966Sngie	0x1f, 0xb4, 0x1c, 0x0b, 0x77, 0xcb, 0x88, 0xbf,
334311966Sngie	0xa6, 0x79, 0xbf, 0x9a, 0x51, 0xc4, 0x8e, 0x59,
335311966Sngie	0x9c, 0xb3, 0x9d, 0x9d, 0x6b, 0xb2, 0x15, 0x41,
336311966Sngie	0x0d, 0x6c, 0xf7, 0x5e, 0xe2, 0xf9, 0xb3, 0x80,
337311966Sngie	0x8f, 0x03, 0x67, 0x68, 0x6e, 0x4b, 0x4d, 0x52,
338311966Sngie	0xbc, 0x9b, 0xa2, 0xd8, 0x29, 0x1e, 0x5c, 0xd7,
339311966Sngie	0x59, 0x67, 0x94, 0x40, 0x9e, 0x08, 0x15, 0x0d,
340311966Sngie	0x7e, 0xc9, 0x14, 0x53, 0xa8, 0x67, 0xb3, 0xb8,
341311966Sngie	0xaa, 0x21, 0x0f, 0x79, 0x69, 0x48, 0x52, 0xea,
342311966Sngie	0x56, 0x03, 0x7b, 0x55, 0xb7, 0xf3, 0xfe, 0xb1,
343311966Sngie	0x8a, 0x22, 0x7d, 0x75, 0x55, 0x31, 0xad, 0x20,
344311966Sngie	0x6a, 0xc2, 0xa4, 0xd1, 0x1e, 0xab, 0xdd, 0x29,
345311966Sngie	0xb5, 0xf8, 0xdd, 0x9b, 0x1a, 0xb8, 0xe7, 0xde,
346311966Sngie	0xae, 0xa1, 0xab, 0xbb, 0xf6, 0x00, 0x87, 0xc4,
347311966Sngie	0x29, 0xee, 0x2b, 0xa1, 0xa9, 0x1a, 0x46, 0x05,
348311966Sngie	0x5a, 0x12, 0x3f, 0x32, 0x81, 0x25, 0x20, 0x71,
349311966Sngie	0xb6, 0xfa, 0x1f, 0x27, 0x2a, 0x33, 0x49, 0xfc,
350311966Sngie	0x95, 0x00, 0x72, 0x6b, 0x03, 0x53, 0x94, 0x57,
351311966Sngie	0x2f, 0x47, 0x3d, 0x2d, 0x7c, 0xb4, 0xde, 0xa7,
352311966Sngie	0x96, 0x81, 0x12, 0xff, 0x2c, 0xec, 0x5c, 0x03,
353311966Sngie	0x2a, 0x8c, 0x76, 0xc4, 0xed, 0x09, 0xe6, 0x00,
354311966Sngie	0x28, 0xdb, 0x9b, 0x44, 0xb0, 0xb4, 0x7b, 0x57,
355311966Sngie	0x3b, 0xb6, 0x4f, 0x0b, 0xff, 0xf2, 0xf5, 0x02,
356311966Sngie	0x56, 0xcf, 0xd5, 0xbf, 0x71, 0xe6, 0x66, 0xf3,
357311966Sngie	0x08, 0x8e, 0x8b, 0x15, 0x57, 0x07, 0x41, 0xa3,
358311966Sngie	0x91, 0xc1, 0xe4, 0x64, 0x92, 0x89, 0xed, 0x22,
359311966Sngie	0x88, 0x8f, 0x17, 0x91, 0xde, 0xea, 0x0c, 0xa6,
360311966Sngie	0x86, 0x8e, 0x4c, 0xd9, 0x63, 0xc9, 0xe5, 0xdc,
361311966Sngie	0xd6, 0xd3, 0x7b, 0x2b, 0x65, 0xfa, 0x36, 0x47,
362311966Sngie	0x20, 0xa4, 0xe7, 0x0b, 0x52, 0xfa, 0xa6, 0xeb,
363311966Sngie	0x1d, 0x20, 0xd0, 0x4b, 0xfd, 0x88, 0x8c, 0xbb,
364311966Sngie	0x52, 0x9c, 0x2f, 0xb7, 0xba, 0x8b, 0xdd, 0x10,
365311966Sngie	0x2d, 0x7d, 0x77, 0x79, 0x40, 0xa7, 0xed, 0xf9,
366311966Sngie	0xbd, 0x2a, 0x55, 0x1f, 0x87, 0x1e, 0x3c, 0xfc,
367311966Sngie};
368311966Sngie
369311966Sngieconst struct testvec c3des_cbc_192_1_vectors[] = {
370311966Sngie	{
371311966Sngie		.blkno = 0,
372311966Sngie		.ptxt = c3des_cbc_ptxt,
373311966Sngie		.ctxt = c3des_cbc_192_encblkno1_vec0_ctxt,
374311966Sngie	},
375311966Sngie	{
376311966Sngie		.blkno = 1,
377311966Sngie		.ptxt = c3des_cbc_ptxt,
378311966Sngie		.ctxt = c3des_cbc_192_encblkno1_vec1_ctxt,
379311966Sngie	},
380311966Sngie	{
381311966Sngie		.blkno = 2,
382311966Sngie		.ptxt = c3des_cbc_ptxt,
383311966Sngie		.ctxt = c3des_cbc_192_encblkno1_vec2_ctxt,
384311966Sngie	},
385311966Sngie	{
386311966Sngie		.blkno = 3,
387311966Sngie		.ptxt = c3des_cbc_ptxt,
388311966Sngie		.ctxt = c3des_cbc_192_encblkno1_vec3_ctxt,
389311966Sngie	},
390311966Sngie};
391311966Sngie
392311966Sngie/*
393311966Sngie * IV method encblkno8, blkno 0.
394311966Sngie */
395311966Sngiestatic const uint8_t c3des_cbc_192_encblkno8_vec0_ctxt[SECSIZE] = {
396311966Sngie	0x9e, 0x5d, 0x35, 0x56, 0xa7, 0xcc, 0xc0, 0x1c,
397311966Sngie	0x60, 0x4c, 0x42, 0x90, 0x35, 0xf3, 0xc1, 0x20,
398311966Sngie	0xf2, 0x07, 0x6f, 0xf8, 0x7c, 0x33, 0x6a, 0x74,
399311966Sngie	0xdc, 0x85, 0xbc, 0x9c, 0xa2, 0x29, 0xc6, 0x69,
400311966Sngie	0x0e, 0xef, 0x0f, 0xa9, 0x6e, 0xec, 0xf2, 0x23,
401311966Sngie	0x2f, 0x9a, 0xbe, 0x1a, 0x89, 0x22, 0x00, 0xc4,
402311966Sngie	0x5a, 0xaf, 0x4a, 0xa0, 0x4f, 0x30, 0x8f, 0x99,
403311966Sngie	0xd2, 0x93, 0x6d, 0xfa, 0xcd, 0x2f, 0xad, 0x19,
404311966Sngie	0x10, 0x14, 0x90, 0x3a, 0x4b, 0xab, 0x17, 0x2e,
405311966Sngie	0x2c, 0xe1, 0x26, 0xe5, 0x76, 0xf1, 0xd1, 0x1d,
406311966Sngie	0x4c, 0x77, 0x68, 0xfb, 0x45, 0x9a, 0x3e, 0x19,
407311966Sngie	0xe0, 0xfb, 0xdc, 0xd4, 0x0e, 0x29, 0x7c, 0x06,
408311966Sngie	0xd3, 0x45, 0xa8, 0xf7, 0x39, 0x91, 0xe6, 0x18,
409311966Sngie	0x0f, 0x81, 0xe6, 0x7d, 0x6c, 0x65, 0x2e, 0x16,
410311966Sngie	0x24, 0xa4, 0x16, 0x96, 0x0a, 0x7b, 0x5f, 0x3a,
411311966Sngie	0x0c, 0xe9, 0x0e, 0x3f, 0x34, 0x38, 0xb0, 0xe1,
412311966Sngie	0x39, 0x23, 0x5c, 0x3c, 0x00, 0xb4, 0xa0, 0xf7,
413311966Sngie	0x42, 0x18, 0x70, 0x25, 0x82, 0x13, 0x24, 0x49,
414311966Sngie	0xbb, 0x3f, 0xfb, 0xef, 0xb6, 0xc6, 0x7f, 0x3d,
415311966Sngie	0x8c, 0x17, 0x62, 0x60, 0x6f, 0xd5, 0xda, 0x2c,
416311966Sngie	0xf8, 0x85, 0xee, 0xa7, 0xc2, 0x76, 0x5d, 0x34,
417311966Sngie	0x4c, 0xe1, 0x0d, 0x36, 0x6e, 0x02, 0xdd, 0x08,
418311966Sngie	0x85, 0xe4, 0x90, 0xfe, 0x1f, 0x81, 0x4a, 0x06,
419311966Sngie	0xa6, 0x72, 0x81, 0x79, 0x47, 0xd7, 0x6d, 0x92,
420311966Sngie	0x8f, 0xb7, 0xb2, 0xfd, 0xd0, 0x60, 0x6c, 0x06,
421311966Sngie	0x44, 0xcd, 0x20, 0x28, 0xef, 0x16, 0xc3, 0x01,
422311966Sngie	0x19, 0x14, 0x34, 0x39, 0xad, 0x87, 0x9f, 0xde,
423311966Sngie	0x76, 0xb9, 0xb9, 0x87, 0x1a, 0xbd, 0x8e, 0x2c,
424311966Sngie	0xe6, 0xb3, 0xe7, 0xb6, 0x80, 0xf8, 0xc5, 0x22,
425311966Sngie	0x5f, 0x53, 0xed, 0x03, 0xfe, 0x09, 0x2c, 0x9d,
426311966Sngie	0xb6, 0x61, 0x4a, 0xbb, 0x07, 0x5d, 0xbd, 0x68,
427311966Sngie	0x74, 0xab, 0x02, 0x81, 0x64, 0x7b, 0x97, 0xa3,
428311966Sngie	0xad, 0x15, 0x99, 0x7a, 0x04, 0x33, 0xbd, 0x50,
429311966Sngie	0x94, 0x11, 0xcc, 0xf7, 0x8b, 0x77, 0x88, 0x78,
430311966Sngie	0x80, 0xfe, 0x5f, 0xa1, 0x63, 0xbc, 0xb0, 0x65,
431311966Sngie	0xcb, 0x9d, 0x4c, 0xfe, 0x66, 0x4e, 0xff, 0xe3,
432311966Sngie	0x43, 0x61, 0x99, 0x88, 0x88, 0x4c, 0xbc, 0x8a,
433311966Sngie	0xf1, 0x69, 0x00, 0xc2, 0xe5, 0xb9, 0x65, 0x8b,
434311966Sngie	0x10, 0xdf, 0x38, 0x3e, 0x9e, 0x9f, 0x87, 0xed,
435311966Sngie	0x84, 0x71, 0xe7, 0xf2, 0xb5, 0xb6, 0x11, 0xed,
436311966Sngie	0x1e, 0xd4, 0xc0, 0x6d, 0x77, 0x08, 0x4b, 0xfd,
437311966Sngie	0x95, 0xd5, 0xc0, 0xbe, 0xa6, 0xcc, 0x3b, 0xea,
438311966Sngie	0x11, 0x38, 0xa5, 0x59, 0x36, 0x2a, 0xf4, 0x98,
439311966Sngie	0x52, 0x9d, 0x3b, 0x8c, 0x8a, 0x19, 0xbd, 0xfb,
440311966Sngie	0x49, 0xcb, 0xb0, 0x57, 0x91, 0xc7, 0xf8, 0x2a,
441311966Sngie	0x89, 0xa8, 0x85, 0x03, 0xdf, 0x6e, 0xad, 0xf4,
442311966Sngie	0x8a, 0x88, 0x9a, 0x2b, 0x5d, 0xe8, 0xca, 0xa9,
443311966Sngie	0x8f, 0x18, 0xa3, 0x6a, 0x37, 0x84, 0xa9, 0x24,
444311966Sngie	0x5b, 0xce, 0xd6, 0xbe, 0x7e, 0x40, 0x86, 0x6a,
445311966Sngie	0xc3, 0x47, 0x28, 0x66, 0xf0, 0x8c, 0x2d, 0x69,
446311966Sngie	0x22, 0x64, 0x61, 0x36, 0x6a, 0x0c, 0xc4, 0x18,
447311966Sngie	0x5f, 0xd7, 0xff, 0xbc, 0xf1, 0x94, 0x16, 0xfb,
448311966Sngie	0x26, 0xa7, 0x80, 0xa4, 0x2d, 0x72, 0xc6, 0x9d,
449311966Sngie	0xa7, 0xed, 0x04, 0x13, 0x0f, 0xe7, 0xf8, 0x93,
450311966Sngie	0x57, 0x6b, 0xd5, 0xa4, 0xad, 0x9a, 0x97, 0xeb,
451311966Sngie	0x97, 0xe7, 0x60, 0x01, 0x89, 0x3f, 0x88, 0xf2,
452311966Sngie	0xee, 0xf3, 0x79, 0xd6, 0x5a, 0x03, 0x94, 0x07,
453311966Sngie	0xd3, 0x33, 0xc8, 0xda, 0x15, 0x17, 0x0a, 0x8f,
454311966Sngie	0xbd, 0x58, 0x1b, 0xfe, 0x3d, 0x77, 0x5d, 0x8f,
455311966Sngie	0x4e, 0x0e, 0x98, 0x7d, 0x02, 0x63, 0x94, 0x73,
456311966Sngie	0x4a, 0x58, 0x47, 0xed, 0x52, 0xfc, 0x85, 0x19,
457311966Sngie	0x5d, 0x2f, 0xfa, 0x07, 0x44, 0xbd, 0x8e, 0xcb,
458311966Sngie	0x20, 0x63, 0x9d, 0x2b, 0x61, 0x5c, 0x19, 0x71,
459311966Sngie	0x80, 0xe5, 0x25, 0x5b, 0x2e, 0xc5, 0xfe, 0x1a,
460311966Sngie};
461311966Sngie
462311966Sngie/*
463311966Sngie * IV method encblkno8, blkno 1.
464311966Sngie */
465311966Sngiestatic const uint8_t c3des_cbc_192_encblkno8_vec1_ctxt[SECSIZE] = {
466311966Sngie	0xf4, 0xb0, 0xb0, 0xcb, 0x79, 0xcc, 0x8c, 0x0a,
467311966Sngie	0x3b, 0xc7, 0x43, 0x4e, 0x62, 0x9d, 0xde, 0xb4,
468311966Sngie	0xab, 0xa5, 0x62, 0x63, 0x32, 0xa7, 0x18, 0x2b,
469311966Sngie	0xe3, 0xee, 0x44, 0xc6, 0x6f, 0xb2, 0xdc, 0x21,
470311966Sngie	0xc5, 0xc8, 0x9e, 0x32, 0x71, 0x4c, 0x7a, 0x82,
471311966Sngie	0x8d, 0xe0, 0xad, 0x91, 0x88, 0x0c, 0x41, 0x83,
472311966Sngie	0x28, 0x0d, 0xed, 0xa7, 0xeb, 0x48, 0xb1, 0x31,
473311966Sngie	0xfa, 0x40, 0xd9, 0x44, 0x19, 0xee, 0x8d, 0x2c,
474311966Sngie	0x7d, 0xe2, 0x39, 0xa0, 0x39, 0xaa, 0x86, 0xab,
475311966Sngie	0xb5, 0x68, 0xe5, 0x83, 0x06, 0x61, 0xec, 0xe6,
476311966Sngie	0xc2, 0x85, 0xb2, 0x46, 0xf4, 0x5b, 0x0e, 0x34,
477311966Sngie	0x7e, 0x0c, 0xa0, 0xda, 0xef, 0x58, 0x9c, 0x39,
478311966Sngie	0x95, 0xa2, 0xca, 0xd3, 0x3b, 0x4d, 0x76, 0xe3,
479311966Sngie	0x34, 0x6d, 0x08, 0xa4, 0xba, 0x88, 0x58, 0x39,
480311966Sngie	0xb4, 0xe4, 0x6b, 0xb6, 0x32, 0x50, 0x2c, 0xe2,
481311966Sngie	0x0a, 0x37, 0xbc, 0x98, 0x38, 0x32, 0x17, 0x1b,
482311966Sngie	0x12, 0xef, 0xdc, 0x9d, 0x91, 0x09, 0x8e, 0xd8,
483311966Sngie	0xc3, 0xf8, 0x7b, 0x35, 0x41, 0x3b, 0xf8, 0xf5,
484311966Sngie	0x37, 0x48, 0x04, 0xf7, 0x94, 0xbf, 0x54, 0x8d,
485311966Sngie	0x79, 0x49, 0x8f, 0xf0, 0x3f, 0xb7, 0x90, 0x76,
486311966Sngie	0x14, 0x09, 0xc6, 0x8c, 0xba, 0x1a, 0x30, 0x1b,
487311966Sngie	0xbb, 0xd9, 0xe2, 0xb5, 0xe8, 0xd9, 0x9b, 0x68,
488311966Sngie	0x60, 0x90, 0xd3, 0x4a, 0xe8, 0x65, 0x7b, 0xaa,
489311966Sngie	0xb0, 0xda, 0x69, 0x1d, 0x45, 0x78, 0x2c, 0x3b,
490311966Sngie	0x59, 0x29, 0x3c, 0x26, 0x9a, 0xd2, 0xa5, 0xfd,
491311966Sngie	0xb7, 0x16, 0x59, 0x7c, 0x46, 0xea, 0x99, 0xd0,
492311966Sngie	0x06, 0x01, 0x3f, 0xd2, 0x23, 0xcc, 0xde, 0xb8,
493311966Sngie	0xaa, 0x88, 0x17, 0x03, 0xe1, 0x48, 0x2c, 0xdd,
494311966Sngie	0xce, 0xd1, 0x2c, 0xce, 0x37, 0xee, 0xe6, 0xa6,
495311966Sngie	0x47, 0x8c, 0x07, 0xe5, 0xfe, 0x01, 0xc6, 0x27,
496311966Sngie	0xfe, 0x3f, 0x9d, 0x30, 0x18, 0x36, 0xe7, 0xa7,
497311966Sngie	0x37, 0x1d, 0xcf, 0x6d, 0x4c, 0x82, 0xec, 0x58,
498311966Sngie	0xa1, 0x6f, 0x56, 0xc6, 0x08, 0x25, 0x94, 0xda,
499311966Sngie	0xae, 0x1a, 0x4f, 0xda, 0xb2, 0xf4, 0xbf, 0x94,
500311966Sngie	0xff, 0x66, 0x6a, 0xb1, 0x1f, 0x42, 0xfe, 0x32,
501311966Sngie	0xa4, 0x0e, 0x3d, 0x6a, 0x16, 0x44, 0xe0, 0xac,
502311966Sngie	0xe8, 0xc1, 0xe2, 0xa8, 0x73, 0xab, 0xac, 0x58,
503311966Sngie	0xb1, 0xbc, 0x94, 0xb2, 0x6a, 0xe4, 0x45, 0xf5,
504311966Sngie	0x90, 0x6b, 0x82, 0xeb, 0x9e, 0x22, 0x9e, 0xb2,
505311966Sngie	0x27, 0x3e, 0xc8, 0x55, 0xf4, 0x8f, 0xda, 0x04,
506311966Sngie	0xa3, 0x9c, 0xa4, 0x79, 0xbd, 0x79, 0xd3, 0xbd,
507311966Sngie	0xbe, 0x72, 0x7f, 0x90, 0xef, 0xc3, 0x34, 0x17,
508311966Sngie	0x72, 0x6f, 0xb4, 0xfe, 0x62, 0x56, 0xc3, 0xd6,
509311966Sngie	0x43, 0xc8, 0x4c, 0x76, 0x91, 0x04, 0x97, 0x4c,
510311966Sngie	0x84, 0x98, 0x56, 0xb7, 0x7b, 0x4f, 0xd5, 0xcf,
511311966Sngie	0x1b, 0x9c, 0x09, 0xe3, 0x1d, 0xdf, 0x0e, 0xfa,
512311966Sngie	0x39, 0xc8, 0x48, 0x43, 0x84, 0xec, 0x79, 0xc8,
513311966Sngie	0x7f, 0x4f, 0xa8, 0xc0, 0xb4, 0xde, 0x8b, 0x79,
514311966Sngie	0xcb, 0x9c, 0x42, 0x81, 0x49, 0xdc, 0x39, 0xb5,
515311966Sngie	0x31, 0xa6, 0x22, 0xba, 0x71, 0xb8, 0x2d, 0x1d,
516311966Sngie	0xc8, 0x17, 0xd8, 0x9d, 0x26, 0x2b, 0xd5, 0xcf,
517311966Sngie	0x57, 0x46, 0x0a, 0x61, 0x7e, 0xb7, 0xc3, 0x9c,
518311966Sngie	0xa6, 0x44, 0x60, 0x2d, 0x30, 0xb8, 0x10, 0x47,
519311966Sngie	0x7d, 0x7e, 0x87, 0x76, 0xc1, 0x4e, 0x85, 0x77,
520311966Sngie	0xbc, 0x30, 0x32, 0x56, 0x0a, 0x5b, 0x1c, 0xd0,
521311966Sngie	0xf6, 0x47, 0x48, 0x22, 0xf4, 0x6e, 0x38, 0xc5,
522311966Sngie	0xab, 0xe2, 0xd0, 0x4d, 0x40, 0x27, 0xab, 0x8f,
523311966Sngie	0x43, 0xb1, 0x60, 0x29, 0x07, 0xd0, 0xf5, 0x25,
524311966Sngie	0xe5, 0xfa, 0xe7, 0x46, 0x32, 0x37, 0xb9, 0xae,
525311966Sngie	0x2e, 0x02, 0x8c, 0x94, 0x15, 0x69, 0xd6, 0x74,
526311966Sngie	0xb4, 0x36, 0xdd, 0x94, 0x70, 0xa7, 0x16, 0x7b,
527311966Sngie	0x4c, 0xd3, 0x48, 0x83, 0xc5, 0xb2, 0xb0, 0x6a,
528311966Sngie	0xfe, 0x7e, 0xd4, 0xe5, 0x6d, 0xa5, 0x96, 0x20,
529311966Sngie	0x08, 0x59, 0xbd, 0x0c, 0x3d, 0x55, 0xa5, 0x03,
530311966Sngie};
531311966Sngie
532311966Sngie/*
533311966Sngie * IV method encblkno8, blkno 2.
534311966Sngie */
535311966Sngiestatic const uint8_t c3des_cbc_192_encblkno8_vec2_ctxt[SECSIZE] = {
536311966Sngie	0xea, 0x7c, 0x8c, 0x8e, 0x3e, 0x61, 0x34, 0x3d,
537311966Sngie	0xe0, 0x7f, 0xd3, 0xe1, 0x3a, 0xb9, 0xc8, 0xf2,
538311966Sngie	0x98, 0xdc, 0x59, 0x26, 0xd2, 0xd8, 0xa7, 0x7f,
539311966Sngie	0x41, 0x98, 0x24, 0xa8, 0x28, 0x0c, 0x88, 0x55,
540311966Sngie	0x91, 0xdb, 0x29, 0x17, 0x70, 0xd7, 0x03, 0xff,
541311966Sngie	0xbd, 0x0e, 0xbf, 0xf8, 0x73, 0x92, 0x19, 0xe9,
542311966Sngie	0x92, 0x67, 0xdb, 0x08, 0x94, 0x77, 0x71, 0x2d,
543311966Sngie	0x00, 0xad, 0x26, 0x42, 0x2d, 0xac, 0x8c, 0x67,
544311966Sngie	0x6f, 0xb3, 0x8e, 0x36, 0x22, 0xeb, 0x1f, 0x8c,
545311966Sngie	0xd4, 0x9b, 0x9f, 0xa6, 0xa9, 0xb1, 0x52, 0x65,
546311966Sngie	0x9a, 0xfe, 0xcc, 0x92, 0x48, 0x75, 0xf6, 0xb8,
547311966Sngie	0x59, 0xfe, 0x0e, 0x67, 0x93, 0xce, 0x3b, 0x7e,
548311966Sngie	0x51, 0x74, 0xe5, 0x24, 0x35, 0x08, 0x68, 0x21,
549311966Sngie	0x6a, 0x7f, 0xdd, 0x8c, 0xfd, 0xcd, 0x6d, 0x90,
550311966Sngie	0xc5, 0x3b, 0x26, 0x9e, 0x00, 0xf4, 0x1e, 0x70,
551311966Sngie	0xd3, 0xe7, 0xe8, 0x2f, 0x52, 0x87, 0x76, 0x84,
552311966Sngie	0xbb, 0x5c, 0x76, 0x5a, 0xc8, 0xea, 0x74, 0xe2,
553311966Sngie	0x9e, 0x85, 0xf6, 0x53, 0x85, 0x1a, 0x6e, 0x02,
554311966Sngie	0x0d, 0x32, 0x11, 0xc4, 0xec, 0xee, 0x79, 0x27,
555311966Sngie	0xda, 0xca, 0xc0, 0x0b, 0x8e, 0x2d, 0xb7, 0x7d,
556311966Sngie	0x8c, 0x6e, 0xfb, 0xa3, 0xa8, 0x24, 0x24, 0x62,
557311966Sngie	0xc8, 0xdd, 0xc7, 0x16, 0x09, 0x33, 0x0f, 0xe5,
558311966Sngie	0xc8, 0x60, 0x3d, 0xb6, 0xbf, 0x6c, 0x28, 0xd2,
559311966Sngie	0x0b, 0x9c, 0xd9, 0xcb, 0x64, 0x49, 0xe4, 0x80,
560311966Sngie	0x72, 0x58, 0xaa, 0xaa, 0x7e, 0x1d, 0x9f, 0xd7,
561311966Sngie	0x29, 0x15, 0x65, 0xfc, 0xfd, 0x3f, 0xe1, 0x82,
562311966Sngie	0x25, 0x3c, 0xd4, 0xbe, 0x59, 0x79, 0x63, 0xd1,
563311966Sngie	0xd6, 0x0e, 0xda, 0x00, 0xf3, 0xaa, 0x13, 0xd3,
564311966Sngie	0xed, 0xef, 0xca, 0x8b, 0x97, 0x15, 0x2d, 0x10,
565311966Sngie	0x6f, 0xcf, 0xee, 0xc7, 0x21, 0xad, 0xe3, 0xe4,
566311966Sngie	0xd8, 0x95, 0x21, 0x1f, 0xc0, 0x06, 0x3a, 0xbc,
567311966Sngie	0xbb, 0x2a, 0x92, 0x78, 0x76, 0x9d, 0x1e, 0x7b,
568311966Sngie	0xb5, 0x29, 0xaf, 0x96, 0x75, 0x2b, 0x41, 0xbd,
569311966Sngie	0xae, 0x79, 0x28, 0x72, 0xe7, 0x54, 0xc4, 0x08,
570311966Sngie	0xd3, 0xd2, 0xac, 0x96, 0xd0, 0x0f, 0x9b, 0x68,
571311966Sngie	0x7d, 0x3f, 0xc2, 0xdd, 0x3d, 0xfc, 0xca, 0xcd,
572311966Sngie	0x11, 0x71, 0xd9, 0x48, 0x53, 0x9f, 0xd3, 0x79,
573311966Sngie	0x7d, 0x47, 0x71, 0x2a, 0x6d, 0x9e, 0xa9, 0x47,
574311966Sngie	0xa1, 0xf7, 0x97, 0x80, 0x83, 0x70, 0x6b, 0xfe,
575311966Sngie	0x10, 0x11, 0x6a, 0x0e, 0xdd, 0xde, 0x22, 0x3c,
576311966Sngie	0x19, 0x30, 0x73, 0x73, 0x2e, 0x4b, 0x54, 0x17,
577311966Sngie	0xc3, 0x2e, 0xe9, 0xce, 0xe0, 0xe3, 0xa0, 0x1a,
578311966Sngie	0x28, 0xd1, 0x50, 0xa8, 0xd2, 0x40, 0xe2, 0x1b,
579311966Sngie	0xfa, 0x49, 0x06, 0x49, 0x8b, 0x4b, 0xd9, 0xd5,
580311966Sngie	0xf5, 0x50, 0xae, 0x64, 0x19, 0xe1, 0xd9, 0x4e,
581311966Sngie	0xbb, 0x29, 0x70, 0x66, 0x46, 0xa8, 0x7e, 0x5b,
582311966Sngie	0xdc, 0xe2, 0xd5, 0x9d, 0x56, 0x6d, 0x4c, 0xe6,
583311966Sngie	0x0e, 0x6b, 0x71, 0x40, 0x82, 0xf7, 0xb3, 0xad,
584311966Sngie	0x23, 0x17, 0xe3, 0x1c, 0x61, 0x1d, 0x3b, 0x71,
585311966Sngie	0xfc, 0x06, 0x17, 0xec, 0x6c, 0x77, 0x98, 0x27,
586311966Sngie	0xc7, 0x4b, 0x65, 0x17, 0x81, 0xe7, 0xcb, 0xce,
587311966Sngie	0x09, 0x76, 0x82, 0x82, 0x4a, 0x53, 0x67, 0xa0,
588311966Sngie	0x05, 0x25, 0x4c, 0xc4, 0xa7, 0xad, 0xa7, 0xaf,
589311966Sngie	0xa0, 0x11, 0xd7, 0x73, 0x3b, 0x30, 0xbf, 0x53,
590311966Sngie	0x50, 0x9b, 0xd8, 0xf3, 0x32, 0x15, 0xdd, 0x36,
591311966Sngie	0x88, 0xc2, 0x39, 0x51, 0xb6, 0xb8, 0x0d, 0x5c,
592311966Sngie	0x20, 0x4e, 0x24, 0xee, 0x95, 0x32, 0x61, 0x25,
593311966Sngie	0xda, 0x73, 0x0d, 0x8a, 0x58, 0xe6, 0xcc, 0xad,
594311966Sngie	0x79, 0x3d, 0xef, 0x29, 0x0c, 0x9f, 0xe1, 0xa7,
595311966Sngie	0x22, 0x1e, 0xea, 0x7a, 0x4f, 0xfb, 0xc1, 0x1f,
596311966Sngie	0x17, 0xca, 0x69, 0xd6, 0xa4, 0xce, 0x6e, 0xc0,
597311966Sngie	0x70, 0xa3, 0x08, 0x32, 0x87, 0xb4, 0x6b, 0x80,
598311966Sngie	0x5c, 0x7f, 0x88, 0x5c, 0xbf, 0x07, 0xd8, 0xe9,
599311966Sngie	0xdd, 0xd2, 0x76, 0xa9, 0xaa, 0xd9, 0x55, 0x48,
600311966Sngie};
601311966Sngie
602311966Sngie/*
603311966Sngie * IV method encblkno8, blkno 3.
604311966Sngie */
605311966Sngiestatic const uint8_t c3des_cbc_192_encblkno8_vec3_ctxt[SECSIZE] = {
606311966Sngie	0xf3, 0x49, 0xda, 0x5c, 0xde, 0x9d, 0x3e, 0x9d,
607311966Sngie	0xb9, 0xc2, 0x6e, 0x96, 0xa9, 0x93, 0x10, 0x73,
608311966Sngie	0x0e, 0x26, 0x39, 0xd6, 0x9f, 0x04, 0x5f, 0x69,
609311966Sngie	0x54, 0xa3, 0x7c, 0x46, 0x7b, 0x18, 0x93, 0xc0,
610311966Sngie	0xbb, 0x0c, 0x96, 0x6f, 0xb0, 0xbf, 0xce, 0x67,
611311966Sngie	0x33, 0x3e, 0x56, 0xe8, 0x6b, 0x4d, 0x3f, 0xc8,
612311966Sngie	0x3c, 0xc6, 0x89, 0x2c, 0x0b, 0x95, 0x3a, 0xaf,
613311966Sngie	0xc0, 0xf3, 0x1f, 0x0e, 0x07, 0x01, 0xa6, 0x35,
614311966Sngie	0x19, 0x79, 0x91, 0x24, 0xaa, 0x0d, 0xf0, 0x53,
615311966Sngie	0x27, 0x7d, 0xbb, 0xa6, 0xb6, 0x44, 0x31, 0x4b,
616311966Sngie	0xd4, 0xcf, 0xf6, 0x6d, 0x18, 0xa2, 0x28, 0x8a,
617311966Sngie	0xc1, 0x0a, 0xbe, 0x57, 0x0c, 0x61, 0x5f, 0xd9,
618311966Sngie	0x12, 0x14, 0xfe, 0xe2, 0xc7, 0x10, 0x72, 0xee,
619311966Sngie	0x19, 0xb8, 0x16, 0x0b, 0x88, 0x87, 0xce, 0xf3,
620311966Sngie	0xfe, 0x57, 0x37, 0xd1, 0xa2, 0xf7, 0xd0, 0x5e,
621311966Sngie	0x73, 0xde, 0x39, 0x35, 0xbc, 0xde, 0xed, 0x61,
622311966Sngie	0x4b, 0x31, 0xdc, 0xfe, 0x3c, 0x4d, 0x98, 0xa9,
623311966Sngie	0x36, 0xb0, 0x34, 0x5b, 0xb4, 0xb7, 0x79, 0x25,
624311966Sngie	0x6e, 0x24, 0x7e, 0x10, 0xfe, 0x20, 0xd5, 0x16,
625311966Sngie	0x86, 0xaf, 0xcd, 0x26, 0x34, 0xd3, 0x2e, 0xdc,
626311966Sngie	0x7c, 0x69, 0xe3, 0xc5, 0x62, 0x0c, 0xba, 0x29,
627311966Sngie	0x9c, 0x4b, 0x2f, 0x39, 0x45, 0xe1, 0xcf, 0xc5,
628311966Sngie	0xfe, 0x35, 0xb6, 0x2f, 0xb1, 0x1a, 0x90, 0xe1,
629311966Sngie	0xa7, 0x39, 0xe8, 0x1e, 0x5f, 0xac, 0xab, 0x1e,
630311966Sngie	0x32, 0xba, 0xc5, 0x92, 0x39, 0x62, 0x37, 0x2c,
631311966Sngie	0x49, 0xf1, 0x62, 0x90, 0xf7, 0x1e, 0x10, 0xce,
632311966Sngie	0x8e, 0x95, 0xa3, 0xc6, 0xd8, 0xe5, 0xc8, 0xdf,
633311966Sngie	0xcc, 0x94, 0x7d, 0x26, 0xab, 0x29, 0xbb, 0x9d,
634311966Sngie	0xf3, 0x73, 0xce, 0xac, 0x76, 0xdf, 0x75, 0x2a,
635311966Sngie	0x3e, 0x8f, 0x47, 0xff, 0x76, 0xfe, 0xea, 0xd4,
636311966Sngie	0x4a, 0xa9, 0x36, 0x9d, 0x12, 0x45, 0xb7, 0x99,
637311966Sngie	0x81, 0xb6, 0x77, 0x98, 0x13, 0xfb, 0x5a, 0xe5,
638311966Sngie	0x40, 0x87, 0x61, 0x0d, 0x10, 0x76, 0xf6, 0x3e,
639311966Sngie	0x48, 0xac, 0xc4, 0x27, 0x87, 0xcd, 0x07, 0xde,
640311966Sngie	0x0b, 0x23, 0x97, 0x61, 0x3d, 0x18, 0x64, 0x7f,
641311966Sngie	0xbf, 0xd6, 0x87, 0xc1, 0x11, 0xfb, 0xf9, 0xda,
642311966Sngie	0x14, 0xa1, 0x01, 0xf8, 0x7e, 0xea, 0x5b, 0x5b,
643311966Sngie	0xdd, 0x09, 0xf9, 0x31, 0x80, 0x3c, 0xee, 0x34,
644311966Sngie	0x2d, 0xda, 0x71, 0xd9, 0x32, 0x7d, 0x45, 0xb2,
645311966Sngie	0x53, 0xea, 0xd5, 0x7c, 0x85, 0x45, 0xce, 0x1d,
646311966Sngie	0x2b, 0xe9, 0xd7, 0x95, 0xf8, 0x8c, 0x08, 0xe4,
647311966Sngie	0xd0, 0x2f, 0x60, 0x75, 0x02, 0xf3, 0xde, 0xeb,
648311966Sngie	0x46, 0x40, 0xa8, 0xd2, 0x37, 0xd6, 0xca, 0x5d,
649311966Sngie	0xb9, 0xf4, 0x51, 0x31, 0x8a, 0x1a, 0x82, 0xbd,
650311966Sngie	0x6f, 0x6d, 0x88, 0x2b, 0x63, 0x0f, 0xe1, 0xf0,
651311966Sngie	0xcf, 0x13, 0x79, 0x1d, 0x78, 0x82, 0x66, 0xa1,
652311966Sngie	0xef, 0xdb, 0x34, 0x50, 0xd2, 0x71, 0x47, 0x49,
653311966Sngie	0x41, 0x74, 0xd9, 0x0b, 0x14, 0x38, 0x1f, 0xc3,
654311966Sngie	0x09, 0x4d, 0xb3, 0xa6, 0x03, 0x3f, 0x56, 0x67,
655311966Sngie	0xd7, 0x51, 0x4c, 0x8a, 0x1d, 0x37, 0x99, 0xfb,
656311966Sngie	0xe1, 0x84, 0x57, 0x55, 0x9b, 0xf8, 0x73, 0x63,
657311966Sngie	0x68, 0x73, 0x89, 0x52, 0x06, 0xe7, 0x34, 0xe7,
658311966Sngie	0x1a, 0x15, 0x7e, 0xd9, 0x84, 0xa3, 0x0e, 0x68,
659311966Sngie	0x14, 0x1c, 0xe8, 0x23, 0x9e, 0xe3, 0x8f, 0x71,
660311966Sngie	0x02, 0x9b, 0x87, 0xd4, 0xd9, 0x1b, 0xd1, 0x9e,
661311966Sngie	0x9e, 0xa0, 0x7e, 0x49, 0x8e, 0xaa, 0x89, 0xb5,
662311966Sngie	0x16, 0x48, 0x07, 0xb3, 0x3d, 0x9e, 0x4c, 0x35,
663311966Sngie	0x3e, 0x94, 0xa9, 0xf8, 0x82, 0x50, 0x6a, 0x41,
664311966Sngie	0x28, 0x3e, 0x9f, 0x9a, 0x1a, 0x5d, 0x02, 0x7c,
665311966Sngie	0xd0, 0x32, 0x52, 0xa5, 0xee, 0x09, 0x27, 0x2d,
666311966Sngie	0x49, 0x17, 0xf7, 0x92, 0xa1, 0x63, 0x9d, 0x2a,
667311966Sngie	0xfd, 0x53, 0x26, 0x14, 0x7c, 0x92, 0x72, 0xa6,
668311966Sngie	0x38, 0x18, 0x8f, 0xb5, 0x54, 0xb3, 0x69, 0x63,
669311966Sngie	0x6a, 0xdc, 0xb1, 0x5a, 0x12, 0x7a, 0x0b, 0xa3,
670311966Sngie};
671311966Sngie
672311966Sngieconst struct testvec c3des_cbc_192_8_vectors[] = {
673311966Sngie	{
674311966Sngie		.blkno = 0,
675311966Sngie		.ptxt = c3des_cbc_ptxt,
676311966Sngie		.ctxt = c3des_cbc_192_encblkno8_vec0_ctxt,
677311966Sngie	},
678311966Sngie	{
679311966Sngie		.blkno = 1,
680311966Sngie		.ptxt = c3des_cbc_ptxt,
681311966Sngie		.ctxt = c3des_cbc_192_encblkno8_vec1_ctxt,
682311966Sngie	},
683311966Sngie	{
684311966Sngie		.blkno = 2,
685311966Sngie		.ptxt = c3des_cbc_ptxt,
686311966Sngie		.ctxt = c3des_cbc_192_encblkno8_vec2_ctxt,
687311966Sngie	},
688311966Sngie	{
689311966Sngie		.blkno = 3,
690311966Sngie		.ptxt = c3des_cbc_ptxt,
691311966Sngie		.ctxt = c3des_cbc_192_encblkno8_vec3_ctxt,
692311966Sngie	},
693311966Sngie};
694311966Sngie
695311966Sngiestatic int
696311966Sngieopen_disk(const char *devpath, const char *imgpath, size_t size)
697311966Sngie{
698311966Sngie	int fd;
699311966Sngie
700311966Sngie	fd = open(imgpath, O_CREAT | O_RDWR | O_TRUNC, 0600);
701311966Sngie	if (fd < 0)
702311966Sngie		return -1;
703311966Sngie
704311966Sngie	if (ftruncate(fd, size) < 0)
705311966Sngie		goto fail;
706311966Sngie
707311966Sngie	if (rump_pub_etfs_register_withsize(devpath,
708311966Sngie	    imgpath, RUMP_ETFS_BLK, 0, size) < 0) {
709311966Sngie		goto fail;
710311966Sngie	}
711311966Sngie
712311966Sngie	unlink(imgpath);
713311966Sngie	return fd;
714311966Sngiefail:
715311966Sngie	close(fd);
716311966Sngie	unlink(imgpath);
717311966Sngie	return -1;
718311966Sngie}
719311966Sngie
720311966Sngiestatic int
721311966Sngieopen_cgd(int devno)
722311966Sngie{
723311966Sngie	char devpath[32];
724311966Sngie
725311966Sngie	sprintf(devpath, "/dev/rcgd%d%c", devno, getrawpartition() + 'a');
726311966Sngie
727311966Sngie	return rump_sys_open(devpath, O_RDWR, 0);
728311966Sngie}
729311966Sngie
730311966Sngiestatic int
731311966Sngieconfigure_cgd(int fd, const char *dkpath, const char *alg,
732311966Sngie    const char *ivmethod, const char *key, size_t keylen)
733311966Sngie{
734311966Sngie	struct cgd_ioctl ci;
735311966Sngie
736311966Sngie	memset(&ci, 0, sizeof(ci));
737311966Sngie	ci.ci_disk = dkpath;
738311966Sngie	ci.ci_alg = alg;
739311966Sngie	ci.ci_ivmethod = ivmethod;
740311966Sngie	ci.ci_keylen = 8 * keylen - 8; /* Exclude the NUL terminator. */
741311966Sngie	ci.ci_key = key;
742311966Sngie	ci.ci_blocksize = 64;
743311966Sngie
744311966Sngie	return rump_sys_ioctl(fd, CGDIOCSET, &ci);
745311966Sngie}
746311966Sngie
747311966Sngiestatic int
748311966Sngieunconfigure_cgd(int fd)
749311966Sngie{
750311966Sngie	struct cgd_ioctl ci;
751311966Sngie
752311966Sngie	return rump_sys_ioctl(fd, CGDIOCCLR, &ci);
753311966Sngie}
754311966Sngie
755311966Sngiestatic int
756311966Sngiewrite_testvec(int cgdfd, const struct testvec *tv)
757311966Sngie{
758311966Sngie
759311966Sngie	if (rump_sys_lseek(cgdfd, tv->blkno * SECSIZE, SEEK_SET) < 0)
760311966Sngie		return -1;
761311966Sngie
762311966Sngie	if (rump_sys_write(cgdfd, tv->ptxt, SECSIZE) != SECSIZE)
763311966Sngie		return -1;
764311966Sngie
765311966Sngie	return 0;
766311966Sngie}
767311966Sngie
768311966Sngiestatic int
769311966Sngieread_testvec(int cgdfd, const struct testvec *tv)
770311966Sngie{
771311966Sngie	char *buf;
772311966Sngie	int res = -1;
773311966Sngie
774311966Sngie	buf = malloc(SECSIZE);
775311966Sngie	if (buf == NULL)
776311966Sngie		return -1;
777311966Sngie
778311966Sngie	if (rump_sys_lseek(cgdfd, tv->blkno * SECSIZE, SEEK_SET) < 0)
779311966Sngie		goto fail;
780311966Sngie
781311966Sngie	if (rump_sys_read(cgdfd, buf, SECSIZE) != SECSIZE)
782311966Sngie		goto fail;
783311966Sngie
784311966Sngie	res = memcmp(buf, tv->ptxt, SECSIZE);
785311966Sngiefail:
786311966Sngie	free(buf);
787311966Sngie	return res;
788311966Sngie}
789311966Sngie
790311966Sngiestatic int
791311966Sngiecheck_testvec(int dkfd, const struct testvec *tv)
792311966Sngie{
793311966Sngie	char *buf;
794311966Sngie	int res = -1;
795311966Sngie
796311966Sngie	buf = malloc(SECSIZE);
797311966Sngie	if (buf == NULL)
798311966Sngie		return -1;
799311966Sngie
800311966Sngie	if (lseek(dkfd, tv->blkno * SECSIZE, SEEK_SET) < 0)
801311966Sngie		goto fail;
802311966Sngie
803311966Sngie	if (read(dkfd, buf, SECSIZE) != SECSIZE)
804311966Sngie		goto fail;
805311966Sngie
806311966Sngie	res = memcmp(buf, tv->ctxt, SECSIZE);
807311966Sngiefail:
808311966Sngie	free(buf);
809311966Sngie	return res;
810311966Sngie}
811311966Sngie
812311966SngieATF_TC(cgd_3des_cbc_192_encblkno1);
813311966SngieATF_TC_HEAD(cgd_3des_cbc_192_encblkno1, tc)
814311966Sngie{
815311966Sngie	atf_tc_set_md_var(tc, "descr",
816311966Sngie	    "Test 3des-cbc with 192 bits key, ivmethod encblkno1");
817311966Sngie}
818311966Sngie
819311966SngieATF_TC_BODY(cgd_3des_cbc_192_encblkno1, tc)
820311966Sngie{
821311966Sngie	const char imgpath[] = "3des-cbc-192-encblkno1.img";
822311966Sngie	const char *dkpath = "/dev/dk";
823311966Sngie	const size_t dksize = 4 * SECSIZE; /* Last blkno is 3. */
824311966Sngie	int dkfd, cgdfd;
825311966Sngie
826311966Sngie	rump_init();
827311966Sngie
828311966Sngie	RL(dkfd = open_disk(dkpath, imgpath, dksize));
829311966Sngie
830311966Sngie	RL(cgdfd = open_cgd(0));
831311966Sngie	RL(configure_cgd(cgdfd, dkpath, "3des-cbc", "encblkno1",
832311966Sngie	    c3des_cbc_192_key, sizeof(c3des_cbc_192_key)));
833311966Sngie
834311966Sngie	ATF_CHECK_EQ(write_testvec(cgdfd, &c3des_cbc_192_1_vectors[0]), 0);
835311966Sngie	ATF_CHECK_EQ(write_testvec(cgdfd, &c3des_cbc_192_1_vectors[1]), 0);
836311966Sngie	ATF_CHECK_EQ(write_testvec(cgdfd, &c3des_cbc_192_1_vectors[2]), 0);
837311966Sngie	ATF_CHECK_EQ(write_testvec(cgdfd, &c3des_cbc_192_1_vectors[3]), 0);
838311966Sngie
839311966Sngie	RL(unconfigure_cgd(cgdfd));
840311966Sngie	RL(configure_cgd(cgdfd, dkpath, "3des-cbc", "encblkno1",
841311966Sngie	    c3des_cbc_192_key, sizeof(c3des_cbc_192_key)));
842311966Sngie
843311966Sngie	ATF_CHECK_EQ(read_testvec(cgdfd, &c3des_cbc_192_1_vectors[0]), 0);
844311966Sngie	ATF_CHECK_EQ(read_testvec(cgdfd, &c3des_cbc_192_1_vectors[1]), 0);
845311966Sngie	ATF_CHECK_EQ(read_testvec(cgdfd, &c3des_cbc_192_1_vectors[2]), 0);
846311966Sngie	ATF_CHECK_EQ(read_testvec(cgdfd, &c3des_cbc_192_1_vectors[3]), 0);
847311966Sngie
848311966Sngie	RL(unconfigure_cgd(cgdfd));
849311966Sngie	RL(rump_sys_close(cgdfd));
850311966Sngie
851311966Sngie	ATF_CHECK_EQ(check_testvec(dkfd, &c3des_cbc_192_1_vectors[0]), 0);
852311966Sngie	ATF_CHECK_EQ(check_testvec(dkfd, &c3des_cbc_192_1_vectors[1]), 0);
853311966Sngie	ATF_CHECK_EQ(check_testvec(dkfd, &c3des_cbc_192_1_vectors[2]), 0);
854311966Sngie	ATF_CHECK_EQ(check_testvec(dkfd, &c3des_cbc_192_1_vectors[3]), 0);
855311966Sngie
856311966Sngie	RL(close(dkfd));
857311966Sngie}
858311966Sngie
859311966SngieATF_TC(cgd_3des_cbc_192_encblkno8);
860311966SngieATF_TC_HEAD(cgd_3des_cbc_192_encblkno8, tc)
861311966Sngie{
862311966Sngie	atf_tc_set_md_var(tc, "descr",
863311966Sngie	    "Test 3des-cbc with 192 bits key, ivmethod encblkno8");
864311966Sngie}
865311966Sngie
866311966SngieATF_TC_BODY(cgd_3des_cbc_192_encblkno8, tc)
867311966Sngie{
868311966Sngie	const char imgpath[] = "3des-cbc-192-encblkno8.img";
869311966Sngie	const char *dkpath = "/dev/dk";
870311966Sngie	const size_t dksize = 4 * SECSIZE; /* Last blkno is 3. */
871311966Sngie	int dkfd, cgdfd;
872311966Sngie
873311966Sngie	rump_init();
874311966Sngie
875311966Sngie	RL(dkfd = open_disk(dkpath, imgpath, dksize));
876311966Sngie
877311966Sngie	RL(cgdfd = open_cgd(0));
878311966Sngie	RL(configure_cgd(cgdfd, dkpath, "3des-cbc", "encblkno8",
879311966Sngie	    c3des_cbc_192_key, sizeof(c3des_cbc_192_key)));
880311966Sngie
881311966Sngie	ATF_CHECK_EQ(write_testvec(cgdfd, &c3des_cbc_192_8_vectors[0]), 0);
882311966Sngie	ATF_CHECK_EQ(write_testvec(cgdfd, &c3des_cbc_192_8_vectors[1]), 0);
883311966Sngie	ATF_CHECK_EQ(write_testvec(cgdfd, &c3des_cbc_192_8_vectors[2]), 0);
884311966Sngie	ATF_CHECK_EQ(write_testvec(cgdfd, &c3des_cbc_192_8_vectors[3]), 0);
885311966Sngie
886311966Sngie	RL(unconfigure_cgd(cgdfd));
887311966Sngie	RL(configure_cgd(cgdfd, dkpath, "3des-cbc", "encblkno8",
888311966Sngie	    c3des_cbc_192_key, sizeof(c3des_cbc_192_key)));
889311966Sngie
890311966Sngie	ATF_CHECK_EQ(read_testvec(cgdfd, &c3des_cbc_192_8_vectors[0]), 0);
891311966Sngie	ATF_CHECK_EQ(read_testvec(cgdfd, &c3des_cbc_192_8_vectors[1]), 0);
892311966Sngie	ATF_CHECK_EQ(read_testvec(cgdfd, &c3des_cbc_192_8_vectors[2]), 0);
893311966Sngie	ATF_CHECK_EQ(read_testvec(cgdfd, &c3des_cbc_192_8_vectors[3]), 0);
894311966Sngie
895311966Sngie	RL(unconfigure_cgd(cgdfd));
896311966Sngie	RL(rump_sys_close(cgdfd));
897311966Sngie
898311966Sngie	ATF_CHECK_EQ(check_testvec(dkfd, &c3des_cbc_192_8_vectors[0]), 0);
899311966Sngie	ATF_CHECK_EQ(check_testvec(dkfd, &c3des_cbc_192_8_vectors[1]), 0);
900311966Sngie	ATF_CHECK_EQ(check_testvec(dkfd, &c3des_cbc_192_8_vectors[2]), 0);
901311966Sngie	ATF_CHECK_EQ(check_testvec(dkfd, &c3des_cbc_192_8_vectors[3]), 0);
902311966Sngie
903311966Sngie	RL(close(dkfd));
904311966Sngie}
905311966Sngie
906311966SngieATF_TP_ADD_TCS(tp)
907311966Sngie{
908311966Sngie
909311966Sngie	ATF_TP_ADD_TC(tp, cgd_3des_cbc_192_encblkno1);
910311966Sngie	ATF_TP_ADD_TC(tp, cgd_3des_cbc_192_encblkno8);
911311966Sngie
912311966Sngie	return atf_no_error();
913311966Sngie}
914