diff --git a/gpgmeplug/cryptplug.h b/gpgmeplug/cryptplug.h index 64de73ef..73176fab 100644 --- a/gpgmeplug/cryptplug.h +++ b/gpgmeplug/cryptplug.h @@ -159,8 +159,10 @@ typedef enum { PinRequest_undef = 0, PinRequest_Always = 1, - PinRequest_OncePerMail = 2, - PinRequest_OncePerSession = 3 // may be changed ... + PinRequest_WhenAddingCerts = 2, + PinRequest_AlwaysWhenSigning = 3, + PinRequest_OncePerSession = 4, + PinRequest_AfterMinutes = 5 } PinRequests; // dummy values: @@ -388,6 +390,21 @@ void setSignEmail( SignEmail ); */ SignEmail signEmail( void ); + +/*! \ingroup groupConfigSign + \brief Specifies whether a warning should be emitted when the user + tries to send an email message unsigned. +*/ +void setWarnSendUnsigned( bool ); + + +/*! \ingroup groupConfigSign + \brief Returns whether a warning should be emitted when the user + tries to send an email message unsigned. +*/ +bool warnSendUnsigned( void ); + + /*! \ingroup groupConfigSign \brief Specifies whether sent email messages should be stored with or without their signatures. @@ -400,20 +417,6 @@ void setSaveSentSignatures( bool ); */ bool saveSentSignatures( void ); -/*! \ingroup groupConfigSign - \brief Specifies whether a warning should be emitted if any - of the certificates involved in the signing process - expires in the near future. -*/ -void setCertificateExpiryNearWarning( bool ); - -/*! \ingroup groupConfigSign - \brief Returns whether a warning should be emitted if any - of the certificates involved in the signing process - expires in the near future. -*/ -bool certificateExpiryNearWarning( void ); - /*! \ingroup groupConfigSign \brief Specifies whether a warning should be emitted if the email address of the sender is not contained in the @@ -440,6 +443,20 @@ void setNumPINRequests( PinRequests ); */ PinRequests numPINRequests( void ); +/*! \ingroup groupConfigSign + \brief Specifies the interval in minutes the PIN must be reentered if + numPINRequests() is PinRequest_AfterMinutes. +*/ +void setNumPINRequestsInterval( int ); + + +/*! \ingroup groupConfigSign + \brief Returns the interval in minutes the PIN must be reentered if + numPINRequests() is PinRequest_AfterMinutes. +*/ +int numPINRequestsInterval( void ); + + /*! \ingroup groupConfigSign \brief Specifies whether the certificate path should be followed to the root certificate or whether locally stored @@ -467,33 +484,85 @@ void setSignatureUseCRLs( bool ); bool signatureUseCRLs( void ); /*! \ingroup groupConfigSign - \brief Specifies whether a warning should be emitted if any - of the certificates involved in the signing process - expires in the near future. + \brief Specifies whether a warning should be emitted if the + signature certificate expires in the near future. */ -void setSignatureCRLExpiryNearWarning( bool ); +void setSignatureCertificateExpiryNearWarning( bool ); /*! \ingroup groupConfigSign - \brief Returns whether a warning should be emitted if any - of the certificates involved in the signing process - expires in the near future. + \brief Returns whether a warning should be emitted if + the signature certificate expires in the near future. */ -bool signatureCRLExpiryNearWarning( void ); +bool signatureCertificateExpiryNearWarning( void ); /*! \ingroup groupConfigSign - \brief Specifies the number of days which a certificate must + \brief Specifies the number of days which a signature certificate must + be valid before it is considered to expire in the near + future. +*/ +void setSignatureCertificateExpiryNearInterval( int ); + +/*! \ingroup groupConfigSign + \brief Returns the number of days which a signature certificate must be valid before it is considered to expire in the near future. */ -void setSignatureCRLNearExpiryInterval( int ); +int signatureCertificateExpiryNearInterval( void ); /*! \ingroup groupConfigSign - \brief Returns the number of days which a certificate must + \brief Specifies whether a warning should be emitted if the + CA certificate expires in the near future. +*/ +void setCACertificateExpiryNearWarning( bool ); + +/*! \ingroup groupConfigSign + \brief Returns whether a warning should be emitted if + the CA certificate expires in the near future. +*/ +bool caCertificateExpiryNearWarning( void ); + +/*! \ingroup groupConfigSign + \brief Specifies the number of days which a CA certificate must + be valid before it is considered to expire in the near + future. +*/ +void setCACertificateExpiryNearInterval( int ); + +/*! \ingroup groupConfigSign + \brief Returns the number of days which a CA certificate must be valid before it is considered to expire in the near future. */ -int signatureCRLNearExpiryInterval( void ); +int caCertificateExpiryNearInterval( void ); +/*! \ingroup groupConfigSign + \brief Specifies whether a warning should be emitted if the + root certificate expires in the near future. +*/ +void setRootCertificateExpiryNearWarning( bool ); + +/*! \ingroup groupConfigSign + \brief Returns whether a warning should be emitted if + the root certificate expires in the near future. +*/ +bool rootCertificateExpiryNearWarning( void ); + +/*! \ingroup groupConfigSign + \brief Specifies the number of days which a root certificate must + be valid before it is considered to expire in the near + future. +*/ +void setRootCertificateExpiryNearInterval( int ); + +/*! \ingroup groupConfigSign + \brief Returns the number of days which a signature certificate must + be valid before it is considered to expire in the near + future. +*/ +int rootCertificateExpiryNearInterval( void ); + + + /*! \ingroup groupConfigCrypt \brief This function returns an XML representation of a @@ -576,6 +645,20 @@ void setEncryptEmail( EncryptEmail ); */ EncryptEmail encryptEmail( void ); +/*! \ingroup groupConfigSign + \brief Specifies whether a warning should be emitted when the user + tries to send an email message unencrypted. +*/ +void setWarnSendUnencrypted( bool ); + + +/*! \ingroup groupConfigSign + \brief Returns whether a warning should be emitted when the user + tries to send an email message unencrypted. +*/ +bool warnSendUnencrypted( void ); + + /*! \ingroup groupConfigCrypt \brief Specifies whether encrypted email messages should be stored encrypted or decrypted. @@ -588,6 +671,20 @@ void setSaveMessagesEncrypted( bool ); */ bool saveMessagesEncrypted( void ); + +/*! \ingroup groupConfigCrypt + \brief Specifies whether the certificate path should be checked + during encryption. +*/ +void setCheckCertificatePath( bool ); + +/*! \ingroup groupConfigCrypt + \brief Returns whether the certificate path should be checked + during encryption. +*/ +bool checkCertificatePath( void ); + + /*! \ingroup groupConfigCrypt \brief Specifies whether the certificate path should be followed to the root certificate or whether locally stored @@ -602,6 +699,73 @@ void setCheckEncryptionCertificatePathToRoot( bool ); */ bool checkEncryptionCertificatePathToRoot( void ); + +/*! \ingroup groupConfigCrypt + \brief Specifies whether a warning should be emitted if the + certificate of the receiver expires in the near future. +*/ +void setReceiverCertificateExpiryNearWarning( bool ); + +/*! \ingroup groupConfigCrypt + \brief Returns whether a warning should be emitted if the + certificate of the receiver expires in the near future. +*/ +bool receiverCertificateExpiryNearWarning( void ); + + +/*! \ingroup groupConfigCrypt + \brief Specifies the number of days which a receiver certificate + must be valid before it is considered to expire in the near future. +*/ +void setReceiverCertificateExpiryNearWarningInterval( int ); + +/*! \ingroup groupConfigCrypt + \brief Returns the number of days which a receiver certificate + must be valid before it is considered to expire in the near future. +*/ +int receiverCertificateExpiryNearWarningInterval( void ); + +/*! \ingroup groupConfigCrypt + \brief Specifies whether a warning should be emitted if + a certificate in the chain expires in the near future. +*/ +void setCertificateInChainExpiryNearWarning( bool ); + + +/*! \ingroup groupConfigCrypt + \brief Returns whether a warning should be emitted if a + certificate in the chain expires in the near future. +*/ +bool certificateInChainExpiryNearWarning( void ); + + + +/*! \ingroup groupConfigCrypt + \brief Specifies the number of days which a certificate in the chain + must be valid before it is considered to expire in the near future. +*/ +void setCertificateInChainExpiryNearWarningInterval( int ); + +/*! \ingroup groupConfigCrypt + \brief Returns the number of days which a certificate in the chain + must be valid before it is considered to expire in the near future. +*/ +int certificateInChainExpiryNearWarningInterval( void ); + + +/*! \ingroup groupConfigCrypt + \brief Specifies whether a warning is emitted if the email address + of the receiver does not appear in the certificate. +*/ +void setReceiverEmailAddressNotInCertificateWarning( bool ); + +/*! \ingroup groupConfigCrypt + \brief Returns whether a warning is emitted if the email address + of the receiver does not appear in the certificate. +*/ +bool receiverEmailAddressNotInCertificateWarning( void ); + + /*! \ingroup groupConfigCrypt \brief Specifies whether certificate revocation lists should be used. diff --git a/gpgmeplug/gpgmeplug.c b/gpgmeplug/gpgmeplug.c index a1087483..de772f42 100644 --- a/gpgmeplug/gpgmeplug.c +++ b/gpgmeplug/gpgmeplug.c @@ -61,13 +61,10 @@ typedef struct { SendCertificates sendCertificates; SignEmail signEmail; bool saveSentSignatures; - bool certificateExpiryNearWarning; bool warnNoCertificate; PinRequests numPINRequests; bool checkSignatureCertificatePathToRoot; bool signatureUseCRLs; - bool signatureCRLExpiryNearWarning; - int signatureCRLNearExpiryInterval; EncryptionAlgorithm encryptionAlgorithm; EncryptEmail encryptEmail; bool saveMessagesEncrypted; @@ -79,13 +76,28 @@ typedef struct { unsigned int numDirectoryServers; CertificateSource certificateSource; CertificateSource cRLSource; + bool warnSendUnsigned; + int numPINRequestsInterval; + bool signatureCertificateExpiryNearWarning; + int signatureCertificateExpiryNearInterval; + bool cACertificateExpiryNearWarning; + int cACertificateExpiryNearInterval; + bool rootCertificateExpiryNearWarning; + int rootCertificateExpiryNearInterval; + bool warnSendUnencrypted; + bool checkCertificatePath; + bool receiverCertificateExpiryNearWarning; + int receiverCertificateExpiryNearWarningInterval; + bool certificateInChainExpiryNearWarning; + int certificateInChainExpiryNearWarningInterval; + bool receiverEmailAddressNotInCertificateWarning; } Config; Config config; -#define NEAR_EXPIRY 21 +#define NEAR_EXPIRY 14 bool initialize() { @@ -94,13 +106,10 @@ bool initialize() config.sendCertificates = SendCert_SendChainWithRoot; config.signEmail = SignEmail_SignAll; config.saveSentSignatures = true; - config.certificateExpiryNearWarning = true; config.warnNoCertificate = true; config.numPINRequests = PinRequest_Always; config.checkSignatureCertificatePathToRoot = true; config.signatureUseCRLs = true; - config.signatureCRLExpiryNearWarning = true; - config.signatureCRLNearExpiryInterval = NEAR_EXPIRY; config.encryptionAlgorithm = EncryptAlg_RSA; config.encryptEmail = EncryptEmail_Ask; config.saveMessagesEncrypted = true; @@ -112,6 +121,22 @@ bool initialize() config.numDirectoryServers = 0; config.certificateSource = CertSrc_Server; config.cRLSource = CertSrc_Server; + config.warnSendUnsigned = true; + config.numPINRequestsInterval = NEAR_EXPIRY; + config.signatureCertificateExpiryNearWarning = true; + config.signatureCertificateExpiryNearInterval = NEAR_EXPIRY; + config.cACertificateExpiryNearWarning = true; + config.cACertificateExpiryNearInterval = NEAR_EXPIRY; + config.rootCertificateExpiryNearWarning = true; + config.rootCertificateExpiryNearInterval = NEAR_EXPIRY; + config.warnSendUnencrypted = false; + config.checkCertificatePath = true; + config.receiverCertificateExpiryNearWarning = true; + config.receiverCertificateExpiryNearWarningInterval = NEAR_EXPIRY; + config.certificateInChainExpiryNearWarning = true; + config.certificateInChainExpiryNearWarningInterval = NEAR_EXPIRY; + config.receiverEmailAddressNotInCertificateWarning = true; + return true; }; @@ -198,6 +223,25 @@ SignEmail signEmail() return config.signEmail; } + + + + +void setWarnSendUnsigned( bool flag ) +{ + config.warnSendUnsigned = flag; +} + +bool warnSendUnsigned() +{ + return config.warnSendUnsigned; +} + + + + + + void setSaveSentSignatures( bool flag ) { config.saveSentSignatures = flag; @@ -208,16 +252,6 @@ bool saveSentSignatures() return config.saveSentSignatures; } -void setCertificateExpiryNearWarning( bool flag ) -{ - config.certificateExpiryNearWarning = flag; -} - -bool certificateExpiryNearWarning() -{ - return config.certificateExpiryNearWarning; -} - void setWarnNoCertificate( bool flag ) { config.warnNoCertificate = flag; @@ -238,6 +272,26 @@ PinRequests numPINRequests() return config.numPINRequests; } + + + + +void setNumPINRequestsInterval( int interval ) +{ + config.numPINRequestsInterval = interval; +} + +int numPINRequestsInterval() +{ + return config.numPINRequestsInterval; +} + + + + + + + void setCheckSignatureCertificatePathToRoot( bool flag ) { config.checkSignatureCertificatePathToRoot = flag; @@ -258,26 +312,77 @@ bool signatureUseCRLs() return config.signatureUseCRLs; } -void setSignatureCRLExpiryNearWarning( bool flag ) + + + + + +void setSignatureCertificateExpiryNearWarning( bool flag ) { - config.signatureCRLExpiryNearWarning = flag; + config.signatureCertificateExpiryNearWarning = flag; } -bool signatureCRLExpiryNearWarning() +bool signatureCertificateExpiryNearWarning( void ) { - return config.signatureCRLExpiryNearWarning; + return config.signatureCertificateExpiryNearWarning; } -void setSignatureCRLNearExpiryInterval( int interval ) +void setSignatureCertificateExpiryNearInterval( int interval ) { - config.signatureCRLNearExpiryInterval = interval; + config.signatureCertificateExpiryNearInterval = interval; } -int signatureCRLNearExpiryInterval() +int signatureCertificateExpiryNearInterval( void ) { - return config.signatureCRLNearExpiryInterval; + return config.signatureCertificateExpiryNearInterval; } +void setCACertificateExpiryNearWarning( bool flag ) +{ + config.cACertificateExpiryNearWarning = flag; +} + +bool caCertificateExpiryNearWarning( void ) +{ + return config.cACertificateExpiryNearWarning; +} + +void setCACertificateExpiryNearInterval( int interval ) +{ + config.cACertificateExpiryNearInterval = interval; +} + +int caCertificateExpiryNearInterval( void ) +{ + return config.cACertificateExpiryNearInterval; +} + +void setRootCertificateExpiryNearWarning( bool flag ) +{ + config.rootCertificateExpiryNearWarning = flag; +} + +bool rootCertificateExpiryNearWarning( void ) +{ + return config.rootCertificateExpiryNearWarning; +} + +void setRootCertificateExpiryNearInterval( int interval ) +{ + config.rootCertificateExpiryNearInterval = interval; +} + +int rootCertificateExpiryNearInterval( void ) +{ + return config.rootCertificateExpiryNearInterval; +} + + + + + + + const char* encryptionConfigurationDialog(){ return 0; } @@ -307,6 +412,29 @@ EncryptEmail encryptEmail() return config.encryptEmail; } + + + + + +void setWarnSendUnencrypted( bool flag ) +{ + config.warnSendUnencrypted = flag; +} + +bool warnSendUnencrypted() +{ + return config.warnSendUnencrypted; +} + + + + + + + + + void setSaveMessagesEncrypted( bool flag ) { config.saveMessagesEncrypted = flag; @@ -317,6 +445,29 @@ bool saveMessagesEncrypted() return config.saveMessagesEncrypted; } + + + + + + +void setCheckCertificatePath( bool flag ) +{ + config.checkCertificatePath = flag; +} + +bool checkCertificatePath() +{ + return config.checkCertificatePath; +} + + + + + + + + void setCheckEncryptionCertificatePathToRoot( bool flag ) { config.checkEncryptionCertificatePathToRoot = flag; @@ -327,6 +478,69 @@ bool checkEncryptionCertificatePathToRoot() return config.checkEncryptionCertificatePathToRoot; } + + + + + + +void setReceiverCertificateExpiryNearWarning( bool flag ) +{ + config.receiverCertificateExpiryNearWarning = flag; +} + +bool receiverCertificateExpiryNearWarning() +{ + return config.receiverCertificateExpiryNearWarning; +} + +void setReceiverCertificateExpiryNearWarningInterval( int interval ) +{ + config.receiverCertificateExpiryNearWarningInterval = interval; +} + +int receiverCertificateExpiryNearWarningInterval() +{ + return config.receiverCertificateExpiryNearWarningInterval; +} + +void setCertificateInChainExpiryNearWarning( bool flag ) +{ + config.certificateInChainExpiryNearWarning = flag; +} + +bool certificateInChainExpiryNearWarning() +{ + return config.certificateInChainExpiryNearWarning; +} + +void setCertificateInChainExpiryNearWarningInterval( int interval ) +{ + config.certificateInChainExpiryNearWarningInterval = interval; +} + +int certificateInChainExpiryNearWarningInterval() +{ + return config.certificateInChainExpiryNearWarningInterval; +} + +void setReceiverEmailAddressNotInCertificateWarning( bool flag ) +{ + config.receiverEmailAddressNotInCertificateWarning = flag; +} + +bool receiverEmailAddressNotInCertificateWarning() +{ + return config.receiverEmailAddressNotInCertificateWarning; +} + + + + + + + + void setEncryptionUseCRLs( bool flag ) { config.encryptionUseCRLs = flag;