+/**
+ * Read an asymmetric key from a file.
+ *
+ * \param key_file The file containing the key.
+ * \param result The key structure is returned here.
+ *
+ * \return The size of the key on success, negative on errors.
+ */
+int get_public_key(const char *key_file, struct asymmetric_key **result);
+
+/**
+ * Deallocate a public key.
+ *
+ * \param key Pointer to the key structure to free.
+ *
+ * This should be called for keys obtained by get_public_key() if the key is no
+ * longer needed.
+ */
+void free_public_key(struct asymmetric_key *key);
+
+
+/**
+ * Fill a buffer with random content.
+ *
+ * \param buf The buffer to fill.
+ * \param num The size of \a buf in bytes.
+ *
+ * This function puts \a num cryptographically strong pseudo-random bytes into
+ * buf. If it can not guarantee an unpredictable byte sequence (for example
+ * because the PRNG has not been seeded with enough randomness) the function
+ * logs an error message and calls exit().
+ */