Skip to content
/ i2pd Public
forked from PurpleI2P/i2pd

Commit

Permalink
base32 encode
Browse files Browse the repository at this point in the history
  • Loading branch information
orignal committed Aug 21, 2014
1 parent aaa8e39 commit 90fe263
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 0 deletions.
30 changes: 30 additions & 0 deletions base64.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -232,5 +232,35 @@ namespace data
}
return ret;
}

size_t ByteStreamToBase32 (const uint8_t * inBuf, size_t len, char * outBuf, size_t outLen)
{
size_t ret = 0, pos = 1;
int bits = 8, tmp = inBuf[0];
while (ret < outLen && (bits > 0 || pos < len))
{
if (bits < 5)
{
if (pos < len)
{
tmp <<= 8;
tmp |= inBuf[pos] & 0xFF;
pos++;
bits += 8;
}
else // last byte
{
tmp <<= (5 - bits);
bits = 5;
}
}

bits -= 5;
int ind = (tmp >> bits) & 0x1F;
outBuf[ret] = (ind < 26) ? (ind + 'a') : ((ind - 26) + '2');
ret++;
}
return ret;
}
}
}
1 change: 1 addition & 0 deletions base64.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ namespace data
const char * GetBase64SubstitutionTable ();

size_t Base32ToByteStream (const char * inBuf, size_t len, uint8_t * outBuf, size_t outLen);
size_t ByteStreamToBase32 (const uint8_t * InBuf, size_t len, char * outBuf, size_t outLen);
}
}

Expand Down

0 comments on commit 90fe263

Please sign in to comment.