1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.directory.server.core.integ;
21
22
23 import java.io.FileInputStream;
24 import java.io.FileOutputStream;
25 import java.io.IOException;
26 import java.io.InputStream;
27 import java.security.GeneralSecurityException;
28 import java.security.KeyPair;
29 import java.security.KeyPairGenerator;
30 import java.security.KeyStore;
31 import java.security.cert.X509Certificate;
32
33 import org.apache.directory.server.core.api.DirectoryService;
34 import org.apache.directory.server.core.security.CertificateUtil;
35 import org.apache.directory.server.kerberos.kdc.KdcServer;
36 import org.apache.directory.server.ldap.LdapServer;
37
38 import sun.security.x509.X500Name;
39
40
41
42
43
44
45
46 @SuppressWarnings("restriction")
47 public abstract class AbstractLdapTestUnit
48 {
49
50 public static DirectoryService service;
51
52
53 public static LdapServer ldapServer;
54
55
56 public static KdcServer kdcServer;
57
58 public static DirectoryService getService()
59 {
60 return service;
61 }
62
63
64 public static void setService( DirectoryService service )
65 {
66 AbstractLdapTestUnit.service = service;
67 }
68
69
70 public static LdapServer getLdapServer()
71 {
72 return ldapServer;
73 }
74
75
76 public static void setLdapServer( LdapServer ldapServer )
77 {
78 AbstractLdapTestUnit.ldapServer = ldapServer;
79 }
80
81
82 public static KdcServer getKdcServer()
83 {
84 return kdcServer;
85 }
86
87
88 public static void setKdcServer( KdcServer kdcServer )
89 {
90 AbstractLdapTestUnit.kdcServer = kdcServer;
91 }
92
93
94 public void changeCertificate( String keyStoreFile, String password, String issuerDn, String subjectDn, int days, String algorithm )
95 throws IOException, GeneralSecurityException
96 {
97 KeyStore keyStore = KeyStore.getInstance( KeyStore.getDefaultType() );
98 char[] keyStorePassword = password.toCharArray();
99
100 try ( InputStream keyStoreData = new FileInputStream( keyStoreFile ) )
101 {
102 keyStore.load( null, keyStorePassword );
103 }
104
105 KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance( "EC" );
106 KeyPair keyPair = keyPairGenerator.generateKeyPair();
107
108
109 X500Name subject = new X500Name( subjectDn, "directory", "apache", "US" );
110
111
112 X500Name issuer = new X500Name( issuerDn, "directory", "apache", "US" );
113
114
115 X509Certificate certificate = CertificateUtil.generateCertificate( subject, issuer, keyPair, days, algorithm );
116
117 keyStore.setKeyEntry( "apachedsKey", keyPair.getPrivate(), keyStorePassword, new X509Certificate[] { certificate } );
118
119 try ( FileOutputStream out = new FileOutputStream( keyStoreFile ) )
120 {
121 keyStore.store( out, keyStorePassword );
122 }
123 }
124 }