CountersignExternal Method
Countersigns the existing signature using an external signing facility.
Syntax
int CountersignExternal(int iLevel, bool bSerialSignature);
Remarks
Use this method to countersign a signature. Use the Level parameter to provide the desired CAdES level (see below). SerialSignature specifies whether the new countersignature should be added on the same level of hierarchy as the original signature (signature-over-data, True), or as a true countersignature (signature-over-signature, False).
Call this method to delegate 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 the hash is computed, the class fires ExternalSign event which allows to pass the hash value to the external engine for signing.
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.)