1- /**
1+ /*
22 * Copyright (c) 2008 Sonatype, Inc. All rights reserved.
33 *
44 * This program is licensed to you under the Apache License Version 2.0,
1515import java .security .Provider ;
1616import java .security .Security ;
1717import java .util .HashSet ;
18- import java .util .Iterator ;
1918import java .util .Set ;
2019import java .util .regex .Matcher ;
2120import java .util .regex .Pattern ;
2221
23- import javax .enterprise .inject .Typed ;
2422import javax .inject .Named ;
23+ import javax .inject .Singleton ;
24+
25+ import org .eclipse .sisu .Typed ;
2526
2627/**
28+ * Default implementation of {@link PlexusCipher}. This class is thread safe.
29+ *
2730 * @author Oleg Gusakov
2831 */
32+ @ Singleton
2933@ Named ( "default" )
3034@ Typed ( PlexusCipher .class )
3135public class DefaultPlexusCipher
3236 implements PlexusCipher
3337{
34-
3538 private static final Pattern ENCRYPTED_STRING_PATTERN = Pattern .compile ( ".*?[^\\ \\ ]?\\ {(.*?[^\\ \\ ])\\ }.*" );
3639
3740 private final PBECipher _cipher ;
3841
3942 // ---------------------------------------------------------------
4043 public DefaultPlexusCipher ()
41- throws PlexusCipherException
4244 {
4345 _cipher = new PBECipher ();
4446 }
4547
4648 // ---------------------------------------------------------------
49+ @ Override
4750 public String encrypt ( final String str , final String passPhrase )
4851 throws PlexusCipherException
4952 {
@@ -56,13 +59,15 @@ public String encrypt( final String str, final String passPhrase )
5659 }
5760
5861 // ---------------------------------------------------------------
62+ @ Override
5963 public String encryptAndDecorate ( final String str , final String passPhrase )
6064 throws PlexusCipherException
6165 {
6266 return decorate ( encrypt ( str , passPhrase ) );
6367 }
6468
6569 // ---------------------------------------------------------------
70+ @ Override
6671 public String decrypt ( final String str , final String passPhrase )
6772 throws PlexusCipherException
6873 {
@@ -75,6 +80,7 @@ public String decrypt( final String str, final String passPhrase )
7580 }
7681
7782 // ---------------------------------------------------------------
83+ @ Override
7884 public String decryptDecorated ( final String str , final String passPhrase )
7985 throws PlexusCipherException
8086 {
@@ -92,6 +98,7 @@ public String decryptDecorated( final String str, final String passPhrase )
9298 }
9399
94100 // ----------------------------------------------------------------------------
101+ @ Override
95102 public boolean isEncryptedString ( final String str )
96103 {
97104 if ( str == null || str .length () < 1 )
@@ -105,7 +112,7 @@ public boolean isEncryptedString( final String str )
105112 }
106113
107114 // ----------------------------------------------------------------------------
108- // -------------------
115+ @ Override
109116 public String unDecorate ( final String str )
110117 throws PlexusCipherException
111118 {
@@ -122,75 +129,67 @@ public String unDecorate( final String str )
122129 }
123130
124131 // ----------------------------------------------------------------------------
125- // -------------------
132+ @ Override
126133 public String decorate ( final String str )
127134 {
128135 return ENCRYPTED_STRING_DECORATION_START + ( str == null ? "" : str ) + ENCRYPTED_STRING_DECORATION_STOP ;
129136 }
130137
131138 // ---------------------------------------------------------------
132- // ---------------------------------------------------------------
133- // ***************************************************************
139+
134140 /**
135141 * Exploratory part. This method returns all available services types
136142 */
137143 public static String [] getServiceTypes ()
138144 {
139- Set result = new HashSet ();
145+ Set < String > result = new HashSet <> ();
140146
141147 // All all providers
142148 Provider [] providers = Security .getProviders ();
143- for ( int i = 0 ; i < providers .length ; i ++ )
144- {
149+ for (Provider provider : providers ) {
145150 // Get services provided by each provider
146- Set keys = providers [i ].keySet ();
147- for ( Iterator it = keys .iterator (); it .hasNext (); )
148- {
149- String key = (String ) it .next ();
150- key = key .split ( " " )[0 ];
151-
152- if ( key .startsWith ( "Alg.Alias." ) )
153- {
151+ Set <Object > keys = provider .keySet ();
152+ for (Object o : keys ) {
153+ String key = (String ) o ;
154+ key = key .split (" " )[0 ];
155+
156+ if (key .startsWith ("Alg.Alias." )) {
154157 // Strip the alias
155- key = key .substring ( 10 );
158+ key = key .substring (10 );
156159 }
157- int ix = key .indexOf ( '.' );
158- result .add ( key .substring ( 0 , ix ) );
160+ int ix = key .indexOf ('.' );
161+ result .add (key .substring (0 , ix ) );
159162 }
160163 }
161- return ( String []) result .toArray ( new String [result .size ()] );
164+ return result .toArray ( new String [result .size ()] );
162165 }
163166
164167 /**
165168 * This method returns the available implementations for a service type
166169 */
167170 public static String [] getCryptoImpls ( final String serviceType )
168171 {
169- Set result = new HashSet ();
172+ Set < String > result = new HashSet <> ();
170173
171174 // All all providers
172175 Provider [] providers = Security .getProviders ();
173- for ( int i = 0 ; i < providers .length ; i ++ )
174- {
176+ for (Provider provider : providers ) {
175177 // Get services provided by each provider
176- Set keys = providers [i ].keySet ();
177- for ( Iterator it = keys .iterator (); it .hasNext (); )
178- {
179- String key = (String ) it .next ();
180- key = key .split ( " " )[0 ];
181-
182- if ( key .startsWith ( serviceType + "." ) )
183- {
184- result .add ( key .substring ( serviceType .length () + 1 ) );
178+ Set <Object > keys = provider .keySet ();
179+ for (Object o : keys ) {
180+ String key = (String ) o ;
181+ key = key .split (" " )[0 ];
182+
183+ if (key .startsWith (serviceType + "." )) {
184+ result .add (key .substring (serviceType .length () + 1 ));
185185 }
186- else if ( key .startsWith ( "Alg.Alias." + serviceType + "." ) )
187- {
186+ else if (key .startsWith ("Alg.Alias." + serviceType + "." )) {
188187 // This is an alias
189- result .add ( key .substring ( serviceType .length () + 11 ) );
188+ result .add (key .substring (serviceType .length () + 11 ) );
190189 }
191190 }
192191 }
193- return ( String []) result .toArray ( new String [result .size ()] );
192+ return result .toArray ( new String [result .size ()] );
194193 }
195194
196195 // ---------------------------------------------------------------
@@ -201,26 +200,18 @@ public static void main( final String[] args )
201200 String [] serviceTypes = getServiceTypes ();
202201 if ( serviceTypes != null )
203202 {
204- for ( int i = 0 ; i < serviceTypes .length ; i ++ )
205- {
206- String serviceType = serviceTypes [i ];
207- String [] serviceProviders = getCryptoImpls ( serviceType );
208- if ( serviceProviders != null )
209- {
210- System .out .println ( serviceType + ": provider list" );
211- for ( int j = 0 ; j < serviceProviders .length ; j ++ )
212- {
213- String provider = serviceProviders [j ];
214- System .out .println ( " " + provider );
203+ for (String serviceType : serviceTypes ) {
204+ String [] serviceProviders = getCryptoImpls (serviceType );
205+ if (serviceProviders != null ) {
206+ System .out .println (serviceType + ": provider list" );
207+ for (String provider : serviceProviders ) {
208+ System .out .println (" " + provider );
215209 }
216210 }
217- else
218- {
219- System .out .println ( serviceType + ": does not have any providers in this environment" );
211+ else {
212+ System .out .println (serviceType + ": does not have any providers in this environment" );
220213 }
221214 }
222215 }
223216 }
224- // ---------------------------------------------------------------
225- // ---------------------------------------------------------------
226217}
0 commit comments