1 1.1 hikaru /* $NetBSD: h_sha2hmac.c,v 1.1 2019/12/03 04:20:45 hikaru Exp $ */ 2 1.1 hikaru 3 1.1 hikaru /*- 4 1.1 hikaru * Copyright (c) 2014 The NetBSD Foundation, Inc. 5 1.1 hikaru * All rights reserved. 6 1.1 hikaru * 7 1.1 hikaru * Redistribution and use in source and binary forms, with or without 8 1.1 hikaru * modification, are permitted provided that the following conditions 9 1.1 hikaru * are met: 10 1.1 hikaru * 1. Redistributions of source code must retain the above copyright 11 1.1 hikaru * notice, this list of conditions and the following disclaimer. 12 1.1 hikaru * 2. Redistributions in binary form must reproduce the above copyright 13 1.1 hikaru * notice, this list of conditions and the following disclaimer in the 14 1.1 hikaru * documentation and/or other materials provided with the distribution. 15 1.1 hikaru * 16 1.1 hikaru * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 17 1.1 hikaru * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 18 1.1 hikaru * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 19 1.1 hikaru * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 20 1.1 hikaru * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 21 1.1 hikaru * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 22 1.1 hikaru * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 23 1.1 hikaru * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 24 1.1 hikaru * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 25 1.1 hikaru * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 26 1.1 hikaru * POSSIBILITY OF SUCH DAMAGE. 27 1.1 hikaru */ 28 1.1 hikaru 29 1.1 hikaru #include <err.h> 30 1.1 hikaru #include <fcntl.h> 31 1.1 hikaru #include <stdio.h> 32 1.1 hikaru #include <string.h> 33 1.1 hikaru 34 1.1 hikaru #include <sys/ioctl.h> 35 1.1 hikaru #include <sys/time.h> 36 1.1 hikaru 37 1.1 hikaru #include <crypto/cryptodev.h> 38 1.1 hikaru 39 1.1 hikaru /* Test data from RFC4868 */ 40 1.1 hikaru const struct { 41 1.1 hikaru int num; 42 1.1 hikaru int alg; 43 1.1 hikaru size_t key_len; 44 1.1 hikaru size_t len; 45 1.1 hikaru size_t mac_len; 46 1.1 hikaru unsigned char key[80]; 47 1.1 hikaru unsigned char data[80]; 48 1.1 hikaru unsigned char mac[80]; 49 1.1 hikaru } tests[] = { 50 1.1 hikaru { 1, CRYPTO_SHA2_256_HMAC, 32, 8, 16, 51 1.1 hikaru { 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 52 1.1 hikaru 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 53 1.1 hikaru 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 54 1.1 hikaru 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b }, 55 1.1 hikaru "Hi There", 56 1.1 hikaru { 0x19, 0x8a, 0x60, 0x7e, 0xb4, 0x4b, 0xfb, 0xc6, 57 1.1 hikaru 0x99, 0x03, 0xa0, 0xf1, 0xcf, 0x2b, 0xbd, 0xc5 } 58 1.1 hikaru }, 59 1.1 hikaru { 2, CRYPTO_SHA2_256_HMAC, 32, 28, 16, 60 1.1 hikaru "JefeJefeJefeJefe" 61 1.1 hikaru "JefeJefeJefeJefe", 62 1.1 hikaru "what do ya want " 63 1.1 hikaru "for nothing?", 64 1.1 hikaru { 0x16, 0x7f, 0x92, 0x85, 0x88, 0xc5, 0xcc, 0x2e, 65 1.1 hikaru 0xef, 0x8e, 0x30, 0x93, 0xca, 0xa0, 0xe8, 0x7c } 66 1.1 hikaru }, 67 1.1 hikaru { 3, CRYPTO_SHA2_256_HMAC, 32, 50, 16, 68 1.1 hikaru { 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 69 1.1 hikaru 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 70 1.1 hikaru 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 71 1.1 hikaru 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa }, 72 1.1 hikaru { 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 73 1.1 hikaru 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 74 1.1 hikaru 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 75 1.1 hikaru 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 76 1.1 hikaru 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 77 1.1 hikaru 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 78 1.1 hikaru 0xdd, 0xdd }, 79 1.1 hikaru { 0xcd, 0xcb, 0x12, 0x20, 0xd1, 0xec, 0xcc, 0xea, 80 1.1 hikaru 0x91, 0xe5, 0x3a, 0xba, 0x30, 0x92, 0xf9, 0x62 } 81 1.1 hikaru }, 82 1.1 hikaru { 4, CRYPTO_SHA2_256_HMAC, 32, 50, 16, 83 1.1 hikaru { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 84 1.1 hikaru 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 85 1.1 hikaru 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 86 1.1 hikaru 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20 }, 87 1.1 hikaru { 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 88 1.1 hikaru 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 89 1.1 hikaru 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 90 1.1 hikaru 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 91 1.1 hikaru 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 92 1.1 hikaru 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 93 1.1 hikaru 0xcd, 0xcd }, 94 1.1 hikaru { 0x37, 0x2e, 0xfc, 0xf9, 0xb4, 0x0b, 0x35, 0xc2, 95 1.1 hikaru 0x11, 0x5b, 0x13, 0x46, 0x90, 0x3d, 0x2e, 0xf4 } 96 1.1 hikaru }, 97 1.1 hikaru { 5, CRYPTO_SHA2_384_HMAC, 48, 8, 24, 98 1.1 hikaru { 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 99 1.1 hikaru 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 100 1.1 hikaru 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 101 1.1 hikaru 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 102 1.1 hikaru 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 103 1.1 hikaru 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b }, 104 1.1 hikaru "Hi There", 105 1.1 hikaru { 0xb6, 0xa8, 0xd5, 0x63, 0x6f, 0x5c, 0x6a, 0x72, 106 1.1 hikaru 0x24, 0xf9, 0x97, 0x7d, 0xcf, 0x7e, 0xe6, 0xc7, 107 1.1 hikaru 0xfb, 0x6d, 0x0c, 0x48, 0xcb, 0xde, 0xe9, 0x73 } 108 1.1 hikaru }, 109 1.1 hikaru { 6, CRYPTO_SHA2_384_HMAC, 48, 28, 24, 110 1.1 hikaru "JefeJefeJefeJefe" 111 1.1 hikaru "JefeJefeJefeJefe" 112 1.1 hikaru "JefeJefeJefeJefe", 113 1.1 hikaru "what do ya want " 114 1.1 hikaru "for nothing?", 115 1.1 hikaru { 0x2c, 0x73, 0x53, 0x97, 0x4f, 0x18, 0x42, 0xfd, 116 1.1 hikaru 0x66, 0xd5, 0x3c, 0x45, 0x2c, 0xa4, 0x21, 0x22, 117 1.1 hikaru 0xb2, 0x8c, 0x0b, 0x59, 0x4c, 0xfb, 0x18, 0x4d } 118 1.1 hikaru }, 119 1.1 hikaru { 7, CRYPTO_SHA2_384_HMAC, 48, 50, 24, 120 1.1 hikaru { 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 121 1.1 hikaru 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 122 1.1 hikaru 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 123 1.1 hikaru 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 124 1.1 hikaru 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 125 1.1 hikaru 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa }, 126 1.1 hikaru { 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 127 1.1 hikaru 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 128 1.1 hikaru 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 129 1.1 hikaru 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 130 1.1 hikaru 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 131 1.1 hikaru 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 132 1.1 hikaru 0xdd, 0xdd }, 133 1.1 hikaru { 0x80, 0x9f, 0x43, 0x9b, 0xe0, 0x02, 0x74, 0x32, 134 1.1 hikaru 0x1d, 0x4a, 0x53, 0x86, 0x52, 0x16, 0x4b, 0x53, 135 1.1 hikaru 0x55, 0x4a, 0x50, 0x81, 0x84, 0xa0, 0xc3, 0x16 } 136 1.1 hikaru }, 137 1.1 hikaru { 8, CRYPTO_SHA2_384_HMAC, 48, 50, 24, 138 1.1 hikaru { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 139 1.1 hikaru 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 140 1.1 hikaru 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 141 1.1 hikaru 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 142 1.1 hikaru 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 143 1.1 hikaru 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19 }, 144 1.1 hikaru { 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 145 1.1 hikaru 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 146 1.1 hikaru 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 147 1.1 hikaru 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 148 1.1 hikaru 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 149 1.1 hikaru 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 150 1.1 hikaru 0xcd, 0xcd }, 151 1.1 hikaru { 0x5b, 0x54, 0x00, 0x85, 0xc6, 0xe6, 0x35, 0x80, 152 1.1 hikaru 0x96, 0x53, 0x2b, 0x24, 0x93, 0x60, 0x9e, 0xd1, 153 1.1 hikaru 0xcb, 0x29, 0x8f, 0x77, 0x4f, 0x87, 0xbb, 0x5c } 154 1.1 hikaru }, 155 1.1 hikaru { 9, CRYPTO_SHA2_512_HMAC, 64, 8, 32, 156 1.1 hikaru { 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 157 1.1 hikaru 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 158 1.1 hikaru 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 159 1.1 hikaru 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 160 1.1 hikaru 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 161 1.1 hikaru 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 162 1.1 hikaru 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 163 1.1 hikaru 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b }, 164 1.1 hikaru "Hi There", 165 1.1 hikaru { 0x63, 0x7e, 0xdc, 0x6e, 0x01, 0xdc, 0xe7, 0xe6, 166 1.1 hikaru 0x74, 0x2a, 0x99, 0x45, 0x1a, 0xae, 0x82, 0xdf, 167 1.1 hikaru 0x23, 0xda, 0x3e, 0x92, 0x43, 0x9e, 0x59, 0x0e, 168 1.1 hikaru 0x43, 0xe7, 0x61, 0xb3, 0x3e, 0x91, 0x0f, 0xb8 } 169 1.1 hikaru }, 170 1.1 hikaru { 10, CRYPTO_SHA2_512_HMAC, 64, 28, 32, 171 1.1 hikaru "JefeJefeJefeJefe" 172 1.1 hikaru "JefeJefeJefeJefe" 173 1.1 hikaru "JefeJefeJefeJefe" 174 1.1 hikaru "JefeJefeJefeJefe", 175 1.1 hikaru "what do ya want " 176 1.1 hikaru "for nothing?", 177 1.1 hikaru { 0xcb, 0x37, 0x09, 0x17, 0xae, 0x8a, 0x7c, 0xe2, 178 1.1 hikaru 0x8c, 0xfd, 0x1d, 0x8f, 0x47, 0x05, 0xd6, 0x14, 179 1.1 hikaru 0x1c, 0x17, 0x3b, 0x2a, 0x93, 0x62, 0xc1, 0x5d, 180 1.1 hikaru 0xf2, 0x35, 0xdf, 0xb2, 0x51, 0xb1, 0x54, 0x54 } 181 1.1 hikaru }, 182 1.1 hikaru { 11, CRYPTO_SHA2_512_HMAC, 64, 50, 32, 183 1.1 hikaru { 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 184 1.1 hikaru 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 185 1.1 hikaru 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 186 1.1 hikaru 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 187 1.1 hikaru 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 188 1.1 hikaru 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 189 1.1 hikaru 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 190 1.1 hikaru 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa }, 191 1.1 hikaru { 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 192 1.1 hikaru 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 193 1.1 hikaru 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 194 1.1 hikaru 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 195 1.1 hikaru 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 196 1.1 hikaru 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 197 1.1 hikaru 0xdd, 0xdd }, 198 1.1 hikaru { 0x2e, 0xe7, 0xac, 0xd7, 0x83, 0x62, 0x4c, 0xa9, 199 1.1 hikaru 0x39, 0x87, 0x10, 0xf3, 0xee, 0x05, 0xae, 0x41, 200 1.1 hikaru 0xb9, 0xf9, 0xb0, 0x51, 0x0c, 0x87, 0xe4, 0x9e, 201 1.1 hikaru 0x58, 0x6c, 0xc9, 0xbf, 0x96, 0x17, 0x33, 0xd8 202 1.1 hikaru } 203 1.1 hikaru }, 204 1.1 hikaru { 12, CRYPTO_SHA2_512_HMAC, 64, 50, 32, 205 1.1 hikaru { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 206 1.1 hikaru 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 207 1.1 hikaru 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 208 1.1 hikaru 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 209 1.1 hikaru 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 210 1.1 hikaru 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 211 1.1 hikaru 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 212 1.1 hikaru 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40 }, 213 1.1 hikaru { 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 214 1.1 hikaru 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 215 1.1 hikaru 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 216 1.1 hikaru 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 217 1.1 hikaru 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 218 1.1 hikaru 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 219 1.1 hikaru 0xcd, 0xcd }, 220 1.1 hikaru { 0x5e, 0x66, 0x88, 0xe5, 0xa3, 0xda, 0xec, 0x82, 221 1.1 hikaru 0x6c, 0xa3, 0x2e, 0xae, 0xa2, 0x24, 0xef, 0xf5, 222 1.1 hikaru 0xe7, 0x00, 0x62, 0x89, 0x47, 0x47, 0x0e, 0x13, 223 1.1 hikaru 0xad, 0x01, 0x30, 0x25, 0x61, 0xba, 0xb1, 0x08 } 224 1.1 hikaru }, 225 1.1 hikaru }; 226 1.1 hikaru 227 1.1 hikaru int 228 1.1 hikaru main(void) 229 1.1 hikaru { 230 1.1 hikaru size_t i; 231 1.1 hikaru int fd, res; 232 1.1 hikaru struct session_op cs; 233 1.1 hikaru struct crypt_op co; 234 1.1 hikaru unsigned char buf[80]; 235 1.1 hikaru 236 1.1 hikaru fd = open("/dev/crypto", O_RDWR, 0); 237 1.1 hikaru if (fd < 0) 238 1.1 hikaru err(1, "open"); 239 1.1 hikaru for (i = 0; i < __arraycount(tests); i++) { 240 1.1 hikaru memset(&cs, 0, sizeof(cs)); 241 1.1 hikaru cs.mac = tests[i].alg; 242 1.1 hikaru cs.mackeylen = tests[i].key_len; 243 1.1 hikaru cs.mackey = __UNCONST(&tests[i].key); 244 1.1 hikaru res = ioctl(fd, CIOCGSESSION, &cs); 245 1.1 hikaru if (res < 0) 246 1.1 hikaru err(1, "CIOCGSESSION test %d", tests[i].num); 247 1.1 hikaru 248 1.1 hikaru memset(&co, 0, sizeof(co)); 249 1.1 hikaru memset(buf, 0, sizeof(buf)); 250 1.1 hikaru co.ses = cs.ses; 251 1.1 hikaru co.op = COP_ENCRYPT; 252 1.1 hikaru co.len = tests[i].len; 253 1.1 hikaru co.src = __UNCONST(&tests[i].data); 254 1.1 hikaru co.mac = buf; 255 1.1 hikaru res = ioctl(fd, CIOCCRYPT, &co); 256 1.1 hikaru if (res < 0) 257 1.1 hikaru err(1, "CIOCCRYPT test %d", tests[i].num); 258 1.1 hikaru 259 1.1 hikaru /* compare with trailing zeros */ 260 1.1 hikaru if (memcmp(co.mac, &tests[i].mac, sizeof(tests[i].mac))) 261 1.1 hikaru errx(1, "verification failed test %d", tests[i].num); 262 1.1 hikaru 263 1.1 hikaru res = ioctl(fd, CIOCFSESSION, &cs.ses); 264 1.1 hikaru if (res < 0) 265 1.1 hikaru err(1, "CIOCFSESSION test %d", tests[i].num); 266 1.1 hikaru } 267 1.1 hikaru return 0; 268 1.1 hikaru } 269