Fix whitespace.
[tinc] / src / openssl / cipher.c
index 63892f3..b2edcc7 100644 (file)
@@ -44,7 +44,7 @@ bool cipher_open_by_name(cipher_t *cipher, const char *name) {
        if(cipher->cipher)
                return cipher_open(cipher);
 
-       logger(LOG_ERR, "Unknown cipher name '%s'!", name);
+       logger(DEBUG_ALWAYS, LOG_ERR, "Unknown cipher name '%s'!", name);
        return false;
 }
 
@@ -54,7 +54,7 @@ bool cipher_open_by_nid(cipher_t *cipher, int nid) {
        if(cipher->cipher)
                return cipher_open(cipher);
 
-       logger(LOG_ERR, "Unknown cipher nid %d!", nid);
+       logger(DEBUG_ALWAYS, LOG_ERR, "Unknown cipher nid %d!", nid);
        return false;
 }
 
@@ -65,10 +65,8 @@ bool cipher_open_blowfish_ofb(cipher_t *cipher) {
 
 void cipher_close(cipher_t *cipher) {
        EVP_CIPHER_CTX_cleanup(&cipher->ctx);
-       if(cipher->counter) {
-               free(cipher->counter);
-               cipher->counter = 0;
-       }
+       free(cipher->counter);
+       cipher->counter = NULL;
 }
 
 size_t cipher_keylength(const cipher_t *cipher) {
@@ -86,7 +84,7 @@ bool cipher_set_key(cipher_t *cipher, void *key, bool encrypt) {
        if(result)
                return true;
 
-       logger(LOG_ERR, "Error while setting key: %s", ERR_error_string(ERR_get_error(), NULL));
+       logger(DEBUG_ALWAYS, LOG_ERR, "Error while setting key: %s", ERR_error_string(ERR_get_error(), NULL));
        return false;
 }
 
@@ -101,14 +99,27 @@ bool cipher_set_key_from_rsa(cipher_t *cipher, void *key, size_t len, bool encry
        if(result)
                return true;
 
-       logger(LOG_ERR, "Error while setting key: %s", ERR_error_string(ERR_get_error(), NULL));
+       logger(DEBUG_ALWAYS, LOG_ERR, "Error while setting key: %s", ERR_error_string(ERR_get_error(), NULL));
        return false;
 }
 
+bool cipher_set_counter(cipher_t *cipher, const void *counter, size_t len) {
+       if(len > cipher->cipher->block_size - 4) {
+               logger(DEBUG_ALWAYS, LOG_ERR, "Counter too long");
+               abort();
+       }
+
+       memcpy(cipher->counter->counter + cipher->cipher->block_size - len, counter, len);
+       memset(cipher->counter->counter, 0, 4);
+       cipher->counter->n = 0;
+
+       return true;
+}
+
 bool cipher_set_counter_key(cipher_t *cipher, void *key) {
        int result = EVP_EncryptInit_ex(&cipher->ctx, cipher->cipher, NULL, (unsigned char *)key, NULL);
        if(!result) {
-               logger(LOG_ERR, "Error while setting key: %s", ERR_error_string(ERR_get_error(), NULL));
+               logger(DEBUG_ALWAYS, LOG_ERR, "Error while setting key: %s", ERR_error_string(ERR_get_error(), NULL));
                return false;
        }
 
@@ -124,7 +135,7 @@ bool cipher_set_counter_key(cipher_t *cipher, void *key) {
 
 bool cipher_counter_xor(cipher_t *cipher, const void *indata, size_t inlen, void *outdata) {
        if(!cipher->counter) {
-               logger(LOG_ERR, "Counter not initialized");
+               logger(DEBUG_ALWAYS, LOG_ERR, "Counter not initialized");
                return false;
        }
 
@@ -132,11 +143,11 @@ bool cipher_counter_xor(cipher_t *cipher, const void *indata, size_t inlen, void
        unsigned char *out = outdata;
 
        while(inlen--) {
-               // Encrypt the new counter value if we need it 
+               // Encrypt the new counter value if we need it
                if(!cipher->counter->n) {
                        int len;
                        if(!EVP_EncryptUpdate(&cipher->ctx, cipher->counter->block, &len, cipher->counter->counter, cipher->cipher->block_size)) {
-                               logger(LOG_ERR, "Error while encrypting: %s", ERR_error_string(ERR_get_error(), NULL));
+                               logger(DEBUG_ALWAYS, LOG_ERR, "Error while encrypting: %s", ERR_error_string(ERR_get_error(), NULL));
                                return false;
                        }
 
@@ -173,7 +184,7 @@ bool cipher_encrypt(cipher_t *cipher, const void *indata, size_t inlen, void *ou
                }
        }
 
-       logger(LOG_ERR, "Error while encrypting: %s", ERR_error_string(ERR_get_error(), NULL));
+       logger(DEBUG_ALWAYS, LOG_ERR, "Error while encrypting: %s", ERR_error_string(ERR_get_error(), NULL));
        return false;
 }
 
@@ -194,7 +205,7 @@ bool cipher_decrypt(cipher_t *cipher, const void *indata, size_t inlen, void *ou
                }
        }
 
-       logger(LOG_ERR, "Error while decrypting: %s", ERR_error_string(ERR_get_error(), NULL));
+       logger(DEBUG_ALWAYS, LOG_ERR, "Error while decrypting: %s", ERR_error_string(ERR_get_error(), NULL));
        return false;
 }