========================>
< 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
=
=
=
=
=
=
=
=
=
=
=