Class AgentImpl

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable, java.nio.channels.Channel, SshAgent

    public class AgentImpl
    extends java.lang.Object
    implements SshAgent
    A local SSH agent implementation
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private java.util.List<java.util.Map.Entry<java.security.KeyPair,​java.lang.String>> keys  
      private static org.slf4j.Logger LOG  
      private java.util.concurrent.atomic.AtomicBoolean open  
    • Constructor Summary

      Constructors 
      Constructor Description
      AgentImpl()  
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void addIdentity​(java.security.KeyPair key, java.lang.String comment, SshAgentKeyConstraint... constraints)
      Adds a key to the agent.
      void close()  
      java.lang.Iterable<? extends java.util.Map.Entry<java.security.PublicKey,​java.lang.String>> getIdentities()  
      protected static java.util.Map.Entry<java.security.KeyPair,​java.lang.String> getKeyPair​(java.util.Collection<? extends java.util.Map.Entry<java.security.KeyPair,​java.lang.String>> keys, java.security.PublicKey key)  
      boolean isOpen()  
      void removeAllIdentities()  
      void removeIdentity​(java.security.PublicKey key)  
      java.security.KeyPair resolveLocalIdentity​(java.security.PublicKey key)
      Used for reporting client-side public key authentication via agent
      java.util.Map.Entry<java.lang.String,​byte[]> sign​(SessionContext session, java.security.PublicKey key, java.lang.String algo, byte[] data)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • LOG

        private static final org.slf4j.Logger LOG
      • keys

        private final java.util.List<java.util.Map.Entry<java.security.KeyPair,​java.lang.String>> keys
      • open

        private final java.util.concurrent.atomic.AtomicBoolean open
    • Constructor Detail

      • AgentImpl

        public AgentImpl()
    • Method Detail

      • isOpen

        public boolean isOpen()
        Specified by:
        isOpen in interface java.nio.channels.Channel
      • getIdentities

        public java.lang.Iterable<? extends java.util.Map.Entry<java.security.PublicKey,​java.lang.String>> getIdentities()
                                                                                                                        throws java.io.IOException
        Specified by:
        getIdentities in interface SshAgent
        Throws:
        java.io.IOException
      • sign

        public java.util.Map.Entry<java.lang.String,​byte[]> sign​(SessionContext session,
                                                                       java.security.PublicKey key,
                                                                       java.lang.String algo,
                                                                       byte[] data)
                                                                throws java.io.IOException
        Specified by:
        sign in interface SshAgent
        Parameters:
        session - The current SessionContext
        key - The PublicKey to use for signing
        algo - Recommended signature algorithm - if null/empty then one will be selected based on the key type and/or signature factories. Note: even if specific algorithm specified, the implementation may disregard and choose another
        data - Data to sign
        Returns:
        used algorithm + signed data - using the identity
        Throws:
        java.io.IOException - If failed to sign
      • addIdentity

        public void addIdentity​(java.security.KeyPair key,
                                java.lang.String comment,
                                SshAgentKeyConstraint... constraints)
                         throws java.io.IOException
        Description copied from interface: SshAgent
        Adds a key to the agent.
        Specified by:
        addIdentity in interface SshAgent
        Parameters:
        key - KeyPair to add
        comment - to associate with the key
        constraints - SshAgentKeyConstraints for this key to pass on to the agent
        Throws:
        java.io.IOException - if an error in the communication with the agent occurred, or the agent did not return a reply indicating successful addition of the key
      • resolveLocalIdentity

        public java.security.KeyPair resolveLocalIdentity​(java.security.PublicKey key)
        Description copied from interface: SshAgent
        Used for reporting client-side public key authentication via agent
        Specified by:
        resolveLocalIdentity in interface SshAgent
        Parameters:
        key - The PublicKey that is going to be used
        Returns:
        The KeyPair identity for it - if available - null otherwise
      • removeIdentity

        public void removeIdentity​(java.security.PublicKey key)
                            throws java.io.IOException
        Specified by:
        removeIdentity in interface SshAgent
        Throws:
        java.io.IOException
      • removeAllIdentities

        public void removeAllIdentities()
                                 throws java.io.IOException
        Specified by:
        removeAllIdentities in interface SshAgent
        Throws:
        java.io.IOException
      • close

        public void close()
                   throws java.io.IOException
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.nio.channels.Channel
        Specified by:
        close in interface java.io.Closeable
        Throws:
        java.io.IOException
      • getKeyPair

        protected static java.util.Map.Entry<java.security.KeyPair,​java.lang.String> getKeyPair​(java.util.Collection<? extends java.util.Map.Entry<java.security.KeyPair,​java.lang.String>> keys,
                                                                                                      java.security.PublicKey key)