Annotation of src/external/mpl/bind/dist/lib/dns/tests/rsa_test.c, Revision 1.1
1.1 ! christos 1: /* $NetBSD$ */
! 2:
! 3: /*
! 4: * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
! 5: *
! 6: * This Source Code Form is subject to the terms of the Mozilla Public
! 7: * License, v. 2.0. If a copy of the MPL was not distributed with this
! 8: * file, You can obtain one at http://mozilla.org/MPL/2.0/.
! 9: *
! 10: * See the COPYRIGHT file distributed with this work for additional
! 11: * information regarding copyright ownership.
! 12: */
! 13:
! 14:
! 15: /* ! \file */
! 16:
! 17: #include <config.h>
! 18:
! 19: #include <atf-c.h>
! 20:
! 21: #include <stdio.h>
! 22: #include <string.h>
! 23:
! 24: #include <isc/util.h>
! 25: #include <isc/print.h>
! 26:
! 27: #include <pk11/site.h>
! 28:
! 29: #include "dnstest.h"
! 30:
! 31: #include "../dst_internal.h"
! 32:
! 33: #if defined(OPENSSL) || defined(PKCS11CRYPTO)
! 34:
! 35: static unsigned char d[10] = {
! 36: 0xa, 0x10, 0xbb, 0, 0xfe, 0x15, 0x1, 0x88, 0xcc, 0x7d
! 37: };
! 38:
! 39: static unsigned char sigsha1[256] = {
! 40: 0x45, 0x55, 0xd6, 0xf8, 0x05, 0xd2, 0x2e, 0x79,
! 41: 0x14, 0x2b, 0x1b, 0xd1, 0x4b, 0xb7, 0xcd, 0xc0,
! 42: 0xa2, 0xf3, 0x85, 0x32, 0x1f, 0xa3, 0xfd, 0x1f,
! 43: 0x30, 0xe0, 0xde, 0xb2, 0x6f, 0x3c, 0x8e, 0x2b,
! 44: 0x82, 0x92, 0xcd, 0x1c, 0x1b, 0xdf, 0xe6, 0xd5,
! 45: 0x4d, 0x93, 0xe6, 0xaa, 0x40, 0x28, 0x1b, 0x7b,
! 46: 0x2e, 0x40, 0x4d, 0xb5, 0x4d, 0x43, 0xe8, 0xfc,
! 47: 0x93, 0x86, 0x68, 0xe3, 0xbf, 0x73, 0x9a, 0x1e,
! 48: 0x6b, 0x5d, 0x52, 0xb8, 0x98, 0x1c, 0x94, 0xe1,
! 49: 0x85, 0x8b, 0xee, 0xb1, 0x4f, 0x22, 0x71, 0xcb,
! 50: 0xfd, 0xb2, 0xa8, 0x88, 0x64, 0xb4, 0xb1, 0x4a,
! 51: 0xa1, 0x7a, 0xce, 0x52, 0x83, 0xd8, 0xf2, 0x9e,
! 52: 0x67, 0x4c, 0xc3, 0x37, 0x74, 0xfe, 0xe0, 0x25,
! 53: 0x2a, 0xfd, 0xa3, 0x09, 0xff, 0x8a, 0x92, 0x0d,
! 54: 0xa9, 0xb3, 0x90, 0x23, 0xbe, 0x6a, 0x2c, 0x9e,
! 55: 0x5c, 0x6d, 0xb4, 0xa7, 0xd7, 0x97, 0xdd, 0xc6,
! 56: 0xb8, 0xae, 0xd4, 0x88, 0x64, 0x63, 0x1e, 0x85,
! 57: 0x20, 0x09, 0xea, 0xc4, 0x0b, 0xca, 0xbf, 0x83,
! 58: 0x5c, 0x89, 0xae, 0x64, 0x15, 0x76, 0x06, 0x51,
! 59: 0xb6, 0xa1, 0x99, 0xb2, 0x3c, 0x50, 0x99, 0x86,
! 60: 0x7d, 0xc7, 0xca, 0x4e, 0x1d, 0x2c, 0x17, 0xbb,
! 61: 0x6c, 0x7a, 0xc9, 0x3f, 0x5e, 0x28, 0x57, 0x2c,
! 62: 0xda, 0x01, 0x1d, 0xe8, 0x01, 0xf8, 0xf6, 0x37,
! 63: 0xe1, 0x34, 0x56, 0xae, 0x6e, 0xb1, 0xd4, 0xa2,
! 64: 0xc4, 0x02, 0xc1, 0xca, 0x96, 0xb0, 0x06, 0x72,
! 65: 0x2a, 0x27, 0xaa, 0xc8, 0xd5, 0x50, 0x81, 0x49,
! 66: 0x46, 0x33, 0xf8, 0xf7, 0x6b, 0xf4, 0x9c, 0x30,
! 67: 0x90, 0x50, 0xf6, 0x16, 0x76, 0x9d, 0xc6, 0x73,
! 68: 0xb5, 0xbc, 0x8a, 0xb6, 0x1d, 0x98, 0xcb, 0xce,
! 69: 0x36, 0x6f, 0x60, 0xec, 0x96, 0x49, 0x08, 0x85,
! 70: 0x5b, 0xc1, 0x8e, 0xb0, 0xea, 0x9e, 0x1f, 0xd6,
! 71: 0x27, 0x7f, 0xb6, 0xe0, 0x04, 0x12, 0xd2, 0x81
! 72: };
! 73:
! 74: #ifndef PK11_MD5_DISABLE
! 75: static unsigned char sigmd5[256] = {
! 76: 0xc0, 0x99, 0x90, 0xd6, 0xea, 0xc1, 0x5f, 0xc7,
! 77: 0x23, 0x60, 0xfc, 0x13, 0x3d, 0xcc, 0xda, 0x93,
! 78: 0x19, 0xf7, 0x22, 0xa9, 0x55, 0xbe, 0x70, 0x3c,
! 79: 0x87, 0x24, 0x8a, 0x7e, 0xa7, 0x59, 0x58, 0xd3,
! 80: 0x0e, 0x7c, 0x50, 0x3c, 0x81, 0x0f, 0x7a, 0x2b,
! 81: 0xb1, 0x94, 0x21, 0x87, 0xe4, 0x87, 0xcd, 0x2b,
! 82: 0xb9, 0xf1, 0xb8, 0x26, 0xc1, 0x02, 0xf4, 0x30,
! 83: 0x83, 0x41, 0x89, 0x61, 0xcc, 0x3d, 0xe3, 0x0f,
! 84: 0xec, 0x4a, 0x74, 0x95, 0x10, 0x65, 0xac, 0xd1,
! 85: 0xf5, 0x95, 0xe9, 0x99, 0xa8, 0x45, 0x98, 0x99,
! 86: 0xb5, 0xfd, 0x7a, 0x78, 0x80, 0xe5, 0x00, 0x33,
! 87: 0xa5, 0x54, 0xe5, 0xa3, 0xc0, 0x1b, 0x6c, 0xb9,
! 88: 0x77, 0x52, 0x6f, 0xe5, 0x85, 0xa8, 0xfa, 0x45,
! 89: 0x78, 0x49, 0x14, 0xa0, 0x10, 0x58, 0x40, 0x80,
! 90: 0x90, 0xc6, 0x55, 0x52, 0x6d, 0x46, 0x58, 0x50,
! 91: 0x3d, 0x5e, 0x40, 0x25, 0x51, 0x7c, 0xc4, 0x12,
! 92: 0x87, 0x2d, 0x7b, 0x10, 0xcd, 0x80, 0xec, 0x5d,
! 93: 0x27, 0x15, 0x09, 0x37, 0x1f, 0xa7, 0x86, 0x15,
! 94: 0xd1, 0xdd, 0xf1, 0x86, 0x1e, 0x42, 0x3a, 0xf9,
! 95: 0x5a, 0xed, 0x33, 0x07, 0xa9, 0x98, 0x08, 0x79,
! 96: 0xc5, 0xa4, 0x09, 0x95, 0x6e, 0x12, 0xfe, 0xee,
! 97: 0x49, 0x61, 0xe0, 0x99, 0xaa, 0x34, 0xa5, 0xca,
! 98: 0x82, 0xd3, 0x9b, 0x1c, 0x5b, 0x79, 0xf5, 0x0e,
! 99: 0x2c, 0x6c, 0x3b, 0x48, 0xd1, 0xbc, 0xd0, 0xda,
! 100: 0x73, 0xba, 0xe1, 0x81, 0x48, 0x27, 0x39, 0x2f,
! 101: 0x98, 0x77, 0x08, 0xb3, 0xf7, 0x38, 0x28, 0x6d,
! 102: 0x02, 0x56, 0xfa, 0x31, 0xbb, 0x14, 0x81, 0x6b,
! 103: 0x3c, 0x24, 0xa2, 0x68, 0x7a, 0x0a, 0x53, 0xbd,
! 104: 0x9d, 0x57, 0xd0, 0x99, 0x10, 0x28, 0x78, 0x69,
! 105: 0x31, 0x93, 0xa4, 0x73, 0x8d, 0x1a, 0xe4, 0xdc,
! 106: 0x0c, 0x15, 0xb8, 0x51, 0xd8, 0x66, 0x6a, 0x95,
! 107: 0x56, 0x17, 0x0a, 0x45, 0x72, 0xb5, 0xb8, 0xc4
! 108: };
! 109: #endif
! 110:
! 111: static unsigned char sigsha256[256] = {
! 112: 0x83, 0x53, 0x15, 0xfc, 0xca, 0xdb, 0xf6, 0x0d,
! 113: 0x53, 0x24, 0x5b, 0x5a, 0x8e, 0xd0, 0xbe, 0x5e,
! 114: 0xbc, 0xe8, 0x9e, 0x92, 0x3c, 0xfa, 0x93, 0x03,
! 115: 0xce, 0x2f, 0xc7, 0x6d, 0xd0, 0xbb, 0x9d, 0x06,
! 116: 0x83, 0xc6, 0xd3, 0xc0, 0xc1, 0x57, 0x9c, 0x82,
! 117: 0x17, 0x7f, 0xb5, 0xf8, 0x31, 0x18, 0xda, 0x46,
! 118: 0x05, 0x2c, 0xf8, 0xea, 0xaa, 0xcd, 0x99, 0x18,
! 119: 0xff, 0x23, 0x5e, 0xef, 0xf0, 0x87, 0x47, 0x6e,
! 120: 0x91, 0xfd, 0x19, 0x0b, 0x39, 0x19, 0x6a, 0xc8,
! 121: 0xdf, 0x71, 0x66, 0x8e, 0xa9, 0xa0, 0x79, 0x5c,
! 122: 0x2c, 0x52, 0x00, 0x61, 0x17, 0x86, 0x66, 0x03,
! 123: 0x52, 0xad, 0xec, 0x06, 0x53, 0xd9, 0x6d, 0xe3,
! 124: 0xe3, 0xea, 0x28, 0x15, 0xb3, 0x75, 0xf4, 0x61,
! 125: 0x7d, 0xed, 0x69, 0x2c, 0x24, 0xf3, 0x21, 0xb1,
! 126: 0x8a, 0xea, 0x60, 0xa2, 0x9e, 0x6a, 0xa6, 0x53,
! 127: 0x12, 0xf6, 0x5c, 0xef, 0xd7, 0x49, 0x4a, 0x02,
! 128: 0xe7, 0xf8, 0x64, 0x89, 0x13, 0xac, 0xd5, 0x1e,
! 129: 0x58, 0xff, 0xa1, 0x63, 0xdd, 0xa0, 0x1f, 0x44,
! 130: 0x99, 0x6a, 0x59, 0x7f, 0x35, 0xbd, 0xf1, 0xf3,
! 131: 0x7a, 0x28, 0x44, 0xe3, 0x4c, 0x68, 0xb1, 0xb3,
! 132: 0x97, 0x3c, 0x46, 0xe3, 0xc2, 0x12, 0x9e, 0x68,
! 133: 0x0b, 0xa6, 0x6c, 0x8f, 0x58, 0x48, 0x44, 0xa4,
! 134: 0xf7, 0xa7, 0xc2, 0x91, 0x8f, 0xbf, 0x00, 0xd0,
! 135: 0x01, 0x35, 0xd4, 0x86, 0x6e, 0x1f, 0xea, 0x42,
! 136: 0x60, 0xb1, 0x84, 0x27, 0xf4, 0x99, 0x36, 0x06,
! 137: 0x98, 0x12, 0x83, 0x32, 0x9f, 0xcd, 0x50, 0x5a,
! 138: 0x5e, 0xb8, 0x8e, 0xfe, 0x8d, 0x8d, 0x33, 0x2d,
! 139: 0x45, 0xe1, 0xc9, 0xdf, 0x2a, 0xd8, 0x38, 0x1d,
! 140: 0x95, 0xd4, 0x42, 0xee, 0x93, 0x5b, 0x0f, 0x1e,
! 141: 0x07, 0x06, 0x3a, 0x92, 0xf1, 0x59, 0x1d, 0x6e,
! 142: 0x1c, 0x31, 0xf3, 0xce, 0xa9, 0x1f, 0xad, 0x4d,
! 143: 0x76, 0x4d, 0x24, 0x98, 0xe2, 0x0e, 0x8c, 0x35
! 144: };
! 145:
! 146: static unsigned char sigsha512[512] = {
! 147: 0x4e, 0x2f, 0x63, 0x42, 0xc5, 0xf3, 0x05, 0x4a,
! 148: 0xa6, 0x3a, 0x93, 0xa0, 0xd9, 0x33, 0xa0, 0xd1,
! 149: 0x46, 0x33, 0x42, 0xe8, 0x74, 0xeb, 0x3b, 0x10,
! 150: 0x82, 0xd7, 0xcf, 0x39, 0x23, 0xb3, 0xe9, 0x23,
! 151: 0x53, 0x87, 0x8c, 0xee, 0x78, 0xcb, 0xb3, 0xd9,
! 152: 0xd2, 0x6d, 0x1a, 0x7c, 0x01, 0x4f, 0xed, 0x8d,
! 153: 0xf2, 0x72, 0xe4, 0x6a, 0x00, 0x8a, 0x60, 0xa6,
! 154: 0xd5, 0x9c, 0x43, 0x6c, 0xef, 0x38, 0x0c, 0x74,
! 155: 0x82, 0x5d, 0x22, 0xaa, 0x87, 0x81, 0x90, 0x9c,
! 156: 0x64, 0x07, 0x9b, 0x13, 0x51, 0xe0, 0xa5, 0xc2,
! 157: 0x83, 0x78, 0x2b, 0x9b, 0xb3, 0x8a, 0x9d, 0x36,
! 158: 0x33, 0xbd, 0x0d, 0x53, 0x84, 0xae, 0xe8, 0x13,
! 159: 0x36, 0xf6, 0xdf, 0x96, 0xe9, 0xda, 0xc3, 0xd7,
! 160: 0xa9, 0x2f, 0xf3, 0x5e, 0x5f, 0x1f, 0x7f, 0x38,
! 161: 0x7e, 0x8d, 0xbe, 0x90, 0x5e, 0x13, 0xb2, 0x20,
! 162: 0xbb, 0x9d, 0xfe, 0xe1, 0x52, 0xce, 0xe6, 0x80,
! 163: 0xa7, 0x95, 0x24, 0x59, 0xe3, 0xac, 0x24, 0xc4,
! 164: 0xfa, 0x1c, 0x44, 0x34, 0x29, 0x8d, 0xb1, 0xd0,
! 165: 0xd9, 0x4c, 0xff, 0xc4, 0xdb, 0xca, 0xc4, 0x3f,
! 166: 0x38, 0xf9, 0xe4, 0xaf, 0x75, 0x0a, 0x67, 0x4d,
! 167: 0xa0, 0x2b, 0xb0, 0x83, 0xce, 0x53, 0xc4, 0xb9,
! 168: 0x2e, 0x61, 0xb6, 0x64, 0xe5, 0xb5, 0xe5, 0xac,
! 169: 0x9d, 0x51, 0xec, 0x58, 0x42, 0x90, 0x78, 0xf6,
! 170: 0x46, 0x96, 0xef, 0xb6, 0x97, 0xb7, 0x54, 0x28,
! 171: 0x1a, 0x4c, 0x29, 0xf4, 0x7a, 0x33, 0xc6, 0x07,
! 172: 0xfd, 0xec, 0x97, 0x36, 0x1d, 0x42, 0x88, 0x94,
! 173: 0x27, 0xc2, 0xa3, 0xe1, 0xd4, 0x87, 0xa1, 0x8a,
! 174: 0x2b, 0xff, 0x47, 0x60, 0xfe, 0x1f, 0xaf, 0xc2,
! 175: 0xeb, 0x17, 0xdd, 0x56, 0xc5, 0x94, 0x5c, 0xcb,
! 176: 0x23, 0xe5, 0x49, 0x4d, 0x99, 0x06, 0x02, 0x5a,
! 177: 0xfc, 0xfc, 0xdc, 0xee, 0x49, 0xbc, 0x47, 0x60,
! 178: 0xff, 0x6a, 0x63, 0x8b, 0xe1, 0x2e, 0xa3, 0xa7
! 179: };
! 180:
! 181: ATF_TC(isc_rsa_verify);
! 182: ATF_TC_HEAD(isc_rsa_verify, tc) {
! 183: atf_tc_set_md_var(tc, "descr", "RSA verify");
! 184: }
! 185: ATF_TC_BODY(isc_rsa_verify, tc) {
! 186: isc_result_t ret;
! 187: dns_fixedname_t fname;
! 188: isc_buffer_t buf;
! 189: dns_name_t *name;
! 190: dst_key_t *key = NULL;
! 191: dst_context_t *ctx = NULL;
! 192: isc_region_t r;
! 193:
! 194: UNUSED(tc);
! 195:
! 196: ret = dns_test_begin(NULL, ISC_FALSE);
! 197: ATF_REQUIRE_EQ(ret, ISC_R_SUCCESS);
! 198:
! 199: name = dns_fixedname_initname(&fname);
! 200: isc_buffer_constinit(&buf, "rsa.", 4);
! 201: isc_buffer_add(&buf, 4);
! 202: ret = dns_name_fromtext(name, &buf, NULL, 0, NULL);
! 203: ATF_REQUIRE_EQ(ret, ISC_R_SUCCESS);
! 204:
! 205: ret = dst_key_fromfile(name, 29235, DST_ALG_RSASHA1,
! 206: DST_TYPE_PUBLIC, "./", mctx, &key);
! 207: ATF_REQUIRE_EQ(ret, ISC_R_SUCCESS);
! 208:
! 209: /* RSASHA1 */
! 210:
! 211: ret = dst_context_create3(key, mctx, DNS_LOGCATEGORY_DNSSEC,
! 212: ISC_FALSE, &ctx);
! 213: ATF_REQUIRE_EQ(ret, ISC_R_SUCCESS);
! 214:
! 215: r.base = d;
! 216: r.length = 10;
! 217: ret = dst_context_adddata(ctx, &r);
! 218: ATF_REQUIRE_EQ(ret, ISC_R_SUCCESS);
! 219:
! 220: r.base = sigsha1;
! 221: r.length = 256;
! 222: ret = dst_context_verify(ctx, &r);
! 223: ATF_REQUIRE_EQ(ret, ISC_R_SUCCESS);
! 224:
! 225: dst_context_destroy(&ctx);
! 226:
! 227: /* RSAMD5 */
! 228:
! 229: #ifndef PK11_MD5_DISABLE
! 230: key->key_alg = DST_ALG_RSAMD5;
! 231:
! 232: ret = dst_context_create3(key, mctx, DNS_LOGCATEGORY_DNSSEC,
! 233: ISC_FALSE, &ctx);
! 234: ATF_REQUIRE_EQ(ret, ISC_R_SUCCESS);
! 235:
! 236: r.base = d;
! 237: r.length = 10;
! 238: ret = dst_context_adddata(ctx, &r);
! 239: ATF_REQUIRE_EQ(ret, ISC_R_SUCCESS);
! 240:
! 241: r.base = sigmd5;
! 242: r.length = 256;
! 243: ret = dst_context_verify(ctx, &r);
! 244: ATF_REQUIRE_EQ(ret, ISC_R_SUCCESS);
! 245:
! 246: dst_context_destroy(&ctx);
! 247: #endif
! 248:
! 249: /* RSASHA256 */
! 250:
! 251: key->key_alg = DST_ALG_RSASHA256;
! 252:
! 253: ret = dst_context_create3(key, mctx, DNS_LOGCATEGORY_DNSSEC,
! 254: ISC_FALSE, &ctx);
! 255: ATF_REQUIRE_EQ(ret, ISC_R_SUCCESS);
! 256:
! 257: r.base = d;
! 258: r.length = 10;
! 259: ret = dst_context_adddata(ctx, &r);
! 260: ATF_REQUIRE_EQ(ret, ISC_R_SUCCESS);
! 261:
! 262: r.base = sigsha256;
! 263: r.length = 256;
! 264: ret = dst_context_verify(ctx, &r);
! 265: ATF_REQUIRE_EQ(ret, ISC_R_SUCCESS);
! 266:
! 267: dst_context_destroy(&ctx);
! 268:
! 269: /* RSASHA512 */
! 270:
! 271: key->key_alg = DST_ALG_RSASHA512;
! 272:
! 273: ret = dst_context_create3(key, mctx, DNS_LOGCATEGORY_DNSSEC,
! 274: ISC_FALSE, &ctx);
! 275: ATF_REQUIRE_EQ(ret, ISC_R_SUCCESS);
! 276:
! 277: r.base = d;
! 278: r.length = 10;
! 279: ret = dst_context_adddata(ctx, &r);
! 280: ATF_REQUIRE_EQ(ret, ISC_R_SUCCESS);
! 281:
! 282: r.base = sigsha512;
! 283: r.length = 256;
! 284: ret = dst_context_verify(ctx, &r);
! 285: ATF_REQUIRE_EQ(ret, ISC_R_SUCCESS);
! 286:
! 287: dst_context_destroy(&ctx);
! 288:
! 289:
! 290: dst_key_free(&key);
! 291: dns_test_end();
! 292: }
! 293: #else
! 294: ATF_TC(untested);
! 295: ATF_TC_HEAD(untested, tc) {
! 296: atf_tc_set_md_var(tc, "descr", "skipping RSA test");
! 297: }
! 298: ATF_TC_BODY(untested, tc) {
! 299: UNUSED(tc);
! 300: atf_tc_skip("RSA not available");
! 301: }
! 302: #endif
! 303: /*
! 304: * Main
! 305: */
! 306: ATF_TP_ADD_TCS(tp) {
! 307: #if defined(OPENSSL) || defined(PKCS11CRYPTO)
! 308: ATF_TP_ADD_TC(tp, isc_rsa_verify);
! 309: #else
! 310: ATF_TP_ADD_TC(tp, untested);
! 311: #endif
! 312: return (atf_no_error());
! 313: }
! 314:
CVSweb <webmaster@jp.NetBSD.org>