summaryrefslogtreecommitdiffabout
path: root/include/opkele
authorMichael Krelin <hacker@klever.net>2007-01-12 14:04:13 (UTC)
committer Michael Krelin <hacker@klever.net>2007-01-12 14:04:13 (UTC)
commit782d7a9e2c07ff6621b754595642aa3fec377bd2 (patch) (side-by-side diff)
tree491a9d726bf8d027350c81877be2dd2baca40971 /include/opkele
parentd6a92f4891cd730c1c3cdba90f474cf253534120 (diff)
downloadlibopkele-782d7a9e2c07ff6621b754595642aa3fec377bd2.zip
libopkele-782d7a9e2c07ff6621b754595642aa3fec377bd2.tar.gz
libopkele-782d7a9e2c07ff6621b754595642aa3fec377bd2.tar.bz2
added more doxygen comments
Diffstat (limited to 'include/opkele') (more/less context) (ignore whitespace changes)
-rw-r--r--include/opkele/util.h66
1 files changed, 66 insertions, 0 deletions
diff --git a/include/opkele/util.h b/include/opkele/util.h
index 80d8b03..2a7a859 100644
--- a/include/opkele/util.h
+++ b/include/opkele/util.h
@@ -1,64 +1,130 @@
#ifndef __OPKELE_UTIL_H
#define __OPKELE_UTIL_H
#include <time.h>
#include <string>
#include <vector>
#include <openssl/bn.h>
#include <openssl/dh.h>
namespace opkele {
using std::string;
using std::vector;
namespace util {
+ /**
+ * Convenience class encapsulating SSL BIGNUM object for the purpose of
+ * automatical freeing.
+ */
class bignum_t {
public:
BIGNUM *_bn;
bignum_t() : _bn(0) { }
bignum_t(BIGNUM *bn) : _bn(bn) { }
~bignum_t() throw() { if(_bn) BN_free(_bn); }
bignum_t& operator=(BIGNUM *bn) { if(_bn) BN_free(_bn); _bn = bn; return *this; }
operator const BIGNUM*(void) const { return _bn; }
operator BIGNUM*(void) { return _bn; }
};
+ /**
+ * Convenience clas encapsulating SSL DH object for the purpose of
+ * automatic freeing.
+ */
class dh_t {
public:
DH *_dh;
dh_t() : _dh(0) { }
dh_t(DH *dh) : _dh(dh) { }
~dh_t() throw() { if(_dh) DH_free(_dh); }
dh_t& operator=(DH *dh) { if(_dh) DH_free(_dh); _dh = dh; return *this; }
operator const DH*(void) const { return _dh; }
operator DH*(void) { return _dh; }
DH* operator->() { return _dh; }
const DH* operator->() const { return _dh; }
};
+ /**
+ * Convert base64-encoded SSL BIGNUM to internal representation.
+ * @param b64 base64-encoded number
+ * @return SSL BIGNUM
+ * @throw failed_conversion in case of error
+ */
BIGNUM *base64_to_bignum(const string& b64);
+ /**
+ * Convert decimal representation to SSL BIGNUM.
+ * @param dec decimal representation
+ * @return resulting BIGNUM
+ * @throw failed_conversion in case of error
+ */
BIGNUM *dec_to_bignum(const string& dec);
+ /**
+ * Convert SSL BIGNUM data to base64 encoded string.
+ * @param bn BIGNUM
+ * @return base64encoded string
+ */
string bignum_to_base64(const BIGNUM *bn);
+ /**
+ * Convert internal time representation to w3c format
+ * @param t internal representation
+ * @return w3c time
+ * @throw failed_conversion in case of error
+ */
string time_to_w3c(time_t t);
+ /**
+ * Convert W3C time representation to internal time_t
+ * @param w w3c representation
+ * @return converted time
+ * @throw failed_conversion in case of error
+ */
time_t w3c_to_time(const string& w);
+ /**
+ * Encode string to the representation suitable for using in URL.
+ * @param str string to encode
+ * @return encoded string
+ * @throw failed_conversion in case of failure
+ */
string url_encode(const string& str);
+ /**
+ * Convert number to string
+ * @param l number
+ * @return string representation
+ * @throw failed_conversion in case of failure
+ */
string long_to_string(long l);
+ /**
+ * Convert string to number
+ * @param s string, containing the number
+ * @return the number
+ * @throw failed_conversion in case of failure
+ */
long string_to_long(const string& s);
+ /**
+ * Encode binary data using base64.
+ * @param data pointer to binary data
+ * @param length length of data
+ * @return encoded data
+ */
string encode_base64(const void *data,size_t length);
+ /**
+ * Decode binary data from base64 representation.
+ * @param data base64-encoded data
+ * @param rv container for decoded binary
+ */
void decode_base64(const string& data,vector<unsigned char>& rv);
}
}
#endif /* __OPKELE_UTIL_H */