# kpw db format

kpw uses a simple binary database format. it consists of a number of values of constant size, followed by a series of encrypted records.

 1. public key
 2. password salt
 3. encrypt(password, private key)
 4. encrypt(private key, password salt) [for pw verification]
 5. record *

each record takes the form of

 1. account name length (1 byte)
 2. account name
 3. password length (1 byte)
 4. password

records are added simply by encrypting them with the public key and appending them to the end of the file. thus, adding a new password does not require the decryption password.
