Blame tests/certuniqueid.c

Packit 549fdc
/*
Packit 549fdc
 * Copyright (C) 2010-2012 Free Software Foundation, Inc.
Packit 549fdc
 *
Packit 549fdc
 * Author: Brad Hards
Packit 549fdc
 *
Packit 549fdc
 * Based on certder.c, written by Simon Josefsson
Packit 549fdc
 *
Packit 549fdc
 * This file is part of GnuTLS.
Packit 549fdc
 *
Packit 549fdc
 * GnuTLS is free software; you can redistribute it and/or modify it
Packit 549fdc
 * under the terms of the GNU General Public License as published by
Packit 549fdc
 * the Free Software Foundation; either version 3 of the License, or
Packit 549fdc
 * (at your option) any later version.
Packit 549fdc
 *
Packit 549fdc
 * GnuTLS is distributed in the hope that it will be useful, but
Packit 549fdc
 * WITHOUT ANY WARRANTY; without even the implied warranty of
Packit 549fdc
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit 549fdc
 * General Public License for more details.
Packit 549fdc
 *
Packit 549fdc
 * You should have received a copy of the GNU General Public License
Packit 549fdc
 * along with GnuTLS; if not, write to the Free Software Foundation,
Packit 549fdc
 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
Packit 549fdc
 */
