net-ldap 0.11 → 0.16.0

Sign up to get free protection for your applications and to get access to all the features.

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