Blame tests/pcert-list.c

Packit aea12f
/*
Packit aea12f
 * Copyright (C) 2015 Red Hat, Inc.
Packit aea12f
 *
Packit aea12f
 * Author: Nikos Mavrogiannopoulos
Packit aea12f
 *
Packit aea12f
 * This file is part of GnuTLS.
Packit aea12f
 *
Packit aea12f
 * GnuTLS is free software; you can redistribute it and/or modify it
Packit aea12f
 * under the terms of the GNU General Public License as published by
Packit aea12f
 * the Free Software Foundation; either version 3 of the License, or
Packit aea12f
 * (at your option) any later version.
Packit aea12f
 *
Packit aea12f
 * GnuTLS is distributed in the hope that it will be useful, but
Packit aea12f
 * WITHOUT ANY WARRANTY; without even the implied warranty of
Packit aea12f
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit aea12f
 * General Public License for more details.
Packit aea12f
 *
Packit aea12f
 * You should have received a copy of the GNU General Public License
Packit aea12f
 * along with GnuTLS; if not, write to the Free Software Foundation,
Packit aea12f
 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
Packit aea12f
 */
Packit aea12f
Packit aea12f
#ifdef HAVE_CONFIG_H
Packit aea12f
#include <config.h>
Packit aea12f
#endif
Packit aea12f
Packit aea12f
#include <stdio.h>
Packit aea12f
#include <stdlib.h>
Packit aea12f
#include <string.h>
Packit aea12f
#include <errno.h>
Packit aea12f
#include <gnutls/gnutls.h>
Packit aea12f
#include <gnutls/abstract.h>
Packit aea12f
#include <gnutls/x509.h>
Packit aea12f
#include "utils.h"
Packit aea12f
Packit aea12f
/* This tests functions related to pcert-lists
Packit aea12f
 */
