1   package com.atlassian.security.auth.trustedapps;
2   
3   import java.security.KeyPair;
4   import java.security.NoSuchAlgorithmException;
5   import java.security.NoSuchProviderException;
6   import java.util.HashMap;
7   import java.util.Map;
8   
9   /**
10   * Default implementation. Not thread safe.
11   */
12  public class DefaultTrustedApplicationsManager implements TrustedApplicationsManager
13  {
14      protected final CurrentApplication application;
15      protected final Map<String, TrustedApplication> trustedApps;
16  
17      public DefaultTrustedApplicationsManager(final CurrentApplication application, final Map<String, TrustedApplication> trustedApps)
18      {
19          Null.not("application", application);
20          Null.not("trustedApps", trustedApps);
21  
22          this.application = application;
23          this.trustedApps = trustedApps;
24      }
25  
26      // ////CLOVER:OFF
27      public DefaultTrustedApplicationsManager()
28      {
29          this(new BouncyCastleEncryptionProvider());
30      }
31  
32      // /CLOVER:ON
33  
34      public DefaultTrustedApplicationsManager(final EncryptionProvider encryptionProvider)
35      {
36          try
37          {
38              final KeyPair keyPair = encryptionProvider.generateNewKeyPair();
39              Null.not("keyPair", keyPair);
40  
41              application = new DefaultCurrentApplication(encryptionProvider, keyPair.getPublic(), keyPair.getPrivate(),
42                  encryptionProvider.generateUID());
43              trustedApps = new HashMap<String, TrustedApplication>();
44          }
45          catch (final NoSuchAlgorithmException e)
46          {
47              throw new AssertionError(e);
48          }
49          catch (final NoSuchProviderException e)
50          {
51              throw new AssertionError(e);
52          }
53      }
54  
55      public CurrentApplication getCurrentApplication()
56      {
57          return application;
58      }
59  
60      public TrustedApplication getTrustedApplication(final String id)
61      {
62          return trustedApps.get(id);
63      }
64  }