Calendar Lock PEA - Encrypted iCalendar Application

Calendar Encryption

Calendar Lock PEA (PEA = Password Encrypting Archive) encrypts calendars and displays them in a month view. The shown calendars are never stored unencrypted on your disk (unless you explicitly decide to do that), but exists only in the memory (RAM).

The program is small and consists of a single archive file. Installation is not required.

The Calendar Lock PEA
  • runs on nearly all operating systems with a Java Runtime Environment,

  • is compatible with iCalendar data (ics files as defined in RFC 5545 and RFC 7986), such as those used in Android, OS/iOS, Microsoft Outlook and many other areas,

  • Window for one month with seven columns for weekdays, five rows and colored event buttons Calendar Lock PEA: Month View
  • uses functions to derive the key from the password, that can also protect against custom-hardware attacks, reducing one vulnerability of password-based encryption programs,

  • protects the integrity of the data by an authenticated encryption (EAX mode) in addition to the confidentiality and prevents unauthorized and unnoticed tampering of the data,

  • is Open Source (GPL v2) and free to use.

Calendar Data

Calendar data should always be available and never be lost, which is one reason they are often stored in the cloud.

At the same time, calendars contain very sensitive and personal information and are a worthwhile target for snooping. Many commercial services are trying to access this data to create user profiles, government agencies are trying to gather information about the behavior of potential dissidents, and scammers are just buying and selling these data.

This application intends to protect calendar data.

Download Options for Calendar Lock PEA 1.0:

Key Derivation Function: Catena-Dragonfly
Cipher (EAX-Mode): Threefish
Hash Function: Blake2b


Window for one week with seven columns for weekdays, lines for hours and colored event buttons Calendar Lock PEA: Week View

Recurrence Rule: Like in most other iCalendar applications, only the most common recurrence rules can be defined. The full set of possible recurrence rules would make the setting extremly complicated and is unlikely to be used. Some properties may still be added, but on the whole the recurrence rule is complete - at least as complete as intended.

The main views (daily, weekly, monthly) are implemented. A yearly overview and an event list should be added.

It is not intended to implement all the features defined in RFC 5545, but some will probably be added later: multi-lingual support, LOCATION, ATTENDEE, CATEGORY...

The accessibility support is to be improved.

The graphic user interface in the historical style of the 90s will remain.

The Long-time Goal of this Application

It's nice to have calendars protected on a PC, but as long as mobile devices automatically pass such data to companies like Google, Microsoft or Apple, that's not much.

In principle, it is possible to synchronize these data between different devices without ever storing them unencrypted on any device or any cloud server. Necessary for this is an application on each of these systems, which indeed displays this data, but always stores and synchronizes them in encrypted form. That's a lot of work. And you have to start from scratch. Synchronization standards such as the CalDAV protocol completely ignore user privacy and rule out the possibility of encryption in principle.

Dialog displaying a file name to open and a password field Password dialog to open encrypted calendars

The Calendar Lock PEA is also meant as a very first step towards this long term goal. Any help to achieve this goal is welcome: bug reports, reviews, programming, or even donation.

Thanks to all who have improved, tested or reviewed Calendar Lock PEA:
  • Laxman Singh wrote a short manual and a review for Calendar Lock PEA 0.2 on ilovefreesoftware
  • Rubén Velasco wrote a short manual in Spanish and a review for Calendar Lock PEA 0.2 on SoftZone
  • Doriann Marquez reviewed Calendar Lock PEA 0.2 on TekCrispy

Compatibility with iCalendar Standards RFC 5545 and RFC 7986

Although there are two Internet Drafts that define properties for iCalendar to ensure compatibility, the new RFC 7986 draft from 2016 is still not very popular. Instead, there are several unofficial extensions of RFC 5545 in use.

You are able to import external ICS files with some of the old property formats and you can export ICS files from the Calendar Lock PEA to use in other applications either in the new standard (RFC 7986) or in the old one with some non-standardized but widely used properties (RFC 5545 only).

So far, the Calendar Lock PEA uses only a basic set of properties, which is to be gradually expanded with every new release. That means, that you will loose some properties like the event category or location at the moment if import an ICS file. Recurring events are basically supported, but more far-reaching specifications of recurrence rules like every second Monday of the third month are not yet displayed correctly.

How to use

Start the Jar Archive

You need OpenJDK, Java Runtime Environment (JRE) or something similar. On most systems there is at least one available.
These PEAs are single Java jar archives, a file with the extension "jar". If you are familiar with jar archives, you can skip the following part.

Linux, BSD systems and Mac OS and other UNIX like systems: unpack the compressed download file (tar or unzip), store it for example in your home folder, change in the directory in console and type: java -jar YOUR_ARCHIVE.jar or try to double click the file
Windows: Normally you can open the jar archive just by a double click. But sometimes other programs overwrites this possibility and instead unpack the jar archive. In this case you can change the default program to open a jar archive or use the terminal, change in the directory of your archive and type java -jar YOUR_ARCHIVE.jar or try to double click the file windows_start_helper.bat

Initialization: First Start

The first time you start the Calendar Lock PEA, the program will initialize. You are asked for a password, a calendar name and color.
You can reset the password later in the menu.