Packit aea12f
Packit aea12f
#define CERT0 \
Packit aea12f
"-----BEGIN CERTIFICATE-----\n" \
Packit aea12f
"MIIEITCCAomgAwIBAgIMVsXM+TCHHodT4TxYMA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" \
Packit aea12f
"BgNVBAMTBENBLTIwIBcNMTYwMjE4MTM1NDAxWhgPOTk5OTEyMzEyMzU5NTlaMBMx\n" \
Packit aea12f
"ETAPBgNVBAMTCHNlcnZlci0zMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKC\n" \
Packit aea12f
"AYEAs6z83Jg9XjIuBb87zm6uuBjGG+45IpSw6gRgU/1izgBUofefrkdvjhpneBYU\n" \
Packit aea12f
"7PySNxTcyKUe1ZijKAYwck5jE76Y/xKNdMffgYqXOusCij7xutssdtvYw7yJjUHv\n" \
Packit aea12f
"43+zqbydONRNebO8qw1/BGXzKCsAE83iYumxJxSkwTsq04Kp9vrfW6zaTpa3VGq5\n" \
Packit aea12f
"wYPBT+neszrT9/E/Bn+QJh66US+EYnl+TlI5XTp4J0XqGP8PB1OYG/WPPjdRgv7j\n" \
Packit aea12f
"C/dSsEaLmV2YdQWjPRqZ+hxQbRJbLaJ9b7czBSdK1lhefAKshUEV+SGQI2MzEVGW\n" \
Packit aea12f
"lP4tLpIhiy33fNWpnkhbxxsa/NnIS2Vb8JvQidKdgQLsJL8hRJ/it41B4JGiaBnM\n" \
Packit aea12f
"uQmIwr+DFbVs2ibm2VlV1oNB1DrFOAYNURSIUJM0th+Wj4vI9hnwIVeUY/u3Dk5V\n" \
Packit aea12f
"bhks+JfbPLmbJ7Tx9JiBCes7isuxNCtWrWRDUQj71IqCc2+iV86Q+gw3rcpLeLYN\n" \
Packit aea12f
"yv3PAgMBAAGjdzB1MAwGA1UdEwEB/wQCMAAwFAYDVR0RBA0wC4IJbG9jYWxob3N0\n" \
Packit aea12f
"MA8GA1UdDwEB/wQFAwMHoAAwHQYDVR0OBBYEFEnsKuMM/IbHLD1TnAK78YwFx0VF\n" \
Packit aea12f
"MB8GA1UdIwQYMBaAFFGRr1BCIq0AHmB59tUBsghMjvz/MA0GCSqGSIb3DQEBCwUA\n" \
Packit aea12f
"A4IBgQB0i38qq4/os7MIhUFnBFD/eduk5B+jaGvPTM8lsZJ/17BbiMBc5dyxjMVY\n" \
Packit aea12f
"WYsm+KI5XEddBEqMYYwjdO/aoJzFLkkDu7E+UnygVZmMdQONuoyeQ/IrLk3l3zGi\n" \
Packit aea12f
"JJlylxFBNkns+a4AnXwSAv/ZiZapjQQUX378IxOpZuqzELAPqCkqp/6LyJApDiVV\n" \
Packit aea12f
"9av7WWySG5Wtp8lNs8o8l8ZxU14++fwo1euH0mQ4AM2DGLAhQSdOqChmROWt4MPd\n" \
Packit aea12f
"7raaO8dl6wMI83OgOHIhZlvlmmZTYqbpPXYm/2lM9ePBU/bkA7Y/X7HFDbTIBH9Y\n" \
Packit aea12f
"rkVZyq3FYPUtYRyqQXa8s730MQBxGmVZkKptCZjLDziZF4sAZGX78EyDeSl3Z3Jg\n" \
Packit aea12f
"I5JGLsdznHlhqEx8hNJnYtINVv1arn2UHO7p3/cB8VXt2UdQP+YJYdVzCvT4WW1E\n" \
Packit aea12f
"PvzTI6JbcwDpOs0MxRIrXrhgEZWylk0W93FO1WErd1+Sn3LZqvrtyXLzYB9wCl1I\n" \
Packit aea12f
"A34kGlE=\n" \
Packit aea12f
"-----END CERTIFICATE-----\n"
Packit aea12f
Packit aea12f
static unsigned char server_cert_pem[] =
Packit aea12f
CERT0
Packit aea12f
"-----BEGIN CERTIFICATE-----\n"
Packit aea12f
"MIIEFDCCAnygAwIBAgIBAjANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0x\n"
Packit aea12f
"MCAXDTE2MDIxODEzNTQwMVoYDzk5OTkxMjMxMjM1OTU5WjAPMQ0wCwYDVQQDEwRD\n"
Packit aea12f
"QS0yMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAu1/IharA+97QfzDj\n"
Packit aea12f
"UXEBl9TAFqHkN9B5erj1yhMlwPAakreStR8VvuCx46TA3gP7sbUYU811T+2D5/GU\n"
Packit aea12f
"u7YuMWsFeSmGWvbxa/tKTpXoEM0bNV+rIbxAcfgtxbARZDocv8gxfG/70vc2dSDh\n"
Packit aea12f
"KgZCoMQyO6qGLRdsoPAf+De7YD8sKS7Q3d3Xnfyv4AVnDkbAVFsZhu4lQFuWXyfG\n"
Packit aea12f
"Sl95TT94wLDLdf/Gf/F0nNsv6+D6yb15afhJKdqo6PH19gsyE0U3zj6c/7abha2W\n"
Packit aea12f
"fvVe6hVbaW1HLDZdHZnjlJHamNFdrOHI5Xi+SJO7/3MWvdTzdMVFBDfS5o7TvYyS\n"
Packit aea12f
"pu6iTmVeJvJ1OpXV7Lw1M2dSTW9RJLzUF3fXYOsuh32qMel9IzhnVh8Veyl0I0WL\n"
Packit aea12f
"hThmkF73mGWcVq4lMPXwEnwYJtRLeH5HWvG3rgmb7m827XMNnqKE0NOkPH63OUqJ\n"
Packit aea12f
"0h4b6PBb6wiOgnsC3yZIf0KgB0gToySvmD6MyJsmbN9rQit1AgMBAAGjeTB3MA8G\n"
Packit aea12f
"A1UdEwEB/wQFMAMBAf8wEwYDVR0lBAwwCgYIKwYBBQUHAwkwDwYDVR0PAQH/BAUD\n"
Packit aea12f
"AwcEADAdBgNVHQ4EFgQUUZGvUEIirQAeYHn21QGyCEyO/P8wHwYDVR0jBBgwFoAU\n"
Packit aea12f
"v9x1k1GrVS0yXKvMzD7k/zInm9gwDQYJKoZIhvcNAQELBQADggGBAIwUNzAo7Efm\n"
Packit aea12f
"X8dVGz6OEsfZ/RPIeYxZ5cmqWwcZ4oLBv55xGJNG+nIcgLMA2L6ybtFiK2nKtqy4\n"
Packit aea12f
"hMv/P6qvjX5vVQGVgLclvMkDkmXWVdqkTYDX7cSe/Bv6qIS2KBaVo87r2DIWN8Zu\n"
Packit aea12f
"J3w0U3RcD6ilXVmqvARLeKWBPrCep0DJvg/BEAFSjCgHImrpZdzm6NuUr1eYCfgN\n"
Packit aea12f
"HPwUj5Ivyy9ioPRXGzzHQH6T1p/xIRbuhqTGRUin3MqGQlFseBJ2qXPf6uQmCaWZ\n"
Packit aea12f
"tFp4oWLJThqVmlvHViPDy235roYSKkJXH4qxjbhuv0pgUZOzmSsG7YA/oYNGDm6I\n"
Packit aea12f
"bEvids1r45PjYDHctB4QLhXNY3SJVgMog1KuVCK6JQL8F8XP5Sup1qW4ed/WvXwe\n"
Packit aea12f
"PBTOWbE/ENnxF2/nQLwnr80cgVx8rAE5sxubNNQVHu/6NonPzGUhTHXmGleuXPbb\n"
Packit aea12f
"Mjv4x9s3QftWUVJb7b8GUt5bMAthqo7Y47Jed1kKIt2PAm0SNBMYrw==\n"
Packit aea12f
"-----END CERTIFICATE-----\n"
Packit aea12f
"-----BEGIN CERTIFICATE-----\n"
Packit aea12f
"MIIEFDCCAnygAwIBAgIBATANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n"
Packit aea12f
"MCAXDTE2MDIxODEzNTQwMVoYDzk5OTkxMjMxMjM1OTU5WjAPMQ0wCwYDVQQDEwRD\n"
Packit aea12f
"QS0xMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA0QG/LnrMV5vsE3G7\n"
Packit aea12f
"mGVYr33PFQ/WojwKg1C8GGH9aaIn+VMuBS2d1/mwtM9axoje1uQzwKp/hPT+N3Z3\n"
Packit aea12f
"qmFWeX8somDwowNDWN3skST4ob/M4aSlfP6OhNeIfBNvPTz3GtsbOtN5TkOX7Nf2\n"
Packit aea12f
"+mfFm09xMHQ3z4yyGNmKG/oxGKY2WDe93hp0rlIZ6ihMPcsCHwWLfja3SAT4AcXs\n"
Packit aea12f
"TFrTxEnaTYuVxcRcoW7lEDtcCyGbPfszo/rEQfJxwxRF46Yoz6rrCSkXOzLhQa4v\n"
Packit aea12f
"PPsZJ6ltNqkCtSrnhcCl3SC9JqdI4e7lGsnDylq4evi8RtOYknVOqDwv0q/9DI2+\n"
Packit aea12f
"rhFUy4I0Ah9H2T7dC01KIOjGiHyThCgkt2Nee/AXFflpN2Ws7/SGALdx6Vy3OkVo\n"
Packit aea12f
"NkHYxlKKn/06Yp8XlNPR64EqxeJqPW9Pf742EJUCOeavu5wPWJtLQr03JyKWoeZf\n"
Packit aea12f
"IYT/HwZUJveqEBU1EKeZRSvrRwHnmzQJuxyUhj/2C92QF5edAgMBAAGjeTB3MA8G\n"
Packit aea12f
"A1UdEwEB/wQFMAMBAf8wEwYDVR0lBAwwCgYIKwYBBQUHAwkwDwYDVR0PAQH/BAUD\n"
Packit aea12f
"AwcEADAdBgNVHQ4EFgQUv9x1k1GrVS0yXKvMzD7k/zInm9gwHwYDVR0jBBgwFoAU\n"
Packit aea12f
"2iUEUyXy7fPzZtc8ktanTiDzjuUwDQYJKoZIhvcNAQELBQADggGBAC9X5og786Il\n"
Packit aea12f
"CUKj4FpZrqgfN+Cwf1EebW1tX1iKYASGo8t7JS0Btt3ycVpx04JSJy5WM9cQNFU0\n"
Packit aea12f
"5vimaG0qAsWhHXljhmM0mr4ruW1Jw6KAuqw0V/JJ0oYRZaYnvi6UsoJJjq8YcatW\n"
Packit aea12f
"5ixtKr928933kYD71sMZBN7Um7ictDq0M2oaW4k0/Yt4Uqb9fv20E4EHKEpETMUR\n"
Packit aea12f
"FviTIjONdVsAVj4lxuS3u1Nt7B5ayYCkgFabME28ud6EazelwZWZwBRGiuPr6634\n"
Packit aea12f
"f8lZtnscRVU5oQb6DjkyD/SM+1ue6/wpNapoH7BimnvCcRmLvsG34vlyt7QC0BRO\n"
Packit aea12f
"cRmEPZCq8hIUIuD0x836FRNUSjjMVi2Dj+QjeNolpKgUjRF/h2yKmDRB2A7WAV5g\n"
Packit aea12f
"It7RRjMnkm3pvKj2d7/qb5OaccO4uoAq333PRAX0RLYT5yosFGq+RN8+WCnzuGsB\n"
Packit aea12f
"hCe33/7HCC6mO0/vsrQuRvECvAasznN9mF3t+ZXMvcsqTcOq4Iag1A==\n"
Packit aea12f
"-----END CERTIFICATE-----\n"
Packit aea12f
"-----BEGIN CERTIFICATE-----\n"
Packit aea12f
"MIID8zCCAlugAwIBAgIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n"
Packit aea12f
"MCAXDTE2MDIxODEzNTQwMFoYDzk5OTkxMjMxMjM1OTU5WjAPMQ0wCwYDVQQDEwRD\n"
Packit aea12f
"QS0wMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA0MYBHVUjwlQH7Mvn\n"
Packit aea12f
"4viHyEONr+7M0+fLntPITQHihE8gxU3LpqAUpl7felAA4k0sJTaXvnZA+E1DCcIq\n"
Packit aea12f
"zksAhK3Qr8zZeCKNM41U1klcCh2+3IoGjg+CcQisb8gtiiXybH3qXYFgi3ww2YFG\n"
Packit aea12f
"cIjJAciZj8qLfwMhMcBPMx4IDHR7gdWH9V0xUZZiBkk7x3PBIWCr2FKD0877yR9t\n"
Packit aea12f
"wjlQ4Fbw5NW9j7WaUgeY2LV7iTtBH0bZ7D/04KsYdct6lKhUkzSUBg/bAUWCFp1j\n"
Packit aea12f
"ouFhzyqMf3jFDrcejxPKlRk15e9SkQYD/7dTpudXwbL9ugZfoP1xDRgslEyfyU/Q\n"
Packit aea12f
"DEyG5mlXjVBRiGvL+dfxRNw2E5xLpESt2rlMiBhe1cv8+XL5D6z/WBwDfBNUzoQR\n"
Packit aea12f
"X15YHK2NgNNHQ8u8GLtUbp3ZXaeKgj8fdR3UoRTqWgpy2vjVM3vN1xXFVTo13MJ8\n"
Packit aea12f
"isLXH/QNUR4tnOytDp1HyK2ybHkfXB1a0RMBwM5XDVD2LhPFAgMBAAGjWDBWMA8G\n"
Packit aea12f
"A1UdEwEB/wQFMAMBAf8wEwYDVR0lBAwwCgYIKwYBBQUHAwkwDwYDVR0PAQH/BAUD\n"
Packit aea12f
"AwcGADAdBgNVHQ4EFgQU2iUEUyXy7fPzZtc8ktanTiDzjuUwDQYJKoZIhvcNAQEL\n"
Packit aea12f
"BQADggGBAJrJujtXifCeySYWbnJlraec63Zgqfv4SZIEdLt5GFLdpjk2WCxhFrN3\n"
Packit aea12f
"n6JZgI2aUWin2OL1VA1hfddAPUSHOCV8nP/Vu1f/BEaeQjEVS2AOF7T+eQSTNQtN\n"
Packit aea12f
"MkTTi0UKKXZjIIXiW4YXDs2b22JIOXkL9rFyrvN4vvbIp/jwLWx5UTHFtsktMkai\n"
Packit aea12f
"MteJBobd69ra7kdX43EkUKrgSDNpMQn10y3w4ziPDsLZ9sWaRxESbXWqDn4A7J9t\n"
Packit aea12f
"prfxut+s/3rsZgpt4s2FsswymfuW8DhzH1EjfV1Tb32blpgz/40sIRbU158Wh1UH\n"
Packit aea12f
"/DGQ6RVX0RcRt7ce7QCYTROD/yHYPVucqLfRpVNJ3oujGYaMgnSSuxEOsfwx5u+P\n"
Packit aea12f
"8USIxyQNR9cX/gQswzs3Ouj1rXBnjiSS1YXWZXvqHsUamJ8O7qpnqkL2Ti64O0HA\n"
Packit aea12f
"wdTtAcDO0BTHvanKZojLZm8nStvTvFpSVh7z+8Fu0A5zAcHsDj4vLABsdPDsXUTr\n"
Packit aea12f
"kb2G3Yy/UA==\n"
Packit aea12f
"-----END CERTIFICATE-----\n";
Packit aea12f
Packit aea12f
const gnutls_datum_t server_cert = { server_cert_pem,
Packit aea12f
	sizeof(server_cert_pem)
Packit aea12f
};
Packit aea12f
Packit aea12f
static unsigned char unsorted_server_cert_pem[] =
Packit aea12f
CERT0
Packit aea12f
"-----BEGIN CERTIFICATE-----\n"
Packit aea12f
"MIIEFDCCAnygAwIBAgIBATANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n"
Packit aea12f
"MCAXDTE2MDIxODEzNTQwMVoYDzk5OTkxMjMxMjM1OTU5WjAPMQ0wCwYDVQQDEwRD\n"
Packit aea12f
"QS0xMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA0QG/LnrMV5vsE3G7\n"
Packit aea12f
"mGVYr33PFQ/WojwKg1C8GGH9aaIn+VMuBS2d1/mwtM9axoje1uQzwKp/hPT+N3Z3\n"
Packit aea12f
"qmFWeX8somDwowNDWN3skST4ob/M4aSlfP6OhNeIfBNvPTz3GtsbOtN5TkOX7Nf2\n"
Packit aea12f
"+mfFm09xMHQ3z4yyGNmKG/oxGKY2WDe93hp0rlIZ6ihMPcsCHwWLfja3SAT4AcXs\n"
Packit aea12f
"TFrTxEnaTYuVxcRcoW7lEDtcCyGbPfszo/rEQfJxwxRF46Yoz6rrCSkXOzLhQa4v\n"
Packit aea12f
"PPsZJ6ltNqkCtSrnhcCl3SC9JqdI4e7lGsnDylq4evi8RtOYknVOqDwv0q/9DI2+\n"
Packit aea12f
"rhFUy4I0Ah9H2T7dC01KIOjGiHyThCgkt2Nee/AXFflpN2Ws7/SGALdx6Vy3OkVo\n"
Packit aea12f
"NkHYxlKKn/06Yp8XlNPR64EqxeJqPW9Pf742EJUCOeavu5wPWJtLQr03JyKWoeZf\n"
Packit aea12f
"IYT/HwZUJveqEBU1EKeZRSvrRwHnmzQJuxyUhj/2C92QF5edAgMBAAGjeTB3MA8G\n"
Packit aea12f
"A1UdEwEB/wQFMAMBAf8wEwYDVR0lBAwwCgYIKwYBBQUHAwkwDwYDVR0PAQH/BAUD\n"
Packit aea12f
"AwcEADAdBgNVHQ4EFgQUv9x1k1GrVS0yXKvMzD7k/zInm9gwHwYDVR0jBBgwFoAU\n"
Packit aea12f
"2iUEUyXy7fPzZtc8ktanTiDzjuUwDQYJKoZIhvcNAQELBQADggGBAC9X5og786Il\n"
Packit aea12f
"CUKj4FpZrqgfN+Cwf1EebW1tX1iKYASGo8t7JS0Btt3ycVpx04JSJy5WM9cQNFU0\n"
Packit aea12f
"5vimaG0qAsWhHXljhmM0mr4ruW1Jw6KAuqw0V/JJ0oYRZaYnvi6UsoJJjq8YcatW\n"
Packit aea12f
"5ixtKr928933kYD71sMZBN7Um7ictDq0M2oaW4k0/Yt4Uqb9fv20E4EHKEpETMUR\n"
Packit aea12f
"FviTIjONdVsAVj4lxuS3u1Nt7B5ayYCkgFabME28ud6EazelwZWZwBRGiuPr6634\n"
Packit aea12f
"f8lZtnscRVU5oQb6DjkyD/SM+1ue6/wpNapoH7BimnvCcRmLvsG34vlyt7QC0BRO\n"
Packit aea12f
"cRmEPZCq8hIUIuD0x836FRNUSjjMVi2Dj+QjeNolpKgUjRF/h2yKmDRB2A7WAV5g\n"
Packit aea12f
"It7RRjMnkm3pvKj2d7/qb5OaccO4uoAq333PRAX0RLYT5yosFGq+RN8+WCnzuGsB\n"
Packit aea12f
"hCe33/7HCC6mO0/vsrQuRvECvAasznN9mF3t+ZXMvcsqTcOq4Iag1A==\n"
Packit aea12f
"-----END CERTIFICATE-----\n"
Packit aea12f
"-----BEGIN CERTIFICATE-----\n"
Packit aea12f
"MIID8zCCAlugAwIBAgIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n"
Packit aea12f
"MCAXDTE2MDIxODEzNTQwMFoYDzk5OTkxMjMxMjM1OTU5WjAPMQ0wCwYDVQQDEwRD\n"
Packit aea12f
"QS0wMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA0MYBHVUjwlQH7Mvn\n"
Packit aea12f
"4viHyEONr+7M0+fLntPITQHihE8gxU3LpqAUpl7felAA4k0sJTaXvnZA+E1DCcIq\n"
Packit aea12f
"zksAhK3Qr8zZeCKNM41U1klcCh2+3IoGjg+CcQisb8gtiiXybH3qXYFgi3ww2YFG\n"
Packit aea12f
"cIjJAciZj8qLfwMhMcBPMx4IDHR7gdWH9V0xUZZiBkk7x3PBIWCr2FKD0877yR9t\n"
Packit aea12f
"wjlQ4Fbw5NW9j7WaUgeY2LV7iTtBH0bZ7D/04KsYdct6lKhUkzSUBg/bAUWCFp1j\n"
Packit aea12f
"ouFhzyqMf3jFDrcejxPKlRk15e9SkQYD/7dTpudXwbL9ugZfoP1xDRgslEyfyU/Q\n"
Packit aea12f
"DEyG5mlXjVBRiGvL+dfxRNw2E5xLpESt2rlMiBhe1cv8+XL5D6z/WBwDfBNUzoQR\n"
Packit aea12f
"X15YHK2NgNNHQ8u8GLtUbp3ZXaeKgj8fdR3UoRTqWgpy2vjVM3vN1xXFVTo13MJ8\n"
Packit aea12f
"isLXH/QNUR4tnOytDp1HyK2ybHkfXB1a0RMBwM5XDVD2LhPFAgMBAAGjWDBWMA8G\n"
Packit aea12f
"A1UdEwEB/wQFMAMBAf8wEwYDVR0lBAwwCgYIKwYBBQUHAwkwDwYDVR0PAQH/BAUD\n"
Packit aea12f
"AwcGADAdBgNVHQ4EFgQU2iUEUyXy7fPzZtc8ktanTiDzjuUwDQYJKoZIhvcNAQEL\n"
Packit aea12f
"BQADggGBAJrJujtXifCeySYWbnJlraec63Zgqfv4SZIEdLt5GFLdpjk2WCxhFrN3\n"
Packit aea12f
"n6JZgI2aUWin2OL1VA1hfddAPUSHOCV8nP/Vu1f/BEaeQjEVS2AOF7T+eQSTNQtN\n"
Packit aea12f
"MkTTi0UKKXZjIIXiW4YXDs2b22JIOXkL9rFyrvN4vvbIp/jwLWx5UTHFtsktMkai\n"
Packit aea12f
"MteJBobd69ra7kdX43EkUKrgSDNpMQn10y3w4ziPDsLZ9sWaRxESbXWqDn4A7J9t\n"
Packit aea12f
"prfxut+s/3rsZgpt4s2FsswymfuW8DhzH1EjfV1Tb32blpgz/40sIRbU158Wh1UH\n"
Packit aea12f
"/DGQ6RVX0RcRt7ce7QCYTROD/yHYPVucqLfRpVNJ3oujGYaMgnSSuxEOsfwx5u+P\n"
Packit aea12f
"8USIxyQNR9cX/gQswzs3Ouj1rXBnjiSS1YXWZXvqHsUamJ8O7qpnqkL2Ti64O0HA\n"
Packit aea12f
"wdTtAcDO0BTHvanKZojLZm8nStvTvFpSVh7z+8Fu0A5zAcHsDj4vLABsdPDsXUTr\n"
Packit aea12f
"kb2G3Yy/UA==\n"
Packit aea12f
"-----END CERTIFICATE-----\n"
Packit aea12f
"-----BEGIN CERTIFICATE-----\n"
Packit aea12f
"MIIEFDCCAnygAwIBAgIBAjANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0x\n"
Packit aea12f
"MCAXDTE2MDIxODEzNTQwMVoYDzk5OTkxMjMxMjM1OTU5WjAPMQ0wCwYDVQQDEwRD\n"
Packit aea12f
"QS0yMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAu1/IharA+97QfzDj\n"
Packit aea12f
"UXEBl9TAFqHkN9B5erj1yhMlwPAakreStR8VvuCx46TA3gP7sbUYU811T+2D5/GU\n"
Packit aea12f
"u7YuMWsFeSmGWvbxa/tKTpXoEM0bNV+rIbxAcfgtxbARZDocv8gxfG/70vc2dSDh\n"
Packit aea12f
"KgZCoMQyO6qGLRdsoPAf+De7YD8sKS7Q3d3Xnfyv4AVnDkbAVFsZhu4lQFuWXyfG\n"
Packit aea12f
"Sl95TT94wLDLdf/Gf/F0nNsv6+D6yb15afhJKdqo6PH19gsyE0U3zj6c/7abha2W\n"
Packit aea12f
"fvVe6hVbaW1HLDZdHZnjlJHamNFdrOHI5Xi+SJO7/3MWvdTzdMVFBDfS5o7TvYyS\n"
Packit aea12f
"pu6iTmVeJvJ1OpXV7Lw1M2dSTW9RJLzUF3fXYOsuh32qMel9IzhnVh8Veyl0I0WL\n"
Packit aea12f
"hThmkF73mGWcVq4lMPXwEnwYJtRLeH5HWvG3rgmb7m827XMNnqKE0NOkPH63OUqJ\n"
Packit aea12f
"0h4b6PBb6wiOgnsC3yZIf0KgB0gToySvmD6MyJsmbN9rQit1AgMBAAGjeTB3MA8G\n"
Packit aea12f
"A1UdEwEB/wQFMAMBAf8wEwYDVR0lBAwwCgYIKwYBBQUHAwkwDwYDVR0PAQH/BAUD\n"
Packit aea12f
"AwcEADAdBgNVHQ4EFgQUUZGvUEIirQAeYHn21QGyCEyO/P8wHwYDVR0jBBgwFoAU\n"
Packit aea12f
"v9x1k1GrVS0yXKvMzD7k/zInm9gwDQYJKoZIhvcNAQELBQADggGBAIwUNzAo7Efm\n"
Packit aea12f
"X8dVGz6OEsfZ/RPIeYxZ5cmqWwcZ4oLBv55xGJNG+nIcgLMA2L6ybtFiK2nKtqy4\n"
Packit aea12f
"hMv/P6qvjX5vVQGVgLclvMkDkmXWVdqkTYDX7cSe/Bv6qIS2KBaVo87r2DIWN8Zu\n"
Packit aea12f
"J3w0U3RcD6ilXVmqvARLeKWBPrCep0DJvg/BEAFSjCgHImrpZdzm6NuUr1eYCfgN\n"
Packit aea12f
"HPwUj5Ivyy9ioPRXGzzHQH6T1p/xIRbuhqTGRUin3MqGQlFseBJ2qXPf6uQmCaWZ\n"
Packit aea12f
"tFp4oWLJThqVmlvHViPDy235roYSKkJXH4qxjbhuv0pgUZOzmSsG7YA/oYNGDm6I\n"
Packit aea12f
"bEvids1r45PjYDHctB4QLhXNY3SJVgMog1KuVCK6JQL8F8XP5Sup1qW4ed/WvXwe\n"
Packit aea12f
"PBTOWbE/ENnxF2/nQLwnr80cgVx8rAE5sxubNNQVHu/6NonPzGUhTHXmGleuXPbb\n"
Packit aea12f
"Mjv4x9s3QftWUVJb7b8GUt5bMAthqo7Y47Jed1kKIt2PAm0SNBMYrw==\n"
Packit aea12f
"-----END CERTIFICATE-----\n";
Packit aea12f
Packit aea12f
const gnutls_datum_t unsorted_server_cert = { unsorted_server_cert_pem,
Packit aea12f
	sizeof(unsorted_server_cert_pem)
Packit aea12f
};
Packit aea12f
Packit aea12f
const gnutls_datum_t single_server_cert = { server_cert_pem,
Packit aea12f
	sizeof(CERT0)-1
Packit aea12f
};
Packit aea12f
Packit aea12f
static unsigned char isolated_server_cert_pem[] =
Packit aea12f
CERT0
Packit aea12f
"-----BEGIN CERTIFICATE-----\n"
Packit aea12f
"MIID8zCCAlugAwIBAgIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n"
Packit aea12f
"MCAXDTE2MDIxODEzNTQwMFoYDzk5OTkxMjMxMjM1OTU5WjAPMQ0wCwYDVQQDEwRD\n"
Packit aea12f
"QS0wMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA0MYBHVUjwlQH7Mvn\n"
Packit aea12f
"4viHyEONr+7M0+fLntPITQHihE8gxU3LpqAUpl7felAA4k0sJTaXvnZA+E1DCcIq\n"
Packit aea12f
"zksAhK3Qr8zZeCKNM41U1klcCh2+3IoGjg+CcQisb8gtiiXybH3qXYFgi3ww2YFG\n"
Packit aea12f
"cIjJAciZj8qLfwMhMcBPMx4IDHR7gdWH9V0xUZZiBkk7x3PBIWCr2FKD0877yR9t\n"
Packit aea12f
"wjlQ4Fbw5NW9j7WaUgeY2LV7iTtBH0bZ7D/04KsYdct6lKhUkzSUBg/bAUWCFp1j\n"
Packit aea12f
"ouFhzyqMf3jFDrcejxPKlRk15e9SkQYD/7dTpudXwbL9ugZfoP1xDRgslEyfyU/Q\n"
Packit aea12f
"DEyG5mlXjVBRiGvL+dfxRNw2E5xLpESt2rlMiBhe1cv8+XL5D6z/WBwDfBNUzoQR\n"
Packit aea12f
"X15YHK2NgNNHQ8u8GLtUbp3ZXaeKgj8fdR3UoRTqWgpy2vjVM3vN1xXFVTo13MJ8\n"
Packit aea12f
"isLXH/QNUR4tnOytDp1HyK2ybHkfXB1a0RMBwM5XDVD2LhPFAgMBAAGjWDBWMA8G\n"
Packit aea12f
"A1UdEwEB/wQFMAMBAf8wEwYDVR0lBAwwCgYIKwYBBQUHAwkwDwYDVR0PAQH/BAUD\n"
Packit aea12f
"AwcGADAdBgNVHQ4EFgQU2iUEUyXy7fPzZtc8ktanTiDzjuUwDQYJKoZIhvcNAQEL\n"
Packit aea12f
"BQADggGBAJrJujtXifCeySYWbnJlraec63Zgqfv4SZIEdLt5GFLdpjk2WCxhFrN3\n"
Packit aea12f
"n6JZgI2aUWin2OL1VA1hfddAPUSHOCV8nP/Vu1f/BEaeQjEVS2AOF7T+eQSTNQtN\n"
Packit aea12f
"MkTTi0UKKXZjIIXiW4YXDs2b22JIOXkL9rFyrvN4vvbIp/jwLWx5UTHFtsktMkai\n"
Packit aea12f
"MteJBobd69ra7kdX43EkUKrgSDNpMQn10y3w4ziPDsLZ9sWaRxESbXWqDn4A7J9t\n"
Packit aea12f
"prfxut+s/3rsZgpt4s2FsswymfuW8DhzH1EjfV1Tb32blpgz/40sIRbU158Wh1UH\n"
Packit aea12f
"/DGQ6RVX0RcRt7ce7QCYTROD/yHYPVucqLfRpVNJ3oujGYaMgnSSuxEOsfwx5u+P\n"
Packit aea12f
"8USIxyQNR9cX/gQswzs3Ouj1rXBnjiSS1YXWZXvqHsUamJ8O7qpnqkL2Ti64O0HA\n"
Packit aea12f
"wdTtAcDO0BTHvanKZojLZm8nStvTvFpSVh7z+8Fu0A5zAcHsDj4vLABsdPDsXUTr\n"
Packit aea12f
"kb2G3Yy/UA==\n"
Packit aea12f
"-----END CERTIFICATE-----\n";
Packit aea12f
Packit aea12f
const gnutls_datum_t isolated_server_cert = { isolated_server_cert_pem,
Packit aea12f
	sizeof(isolated_server_cert_pem)
Packit aea12f
};
Packit aea12f
Packit aea12f
void doit(void)
Packit aea12f
{
Packit aea12f
	gnutls_pcert_st pcert_list[16];
Packit aea12f
	unsigned pcert_list_size, flags, i;
Packit aea12f
	int ret;
Packit aea12f
Packit aea12f
	flags = GNUTLS_X509_CRT_LIST_IMPORT_FAIL_IF_EXCEED;
Packit aea12f
Packit aea12f
	pcert_list_size = 3;
Packit aea12f
	ret = gnutls_pcert_list_import_x509_raw(pcert_list, &pcert_list_size,
Packit aea12f
			&server_cert, GNUTLS_X509_FMT_PEM, flags);
Packit aea12f
	if (ret != GNUTLS_E_SHORT_MEMORY_BUFFER) {
Packit aea12f
		fail("the GNUTLS_X509_CRT_LIST_IMPORT_FAIL_IF_EXCEED was not considered\n");
Packit aea12f
	}
Packit aea12f
Packit aea12f
	pcert_list_size = 3;
Packit aea12f
	ret = gnutls_pcert_list_import_x509_raw(pcert_list, &pcert_list_size,
Packit aea12f
			&server_cert, GNUTLS_X509_FMT_PEM, 0);
Packit aea12f
	if (ret < 0) {
Packit aea12f
		fail("the normal/smaller import has failed\n");
Packit aea12f
	}
Packit aea12f
Packit aea12f
	for (i=0;i
Packit aea12f
		gnutls_pcert_deinit(&pcert_list[i]);
Packit aea12f
Packit aea12f
Packit aea12f
	pcert_list_size = 16;
Packit aea12f
	ret = gnutls_pcert_list_import_x509_raw(pcert_list, &pcert_list_size,
Packit aea12f
			&server_cert, GNUTLS_X509_FMT_PEM, 0);
Packit aea12f
	if (ret != 0 || pcert_list_size != 4) {
Packit aea12f
		fail("the normal import failed\n");
Packit aea12f
	}
Packit aea12f
Packit aea12f
	for (i=0;i
Packit aea12f
		gnutls_pcert_deinit(&pcert_list[i]);
Packit aea12f
Packit aea12f
Packit aea12f
	pcert_list_size = 16;
Packit aea12f
	flags = GNUTLS_X509_CRT_LIST_FAIL_IF_UNSORTED;
Packit aea12f
	ret = gnutls_pcert_list_import_x509_raw(pcert_list, &pcert_list_size,
Packit aea12f
			&server_cert, GNUTLS_X509_FMT_PEM, flags);
Packit aea12f
	if (ret != 0 || pcert_list_size != 4) {
Packit aea12f
		fail("the fail if unsorted import failed\n");
Packit aea12f
	}
Packit aea12f
Packit aea12f
	for (i=0;i
Packit aea12f
		gnutls_pcert_deinit(&pcert_list[i]);
Packit aea12f
Packit aea12f
Packit aea12f
	pcert_list_size = 16;
Packit aea12f
	flags = GNUTLS_X509_CRT_LIST_SORT;
Packit aea12f
	ret = gnutls_pcert_list_import_x509_raw(pcert_list, &pcert_list_size,
Packit aea12f
			&server_cert, GNUTLS_X509_FMT_PEM, flags);
Packit aea12f
	if (ret != 0 || pcert_list_size != 4) {
Packit aea12f
		fail("the list sort import failed\n");
Packit aea12f
	}
Packit aea12f
Packit aea12f
	for (i=0;i
Packit aea12f
		gnutls_pcert_deinit(&pcert_list[i]);
Packit aea12f
Packit aea12f
Packit aea12f
	pcert_list_size = 16;
Packit aea12f
	flags = GNUTLS_X509_CRT_LIST_SORT|GNUTLS_X509_CRT_LIST_FAIL_IF_UNSORTED;
Packit aea12f
	ret = gnutls_pcert_list_import_x509_raw(pcert_list, &pcert_list_size,
Packit aea12f
			&server_cert, GNUTLS_X509_FMT_PEM, flags);
Packit aea12f
	if (ret != 0 || pcert_list_size != 4) {
Packit aea12f
		fail("the combined import failed\n");
Packit aea12f
	}
Packit aea12f
Packit aea12f
	for (i=0;i
Packit aea12f
		gnutls_pcert_deinit(&pcert_list[i]);
Packit aea12f
Packit aea12f
	/* try the unsorted list */
Packit aea12f
	pcert_list_size = 16;
Packit aea12f
	flags = GNUTLS_X509_CRT_LIST_SORT|GNUTLS_X509_CRT_LIST_FAIL_IF_UNSORTED;
Packit aea12f
	ret = gnutls_pcert_list_import_x509_raw(pcert_list, &pcert_list_size,
Packit aea12f
			&unsorted_server_cert, GNUTLS_X509_FMT_PEM, flags);
Packit aea12f
	if (ret < 0 || pcert_list_size != 4) {
Packit aea12f
		fail("the combined import failed for the unsorted list (%d): %s\n", pcert_list_size, gnutls_strerror(ret));
Packit aea12f
	}
Packit aea12f
Packit aea12f
	for (i=0;i
Packit aea12f
		gnutls_pcert_deinit(&pcert_list[i]);
Packit aea12f
Packit aea12f
	/* try the single cert list */
Packit aea12f
	pcert_list_size = 16;
Packit aea12f
	flags = GNUTLS_X509_CRT_LIST_SORT|GNUTLS_X509_CRT_LIST_FAIL_IF_UNSORTED;
Packit aea12f
	ret = gnutls_pcert_list_import_x509_raw(pcert_list, &pcert_list_size,
Packit aea12f
			&single_server_cert, GNUTLS_X509_FMT_PEM, flags);
Packit aea12f
	if (ret < 0 || pcert_list_size != 1) {
Packit aea12f
		fail("the combined import failed for the single cert (%d): %s\n", pcert_list_size, gnutls_strerror(ret));
Packit aea12f
	}
Packit aea12f
Packit aea12f
	for (i=0;i
Packit aea12f
		gnutls_pcert_deinit(&pcert_list[i]);
Packit aea12f
Packit aea12f
	/* try the single final cert list */
Packit aea12f
	pcert_list_size = 16;
Packit aea12f
	flags = GNUTLS_X509_CRT_LIST_SORT|GNUTLS_X509_CRT_LIST_FAIL_IF_UNSORTED;
Packit aea12f
	ret = gnutls_pcert_list_import_x509_raw(pcert_list, &pcert_list_size,
Packit aea12f
			&isolated_server_cert, GNUTLS_X509_FMT_PEM, flags);
Packit aea12f
	if (ret < 0 || pcert_list_size != 1) {
Packit aea12f
		fail("the combined import failed for the isolated cert (%d): %s\n", pcert_list_size, gnutls_strerror(ret));
Packit aea12f
	}
Packit aea12f
Packit aea12f
	for (i=0;i
Packit aea12f
		gnutls_pcert_deinit(&pcert_list[i]);
Packit aea12f
Packit aea12f
	success("all ok\n");
Packit aea12f
}