diff --git a/src/crypto.cpp b/src/crypto.cpp
index 1d578b5fcee2d432317f849aacc3e90e127cb22d..e71fe02e3c50db031c76861a049efa7e045e7dd1 100644
--- a/src/crypto.cpp
+++ b/src/crypto.cpp
@@ -1282,12 +1282,14 @@ Certificate::generate(const PrivateKey& key, const std::string& name, const Iden
         if (not ca.second->isCA()) {
             throw CryptoException("Signing certificate must be CA");
         }
-        if (err = gnutls_x509_crt_privkey_sign(cert, ca.second->cert, ca.first->key, pk.getPreferredDigest(), 0)) {
+        err = gnutls_x509_crt_privkey_sign(cert, ca.second->cert, ca.first->key, pk.getPreferredDigest(), 0);
+        if (err) {
             throw CryptoException(std::string("Error when signing certificate ") + gnutls_strerror(err));
         }
         ret.issuer = ca.second;
     } else {
-        if (err = gnutls_x509_crt_privkey_sign(cert, cert, key.key, pk.getPreferredDigest(), 0)) {
+        err = gnutls_x509_crt_privkey_sign(cert, cert, key.key, pk.getPreferredDigest(), 0);
+        if (err) {
             throw CryptoException(std::string("Error when signing certificate ") + gnutls_strerror(err));
         }
     }