[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openmoko-commitlog
Subject:    commitlog Digest, Vol 649, Issue 3
From:       commitlog-request () lists ! openmoko ! org
Date:       2008-10-07 21:52:08
Message-ID: mailman.3971.1223416328.19587.commitlog () lists ! openmoko ! org
[Download RAW message or body]

Send commitlog mailing list submissions to
	commitlog@lists.openmoko.org

To subscribe or unsubscribe via the World Wide Web, visit
	http://lists.openmoko.org/mailman/listinfo/commitlog
or, via email, send a message with subject or body 'help' to
	commitlog-request@lists.openmoko.org

You can reach the person managing the list at
	commitlog-owner@lists.openmoko.org

When replying, please edit your Subject line so it is more specific
than "Re: Contents of commitlog digest..."


Today's Topics:

   1. Holger's qtopia repo: Changes to 'master' (git@git.openmoko.org)
   2. r4699 - trunk/src/host/dfu-util/src (laforge@docs.openmoko.org)
   3. r4700 - trunk/src/host/dfu-util/src (laforge@docs.openmoko.org)
   4. r4701 - trunk/src/host/dfu-util/src (laforge@docs.openmoko.org)
   5. development tree for U-Boot: Changes to 'stable'
      (git@git.openmoko.org)
   6. r4702 - in developers/werner: . wep wep/tests
      (werner@docs.openmoko.org)
   7. r4703 - in developers/werner/wep: . tests
      (werner@docs.openmoko.org)

[Attachment #4 (multipart/digest)]


From: git@git.openmoko.org
Precedence: list
To: commitlog@lists.openmoko.org
Date: Tue, 07 Oct 2008 14:35:40 +0000
Message-ID: <E1KnDf2-0001Vm-VL@git.openmoko.org>
Subject: Holger's qtopia repo: Changes to 'master'
Message: 1

 src/libraries/qtopiacomm/serial/qatutils.cpp       |   37 ++++++++++++++++++++
 src/libraries/qtopiacomm/serial/qatutils.h         |    1 +
 .../qmodemsupplementaryservices.cpp                |    8 +----
 3 files changed, 39 insertions(+), 7 deletions(-)

New commits:
commit 711e8236746e093f48869265a3a5baa470d52f18
Author: Holger Freyther <zecke@selfish.org>
Date:   Tue Oct 7 16:18:20 2008 +0200

    [gsm] Fixes from trolltech for CUSD handling that are in Qtopia4.3.3
        - In 4f7df94616ffac06cc3927fd1d8c2dbf6de724af CUSD parsing was fixed for
          a german default encoding case, a bug was filed at trolltech
        - Now include the mostly unverified fix from Trolltech that was put
          into Qtopia 4.3.3.
    
        Bug report at Trolltech:
        http://trolltech.com/developer/task-tracker/index_html?method=entry&id=212600
    
        Bug report at Openmoko:
        https://docs.openmoko.org/trac/ticket/2029
    
        I wanted to take care of this when merging Qt4.3.3 (actually did in
        master-4.3.3) but it looks like we will go for Qt Extended 4.4.x directly
        so let us merge this patch and test it.





Content-Transfer-Encoding: 8bit
From: laforge@docs.openmoko.org
Precedence: list
To: commitlog@lists.openmoko.org
Date: Tue, 07 Oct 2008 19:34:46 +0200
Message-ID: <E1KnGSM-0007l3-JA@docs.openmoko.com>
Content-Type: text/plain; charset=UTF-8
Subject: r4699 - trunk/src/host/dfu-util/src
Message: 2

Author: laforge
Date: 2008-10-07 19:34:43 +0200 (Tue, 07 Oct 2008)
New Revision: 4699

Modified:
   trunk/src/host/dfu-util/src/main.c
Log:
cosmetic cleanup (long lines, copyright notice)


Modified: trunk/src/host/dfu-util/src/main.c
===================================================================
--- trunk/src/host/dfu-util/src/main.c	2008-10-07 15:07:33 UTC (rev 4698)
+++ trunk/src/host/dfu-util/src/main.c	2008-10-07 17:34:43 UTC (rev 4699)
@@ -1,7 +1,7 @@
 /*
  * dfu-util
  *
- * (C) 2007 by OpenMoko, Inc.
+ * (C) 2007-2008 by OpenMoko, Inc.
  * Written by Harald Welte <laforge@openmoko.org>
  *
  * Based on existing code of dfu-programmer-0.4
@@ -162,15 +162,20 @@
 	int if_name_str_idx;
 	char name[MAX_STR_LEN+1] = "UNDEFINED";
 
-	if_name_str_idx = dev->config[dfu_if->configuration].interface[dfu_if->interface].altsetting[dfu_if->altsetting].iInterface;
 +	if_name_str_idx = dev->config[dfu_if->configuration]
+				.interface[dfu_if->interface]
+				.altsetting[dfu_if->altsetting].iInterface;
 	if (if_name_str_idx) {
 		if (!dfu_if->dev_handle)
 			dfu_if->dev_handle = usb_open(dfu_if->dev);
 		if (dfu_if->dev_handle)
-			usb_get_string_simple(dfu_if->dev_handle, if_name_str_idx, name, MAX_STR_LEN);
+			usb_get_string_simple(dfu_if->dev_handle,
+					      if_name_str_idx, name,
+					      MAX_STR_LEN);
 	}
 
-	printf("Found %s: [0x%04x:0x%04x] devnum=%u, cfg=%u, intf=%u, alt=%u, \
name=\"%s\"\n",  +	printf("Found %s: [0x%04x:0x%04x] devnum=%u, cfg=%u, intf=%u, "
+	       "alt=%u, name=\"%s\"\n", 
 	       dfu_if->flags & DFU_IFF_DFU ? "DFU" : "Runtime",
 	       dev->descriptor.idVendor, dev->descriptor.idProduct,
 	       dev->devnum, dfu_if->configuration, dfu_if->interface,
@@ -428,7 +433,7 @@
 	int page_size = getpagesize();
 	int ret;
 	
-	printf("dfu-util - (C) 2007 by OpenMoko Inc.\n"
+	printf("dfu-util - (C) 2007-2008 by OpenMoko Inc.\n"
 	       "This program is Free Software and has ABSOLUTELY NO WARRANTY\n\n");
 
 	memset(dif, 0, sizeof(*dif));
@@ -440,7 +445,8 @@
 
 	while (1) {
 		int c, option_index = 0;
-		c = getopt_long(argc, argv, "hVvld:p:c:i:a:t:U:D:R", opts, &option_index);
+		c = getopt_long(argc, argv, "hVvld:p:c:i:a:t:U:D:R", opts,
+				&option_index);
 		if (c == -1)
 			break;
 
@@ -575,43 +581,53 @@
 
 		printf("Claiming USB DFU Runtime Interface...\n");
 		if (usb_claim_interface(_rt_dif.dev_handle, _rt_dif.interface) < 0) {
-			fprintf(stderr, "Cannot claim interface: %s\n", usb_strerror());
+			fprintf(stderr, "Cannot claim interface: %s\n",
+				usb_strerror());
 			exit(1);
 		}
 
 		printf("Determining device status: ");
 		if (dfu_get_status(_rt_dif.dev_handle, _rt_dif.interface, &status ) < 0) {
-			fprintf(stderr, "error get_status: %s\n", usb_strerror());
+			fprintf(stderr, "error get_status: %s\n",
+				usb_strerror());
 			exit(1);
 		}
-		printf("state = %s, status = %d\n", dfu_state_to_string(status.bState), \
status.bStatus); +		printf("state = %s, status = %d\n", 
+		       dfu_state_to_string(status.bState), status.bStatus);
 
 		switch (status.bState) {
 		case DFU_STATE_appIDLE:
 		case DFU_STATE_appDETACH:
-			printf("Device really in Runtime Mode, send DFU detach request...\n");
-			if (dfu_detach(_rt_dif.dev_handle, _rt_dif.interface, 1000) < 0) {
-				fprintf(stderr, "error detaching: %s\n", usb_strerror());
+			printf("Device really in Runtime Mode, send DFU "
+			       "detach request...\n");
+			if (dfu_detach(_rt_dif.dev_handle, 
+				       _rt_dif.interface, 1000) < 0) {
+				fprintf(stderr, "error detaching: %s\n",
+					usb_strerror());
 				exit(1);
 				break;
 			}
 			printf("Resetting USB...\n");
 			ret = usb_reset(_rt_dif.dev_handle);
 			if (ret < 0 && ret != -ENODEV)
-				fprintf(stderr, "error resetting after detach: %s\n", 
+				fprintf(stderr,
+					"error resetting after detach: %s\n", 
 					usb_strerror());
 			sleep(2);
 			break;
 		case DFU_STATE_dfuERROR:
 			printf("dfuERROR, clearing status\n");
-			if (dfu_clear_status(_rt_dif.dev_handle, _rt_dif.interface) < 0) {
-				fprintf(stderr, "error clear_status: %s\n", usb_strerror());
+			if (dfu_clear_status(_rt_dif.dev_handle,
+					     _rt_dif.interface) < 0) {
+				fprintf(stderr, "error clear_status: %s\n",
+					usb_strerror());
 				exit(1);
 				break;
 			}
 			break;
 		default:
-			fprintf(stderr, "WARNING: Runtime device already in DFU state ?!?\n");
+			fprintf(stderr, "WARNING: Runtime device already "
+				"in DFU state ?!?\n");
 			goto dfustate;
 			break;
 		}
@@ -640,9 +656,9 @@
 			fprintf(stderr, "Lost device after RESET?\n");
 			exit(1);
 		} else if (num_devs > 1) {
-			fprintf(stderr, "More than one DFU capable USB device found, "
-			       "you might try `--list' and then disconnect all but one "
-			       "device\n");
+			fprintf(stderr, "More than one DFU capable USB "
+				"device found, you might try `--list' and "
+				"then disconnect all but one device\n");
 			exit(1);
 		}
 		if (!get_first_dfu_device(dif))
@@ -651,7 +667,8 @@
 		printf("Opening USB Device...\n");
 		dif->dev_handle = usb_open(dif->dev);
 		if (!dif->dev_handle) {
-			fprintf(stderr, "Cannot open device: %s\n", usb_strerror());
+			fprintf(stderr, "Cannot open device: %s\n",
+				usb_strerror());
 			exit(1);
 		}
 	} else {
@@ -684,7 +701,8 @@
 		exit(1);
 	} else if (num_ifs == 1) {
 		if (!get_first_dfu_if(dif)) {
-			fprintf(stderr, "Can't find the single available DFU IF\n");
+			fprintf(stderr, "Can't find the single available "
+				"DFU IF\n");
 			exit(1);
 		}
 	} else if (num_ifs > 1 && !dif->flags & (DFU_IFF_IFACE|DFU_IFF_ALT)) {
@@ -697,13 +715,15 @@
 #if 0
 	printf("Setting Configuration %u...\n", dif->configuration);
 	if (usb_set_configuration(dif->dev_handle, dif->configuration) < 0) {
-		fprintf(stderr, "Cannot set configuration: %s\n", usb_strerror());
+		fprintf(stderr, "Cannot set configuration: %s\n",
+			usb_strerror());
 		exit(1);
 	}
 #endif
 	printf("Claiming USB DFU Interface...\n");
 	if (usb_claim_interface(dif->dev_handle, dif->interface) < 0) {
-		fprintf(stderr, "Cannot claim interface: %s\n", usb_strerror());
+		fprintf(stderr, "Cannot claim interface: %s\n",
+			usb_strerror());
 		exit(1);
 	}
 
@@ -720,7 +740,8 @@
 		fprintf(stderr, "error get_status: %s\n", usb_strerror());
 		exit(1);
 	}
-	printf("state = %s, status = %d\n", dfu_state_to_string(status.bState), \
status.bStatus); +	printf("state = %s, status = %d\n",
+	       dfu_state_to_string(status.bState), status.bStatus);
 
 	switch (status.bState) {
 	case DFU_STATE_appIDLE:
@@ -731,7 +752,8 @@
 	case DFU_STATE_dfuERROR:
 		printf("dfuERROR, clearing status\n");
 		if (dfu_clear_status(dif->dev_handle, dif->interface) < 0) {
-			fprintf(stderr, "error clear_status: %s\n", usb_strerror());
+			fprintf(stderr, "error clear_status: %s\n",
+				usb_strerror());
 			exit(1);
 		}
 		goto status_again;
@@ -740,7 +762,8 @@
 	case DFU_STATE_dfuUPLOAD_IDLE:
 		printf("aborting previous incomplete transfer\n");
 		if (dfu_abort(dif->dev_handle, dif->interface) < 0) {
-			fprintf(stderr, "can't send DFU_ABORT: %s\n", usb_strerror());
+			fprintf(stderr, "can't send DFU_ABORT: %s\n",
+				usb_strerror());
 			exit(1);
 		}
 		goto status_again;



Content-Transfer-Encoding: 8bit
From: laforge@docs.openmoko.org
Precedence: list
To: commitlog@lists.openmoko.org
Date: Tue, 07 Oct 2008 19:37:07 +0200
Message-ID: <E1KnGUd-0006mD-Nc@docs.openmoko.com>
Content-Type: text/plain; charset=UTF-8
Subject: r4700 - trunk/src/host/dfu-util/src
Message: 3

Author: laforge
Date: 2008-10-07 19:37:05 +0200 (Tue, 07 Oct 2008)
New Revision: 4700

Modified:
   trunk/src/host/dfu-util/src/commands.c
Log:
fix copy+paste mistake.  When we upload, then no download can fail


Modified: trunk/src/host/dfu-util/src/commands.c
===================================================================
--- trunk/src/host/dfu-util/src/commands.c	2008-10-07 17:34:43 UTC (rev 4699)
+++ trunk/src/host/dfu-util/src/commands.c	2008-10-07 17:37:05 UTC (rev 4700)
@@ -340,7 +340,7 @@
     if ( 0 > sam7dfu_do_upload(device, interface, 256, /* FIXME */
     			       args.com_flash_data.file) )
     {
-	fprintf( stderr, "Download failed.\n" );
+	fprintf( stderr, "Upload failed.\n" );
 	return -1;
     }
 }





