Module: Base58

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

Defined Under Namespace

Classes: EncodeError, Error

Constant Summary collapse

VERSION =
"0.1.0"

Class Method Summary collapse

Class Method Details

.check_58(str) ⇒ Object



83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
# File 'ext/b58/b58.c', line 83

VALUE rb_mBase58_check_58(VALUE self, VALUE str) {
  Check_Type(str, T_STRING);

  size_t input_size;
  input_size = RSTRING_LEN(str);

  size_t output_size;
  output_size = input_size * 2;

  char outbuf[output_size];

  char *plaintxt;
  plaintxt = RSTRING_PTR(str);

  int version;
  version = plaintxt[0];

  bool rv;

  rv =
      b58check_enc(outbuf, &output_size, version, &plaintxt[1], input_size - 1);

  if (rv) {
    return Qtrue;
  } else {
    return Qfalse;
  }
}

.decode_58(str) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'ext/b58/b58.c', line 27

VALUE rb_mBase58_decode_58(VALUE self, VALUE str) {
  Check_Type(str, T_STRING);

  size_t input_size;
  input_size = RSTRING_LEN(str);

  size_t output_size;
  output_size = input_size * 733 / 1000 + 1;

  char outbuf[output_size];
  char *plaintxt;

  plaintxt = RSTRING_PTR(str);

  bool rv;

  rv = b58tobin(outbuf, &output_size, plaintxt, input_size);

  if (!rv) {
    rb_raise(rb_mBase58_EncodeError, "Could not encode string in base58");
    return Qnil;
  }

  // Account for null termination
  VALUE outstring;
  outstring = rb_str_new(outbuf, output_size);
  return outstring;
}

.encode_58(str) ⇒ Object



56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'ext/b58/b58.c', line 56

VALUE rb_mBase58_encode_58(VALUE self, VALUE str) {
  Check_Type(str, T_STRING);

  size_t input_size;
  input_size = RSTRING_LEN(str);

  size_t output_size;
  output_size = input_size * 2;

  char outbuf[output_size];
  char *plaintxt;

  plaintxt = RSTRING_PTR(str);

  bool rv;

  rv = b58enc(outbuf, &output_size, plaintxt, input_size);

  if (!rv) {
    rb_raise(rb_mBase58_EncodeError, "Could not encode string in base58");
    return Qnil;
  }

  // Account for null termination
  return rb_str_new(outbuf, output_size - 1);
}