Module: B32

Defined in:
lib/b32/version.rb,
ext/b32/b32.c

Defined Under Namespace

Classes: DecodeError

Constant Summary collapse

VERSION =
"1.0.0"

Class Method Summary collapse

Class Method Details

.decode(*args) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'ext/b32/b32.c', line 31

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(*args) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'ext/b32/b32.c', line 11

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 );
}