Content-Transfer-Encoding: 8bit
From: laforge@docs.openmoko.org
Precedence: list
To: commitlog@lists.openmoko.org
Date: Tue, 07 Oct 2008 19:42:36 +0200
Message-ID: <E1KnGZw-0004Ah-Oo@docs.openmoko.com>
Content-Type: text/plain; charset=UTF-8
Subject: r4701 - trunk/src/host/dfu-util/src
Message: 4

Author: laforge
Date: 2008-10-07 19:42:36 +0200 (Tue, 07 Oct 2008)
New Revision: 4701

Modified:
   trunk/src/host/dfu-util/src/sam7dfu.c
Log:
* add hashmark printing during DFU upload
* add copyright notice to code copied from sam7dfu project (OpenPCD)


Modified: trunk/src/host/dfu-util/src/sam7dfu.c
===================================================================
--- trunk/src/host/dfu-util/src/sam7dfu.c	2008-10-07 17:37:05 UTC (rev 4700)
+++ trunk/src/host/dfu-util/src/sam7dfu.c	2008-10-07 17:42:36 UTC (rev 4701)
@@ -1,5 +1,7 @@
 /* This is supposed to be a "real" DFU implementation, just as specified in the
  * USB DFU 1.0 Spec.  Not overloaded like the Atmel one...
+ *
+ * (C) 2007-2008 by Harald Welte <laforge@gnumonks.org>
  */
 
 #include <stdio.h>
