1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.eclipse.jetty.policy.entry;
20
21 import java.security.KeyStoreException;
22 import java.security.Principal;
23 import java.security.cert.Certificate;
24 import java.security.cert.X509Certificate;
25
26 import org.eclipse.jetty.policy.PolicyContext;
27 import org.eclipse.jetty.policy.PolicyException;
28
29 public class PrincipalEntry extends AbstractEntry
30 {
31
32
33
34
35 public static final String WILDCARD = "*";
36
37
38
39
40 private String klass;
41
42
43
44
45 private String name;
46
47
48
49
50 private Principal principal;
51
52 public Principal toPrincipal( PolicyContext context ) throws PolicyException
53 {
54 if ( principal != null && !isDirty() )
55 {
56 return principal;
57 }
58
59
60
61 if ( context.getKeystore() == null )
62 {
63 return null;
64 }
65
66 try
67 {
68 Certificate certificate = context.getKeystore().getCertificate( name );
69
70 if ( certificate instanceof X509Certificate )
71 {
72 principal = ( (X509Certificate) certificate ).getSubjectX500Principal();
73 return principal;
74 }
75 else
76 {
77 throw new PolicyException( "Unknown Certificate, unable to obtain Principal: " + certificate.getType() );
78 }
79 }
80 catch ( KeyStoreException kse )
81 {
82 throw new PolicyException( kse );
83 }
84 }
85
86 public void expand( PolicyContext context )
87 throws PolicyException
88 {
89 name = context.evaluate( name );
90
91 setExpanded(true);
92 }
93
94 public String getKlass()
95 {
96 return klass;
97 }
98
99 public void setKlass( String klass )
100 {
101 this.klass = klass;
102 }
103
104 public String getName()
105 {
106 return name;
107 }
108
109 public void setName( String name )
110 {
111 this.name = name;
112 }
113
114
115 }