Class KeyManager

  • All Implemented Interfaces:
    adams.core.AdditionalInformationHandler, adams.core.CleanUpHandler, adams.core.Destroyable, adams.core.GlobalInfoSupporter, adams.core.logging.LoggingLevelHandler, adams.core.logging.LoggingSupporter, adams.core.option.OptionHandler, adams.core.QuickInfoSupporter, adams.core.ShallowCopySupporter<adams.flow.core.Actor>, adams.core.SizeOfHandler, adams.core.Stoppable, adams.core.StoppableWithFeedback, adams.core.VariablesInspectionHandler, adams.event.VariableChangeListener, adams.flow.core.Actor, adams.flow.core.ErrorHandler, adams.flow.core.InteractiveActor, adams.flow.core.KeyManagerFactoryProvider, adams.flow.core.OptionalPasswordPrompt, adams.flow.core.StopModeSupporter, Serializable, Comparable

    public class KeyManager
    extends adams.flow.standalone.AbstractStandalone
    implements adams.flow.core.OptionalPasswordPrompt, adams.flow.core.KeyManagerFactoryProvider
    Initializes a KeyManagerFactory instance using the specified keystore file and algorithm.
    For keystore types, please refer to:
    https://docs.oracle.com/en/java/javase/11/docs/specs/security/standard-names.html#keystore-types

    -logging-level <OFF|SEVERE|WARNING|INFO|CONFIG|FINE|FINER|FINEST> (property: loggingLevel)
        The logging level for outputting errors and debugging output.
        default: WARNING
     
    -name <java.lang.String> (property: name)
        The name of the actor.
        default: KeyManager
     
    -annotation <adams.core.base.BaseAnnotation> (property: annotations)
        The annotations to attach to this actor.
        default:
     
    -skip <boolean> (property: skip)
        If set to true, transformation is skipped and the input token is just forwarded
        as it is.
        default: false
     
    -stop-flow-on-error <boolean> (property: stopFlowOnError)
        If set to true, the flow execution at this level gets stopped in case this
        actor encounters an error; the error gets propagated; useful for critical
        actors.
        default: false
     
    -silent <boolean> (property: silent)
        If enabled, then no errors are output in the console; Note: the enclosing
        actor handler must have this enabled as well.
        default: false
     
    -keystore-type <java.lang.String> (property: keystoreType)
        The type of the keystore, eg PKCS12 or JKS.
        default: PKCS12
     
    -keystore-file <adams.core.io.PlaceholderFile> (property: keystoreFile)
        The location of the keystore.
        default: ${CWD}
     
    -keystore-passphrase <adams.core.base.BasePassword> (property: keystorePassphrase)
        The passphrase for the keystore file, ignored if empty.
     
    -prompt-for-password <boolean> (property: promptForPassword)
        If enabled, the user gets prompted for enter a password if none has been
        provided in the setup.
        default: false
     
    -stop-if-canceled <boolean> (property: stopFlowIfCanceled)
        If enabled, the flow gets stopped in case the user cancels the dialog.
        default: false
     
    -custom-stop-message <java.lang.String> (property: customStopMessage)
        The custom stop message to use in case a user cancelation stops the flow
        (default is the full name of the actor)
        default:
     
    -stop-mode <GLOBAL|STOP_RESTRICTOR> (property: stopMode)
        The stop mode to use.
        default: GLOBAL
     
    -algorithm <java.lang.String> (property: algorithm)
        The algorithm to use.
        default: SunX509
     
    Author:
    FracPete (fracpete at waikato dot ac dot nz)
    See Also:
    Serialized Form
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected adams.core.base.BasePassword m_ActualPassphrase
      the actual password to use.
      protected String m_Algorithm
      the algorithm to use.
      protected String m_CustomStopMessage
      the custom stop message to use if flow gets stopped due to cancelation.
      protected KeyManagerFactory m_KeyManagerFactory
      the key manager factory in use.
      protected adams.core.io.PlaceholderFile m_KeystoreFile
      the location of the keystore.
      protected adams.core.base.BasePassword m_KeystorePassphrase
      the passphrase for the keystore file.
      protected String m_KeystoreType
      the keystore type.
      protected boolean m_PromptForPassword
      whether to prompt the user for a password if none provided.
      protected boolean m_StopFlowIfCanceled
      whether to stop the flow if canceled.
      protected adams.flow.core.StopMode m_StopMode
      how to perform the stop.
      • Fields inherited from class adams.flow.core.AbstractActor

        m_Annotations, m_BackupState, m_DetectedObjectVariables, m_DetectedVariables, m_ErrorHandler, m_Executed, m_Executing, m_ExecutionListeningSupporter, m_FullName, m_LoggingPrefix, m_Name, m_Parent, m_ScopeHandler, m_Self, m_Silent, m_Skip, m_StopFlowOnError, m_StopMessage, m_Stopped, m_StorageHandler, m_VariablesUpdated
      • Fields inherited from class adams.core.option.AbstractOptionHandler

        m_OptionManager
      • Fields inherited from class adams.core.logging.LoggingObject

        m_Logger, m_LoggingIsEnabled, m_LoggingLevel
      • Fields inherited from interface adams.flow.core.Actor

        FILE_EXTENSION, FILE_EXTENSION_GZ
      • Fields inherited from interface adams.flow.core.InteractiveActor

        INTERACTION_CANCELED
    • Constructor Summary

      Constructors 
      Constructor Description
      KeyManager()  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      String algorithmTipText()
      Returns the tip text for this property.
      String customStopMessageTipText()
      Returns the tip text for this property.
      void defineOptions()
      Adds options to the internal list of options.
      protected String doExecute()
      Executes the flow item.
      String doInteract()
      Performs the interaction with the user.
      String doInteractHeadless()
      Performs the interaction with the user in a headless environment.
      String getAlgorithm()
      Returns the algorithm to use.
      String getCustomStopMessage()
      Returns the custom message to use when stopping the flow.
      KeyManagerFactory getKeyManagerFactory()
      Returns the KeyManagerFactory instance.
      adams.core.io.PlaceholderFile getKeystoreFile()
      Returns the location of the keystore file.
      adams.core.base.BasePassword getKeystorePassphrase()
      Returns the passphrase for the keystore file, ignored if empty.
      String getKeystoreType()
      Returns the type of the keystore.
      boolean getPromptForPassword()
      Returns whether to prompt for a password if none currently provided.
      String getQuickInfo()
      Returns a quick info about the actor, which will be displayed in the GUI.
      boolean getStopFlowIfCanceled()
      Returns whether to stop the flow if dialog canceled.
      adams.flow.core.StopMode getStopMode()
      Returns the stop mode.
      String globalInfo()
      Returns a string describing the object.
      String keystoreFileTipText()
      Returns the tip text for this property.
      String keystorePassphraseTipText()
      Returns the tip text for this property.
      String keystoreTypeTipText()
      Returns the tip text for this property.
      String promptForPasswordTipText()
      Returns the tip text for this property.
      protected void reset()
      Resets the scheme.
      void setAlgorithm​(String value)
      Sets the algorithm to use.
      void setCustomStopMessage​(String value)
      Sets the custom message to use when stopping the flow.
      void setKeystoreFile​(adams.core.io.PlaceholderFile value)
      Sets the location of the keystore file.
      void setKeystorePassphrase​(adams.core.base.BasePassword value)
      Sets the passphrase for the keystore file, ignored if empty.
      void setKeystoreType​(String value)
      Sets the type of the keystore.
      void setPromptForPassword​(boolean value)
      Sets whether to prompt for a password if none currently provided.
      void setStopFlowIfCanceled​(boolean value)
      Sets whether to stop the flow if dialog canceled.
      void setStopMode​(adams.flow.core.StopMode value)
      Sets the stop mode.
      String stopFlowIfCanceledTipText()
      Returns the tip text for this property.
      String stopModeTipText()
      Returns the tip text for this property.
      boolean supportsHeadlessInteraction()
      Returns whether headless interaction is supported.
      • Methods inherited from class adams.flow.standalone.AbstractStandalone

        preExecute
      • Methods inherited from class adams.flow.core.AbstractActor

        annotationsTipText, backupState, canInspectOptions, canPerformSetUpCheck, cleanUp, compareTo, configureLogger, destroy, equals, execute, finalUpdateVariables, findVariables, findVariables, forceVariables, forCommandLine, forName, forName, getAdditionalInformation, getAnnotations, getDefaultName, getDetectedVariables, getErrorHandler, getFlowActors, getFlowExecutionListeningSupporter, getFullName, getName, getNextSibling, getParent, getParentComponent, getPreviousSibling, getRoot, getScopeHandler, getSilent, getSkip, getStopFlowOnError, getStopMessage, getStorageHandler, getVariables, handleError, handleException, hasErrorHandler, hasStopMessage, index, initialize, isBackedUp, isExecuted, isExecuting, isFinished, isHeadless, isStopped, nameTipText, performSetUpChecks, performVariableChecks, postExecute, pruneBackup, pruneBackup, restoreState, setAnnotations, setErrorHandler, setName, setParent, setSilent, setSkip, setStopFlowOnError, setUp, setVariables, shallowCopy, shallowCopy, silentTipText, sizeOf, skipTipText, stopExecution, stopExecution, stopFlowOnErrorTipText, updateDetectedVariables, updatePrefix, updateVariables, variableChanged, wrapUp
      • Methods inherited from class adams.core.option.AbstractOptionHandler

        cleanUpOptions, finishInit, getDefaultLoggingLevel, getOptionManager, loggingLevelTipText, newOptionManager, setLoggingLevel, toCommandLine, toString
      • Methods inherited from class adams.core.logging.LoggingObject

        getLogger, getLoggingLevel, initializeLogging, isLoggingEnabled
      • Methods inherited from interface adams.flow.core.Actor

        cleanUp, compareTo, destroy, equals, execute, findVariables, getAnnotations, getDefaultName, getDetectedVariables, getErrorHandler, getFlowExecutionListeningSupporter, getFullName, getName, getNextSibling, getParent, getParentComponent, getPreviousSibling, getRoot, getScopeHandler, getSilent, getSkip, getStopFlowOnError, getStopMessage, getStorageHandler, getVariables, handleError, hasErrorHandler, hasStopMessage, index, isExecuted, isFinished, isHeadless, isStopped, setAnnotations, setErrorHandler, setName, setParent, setSilent, setSkip, setStopFlowOnError, setUp, setVariables, shallowCopy, shallowCopy, sizeOf, stopExecution, stopExecution, toCommandLine, variableChanged, wrapUp
      • Methods inherited from interface adams.core.AdditionalInformationHandler

        getAdditionalInformation
      • Methods inherited from interface adams.core.logging.LoggingLevelHandler

        getLoggingLevel, setLoggingLevel
      • Methods inherited from interface adams.core.logging.LoggingSupporter

        getLogger, isLoggingEnabled
      • Methods inherited from interface adams.core.option.OptionHandler

        cleanUpOptions, getOptionManager
      • Methods inherited from interface adams.core.VariablesInspectionHandler

        canInspectOptions
    • Field Detail

      • m_KeystoreType

        protected String m_KeystoreType
        the keystore type.
      • m_KeystoreFile

        protected adams.core.io.PlaceholderFile m_KeystoreFile
        the location of the keystore.
      • m_KeystorePassphrase

        protected adams.core.base.BasePassword m_KeystorePassphrase
        the passphrase for the keystore file.
      • m_ActualPassphrase

        protected adams.core.base.BasePassword m_ActualPassphrase
        the actual password to use.
      • m_PromptForPassword

        protected boolean m_PromptForPassword
        whether to prompt the user for a password if none provided.
      • m_StopFlowIfCanceled

        protected boolean m_StopFlowIfCanceled
        whether to stop the flow if canceled.
      • m_CustomStopMessage

        protected String m_CustomStopMessage
        the custom stop message to use if flow gets stopped due to cancelation.
      • m_StopMode

        protected adams.flow.core.StopMode m_StopMode
        how to perform the stop.
      • m_Algorithm

        protected String m_Algorithm
        the algorithm to use.
      • m_KeyManagerFactory

        protected transient KeyManagerFactory m_KeyManagerFactory
        the key manager factory in use.
    • Constructor Detail

      • KeyManager

        public KeyManager()
    • Method Detail

      • globalInfo

        public String globalInfo()
        Returns a string describing the object.
        Specified by:
        globalInfo in interface adams.core.GlobalInfoSupporter
        Specified by:
        globalInfo in class adams.core.option.AbstractOptionHandler
        Returns:
        a description suitable for displaying in the gui
      • defineOptions

        public void defineOptions()
        Adds options to the internal list of options.
        Specified by:
        defineOptions in interface adams.core.option.OptionHandler
        Overrides:
        defineOptions in class adams.flow.core.AbstractActor
      • reset

        protected void reset()
        Resets the scheme.
        Overrides:
        reset in class adams.flow.core.AbstractActor
      • getQuickInfo

        public String getQuickInfo()
        Returns a quick info about the actor, which will be displayed in the GUI.
        Specified by:
        getQuickInfo in interface adams.flow.core.Actor
        Specified by:
        getQuickInfo in interface adams.core.QuickInfoSupporter
        Overrides:
        getQuickInfo in class adams.flow.core.AbstractActor
        Returns:
        null if no info available, otherwise short string
      • setKeystoreType

        public void setKeystoreType​(String value)
        Sets the type of the keystore.
        Parameters:
        value - the type
      • getKeystoreType

        public String getKeystoreType()
        Returns the type of the keystore.
        Returns:
        the type
      • keystoreTypeTipText

        public String keystoreTypeTipText()
        Returns the tip text for this property.
        Returns:
        tip text for this property suitable for displaying in the GUI or for listing the options.
      • setKeystoreFile

        public void setKeystoreFile​(adams.core.io.PlaceholderFile value)
        Sets the location of the keystore file.
        Parameters:
        value - the key file
      • getKeystoreFile

        public adams.core.io.PlaceholderFile getKeystoreFile()
        Returns the location of the keystore file.
        Returns:
        the key file
      • keystoreFileTipText

        public String keystoreFileTipText()
        Returns the tip text for this property.
        Returns:
        tip text for this property suitable for displaying in the GUI or for listing the options.
      • setKeystorePassphrase

        public void setKeystorePassphrase​(adams.core.base.BasePassword value)
        Sets the passphrase for the keystore file, ignored if empty.
        Parameters:
        value - the passphrase
      • getKeystorePassphrase

        public adams.core.base.BasePassword getKeystorePassphrase()
        Returns the passphrase for the keystore file, ignored if empty.
        Returns:
        the passphrase
      • keystorePassphraseTipText

        public String keystorePassphraseTipText()
        Returns the tip text for this property.
        Returns:
        tip text for this property suitable for displaying in the GUI or for listing the options.
      • setPromptForPassword

        public void setPromptForPassword​(boolean value)
        Sets whether to prompt for a password if none currently provided.
        Specified by:
        setPromptForPassword in interface adams.flow.core.OptionalPasswordPrompt
        Parameters:
        value - true if to prompt for a password
      • getPromptForPassword

        public boolean getPromptForPassword()
        Returns whether to prompt for a password if none currently provided.
        Specified by:
        getPromptForPassword in interface adams.flow.core.OptionalPasswordPrompt
        Returns:
        true if to prompt for a password
      • promptForPasswordTipText

        public String promptForPasswordTipText()
        Returns the tip text for this property.
        Specified by:
        promptForPasswordTipText in interface adams.flow.core.OptionalPasswordPrompt
        Returns:
        tip text for this property suitable for displaying in the GUI or for listing the options.
      • setStopFlowIfCanceled

        public void setStopFlowIfCanceled​(boolean value)
        Sets whether to stop the flow if dialog canceled.
        Specified by:
        setStopFlowIfCanceled in interface adams.flow.core.InteractiveActor
        Parameters:
        value - if true flow gets stopped if dialog canceled
      • getStopFlowIfCanceled

        public boolean getStopFlowIfCanceled()
        Returns whether to stop the flow if dialog canceled.
        Specified by:
        getStopFlowIfCanceled in interface adams.flow.core.InteractiveActor
        Returns:
        true if the flow gets stopped if dialog canceled
      • stopFlowIfCanceledTipText

        public String stopFlowIfCanceledTipText()
        Returns the tip text for this property.
        Specified by:
        stopFlowIfCanceledTipText in interface adams.flow.core.InteractiveActor
        Returns:
        tip text for this property suitable for displaying in the GUI or for listing the options.
      • setCustomStopMessage

        public void setCustomStopMessage​(String value)
        Sets the custom message to use when stopping the flow.
        Specified by:
        setCustomStopMessage in interface adams.flow.core.InteractiveActor
        Parameters:
        value - the stop message
      • getCustomStopMessage

        public String getCustomStopMessage()
        Returns the custom message to use when stopping the flow.
        Specified by:
        getCustomStopMessage in interface adams.flow.core.InteractiveActor
        Returns:
        the stop message
      • customStopMessageTipText

        public String customStopMessageTipText()
        Returns the tip text for this property.
        Specified by:
        customStopMessageTipText in interface adams.flow.core.InteractiveActor
        Returns:
        tip text for this property suitable for displaying in the GUI or for listing the options.
      • setStopMode

        public void setStopMode​(adams.flow.core.StopMode value)
        Sets the stop mode.
        Specified by:
        setStopMode in interface adams.flow.core.StopModeSupporter
        Parameters:
        value - the mode
      • getStopMode

        public adams.flow.core.StopMode getStopMode()
        Returns the stop mode.
        Specified by:
        getStopMode in interface adams.flow.core.StopModeSupporter
        Returns:
        the mode
      • stopModeTipText

        public String stopModeTipText()
        Returns the tip text for this property.
        Specified by:
        stopModeTipText in interface adams.flow.core.StopModeSupporter
        Returns:
        tip text for this property suitable for displaying in the GUI or for listing the options.
      • setAlgorithm

        public void setAlgorithm​(String value)
        Sets the algorithm to use.
        Parameters:
        value - the algorithm
      • getAlgorithm

        public String getAlgorithm()
        Returns the algorithm to use.
        Returns:
        the algorithm
      • algorithmTipText

        public String algorithmTipText()
        Returns the tip text for this property.
        Returns:
        tip text for this property suitable for displaying in the GUI or for listing the options.
      • doInteract

        public String doInteract()
        Performs the interaction with the user.
        Specified by:
        doInteract in interface adams.flow.core.InteractiveActor
        Returns:
        null if successfully interacted, otherwise error message
      • supportsHeadlessInteraction

        public boolean supportsHeadlessInteraction()
        Returns whether headless interaction is supported.
        Specified by:
        supportsHeadlessInteraction in interface adams.flow.core.InteractiveActor
        Returns:
        true if interaction in headless environment is possible
      • doInteractHeadless

        public String doInteractHeadless()
        Performs the interaction with the user in a headless environment.
        Specified by:
        doInteractHeadless in interface adams.flow.core.InteractiveActor
        Returns:
        null if successfully interacted, otherwise error message
      • getKeyManagerFactory

        public KeyManagerFactory getKeyManagerFactory()
        Returns the KeyManagerFactory instance.
        Specified by:
        getKeyManagerFactory in interface adams.flow.core.KeyManagerFactoryProvider
        Returns:
        the instance, null if none available
      • doExecute

        protected String doExecute()
        Executes the flow item.
        Specified by:
        doExecute in class adams.flow.core.AbstractActor
        Returns:
        null if everything is fine, otherwise error message