@@ -36,6 +38,10 @@
 		goto out_free;
 	}
 	
+	printf("bytes_per_hash=%u\n", xfer_size);
+	printf("Starting upload: [");
+	fflush(stdout);
+
 	while (1) {
 		int rc, write_rc;
 		rc = dfu_upload(usb_handle, interface, xfer_size, buf);
@@ -45,7 +51,7 @@
 		}
 		write_rc = write(fd, buf, rc);
 		if (write_rc < rc) {
-			fprintf(stderr, "Short write: %s\n",
+			fprintf(stderr, "Short file write: %s\n",
 				strerror(errno));
 			ret = total_bytes;
 			goto out_close;
@@ -56,9 +62,14 @@
 			ret = total_bytes;
 			goto out_close;
 		}
+		putchar('#');
+		fflush(stdout);
 	}
 	ret = 0;
 
+	printf("] finished!\n");
+	fflush(stdout);
+
 out_close:
 	close(fd);
 out_free:





From: git@git.openmoko.org
Precedence: list
To: commitlog@lists.openmoko.org
Date: Tue, 07 Oct 2008 17:57:20 +0000
Message-ID: <E1KnGoC-0002Ym-QZ@git.openmoko.org>
Subject: development tree for U-Boot: Changes to 'stable'
Message: 5

 common/cmd_terminal.c        |   13 +++++++++++++
 common/serial.c              |    2 +-
 cpu/arm920t/s3c24x0/serial.c |    3 ++-
 drivers/usb/usbdfu.c         |   42 +++++++++++++++---------------------------
 include/serial.h             |    4 ++++
 5 files changed, 35 insertions(+), 29 deletions(-)