Packit 549fdc
Packit 549fdc
#ifdef HAVE_CONFIG_H
Packit 549fdc
#include "config.h"
Packit 549fdc
#endif
Packit 549fdc
Packit 549fdc
#include "gnutls/gnutls.h"
Packit 549fdc
#include "gnutls/x509.h"
Packit 549fdc
#include "utils.h"
Packit 549fdc
Packit 549fdc
void doit(void)
Packit 549fdc
{
Packit 549fdc
	int ret;
Packit 549fdc
	unsigned char der[] = {
Packit 549fdc
		0x30, 0x82, 0x03, 0x00, 0x30, 0x82, 0x01, 0xec, 0xa0, 0x03,
Packit 549fdc
		    0x02, 0x01,
Packit 549fdc
		0x02, 0x02, 0x10, 0xbd,
Packit 549fdc
		0x76, 0xdf, 0x42, 0x47, 0x0a, 0x00, 0x8d, 0x47, 0x3e, 0x74,
Packit 549fdc
		    0x3f, 0xa1,
Packit 549fdc
		0xdc, 0x8b, 0xbd, 0x30,
Packit 549fdc
		0x09, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1d, 0x05, 0x00,
Packit 549fdc
		    0x30, 0x2d,
Packit 549fdc
		0x31, 0x2b, 0x30, 0x29,
Packit 549fdc
		0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x22, 0x77, 0x00, 0x32,
Packit 549fdc
		    0x00, 0x6b,
Packit 549fdc
		0x00, 0x38, 0x00, 0x72,
Packit 549fdc
		0x00, 0x32, 0x00, 0x2e, 0x00, 0x6d, 0x00, 0x61, 0x00, 0x74,
Packit 549fdc
		    0x00, 0x77,
Packit 549fdc
		0x00, 0x73, 0x00, 0x2e,
Packit 549fdc
		0x00, 0x6e, 0x00, 0x65, 0x00, 0x74, 0x00, 0x00, 0x00, 0x30,
Packit 549fdc
		    0x1e, 0x17,
Packit 549fdc
		0x0d, 0x31, 0x30, 0x30,
Packit 549fdc
		0x34, 0x32, 0x38, 0x31, 0x31, 0x34, 0x31, 0x35, 0x34, 0x5a,
Packit 549fdc
		    0x17, 0x0d,
Packit 549fdc
		0x31, 0x31, 0x30, 0x34,
Packit 549fdc
		0x32, 0x38, 0x31, 0x31, 0x34, 0x31, 0x35, 0x34, 0x5a, 0x30,
Packit 549fdc
		    0x2d, 0x31,
Packit 549fdc
		0x2b, 0x30, 0x29, 0x06,
Packit 549fdc
		0x03, 0x55, 0x04, 0x03, 0x13, 0x22, 0x77, 0x00, 0x32, 0x00,
Packit 549fdc
		    0x6b, 0x00,
Packit 549fdc
		0x38, 0x00, 0x72, 0x00,
Packit 549fdc
		0x32, 0x00, 0x2e, 0x00, 0x6d, 0x00, 0x61, 0x00, 0x74, 0x00,
Packit 549fdc
		    0x77, 0x00,
Packit 549fdc
		0x73, 0x00, 0x2e, 0x00,
Packit 549fdc
		0x6e, 0x00, 0x65, 0x00, 0x74, 0x00, 0x00, 0x00, 0x30, 0x82,
Packit 549fdc
		    0x01, 0x22,
Packit 549fdc
		0x30, 0x0d, 0x06, 0x09,
Packit 549fdc
		0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05,
Packit 549fdc
		    0x00, 0x03,
Packit 549fdc
		0x82, 0x01, 0x0f, 0x00,
Packit 549fdc
		0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xaa,
Packit 549fdc
		    0xd7, 0x32,
Packit 549fdc
		0x26, 0xd7, 0xfc, 0x69,
Packit 549fdc
		0x57, 0x4a, 0x55, 0x08, 0x2b, 0x97, 0xc1, 0x5b, 0x90, 0xfd,
Packit 549fdc
		    0xe8, 0xf5,
Packit 549fdc
		0xf7, 0x9e, 0x7d, 0x34,
Packit 549fdc
		0xce, 0xe9, 0xbb, 0x38, 0xa0, 0x9f, 0xec, 0x84, 0x86, 0x3e,
Packit 549fdc
		    0x47, 0x2e,
Packit 549fdc
		0x71, 0xd7, 0xc3, 0xbf,
Packit 549fdc
		0x89, 0xf3, 0x80, 0xb5, 0x77, 0x80, 0xd3, 0xb0, 0x56, 0x6b,
Packit 549fdc
		    0x9c, 0xf4,
Packit 549fdc
		0xd3, 0x42, 0x2b, 0x26,
Packit 549fdc
		0x01, 0x5c, 0x42, 0xef, 0xf6, 0x51, 0x5a, 0xaa, 0x55, 0x6b,
Packit 549fdc
		    0x30, 0xd3,
Packit 549fdc
		0x2c, 0xdc, 0xde, 0x36,
Packit 549fdc
		0x4d, 0xdd, 0xf3, 0x5f, 0x59, 0xba, 0x57, 0xd8, 0x39, 0x0f,
Packit 549fdc
		    0x5b, 0xd3,
Packit 549fdc
		0xe1, 0x34, 0x39, 0x22,
Packit 549fdc
		0xaa, 0x71, 0x10, 0x59, 0x7a, 0xec, 0x9f, 0x1a, 0xf5, 0xa9,
Packit 549fdc
		    0x40, 0xd6,
Packit 549fdc
		0x7b, 0x32, 0x5f, 0x19,
Packit 549fdc
		0x85, 0xc0, 0xfd, 0xa6, 0x6c, 0x32, 0x58, 0xdc, 0x7c, 0x07,
Packit 549fdc
		    0x42, 0x36,
Packit 549fdc
		0xd0, 0x57, 0x78, 0x63,
Packit 549fdc
		0x60, 0x92, 0x1d, 0x1f, 0x9d, 0xbd, 0xcc, 0xd7, 0xe3, 0x1a,
Packit 549fdc
		    0x57, 0xdb,
Packit 549fdc
		0x70, 0x80, 0x89, 0x36,
Packit 549fdc
		0x39, 0x01, 0x71, 0x5a, 0x2a, 0x05, 0x25, 0x13, 0x80, 0xf8,
Packit 549fdc
		    0x49, 0x48,
Packit 549fdc
		0x5f, 0x06, 0xd0, 0xcb,
Packit 549fdc
		0x2c, 0x58, 0x9a, 0xe7, 0x8b, 0x6d, 0x17, 0x2c, 0xb2, 0x97,
Packit 549fdc
		    0x2c, 0x15,
Packit 549fdc
		0xc9, 0x73, 0x6d, 0x8f,
Packit 549fdc
		0x4f, 0xf3, 0xf1, 0xb9, 0x70, 0x3f, 0xcb, 0x5f, 0x80, 0x85,
Packit 549fdc
		    0x8b, 0xdf,
Packit 549fdc
		0xd2, 0x05, 0x95, 0x1c,
Packit 549fdc
		0xe4, 0x37, 0xee, 0xd2, 0x62, 0x49, 0x08, 0xdf, 0xf6, 0x02,
Packit 549fdc
		    0xec, 0xe6,
Packit 549fdc
		0x9a, 0x37, 0xfc, 0x21,
Packit 549fdc
		0x7a, 0x98, 0x12, 0x1d, 0x79, 0xbf, 0xc7, 0x0f, 0x0a, 0x20,
Packit 549fdc
		    0xf8, 0xef,
Packit 549fdc
		0xa5, 0xc6, 0x0e, 0x94,
Packit 549fdc
		0x5e, 0x17, 0x94, 0x12, 0x42, 0xfe, 0xd7, 0x22, 0xbd, 0x31,
Packit 549fdc
		    0x27, 0xc7,
Packit 549fdc
		0xdb, 0x4a, 0x4e, 0x95,
Packit 549fdc
		0xe2, 0xc1, 0xdd, 0xe8, 0x0f, 0x7d, 0x1d, 0xe4, 0xfd, 0xb1,
Packit 549fdc
		    0x27, 0x7b,
Packit 549fdc
		0xc1, 0x71, 0xfe, 0x27,
Packit 549fdc
		0x47, 0x89, 0xf4, 0xfc, 0x84, 0xa5, 0x57, 0x5d, 0x21, 0x02,
Packit 549fdc
		    0x03, 0x01,
Packit 549fdc
		0x00, 0x01, 0x81, 0x11,
Packit 549fdc
		0x00, 0xbd, 0x8b, 0xdc, 0xa1, 0x3f, 0x74, 0x3e, 0x47, 0x8d,
Packit 549fdc
		    0x00, 0x0a,
Packit 549fdc
		0x47, 0x42, 0xdf, 0x76,
Packit 549fdc
		0xbd, 0x82, 0x11, 0x00, 0xbd, 0x8b, 0xdc, 0xa1, 0x3f, 0x74,
Packit 549fdc
		    0x3e, 0x47,
Packit 549fdc
		0x8d, 0x00, 0x0a, 0x47,
Packit 549fdc
		0x42, 0xdf, 0x76, 0xbd, 0x30, 0x09, 0x06, 0x05, 0x2b, 0x0e,
Packit 549fdc
		    0x03, 0x02,
Packit 549fdc
		0x1d, 0x05, 0x00, 0x03,
Packit 549fdc
		0x82, 0x01, 0x01, 0x00, 0xa7, 0xb0, 0x66, 0x75, 0x14, 0x7e,
Packit 549fdc
		    0x7d, 0xb5,
Packit 549fdc
		0x31, 0xec, 0xb2, 0xeb,
Packit 549fdc
		0x90, 0x80, 0x95, 0x25, 0x59, 0x0f, 0xe4, 0x15, 0x86, 0x2d,
Packit 549fdc
		    0x9d, 0xd7,
Packit 549fdc
		0x35, 0xe9, 0x22, 0x74,
Packit 549fdc
		0xe7, 0x85, 0x36, 0x19, 0x4f, 0x27, 0x5c, 0x17, 0x63, 0x7b,
Packit 549fdc
		    0x2a, 0xfe,
Packit 549fdc
		0x59, 0xe9, 0x76, 0x77,
Packit 549fdc
		0xd0, 0xc9, 0x40, 0x78, 0x7c, 0x31, 0x62, 0x1e, 0x87, 0x1b,
Packit 549fdc
		    0xc1, 0x19,
Packit 549fdc
		0xef, 0x6f, 0x15, 0xe6,
Packit 549fdc
		0xce, 0x74, 0x84, 0x6d, 0xd6, 0x3b, 0x57, 0xd9, 0xa9, 0x13,
Packit 549fdc
		    0xf6, 0x7d,
Packit 549fdc
		0x84, 0xe7, 0x8f, 0xc6,
Packit 549fdc
		0x01, 0x5f, 0xcf, 0xc4, 0x95, 0xc9, 0xde, 0x97, 0x17, 0x43,
Packit 549fdc
		    0x12, 0x70,
Packit 549fdc
		0x27, 0xf9, 0xc4, 0xd7,
Packit 549fdc
		0xe1, 0x05, 0xbb, 0x63, 0x87, 0x5f, 0xdc, 0x20, 0xbd, 0xd1,
Packit 549fdc
		    0xde, 0xd6,
Packit 549fdc
		0x2d, 0x9f, 0x3f, 0x5d,
Packit 549fdc
		0x0a, 0x27, 0x40, 0x11, 0x5f, 0x5d, 0x54, 0xa7, 0x28, 0xf9,
Packit 549fdc
		    0x03, 0x2e,
Packit 549fdc
		0x84, 0x8d, 0x48, 0x60,
Packit 549fdc
		0xa1, 0x71, 0xa3, 0x46, 0x69, 0xdb, 0x88, 0x7b, 0xc1, 0xb6,
Packit 549fdc
		    0x08, 0x2d,
Packit 549fdc
		0xdf, 0x25, 0x9d, 0x32,
Packit 549fdc
		0x76, 0x49, 0x0b, 0xba, 0xab, 0xdd, 0xc3, 0x00, 0x76, 0x8a,
Packit 549fdc
		    0x94, 0xd2,
Packit 549fdc
		0x25, 0x43, 0xf0, 0xa9,
Packit 549fdc
		0x98, 0x65, 0x94, 0xc7, 0xdd, 0x7c, 0xd4, 0xe2, 0xe8, 0x33,
Packit 549fdc
		    0xe2, 0x9a,
Packit 549fdc
		0xe9, 0x75, 0xf0, 0x0f,
Packit 549fdc
		0x61, 0x86, 0xee, 0x0e, 0xf7, 0x39, 0x6b, 0x30, 0x63, 0xe5,
Packit 549fdc
		    0x46, 0xd4,
Packit 549fdc
		0x1c, 0x83, 0xa1, 0x28,
Packit 549fdc
		0x79, 0x76, 0x81, 0x48, 0x38, 0x72, 0xbc, 0x3f, 0x25, 0x53,
Packit 549fdc
		    0x31, 0xaa,
Packit 549fdc
		0x02, 0xd1, 0x9b, 0x03,
Packit 549fdc
		0xa2, 0x5c, 0x94, 0x21, 0xb3, 0x8e, 0xdf, 0x2a, 0xa5, 0x4c,
Packit 549fdc
		    0x65, 0xa2,
Packit 549fdc
		0xf9, 0xac, 0x38, 0x7a,
Packit 549fdc
		0xf9, 0x45, 0xb3, 0xd5, 0xda, 0xe5, 0xb9, 0x56, 0x9e, 0x47,
Packit 549fdc
		    0xd5, 0x06,
Packit 549fdc
		0xe6, 0xca, 0xd7, 0x6e,
Packit 549fdc
		0x06, 0xdb, 0x6e, 0xa7, 0x7b, 0x4b, 0x13, 0x40, 0x3c, 0x12,
Packit 549fdc
		    0x76, 0x99,
Packit 549fdc
		0x65, 0xb4, 0x54, 0xa1,
Packit 549fdc
		0xd8, 0x21, 0x5c, 0x27
Packit 549fdc
	};
Packit 549fdc
Packit 549fdc
	gnutls_datum_t derCert = { der, sizeof(der) };
Packit 549fdc
Packit 549fdc
	gnutls_x509_crt_t cert;
Packit 549fdc
Packit 549fdc
	int result;
Packit 549fdc
	unsigned char expectedId[] =
Packit 549fdc
	    { 0xbd, 0x8b, 0xdc, 0xa1, 0x3f, 0x74, 0x3e, 0x47, 0x8d, 0x00,
Packit 549fdc
0x0a, 0x47,
Packit 549fdc
		0x42, 0xdf, 0x76, 0xbd
Packit 549fdc
	};
Packit 549fdc
Packit 549fdc
	char buf[17];
Packit 549fdc
	size_t buf_size;
Packit 549fdc
Packit 549fdc
	ret = global_init();
Packit 549fdc
	if (ret < 0)
Packit 549fdc
		fail("init %d\n", ret);
Packit 549fdc
Packit 549fdc
	ret = gnutls_x509_crt_init(&cert);
Packit 549fdc
	if (ret < 0)
Packit 549fdc
		fail("crt_init %d\n", ret);
Packit 549fdc
Packit 549fdc
	ret = gnutls_x509_crt_import(cert, &derCert, GNUTLS_X509_FMT_DER);
Packit 549fdc
	if (ret < 0)
Packit 549fdc
		fail("crt_import %d\n", ret);
Packit 549fdc
Packit 549fdc
	buf_size = 15;
Packit 549fdc
	result =
Packit 549fdc
	    gnutls_x509_crt_get_issuer_unique_id(cert, buf, &buf_size);
Packit 549fdc
	if (result != GNUTLS_E_SHORT_MEMORY_BUFFER)
Packit 549fdc
		fail("get_issuer_unique_id short error %d\n", result);
Packit 549fdc
	if (buf_size != 16)
Packit 549fdc
		fail("get_issuer_unique_id buf size %d\n", (int)buf_size);
Packit 549fdc
Packit 549fdc
	buf_size = 16;
Packit 549fdc
	result =
Packit 549fdc
	    gnutls_x509_crt_get_issuer_unique_id(cert, buf, &buf_size);
Packit 549fdc
	if (result < 0)
Packit 549fdc
		fail("get_issuer_unique_id %d\n", result);
Packit 549fdc
	if (memcmp(buf, expectedId, buf_size) != 0)
Packit 549fdc
		fail("expected id mismatch for issuer\n");
Packit 549fdc
Packit 549fdc
	buf_size = 15;
Packit 549fdc
	result =
Packit 549fdc
	    gnutls_x509_crt_get_subject_unique_id(cert, buf, &buf_size);
Packit 549fdc
	if (result != GNUTLS_E_SHORT_MEMORY_BUFFER)
Packit 549fdc
		fail("get_subject_unique_id short error %d\n", result);
Packit 549fdc
	if (buf_size != 16)
Packit 549fdc
		fail("get_subject_unique_id buf size %d\n", (int)buf_size);
Packit 549fdc
Packit 549fdc
	buf_size = 16;
Packit 549fdc
	result =
Packit 549fdc
	    gnutls_x509_crt_get_subject_unique_id(cert, buf, &buf_size);
Packit 549fdc
	if (result < 0)
Packit 549fdc
		fail("get_subject_unique_id %d\n", result);
Packit 549fdc
	if (memcmp(buf, expectedId, buf_size) != 0)
Packit 549fdc
		fail("expected id mismatch for subject\n");
Packit 549fdc
Packit 549fdc
	gnutls_x509_crt_deinit(cert);
Packit 549fdc
Packit 549fdc
	gnutls_global_deinit();
Packit 549fdc
}