From d3925ba5bd25224bc4a60d3d6a107c464994a1ea Mon Sep 17 00:00:00 2001 From: ulf69 Date: Wed, 15 Sep 2004 17:53:22 +0000 Subject: initial revision --- (limited to 'pwmanager/file-format') diff --git a/pwmanager/file-format b/pwmanager/file-format new file mode 100644 index 0000000..610ab51 --- a/dev/null +++ b/pwmanager/file-format @@ -0,0 +1,137 @@ +<========================> +< Format of *.pwm file > +<========================> +fileversion: 0x05 revision: 0x01 + +(note: another revision doesn't change fore- or + backward compatibility) + + +The file has a header and a data-body. + +**************************************************** +* The header is build from the following elements: * +**************************************************** +PWM_PASSWORD_FILE +[FILEVER] +[KEY-HASH-ALGO] +[DATA-HASH-ALGO] +[CRYPT-ALGO] +[COMPRESSED-FLAG] +[MPW-FLAG] +[BYTES-RESERVED] +[KEY-HASH] +[DATA-HASH] + + +(note: fields marked with ~ were added _after_ + revision 0x01) + + +PWM_PASSWORD_FILE is a magic string to indentify the file. +This string is put directly at offset 0x00 of the file. + +[FILEVER] is one byte for holding the file-version. +This byte is directly appended to the "magic-string". +(no newline or other separators between these fields) + +[HASH-ALGO] is one byte for holding the type of the hash-algorithm +used to hash the key. +0x01 => SHA1 + +[DATA-HASH-ALGO] is one byte for holding the type of the +hash-algorithm used to hash the raw data-stream. +0x01 => SHA1 + +[CRYPT-ALGO] is one byte containing the type of the crypt-algorithm +used to encrypt the data. +0x01 => Blowfish + +[COMPRESSED-FLAG] is one byte which can be +0x00 => not compressed +0x01 => compressed with gzip +0x02 => compressed with bzip2 + +[MPW-FLAG] is one byte, either 0x00 if +we used a master password to encrypt the data, +or 0x01, if we used a chipcard to encrypt the data. + +[BYTES-RESERVED] +64-bytes reserved for future-use. +Set all these to 0x00. + +[KEY-HASH] is the hash of the key. This field has no constant +length, because it's length depends on the algorithm +used in HASH-ALGO. + +[DATA-HASH] is a hash of the raw, unencrypted, serialized +data stream. + + +************** +* Data-body: * +************** + +The data-body follows the header directly. +It contains the encrypted serialized data in XML-format. +It may be compressed. +For an example +how to serialize the data, have a look at: +PwMDoc::serializeDta(); +PwMDoc::deSerializeDta(); +The class "Serializer" +PwMDoc::encrypt(); +PwMDoc::decrypt(); + +These functions are called by: +PwMDoc::saveDoc(); +PwMDoc::openDoc(); +so, please have a look at these two functions, too. + + + +Example of an XML-data-block: + + + + + + sampleDesc + sampleName + samplePw + sampleComment + sampleUrl + sampleLauncher + sampleListViewPos + 0 + + + sampleDesc + sampleName + samplePw + sampleComment + sampleUrl + sampleLauncher + sampleListViewPos + 1 + + + + + +2004-06-05: +So I introduced shorter names for the entries. We also have to support +the old names to be backward compatibel. +New names are: +PwM-xml-dat = P + = + = + = + = + = + =

+ = + = + = + = + = -- cgit v0.9.0.2