New commits:
commit 414367bf5b65942947dd5d569c27d2a8e8e5e562
Author: Harald Welte <laforge@openmoko.org>
Date:   Tue Oct 7 18:49:49 2008 +0100

    u-boot: Fix DFU upload in u-boot
    
    Fix DFU upload in u-boot
    
    The existing USB DFU upload (read firmware from device to USB host) code
    was a big mess and probably only ever worked by accident.
    
    specifically, there were three bugs described in
    http://docs.openmoko.org/trac/ticket/1843 :
    
    * when it copies a new blockful of data, it copies it into the same buffer that
      urb->buffer was already pointing to, thus overwriting the beginning of the
      last buffer before it is sent back to the requestor
    
    * it then calls memcpy() to copy the beginning of the newly-read block to after
      the end of the buffer that urb->buffer is pointing to. If ds->nand->erasesize
      is the same as the _buf[] array, then this will write past the end of the
      _buf[] array and smash some other item in RAM.
    
    * if a requested buffer exactly reaches the end of the block that's been
      buffered in ds->buf, then handle_upload() will read a new NAND block into the
      buffer even though it is not needed. (The test for (len > remain) should
      probably go before the test for ds->ptr, not after?)
    
    So instead of fixing those issues individually, I rewored the logic
    for how to deal with DFU upload. Much simpler, and without those bugs.
    
    Signed-off-by: Harald Welte <laforge@openmoko.org>

