23 * questions. |
23 * questions. |
24 */ |
24 */ |
25 |
25 |
26 package com.sun.security.auth.module; |
26 package com.sun.security.auth.module; |
27 |
27 |
28 import javax.security.auth.x500.X500Principal; |
|
29 import java.io.File; |
28 import java.io.File; |
30 import java.io.IOException; |
29 import java.io.IOException; |
31 import java.io.InputStream; |
30 import java.io.InputStream; |
32 import java.io.PushbackInputStream; |
|
33 import java.net.MalformedURLException; |
31 import java.net.MalformedURLException; |
34 import java.net.URL; |
32 import java.net.URL; |
35 import java.security.AuthProvider; |
33 import java.security.AuthProvider; |
36 import java.security.GeneralSecurityException; |
34 import java.security.GeneralSecurityException; |
37 import java.security.Key; |
35 import java.security.Key; |
38 import java.security.KeyStore; |
36 import java.security.KeyStore; |
39 import java.security.KeyStoreException; |
37 import java.security.KeyStoreException; |
40 import java.security.NoSuchAlgorithmException; |
38 import java.security.NoSuchAlgorithmException; |
41 import java.security.NoSuchProviderException; |
39 import java.security.NoSuchProviderException; |
42 import java.security.Principal; |
|
43 import java.security.PrivateKey; |
40 import java.security.PrivateKey; |
44 import java.security.Provider; |
41 import java.security.Provider; |
45 import java.security.UnrecoverableKeyException; |
42 import java.security.UnrecoverableKeyException; |
46 import java.security.cert.*; |
43 import java.security.cert.*; |
47 import java.security.cert.X509Certificate; |
44 import java.security.cert.X509Certificate; |
48 import java.util.Arrays; |
45 import java.util.Arrays; |
49 import java.util.Iterator; |
46 import java.util.Iterator; |
50 import java.util.LinkedList; |
47 import java.util.LinkedList; |
51 import java.util.Map; |
48 import java.util.Map; |
52 import java.util.ResourceBundle; |
|
53 import javax.security.auth.Destroyable; |
49 import javax.security.auth.Destroyable; |
54 import javax.security.auth.DestroyFailedException; |
50 import javax.security.auth.DestroyFailedException; |
55 import javax.security.auth.Subject; |
|
56 import javax.security.auth.x500.*; |
|
57 import javax.security.auth.Subject; |
51 import javax.security.auth.Subject; |
58 import javax.security.auth.x500.*; |
52 import javax.security.auth.x500.*; |
59 import javax.security.auth.callback.Callback; |
53 import javax.security.auth.callback.Callback; |
60 import javax.security.auth.callback.CallbackHandler; |
54 import javax.security.auth.callback.CallbackHandler; |
61 import javax.security.auth.callback.ConfirmationCallback; |
55 import javax.security.auth.callback.ConfirmationCallback; |
65 import javax.security.auth.callback.UnsupportedCallbackException; |
59 import javax.security.auth.callback.UnsupportedCallbackException; |
66 import javax.security.auth.login.FailedLoginException; |
60 import javax.security.auth.login.FailedLoginException; |
67 import javax.security.auth.login.LoginException; |
61 import javax.security.auth.login.LoginException; |
68 import javax.security.auth.spi.LoginModule; |
62 import javax.security.auth.spi.LoginModule; |
69 |
63 |
70 import sun.security.util.AuthResources; |
|
71 import sun.security.util.Password; |
64 import sun.security.util.Password; |
72 |
65 |
73 /** |
66 /** |
74 * Provides a JAAS login module that prompts for a key store alias and |
67 * Provides a JAAS login module that prompts for a key store alias and |
75 * populates the subject with the alias's principal and credentials. Stores |
68 * populates the subject with the alias's principal and credentials. Stores |
157 ConfirmationCallback.OK_CANCEL_OPTION, |
150 ConfirmationCallback.OK_CANCEL_OPTION, |
158 ConfirmationCallback.OK); |
151 ConfirmationCallback.OK); |
159 |
152 |
160 private Subject subject; |
153 private Subject subject; |
161 private CallbackHandler callbackHandler; |
154 private CallbackHandler callbackHandler; |
162 private Map sharedState; |
155 private Map<String, Object> sharedState; |
163 private Map<String, ?> options; |
156 private Map<String, ?> options; |
164 |
157 |
165 private char[] keyStorePassword; |
158 private char[] keyStorePassword; |
166 private char[] privateKeyPassword; |
159 private char[] privateKeyPassword; |
167 private KeyStore keyStore; |
160 private KeyStore keyStore; |
200 * |
193 * |
201 * @param options options specified in the login |
194 * @param options options specified in the login |
202 * <code>Configuration</code> for this particular |
195 * <code>Configuration</code> for this particular |
203 * <code>LoginModule</code>. |
196 * <code>LoginModule</code>. |
204 */ |
197 */ |
205 |
198 // Unchecked warning from (Map<String, Object>)sharedState is safe |
|
199 // since javax.security.auth.login.LoginContext passes a raw HashMap. |
|
200 @SuppressWarnings("unchecked") |
206 public void initialize(Subject subject, |
201 public void initialize(Subject subject, |
207 CallbackHandler callbackHandler, |
202 CallbackHandler callbackHandler, |
208 Map<String,?> sharedState, |
203 Map<String,?> sharedState, |
209 Map<String,?> options) |
204 Map<String,?> options) |
210 { |
205 { |
211 this.subject = subject; |
206 this.subject = subject; |
212 this.callbackHandler = callbackHandler; |
207 this.callbackHandler = callbackHandler; |
213 this.sharedState = sharedState; |
208 this.sharedState = (Map<String, Object>)sharedState; |
214 this.options = options; |
209 this.options = options; |
215 |
210 |
216 processOptions(); |
211 processOptions(); |
217 status = INITIALIZED; |
212 status = INITIALIZED; |
218 } |
213 } |