Changeset 1676

Show
Ignore:
Timestamp:
02/04/07 15:55:49 (22 months ago)
Author:
mjahn
Message:

fix the TODO: create hash of notes instead of storing full text in hashtable
by using a base64 representation md5 sum.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • plugins/kdepim/src/knotes.cpp

    r1675 r1676  
    3333#include "knotes.h" 
    3434#include <glib.h> 
     35/*An adapted C++ implementation of RSA Data Securities MD5 algorithm.*/ 
     36#include <kmdcodec.h> 
    3537 
    3638KNotesDataSource::KNotesDataSource(OSyncMember *m, OSyncHashTable *h) 
     
    141143        osync_trace(TRACE_ENTRY, "%s(%p)", __func__, ctx); 
    142144        QMap <KNoteID_t,QString> fNotes; 
     145        //set Digest to rawResult 
     146        KMD5::Digest rawResult; 
     147        KMD5 hash_value; 
    143148 
    144149        fNotes = kn_iface->notes(); 
     
    181186                xmlNode *sum = xmlNewChild(root, NULL, (const xmlChar*)"", NULL); 
    182187                QCString utf8str = i.data().utf8(); 
    183                 hash = utf8str; 
     188                hash_value.update(utf8str); 
    184189                osxml_node_set(sum, "Summary", utf8str, enc); 
    185190 
    186191                utf8str = strip_html(kn_iface->text(i.key())).utf8(); 
    187                 hash += utf8str; 
     192                hash_value.update(utf8str); 
     193                hash = hash_value.base64Digest (); 
    188194                if (utf8str && !utf8str.isEmpty()) { 
    189195                        xmlNode *body = xmlNewChild(root, NULL, (const xmlChar*)"", NULL); 
     
    210216                        osync_hashtable_update_hash(hashtable, chg); 
    211217                } 
     218                hash_value.reset(); 
    212219        } 
    213220 
     
    231238 
    232239        QString uid = osync_change_get_uid(chg); 
     240 
     241        //set Digest to rawResult 
     242        KMD5::Digest rawResult; 
     243        KMD5 hash_value; 
    233244 
    234245        if (type != CHANGE_DELETED) { 
     
    279290                                if (kn_iface->status() != DCOPStub::CallSucceeded) 
    280291                                        osync_trace(TRACE_INTERNAL, "ERROR: Unable to hide note"); 
    281  
    282                                 hash = summary + body; 
     292                                hash_value.update(summary); 
     293                                hash_value.update(body); 
     294                                hash = hash_value.base64Digest(); 
    283295                                osync_change_set_uid(chg, uid); 
    284296                                osync_change_set_hash(chg, hash); 
     
    299311                                        return false; 
    300312                                } 
    301                                 hash = summary + body; 
     313                                hash_value.update(summary); 
     314                                hash_value.update(body); 
     315                                hash = hash_value.base64Digest(); 
    302316                                osync_change_set_hash(chg, hash); 
    303317                                break;