module B32

Constants

VERSION

Public Class Methods

decode(p1) click to toggle source
static VALUE
b32_decode(int argc, VALUE *argv, VALUE self)
{
  VALUE input;
  const unsigned char* src;
  size_t input_len, estimate_len;

  rb_scan_args(argc, argv, "1", &input);

  if (TYPE(input) != T_STRING) {
    rb_raise(rb_eTypeError, "expected a String");
  }

  src = (unsigned char*) StringValueCStr(input);
  input_len = RSTRING_LEN(input);
  estimate_len = UNBASE32_LEN(input_len);
  unsigned char out[estimate_len];

  base32_decode(src, out);

  return rb_utf8_str_new_cstr((const char*) out);
}
encode(p1) click to toggle source
static VALUE
b32_encode(int argc, VALUE* argv, VALUE self)
{
  VALUE input;
  const unsigned char* src;
  size_t srclen;
  rb_scan_args(argc, argv, "1", &input);

  if (TYPE(input) != T_STRING) {
    rb_raise(rb_eTypeError, "expected a String");
  }

  src = (unsigned char*) StringValueCStr(input);
  srclen = BASE32_LEN(RSTRING_LEN(input));

  unsigned char dest[srclen];
  base32_encode(src, RSTRING_LEN(input), dest);
  return rb_utf8_str_new((const char*) dest, srclen );
}