commit 1746c3657337018a3f14688ed4793be2ed609733
Author: Harald Welte <laforge@openmoko.org>
Date:   Tue Oct 7 18:49:34 2008 +0100

    Enable hardware flow control for GSM/GPS
    
    GTA02 >= v3: Enable hardware flow control for GSM and GPS serial ports
    
    Without this patch, s3ser0 (GSM) and s3ser1 (GPS) will not properly
    work on GTA02 >= v3 hardware.
    
    Together with the previous patch, this fixes bug
    https://docs.openmoko.org/trac/ticket/1595
    
    Signed-off-by: Harald Welte <laforge@openmoko.org>

commit 017271c84a1f5b8dc7a8869b2bf4d77347cce647
Author: Harald Welte <laforge@openmoko.org>
Date:   Tue Oct 7 18:49:18 2008 +0100

    Fix init of non-console serial lines
    
    [serial]: Fix initialization of non-console serial lines
    
    When using a serial port for something that is not console operation
    (like the 'terminal' mode with GSM or GPS on Openmoko GTA02), then
    the serial port needs to be initialized properly.
    
    Signed-off-by: Harald Welte <laforge@openmoko.org>





Content-Transfer-Encoding: 8bit
From: werner@docs.openmoko.org
Precedence: list
To: commitlog@lists.openmoko.org
Date: Tue, 07 Oct 2008 23:30:45 +0200
Message-ID: <E1KnK8j-0008KB-Bi@docs.openmoko.com>
Content-Type: text/plain; charset=UTF-8
Subject: r4702 - in developers/werner: . wep wep/tests
Message: 6

