summaryrefslogtreecommitdiffabout
path: root/include/opkele/util.h
Side-by-side diff
Diffstat (limited to 'include/opkele/util.h') (more/less context) (show 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
@@ -8,29 +8,37 @@
#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); }
@@ -38,27 +46,85 @@ namespace opkele {
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 */