diff options
Diffstat (limited to 'csharp/src/Ice/Base64.cs')
-rw-r--r-- | csharp/src/Ice/Base64.cs | 276 |
1 files changed, 0 insertions, 276 deletions
diff --git a/csharp/src/Ice/Base64.cs b/csharp/src/Ice/Base64.cs deleted file mode 100644 index 37838f58e1e..00000000000 --- a/csharp/src/Ice/Base64.cs +++ /dev/null @@ -1,276 +0,0 @@ -// ********************************************************************** -// -// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved. -// -// This copy of Ice is licensed to you under the terms described in the -// ICE_LICENSE file included in this distribution. -// -// ********************************************************************** - -namespace IceUtilInternal -{ - -public class Base64 -{ - -public static string -encode(byte[] plainSeq) -{ - if(plainSeq == null || plainSeq.Length == 0) - { - return ""; - } - - System.Text.StringBuilder retval = new System.Text.StringBuilder(); - int base64Bytes = (((plainSeq.Length * 4) / 3) + 1); - int newlineBytes = (((base64Bytes * 2) / 76) + 1); - int totalBytes = base64Bytes + newlineBytes; - - retval.Capacity = totalBytes; - - byte by1; - byte by2; - byte by3; - byte by4; - byte by5; - byte by6; - byte by7; - - for(int i = 0; i < plainSeq.Length; i += 3) - { - by1 = plainSeq[i]; - by2 = 0; - by3 = 0; - - if((i + 1) < plainSeq.Length) - { - by2 = plainSeq[i+1]; - } - - if((i + 2) < plainSeq.Length) - { - by3 = plainSeq[i+2]; - } - - by4 = (byte)(by1 >> 2); - by5 = (byte)(((by1 & 0x3) << 4) | (by2 >> 4)); - by6 = (byte)(((by2 & 0xf) << 2) | (by3 >> 6)); - by7 = (byte)(by3 & 0x3f); - - retval.Append(encode(by4)); - retval.Append(encode(by5)); - - if((i + 1) < plainSeq.Length) - { - retval.Append(encode(by6)); - } - else - { - retval.Append('='); - } - - if((i + 2) < plainSeq.Length) - { - retval.Append(encode(by7)); - } - else - { - retval.Append('='); - } - } - - System.Text.StringBuilder outString = new System.Text.StringBuilder(); - outString.Capacity = totalBytes; - int iter = 0; - - while((retval.Length - iter) > 76) - { - outString.Append(retval.ToString().Substring(iter, 76)); - outString.Append("\r\n"); - iter += 76; - } - - outString.Append(retval.ToString().Substring(iter)); - - return outString.ToString(); -} - -public static byte[] -decode(string str) -{ - System.Text.StringBuilder newStr = new System.Text.StringBuilder(); - - newStr.Capacity = str.Length; - - for(int j = 0; j < str.Length; j++) - { - char c = str[j]; - if(isBase64(c)) - { - newStr.Append(c); - } - } - - if(newStr.Length == 0) - { - return null; - } - - // Note: This is how we were previously computing the size of the return - // sequence. The method below is more efficient (and correct). - // size_t lines = str.size() / 78; - // size_t totalBytes = (lines * 76) + (((str.size() - (lines * 78)) * 3) / 4); - - // Figure out how long the final sequence is going to be. - int totalBytes = (newStr.Length * 3 / 4) + 1; - - IceInternal.ByteBuffer retval = IceInternal.ByteBuffer.allocate(totalBytes); - - byte by1; - byte by2; - byte by3; - byte by4; - - char c1, c2, c3, c4; - - int pos = 0; - for(int i = 0; i < newStr.Length; i += 4) - { - c1 = 'A'; - c2 = 'A'; - c3 = 'A'; - c4 = 'A'; - - c1 = newStr[i]; - - if((i + 1) < newStr.Length) - { - c2 = newStr[i + 1]; - } - - if((i + 2) < newStr.Length) - { - c3 = newStr[i + 2]; - } - - if((i + 3) < newStr.Length) - { - c4 = newStr[i + 3]; - } - - by1 = decode(c1); - by2 = decode(c2); - by3 = decode(c3); - by4 = decode(c4); - - retval.put((byte)((by1 << 2) | (by2 >> 4))); - ++pos; - - if(c3 != '=') - { - retval.put((byte)(((by2 & 0xf) << 4) | (by3 >> 2))); - ++pos; - } - - if(c4 != '=') - { - retval.put((byte)(((by3 & 0x3) << 6) | by4)); - ++pos; - } - } - - return retval.toArray(0, pos); -} - -public static bool -isBase64(char c) -{ - if(c >= 'A' && c <= 'Z') - { - return true; - } - - if(c >= 'a' && c <= 'z') - { - return true; - } - - if(c >= '0' && c <= '9') - { - return true; - } - - if(c == '+') - { - return true; - } - - if(c == '/') - { - return true; - } - - if(c == '=') - { - return true; - } - - return false; -} - -private static char -encode(byte uc) -{ - if(uc < 26) - { - return (char)('A' + uc); - } - - if(uc < 52) - { - return (char)('a' + (uc - 26)); - } - - if(uc < 62) - { - return (char)('0' + (uc - 52)); - } - - if(uc == 62) - { - return '+'; - } - - return '/'; -} - -private static byte -decode(char c) -{ - if(c >= 'A' && c <= 'Z') - { - return (byte)(c - 'A'); - } - - if(c >= 'a' && c <= 'z') - { - return (byte)(c - 'a' + 26); - } - - if(c >= '0' && c <= '9') - { - return (byte)(c - '0' + 52); - } - - if(c == '+') - { - return 62; - } - - return 63; -} - -} - -} - |