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 java.lang.Object implements Signature
Useful base class forSignature
implementation
-
-
Field Summary
Fields Modifier and Type Field Description private java.lang.String
algorithm
private java.security.Signature
signatureInstance
-
Constructor Summary
Constructors Modifier Constructor Description protected
AbstractSignature(java.lang.String algorithm)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected java.security.Signature
doInitSignature(SessionContext session, java.lang.String algo, java.security.Key key, boolean forSigning)
Initializes the internal signature instanceprotected boolean
doVerify(byte[] data)
protected java.util.Map.Entry<java.lang.String,byte[]>
extractEncodedSignature(byte[] sig, java.util.Collection<java.lang.String> expectedTypes)
Makes an attempt to detect if the signature is encoded or pure dataprotected java.util.Map.Entry<java.lang.String,byte[]>
extractEncodedSignature(byte[] sig, java.util.function.Predicate<? super java.lang.String> typeSelector)
java.lang.String
getAlgorithm()
protected java.security.Signature
getSignature()
void
initSigner(SessionContext session, java.security.PrivateKey key)
void
initVerifier(SessionContext session, java.security.PublicKey key)
byte[]
sign(SessionContext session)
Compute the signaturejava.lang.String
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
-
-
-
-
Method Detail
-
getAlgorithm
public final java.lang.String getAlgorithm()
- Specified by:
getAlgorithm
in interfaceAlgorithmNameProvider
-
doInitSignature
protected java.security.Signature doInitSignature(SessionContext session, java.lang.String algo, java.security.Key key, boolean forSigning) throws java.security.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:
java.security.GeneralSecurityException
- if failed to initialize
-
getSignature
protected java.security.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 java.lang.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:
java.lang.Exception
- If failed to calculate the signature
-
initVerifier
public void initVerifier(SessionContext session, java.security.PublicKey key) throws java.lang.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:
java.lang.Exception
- If failed to initialize
-
initSigner
public void initSigner(SessionContext session, java.security.PrivateKey key) throws java.lang.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:
java.lang.Exception
- If failed to initialize
-
update
public void update(SessionContext session, byte[] hash, int off, int len) throws java.lang.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:
java.lang.Exception
- If failed to update
-
extractEncodedSignature
protected java.util.Map.Entry<java.lang.String,byte[]> extractEncodedSignature(byte[] sig, java.util.Collection<java.lang.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 java.util.Map.Entry<java.lang.String,byte[]> extractEncodedSignature(byte[] sig, java.util.function.Predicate<? super java.lang.String> typeSelector)
-
doVerify
protected boolean doVerify(byte[] data) throws java.security.SignatureException
- Throws:
java.security.SignatureException
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
-