net-ldap 0.11 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of net-ldap might be problematic. Click here for more details.

Files changed (59) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +15 -0
  3. data/.rubocop_todo.yml +471 -180
  4. data/.travis.yml +10 -5
  5. data/Contributors.rdoc +1 -0
  6. data/History.rdoc +60 -0
  7. data/README.rdoc +18 -11
  8. data/Rakefile +0 -1
  9. data/lib/net/ber/ber_parser.rb +4 -4
  10. data/lib/net/ber/core_ext/array.rb +1 -1
  11. data/lib/net/ber/core_ext/integer.rb +1 -1
  12. data/lib/net/ber/core_ext/string.rb +1 -1
  13. data/lib/net/ber.rb +37 -5
  14. data/lib/net/ldap/auth_adapter/gss_spnego.rb +41 -0
  15. data/lib/net/ldap/auth_adapter/sasl.rb +62 -0
  16. data/lib/net/ldap/auth_adapter/simple.rb +34 -0
  17. data/lib/net/ldap/auth_adapter.rb +29 -0
  18. data/lib/net/ldap/connection.rb +197 -187
  19. data/lib/net/ldap/dataset.rb +2 -2
  20. data/lib/net/ldap/dn.rb +4 -5
  21. data/lib/net/ldap/entry.rb +4 -5
  22. data/lib/net/ldap/error.rb +36 -1
  23. data/lib/net/ldap/filter.rb +6 -6
  24. data/lib/net/ldap/pdu.rb +26 -2
  25. data/lib/net/ldap/version.rb +1 -1
  26. data/lib/net/ldap.rb +189 -75
  27. data/lib/net/snmp.rb +18 -18
  28. data/net-ldap.gemspec +4 -2
  29. data/script/changelog +47 -0
  30. data/script/generate-fixture-ca +48 -0
  31. data/script/install-openldap +67 -44
  32. data/test/ber/core_ext/test_array.rb +1 -1
  33. data/test/ber/test_ber.rb +11 -3
  34. data/test/fixtures/ca/ca.info +4 -0
  35. data/test/fixtures/ca/cacert.pem +24 -0
  36. data/test/fixtures/ca/cakey.pem +190 -0
  37. data/test/fixtures/openldap/slapd.conf.ldif +1 -1
  38. data/test/integration/test_add.rb +1 -1
  39. data/test/integration/test_ber.rb +1 -1
  40. data/test/integration/test_bind.rb +220 -10
  41. data/test/integration/test_delete.rb +1 -1
  42. data/test/integration/test_open.rb +1 -1
  43. data/test/integration/test_password_modify.rb +80 -0
  44. data/test/integration/test_search.rb +1 -1
  45. data/test/support/vm/openldap/README.md +35 -3
  46. data/test/support/vm/openldap/Vagrantfile +1 -0
  47. data/test/test_auth_adapter.rb +15 -0
  48. data/test/test_dn.rb +3 -3
  49. data/test/test_filter.rb +4 -4
  50. data/test/test_filter_parser.rb +4 -0
  51. data/test/test_helper.rb +10 -2
  52. data/test/test_ldap.rb +64 -10
  53. data/test/test_ldap_connection.rb +115 -28
  54. data/test/test_ldif.rb +11 -11
  55. data/test/test_search.rb +2 -2
  56. data/test/test_snmp.rb +4 -4
  57. data/testserver/ldapserver.rb +11 -12
  58. metadata +50 -8
  59. data/test/fixtures/cacert.pem +0 -20
@@ -0,0 +1,48 @@
1
+ #!/bin/bash
2
+
3
+ BASE_PATH=$( cd "`dirname $0`/../test/fixtures/ca" && pwd )
4
+ cd "${BASE_PATH}" || exit 4
5
+
6
+ USAGE=$( cat << EOS
7
+ Usage:
8
+ $0 --regenerate
9
+
10
+ Generates a new self-signed CA, for integration testing. This should only need
11
+ to be run if you are writing new TLS/SSL tests, and need to generate
12
+ additional fixtuer CAs.
13
+
14
+ This script uses the GnuTLS certtool CLI. If you are on macOS,
15
+ 'brew install gnutls', and it will be installed as 'gnutls-certtool'.
16
+ Apple unfortunately ships with an incompatible /usr/bin/certtool that does
17
+ different things.
18
+ EOS
19
+ )
20
+
21
+ if [ "x$1" != 'x--regenerate' ]; then
22
+ echo "${USAGE}"
23
+ exit 1
24
+ fi
25
+
26
+ TOOL=`type -p certtool`
27
+ if [ "$(uname)" = "Darwin" ]; then
28
+ TOOL=`type -p gnutls-certtool`
29
+ if [ ! -x "${TOOL}" ]; then
30
+ echo "Sorry, Darwin requires gnutls-certtool; try `brew install gnutls`"
31
+ exit 2
32
+ fi
33
+ fi
34
+
35
+ if [ ! -x "${TOOL}" ]; then
36
+ echo "Sorry, no certtool found!"
37
+ exit 3
38
+ fi
39
+ export TOOL
40
+
41
+
42
+ ${TOOL} --generate-privkey > ./cakey.pem
43
+ ${TOOL} --generate-self-signed \
44
+ --load-privkey ./cakey.pem \
45
+ --template ./ca.info \
46
+ --outfile ./cacert.pem
47
+
48
+ echo "cert and private key generated! Don't forget to check them in"
@@ -2,92 +2,104 @@
2
2
  set -e
