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