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