1e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET/*************************************************************************** 2e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET * _ _ ____ _ 3e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET * Project ___| | | | _ \| | 4e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET * / __| | | | |_) | | 5e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET * | (__| |_| | _ <| |___ 6e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET * \___|\___/|_| \_\_____| 7e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET * 88f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al. 9e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET * 10e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET * This software is licensed as described in the file COPYING, which 11e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET * you should have received as part of this distribution. The terms 128f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo * are also available at https://curl.haxx.se/docs/copyright.html. 13e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET * 14e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET * You may opt to use, copy, modify, merge, publish, distribute and/or sell 15e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET * copies of the Software, and permit persons to whom the Software is 16e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET * furnished to do so, under the terms of the COPYING file. 17e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET * 18e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY 19e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET * KIND, either express or implied. 20e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET * 21e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET ***************************************************************************/ 22e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET#include "curlcheck.h" 23e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 24e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET#include "tool_getparam.h" 25e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 26e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET#include <stdio.h> 27e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET#include <stdlib.h> 28e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET#include <string.h> 29e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 30e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET#include "memdebug.h" /* LAST include file */ 31e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 32e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETstatic CURLcode unit_setup(void) 33e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET{ 34e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET return CURLE_OK; 35e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET} 36e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 37e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETstatic void unit_stop(void) 38e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET{ 39e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 40e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET} 41e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 42e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETUNITTEST_START 43e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 44e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET const char *values[] = { 45e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET /* -E parameter */ /* exp. cert name */ /* exp. passphrase */ 46e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET "foo:bar:baz", "foo", "bar:baz", 47e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET "foo\\:bar:baz", "foo:bar", "baz", 48e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET "foo\\\\:bar:baz", "foo\\", "bar:baz", 49e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET "foo:bar\\:baz", "foo", "bar\\:baz", 50e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET "foo:bar\\\\:baz", "foo", "bar\\\\:baz", 51e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET "foo\\bar\\baz", "foo\\bar\\baz", NULL, 52e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET "foo\\\\bar\\\\baz", "foo\\bar\\baz", NULL, 53e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET "foo\\", "foo\\", NULL, 54e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET "foo\\\\", "foo\\", NULL, 55e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET "foo:bar\\", "foo", "bar\\", 56e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET "foo:bar\\\\", "foo", "bar\\\\", 57e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET "foo:bar:", "foo", "bar:", 58e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET "foo\\::bar\\:", "foo:", "bar\\:", 59e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET#ifdef WIN32 60e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET "c:\\foo:bar:baz", "c:\\foo", "bar:baz", 61e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET "c:\\foo\\:bar:baz", "c:\\foo:bar", "baz", 62e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET "c:\\foo\\\\:bar:baz", "c:\\foo\\", "bar:baz", 63e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET "c:\\foo:bar\\:baz", "c:\\foo", "bar\\:baz", 64e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET "c:\\foo:bar\\\\:baz", "c:\\foo", "bar\\\\:baz", 65e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET "c:\\foo\\bar\\baz", "c:\\foo\\bar\\baz", NULL, 66e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET "c:\\foo\\\\bar\\\\baz", "c:\\foo\\bar\\baz", NULL, 67e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET "c:\\foo\\", "c:\\foo\\", NULL, 68e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET "c:\\foo\\\\", "c:\\foo\\", NULL, 69e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET "c:\\foo:bar\\", "c:\\foo", "bar\\", 70e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET "c:\\foo:bar\\\\", "c:\\foo", "bar\\\\", 71e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET "c:\\foo:bar:", "c:\\foo", "bar:", 72e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET "c:\\foo\\::bar\\:", "c:\\foo:", "bar\\:", 73e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET#endif 74e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET NULL, NULL, NULL, 75e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET }; 76e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET const char **p; 77e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET char *certname, *passphrase; 78e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET for(p = values; *p; p += 3) { 79e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET parse_cert_parameter(p[0], &certname, &passphrase); 80e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if(p[1]) { 81e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if(certname) { 82e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if(strcmp(p[1], certname)) { 83e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET printf("expected certname '%s' but got '%s' " 84e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET "for -E param '%s'\n", p[1], certname, p[0]); 85e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET fail("assertion failure"); 86e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET } 878f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo } 888f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo else { 89e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET printf("expected certname '%s' but got NULL " 90e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET "for -E param '%s'\n", p[1], p[0]); 91e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET fail("assertion failure"); 92e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET } 938f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo } 948f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo else { 95e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if(certname) { 96e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET printf("expected certname NULL but got '%s' " 97e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET "for -E param '%s'\n", certname, p[0]); 98e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET fail("assertion failure"); 99e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET } 100e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET } 101e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if(p[2]) { 102e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if(passphrase) { 103e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if(strcmp(p[2], passphrase)) { 104e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET printf("expected passphrase '%s' but got '%s'" 105e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET "for -E param '%s'\n", p[2], passphrase, p[0]); 106e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET fail("assertion failure"); 107e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET } 1088f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo } 1098f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo else { 110e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET printf("expected passphrase '%s' but got NULL " 111e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET "for -E param '%s'\n", p[2], p[0]); 112e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET fail("assertion failure"); 113e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET } 1148f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo } 1158f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo else { 116e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if(passphrase) { 117e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET printf("expected passphrase NULL but got '%s' " 118e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET "for -E param '%s'\n", passphrase, p[0]); 119e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET fail("assertion failure"); 120e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET } 121e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET } 122e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if(certname) free(certname); 123e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET if(passphrase) free(passphrase); 124e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET } 125e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET 126e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETUNITTEST_STOP 127