seahorse r2304 - in trunk: . ssh
- From: nnielsen svn gnome org
- To: svn-commits-list gnome org
- Subject: seahorse r2304 - in trunk: . ssh
- Date: Sat, 26 Jul 2008 18:35:08 +0000 (UTC)
Author: nnielsen
Date: Sat Jul 26 18:35:08 2008
New Revision: 2304
URL: http://svn.gnome.org/viewvc/seahorse?rev=2304&view=rev
Log:
* ssh/seahorse-algo.c:
* ssh/seahorse-algo.h:
* ssh/seahorse-ssh-key-data.c: Use base64 encoding functions
in GLib rather than including our own.
Modified:
trunk/ChangeLog
trunk/ssh/seahorse-algo.c
trunk/ssh/seahorse-algo.h
trunk/ssh/seahorse-ssh-key-data.c
Modified: trunk/ssh/seahorse-algo.c
==============================================================================
--- trunk/ssh/seahorse-algo.c (original)
+++ trunk/ssh/seahorse-algo.c Sat Jul 26 18:35:08 2008
@@ -239,351 +239,3 @@
buf[3] += d;
}
-
-
-/* gbase64.c - Base64 encoding/decoding
- *
- * Copyright (C) 2006 Alexander Larsson <alexl redhat com>
- * Copyright (C) 2000-2003 Ximian Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * This is based on code in camel, written by:
- * Michael Zucchi <notzed ximian com>
- * Jeffrey Stedfast <fejj ximian com>
- */
-
-#include "config.h"
-
-#include <string.h>
-#include <glib.h>
-
-static const char base64_alphabet[] =
- "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
-
-/**
- * g_base64_encode_step:
- * @in: the binary data to encode.
- * @len: the length of @in.
- * @break_lines: whether to break long lines
- * @out: pointer to destination buffer
- * @state: Saved state between steps, initialize to 0
- * @save: Saved state between steps, initialize to 0
- *
- * Incrementally encode a sequence of binary data into it's Base-64 stringified
- * representation. By calling this functions multiple times you can convert data
- * in chunks to avoid having to have the full encoded data in memory.
- *
- * When all the data has been converted you must call g_base64_encode_close()
- * to flush the saved state.
- *
- * The output buffer must be large enough to fit all the data that will
- * be written to it. Due to the way base64 encodes you will need
- * at least: @len * 4 / 3 + 6 bytes. If you enable line-breaking you will
- * need at least: @len * 4 / 3 + @len * 4 / (3 * 72) + 7 bytes.
- *
- * @break_lines is typically used when putting base64-encoded data in emails.
- * It breaks the lines at 72 columns instead of putting all text on the same
- * line. This avoids problems with long lines in the email system.
- *
- * Return value: The number of bytes of output that was written
- *
- * Since: 2.12
- */
-gsize
-seahorse_base64_encode_step (const guchar *in,
- gsize len,
- gboolean break_lines,
- gchar *out,
- gint *state,
- gint *save)
-{
- char *outptr;
- const guchar *inptr;
-
- if (len <= 0)
- return 0;
-
- inptr = in;
- outptr = out;
-
- if (len + ((char *) save) [0] > 2)
- {
- const guchar *inend = in+len-2;
- int c1, c2, c3;
- int already;
-
- already = *state;
-
- switch (((char *) save) [0])
- {
- case 1:
- c1 = ((unsigned char *) save) [1];
- goto skip1;
- case 2:
- c1 = ((unsigned char *) save) [1];
- c2 = ((unsigned char *) save) [2];
- goto skip2;
- }
-
- /*
- * yes, we jump into the loop, no i'm not going to change it,
- * it's beautiful!
- */
- while (inptr < inend)
- {
- c1 = *inptr++;
- skip1:
- c2 = *inptr++;
- skip2:
- c3 = *inptr++;
- *outptr++ = base64_alphabet [ c1 >> 2 ];
- *outptr++ = base64_alphabet [ c2 >> 4 |
- ((c1&0x3) << 4) ];
- *outptr++ = base64_alphabet [ ((c2 &0x0f) << 2) |
- (c3 >> 6) ];
- *outptr++ = base64_alphabet [ c3 & 0x3f ];
- /* this is a bit ugly ... */
- if (break_lines && (++already) >= 19)
- {
- *outptr++ = '\n';
- already = 0;
- }
- }
-
- ((char *)save)[0] = 0;
- len = 2 - (inptr - inend);
- *state = already;
- }
-
- if (len>0)
- {
- char *saveout;
-
- /* points to the slot for the next char to save */
- saveout = & (((char *)save)[1]) + ((char *)save)[0];
-
- /* len can only be 0 1 or 2 */
- switch(len)
- {
- case 2: *saveout++ = *inptr++;
- case 1: *saveout++ = *inptr++;
- }
- ((char *)save)[0] += len;
- }
-
- return outptr - out;
-}
-
-/**
- * g_base64_encode_close:
- * @break_lines: whether to break long lines
- * @out: pointer to destination buffer
- * @state: Saved state from g_base64_encode_step()
- * @save: Saved state from g_base64_encode_step()
- *
- * Flush the status from a sequence of calls to g_base64_encode_step().
- *
- * Return value: The number of bytes of output that was written
- *
- * Since: 2.12
- */
-gsize
-seahorse_base64_encode_close (gboolean break_lines,
- gchar *out,
- gint *state,
- gint *save)
-{
- int c1, c2;
- char *outptr = out;
-
- c1 = ((unsigned char *) save) [1];
- c2 = ((unsigned char *) save) [2];
-
- switch (((char *) save) [0])
- {
- case 2:
- outptr [2] = base64_alphabet[ ( (c2 &0x0f) << 2 ) ];
- g_assert (outptr [2] != 0);
- goto skip;
- case 1:
- outptr[2] = '=';
- skip:
- outptr [0] = base64_alphabet [ c1 >> 2 ];
- outptr [1] = base64_alphabet [ c2 >> 4 | ( (c1&0x3) << 4 )];
- outptr [3] = '=';
- outptr += 4;
- break;
- }
- if (break_lines)
- *outptr++ = '\n';
-
- *save = 0;
- *state = 0;
-
- return outptr - out;
-}
-
-/**
- * g_base64_encode:
- * @data: the binary data to encode.
- * @len: the length of @data.
- *
- * Encode a sequence of binary data into it's Base-64 stringified
- * representation.
- *
- * Return value: a newly allocated, zero-terminated Base-64 encoded
- * string representing @data.
- *
- * Since: 2.12
- */
-gchar *
-seahorse_base64_encode (const guchar *data,
- gsize len)
-{
- gchar *out;
- gint state = 0, outlen;
- gint save = 0;
-
- /* We can use a smaller limit here, since we know the saved state is 0 */
- out = g_malloc (len * 4 / 3 + 4);
- outlen = seahorse_base64_encode_step (data, len, FALSE, out, &state, &save);
- outlen += seahorse_base64_encode_close (FALSE,
- out + outlen,
- &state,
- &save);
- out[outlen] = '\0';
- return (gchar *) out;
-}
-
-static const unsigned char mime_base64_rank[256] = {
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
- 255,255,255,255,255,255,255,255,255,255,255, 62,255,255,255, 63,
- 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,255,255,255, 0,255,255,
- 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,255,255,255,255,255,
- 255, 26, 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,255,255,255,255,255,
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-};
-
-/**
- * g_base64_decode_step:
- * @in: binary input data
- * @len: max length of @in data to decode
- * @out: output buffer
- * @state: Saved state between steps, initialize to 0
- * @save: Saved state between steps, initialize to 0
- *
- * Incrementally decode a sequence of binary data from it's Base-64 stringified
- * representation. By calling this functions multiple times you can convert data
- * in chunks to avoid having to have the full encoded data in memory.
- *
- * The output buffer must be large enough to fit all the data that will
- * be written to it. Since base64 encodes 3 bytes in 4 chars you need
- * at least: @len * 3 / 4 bytes.
- *
- * Return value: The number of bytes of output that was written
- *
- * Since: 2.12
- **/
-gsize
-seahorse_base64_decode_step (const gchar *in,
- gsize len,
- guchar *out,
- gint *state,
- guint *save)
-{
- const guchar *inptr;
- guchar *outptr;
- const guchar *inend;
- guchar c, rank;
- guchar last[2];
- unsigned int v;
- int i;
-
- inend = (const guchar *)in+len;
- outptr = out;
-
- /* convert 4 base64 bytes to 3 normal bytes */
- v=*save;
- i=*state;
- inptr = (const guchar *)in;
- last[0] = last[1] = 0;
- while (inptr < inend)
- {
- c = *inptr++;
- rank = mime_base64_rank [c];
- if (rank != 0xff)
- {
- last[1] = last[0];
- last[0] = c;
- v = (v<<6) | rank;
- i++;
- if (i==4)
- {
- *outptr++ = v>>16;
- if (last[1] != '=')
- *outptr++ = v>>8;
- if (last[0] != '=')
- *outptr++ = v;
- i=0;
- }
- }
- }
-
- *save = v;
- *state = i;
-
- return outptr - out;
-}
-
-/**
- * g_base64_decode:
- * @text: zero-terminated string with base64 text to decode.
- * @out_len: The lenght of the decoded data is written here.
- *
- * Decode a sequence of Base-64 encoded text into binary data
- *
- * Return value: a newly allocated, buffer containing the binary data
- * that @text represents
- *
- * Since: 2.12
- */
-guchar *
-seahorse_base64_decode (const gchar *text,
- gsize *out_len)
-{
- guchar *ret;
- gint inlen, state = 0;
- guint save = 0;
-
- inlen = strlen (text);
- ret = g_malloc0 (inlen * 3 / 4);
-
- *out_len = seahorse_base64_decode_step (text, inlen, ret, &state, &save);
-
- return ret;
-}
-
Modified: trunk/ssh/seahorse-algo.h
==============================================================================
--- trunk/ssh/seahorse-algo.h (original)
+++ trunk/ssh/seahorse-algo.h Sat Jul 26 18:35:08 2008
@@ -44,54 +44,6 @@
void seahorse_md5_update(md5_ctx_t* context, const void* buf, unsigned len);
void seahorse_md5_final(unsigned char digest[MD5_LEN], md5_ctx_t* context);
-
-
-/* gbase64.h - Base64 coding functions
- *
- * Copyright (C) 2005 Alexander Larsson <alexl redhat com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include <glib/gtypes.h>
-
-G_BEGIN_DECLS
-
-gsize seahorse_base64_encode_step (const guchar *in,
- gsize len,
- gboolean break_lines,
- gchar *out,
- gint *state,
- gint *save);
-gsize seahorse_base64_encode_close (gboolean break_lines,
- gchar *out,
- gint *state,
- gint *save);
-gchar* seahorse_base64_encode (const guchar *data,
- gsize len) G_GNUC_MALLOC;
-gsize seahorse_base64_decode_step (const gchar *in,
- gsize len,
- guchar *out,
- gint *state,
- guint *save);
-guchar *seahorse_base64_decode (const gchar *text,
- gsize *out_len) G_GNUC_MALLOC;
-
-G_END_DECLS
-
#endif /* __SEAHORSE_ALGO_H__ */
Modified: trunk/ssh/seahorse-ssh-key-data.c
==============================================================================
--- trunk/ssh/seahorse-ssh-key-data.c (original)
+++ trunk/ssh/seahorse-ssh-key-data.c Sat Jul 26 18:35:08 2008
@@ -130,7 +130,7 @@
g_strchomp (line);
/* Decode it, and parse binary stuff */
- bytes = seahorse_base64_decode (line, &len);
+ bytes = g_base64_decode (line, &len);
ret = parse_key_blob (bytes, len, data);
g_free (bytes);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]