public class SignedDataStreamDemoWithAdditionalSignerInfo extends java.lang.Object
A SDSEncodeListener
allows an application to update
a SignedDataStream
during the encoding phase.
In some situations it may be useful to supply information to a SignedDataStream
actually during encoding is performed. When implementing an SignedDataStream
encode listener an application has the chance to update the SignedDataStream
at two points during the encoding process: AFTER the content data has been
processed and any digest has been calulated (= BEFORE any signature value
is computed) and AFTER the signature values have been calculated. When doing
so an application has to implement two abstract methods: beforeComputeSignature
and
afterComputeSignature
(of course, an application may implement any of the two methods in a
way to do actually nothing (if no functionality is required)).
This demo uses the IAIK-CMS DefaultSDSEncodeListener
for adding a new SignerInfo to an already existing SignedDataStream "on the fly".
SignedDataStream
,
SDSEncodeListener
Constructor and Description |
---|
SignedDataStreamDemoWithAdditionalSignerInfo()
Constructor.
|
Modifier and Type | Method and Description |
---|---|
byte[] |
createSignedDataStream(byte[] message,
int mode)
Creates a CMS
SignedData object. |
byte[] |
getSignedDataStream(byte[] signedData,
byte[] message,
boolean writeAgain)
Parses a CMS
SignedData object and verifies the signatures
for all participated signers. |
static void |
main(java.lang.String[] argv)
The main method.
|
void |
start()
Starts the test.
|
public SignedDataStreamDemoWithAdditionalSignerInfo()
public byte[] createSignedDataStream(byte[] message, int mode) throws iaik.cms.CMSException, java.io.IOException
SignedData
object.
message
- the message to be signed, as byte representationmode
- the mode indicating whether to include the content
(SignedDataStream.IMPLICIT) or not (SignedDataStream.EXPLICIT)SignedData
object just creatediaik.cms.CMSException
- if the SignedData
object cannot
be createdjava.io.IOException
- if an I/O error occurspublic byte[] getSignedDataStream(byte[] signedData, byte[] message, boolean writeAgain) throws iaik.cms.CMSException, java.io.IOException, java.security.NoSuchAlgorithmException
SignedData
object and verifies the signatures
for all participated signers.signedData
- the SignedData, as BER encoded byte arraymessage
- the the message which was transmitted out-of-band (explicit signed)writeAgain
- whether to use a SDSEncodeListener to add a SignerInfo
and encode the SignedData againiaik.cms.CMSException
- if any signature does not verifyjava.io.IOException
- if an I/O error occursjava.security.NoSuchAlgorithmException
public void start()
public static void main(java.lang.String[] argv) throws java.io.IOException
java.io.IOException
- if an I/O error occurs when reading required keys
and certificates from files