Author: werner
Date: 2008-10-07 23:30:44 +0200 (Tue, 07 Oct 2008)
New Revision: 4702

Added:
   developers/werner/wep/
   developers/werner/wep/Makefile
   developers/werner/wep/tests/
   developers/werner/wep/tests/Makefile
   developers/werner/wep/tests/foobar
   developers/werner/wep/wep.c
   developers/werner/wep/wepkey.c
   developers/werner/wep/wepkey.h
Log:
WEP keyphrase hash.



Added: developers/werner/wep/Makefile
===================================================================
--- developers/werner/wep/Makefile	                        (rev 0)
+++ developers/werner/wep/Makefile	2008-10-07 21:30:44 UTC (rev 4702)
@@ -0,0 +1,20 @@
+CFLAGS=-Wall
+LDFLAGS=-lssl
+
+OBJS=wep.o wepkey.o
+
+.PHONY:		all test tests clean spotless
+
+
+all:		wep
+
+wep:		$(OBJS)
+
+test tests:	wep
+		$(MAKE) -C tests
+
+clean:
+		rm -f $(WEPKEY)
+
+spotless:	clean
+		rm -f wep

Added: developers/werner/wep/tests/Makefile
===================================================================
--- developers/werner/wep/tests/Makefile	                        (rev 0)
+++ developers/werner/wep/tests/Makefile	2008-10-07 21:30:44 UTC (rev 4702)
@@ -0,0 +1,7 @@
+.PHONY:	tests clean
+
+all:
+	./foobar
+
+clean:
+	rm -f _*

Added: developers/werner/wep/tests/foobar
===================================================================
--- developers/werner/wep/tests/foobar	                        (rev 0)
+++ developers/werner/wep/tests/foobar	2008-10-07 21:30:44 UTC (rev 4702)
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+fail()
+{
+    echo TEST FAILED 1>&2
+    exit 1
+}
+
+
+../wep foobar >_out || fail
+diff -u - _out <<EOF || fail
+49d68437b1ffb0db3fdf2d4a93
+a4beb3b8ec
+b697e900c8
+b5d2bb755b
+197ea2abe7
+EOF
+
+echo PASSED
+exit 0


Property changes on: developers/werner/wep/tests/foobar
___________________________________________________________________
Name: svn:executable
   + *

Added: developers/werner/wep/wep.c
===================================================================
--- developers/werner/wep/wep.c	                        (rev 0)
+++ developers/werner/wep/wep.c	2008-10-07 21:30:44 UTC (rev 4702)
@@ -0,0 +1,49 @@
+/*
+ * wep.c - Generate WEP keys from a passphrase
+ *
+ * Copyright (C) 2008 by OpenMoko, Inc.
+ * Written by Werner Almesberger <werner@openmoko.org>
+ * All Rights Reserved
+ *  
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ */
+
+#include <stdint.h>
+#include <stdlib.h>
+#include <stdio.h>
+
+#include "wepkey.h"
+
+
+static void dump(void *buf, size_t len)
+{
+	uint8_t *p;
+
+	for (p = buf; p != buf+len; p++)
+		printf("%02x", *p);
+	putchar('\n');
+}
+
+
+static void usage(const char *name)
+{
+	fprintf(stderr, "usage: %s key_phrase\n", name);
+	exit(1);
+}
+
+
+int main(int argc, char **argv)
+{
+	char buf[13];
+	int i;
+
+	if (argc != 2)
+		usage(*argv);
+	dump(buf, wepkey_128(buf, sizeof(buf), argv[1], 0));
+	for (i = 0; i != 4; i++)
+		dump(buf, wepkey_64(buf, sizeof(buf), argv[1], i));
+	return 0;
+}

