work with CURVE security certificates Create and initialize a new certificate in memory Accepts public/secret key pair from caller Load certificate from file Destroy a certificate in memory Return public part of key pair as 32-byte binary string Return secret part of key pair as 32-byte binary string Return public part of key pair as Z85 armored string Return secret part of key pair as Z85 armored string Set certificate metadata from formatted string. Unset certificate metadata. Get metadata value from certificate; if the metadata value doesn't exist, returns NULL. Get list of metadata fields from certificate. Caller is responsible for destroying list. Caller should not modify the values of list items. Save full certificate (public + secret) to file for persistent storage This creates one public file and one secret file (filename + "_secret"). Save public certificate only to file for persistent storage Save secret certificate only to file for persistent storage Apply certificate to socket, i.e. use for CURVE security on socket. If certificate was loaded from public file, the secret key will be undefined, and this certificate will not work successfully. Return copy of certificate; if certificate is NULL or we exhausted heap memory, returns NULL. Return true if two certificates have the same keys Print certificate contents to stdout Self test of this class