From 71b9fc8300a311969cc755345209c628617dccb5 Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Thu, 23 Jun 2016 18:41:58 +0200 Subject: [PATCH] fix lime unitary test when lime is not available --- tester/message_tester.c | 330 ++++++++++++++++++++-------------------- 1 file changed, 167 insertions(+), 163 deletions(-) diff --git a/tester/message_tester.c b/tester/message_tester.c index 0b9df872b..abdf8edf2 100644 --- a/tester/message_tester.c +++ b/tester/message_tester.c @@ -965,170 +965,174 @@ static void printHex(char *title, uint8_t *data, size_t length) { } static void lime_unit(void) { - const char* PLAIN_TEXT_TEST_MESSAGE = "Ceci est un fabuleux msg de test à encrypter"; - int retval; - size_t size; - uint8_t *cacheBufferString; - xmlDocPtr cacheBufferAlice; - xmlDocPtr cacheBufferBob; - uint8_t *multipartMessage = NULL; - uint8_t *decryptedMessage = NULL; - xmlChar *xmlStringOutput; - int xmlStringLength; - limeURIKeys_t associatedKeys; - int i; - limeKey_t associatedKey; - uint8_t targetZID[12] = {0x00, 0x5d, 0xbe, 0x03, 0x99, 0x64, 0x3d, 0x95, 0x3a, 0x22, 0x02, 0xdd}; - uint8_t senderZID[12] = {0x01, 0x02, 0x03, 0x04, 0x05, 0x70, 0x80, 0x90, 0xa0, 0xb0, 0xc0, 0xd0}; - uint8_t encryptedMessage[1024]; - uint8_t plainMessage[1024]; - uint8_t receiverZID[12]; - xmlDocPtr cacheBuffer; - FILE *CACHE; - - /**** Low level tests using on cache file to extract keys, encrypt/decrypt ****/ - /**** use functions that are not directly used by external entities ****/ - - /* create and load cache file */ - CACHE = fopen_from_write_dir("ZIDCache.xml", "wb"); - fprintf (CACHE, "\nef7692d0792a67491ae2d44e005dbe0399643d953a2202dd9b5c8f06f3b6c2c695f2dfc3c26f31f5fef8661f8c5fe7c95aeb5c5b0435b045f8324dd18ea905171ec2be89f879d01d5994132048d92ea020778cbdf31c605e2fdcef69380937c2cf221f7d11526f286c39f49641452ba9012521c705094899pipo1@pipo.com963c57bb28e62068d2df23e8f9b771932d3c57bb28e62068d2df23e8f9b7719305d9ac653a83c4559cb0ae7394e7cd3b2d3c57bb28e62068d2df23e8f9b771935f9aa1e5e4c7ec88fa389a9f6b8879b42d3c57bb28e62068d2df23e8f9b7719302ffd51e7316a6c6f53a50fcf01b01bf2d3c57bb28e62068d2df23e8f9b7719300000069000001e8011234567889643d953a2202ee9b5c8f06f3b6c2c695f2dfc3c26f31f5fef8661f8c5fe7c95aeb5c5b0435b045f8324dd18ea905171ec2be89f879d01d5994132048d92ea020778cbdf31c605e2fdcef69380937c2cf221f7d11526f286c39f49641452ba9012521c705094899pipo1@pipo.com123456789012345678901234567890123456765431262068d2df23e8f9b7719325d9ac653a83c4559cb0ae7394e7cd3b2d3c57bb28e62068d2df23e8f9b77193f69aa1e5e4c7ec88fa389a9f6b8879b42d3c57bb28e62068d2df23e8f9b7719322ffd51e7316a6c6f53a50fcf01b01bf2d3c57bb28e62068d2df23e8f9b77193000000010000000001"); - fclose(CACHE); - CACHE = fopen_from_write_dir("ZIDCache.xml", "rb+"); - cacheBufferString = (uint8_t*) ms_load_file_content(CACHE, &size); - *(cacheBufferString+size) = '\0'; - fclose(CACHE); - /* parse it to an xmlDoc */ - cacheBuffer = xmlParseDoc(cacheBufferString); - ms_free(cacheBufferString); - - /* get data from cache : sender */ - associatedKeys.peerURI = (uint8_t *)malloc(15); - memcpy(associatedKeys.peerURI, "pipo1@pipo.com", 15); - associatedKeys.associatedZIDNumber = 0; - retval = lime_getCachedSndKeysByURI(cacheBuffer, &associatedKeys); - BC_ASSERT_EQUAL(retval, 0, int, "%d"); - BC_ASSERT_EQUAL(associatedKeys.associatedZIDNumber, 2, int, "%d"); /* there are 2 keys associated to pipo1@pipo.com address in the cache above*/ - ms_message("Get cached key by URI, for sender, return %d keys", associatedKeys.associatedZIDNumber); - - for (i=0; ipeerZID, 12); - printHex("key", associatedKeys.peerKeys[i]->key, 32); - printHex("sessionID", associatedKeys.peerKeys[i]->sessionId, 32); - ms_message("session index %d\n", associatedKeys.peerKeys[i]->sessionIndex); + if (lime_is_available()) { + const char* PLAIN_TEXT_TEST_MESSAGE = "Ceci est un fabuleux msg de test à encrypter"; + int retval; + size_t size; + uint8_t *cacheBufferString; + xmlDocPtr cacheBufferAlice; + xmlDocPtr cacheBufferBob; + uint8_t *multipartMessage = NULL; + uint8_t *decryptedMessage = NULL; + xmlChar *xmlStringOutput; + int xmlStringLength; + limeURIKeys_t associatedKeys; + int i; + limeKey_t associatedKey; + uint8_t targetZID[12] = {0x00, 0x5d, 0xbe, 0x03, 0x99, 0x64, 0x3d, 0x95, 0x3a, 0x22, 0x02, 0xdd}; + uint8_t senderZID[12] = {0x01, 0x02, 0x03, 0x04, 0x05, 0x70, 0x80, 0x90, 0xa0, 0xb0, 0xc0, 0xd0}; + uint8_t encryptedMessage[1024]; + uint8_t plainMessage[1024]; + uint8_t receiverZID[12]; + xmlDocPtr cacheBuffer; + FILE *CACHE; + + /**** Low level tests using on cache file to extract keys, encrypt/decrypt ****/ + /**** use functions that are not directly used by external entities ****/ + + /* create and load cache file */ + CACHE = fopen_from_write_dir("ZIDCache.xml", "wb"); + fprintf (CACHE, "\nef7692d0792a67491ae2d44e005dbe0399643d953a2202dd9b5c8f06f3b6c2c695f2dfc3c26f31f5fef8661f8c5fe7c95aeb5c5b0435b045f8324dd18ea905171ec2be89f879d01d5994132048d92ea020778cbdf31c605e2fdcef69380937c2cf221f7d11526f286c39f49641452ba9012521c705094899pipo1@pipo.com963c57bb28e62068d2df23e8f9b771932d3c57bb28e62068d2df23e8f9b7719305d9ac653a83c4559cb0ae7394e7cd3b2d3c57bb28e62068d2df23e8f9b771935f9aa1e5e4c7ec88fa389a9f6b8879b42d3c57bb28e62068d2df23e8f9b7719302ffd51e7316a6c6f53a50fcf01b01bf2d3c57bb28e62068d2df23e8f9b7719300000069000001e8011234567889643d953a2202ee9b5c8f06f3b6c2c695f2dfc3c26f31f5fef8661f8c5fe7c95aeb5c5b0435b045f8324dd18ea905171ec2be89f879d01d5994132048d92ea020778cbdf31c605e2fdcef69380937c2cf221f7d11526f286c39f49641452ba9012521c705094899pipo1@pipo.com123456789012345678901234567890123456765431262068d2df23e8f9b7719325d9ac653a83c4559cb0ae7394e7cd3b2d3c57bb28e62068d2df23e8f9b77193f69aa1e5e4c7ec88fa389a9f6b8879b42d3c57bb28e62068d2df23e8f9b7719322ffd51e7316a6c6f53a50fcf01b01bf2d3c57bb28e62068d2df23e8f9b77193000000010000000001"); + fclose(CACHE); + CACHE = fopen_from_write_dir("ZIDCache.xml", "rb+"); + cacheBufferString = (uint8_t*) ms_load_file_content(CACHE, &size); + *(cacheBufferString+size) = '\0'; + fclose(CACHE); + /* parse it to an xmlDoc */ + cacheBuffer = xmlParseDoc(cacheBufferString); + ms_free(cacheBufferString); + + /* get data from cache : sender */ + associatedKeys.peerURI = (uint8_t *)malloc(15); + memcpy(associatedKeys.peerURI, "pipo1@pipo.com", 15); + associatedKeys.associatedZIDNumber = 0; + retval = lime_getCachedSndKeysByURI(cacheBuffer, &associatedKeys); + BC_ASSERT_EQUAL(retval, 0, int, "%d"); + BC_ASSERT_EQUAL(associatedKeys.associatedZIDNumber, 2, int, "%d"); /* there are 2 keys associated to pipo1@pipo.com address in the cache above*/ + ms_message("Get cached key by URI, for sender, return %d keys", associatedKeys.associatedZIDNumber); + + for (i=0; ipeerZID, 12); + printHex("key", associatedKeys.peerKeys[i]->key, 32); + printHex("sessionID", associatedKeys.peerKeys[i]->sessionId, 32); + ms_message("session index %d\n", associatedKeys.peerKeys[i]->sessionIndex); + } + + /* get data from cache : receiver */ + memcpy(associatedKey.peerZID, targetZID, 12); + retval = lime_getCachedRcvKeyByZid(cacheBuffer, &associatedKey); + BC_ASSERT_EQUAL(retval, 0, int, "%d"); + printHex("Got receiver key for ZID", targetZID, 12); + printHex("Key", associatedKey.key, 32); + printHex("sessionID", associatedKey.sessionId, 32); + ms_message("session index %d\n", associatedKey.sessionIndex); + + /* encrypt/decrypt a msg */ + lime_encryptMessage(associatedKeys.peerKeys[0], (uint8_t *)PLAIN_TEXT_TEST_MESSAGE, strlen(PLAIN_TEXT_TEST_MESSAGE), senderZID, encryptedMessage); + printHex("Ciphered", encryptedMessage, strlen((char *)encryptedMessage)); + /* invert sender and receiverZID to decrypt/authenticate */ + memcpy(receiverZID, associatedKeys.peerKeys[0]->peerZID, 12); + memcpy(associatedKeys.peerKeys[0]->peerZID, senderZID, 12); + retval = lime_decryptMessage(associatedKeys.peerKeys[0], encryptedMessage, strlen(PLAIN_TEXT_TEST_MESSAGE)+16, receiverZID, plainMessage); + BC_ASSERT_EQUAL(retval, 0, int, "%d"); + BC_ASSERT_STRING_EQUAL((char *)plainMessage, (char *)PLAIN_TEXT_TEST_MESSAGE); + ms_message("Decrypt and auth returned %d\nPlain text is %s\n", retval, plainMessage); + + /* update receiver data */ + associatedKey.sessionIndex++; + associatedKey.key[0]++; + associatedKey.sessionId[0]++; + retval = lime_setCachedKey(cacheBuffer, &associatedKey, LIME_RECEIVER); + BC_ASSERT_EQUAL(retval, 0, int, "%d"); + + /* update sender data */ + associatedKeys.peerKeys[0]->sessionIndex++; + associatedKeys.peerKeys[0]->key[0]++; + associatedKeys.peerKeys[0]->sessionId[0]++; + retval = lime_setCachedKey(cacheBuffer, associatedKeys.peerKeys[0], LIME_SENDER); + BC_ASSERT_EQUAL(retval, 0, int, "%d"); + + /* free memory */ + lime_freeKeys(&associatedKeys); + + /* write the file */ + /* dump the xml document into a string */ + xmlDocDumpFormatMemoryEnc(cacheBuffer, &xmlStringOutput, &xmlStringLength, "UTF-8", 0); + /* write it to the file */ + CACHE = fopen_from_write_dir("ZIDCache.xml", "w+"); + fwrite(xmlStringOutput, 1, xmlStringLength, CACHE); + xmlFree(xmlStringOutput); + fclose(CACHE); + xmlFreeDoc(cacheBuffer); + + /**** Higher level tests using 2 caches to encrypt/decrypt a msg ****/ + /* Create Alice cache file and then load it */ + CACHE = fopen_from_write_dir("ZIDCacheAlice.xml", "wb"); + fprintf(CACHE, "\nef7692d0792a67491ae2d44e005dbe0399643d953a2202dd9b5c8f06f3b6c2c695f2dfc3c26f31f5fef8661f8c5fe7c95aeb5c5b0435b045f8324dd18ea905171ec2be89f879d01d5994132048d92ea020778cbdf31c605e2fdcef69380937c2cf221f7d11526f286c39f49641452ba9012521c705094899sip:pauline@sip.example.org9111ebeb52e50edcc6fcb3eea1a2d3ae3c2c75d3668923e83c59d0f47245515060f020a3fe11dc2cc0e1e8ed9341b4cd14944db806ca4fc95456bbe45d95c43a5f9aa1e5e4c7ec88fa389a9f6b8879b42d3c57bb28e62068d2df23e8f9b77193bcffd51e7316a6c6f53a50fcf01b01bf2d3c57bb28e62068d2df23e8f9b7719300000080000001cf011234567889643d953a2202ee9b5c8f06f3b6c2c695f2dfc3c26f31f5fef8661f8c5fe7c95aeb5c5b0435b045f8324dd18ea905171ec2be89f879d01d5994132048d92ea020778cbdf31c605e2fdcef69380937c2cf221f7d11526f286c39f49641452ba9012521c705094899sip:pauline@sip.example.org72d80ab1cad243cf45634980c1d02cfb2df81ce0dd5dfcf1ebeacfc5345a917625d9ac653a83c4559cb0ae7394e7cd3b2d3c57bb28e62068d2df23e8f9b77193f69aa1e5e4c7ec88fa389a9f6b8879b42d3c57bb28e62068d2df23e8f9b7719322ffd51e7316a6c6f53a50fcf01b01bf2d3c57bb28e62068d2df23e8f9b771930000000f00000000"); + fclose(CACHE); + CACHE = fopen_from_write_dir("ZIDCacheAlice.xml", "rb+"); + cacheBufferString = (uint8_t *)ms_load_file_content(CACHE, &size); + *(cacheBufferString+size) = '\0'; + fclose(CACHE); + /* parse it to an xmlDoc */ + cacheBufferAlice = xmlParseDoc(cacheBufferString); + ms_free(cacheBufferString); + + /* Create Bob cache file and then load it */ + CACHE = fopen_from_write_dir("ZIDCacheBob.xml", "wb"); + fprintf(CACHE, "\n005dbe0399643d953a2202ddef7692d0792a67491ae2d44e9b5c8f06f3b6c2c695f2dfc3c26f31f5fef8661f8c5fe7c95aeb5c5b0435b045f8324dd18ea905171ec2be89f879d01d5994132048d92ea020778cbdf31c605e2fdcef69380937c2cf221f7d11526f286c39f49641452ba9012521c705094899sip:marie@sip.example.org9111ebeb52e50edcc6fcb3eea1a2d3ae3c2c75d3668923e83c59d0f47245515060f020a3fe11dc2cc0e1e8ed9341b4cd14944db806ca4fc95456bbe45d95c43a5f9aa1e5e4c7ec88fa389a9f6b8879b42d3c57bb28e62068d2df23e8f9b77193bcffd51e7316a6c6f53a50fcf01b01bf2d3c57bb28e62068d2df23e8f9b7719300000080000001cf011234567889643d953a2202ee9b5c8f06f3b6c2c695f2dfc3c26f31f5fef8661f8c5fe7c95aeb5c5b0435b045f8324dd18ea905171ec2be89f879d01d5994132048d92ea020778cbdf31c605e2fdcef69380937c2cf221f7d11526f286c39f49641452ba9012521c705094899sip:marie@sip.example.org81e6e6362c34dc974263d1f77cbb9a8d6d6a718330994379099a8fa19fb12faa25d9ac653a83c4559cb0ae7394e7cd3b2d3c57bb28e62068d2df23e8f9b77193f69aa1e5e4c7ec88fa389a9f6b8879b42d3c57bb28e62068d2df23e8f9b7719322ffd51e7316a6c6f53a50fcf01b01bf2d3c57bb28e62068d2df23e8f9b771930000002e0000000001"); + fclose(CACHE); + CACHE = fopen_from_write_dir("ZIDCacheBob.xml", "rb+"); + cacheBufferString = (uint8_t *)ms_load_file_content(CACHE, &size); + *(cacheBufferString+size) = '\0'; + fclose(CACHE); + /* parse it to an xmlDoc */ + cacheBufferBob = xmlParseDoc(cacheBufferString); + ms_free(cacheBufferString); + + + + /* encrypt a msg */ + retval = lime_createMultipartMessage(cacheBufferAlice, (uint8_t *)PLAIN_TEXT_TEST_MESSAGE, (uint8_t *)"sip:pauline@sip.example.org", &multipartMessage); + + BC_ASSERT_EQUAL(retval, 0, int, "%d"); + if (retval == 0) { + ms_message("Encrypted msg created is %s", multipartMessage); + } + + /* decrypt the multipart msg */ + retval = lime_decryptMultipartMessage(cacheBufferBob, multipartMessage, &decryptedMessage); + + BC_ASSERT_EQUAL(retval, 0, int, "%d"); + if (retval == 0) { + BC_ASSERT_STRING_EQUAL((char *)decryptedMessage, (char *)PLAIN_TEXT_TEST_MESSAGE); + ms_message("Succesfully decrypted msg is %s", decryptedMessage); + } + free(multipartMessage); + free(decryptedMessage); + + /* update ZID files */ + /* dump the xml document into a string */ + xmlDocDumpFormatMemoryEnc(cacheBufferAlice, &xmlStringOutput, &xmlStringLength, "UTF-8", 0); + /* write it to the file */ + CACHE = fopen_from_write_dir("ZIDCacheAlice.xml", "wb+"); + fwrite(xmlStringOutput, 1, xmlStringLength, CACHE); + xmlFree(xmlStringOutput); + fclose(CACHE); + + xmlDocDumpFormatMemoryEnc(cacheBufferBob, &xmlStringOutput, &xmlStringLength, "UTF-8", 0); + /* write it to the file */ + CACHE = fopen_from_write_dir("ZIDCacheBob.xml", "wb+"); + fwrite(xmlStringOutput, 1, xmlStringLength, CACHE); + xmlFree(xmlStringOutput); + fclose(CACHE); + + + xmlFreeDoc(cacheBufferAlice); + xmlFreeDoc(cacheBufferBob); + } else { + ms_warning("Lime not available, skiping"); } - - /* get data from cache : receiver */ - memcpy(associatedKey.peerZID, targetZID, 12); - retval = lime_getCachedRcvKeyByZid(cacheBuffer, &associatedKey); - BC_ASSERT_EQUAL(retval, 0, int, "%d"); - printHex("Got receiver key for ZID", targetZID, 12); - printHex("Key", associatedKey.key, 32); - printHex("sessionID", associatedKey.sessionId, 32); - ms_message("session index %d\n", associatedKey.sessionIndex); - - /* encrypt/decrypt a msg */ - lime_encryptMessage(associatedKeys.peerKeys[0], (uint8_t *)PLAIN_TEXT_TEST_MESSAGE, strlen(PLAIN_TEXT_TEST_MESSAGE), senderZID, encryptedMessage); - printHex("Ciphered", encryptedMessage, strlen((char *)encryptedMessage)); - /* invert sender and receiverZID to decrypt/authenticate */ - memcpy(receiverZID, associatedKeys.peerKeys[0]->peerZID, 12); - memcpy(associatedKeys.peerKeys[0]->peerZID, senderZID, 12); - retval = lime_decryptMessage(associatedKeys.peerKeys[0], encryptedMessage, strlen(PLAIN_TEXT_TEST_MESSAGE)+16, receiverZID, plainMessage); - BC_ASSERT_EQUAL(retval, 0, int, "%d"); - BC_ASSERT_STRING_EQUAL((char *)plainMessage, (char *)PLAIN_TEXT_TEST_MESSAGE); - ms_message("Decrypt and auth returned %d\nPlain text is %s\n", retval, plainMessage); - - /* update receiver data */ - associatedKey.sessionIndex++; - associatedKey.key[0]++; - associatedKey.sessionId[0]++; - retval = lime_setCachedKey(cacheBuffer, &associatedKey, LIME_RECEIVER); - BC_ASSERT_EQUAL(retval, 0, int, "%d"); - - /* update sender data */ - associatedKeys.peerKeys[0]->sessionIndex++; - associatedKeys.peerKeys[0]->key[0]++; - associatedKeys.peerKeys[0]->sessionId[0]++; - retval = lime_setCachedKey(cacheBuffer, associatedKeys.peerKeys[0], LIME_SENDER); - BC_ASSERT_EQUAL(retval, 0, int, "%d"); - - /* free memory */ - lime_freeKeys(&associatedKeys); - - /* write the file */ - /* dump the xml document into a string */ - xmlDocDumpFormatMemoryEnc(cacheBuffer, &xmlStringOutput, &xmlStringLength, "UTF-8", 0); - /* write it to the file */ - CACHE = fopen_from_write_dir("ZIDCache.xml", "w+"); - fwrite(xmlStringOutput, 1, xmlStringLength, CACHE); - xmlFree(xmlStringOutput); - fclose(CACHE); - xmlFreeDoc(cacheBuffer); - - /**** Higher level tests using 2 caches to encrypt/decrypt a msg ****/ - /* Create Alice cache file and then load it */ - CACHE = fopen_from_write_dir("ZIDCacheAlice.xml", "wb"); - fprintf(CACHE, "\nef7692d0792a67491ae2d44e005dbe0399643d953a2202dd9b5c8f06f3b6c2c695f2dfc3c26f31f5fef8661f8c5fe7c95aeb5c5b0435b045f8324dd18ea905171ec2be89f879d01d5994132048d92ea020778cbdf31c605e2fdcef69380937c2cf221f7d11526f286c39f49641452ba9012521c705094899sip:pauline@sip.example.org9111ebeb52e50edcc6fcb3eea1a2d3ae3c2c75d3668923e83c59d0f47245515060f020a3fe11dc2cc0e1e8ed9341b4cd14944db806ca4fc95456bbe45d95c43a5f9aa1e5e4c7ec88fa389a9f6b8879b42d3c57bb28e62068d2df23e8f9b77193bcffd51e7316a6c6f53a50fcf01b01bf2d3c57bb28e62068d2df23e8f9b7719300000080000001cf011234567889643d953a2202ee9b5c8f06f3b6c2c695f2dfc3c26f31f5fef8661f8c5fe7c95aeb5c5b0435b045f8324dd18ea905171ec2be89f879d01d5994132048d92ea020778cbdf31c605e2fdcef69380937c2cf221f7d11526f286c39f49641452ba9012521c705094899sip:pauline@sip.example.org72d80ab1cad243cf45634980c1d02cfb2df81ce0dd5dfcf1ebeacfc5345a917625d9ac653a83c4559cb0ae7394e7cd3b2d3c57bb28e62068d2df23e8f9b77193f69aa1e5e4c7ec88fa389a9f6b8879b42d3c57bb28e62068d2df23e8f9b7719322ffd51e7316a6c6f53a50fcf01b01bf2d3c57bb28e62068d2df23e8f9b771930000000f00000000"); - fclose(CACHE); - CACHE = fopen_from_write_dir("ZIDCacheAlice.xml", "rb+"); - cacheBufferString = (uint8_t *)ms_load_file_content(CACHE, &size); - *(cacheBufferString+size) = '\0'; - fclose(CACHE); - /* parse it to an xmlDoc */ - cacheBufferAlice = xmlParseDoc(cacheBufferString); - ms_free(cacheBufferString); - - /* Create Bob cache file and then load it */ - CACHE = fopen_from_write_dir("ZIDCacheBob.xml", "wb"); - fprintf(CACHE, "\n005dbe0399643d953a2202ddef7692d0792a67491ae2d44e9b5c8f06f3b6c2c695f2dfc3c26f31f5fef8661f8c5fe7c95aeb5c5b0435b045f8324dd18ea905171ec2be89f879d01d5994132048d92ea020778cbdf31c605e2fdcef69380937c2cf221f7d11526f286c39f49641452ba9012521c705094899sip:marie@sip.example.org9111ebeb52e50edcc6fcb3eea1a2d3ae3c2c75d3668923e83c59d0f47245515060f020a3fe11dc2cc0e1e8ed9341b4cd14944db806ca4fc95456bbe45d95c43a5f9aa1e5e4c7ec88fa389a9f6b8879b42d3c57bb28e62068d2df23e8f9b77193bcffd51e7316a6c6f53a50fcf01b01bf2d3c57bb28e62068d2df23e8f9b7719300000080000001cf011234567889643d953a2202ee9b5c8f06f3b6c2c695f2dfc3c26f31f5fef8661f8c5fe7c95aeb5c5b0435b045f8324dd18ea905171ec2be89f879d01d5994132048d92ea020778cbdf31c605e2fdcef69380937c2cf221f7d11526f286c39f49641452ba9012521c705094899sip:marie@sip.example.org81e6e6362c34dc974263d1f77cbb9a8d6d6a718330994379099a8fa19fb12faa25d9ac653a83c4559cb0ae7394e7cd3b2d3c57bb28e62068d2df23e8f9b77193f69aa1e5e4c7ec88fa389a9f6b8879b42d3c57bb28e62068d2df23e8f9b7719322ffd51e7316a6c6f53a50fcf01b01bf2d3c57bb28e62068d2df23e8f9b771930000002e0000000001"); - fclose(CACHE); - CACHE = fopen_from_write_dir("ZIDCacheBob.xml", "rb+"); - cacheBufferString = (uint8_t *)ms_load_file_content(CACHE, &size); - *(cacheBufferString+size) = '\0'; - fclose(CACHE); - /* parse it to an xmlDoc */ - cacheBufferBob = xmlParseDoc(cacheBufferString); - ms_free(cacheBufferString); - - - - /* encrypt a msg */ - retval = lime_createMultipartMessage(cacheBufferAlice, (uint8_t *)PLAIN_TEXT_TEST_MESSAGE, (uint8_t *)"sip:pauline@sip.example.org", &multipartMessage); - - BC_ASSERT_EQUAL(retval, 0, int, "%d"); - if (retval == 0) { - ms_message("Encrypted msg created is %s", multipartMessage); - } - - /* decrypt the multipart msg */ - retval = lime_decryptMultipartMessage(cacheBufferBob, multipartMessage, &decryptedMessage); - - BC_ASSERT_EQUAL(retval, 0, int, "%d"); - if (retval == 0) { - BC_ASSERT_STRING_EQUAL((char *)decryptedMessage, (char *)PLAIN_TEXT_TEST_MESSAGE); - ms_message("Succesfully decrypted msg is %s", decryptedMessage); - } - free(multipartMessage); - free(decryptedMessage); - - /* update ZID files */ - /* dump the xml document into a string */ - xmlDocDumpFormatMemoryEnc(cacheBufferAlice, &xmlStringOutput, &xmlStringLength, "UTF-8", 0); - /* write it to the file */ - CACHE = fopen_from_write_dir("ZIDCacheAlice.xml", "wb+"); - fwrite(xmlStringOutput, 1, xmlStringLength, CACHE); - xmlFree(xmlStringOutput); - fclose(CACHE); - - xmlDocDumpFormatMemoryEnc(cacheBufferBob, &xmlStringOutput, &xmlStringLength, "UTF-8", 0); - /* write it to the file */ - CACHE = fopen_from_write_dir("ZIDCacheBob.xml", "wb+"); - fwrite(xmlStringOutput, 1, xmlStringLength, CACHE); - xmlFree(xmlStringOutput); - fclose(CACHE); - - - xmlFreeDoc(cacheBufferAlice); - xmlFreeDoc(cacheBufferBob); } #ifdef SQLITE_STORAGE_ENABLED