Added: developers/werner/wep/wepkey.c
===================================================================
--- developers/werner/wep/wepkey.c	                        (rev 0)
+++ developers/werner/wep/wepkey.c	2008-10-07 21:30:44 UTC (rev 4702)
@@ -0,0 +1,74 @@
+/*
+ * wepkey.c - Generate WEP keys from a passphrase
+ *
+ * Copyright (C) 2008 by OpenMoko, Inc.
+ * Written by Werner Almesberger <werner@openmoko.org>
+ * All Rights Reserved
+ *
+ * This library 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.
+ */
+
+/*
+ * Thanks to dd-wrt.com for the algorithm !
+ *
+ * http://svn.dd-wrt.com:8000/dd-wrt/browser/src/router/httpd/modules/wepkey.c?rev=631
+ */
+
+
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/types.h>
+#include <openssl/md5.h>
+
+#include "wepkey.h"
+
+
+ssize_t wepkey_128(void *out, size_t size, const char *in, int n)
+{
+	MD5_CTX ctx;
+	char buf[64];
+	unsigned char tmp[16];
+	int len, i;
+
+	if (n)
+		abort(); /* not yet implemented */
+	if (size < WEPKEY_128_BYTES)
+		return -1;
+	len = strlen(in);
+	for (i = 0; i != sizeof(buf); i++)
+		buf[i] = in[i % len];
+	MD5_Init(&ctx);
+	MD5_Update(&ctx, buf, sizeof(buf));
+	MD5_Final(tmp, &ctx);
+	memcpy(out, tmp, WEPKEY_128_BYTES);
+	return WEPKEY_128_BYTES;
+}
+
+
+ssize_t wepkey_64(void *out, size_t size, const char *in, int n)
+{
+	int len, i, j;
+	uint32_t prn;
+
+	if (size < WEPKEY_64_BYTES)
+		return -1;
+	prn = 0;
+	len = strlen(in);
+	for (i = 0; i != len; i++)
+		prn ^= ((uint8_t *) in)[i] << (8*(i & 3));
+	for (i = 0; i != n; i++)
+		for (j = 0; j != WEPKEY_64_BYTES; j++) {
+			prn *= 0x343fd;
+			prn += 0x269ec3;
+		}
+	for (i = 0; i != WEPKEY_64_BYTES; i++) {
+		prn *= 0x343fd;
+		prn += 0x269ec3;
+		((uint8_t *) out)[i] = prn >> 16;
+	}
+	return WEPKEY_64_BYTES;
+}

Added: developers/werner/wep/wepkey.h
===================================================================
--- developers/werner/wep/wepkey.h	                        (rev 0)
+++ developers/werner/wep/wepkey.h	2008-10-07 21:30:44 UTC (rev 4702)
@@ -0,0 +1,28 @@
+/*
+ * wepkey.h - Generate WEP keys from a passphrase
+ *
+ * Copyright (C) 2008 by OpenMoko, Inc.
+ * Written by Werner Almesberger <werner@openmoko.org>
+ * All Rights Reserved
+ *
+ * This library 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.
+ */
+
+
+#ifndef WEPKEY_H
+#define WEPKEY_H
+
+#include <sys/types.h>
+
+
+#define WEPKEY_128_BYTES	13
+#define WEPKEY_64_BYTES		5
+
+
+ssize_t wepkey_128(void *out, size_t size, const char *in, int n);
+ssize_t wepkey_64(void *out, size_t size, const char *in, int n);
+
+#endif /* !WEPKEY_H */





