public abstract class DigestEngine extends MessageDigest implements Digest
Constructor and Description |
---|
DigestEngine(String alg)
Instantiate the engine.
|
Modifier and Type | Method and Description |
---|---|
protected Digest |
copyState(DigestEngine dest)
This function copies the internal buffering state to some other instance of a class extending
DigestEngine . |
byte[] |
digest()
Finalize the current hash computation and return the hash value in a newly-allocated array.
|
byte[] |
digest(byte[] input)
Input some bytes, then finalize the current hash computation and return the hash value in a
newly-allocated array.
|
int |
digest(byte[] buf,
int offset,
int len)
Finalize the current hash computation and store the hash value in the provided output buffer.
|
protected abstract void |
doInit()
This function is called at object creation time; the implementation should use it to perform
initialization tasks.
|
protected abstract void |
doPadding(byte[] buf,
int off)
Perform the final padding and store the result in the provided buffer.
|
protected abstract void |
engineReset()
Reset the hash algorithm state.
|
protected int |
flush()
Flush internal buffers, so that less than a block of data may at most be upheld.
|
protected byte[] |
getBlockBuffer()
Get a reference to an internal buffer with the same size than a block.
|
protected long |
getBlockCount()
Get the "block count": this is the number of times the
processBlock(byte[]) method has been
invoked for the current hash operation. |
protected int |
getInternalBlockLength()
Get the internal block length.
|
protected abstract void |
processBlock(byte[] data)
Process one block of data.
|
void |
reset()
Reset the object: this makes it suitable for a new hash computation.
|
void |
update(byte input)
Insert one more input data byte.
|
void |
update(byte[] input)
Insert some more bytes.
|
void |
update(byte[] input,
int offset,
int len)
Insert some more bytes.
|
clone, getAlgorithm, getDigestLength, getInstance, getInstance, getInstance, getProvider, isEqual, toString, update
engineDigest, engineDigest, engineGetDigestLength, engineUpdate, engineUpdate, engineUpdate
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
copy, getBlockLength, getDigestLength, toString
public DigestEngine(String alg)
protected abstract void engineReset()
engineReset
in class MessageDigestSpi
protected abstract void processBlock(byte[] data)
data
- the data blockprotected abstract void doPadding(byte[] buf, int off)
flush()
and then update(byte)
with the appropriate padding data in order to getData
the full input data.buf
- the output bufferoff
- the output offsetprotected abstract void doInit()
MessageDigestSpi.engineGetDigestLength()
public byte[] digest()
Digest
digest
in interface Digest
digest
in class MessageDigest
Digest
public byte[] digest(byte[] input)
Digest
digest
in interface Digest
digest
in class MessageDigest
input
- the input dataDigest
public int digest(byte[] buf, int offset, int len)
Digest
len
parameter contains the maximum number of bytes that should be written; no more
bytes than the natural hash function output length will be produced. If len
is smaller
than the natural hash output length, the hash output is truncated to its first len
bytes. The object is resetted.digest
in interface Digest
digest
in class MessageDigest
buf
- the output bufferoffset
- the output offset within outbuf
len
- the requested hash output length (in bytes)outbuf
Digest
public void reset()
Digest
reset
in interface Digest
reset
in class MessageDigest
Digest
public void update(byte input)
Digest
update
in interface Digest
update
in class MessageDigest
input
- the input byteDigest
public void update(byte[] input)
Digest
update
in interface Digest
update
in class MessageDigest
input
- the data bytesDigest
public void update(byte[] input, int offset, int len)
Digest
update
in interface Digest
update
in class MessageDigest
input
- the data bufferoffset
- the data offset in inbuf
len
- the data length (in bytes)Digest
protected int getInternalBlockLength()
processBlock(byte[])
. The default implementation of this method calls Digest.getBlockLength()
and returns the same value. Overriding this method is useful when the
advertised block length (which is used, for instance, by HMAC) is suboptimal with regards to
internal buffering needs.protected final int flush()
protected final byte[] getBlockBuffer()
flush()
: if flush()
return the value n
, then the first n
bytes of the array returned by this method
are the n
bytes of input data which are still unprocessed. The values of the remaining
bytes are undefined and may be altered at will.protected long getBlockCount()
processBlock(byte[])
method has been
invoked for the current hash operation. That counter is incremented after the call to
processBlock(byte[])
.protected Digest copyState(DigestEngine dest)
DigestEngine
. It returns a reference to the copy. This method is intended to be called
by the implementation of the Digest.copy()
method.dest
- the copydest
Copyright © 2020. All rights reserved.