示例#1
0
  public void testCreateData() throws StorageFileException, IOException, WrongKeyException {
    long indexFree = 25L;
    long indexConversation = 13L;
    int version = 32;

    Header header = Header.createHeader();
    header.setIndexEmpty(indexFree);
    header.setIndexConversations(indexConversation);
    header.setVersion(version);
    header.saveToFile();

    byte[] dataAll = Storage.getDatabase().getEntry(0);

    // chunk length
    assertEquals(dataAll.length, Storage.CHUNK_SIZE);

    // plain header
    assertEquals(dataAll[0], (byte) 0x53); // S
    assertEquals(dataAll[1], (byte) 0x4D); // M
    assertEquals(dataAll[2], (byte) 0x53); // S
    assertEquals(dataAll[3], (byte) version); // Version

    // decrypt the encoded part
    ByteBuffer buf = ByteBuffer.allocate(Storage.CHUNK_SIZE - 4);
    buf.put(dataAll, 4, Storage.CHUNK_SIZE - 4);
    byte[] dataPlain = Encryption.decryptSymmetric(buf.array(), Encryption.retreiveEncryptionKey());

    // check the indices
    assertEquals(
        LowLevel.getUnsignedInt(
            dataPlain, Storage.CHUNK_SIZE - 4 - Encryption.ENCRYPTION_OVERHEAD - 8),
        indexFree);
    assertEquals(
        LowLevel.getUnsignedInt(
            dataPlain, Storage.CHUNK_SIZE - 4 - Encryption.ENCRYPTION_OVERHEAD - 4),
        indexConversation);
  }