Mercurial > projects > libpws
diff libpws.3.xml @ 1:e1309515d111
Add README file and manpages
author | Guido Berhoerster <guido+libpws@berhoerster.name> |
---|---|
date | Wed, 25 Mar 2015 17:10:23 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libpws.3.xml Wed Mar 25 17:10:23 2015 +0100 @@ -0,0 +1,213 @@ +<?xml version="1.0"?> +<!-- + +Copyright (C) 2015 Guido Berhoerster <guido+libpws@berhoerster.name> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--> +<refentry xmlns="http://docbook.org/ns/docbook" + xmlns:xlink="http://www.w3.org/1999/xlink" xml:lang="en"> + <info> + <author> + <personname> + <firstname>Guido</firstname> + <surname>Berhoerster</surname> + </personname> + <email>guido+libpws@berhoerster.name</email> + <personblurb/> + </author> + <date>21 March, 2015</date> + </info> + <refmeta> + <refentrytitle>libpws</refentrytitle> + <manvolnum>3</manvolnum> + <refmiscinfo class="source"/> + <refmiscinfo class="version"/> + <refmiscinfo class="manual">Library Functions</refmiscinfo> + </refmeta> + <refnamediv> + <refname>libpws</refname> + <refpurpose>library for creating and manipulating Password Safe files</refpurpose> + </refnamediv> + <refsynopsisdiv> + <cmdsynopsis> + <command>cc</command> + <arg choice="opt" rep="repeat"> + <option>flag</option> + </arg> + <arg choice="plain" rep="repeat"> + <option>file</option> + </arg> + <arg choice="plain"> + <option>-lpws</option> + </arg> + <arg choice="plain"> + <option>-lnettle</option> + </arg> + <arg choice="opt" rep="repeat"> + <option>library</option> + </arg> + </cmdsynopsis> + <funcsynopsis> + <funcsynopsisinfo> +#include <pws.h> +</funcsynopsisinfo> + </funcsynopsis> + </refsynopsisdiv> + <refsect1> + <title>Description</title> + <para>libpws provides an API for creating, reading, manipulating and + writing Password Safe files. The Password Safe file format is intended + for the platform-independent secure storage of passwords and associated + metadata and offers protection from unauthorized access to the file by + encrypting it using a key derived from a master password. Its design + ensures both confidentiality and integrity of its contents.</para> + <para>libpws currently supports version 3 of the Password Safe file + format.</para> + <para>The <literal><<filename + class="header">pws.h</filename>></literal> header provides type and + function declarations for all library services.</para> + <para>With the exception of <function>pws_set_alloc_functions</function> + all functions are reentrant. Functions operating on a Password Safe file + structure, a header field structure, a record field structure, and a record + structure provide no locking. A multithreaded application must either + provide its own synchronization mechanisms or restrict operations on any of + the above structures to a single thread.</para> + </refsect1> + <refsect1> + <title>Interfaces</title> + <para>The static library <filename class="libraryfile">libpws.a</filename> + provides following the public interfaces: + <simplelist type="vert" columns="2"> + <member><function>pws_init</function></member> + <member><function>pws_finalize</function></member> + <member><function>pws_set_alloc_functions</function></member> + <member><function>pws_generate_uuid</function></member> + <member><function>pws3_field_create</function></member> + <member><function>pws3_field_destroy</function></member> + <member><function>pws3_field_is_header</function></member> + <member><function>pws3_field_get_type</function></member> + <member><function>pws3_field_get_data_type</function></member> + <member><function>pws3_field_set_uuid</function></member> + <member><function>pws3_field_set_text</function></member> + <member><function>pws3_field_set_time</function></member> + <member><function>pws3_field_set_uint8</function></member> + <member><function>pws3_field_set_uint16</function></member> + <member><function>pws3_field_set_uint32</function></member> + <member><function>pws3_field_set_bytes</function></member> + <member><function>pws3_field_get_uuid</function></member> + <member><function>pws3_field_get_text</function></member> + <member><function>pws3_field_get_time</function></member> + <member><function>pws3_field_get_uint8</function></member> + <member><function>pws3_field_get_uint16</function></member> + <member><function>pws3_field_get_uint32</function></member> + <member><function>pws3_field_get_bytes</function></member> + <member><function>pws3_file_create</function></member> + <member><function>pws3_file_destroy</function></member> + <member><function>pws3_file_get_error_code</function></member> + <member><function>pws3_file_get_error_message</function></member> + <member><function>pws3_file_read_mem</function></member> + <member><function>pws3_file_read_stream</function></member> + <member><function>pws3_file_write_mem</function></member> + <member><function>pws3_file_write_stream</function></member> + <member><function>pws3_file_set_header_field</function></member> + <member><function>pws3_file_get_header_field</function></member> + <member><function>pws3_file_remove_header_field</function></member> + <member><function>pws3_file_insert_empty_group</function></member> + <member><function>pws3_file_get_empty_group</function></member> + <member><function>pws3_file_remove_empty_group</function></member> + <member><function>pws3_file_first_empty_group</function></member> + <member><function>pws3_file_last_empty_group</function></member> + <member><function>pws3_file_next_empty_group</function></member> + <member><function>pws3_file_prev_empty_group</function></member> + <member><function>pws3_file_insert_record</function></member> + <member><function>pws3_file_get_record</function></member> + <member><function>pws3_file_remove_record</function></member> + <member><function>pws3_file_first_record</function></member> + <member><function>pws3_file_last_record</function></member> + <member><function>pws3_file_next_record</function></member> + <member><function>pws3_file_prev_record</function></member> + </simplelist></para> + <para>It defines the following C preprocessor macros which are documented + in the + <citerefentry><refentrytitle>pws_init</refentrytitle><manvolnum>3</manvolnum></citerefentry> + manual page: + <simplelist type="vert"> + <member><function>LIBPWS_VERSION_MAJOR</function></member> + <member><function>LIBPWS_VERSION_MINOR</function></member> + <member><function>LIBPWS_VERSION_MICRO</function></member> + <member><function>PWS3_VERSION</function></member> + <member><function>PWS3_MAX_FIELD_SIZE</function></member> + <member><function>PWS3_MAX_PASSWORD_LEN</function></member> + <member><function>PWS3_UUID_SIZE</function></member> + </simplelist></para> + </refsect1> + <refsect1> + <title>Types</title> + <para>libpws provides the following data structures: + <variablelist> + <varlistentry> + <term>struct pws3_file</term> + <listitem> + <para>Opaque data structure representing a Password Safe version 3 + file.</para> + </listitem> + </varlistentry> + <varlistentry> + <term>struct pws3_record</term> + <listitem> + <para>Opaque data structure representing a Password Safe version 3 + record.</para> + </listitem> + </varlistentry> + <varlistentry> + <term>struct pws3_field</term> + <listitem> + <para>Opaque data structure representing a Password Safe version 3 + typed field belonging to the header or a record, depending on the + type it may hold a UUID, string, time, 8-bit, 16-bit, or 32-bit + wide unsigned integer or raw data.</para> + </listitem> + </varlistentry> + </variablelist></para> + </refsect1> + <refsect1> + <title>Security</title> + <para>The aforementioned protection of confidentiality and integrity of + the file contents only applies to the stored file. When reading a Password + Safe file using libpws, the file contents are decrypted and stored in + memory where they might be compromised, e.g. by a malicious application or + a privileged user. Furthermore, parts of the process memory may be paged to + the swap area by the operating system.</para> + <para>libpws provides hooks for allocating and freeing memory used to + store sensitive information which may be used to mitigate such issues + using operating system specific facilities.</para> + <para>libpws has not been formally audited, use at your own risk.</para> + </refsect1> + <refsect1> + <title>See Also</title> + <para><citerefentry><refentrytitle>pws_init</refentrytitle> + <manvolnum>3</manvolnum></citerefentry>, + <citerefentry><refentrytitle>pws3_file_create</refentrytitle> + <manvolnum>3</manvolnum></citerefentry>, <link + xlink:href="https://pwsafe.org/"/></para> + </refsect1> +</refentry>