summaryrefslogtreecommitdiff
path: root/egg
diff options
context:
space:
mode:
authorStef Walter <stefw@collabora.co.uk>2011-10-06 12:51:08 +0200
committerStef Walter <stefw@collabora.co.uk>2011-10-06 13:22:43 +0200
commitf28d3d768f0e4057f727e8c3b93ba50c19f5db24 (patch)
tree288ef581590dfccbfddcad3c87d98ce3a4ed0a97 /egg
parent626eef363c0ece57713c5be5939677784e8115cc (diff)
downloadgnome-keyring-split.tar.gz
Split Gcr and Gck libraries out of gnome-keyringsplit
Diffstat (limited to 'egg')
-rw-r--r--egg/Makefile.am1
-rw-r--r--egg/egg-decimal.c101
-rw-r--r--egg/egg-decimal.h33
-rw-r--r--egg/tests/Makefile.am1
-rw-r--r--egg/tests/test-decimal.c136
-rw-r--r--egg/tests/test-hex.c2
6 files changed, 1 insertions, 273 deletions
diff --git a/egg/Makefile.am b/egg/Makefile.am
index 344be24f..4b4da2bd 100644
--- a/egg/Makefile.am
+++ b/egg/Makefile.am
@@ -31,7 +31,6 @@ libegg_la_SOURCES = \
egg-dh.c egg-dh.h \
egg-dn.c egg-dn.h \
egg-error.h \
- egg-decimal.c egg-decimal.h \
egg-hex.c egg-hex.h \
egg-hkdf.c egg-hkdf.h \
egg-libgcrypt.c egg-libgcrypt.h \
diff --git a/egg/egg-decimal.c b/egg/egg-decimal.c
deleted file mode 100644
index 6f3921dc..00000000
--- a/egg/egg-decimal.c
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * gnome-keyring
- *
- * Copyright (C) 2011 Collabora Ltd.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This program 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
- * 02111-1307, USA.
- *
- * Author: Stef Walter <stefw@collabora.co.uk>
- */
-
-#include "config.h"
-
-#include "egg-decimal.h"
-
-#include <string.h>
-
-gpointer
-egg_decimal_decode (const gchar *data,
- gssize n_data,
- gsize *n_decoded)
-{
- gboolean saw_non_zero = FALSE;
- guint8 *digits = NULL;
- guint n_digits = 0;
- guchar *usg;
- gchar ch;
- guint carry;
- guint i;
- guint cleared;
- guchar *at_byte;
- guint at_bit;
- gsize length;
-
- g_return_val_if_fail (data, NULL);
-
- if (n_data < 0)
- n_data = strlen (data);
-
- /* Convert everything to an array of digits */
- digits = g_new0 (guint8, n_data);
- for (i = 0; i < n_data; i++) {
- ch = data[i];
- if (ch < '0' || ch > '9') {
- g_free (digits);
- return NULL;
- } else if (ch != '0' || saw_non_zero) {
- digits[n_digits] = ch - '0';
- n_digits++;
- saw_non_zero = TRUE;
- }
- }
-
- usg = g_new0 (guchar, n_data);
- cleared = 0;
- at_byte = usg + n_data - 1;
- at_bit = 0;
-
- /* for every digit ... */
- while (cleared < n_digits) {
- /* ... store the bit depending on whether last digit is odd */
- guchar bit = (digits[n_digits - 1] % 2);
- *at_byte |= (bit << at_bit);
- if (at_bit++ == 7) {
- at_bit = 0;
- at_byte--;
- g_assert (at_byte >= usg);
- }
-
- /* ... divide digits by two */
- carry = 0;
- for (i = cleared; i < n_digits; i++) {
- gboolean odd = (digits[i] % 2);
- digits[i] = digits[i] / 2 + carry;
- carry = odd ? 5 : 0;
- if (i == cleared && digits[i] == 0)
- cleared++;
- }
- }
-
- if (at_bit == 0)
- at_byte++;
-
- length = n_data - (at_byte - usg);
- memmove (usg, at_byte, length);
- if (n_decoded)
- *n_decoded = length;
- return usg;
-}
diff --git a/egg/egg-decimal.h b/egg/egg-decimal.h
deleted file mode 100644
index 24602d49..00000000
--- a/egg/egg-decimal.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * gnome-keyring
- *
- * Copyright (C) 2011 Collabora Ltd.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This program 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
- * Lesser General License for more details.
- *
- * You should have received a copy of the GNU Lesser General
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
- * 02111-1307, USA.
- *
- * Author: Stef Walter <stefw@collabora.co.uk>
- */
-
-#ifndef EGG_DECIMAL_H_
-#define EGG_DECIMAL_H_
-
-#include <glib.h>
-
-gpointer egg_decimal_decode (const gchar *data,
- gssize n_data,
- gsize *n_decoded);
-
-#endif /* EGG_DECIMAL_H_ */
diff --git a/egg/tests/Makefile.am b/egg/tests/Makefile.am
index 84bc5c1a..aa5fac70 100644
--- a/egg/tests/Makefile.am
+++ b/egg/tests/Makefile.am
@@ -18,7 +18,6 @@ TEST_PROGS = \
test-asn1 \
test-dn \
test-cleanup \
- test-decimal \
test-hex \
test-hkdf \
test-oid \
diff --git a/egg/tests/test-decimal.c b/egg/tests/test-decimal.c
deleted file mode 100644
index 4996cafe..00000000
--- a/egg/tests/test-decimal.c
+++ /dev/null
@@ -1,136 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* unit-test-util.c: Test gck-util.c
-
- Copyright (C) 2011 Collabora Ltd.
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stefw@collabora.co.uk>
-*/
-
-#include "config.h"
-
-#include "egg/egg-decimal.h"
-#include "egg/egg-testing.h"
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
-typedef struct {
- const gchar *decimal;
- const gchar *result;
- gsize length;
-} TestDecimal;
-
-static TestDecimal decimal_fixtures[] = {
- { "35", "\x23", 1 },
- { "2048", "\x08\x00", 2 },
- { "209328042309", "\x30\xBC\xEC\x71\x45", 5 },
- { "0002048", "\x08\x00", 2 },
- { "20480000", "\x01\x38\x80\x00", 4 },
- { "2521368004379664277055118629334750468402260732427135194366161280379"
- "6661942758264006541602516197962800670706891657576953487072507942596"
- "6374424122494538738176144081024494339591946626053519298721214406983"
- "3606711407748948613853344896472022957466922483835202523097287025430"
- "5078987427716449092979306938082113263545271808186244259338032237756"
- "9175402872261192563172038927792670653714043622677577357160052045893"
- "9513984477743817388078699536715866468499111753894230211101792648120"
- "1128688482121549927434503046858485918719606735307033123916744787670"
- "4316000505177621722934283063062034258685067324811300901286708201589"
- "59867993533757",
- "\xC7\xBB\x16\xF4\xB8\x04\x24\x0F\xFC\xC2\xA7\xAF\x8C\x6E\x67\xE1\x16"
- "\x7F\xEB\xFA\x7F\xAA\x9D\xFD\x7C\xF2\x75\xB8\xA5\x1F\x27\x35\xF2\xD4"
- "\x9D\x78\xFB\xF6\x5C\xED\x10\xB4\xE4\x32\x58\x2D\xC9\x1E\x86\x54\xF7"
- "\x89\x7F\x03\x84\x68\x32\x76\xA9\xA7\x97\xC3\xA3\x6F\x7A\x46\x85\x43"
- "\x5E\x14\x4D\x47\x01\x81\x06\xE5\xC0\x61\xD7\xC8\x7C\x9B\xE1\x9D\x84"
- "\x87\x75\x77\x80\x0E\xAE\x91\xB1\x05\x12\xDE\x92\xF2\x98\x84\x1F\x43"
- "\xD4\xC4\x57\x77\x95\xC5\xE6\x82\xEE\xEA\x0A\xB3\xDD\x8C\x44\x45\x9A"
- "\x12\xAC\xF9\xC2\x22\xA1\x3F\x03\x31\xDD\x84\xF7\x75\x51\xE0\xFA\x24"
- "\x8E\x6F\xE9\x58\x4C\xA3\x42\x73\xB9\x5E\x2F\x0D\xCC\xDC\x22\x8A\x48"
- "\x75\x4A\x76\xA2\x9D\x03\xBA\x5F\xC8\x57\xB5\x1F\x5C\x85\x7E\x8C\x0F"
- "\xF2\x73\xDA\x96\x67\x7C\xC6\x4D\x54\x2C\x45\x63\xD1\xA6\x7F\xF1\xA0"
- "\x1F\x3F\x9E\xDF\xF3\x7F\x24\x3D\x6E\xB8\xF7\x4C\xC8\xA7\x27\x95\xA1"
- "\xDA\x8F\x98\x32\x32\x1B\x7D\xB6\x1B\xFC\x8D\x73\x7C\xD1\x48\x99\xD0"
- "\xAC\x7C\xF1\x5B\x95\xA5\xFE\xD8\x12\x57\x5C\x7A\x6B\xC5\x5C\x7D\x92"
- "\xB1\x91\x88\x36\x58\x19\x30\x67\x2D\x73\xF3\x5A\xA6\x31\xC4\x5C\x2D"
- "\x3D"
- , 256 }
-};
-
-static const gchar *decimal_failures[] = {
- "-35",
- "abcd",
- " 3 33",
-};
-
-static void
-test_decode_success (gconstpointer data)
-{
- const TestDecimal *fixture = data;
- guchar *decoded;
- gsize n_decoded;
-
- decoded = egg_decimal_decode (fixture->decimal, -1, &n_decoded);
- egg_assert_cmpmem (fixture->result, fixture->length, ==, decoded, n_decoded);
- g_free (decoded);
-}
-
-static void
-test_decode_failure (gconstpointer data)
-{
- const gchar *failure = data;
- guchar *decoded;
- gsize n_decoded;
-
- decoded = egg_decimal_decode (failure, -1, &n_decoded);
- g_assert (decoded == NULL);
-}
-
-int
-main (int argc, char **argv)
-{
- gchar *name;
- gchar *decimal;
- const gchar *suffix;
- guint i;
-
- g_test_init (&argc, &argv, NULL);
-
- for (i = 0; i < G_N_ELEMENTS (decimal_fixtures); i++) {
- /* Ellipsize long numbers in test names */
- decimal = g_strndup (decimal_fixtures[i].decimal, 41);
- if (strlen (decimal) == 41) {
- decimal[40] = 0;
- suffix = "_long";
- } else {
- suffix = "";
- }
- name = g_strdup_printf ("/decimal/decode-success/%s%s", decimal, suffix);
- g_test_add_data_func (name, &decimal_fixtures[i], test_decode_success);
- g_free (name);
- g_free (decimal);
- }
-
- for (i = 0; i < G_N_ELEMENTS (decimal_failures); i++) {
- name = g_strdup_printf ("/decimal/decode-failure/%s", decimal_failures[i]);
- g_strcanon (name, "abcdefghijklmnopqrstuvwxyz-_/0123456789", '_');
- g_test_add_data_func (name, decimal_failures[i], test_decode_failure);
- g_free (name);
- }
-
- return g_test_run ();
-}
diff --git a/egg/tests/test-hex.c b/egg/tests/test-hex.c
index e2cb9f06..97d25178 100644
--- a/egg/tests/test-hex.c
+++ b/egg/tests/test-hex.c
@@ -1,5 +1,5 @@
/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* unit-test-util.c: Test gck-util.c
+/* unit-test-util.c: Test hex routines
Copyright (C) 2007 Stefan Walter