SignExternal Method
Signs the document using an external signing facility.
Syntax
int SignExternal(int iLevel, bool bDetached);
Remarks
Use this method to create a CAdES signature using an external signing facility for the cryptographic computations. SignRemote delegates the low-level signing operation to an external, remote, or custom signing engine. This method is useful if the signature has to be made by a device accessible through a custom or non-standard signing interface.
When all preparations are done and hash is computed, the class fires ExternalSign event which allows to pass the hash value for signing.
Set Detached to True to generate a detached (stored in a separate message) signature.
CAdES defines a number of different 'levels' of signatures. Supported signature levels:
cslUnknown | 0 | Unknown signature level |
cslBES | 1 | BES (Basic Electronic Signature) |
cslEPES | 2 | EPES (Electronic Signature with an Explicit Policy) |
cslT | 3 | T (Timestamped) |
cslC | 4 | C (T with revocation references) |
cslXType1 | 5 | X Type 1 (C with an ES-C timestamp) |
cslXType2 | 6 | X Type 2 (C with a CertsAndCRLs timestamp) |
cslXLType1 | 7 | XL Type 1 (C with revocation values and an ES-C timestamp) |
cslXLType2 | 8 | XL Type 2 (C with revocation values and a CertsAndCRLs timestamp) |
cslBaselineB | 9 | Baseline B (B-B, basic) |
cslBaselineT | 10 | Baseline T (B-T, timestamped) |
cslBaselineLT | 11 | Baseline LT (B-LT, long-term) |
cslBaselineLTA | 12 | Baseline LTA (B-LTA, long-term with archived timestamp) |
cslExtendedBES | 13 | Extended BES |
cslExtendedEPES | 14 | Extended EPES |
cslExtendedT | 15 | Extended T |
cslExtendedC | 16 | Extended C |
cslExtendedXType1 | 17 | Extended X Type 1 |
cslExtendedXType2 | 18 | Extended X Type 2 |
cslExtendedXLType1 | 19 | Extended XL Type 1 |
cslExtendedXLType2 | 20 | Extended XL Type 2 |
cslExtendedA | 21 | Extended A |
cslA | 22 | A (archived) |
Error Handling
This method returns a result code; 0 indicates success, while a non-zero error code indicates that this method encountered an error during its execution. If an error occurs, the GetLastError() method can be called to retrieve the associated error message. (Note: This method's result code can also be obtained by calling the GetLastErrorCode() method after it returns.)