| Top |  |  |  |  | 
| int | pskc_init () | 
| void | pskc_done () | 
| int | pskc_parse_from_memory () | 
| int | pskc_get_signed_p () | 
| int | pskc_validate () | 
| int | pskc_build_xml () | 
| int | pskc_sign_x509 () | 
| int | pskc_verify_x509crt () | 
| const char * | pskc_get_version () | 
| void | pskc_set_version () | 
| const char * | pskc_get_id () | 
| void | pskc_set_id () | 
| pskc_key_t * | pskc_get_keypackage () | 
| int | pskc_add_keypackage () | 
| int | pskc_output () | 
PSKC data is represented through the pskc_t type which is created
by calling pskc_init() and destroyed by calling pskc_done().  You
may parse PSKC data in XML form from a buffer by calling
pskc_parse_from_memory().  To convert PSKC data to human readable
form you may use pskc_output().  To validate PSKC data against the
XML Schema, you may use pskc_validate().  To generate PSKC based on
the internal parsed representation you may use pskc_build_xml()
which takes a pskc_output_format enumeration to indicate output
form.
The PSKC data structure is a high-level structure that only carries
a version indicator (see pskc_get_version()), an optional identity
field (see pskc_get_id()) and any number of pskc_key_t types, each
containing one key (see pskc_get_keypackage()).
int
pskc_init (pskc_t **container);
This function initializes the PSKC container
 handle.  The memory
allocate can be released by calling pskc_done().
 On success, PSKC_OK (zero) is returned, on memory
allocation errors PSKC_MALLOC_ERROR is returned.
void
pskc_done (pskc_t *container);
This function releases the resources associated with the PSKC
container
 handle.
int pskc_parse_from_memory (pskc_t *container,size_t len,const char *buffer);
This function will parse the XML data in buffer
 of len
 size into
container
.  If PSKC_PARSE_ERROR is returned, parsing of some
elements have failed but the container
 is still valid and contain
partially parsed information.  In this situation, you may continue
but raise a warning.
| container | a pskc_t handle, from  | |
| len | length of  | |
| buffer | XML data to parse. | 
 On success, PSKC_OK (zero) is returned, on memory
allocation errors PSKC_MALLOC_ERROR is returned, on XML library
errors PSKC_XML_ERROR is returned, on PSKC parse errors
PSKC_PARSE_ERROR is returned.
int
pskc_get_signed_p (pskc_t *container);
Check whether the container is signed or not (note that it does not validate the signature, merely checks whether there is one).
int pskc_validate (pskc_t *container,int *isvalid);
This function validate the PSKC container
 handle the PSKC XML
Schema.
| container | a pskc_t handle, from  | |
| isvalid | output variable holding validation result, non-0 for valid. | 
int pskc_build_xml (pskc_t *container,char **out,size_t *len);
This function builds a XML file from the data in container
.  As a
convenience, it also converts the XML into a string placed in the
newly allocated *out
 of length len
 using pskc_output() with
PSKC_OUTPUT_XML.
| container | a pskc_t handle, from  | |
| out | pointer to output variable to hold newly allocated string. | |
| len | output variable holding length of * | 
 On success, PSKC_OK (zero) is returned, on memory
allocation errors PSKC_MALLOC_ERROR is returned.
int pskc_sign_x509 (pskc_t *container,const char *key_file,const char *cert_file);
Sign PSKC data using X.509 certificate and private key.
| container | a pskc_t handle, from  | |
| key_file | filename of file containing private key. | |
| cert_file | filename of file containing corresponding X.509 certificate. | 
int pskc_verify_x509crt (pskc_t *container,const char *cert_file,int *valid_signature);
Verify signature in PSKC data against trusted X.509 certificate.
| container | a pskc_t handle, from  | |
| cert_file | filename of file containing trusted X.509 certificate. | |
| valid_signature | output variable with result of verification. | 
const char *
pskc_get_version (pskc_t *container);
Get the PSKC KeyContainer Version attribute. Normally this string is always "1.0" and a missing field is a syntax error according to the PSKC schema.
void pskc_set_version (pskc_t *container,const char *version);
Set the PSKC KeyContainer Version attribute. Normally this string is always "1.0" and a missing field is a syntax error according to the PSKC schema.
The pointer is stored in container
, not a copy of the data, so you
must not deallocate the data before another call to this function
or the last call to any function using container
.
Since 2.2.0
const char *
pskc_get_id (pskc_t *container);
Get the PSKC KeyContainer Id attribute.
void pskc_set_id (pskc_t *container,const char *id);
Set the PSKC KeyContainer Id attribute.
The pointer is stored in container
, not a copy of the data, so you
must not deallocate the data before another call to this function
or the last call to any function using container
.
Since 2.2.0
pskc_key_t * pskc_get_keypackage (pskc_t *container,size_t i);
Get a PSKC keypackage pskc_key_t handle for the i
'th key package
in container
.  i
 is zero-based, i.e., 0 refer to the first key
package, 1 refer to the second key package, and so on.
int pskc_add_keypackage (pskc_t *container,pskc_key_t **key);
Add a new a PSKC keypackage to the container
 and give back a
pskc_key_t handle.
| container | a pskc_t handle, from  | |
| key | pointer to pskc_key_t key package handle. | 
Since 2.2.0
int pskc_output (pskc_t *container,pskc_output_formats_t format,char **out,size_t *len);
Convert PSKC data to a serialized string of the indicated type. This is usually used to convert the PSKC data to some human readable form.
| container | a pskc_t handle, from  | |
| format | an pskc_output_formats_t enumeration type indicating format. | |
| out | pointer to output variable holding newly allocated string. | |
| len | pointer to output variable hold length of * |