30 |
30 |
31 package sun.security.krb5.internal.ccache; |
31 package sun.security.krb5.internal.ccache; |
32 |
32 |
33 import sun.security.krb5.*; |
33 import sun.security.krb5.*; |
34 import sun.security.krb5.internal.*; |
34 import sun.security.krb5.internal.*; |
35 import java.util.StringTokenizer; |
35 |
36 import java.util.Vector; |
36 import java.util.List; |
37 import java.io.IOException; |
37 import java.io.IOException; |
38 import java.io.File; |
|
39 import java.io.FileInputStream; |
|
40 import java.io.FileOutputStream; |
|
41 import java.io.BufferedReader; |
|
42 import java.io.InputStreamReader; |
|
43 |
38 |
44 /** |
39 /** |
45 * CredentialsCache stores credentials(tickets, session keys, etc) in a semi-permanent store |
40 * CredentialsCache stores credentials(tickets, session keys, etc) in a semi-permanent store |
46 * for later use by different program. |
41 * for later use by different program. |
47 * |
42 * |
118 public abstract PrincipalName getPrimaryPrincipal(); |
113 public abstract PrincipalName getPrimaryPrincipal(); |
119 public abstract void update(Credentials c); |
114 public abstract void update(Credentials c); |
120 public abstract void save() throws IOException, KrbException; |
115 public abstract void save() throws IOException, KrbException; |
121 public abstract Credentials[] getCredsList(); |
116 public abstract Credentials[] getCredsList(); |
122 public abstract Credentials getDefaultCreds(); |
117 public abstract Credentials getDefaultCreds(); |
|
118 public abstract sun.security.krb5.Credentials getInitialCreds(); |
123 public abstract Credentials getCreds(PrincipalName sname); |
119 public abstract Credentials getCreds(PrincipalName sname); |
124 public abstract Credentials getCreds(LoginOptions options, PrincipalName sname); |
120 public abstract Credentials getCreds(LoginOptions options, PrincipalName sname); |
|
121 public abstract void addConfigEntry(ConfigEntry e); |
|
122 public abstract List<ConfigEntry> getConfigEntries(); |
|
123 |
|
124 public ConfigEntry getConfigEntry(String name) { |
|
125 List<ConfigEntry> entries = getConfigEntries(); |
|
126 if (entries != null) { |
|
127 for (ConfigEntry e : entries) { |
|
128 if (e.getName().equals(name)) { |
|
129 return e; |
|
130 } |
|
131 } |
|
132 } |
|
133 return null; |
|
134 } |
|
135 |
|
136 public static class ConfigEntry { |
|
137 |
|
138 public ConfigEntry(String name, PrincipalName princ, byte[] data) { |
|
139 this.name = name; |
|
140 this.princ = princ; |
|
141 this.data = data; |
|
142 } |
|
143 |
|
144 private final String name; |
|
145 private final PrincipalName princ; |
|
146 private final byte[] data; // not worth cloning |
|
147 |
|
148 public String getName() { |
|
149 return name; |
|
150 } |
|
151 |
|
152 public PrincipalName getPrinc() { |
|
153 return princ; |
|
154 } |
|
155 |
|
156 public byte[] getData() { |
|
157 return data; |
|
158 } |
|
159 |
|
160 @Override |
|
161 public String toString() { |
|
162 return name + (princ != null ? ("." + princ) : "") |
|
163 + ": " + new String(data); |
|
164 } |
|
165 |
|
166 public PrincipalName getSName() { |
|
167 try { |
|
168 return new PrincipalName("krb5_ccache_conf_data/" + name |
|
169 + (princ != null ? ("/" + princ) : "") |
|
170 + "@X-CACHECONF:"); |
|
171 } catch (RealmException e) { |
|
172 throw new AssertionError(e); |
|
173 } |
|
174 } |
|
175 } |
125 } |
176 } |