# Thu 03-Jun-2004; Douglas Gray Stephens
# 
# Perl code to demonstrate problem with usercertificate;binary attributes.
#

# Stop IO buffering on Windows
select((select(STDOUT), $| = 1)[0]);
select((select(STDIN), $| = 1)[0]);
select((select(STDERR), $| = 1)[0]);

use strict;
use Net::LDAP;

print qq{Using version $Net::LDAP::VERSION\n};

# Connect to LDAP server
print q{Connecting to LDAP server ... };
my $ldap = Net::LDAP->new('localhost:390') or die "$@";
print qq{\n};

# Bind as self.
print q{Binding ... };
my $mesg=$ldap->bind(q{cn=LDAP Admin  100000,ou=role,o=SLB,c=AN},
		     password=>q{100000}
		     );
$mesg->code && die qq{Failed to bind },$mesg->error;
print qq{\n};

my %change=(q{usercertificate;binary}=>[q{MIIDTDCCArWgAwIBAgIEPd2ftjANBgkqhkiG9w0BAQUFADBgMQswCQYDVQQGEwJBTjEMMAoGA1UEChMDc2xiMQ0wCwYDVQQLEwRyb2xlMTQwMgYDVQQDEytTY2hsdW1iZXJnZXIgQXViYWRlIC0gQ2VydGlmaWNhdGUgQXV0aG9yaXR5MB4XDTAyMTIwNjE2MTY1M1oXDTA1MTIwNjE2NDY1M1owTDELMAkGA1UEBhMCQU4xDDAKBgNVBAoTA1NMQjERMA8GA1UECxMIZW1wbG95ZWUxHDAaBgNVBAMTE0JhYmFyIEFobWFkICAyMjY1MTMwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAJ5aLOaN+V0B7HVSMRh1OS37QhYobMh/AaSXNE6cgoxJz5Zhh4C4hd0wAXSrMFR2E+flxepIgDlHneDa8GEJDywCA6Rp1nrx5eH1z+73g45v9qgclGqW7v/fyJQVcHtMO87OkUxQVo1Qs6hsWfBaX9I3TMfYgvPYUmsZyvlmTsB7AgMBAAGjggElMIIBITAlBgNVHREEHjAcgRpiYWhtYWRAaG91c3Rvbi5zbnMuc2xiLmNvbTCBhAYDVR0fBH0wezB5oHegdaRzMHExCzAJBgNVBAYTAkFOMQwwCgYDVQQKEwNzbGIxDTALBgNVBAsTBHJvbGUxNDAyBgNVBAMTK1NjaGx1bWJlcmdlciBBdWJhZGUgLSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxDzANBgNVBAMTBkNSTDE1MDALBgNVHQ8EBAMCBSAwHwYDVR0jBBgwFoAUOPBZjF7r2Eprq6+dAm6KkNao+oowHQYDVR0OBBYEFJCTiqytOQttumUUG66sGTpEBfNNMAkGA1UdEwQCMAAwGQYJKoZIhvZ9B0EABAwwChsEVjYuMAMCBJAwDQYJKoZIhvcNAQEFBQADgYEAVN/V9lqlqX2fMXsMOfXCdJyE3oQMdMh2RiCfK4hev1ZIfYOUFiiFibo3uOBWX+hJFLNi9NcnX96JoT5VbsnK7lBEpR+DNeBR1XkFX7aMWRMMGl8Tmg9mlCEVLt2yL3eKFQbwlO+JOD3L6L4WhCM9OQHiWFOQkd6rQcxMe3sdJwQ=}]
    );
	
print q{Updating record ... };
$mesg=$ldap->modify(q{cn=Douglas Gray Stephens  111762,ou=employee,o=SLB,c=AN},
		    replace => \%change);

$mesg->code && die qq{Failed to modify },$mesg->error;
print qq{\n};

# Get full record
$mesg = $ldap->search ( base=>q{cn=Douglas Gray Stephens  111762,ou=employee,o=SLB,c=AN},
                        filter => q{objectclass=*}
                       );
$mesg->code && die qq{Failed to search },$mesg->error;
print qq{\n};

foreach my $entry ( $mesg->entries ) {
  print qq{Attributes are\n },join(qq{\n },$entry->attributes),qq{\n\n};
}

$ldap->unbind;
exit;
