#include <QtCrypto>
Inheritance diagram for QCA::SecureMessage:
SecureMessage presents a unified interface for working with both OpenPGP and CMS (S/MIME) messages. Prepare the object by calling setFormat(), setRecipient(), and setSigner() as necessary, and then begin the operation by calling an appropriate 'start' function, such as startSign().
Here is an example of how to perform a Clearsign operation using PGP:
// first make the SecureMessageKey PGPKey myPGPKey = getSecretKeyFromSomewhere(); SecureMessageKey key; key.setPGPSecretKey(myPGPKey); // our data to sign QByteArray plain = "Hello, world"; // let's do it OpenPGP pgp; SecureMessage msg(&pgp); msg.setSigner(key); msg.startSign(SecureMessage::Clearsign); msg.update(plain); msg.end(); msg.waitForFinished(-1); if(msg.success()) { QByteArray result = msg.read(); // result now contains the clearsign text data } else { // error ... }
Performing a CMS sign operation is similar. Simply set up the SecureMessageKey with a Certificate instead of a PGPKey, and operate on a CMS object instead of an OpenPGP object.
|
The type of secure message.
|
|
The type of message signature.
|
|
Formats for secure messages.
|
|
|
Create a new secure message. This constructor uses an existing SecureMessageSystem object (for example, an OpenPGP or CMS object) to generate a specific kind of secure message.
|
|
The Type of secure message.
Reimplemented from QCA::Algorithm. |
|
Test if the message type supports multiple (parallel) signatures.
|
|
True if the SecureMessageSystem can clearsign messages.
|
|
True if the SecureMessageSystem can both sign and encrypt (in the same operation).
|
|
Reset the object state to that of original construction. Now a new operation can be performed immediately. |
|
Returns true if bundling of the signer certificate chain is enabled.
|
|
Returns true if inclusion of S/MIME attributes is enabled.
|
|
Return the format type set for this message.
|
|
Return the recipient(s) set for this message with setRecipient() or setRecipients().
|
|
Return the signer(s) set for this message with setSigner() or setSigners().
|
|
For CMS only, this will bundle the signer certificate chain into the message. This allows a message to be verified on its own, without the need to have obtained the signer's certificate in advance. Email clients using S/MIME often bundle the signer, greatly simplifying key management. This behavior is enabled by default. |
|
For CMS only, this will put extra attributes into the message related to S/MIME, such as the preferred type of algorithm to use in replies. The attributes used are decided by the provider. This behavior is enabled by default. |
|
Set the Format used for messages. The default is Binary.
|
|
Set the recipient for an encrypted message.
|
|
Set the list of recipients for an encrypted message. For a list with one item, this has the same effect as setRecipient.
|
|
Set the signer for a signed message. This is used for both creating signed messages as well as for verifying CMS messages that have no signer bundled.
|
|
Set the list of signers for a signed message. This is used for both creating signed messages as well as for verifying CMS messages that have no signer bundled. For a list with one item, this has the same effect as setSigner.
|
|
Start an encryption operation. You will normally use this with some code along these lines: encryptingObj.startEncrypt();
encryptingObj.update(message);
// perhaps some more update()s
encryptingObj.end();
Each update() may (or may not) result in some encrypted data, as indicated by the readyRead() signal being emitted. Alternatively, you can wait until the whole message is available (using either waitForFinished(), or use the finished() signal. The encrypted message can then be read using the read() method. |
|
Start an decryption operation. You will normally use this with some code along these lines: decryptingObj.startEncrypt();
decryptingObj.update(message);
// perhaps some more update()s
decryptingObj.end();
Each update() may (or may not) result in some decrypted data, as indicated by the readyRead() signal being emitted. Alternatively, you can wait until the whole message is available (using either waitForFinished(), or the finished() signal). The decrypted message can then be read using the read() method.
|
|
Start a signing operation. You will normally use this with some code along these lines: signingObj.startSign(QCA::SecureMessage::Detached) signingObj.update(message); // perhaps some more update()s signingObj.end(); For Detached signatures, you won't get any results until the whole process is done - you either waitForFinished(), or use the finished() signal, to figure out when you can get the signature (using the signature() method, not using read()). For other formats, you can use the readyRead() signal to determine when there may be part of a signed message to read().
|
|
Start a verification operation.
|
|
Start a combined signing and encrypting operation. You use this in the same way as startEncrypt().
|
|
Process a message (or the next part of a message) in the current operation. You need to have already set up the message (startEncrypt(), startDecrypt(), startSign(), startSignAndEncrypt() and startVerify()) before calling this method.
|
|
Read the available data.
|
|
The number of bytes available to be read.
|
|
Complete an operation. You need to call this method after you have processed the message (which you pass in as the argument to update().
|
|
Block until the operation (encryption, decryption, signing or verifying) completes.
|
|
Indicates whether or not the operation was successful or failed. If this function returns false, then the reason for failure can be obtained with errorCode().
|
|
Returns the failure code.
|
|
The signature for the message. This is only used for Detached signatures. For other message types, you get the message and signature together using read(). |
|
The name of the hash used for the signature process.
|
|
Test if the message was signed. This is true for OpenPGP if the decrypted message was also signed.
|
|
Verify that the message signature is correct.
|
|
Information on the signer for the message.
|
|
Information on the signers for the message. This is only meaningful if the message type supports multiple signatures (see canSignMultiple() for a suitable test). |
|
Returns a log of technical information about the operation, which may be useful for presenting to the user in an advanced error dialog.
|
|
This signal is emitted when data has been accepted by the message processor.
|
|
This signal is emitted when the message is fully processed.
|