Content-Transfer-Encoding: 8bit
From: werner@docs.openmoko.org
Precedence: list
To: commitlog@lists.openmoko.org
Date: Tue, 07 Oct 2008 23:48:15 +0200
Message-ID: <E1KnKPf-0006Ag-UC@docs.openmoko.com>
Content-Type: text/plain; charset=UTF-8
Subject: r4703 - in developers/werner/wep: . tests
Message: 7

Author: werner
Date: 2008-10-07 23:48:14 +0200 (Tue, 07 Oct 2008)
New Revision: 4703

Modified:
   developers/werner/wep/tests/foobar
   developers/werner/wep/wep.c
   developers/werner/wep/wepkey.c
Log:
Added generation of 128-bit keys with index > 0.



Modified: developers/werner/wep/tests/foobar
===================================================================
--- developers/werner/wep/tests/foobar	2008-10-07 21:30:44 UTC (rev 4702)
+++ developers/werner/wep/tests/foobar	2008-10-07 21:48:14 UTC (rev 4703)
@@ -10,6 +10,9 @@
 ../wep foobar >_out || fail
 diff -u - _out <<EOF || fail
 49d68437b1ffb0db3fdf2d4a93
+a240f0feabe487bfcb2cfdb05b
+0c81b0bfab27187ea7b5467c63
+80b0656e46bc81e0627a046701
 a4beb3b8ec
 b697e900c8
 b5d2bb755b

Modified: developers/werner/wep/wep.c
===================================================================
--- developers/werner/wep/wep.c	2008-10-07 21:30:44 UTC (rev 4702)
+++ developers/werner/wep/wep.c	2008-10-07 21:48:14 UTC (rev 4703)
@@ -42,8 +42,9 @@
 
 	if (argc != 2)
 		usage(*argv);
-	dump(buf, wepkey_128(buf, sizeof(buf), argv[1], 0));
 	for (i = 0; i != 4; i++)
+		dump(buf, wepkey_128(buf, sizeof(buf), argv[1], i));
+	for (i = 0; i != 4; i++)
 		dump(buf, wepkey_64(buf, sizeof(buf), argv[1], i));
 	return 0;
 }

Modified: developers/werner/wep/wepkey.c
===================================================================
--- developers/werner/wep/wepkey.c	2008-10-07 21:30:44 UTC (rev 4702)
+++ developers/werner/wep/wepkey.c	2008-10-07 21:48:14 UTC (rev 4703)
@@ -29,22 +29,23 @@
 
 ssize_t wepkey_128(void *out, size_t size, const char *in, int n)
 {
+	const char extra[] = "#$%" "!@#" "%&^";
 	MD5_CTX ctx;
 	char buf[64];
 	unsigned char tmp[16];
-	int len, i;
+	int len, i, j;
 
-	if (n)
-		abort(); /* not yet implemented */
 	if (size < WEPKEY_128_BYTES)
 		return -1;
 	len = strlen(in);
-	for (i = 0; i != sizeof(buf); i++)
-		buf[i] = in[i % len];
+	for (i = 0; i != sizeof(buf); i++) {
+		j = i % (len+n*3);
+		buf[i] = j < len ? in[j] : extra[j-len];
+	}
 	MD5_Init(&ctx);
 	MD5_Update(&ctx, buf, sizeof(buf));
 	MD5_Final(tmp, &ctx);
-	memcpy(out, tmp, WEPKEY_128_BYTES);
+	memcpy(out, tmp+n, WEPKEY_128_BYTES);
 	return WEPKEY_128_BYTES;
 }
 




--===============1858234502==--

_______________________________________________
commitlog mailing list
commitlog@lists.openmoko.org
http://lists.openmoko.org/mailman/listinfo/commitlog


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic