X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=tests%2Fscripts%2Ftest021-certificate;h=7663d0e394ff47a7f732b37a1c0a2cfad17d058b;hb=c8c34cdd43d3603f3b64a56841b4425379c98f45;hp=09c940cc7ec2591f3ee634e808f45dee33eac3a5;hpb=3fbe93c704f5bc9914d8d0ffb3bba0a5ae6eb52b;p=openldap diff --git a/tests/scripts/test021-certificate b/tests/scripts/test021-certificate index 09c940cc7e..7663d0e394 100755 --- a/tests/scripts/test021-certificate +++ b/tests/scripts/test021-certificate @@ -1,44 +1,49 @@ #! /bin/sh # $OpenLDAP$ - -SRCDIR="." -if test $# -ge 1 ; then - SRCDIR=$1; shift -fi - -. $SRCDIR/scripts/args.sh $* +## This work is part of OpenLDAP Software . +## +## Copyright 1998-2011 The OpenLDAP Foundation. +## All rights reserved. +## +## Redistribution and use in source and binary forms, with or without +## modification, are permitted only as authorized by the OpenLDAP +## Public License. +## +## A copy of this license is available in the file LICENSE in the +## top-level directory of the distribution or, alternatively, at +## . echo "running defines.sh" . $SRCDIR/scripts/defines.sh -echo "running defines.sh $SRCDIR $BACKEND" -. $SRCDIR/scripts/defines.sh - -echo "Cleaning up in $DBDIR..." - -rm -f $DBDIR/[!C]* +mkdir -p $TESTDIR $DBDIR1 echo "Running slapadd to build slapd database..." -. $CONFFILTER $BACKEND $MONITORDB < $CONF > $DBCONF -$SLAPADD -f $DBCONF -l $LDIFORDERED +. $CONFFILTER $BACKEND $MONITORDB < $CONF > $CONF1 +#echo $SLAPADD -f $CONF1 -l $LDIFORDERED +$SLAPADD -f $CONF1 -l $LDIFORDERED RC=$? if test $RC != 0 ; then echo "slapadd failed ($RC)!" exit $RC fi -echo "Starting slapd on TCP/IP port $PORT..." -$SLAPD -f $DBCONF -h $MASTERURI -d $LVL $TIMING > $MASTERLOG 2>&1 & +echo "Starting slapd on TCP/IP port $PORT1..." +#valgrind -v --gdb-attach=yes --logfile=info --num-callers=16 --leak-check=yes --leak-resolution=high $SLAPD -f $CONF1 -h $URI1 -d $LVL $TIMING $LOG1 2>&1 & +$SLAPD -f $CONF1 -h $URI1 -d $LVL $TIMING > $LOG1 2>&1 & PID=$! if test $WAIT != 0 ; then echo PID $PID read foo fi +KILLPIDS="$PID" echo "Testing certificate handling..." +sleep 1 + for i in 0 1 2 3 4 5; do - $LDAPSEARCH -s base -b "$MONITOR" -h $LOCALHOST -p $PORT \ + $LDAPSEARCH -s base -b "$MONITOR" -h $LOCALHOST -p $PORT1 \ 'objectclass=*' > /dev/null 2>&1 RC=$? if test $RC = 0 ; then @@ -50,24 +55,24 @@ done if test $RC != 0 ; then echo "ldapsearch failed ($RC)!" - kill -HUP $PID + test $KILLSERVERS != no && kill -HUP $KILLPIDS exit $RC fi echo "Add certificates..." -$LDAPMODIFY -v -D "$MANAGERDN" -h $LOCALHOST -p $PORT -w $PASSWD > \ +$LDAPMODIFY -v -D "$MANAGERDN" -h $LOCALHOST -p $PORT1 -w $PASSWD > \ $TESTOUT 2>&1 << EOMODS version: 1 # LEADING COMMENT AND WHITE SPACE # should use certificationAuthority instead of extensibleObject -dn: o=University of Michigan,c=US +dn: dc=example,dc=com changetype: modify add: objectClass objectClass: extensibleObject - -add: cAcertificate +add: cAcertificate;binary cAcertificate;binary:: MIIDVDCCAr2gAwIBAgIBADANBgkqhkiG9w0BAQQFADB3MQswCQYDVQQGEwJVUzET MBEGA1UECBMKQ2FsaWZvcm5pYTEfMB0GA1UEChMWT3BlbkxEQVAgRXhhbXBsZSwg @@ -88,12 +93,12 @@ cAcertificate;binary:: 90ZZZh5Gbg5ZBxFRhDXN8K/fix3ewRSjASt40dGlEODkE+FsLMt04sYl6kX7RGKg 9a46DkeG+uzZnN/3252uCgh+rjNMFAglueUTERv3EtUB1iXEoU3GyA== -dn: cn=Ursula Hampster,ou=Alumni Association,ou=People,o=University of Michigan,c=US +dn: cn=Ursula Hampster,ou=Alumni Association,ou=People,dc=example,dc=com changetype: modify add: objectClass objectClass: strongAuthenticationUser - -add: userCertificate +add: userCertificate;binary userCertificate;binary:: MIIDazCCAtSgAwIBAgIBAjANBgkqhkiG9w0BAQQFADB3MQswCQYDVQQGEwJVUzET MBEGA1UECBMKQ2FsaWZvcm5pYTEfMB0GA1UEChMWT3BlbkxEQVAgRXhhbXBsZSwg @@ -115,12 +120,12 @@ userCertificate;binary:: Px1Ijnsjh60qVRy9HOsHCungIKlGcnXLKHmKu0y//5jds/HnaJsGcHI5JRG7CBJb W+wrwge3trJ1xHJI8prN -dn: cn=Jennifer Smith,ou=Alumni Association,ou=People,o=University of Michigan,c=US +dn: cn=Jennifer Smith,ou=Alumni Association,ou=People,dc=example,dc=com changetype: modify add: objectClass objectClass: strongAuthenticationUser - -add: userCertificate +add: userCertificate;binary userCertificate;binary:: MIIDcDCCAtmgAwIBAgIBATANBgkqhkiG9w0BAQQFADB3MQswCQYDVQQGEwJVUzET MBEGA1UECBMKQ2FsaWZvcm5pYTEfMB0GA1UEChMWT3BlbkxEQVAgRXhhbXBsZSwg @@ -142,7 +147,8 @@ userCertificate;binary:: T8k50x4C7oE8HwZuEEB4FM7S1Zig3dfeJ8MJgdaLqt5/U9Ip/hZdzG2dsUsIceH/ 5MCKLu9bGJUjsKnGdm/KpaNwaNo= -dn: cn=Jennifer Smith,ou=Alumni Association,ou=People,o=University of Michigan,c=US +dn: cn=Jennifer Smith,ou=Alumni Association,ou=People,dc=example,dc=com +changetype: modify add: userCertificate;binary userCertificate;binary:: MIIDjDCCAvWgAwIBAgIBAzANBgkqhkiG9w0BAQQFADB3MQswCQYDVQQGEwJVUzET @@ -187,63 +193,123 @@ userCertificate;binary:: T8k50x4C7oE8HwZuEEB4FM7S1Zig3dfeJ8MJgdaLqt5/U9Ip/hZdzG2dsUsIceH/ 5MCKLu9bGJUjsKnGdm/KpaNwaNo= +dn: cn=Mark Elliot,ou=Alumni Association,ou=People,dc=example,dc=com +changetype: modify +replace: userCertificate;binary +userCertificate;binary:: + MIIDjDCCAvWgAwIBAgIBAzANBgkqhkiG9w0BAQQFADB3MQswCQYDVQQGEwJVUzET + MBEGA1UECBMKQ2FsaWZvcm5pYTEfMB0GA1UEChMWT3BlbkxEQVAgRXhhbXBsZSwg + THRkLjETMBEGA1UEAxMKRXhhbXBsZSBDQTEdMBsGCSqGSIb3DQEJARYOY2FAZXhh + bXBsZS5jb20wHhcNMDMxMDE3MTYzNTM1WhcNMDQxMDE2MTYzNTM1WjCBnjELMAkG + A1UEBhMCVVMxETAPBgNVBAgTCE1pY2hpZ2FuMR8wHQYDVQQKExZPcGVuTERBUCBF + eGFtcGxlLCBMdGQuMRswGQYDVQQLExJBbHVtbmkgQXNzb2ljYXRpb24xEjAQBgNV + BAMTCUplbiBTbWl0aDEqMCgGCSqGSIb3DQEJARYbamVuQG1haWwuYWx1bW5pLmV4 + YW1wbGUuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDpnXWAL0VkROGO + 1Rg8J3u6F4F7yMqQCbUMsV9rxQisYj45+pmqiHV5urogvT4MGD6eLNFZKBn+0KRn + i++uu7gbartzpmBaHOlzRII9ZdVMFfrT2xYNgAlkne6pb6IZIN9UONuH/httENCD + J5WEpjZ48D1Lrml/HYO/W+SAMkpEqQIDAQABo4H/MIH8MAkGA1UdEwQCMAAwLAYJ + YIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0GA1Ud + DgQWBBTB2saht/od/nis76b9m+pjxfhSPjCBoQYDVR0jBIGZMIGWgBRLbyEaNiTS + kPlDsFNHLX3hwOaYI6F7pHkwdzELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlm + b3JuaWExHzAdBgNVBAoTFk9wZW5MREFQIEV4YW1wbGUsIEx0ZC4xEzARBgNVBAMT + CkV4YW1wbGUgQ0ExHTAbBgkqhkiG9w0BCQEWDmNhQGV4YW1wbGUuY29tggEAMA0G + CSqGSIb3DQEBBAUAA4GBAIoGPc/AS0cNkMRDNoMIzcFdF9lONMduKBiSuFvv+x8n + Cek+LUdXxF59V2NPKh2V5gFh5xbAchyv6FVBnpVtPdB5akCr5tdFQhuBLUXXDk/t + THGpIWt7OAjEmpuMzsz3GUB8Zf9rioHOs1DMw+GpzWdnFITxXhAqEDc3quqPrpxZ +- +delete: userCertificate;binary + EOMODS RC=$? if test $RC != 0 ; then echo "ldapmodify failed ($RC)!" - kill -HUP $PID + test $KILLSERVERS != no && kill -HUP $KILLPIDS exit $RC fi echo 'Using ldapsearch to retrieve (userCertificate;binary=*) ...' echo "# (userCertificate;binary=*)" > $SEARCHOUT -$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT \ +$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 \ '(userCertificate;binary=*)' >> $SEARCHOUT 2>&1 RC=$? if test $RC != 0 ; then echo "ldapsearch failed ($RC)!" - kill -HUP $PID + test $KILLSERVERS != no && kill -HUP $KILLPIDS exit $RC fi echo 'Using ldapsearch to retrieve (cAcertificate=*) ...' echo "# (cAcertificate=*)" >> $SEARCHOUT -$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT \ +$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 \ '(cAcertificate=*)' >> $SEARCHOUT 2>&1 RC=$? if test $RC != 0 ; then echo "ldapsearch failed ($RC)!" - kill -HUP $PID + test $KILLSERVERS != no && kill -HUP $KILLPIDS exit $RC fi SNAI='2$EMAIL=ca@example.com,CN=Example CA,O=Openldap Example\5C, Ltd.,ST=California,C=US' -echo 'Using ldapsearch to retrieve (userCertificate=serialNumberAndIssuer) ...' +echo 'Using ldapsearch to retrieve (userCertificate=serialNumberAndIssuer) [old format] ...' echo "# (userCertificate=$SNAI)" >> $SEARCHOUT -$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT \ +$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 \ "(userCertificate=$SNAI)" >> $SEARCHOUT 2>&1 RC=$? if test $RC != 0 ; then echo "ldapsearch failed ($RC)!" - kill -HUP $PID + test $KILLSERVERS != no && kill -HUP $KILLPIDS exit $RC fi -kill -HUP $PID +SNAI='{ serialNumber 2, issuer "EMAIL=ca@example.com,CN=Example CA,O=Openldap Example\5C, Ltd.,ST=California,C=US" }' -if test "$WITHTLS" = no ; then - echo "Certificate matching not suported without TLS" - LDIF=$CERTIFICATEOUT -else - LDIF=$CERTIFICATETLS -fi +echo 'Using ldapsearch to retrieve (userCertificate=serialNumberAndIssuer) [new format] ...' +echo "# (userCertificate=$SNAI)" >> $SEARCHOUT +$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 \ + "(userCertificate=$SNAI)" >> $SEARCHOUT 2>&1 +RC=$? +if test $RC != 0 ; then + echo "ldapsearch failed ($RC)!" + test $KILLSERVERS != no && kill -HUP $KILLPIDS + exit $RC +fi + +SNAI='3$EMAIL=ca@example.com,CN=Example CA,O=Openldap Example\5C, Ltd.,ST=California,C=US' + +echo 'Using ldapsearch to retrieve (userCertificate:certificateExactMatch:=serialNumberAndIssuer) [old format] ...' +echo "# (userCertificate:certificateExactMatch:=$SNAI)" >> $SEARCHOUT +$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 \ + "(userCertificate:certificateExactMatch:=$SNAI)" >> $SEARCHOUT 2>&1 +RC=$? +if test $RC != 0 ; then + echo "ldapsearch failed ($RC)!" + test $KILLSERVERS != no && kill -HUP $KILLPIDS + exit $RC +fi + +SNAI='{ issuer "EMAIL=ca@example.com,CN=Example CA,O=Openldap Example\5C, Ltd.,ST=California,C=US", serialNumber 3 }' + +echo 'Using ldapsearch to retrieve (userCertificate:certificateExactMatch:=serialNumberAndIssuer) [new format]...' +echo "# (userCertificate:certificateExactMatch:=$SNAI)" >> $SEARCHOUT +$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 \ + "(userCertificate:certificateExactMatch:=$SNAI)" >> $SEARCHOUT 2>&1 +RC=$? +if test $RC != 0 ; then + echo "ldapsearch failed ($RC)!" + test $KILLSERVERS != no && kill -HUP $KILLPIDS + exit $RC +fi + +test $KILLSERVERS != no && kill -HUP $KILLPIDS + +LDIF=$CERTIFICATETLS echo "Filtering ldapsearch results..." -. $LDIFFILTER < $SEARCHOUT > $SEARCHFLT +$LDIFFILTER < $SEARCHOUT > $SEARCHFLT echo "Filtering original ldif used to create database..." -. $LDIFFILTER < $LDIF > $LDIFFLT +$LDIFFILTER < $LDIF > $LDIFFLT echo "Comparing filter output..." $CMP $SEARCHFLT $LDIFFLT > $CMPOUT @@ -254,4 +320,6 @@ fi echo ">>>>> Test succeeded" +test $KILLSERVERS != no && wait + exit 0