3
3
  set -x
4
4
 
5
- BASE_PATH="$( cd `dirname $0`/../test/fixtures/openldap && pwd )"
6
- SEED_PATH="$( cd `dirname $0`/../test/fixtures && pwd )"
5
+ BASE_PATH=$( cd "`dirname $0`/../test/fixtures/openldap" && pwd )
6
+ SEED_PATH=$( cd "`dirname $0`/../test/fixtures" && pwd )
7
7
 
8
8
  dpkg -s slapd time ldap-utils gnutls-bin ssl-cert > /dev/null ||\
9
- DEBIAN_FRONTEND=noninteractive sudo -E apt-get install -y --force-yes slapd time ldap-utils gnutls-bin ssl-cert
9
+ DEBIAN_FRONTEND=noninteractive apt-get update -y --force-yes && \
10
+ DEBIAN_FRONTEND=noninteractive apt-get install -y --force-yes slapd time ldap-utils gnutls-bin ssl-cert
10
11
 
11
- sudo /etc/init.d/slapd stop
12
+ /etc/init.d/slapd stop
12
13
 
13
14
  TMPDIR=$(mktemp -d)
14
15
  cd $TMPDIR
15
16
 
16
17
  # Delete data and reconfigure.
17
- sudo cp -v /var/lib/ldap/DB_CONFIG ./DB_CONFIG
18
- sudo rm -rf /etc/ldap/slapd.d/*
19
- sudo rm -rf /var/lib/ldap/*
20
- sudo cp -v ./DB_CONFIG /var/lib/ldap/DB_CONFIG
21
- sudo slapadd -F /etc/ldap/slapd.d -b "cn=config" -l $BASE_PATH/slapd.conf.ldif
18
+ cp -v /var/lib/ldap/DB_CONFIG ./DB_CONFIG
19
+ rm -rf /etc/ldap/slapd.d/*
20
+ rm -rf /var/lib/ldap/*
21
+ cp -v ./DB_CONFIG /var/lib/ldap/DB_CONFIG
22
+ slapadd -F /etc/ldap/slapd.d -b "cn=config" -l $BASE_PATH/slapd.conf.ldif
22
23
  # Load memberof and ref-int overlays and configure them.
23
- sudo slapadd -F /etc/ldap/slapd.d -b "cn=config" -l $BASE_PATH/memberof.ldif
24
+ slapadd -F /etc/ldap/slapd.d -b "cn=config" -l $BASE_PATH/memberof.ldif
24
25
  # Load retcode overlay and configure
25
- sudo slapadd -F /etc/ldap/slapd.d -b "cn=config" -l $BASE_PATH/retcode.ldif
26
+ slapadd -F /etc/ldap/slapd.d -b "cn=config" -l $BASE_PATH/retcode.ldif
26
27
 
27
28
  # Add base domain.
28
- sudo slapadd -F /etc/ldap/slapd.d <<EOM
29
+ slapadd -F /etc/ldap/slapd.d <<EOM
29
30
  dn: dc=rubyldap,dc=com
30
31
  objectClass: top
31
32
  objectClass: domain
32
33
  dc: rubyldap
33
34
  EOM
34
35
 
35
- sudo chown -R openldap.openldap /etc/ldap/slapd.d
36
- sudo chown -R openldap.openldap /var/lib/ldap
36
+ chown -R openldap.openldap /etc/ldap/slapd.d
37
+ chown -R openldap.openldap /var/lib/ldap
37
38
 
38
- sudo /etc/init.d/slapd start
39
+ /etc/init.d/slapd start
39
40
 
40
41
  # Import seed data.
41
42
  # NOTE: use ldapadd in order for memberOf and refint to apply, instead of:
42
- # cat $SEED_PATH/seed.ldif | sudo slapadd -F /etc/ldap/slapd.d
43
- /usr/bin/time sudo ldapadd -x -D "cn=admin,dc=rubyldap,dc=com" -w passworD1 \
43
+ # cat $SEED_PATH/seed.ldif | slapadd -F /etc/ldap/slapd.d
44
+ /usr/bin/time ldapadd -x -D "cn=admin,dc=rubyldap,dc=com" -w passworD1 \
44
45
  -h localhost -p 389 \
45
46
  -f $SEED_PATH/seed.ldif
46
47
 
47
- sudo rm -rf $TMPDIR
48
+ rm -rf $TMPDIR
48
49
 
49
50
  # SSL
51
+ export CA_CERT="/usr/local/share/ca-certificates/rubyldap-ca.crt"
52
+ export CA_KEY="/etc/ssl/private/rubyldap-ca.key"
50
53
 
51
- sudo sh -c "certtool --generate-privkey > /etc/ssl/private/cakey.pem"
54
+ # The self-signed fixture CA cert & key are generated by
55
+ # `script/generate-fiuxture-ca` and checked into version control.
56
+ # You shouldn't need to muck with these unless you're writing more
57
+ # TLS/SSL integration tests, and need special magic values in the cert.
52
58
 
53
- sudo sh -c "cat > /etc/ssl/ca.info <<EOF
54
- cn = rubyldap
55
- ca
56
- cert_signing_key
57
- EOF"
59
+ cp "${SEED_PATH}/ca/cacert.pem" "${CA_CERT}"
60
+ cp "${SEED_PATH}/ca/cakey.pem" "${CA_KEY}"
58
61
 
59
- # Create the self-signed CA certificate:
60
- sudo certtool --generate-self-signed \
61
- --load-privkey /etc/ssl/private/cakey.pem \
62
- --template /etc/ssl/ca.info \
63
- --outfile /etc/ssl/certs/cacert.pem
62
+ # actually add the fixture CA to the system store
63
+ update-ca-certificates
64
64
 
65
65
  # Make a private key for the server:
66
- sudo certtool --generate-privkey \
67
- --bits 1024 \
68
- --outfile /etc/ssl/private/ldap01_slapd_key.pem
66
+ certtool --generate-privkey \
67
+ --bits 1024 \
68
+ --outfile /etc/ssl/private/ldap01_slapd_key.pem
69
69
 
70
- sudo sh -c "cat > /etc/ssl/ldap01.info <<EOF
70
+ sh -c "cat > /etc/ssl/ldap01.info <<EOF
71
71
  organization = Example Company
72
72
  cn = ldap01.example.com
73
+ dns_name = ldap01.example.com
74
+ dns_name = ldap02.example.com
75
+ dns_name = localhost
73
76
  tls_www_server
74
77
  encryption_key
75
78
  signing_key
76
79
  expiration_days = 3650
77
80
  EOF"
78
81
 
82
+ # The integration server may be accessed by IP address, in which case
83
+ # we want some of the IPs included in the cert. We skip loopback (127.0.0.1)
84
+ # because that's the IP we use in the integration test for cert name mismatches.
85
+ ADDRS=$(ifconfig -a | grep 'inet addr:' | cut -f 2 -d : | cut -f 1 -d ' ')
86
+ for ip in $ADDRS; do
87
+ if [ "x$ip" = 'x127.0.0.1' ]; then continue; fi
88
+ echo "ip_address = $ip" >> /etc/ssl/ldap01.info
89
+ done
90
+
79
91
  # Create the server certificate
80
- sudo certtool --generate-certificate \
92
+ certtool --generate-certificate \
81
93
  --load-privkey /etc/ssl/private/ldap01_slapd_key.pem \
82
- --load-ca-certificate /etc/ssl/certs/cacert.pem \
83
- --load-ca-privkey /etc/ssl/private/cakey.pem \
94
+ --load-ca-certificate "${CA_CERT}" \
95
+ --load-ca-privkey "${CA_KEY}" \
84
96
  --template /etc/ssl/ldap01.info \
85
97
  --outfile /etc/ssl/certs/ldap01_slapd_cert.pem
86
98
 
87
- sudo ldapmodify -Y EXTERNAL -H ldapi:/// <<EOF | true
99
+ ldapmodify -Y EXTERNAL -H ldapi:/// <<EOF | true
88
100
  dn: cn=config
89
101
  add: olcTLSCACertificateFile
90
- olcTLSCACertificateFile: /etc/ssl/certs/cacert.pem
102
+ olcTLSCACertificateFile: ${CA_CERT}
91
103
  -
92
104
  add: olcTLSCertificateFile
93
105
  olcTLSCertificateFile: /etc/ssl/certs/ldap01_slapd_cert.pem
@@ -101,11 +113,22 @@ EOF
101
113
  # protected by TLS/SSL whereas LDAPS, like HTTPS, is a distinct
102
114
  # encrypted-from-the-start protocol that operates over TCP port 636. But we
103
115
  # enable it for testing here.
104
- sudo sed -i -e 's|^SLAPD_SERVICES="\(.*\)"|SLAPD_SERVICES="ldap:/// ldapi:/// ldaps:///"|' /etc/default/slapd
116
+ sed -i -e 's|^SLAPD_SERVICES="\(.*\)"|SLAPD_SERVICES="ldap:/// ldapi:/// ldaps:///"|' /etc/default/slapd
117
+
118
+ adduser openldap ssl-cert
119
+ chgrp ssl-cert /etc/ssl/private/ldap01_slapd_key.pem
120
+ chmod g+r /etc/ssl/private/ldap01_slapd_key.pem
121
+ chmod o-r /etc/ssl/private/ldap01_slapd_key.pem
122
+
123
+ # Drop packets on a secondary port used to specific timeout tests
124
+ iptables -A INPUT -p tcp -j DROP --dport 8389
125
+
126
+ # Forward a port for Vagrant
127
+ iptables -t nat -A PREROUTING -p tcp --dport 9389 -j REDIRECT --to-port 389
105
128
 
106
- sudo adduser openldap ssl-cert
107
- sudo chgrp ssl-cert /etc/ssl/private/ldap01_slapd_key.pem
108
- sudo chmod g+r /etc/ssl/private/ldap01_slapd_key.pem
109
- sudo chmod o-r /etc/ssl/private/ldap01_slapd_key.pem
129
+ # fix up /etc/hosts for cert validation
130
+ grep ldap01 /etc/hosts || echo "127.0.0.1 ldap01.example.com" >> /etc/hosts
131
+ grep ldap02 /etc/hosts || echo "127.0.0.1 ldap02.example.com" >> /etc/hosts
132
+ grep bogus /etc/hosts || echo "127.0.0.1 bogus.example.com" >> /etc/hosts
110
133
 
111
- sudo service slapd restart
134
+ service slapd restart
@@ -6,7 +6,7 @@ class TestBERArrayExtension < Test::Unit::TestCase
6
6
  control_codes << ['1.2.3'.to_ber, true.to_ber].to_ber_sequence
7
7
  control_codes << ['1.7.9'.to_ber, false.to_ber].to_ber_sequence
8
8
  control_codes = control_codes.to_ber_sequence
9
- res = [['1.2.3', true],['1.7.9',false]].to_ber_control
9
+ res = [['1.2.3', true], ['1.7.9', false]].to_ber_control
10
10
  assert_equal control_codes, res
11
11
  end
12
12
 
data/test/ber/test_ber.rb CHANGED
@@ -6,8 +6,8 @@ class TestBEREncoding < Test::Unit::TestCase
6
6
  end
7
7
 
8
8
  def test_array
9
- ary = [1,2,3]
10
- encoded_ary = ary.map { |el| el.to_ber }.to_ber
9
+ ary = [1, 2, 3]
10
+ encoded_ary = ary.map(&:to_ber).to_ber
11
11
 
12
12
  assert_equal ary, encoded_ary.read_ber
13
13
  end
@@ -135,7 +135,15 @@ class TestBERIdentifiedString < Test::Unit::TestCase
135
135
  assert_equal "UTF-8", bis.encoding.name
136
136
  end
137
137
 
138
- def test_ut8_data_in_utf8
138
+ def test_umlaut_data_in_utf8
139
+ data = "Müller".force_encoding("UTF-8")
140
+ bis = Net::BER::BerIdentifiedString.new(data)
141
+
142
+ assert bis.valid_encoding?, "should be a valid encoding"
143
+ assert_equal "UTF-8", bis.encoding.name
144
+ end
145
+
146
+ def test_utf8_data_in_utf8
139
147
  data = ["e4b8ad"].pack("H*").force_encoding("UTF-8")
140
148
  bis = Net::BER::BerIdentifiedString.new(data)
141
149
 
@@ -0,0 +1,4 @@
1
+ cn = rubyldap
2
+ ca
3
+ cert_signing_key
4
+ expiration_days = 7200
@@ -0,0 +1,24 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIID7zCCAlegAwIBAgIMV7zWei6SNfABx6jMMA0GCSqGSIb3DQEBCwUAMBMxETAP
3
+ BgNVBAMTCHJ1YnlsZGFwMB4XDTE2MDgyMzIzMDQyNloXDTM2MDUxMDIzMDQyNlow
4
+ EzERMA8GA1UEAxMIcnVieWxkYXAwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGK
5
+ AoIBgQDGe9wziGHZJhIf+IEKSk1tpT9Mu7YgsUwjrlutvkoO1Q6K+amTAVDXizPf
6
+ 1DVSDpZP5+CfBOznhgLMsPvrQ02w4qx5/6X9L+zJcMk8jTNYSKj5uIKpK52E7Uok
7
+ aygMXeaqroPONGkoJIZiVGgdbWfTvcffTm8FOhztXUbMrMXJNinFsocGHEoMNN8b
8
+ vqgAyG4+DFHoK4L0c6eQjE4nZBChieZdShUhaBpV7r2qSNbPw67cvAKuEzml58mV
9
+ 1ZF1F73Ua8gPWXHEfUe2GEfG0NnRq6sGbsDYe/DIKxC7AZ89udZF3WZXNrPhvXKj
10
+ ZT7njwcMQemns4dNPQ0k2V4vAQ8pD8r8Qvb65FiSopUhVaGQswAnIMS1DnFq88AQ
11
+ KJTKIXbBuMwuaNNSs6R/qTS2RDk1w+CGpRXAg7+1SX5NKdrEsu1IaABA/tQ/zKKk
12
+ OLLJaD0giX1weBVmNeFcKxIoT34VS59eEt5APmPcguJnx+aBrA9TLzSO788apBN0
13
+ 4lGAmR0CAwEAAaNDMEEwDwYDVR0TAQH/BAUwAwEB/zAPBgNVHQ8BAf8EBQMDBwQA
14
+ MB0GA1UdDgQWBBRTvXSkge03oqLu7UUjFI+oLYwnujANBgkqhkiG9w0BAQsFAAOC
15
+ AYEATSZQWH+uSN5GvOUvJ8LHWkeVovn0UhboK0K7GzmMeGz+dp/Xrj6eQ4ONK0zI
16
+ RCJyoo/nCR7CfQ5ujVXr03XD2SUgyD565ulXuhw336DasL5//fucmQYDeqhwbKML
17
+ FTzsF9H9dO4J5TjxJs7e5dRJ0wrP/XEY+WFhXXdSHTl8vGCI6QqWc7TvDpmbS4iX
18
+ uTzjJswu9Murt9JUJNMN2DlDi/vBBeruaj4c2cMMnKMvkfj14kd8wMocmzj+gVQl
19
+ r+fRQbKAJNec65lA4/Zeb6sD9SAi0ZIVgxA4a7g8/sdNWHIAxPicpJkIJf30TsyY
20
+ F+8+Hd5mBtCbvFfAVkT6bHBP1OiAgNke+Rh/j/sQbyWbKCKw0+jpFJgO9KUNGfC0
21
+ O/CqX+J4G7HqL8VJqrLnBvOdhfetAvNQtf1gcw5ZwpeEFM+Kvx/lsILaIYdAUSjX
22
+ ePOc5gI2Bi9WXq+T9AuhSf+TWUR874m/rdTWe5fM8mXCNl7C4I5zCqLltEDkSoMP
23
+ jDj/
24
+ -----END CERTIFICATE-----
@@ -0,0 +1,190 @@
1
+ Public Key Info:
2
+ Public Key Algorithm: RSA
3
+ Key Security Level: High (3072 bits)
4
+
5
+ modulus:
6
+ 00:c6:7b:dc:33:88:61:d9:26:12:1f:f8:81:0a:4a:4d
7
+ 6d:a5:3f:4c:bb:b6:20:b1:4c:23:ae:5b:ad:be:4a:0e
8
+ d5:0e:8a:f9:a9:93:01:50:d7:8b:33:df:d4:35:52:0e
9
+ 96:4f:e7:e0:9f:04:ec:e7:86:02:cc:b0:fb:eb:43:4d
10
+ b0:e2:ac:79:ff:a5:fd:2f:ec:c9:70:c9:3c:8d:33:58
11
+ 48:a8:f9:b8:82:a9:2b:9d:84:ed:4a:24:6b:28:0c:5d
12
+ e6:aa:ae:83:ce:34:69:28:24:86:62:54:68:1d:6d:67
13
+ d3:bd:c7:df:4e:6f:05:3a:1c:ed:5d:46:cc:ac:c5:c9
14
+ 36:29:c5:b2:87:06:1c:4a:0c:34:df:1b:be:a8:00:c8
15
+ 6e:3e:0c:51:e8:2b:82:f4:73:a7:90:8c:4e:27:64:10
16
+ a1:89:e6:5d:4a:15:21:68:1a:55:ee:bd:aa:48:d6:cf
17
+ c3:ae:dc:bc:02:ae:13:39:a5:e7:c9:95:d5:91:75:17
18
+ bd:d4:6b:c8:0f:59:71:c4:7d:47:b6:18:47:c6:d0:d9
19
+ d1:ab:ab:06:6e:c0:d8:7b:f0:c8:2b:10:bb:01:9f:3d
20
+ b9:d6:45:dd:66:57:36:b3:e1:bd:72:a3:65:3e:e7:8f
21
+ 07:0c:41:e9:a7:b3:87:4d:3d:0d:24:d9:5e:2f:01:0f
22
+ 29:0f:ca:fc:42:f6:fa:e4:58:92:a2:95:21:55:a1:90
23
+ b3:00:27:20:c4:b5:0e:71:6a:f3:c0:10:28:94:ca:21
24
+ 76:c1:b8:cc:2e:68:d3:52:b3:a4:7f:a9:34:b6:44:39
25
+ 35:c3:e0:86:a5:15:c0:83:bf:b5:49:7e:4d:29:da:c4
26
+ b2:ed:48:68:00:40:fe:d4:3f:cc:a2:a4:38:b2:c9:68
27
+ 3d:20:89:7d:70:78:15:66:35:e1:5c:2b:12:28:4f:7e
28
+ 15:4b:9f:5e:12:de:40:3e:63:dc:82:e2:67:c7:e6:81
29
+ ac:0f:53:2f:34:8e:ef:cf:1a:a4:13:74:e2:51:80:99
30
+ 1d:
31
+
32
+ public exponent:
33
+ 01:00:01:
34
+
35
+ private exponent:
36
+ 1d:0d:9a:50:ec:c0:ad:e1:75:bb:ba:4b:61:2f:39:20
37
+ 38:95:08:6d:5d:9e:71:75:5c:af:b3:f9:bd:a5:e7:7f
38
+ e6:4e:0f:77:73:ee:38:60:24:9f:26:3f:50:c2:bf:21
39
+ df:76:68:99:be:45:d3:29:f9:94:ee:bf:21:53:cb:b6
40
+ 7d:a7:93:80:09:53:03:45:dc:c2:a6:a2:37:64:f1:a2
41
+ 49:21:ac:91:6b:a3:d7:bd:d2:62:0c:ec:a6:83:10:e7
42
+ a7:ca:3d:be:dc:4b:1c:36:24:79:96:33:5b:43:5d:74
43
+ 50:0e:46:b0:9b:6d:9f:71:06:89:a5:c8:65:ed:d9:a3
44
+ 15:00:3c:3e:a9:75:50:9d:72:cb:c9:aa:e1:ba:a3:9c
45
+ 07:77:14:32:30:d4:4d:65:f4:7c:23:1d:79:84:9b:2e
46
+ 9a:19:df:43:ed:cd:e3:08:1f:d5:ff:6b:42:98:36:f7
47
+ 44:cc:48:b4:f7:b8:16:b3:23:37:8d:b8:22:3f:8a:86
48
+ db:71:b3:85:2d:6d:42:44:b7:dc:c1:36:e0:c4:0f:fe
49
+ cb:76:84:81:e2:83:f5:82:76:a9:7b:35:d5:44:00:d1
50
+ 1a:fc:ef:b9:a4:2b:62:aa:f8:56:eb:60:e5:16:33:f1
51
+ 28:e1:da:91:50:e3:a4:c7:d6:30:21:cf:04:07:cd:8c
52
+ b6:9e:b0:a7:6c:96:57:2e:09:5b:39:26:d0:60:be:e3
53
+ 90:59:a3:8e:e7:6e:3f:62:7e:b4:2a:e1:8f:00:37:7a
54
+ 83:9e:7a:9c:d2:ae:ba:50:84:73:65:3a:64:95:d8:48
55
+ f9:fd:0e:c3:5b:6e:08:3b:c5:c9:1c:29:55:bb:67:e8
56
+ fa:50:40:30:2a:d1:b7:cf:54:a8:f0:f0:76:89:ad:19
57
+ e7:a0:3a:56:6c:75:c5:bc:d8:46:ce:1e:66:f2:61:96
58
+ 11:e4:57:cc:52:ff:e4:ed:6b:2c:ce:78:15:ba:b7:ed
59
+ 31:f2:68:88:79:bf:7c:29:3c:2f:66:71:0b:09:b7:41
60
+
61
+
62
+ prime1:
63
+ 00:fd:c2:37:b9:6f:77:88:51:a2:f7:4f:c2:3c:a4:57
64
+ bf:ba:71:14:f3:61:f4:39:78:22:3d:bc:d8:d2:4e:c0
65
+ 4b:9e:c2:6d:38:a8:21:e2:70:1a:96:48:95:18:85:01
66
+ 46:fb:62:a4:81:09:f8:2a:3a:87:78:07:5d:93:54:ce
67
+ 2a:51:b3:51:6f:61:0a:2e:9d:b0:51:37:e3:13:bd:81
68
+ 23:2b:61:53:fa:ac:08:dc:a0:e6:63:a3:b0:cc:cf:73
69
+ 1d:65:b7:11:bc:29:70:fb:72:ea:63:9d:67:02:d6:35
70
+ 24:13:1d:bc:72:fb:9e:3d:ab:0b:57:6e:bd:a1:51:56
71
+ f9:bc:96:15:74:a3:31:16:c6:b8:98:1b:0a:a2:59:7c
72
+ c8:b7:14:b8:5b:f3:2e:26:b4:f0:46:c4:3d:27:dd:41
73
+ 31:52:a7:15:a8:af:6a:98:a5:9c:20:17:f9:1d:54:54
74
+ ff:10:91:a3:a5:ca:ac:63:e7:16:2b:71:3c:3a:cd:4f
75
+ ed:
76
+
77
+ prime2:
78
+ 00:c8:3c:a8:9f:8a:db:42:b5:8d:cf:2a:a1:2f:e5:73
79
+ 05:de:30:d8:17:b9:5c:9d:08:60:02:c9:66:9d:88:50
80
+ ac:cd:0f:b5:47:b4:a8:73:3b:7d:65:79:bf:4c:6f:d0
81
+ e2:03:ed:d4:28:4e:00:07:23:00:01:4f:05:de:9b:44
82
+ 1a:84:ae:09:4a:d6:ed:61:5d:77:e2:fa:13:99:4c:b7
83
+ 76:72:3d:f8:53:93:69:78:e8:bd:26:cb:b0:f9:01:f4
84
+ 1d:20:4f:60:f5:ab:3c:19:85:73:34:f3:ec:d2:67:ef
85
+ 56:b8:5d:93:73:8e:d9:3e:28:ff:87:f5:4a:26:fa:b1
86
+ ae:c6:d3:9d:03:e3:fd:c2:24:48:af:85:2a:8e:3b:5b
87
+ 93:07:38:91:21:ae:49:cb:6d:e3:30:81:15:ed:65:eb
88
+ dc:01:df:3b:9d:43:fd:a6:e1:df:ef:ad:22:42:34:f1
89
+ 3f:81:5e:57:0a:e0:56:94:f2:2a:00:d0:cc:c5:50:67
90
+ f1:
91
+
92
+ coefficient:
93
+ 00:bd:23:8c:2e:a7:7b:6b:1e:85:77:db:7d:77:f6:e5
94
+ b0:15:c6:e1:9e:35:57:72:df:35:6d:93:89:7f:83:9f
95
+ 63:7f:08:0a:b3:d4:ba:63:9b:10:7f:0f:d3:55:e9:38
96
+ cf:90:37:3d:85:3d:a7:97:8c:33:f2:c2:b1:38:2b:db
97
+ 39:ca:a8:d0:23:d7:89:cc:8d:02:7d:61:9b:b6:04:69
98
+ 14:e8:c9:84:34:36:6c:fb:84:58:cc:9a:53:74:a4:42
99
+ bd:1d:25:1b:ba:82:c0:fb:23:2c:90:bb:35:4b:5b:b0
100
+ 98:d0:ab:9d:61:6e:ea:e8:84:e7:a7:6c:ae:1b:2c:00
101
+ cb:0f:1a:f8:e2:7c:fd:42:1a:e2:13:52:c7:50:fa:65
102
+ c9:5f:ed:40:a8:7f:46:0e:ce:f6:56:83:6f:0e:8e:39
103
+ f8:33:5f:83:de:be:be:ef:8c:66:ad:16:c8:ec:98:d4
104
+ b2:b2:55:66:a2:9e:27:6a:84:f1:31:07:e8:bf:a7:a7
105
+ bd:
106
+
107
+ exp1:
108
+ 00:b6:50:0c:53:19:07:8b:14:03:fe:a4:fa:0b:31:93
109
+ ad:b7:18:b9:91:a6:c5:9d:68:77:49:5d:dd:75:33:89
110
+ 2a:8b:54:6a:be:32:e5:ad:57:17:72:f3:90:d2:fd:f4
111
+ 0d:f8:5c:45:8e:44:08:5c:e6:92:1f:a5:43:10:af:f4
112
+ 33:29:61:a8:d7:59:a3:c4:1c:1c:ea:2d:39:e3:1b:da
113
+ a4:d6:ec:e5:36:0a:d5:8f:15:b6:90:cd:b1:1f:64:c7
114
+ f2:cd:fa:3a:2e:b2:a3:6e:b4:80:3b:b3:81:a7:e3:18
115
+ 68:e3:a7:10:96:97:ba:77:d9:e4:9b:1b:7f:f8:5f:85
116
+ 1a:85:e8:5a:5f:e3:43:48:76:db:76:c4:ae:de:37:66
117
+ d4:99:dc:b4:1b:b3:da:6b:8a:c1:ba:46:11:1e:0b:f3
118
+ 63:a9:5b:4b:cf:56:c0:42:0d:71:df:08:fa:3c:9d:33
119
+ 37:d1:c2:a1:0d:63:50:79:b2:34:16:60:13:82:b7:b1
120
+ 7d:
121
+
122
+ exp2:
123
+ 00:98:38:2c:c4:24:4e:2c:b7:52:17:a4:43:a6:e2:99
124
+ ff:62:fa:e4:bb:9c:49:40:83:66:61:97:f3:af:5c:3a
125
+ 60:32:ff:77:03:0c:de:65:c3:5a:bf:72:bf:2f:7f:6d
126
+ 5e:f4:37:af:69:f8:69:e3:03:03:74:fb:3a:ee:10:40
127
+ c4:9c:0a:a5:bb:c4:09:ef:53:9b:d8:eb:dd:4c:53:da
128
+ c0:6b:76:9a:ba:06:3d:4f:12:37:01:30:25:d8:16:59
129
+ 1a:6f:3e:88:ea:19:83:75:af:52:76:75:dc:99:d3:33
130
+ 4a:4c:9b:ae:85:51:99:ea:bc:46:0d:78:36:27:cd:ba
131
+ 97:b0:44:9c:7f:a1:a9:7e:16:11:3f:85:4f:65:92:d0
132
+ 39:c4:6a:87:42:00:79:ce:f1:39:9d:dc:f3:eb:65:e8
133
+ d8:76:7f:da:94:e2:64:08:a2:7b:97:7b:99:a8:95:10
134
+ b5:03:46:d1:8a:ce:22:63:d6:78:81:e8:39:52:e2:9e
135
+ 31:
136
+
137
+
138
+ Public Key ID: 53:BD:74:A4:81:ED:37:A2:A2:EE:ED:45:23:14:8F:A8:2D:8C:27:BA
139
+ Public key's random art:
140
+ +--[ RSA 3072]----+
141
+ | . o. . |
142
+ | . +...+ |
143
+ | . o o.+ . |
144
+ | o o . . .ooo |
145
+ | o = . S o..o . |
146
+ | . o . .+.. |
147
+ |. . .. |
148
+ | . .. . |
149
+ |E oo.o |
150
+ +-----------------+
151
+
152
+ -----BEGIN RSA PRIVATE KEY-----
153
+ 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
190
+ -----END RSA PRIVATE KEY-----
@@ -3,7 +3,7 @@ objectClass: olcGlobal
3
3
  cn: config
4
4
  olcPidFile: /var/run/slapd/slapd.pid
5
5
  olcArgsFile: /var/run/slapd/slapd.args
6
- olcLogLevel: none
6
+ olcLogLevel: -1
7
7
  olcToolThreads: 1
8
8
 
9
9
  dn: olcDatabase={-1}frontend,cn=config
@@ -14,7 +14,7 @@ class TestAddIntegration < LDAPIntegrationTestCase
14
14
  uid: "added-user1",
15
15
  cn: "added-user1",
16
16
  sn: "added-user1",
17
- mail: "added-user1@rubyldap.com"
17
+ mail: "added-user1@rubyldap.com",
18
18
  }
19
19
 
20
20
  assert @ldap.add(dn: @dn, attributes: attrs), @ldap.get_operation_result.inspect
@@ -12,7 +12,7 @@ class TestBERIntegration < LDAPIntegrationTestCase
12
12
  filter: "(uid=user1)",
13
13
  size: 1,
14
14
  attributes: attrs,
15
- attributes_only: true
15
+ attributes_only: true,
16
16
  ).first
17
17
 
18
18
  # matches attributes we requested