Package org.apache.sshd.common.signature
Class AbstractSignature
- java.lang.Object
-
- org.apache.sshd.common.signature.AbstractSignature
-
- All Implemented Interfaces:
AlgorithmNameProvider
,Signature
- Direct Known Subclasses:
SignatureDSA
,SignatureECDSA
,SignatureEd25519
,SignatureRSA
public abstract class AbstractSignature extends Object implements Signature
Useful base class forSignature
implementation- Author:
- Apache MINA SSHD Project
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
AbstractSignature(String algorithm)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected Signature
doInitSignature(SessionContext session, String algo, Key key, boolean forSigning)
Initializes the internal signature instanceprotected boolean
doVerify(byte[] data)
protected Map.Entry<String,byte[]>
extractEncodedSignature(byte[] sig, Collection<String> expectedTypes)
Makes an attempt to detect if the signature is encoded or pure dataprotected Map.Entry<String,byte[]>
extractEncodedSignature(byte[] sig, Predicate<? super String> typeSelector)
String
getAlgorithm()
protected Signature
getSignature()
void
initSigner(SessionContext session, PrivateKey key)
void
initVerifier(SessionContext session, PublicKey key)
byte[]
sign(SessionContext session)
Compute the signatureString
toString()
void
update(SessionContext session, byte[] hash, int off, int len)
Update the computed signature with the given data-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.apache.sshd.common.signature.Signature
getSshAlgorithmName, update, verify
-
-
-
-
Constructor Detail
-
AbstractSignature
protected AbstractSignature(String algorithm)
-
-
Method Detail
-
getAlgorithm
public final String getAlgorithm()
- Specified by:
getAlgorithm
in interfaceAlgorithmNameProvider
-
doInitSignature
protected Signature doInitSignature(SessionContext session, String algo, Key key, boolean forSigning) throws GeneralSecurityException
Initializes the internal signature instance- Parameters:
session
- TheSessionContext
for calling this method - may benull
if not called within a session contextalgo
- The signature's algorithm namekey
- theKey
that is provided for initialization - aPrivateKey
for signing and aPublicKey
for verificationforSigning
- Iftrue
then it is being initialized for signing, otherwise for verifying a signature- Returns:
- The
Signature
instance - Throws:
GeneralSecurityException
- if failed to initialize
-
getSignature
protected Signature getSignature()
- Returns:
- The current
Signature
instance -null
if not initialized - See Also:
doInitSignature(SessionContext, String, Key, boolean)
-
sign
public byte[] sign(SessionContext session) throws Exception
Description copied from interface:Signature
Compute the signature- Specified by:
sign
in interfaceSignature
- Parameters:
session
- TheSessionContext
for calling this method - may benull
if not called within a session context- Returns:
- The signature value
- Throws:
Exception
- If failed to calculate the signature
-
initVerifier
public void initVerifier(SessionContext session, PublicKey key) throws Exception
- Specified by:
initVerifier
in interfaceSignature
- Parameters:
session
- TheSessionContext
for calling this method - may benull
if not called within a session contextkey
- ThePublicKey
to be used for verifying signatures- Throws:
Exception
- If failed to initialize
-
initSigner
public void initSigner(SessionContext session, PrivateKey key) throws Exception
- Specified by:
initSigner
in interfaceSignature
- Parameters:
session
- TheSessionContext
for calling this method - may benull
if not called within a session contextkey
- ThePrivateKey
to be used for signing- Throws:
Exception
- If failed to initialize
-
update
public void update(SessionContext session, byte[] hash, int off, int len) throws Exception
Description copied from interface:Signature
Update the computed signature with the given data- Specified by:
update
in interfaceSignature
- Parameters:
session
- TheSessionContext
for calling this method - may benull
if not called within a session contexthash
- The hash data bufferoff
- Offset of hash data in bufferlen
- Length of hash data- Throws:
Exception
- If failed to update
-
extractEncodedSignature
protected Map.Entry<String,byte[]> extractEncodedSignature(byte[] sig, Collection<String> expectedTypes)
Makes an attempt to detect if the signature is encoded or pure data- Parameters:
sig
- The original signatureexpectedTypes
- The expected encoded key types- Returns:
- A
AbstractMap.SimpleImmutableEntry
where first value is the key type and second value is the data -null
if not encoded
-
extractEncodedSignature
protected Map.Entry<String,byte[]> extractEncodedSignature(byte[] sig, Predicate<? super String> typeSelector)
-
doVerify
protected boolean doVerify(byte[] data) throws SignatureException
- Throws:
SignatureException
-
-