View Javadoc
1   /*
2    * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
3    * The software in this package is published under the terms of the CPAL v1.0
4    * license, a copy of which has been included with this distribution in the
5    * LICENSE.txt file.
6    */
7   package org.mule.api.security;
8   
9   import java.io.IOException;
10  
11  /**
12   * Configure indirect key stores.
13   * TLS/SSL connections are made on behalf of an entity, which can be anonymous or identified by a 
14   * certificate - this interface specifies how a keystore can be used to provide the certificates
15   * (and associated private keys) necessary for identification.
16   * 
17   * <p>The information specified in this interface is used to configure a key store indirectly.
18   * For more information see the documentation for the connector or protocol in question.
19   * The comments in {@link org.mule.api.security.tls.TlsConfiguration} may also be useful.</p>
20   * 
21   * <p><em>Programmers:</em> this information, once stored in and retrieved from properties via
22   * {@link org.mule.api.security.tls.TlsPropertiesMapper}, will provide a key manager factory via the {@link TlsDirectKeyStore}
23   * interface implemented by {@link org.mule.api.security.tls.TlsConfiguration}.  This can be associated with a socket
24   * factory via {@link org.mule.api.security.tls.TlsPropertiesSocketFactory}.</p>
25   */
26  public interface TlsIndirectKeyStore
27  {
28      
29      /**
30       * @return The location (resolved relative to the current classpath and file system, if possible)
31       * of the keystore that contains public certificates and private keys for identification.
32       */
33      String getClientKeyStore();
34  
35      /**
36       * @param name The location of the keystore that contains public certificates  and private keys 
37       * for identification.
38       * @throws IOException If the location cannot be resolved via the file system or classpath
39       */
40      void setClientKeyStore(String name) throws IOException;
41  
42      /**
43       * @return The password used to protect the keystore itself
44       */
45      String getClientKeyStorePassword();
46  
47      /**
48       * @param clientKeyStorePassword The password used to protect the keystore itself
49       */
50      void setClientKeyStorePassword(String clientKeyStorePassword);
51  
52      void setClientKeyStoreType(String clientKeyStoreType);
53  
54      /**
55       * @return The type of keystore used in {@link #setClientKeyStore(String)}
56       */
57      String getClientKeyStoreType();
58  
59  }
60  
61