27 #include <gpgmepp/context.h>
29 #include <kdepimmacros.h>
165 Feature_SignMessages = 1,
166 Feature_VerifySignatures = 2,
167 Feature_EncryptMessages = 3,
168 Feature_DecryptMessages = 4,
169 Feature_SendCertificates = 5,
170 Feature_WarnSignCertificateExpiry = 6,
171 Feature_WarnSignEmailNotInCertificate = 7,
172 Feature_PinEntrySettings = 8,
173 Feature_StoreMessagesWithSigs = 9,
174 Feature_EncryptionCRLs = 10,
175 Feature_WarnEncryptCertificateExpiry = 11,
176 Feature_WarnEncryptEmailNotInCertificate = 12,
177 Feature_StoreMessagesEncrypted = 13,
178 Feature_CheckCertificatePath = 14,
179 Feature_CertificateDirectoryService = 15,
180 Feature_CRLDirectoryService = 16,
181 Feature_CertificateInfo = 17
186 PinRequest_undef = 0,
188 PinRequest_Always = 1,
189 PinRequest_WhenAddingCerts = 2,
190 PinRequest_AlwaysWhenSigning = 3,
191 PinRequest_OncePerSession = 4,
192 PinRequest_AfterMinutes = 5
197 SignatureCompoundMode_undef = 0,
199 SignatureCompoundMode_Opaque = 1,
200 SignatureCompoundMode_Detached = 2
201 } SignatureCompoundMode;
207 SendCert_DontSend = 1,
208 SendCert_SendOwn = 2,
209 SendCert_SendChainWithoutRoot = 3,
210 SendCert_SendChainWithRoot = 4
218 } SignatureAlgorithm;
223 EncryptAlg_undef = 0,
227 EncryptAlg_TripleDES = 3
228 } EncryptionAlgorithm;
233 SignEmail_SignAll = 1,
235 SignEmail_DontSign = 3
239 EncryptEmail_undef = 0,
241 EncryptEmail_EncryptAll = 1,
242 EncryptEmail_Ask = 2,
243 EncryptEmail_DontEncrypt = 3
251 CertSrc_ServerLocal = CertSrc_Server | CertSrc_Local
281 SigStat_VALID = 0x0001,
282 SigStat_GREEN = 0x0002,
283 SigStat_RED = 0x0004,
284 SigStat_KEY_REVOKED = 0x0010,
285 SigStat_KEY_EXPIRED = 0x0020,
286 SigStat_SIG_EXPIRED = 0x0040,
287 SigStat_KEY_MISSING = 0x0080,
288 SigStat_CRL_MISSING = 0x0100,
289 SigStat_CRL_TOO_OLD = 0x0200,
290 SigStat_BAD_POLICY = 0x0400,
291 SigStat_SYS_ERROR = 0x0800,
293 SigStat_NUMERICAL_CODE = 0x8000
295 typedef unsigned long SigStatusFlags;
299 class KDE_EXPORT CryptPlug {
303 virtual ~CryptPlug();
306 gpgme_protocol_t GPGMEPLUG_PROTOCOL;
307 GpgME::Context::Protocol mProtocol;
311 int GPGMEPLUG_OPA_SIGN_INCLUDE_CLEARTEXT;
312 int GPGMEPLUG_OPA_SIGN_MAKE_MIME_OBJECT;
313 int GPGMEPLUG_OPA_SIGN_MAKE_MULTI_MIME;
314 const char * GPGMEPLUG_OPA_SIGN_CTYPE_MAIN;
315 const char * GPGMEPLUG_OPA_SIGN_CDISP_MAIN;
316 const char * GPGMEPLUG_OPA_SIGN_CTENC_MAIN;
317 const char * GPGMEPLUG_OPA_SIGN_CTYPE_VERSION;
318 const char * GPGMEPLUG_OPA_SIGN_CDISP_VERSION;
319 const char * GPGMEPLUG_OPA_SIGN_CTENC_VERSION;
320 const char * GPGMEPLUG_OPA_SIGN_BTEXT_VERSION;
321 const char * GPGMEPLUG_OPA_SIGN_CTYPE_CODE;
322 const char * GPGMEPLUG_OPA_SIGN_CDISP_CODE;
323 const char * GPGMEPLUG_OPA_SIGN_CTENC_CODE;
324 const char * GPGMEPLUG_OPA_SIGN_FLAT_PREFIX;
325 const char * GPGMEPLUG_OPA_SIGN_FLAT_SEPARATOR;
326 const char * GPGMEPLUG_OPA_SIGN_FLAT_POSTFIX;
328 int GPGMEPLUG_DET_SIGN_INCLUDE_CLEARTEXT;
329 int GPGMEPLUG_DET_SIGN_MAKE_MIME_OBJECT;
330 int GPGMEPLUG_DET_SIGN_MAKE_MULTI_MIME;
331 const char * GPGMEPLUG_DET_SIGN_CTYPE_MAIN;
332 const char * GPGMEPLUG_DET_SIGN_CDISP_MAIN;
333 const char * GPGMEPLUG_DET_SIGN_CTENC_MAIN;
334 const char * GPGMEPLUG_DET_SIGN_CTYPE_VERSION;
335 const char * GPGMEPLUG_DET_SIGN_CDISP_VERSION;
336 const char * GPGMEPLUG_DET_SIGN_CTENC_VERSION;
337 const char * GPGMEPLUG_DET_SIGN_BTEXT_VERSION;
338 const char * GPGMEPLUG_DET_SIGN_CTYPE_CODE;
339 const char * GPGMEPLUG_DET_SIGN_CDISP_CODE;
340 const char * GPGMEPLUG_DET_SIGN_CTENC_CODE;
341 const char * GPGMEPLUG_DET_SIGN_FLAT_PREFIX;
342 const char * GPGMEPLUG_DET_SIGN_FLAT_SEPARATOR;
343 const char * GPGMEPLUG_DET_SIGN_FLAT_POSTFIX;
345 int __GPGMEPLUG_SIGNATURE_CODE_IS_BINARY;
348 int GPGMEPLUG_ENC_INCLUDE_CLEARTEXT;
349 int GPGMEPLUG_ENC_MAKE_MIME_OBJECT;
350 int GPGMEPLUG_ENC_MAKE_MULTI_MIME;
351 const char * GPGMEPLUG_ENC_CTYPE_MAIN;
352 const char * GPGMEPLUG_ENC_CDISP_MAIN;
353 const char * GPGMEPLUG_ENC_CTENC_MAIN;
354 const char * GPGMEPLUG_ENC_CTYPE_VERSION;
355 const char * GPGMEPLUG_ENC_CDISP_VERSION;
356 const char * GPGMEPLUG_ENC_CTENC_VERSION;
357 const char * GPGMEPLUG_ENC_BTEXT_VERSION;
358 const char * GPGMEPLUG_ENC_CTYPE_CODE;
359 const char * GPGMEPLUG_ENC_CDISP_CODE;
360 const char * GPGMEPLUG_ENC_CTENC_CODE;
361 const char * GPGMEPLUG_ENC_FLAT_PREFIX;
362 const char * GPGMEPLUG_ENC_FLAT_SEPARATOR;
363 const char * GPGMEPLUG_ENC_FLAT_POSTFIX;
364 int __GPGMEPLUG_ENCRYPTED_CODE_IS_BINARY;
369 #define CRYPTPLUG_CERT_DOES_NEVER_EXPIRE 365000
370 #define CRYPTPLUG_ERR_WRONG_KEY_USAGE 0x7070
384 bool initialize(
void );
623 bool includeCleartext;
644 char* contentTypeMain;
648 char* contentDispMain;
652 char* contentTEncMain;
656 char* contentTypeVersion;
663 char* contentDispVersion;
671 char* contentTEncVersion;
679 char* bodyTextVersion;
686 char* contentTypeCode;
692 char* contentDispCode;
697 char* contentTEncCode;
703 char* flatTextPrefix;
708 char* flatTextSeparator;
714 char* flatTextPostfix;
808 struct SignatureMetaDataExtendedInfo
810 struct tm* creation_time;
811 SigStatusFlags sigStatusFlags;
821 unsigned long algo_num;
822 unsigned long validity;
823 unsigned long userid_num;
824 unsigned long keylen;
825 unsigned long key_created;
826 unsigned long key_expires;
831 struct SignatureMetaData {
833 struct SignatureMetaDataExtendedInfo* extended_info;
834 int extended_info_count;
859 bool checkMessageSignature(
char** cleartext,
860 const char* signaturetext,
861 bool signatureIsBinary,
863 struct SignatureMetaData* sigmeta,
865 const char* unknownAttrsHandling );
878 bool decryptMessage(
const char* ciphertext,
881 const char** cleartext,
882 const char* certificate,
897 bool decryptAndCheckMessage(
const char* ciphertext,
900 const char** cleartext,
901 const char* certificate,
902 bool* signatureFound,
903 struct SignatureMetaData* sigmeta,
907 const char* unknownAttrsHandling );
914 struct CertificateInfo {
926 unsigned long created;
927 unsigned long expire;
934 struct DnPair *dnarray;
940 GpgME::ImportResult importCertificateFromMem(
const char* data,
size_t length );
943 class SMIMECryptPlug :
public CryptPlug {
948 class OpenPGPCryptPlug :
public CryptPlug {