Hello community,
here is the log from the commit of package libotr
checked in at Wed Sep 24 00:29:58 CEST 2008.
--------
--- libotr/libotr.changes 2007-10-09 06:02:53.000000000 +0200
+++ /d/STABLE/libotr/libotr.changes 2008-09-23 06:13:16.000000000 +0200
@@ -1,0 +2,6 @@
+Tue Sep 23 06:12:53 CEST 2008 - crrodriguez@suse.de
+
+- update to version 3.2.0
+ * dozen bugfixes, see Changelog for details
+
+-------------------------------------------------------------------
Old:
----
libotr-3.1.0.tar.bz2
New:
----
libotr-3.2.0.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libotr.spec ++++++
--- /var/tmp/diff_new_pack.r11287/_old 2008-09-24 00:26:45.000000000 +0200
+++ /var/tmp/diff_new_pack.r11287/_new 2008-09-24 00:26:45.000000000 +0200
@@ -1,18 +1,26 @@
#
-# spec file for package libotr (Version 3.1.0)
+# spec file for package libotr (Version 3.2.0)
#
-# Copyright (c) 2007 SUSE LINUX Products GmbH, Nuernberg, Germany.
-# This file and all modifications and additions to the pristine
-# package are under the same license as the package itself.
+# Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
+# All modifications and additions to the file contributed by third parties
+# remain the property of their copyright owners, unless otherwise agreed
+# upon. The license for this file, and modifications and additions to the
+# file, is the same license as for the pristine package itself (unless the
+# license for the pristine package is not an Open Source License, in which
+# case the license is the MIT License). An "Open Source License" is a
+# license that conforms to the Open Source Definition (Version 1.9)
+# published by the Open Source Initiative.
+
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
# norootforbuild
+
Name: libotr
BuildRequires: libgcrypt-devel
-Version: 3.1.0
+Version: 3.2.0
Release: 1
Url: http://www.cypherpunks.ca/otr/
Group: Development/Libraries/C and C++
@@ -41,6 +49,7 @@
Nikita Borisov and Ian Goldberg
%package -n libotr2
+License: LGPL v2.1 or later
Summary: "Off The Record" messaging library toolkit
Group: Development/Libraries/C and C++
#openSUSE 10.3
@@ -66,6 +75,7 @@
Nikita Borisov and Ian Goldberg
%package devel
+License: LGPL v2.1 or later
Summary: Include files and development libraries
Group: Development/Libraries/C and C++
Requires: libotr2 = %{version} libgcrypt-devel
@@ -80,6 +90,7 @@
Nikita Borisov and Ian Goldberg
%package tools
+License: LGPL v2.1 or later
Summary: "Off The Record" messaging library toolkit
Group: Development/Libraries/C and C++
@@ -140,25 +151,30 @@
%{_includedir}/libotr/*.h
%{_libdir}/libotr.so
%{_datadir}/aclocal/libotr.m4
+%{_libdir}/pkgconfig/libotr.pc
%post -n libotr2 -p /sbin/ldconfig
%postun -n libotr2 -p /sbin/ldconfig
+
%changelog
-* Tue Oct 09 2007 - crrodriguez@suse.de
+* Tue Sep 23 2008 crrodriguez@suse.de
+- update to version 3.2.0
+ * dozen bugfixes, see Changelog for details
+* Tue Oct 09 2007 crrodriguez@suse.de
- update to version 3.1.0
- run ldconfig
- make autobuild happy fixing the warnings
- fix devel package dependencies.
- remove static libraries
- use library packaging policy
-* Sat Oct 07 2006 - aj@suse.de
+* Sat Oct 07 2006 aj@suse.de
- Add dependency on base package.
-* Wed Jan 25 2006 - mls@suse.de
+* Wed Jan 25 2006 mls@suse.de
- converted neededforbuild to BuildRequires
-* Tue Nov 15 2005 - uli@suse.de
+* Tue Nov 15 2005 uli@suse.de
- build with -O1 on ARM (ICE workaround)
-* Wed Nov 09 2005 - bwhiteley@suse.de
+* Wed Nov 09 2005 bwhiteley@suse.de
- update to version 3.0.0
-* Tue Nov 01 2005 - bwhiteley@suse.de
+* Wed Nov 02 2005 bwhiteley@suse.de
- First time suse package (version 2.0.2)
++++++ libotr-3.1.0.tar.bz2 -> libotr-3.2.0.tar.bz2 ++++++
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libotr-3.1.0/ChangeLog new/libotr-3.2.0/ChangeLog
--- old/libotr-3.1.0/ChangeLog 2007-07-26 18:48:04.000000000 +0200
+++ new/libotr-3.2.0/ChangeLog 2008-06-15 22:16:34.000000000 +0200
@@ -1,3 +1,38 @@
+2008-06-15:
+
+ * README: Release version 3.2.0.
+
+2008-06-13:
+
+ * UPGRADING: Clarify what was new in 3.1.0, what was changed
+ in 3.2.0.
+
+2008-05-27:
+
+ * UPGRADING: Update documentation.
+
+ * README:
+ * toolkit/*.[ch]:
+ * src/*.[ch]: Update copyright dates to 2004-2008.
+
+ * src/tlv.h: Add new OTRL_TLV_SMP1Q TLV type to indicate an
+ instance of the first SMP message, with an explicit question.
+
+ * src/sm.h:
+ * src/sm.c: More carefully track the progress of the SMP using a
+ new smp_prog_state field. Also keep track of whether Bob
+ received an explicit question from Alice using a new
+ received_question field.
+
+ * src/message.c: Handle explicit questions for the SMP.
+
+ * src/message.c: Behave better if an SMP message fails
+ verification.
+
+ * README:
+ * configure.ac:
+ * src/version.h: Update version number to 3.2.0.
+
2007-07-26
* src/sm.c:
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libotr-3.1.0/configure new/libotr-3.2.0/configure
--- old/libotr-3.1.0/configure 2007-07-24 21:35:53.000000000 +0200
+++ new/libotr-3.2.0/configure 2008-05-27 14:36:18.000000000 +0200
@@ -1808,7 +1808,7 @@
# Define the identity of the package.
PACKAGE=libotr
- VERSION=3.1.0
+ VERSION=3.2.0
cat >>confdefs.h <<_ACEOF
@@ -1938,7 +1938,7 @@
-LIBOTR_LIBTOOL_VERSION="3:0:1"
+LIBOTR_LIBTOOL_VERSION="4:0:2"
@@ -18697,7 +18697,7 @@
- ac_config_files="$ac_config_files Makefile src/Makefile toolkit/Makefile"
+ ac_config_files="$ac_config_files Makefile src/Makefile toolkit/Makefile libotr.pc"
cat >confcache <<\_ACEOF
# This file is a shell script that caches the results of configure
# tests run on this system so they can be shared between configure
@@ -19257,6 +19257,7 @@
"Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
"src/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
"toolkit/Makefile" ) CONFIG_FILES="$CONFIG_FILES toolkit/Makefile" ;;
+ "libotr.pc" ) CONFIG_FILES="$CONFIG_FILES libotr.pc" ;;
"depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
"config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
*) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libotr-3.1.0/configure.ac new/libotr-3.2.0/configure.ac
--- old/libotr-3.1.0/configure.ac 2007-07-24 21:17:39.000000000 +0200
+++ new/libotr-3.2.0/configure.ac 2008-05-27 14:35:28.000000000 +0200
@@ -16,8 +16,8 @@
dnl Change the libotr package version from a.b.c to (a+1).0.0
dnl Change the libotr libtool version from x:y:z to (x+1):0:0
-AM_INIT_AUTOMAKE(libotr, 3.1.0)
-LIBOTR_LIBTOOL_VERSION="3:0:1"
+AM_INIT_AUTOMAKE(libotr, 3.2.0)
+LIBOTR_LIBTOOL_VERSION="4:0:2"
AC_SUBST(LIBOTR_LIBTOOL_VERSION)
@@ -27,5 +27,5 @@
AM_PATH_LIBGCRYPT(1:1.2.0,,AC_MSG_ERROR(libgcrypt 1.2.0 or newer is required.))
-AC_OUTPUT([Makefile src/Makefile toolkit/Makefile])
+AC_OUTPUT([Makefile src/Makefile toolkit/Makefile libotr.pc])
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libotr-3.1.0/libotr.pc.in new/libotr-3.2.0/libotr.pc.in
--- old/libotr-3.1.0/libotr.pc.in 1970-01-01 01:00:00.000000000 +0100
+++ new/libotr-3.2.0/libotr.pc.in 2007-09-01 16:51:00.000000000 +0200
@@ -0,0 +1,11 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: libotr
+Description: Off-the-Record Messaging Library
+Version: 3.1.0
+URL: http://otr.cypherpunks.ca/
+Libs: -L${libdir} -lotr
+Cflags: -I${includedir}
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libotr-3.1.0/Makefile.am new/libotr-3.2.0/Makefile.am
--- old/libotr-3.1.0/Makefile.am 2007-07-24 21:43:20.000000000 +0200
+++ new/libotr-3.2.0/Makefile.am 2007-09-01 16:13:50.000000000 +0200
@@ -1,6 +1,9 @@
SUBDIRS = src toolkit
-EXTRA_DIST = Protocol-v2.html UPGRADING packaging libotr.m4
+EXTRA_DIST = Protocol-v2.html UPGRADING packaging libotr.m4 libotr.pc.in
aclocaldir = $(datadir)/aclocal
aclocal_DATA = libotr.m4
+
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = libotr.pc
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libotr-3.1.0/Makefile.in new/libotr-3.2.0/Makefile.in
--- old/libotr-3.1.0/Makefile.in 2007-07-24 21:43:23.000000000 +0200
+++ new/libotr-3.2.0/Makefile.in 2008-05-27 14:36:18.000000000 +0200
@@ -38,9 +38,9 @@
host_triplet = @host@
DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
$(srcdir)/Makefile.in $(srcdir)/config.h.in \
- $(top_srcdir)/configure AUTHORS COPYING COPYING.LIB ChangeLog \
- INSTALL NEWS config.guess config.sub depcomp install-sh \
- ltmain.sh missing
+ $(srcdir)/libotr.pc.in $(top_srcdir)/configure AUTHORS COPYING \
+ COPYING.LIB ChangeLog INSTALL NEWS config.guess config.sub \
+ depcomp install-sh ltmain.sh missing
subdir = .
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
@@ -50,7 +50,7 @@
configure.lineno configure.status.lineno
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = config.h
-CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_FILES = libotr.pc
SOURCES =
DIST_SOURCES =
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
@@ -65,9 +65,11 @@
*) f=$$p;; \
esac;
am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-am__installdirs = "$(DESTDIR)$(aclocaldir)"
+am__installdirs = "$(DESTDIR)$(aclocaldir)" \
+ "$(DESTDIR)$(pkgconfigdir)"
aclocalDATA_INSTALL = $(INSTALL_DATA)
-DATA = $(aclocal_DATA)
+pkgconfigDATA_INSTALL = $(INSTALL_DATA)
+DATA = $(aclocal_DATA) $(pkgconfig_DATA)
ETAGS = etags
CTAGS = ctags
DIST_SUBDIRS = $(SUBDIRS)
@@ -183,9 +185,11 @@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
SUBDIRS = src toolkit
-EXTRA_DIST = Protocol-v2.html UPGRADING packaging libotr.m4
+EXTRA_DIST = Protocol-v2.html UPGRADING packaging libotr.m4 libotr.pc.in
aclocaldir = $(datadir)/aclocal
aclocal_DATA = libotr.m4
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = libotr.pc
all: config.h
$(MAKE) $(AM_MAKEFLAGS) all-recursive
@@ -240,6 +244,8 @@
distclean-hdr:
-rm -f config.h stamp-h1
+libotr.pc: $(top_builddir)/config.status $(srcdir)/libotr.pc.in
+ cd $(top_builddir) && $(SHELL) ./config.status $@
mostlyclean-libtool:
-rm -f *.lo
@@ -267,6 +273,23 @@
echo " rm -f '$(DESTDIR)$(aclocaldir)/$$f'"; \
rm -f "$(DESTDIR)$(aclocaldir)/$$f"; \
done
+install-pkgconfigDATA: $(pkgconfig_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkgconfigdir)" || $(mkdir_p) "$(DESTDIR)$(pkgconfigdir)"
+ @list='$(pkgconfig_DATA)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(pkgconfigDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgconfigdir)/$$f'"; \
+ $(pkgconfigDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgconfigdir)/$$f"; \
+ done
+
+uninstall-pkgconfigDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkgconfig_DATA)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(pkgconfigdir)/$$f'"; \
+ rm -f "$(DESTDIR)$(pkgconfigdir)/$$f"; \
+ done
# This directory's subdirectories are mostly independent; you can cd
# into them and run `make' without going through this Makefile.
@@ -403,6 +426,7 @@
distdir: $(DISTFILES)
$(am__remove_distdir)
mkdir $(distdir)
+ $(mkdir_p) $(distdir)/.
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
list='$(DISTFILES)'; for file in $$list; do \
@@ -546,7 +570,7 @@
all-am: Makefile $(DATA) config.h
installdirs: installdirs-recursive
installdirs-am:
- for dir in "$(DESTDIR)$(aclocaldir)"; do \
+ for dir in "$(DESTDIR)$(aclocaldir)" "$(DESTDIR)$(pkgconfigdir)"; do \
test -z "$$dir" || $(mkdir_p) "$$dir"; \
done
install: install-recursive
@@ -593,7 +617,7 @@
info-am:
-install-data-am: install-aclocalDATA
+install-data-am: install-aclocalDATA install-pkgconfigDATA
install-exec-am:
@@ -621,7 +645,8 @@
ps-am:
-uninstall-am: uninstall-aclocalDATA uninstall-info-am
+uninstall-am: uninstall-aclocalDATA uninstall-info-am \
+ uninstall-pkgconfigDATA
uninstall-info: uninstall-info-recursive
@@ -634,12 +659,13 @@
distuninstallcheck dvi dvi-am html html-am info info-am \
install install-aclocalDATA install-am install-data \
install-data-am install-exec install-exec-am install-info \
- install-info-am install-man install-strip installcheck \
- installcheck-am installdirs installdirs-am maintainer-clean \
- maintainer-clean-generic maintainer-clean-recursive \
- mostlyclean mostlyclean-generic mostlyclean-libtool \
- mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \
- uninstall uninstall-aclocalDATA uninstall-am uninstall-info-am
+ install-info-am install-man install-pkgconfigDATA \
+ install-strip installcheck installcheck-am installdirs \
+ installdirs-am maintainer-clean maintainer-clean-generic \
+ maintainer-clean-recursive mostlyclean mostlyclean-generic \
+ mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \
+ tags tags-recursive uninstall uninstall-aclocalDATA \
+ uninstall-am uninstall-info-am uninstall-pkgconfigDATA
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libotr-3.1.0/NEWS new/libotr-3.2.0/NEWS
--- old/libotr-3.1.0/NEWS 2007-08-02 02:17:32.000000000 +0200
+++ new/libotr-3.2.0/NEWS 2008-05-27 14:35:28.000000000 +0200
@@ -1,3 +1,7 @@
+27 May 2008:
+- Added support for one-way authentication using an explicit question,
+ based on the SOUPS 2008 user study.
+
1 Aug 2007:
- Released 3.1.0
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libotr-3.1.0/README new/libotr-3.2.0/README
--- old/libotr-3.1.0/README 2007-08-02 02:16:09.000000000 +0200
+++ new/libotr-3.2.0/README 2008-06-15 22:15:58.000000000 +0200
@@ -1,5 +1,5 @@
Off-the-Record Messaging Library and Toolkit
- v3.1.0, 1 Aug 2007
+ v3.2.0, 15 Jun 2008
This is a library and toolkit which implements Off-the-Record (OTR) Messaging.
@@ -267,7 +267,7 @@
covered by the following (LGPL) license:
Off-the-Record Messaging library
- Copyright (C) 2004-2007 Ian Goldberg, Chris Alexander, Nikita Borisov
+ Copyright (C) 2004-2008 Ian Goldberg, Chris Alexander, Nikita Borisov
This library is free software; you can redistribute it and/or
@@ -288,7 +288,7 @@
by the following (GPL) license:
Off-the-Record Messaging Toolkit
- Copyright (C) 2004-2007 Ian Goldberg, Chris Alexander, Nikita Borisov
+ Copyright (C) 2004-2008 Ian Goldberg, Chris Alexander, Nikita Borisov
This program is free software; you can redistribute it and/or modify
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libotr-3.1.0/src/auth.c new/libotr-3.2.0/src/auth.c
--- old/libotr-3.1.0/src/auth.c 2007-07-24 21:17:39.000000000 +0200
+++ new/libotr-3.2.0/src/auth.c 2008-05-27 14:35:28.000000000 +0200
@@ -1,6 +1,6 @@
/*
* Off-the-Record Messaging library
- * Copyright (C) 2004-2007 Ian Goldberg, Chris Alexander, Nikita Borisov
+ * Copyright (C) 2004-2008 Ian Goldberg, Chris Alexander, Nikita Borisov
*
*
* This library is free software; you can redistribute it and/or
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libotr-3.1.0/src/auth.h new/libotr-3.2.0/src/auth.h
--- old/libotr-3.1.0/src/auth.h 2007-07-24 21:17:39.000000000 +0200
+++ new/libotr-3.2.0/src/auth.h 2008-05-27 14:35:28.000000000 +0200
@@ -1,6 +1,6 @@
/*
* Off-the-Record Messaging library
- * Copyright (C) 2004-2007 Ian Goldberg, Chris Alexander, Nikita Borisov
+ * Copyright (C) 2004-2008 Ian Goldberg, Chris Alexander, Nikita Borisov
*
*
* This library is free software; you can redistribute it and/or
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libotr-3.1.0/src/b64.c new/libotr-3.2.0/src/b64.c
--- old/libotr-3.1.0/src/b64.c 2007-07-24 21:17:40.000000000 +0200
+++ new/libotr-3.2.0/src/b64.c 2008-05-27 14:35:28.000000000 +0200
@@ -1,6 +1,6 @@
/*
* Off-the-Record Messaging library
- * Copyright (C) 2004-2007 Ian Goldberg, Chris Alexander, Nikita Borisov
+ * Copyright (C) 2004-2008 Ian Goldberg, Chris Alexander, Nikita Borisov
*
*
* This library is free software; you can redistribute it and/or
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libotr-3.1.0/src/b64.h new/libotr-3.2.0/src/b64.h
--- old/libotr-3.1.0/src/b64.h 2007-07-24 21:17:40.000000000 +0200
+++ new/libotr-3.2.0/src/b64.h 2008-05-27 14:35:28.000000000 +0200
@@ -1,6 +1,6 @@
/*
* Off-the-Record Messaging library
- * Copyright (C) 2004-2007 Ian Goldberg, Chris Alexander, Nikita Borisov
+ * Copyright (C) 2004-2008 Ian Goldberg, Chris Alexander, Nikita Borisov
*
*
* This library is free software; you can redistribute it and/or
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libotr-3.1.0/src/context.c new/libotr-3.2.0/src/context.c
--- old/libotr-3.1.0/src/context.c 2007-07-24 21:17:40.000000000 +0200
+++ new/libotr-3.2.0/src/context.c 2008-05-27 14:35:28.000000000 +0200
@@ -1,6 +1,6 @@
/*
* Off-the-Record Messaging library
- * Copyright (C) 2004-2007 Ian Goldberg, Chris Alexander, Nikita Borisov
+ * Copyright (C) 2004-2008 Ian Goldberg, Chris Alexander, Nikita Borisov
*
*
* This library is free software; you can redistribute it and/or
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libotr-3.1.0/src/context.h new/libotr-3.2.0/src/context.h
--- old/libotr-3.1.0/src/context.h 2007-07-24 21:17:40.000000000 +0200
+++ new/libotr-3.2.0/src/context.h 2008-05-27 14:35:28.000000000 +0200
@@ -1,6 +1,6 @@
/*
* Off-the-Record Messaging library
- * Copyright (C) 2004-2007 Ian Goldberg, Chris Alexander, Nikita Borisov
+ * Copyright (C) 2004-2008 Ian Goldberg, Chris Alexander, Nikita Borisov
*
*
* This library is free software; you can redistribute it and/or
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libotr-3.1.0/src/dh.c new/libotr-3.2.0/src/dh.c
--- old/libotr-3.1.0/src/dh.c 2007-07-24 21:17:40.000000000 +0200
+++ new/libotr-3.2.0/src/dh.c 2008-05-27 14:35:28.000000000 +0200
@@ -1,6 +1,6 @@
/*
* Off-the-Record Messaging library
- * Copyright (C) 2004-2007 Ian Goldberg, Chris Alexander, Nikita Borisov
+ * Copyright (C) 2004-2008 Ian Goldberg, Chris Alexander, Nikita Borisov
*
*
* This library is free software; you can redistribute it and/or
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libotr-3.1.0/src/dh.h new/libotr-3.2.0/src/dh.h
--- old/libotr-3.1.0/src/dh.h 2007-07-24 21:17:40.000000000 +0200
+++ new/libotr-3.2.0/src/dh.h 2008-05-27 14:35:28.000000000 +0200
@@ -1,6 +1,6 @@
/*
* Off-the-Record Messaging library
- * Copyright (C) 2004-2007 Ian Goldberg, Chris Alexander, Nikita Borisov
+ * Copyright (C) 2004-2008 Ian Goldberg, Chris Alexander, Nikita Borisov
*
*
* This library is free software; you can redistribute it and/or
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libotr-3.1.0/src/mem.c new/libotr-3.2.0/src/mem.c
--- old/libotr-3.1.0/src/mem.c 2007-07-24 21:17:40.000000000 +0200
+++ new/libotr-3.2.0/src/mem.c 2008-05-27 14:35:28.000000000 +0200
@@ -1,6 +1,6 @@
/*
* Off-the-Record Messaging library
- * Copyright (C) 2004-2007 Ian Goldberg, Chris Alexander, Nikita Borisov
+ * Copyright (C) 2004-2008 Ian Goldberg, Chris Alexander, Nikita Borisov
*
*
* This library is free software; you can redistribute it and/or
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libotr-3.1.0/src/mem.h new/libotr-3.2.0/src/mem.h
--- old/libotr-3.1.0/src/mem.h 2007-07-24 21:17:41.000000000 +0200
+++ new/libotr-3.2.0/src/mem.h 2008-05-27 14:35:28.000000000 +0200
@@ -1,6 +1,6 @@
/*
* Off-the-Record Messaging library
- * Copyright (C) 2004-2007 Ian Goldberg, Chris Alexander, Nikita Borisov
+ * Copyright (C) 2004-2008 Ian Goldberg, Chris Alexander, Nikita Borisov
*
*
* This library is free software; you can redistribute it and/or
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libotr-3.1.0/src/message.c new/libotr-3.2.0/src/message.c
--- old/libotr-3.1.0/src/message.c 2007-07-26 18:33:16.000000000 +0200
+++ new/libotr-3.2.0/src/message.c 2008-05-27 14:35:28.000000000 +0200
@@ -1,6 +1,6 @@
/*
* Off-the-Record Messaging library
- * Copyright (C) 2004-2007 Ian Goldberg, Chris Alexander, Nikita Borisov
+ * Copyright (C) 2004-2008 Ian Goldberg, Chris Alexander, Nikita Borisov
*
*
* This library is free software; you can redistribute it and/or
@@ -509,8 +509,8 @@
}
static void init_respond_smp(OtrlUserState us, const OtrlMessageAppOps *ops,
- void *opdata, ConnContext *context, const unsigned char *secret,
- size_t secretlen, int initiating)
+ void *opdata, ConnContext *context, const char *question,
+ const unsigned char *secret, size_t secretlen, int initiating)
{
unsigned char *smpmsg = NULL;
int smpmsglen;
@@ -560,8 +560,25 @@
&smpmsg, &smpmsglen);
}
+ /* If we've got a question, attach it to the smpmsg */
+ if (question != NULL) {
+ size_t qlen = strlen(question);
+ unsigned char *qsmpmsg = malloc(qlen + 1 + smpmsglen);
+ if (!qsmpmsg) {
+ free(smpmsg);
+ return;
+ }
+ strcpy((char *)qsmpmsg, question);
+ memmove(qsmpmsg + qlen + 1, smpmsg, smpmsglen);
+ free(smpmsg);
+ smpmsg = qsmpmsg;
+ smpmsglen += qlen + 1;
+ }
+
/* Send msg with next smp msg content */
- sendtlv = otrl_tlv_new(initiating ? OTRL_TLV_SMP1 : OTRL_TLV_SMP2,
+ sendtlv = otrl_tlv_new(initiating ?
+ (question != NULL ? OTRL_TLV_SMP1Q : OTRL_TLV_SMP1)
+ : OTRL_TLV_SMP2,
smpmsglen, smpmsg);
err = otrl_proto_create_data(&sendsmp, context, "", sendtlv,
OTRL_MSGFLAGS_IGNORE_UNREADABLE);
@@ -583,7 +600,16 @@
void *opdata, ConnContext *context, const unsigned char *secret,
size_t secretlen)
{
- init_respond_smp(us, ops, opdata, context, secret, secretlen, 1);
+ init_respond_smp(us, ops, opdata, context, NULL, secret, secretlen, 1);
+}
+
+/* Initiate the Socialist Millionaires' Protocol and send a prompt
+ * question to the buddy */
+void otrl_message_initiate_smp_q(OtrlUserState us,
+ const OtrlMessageAppOps *ops, void *opdata, ConnContext *context,
+ const char *question, const unsigned char *secret, size_t secretlen)
+{
+ init_respond_smp(us, ops, opdata, context, question, secret, secretlen, 1);
}
/* Respond to a buddy initiating the Socialist Millionaires' Protocol */
@@ -591,7 +617,7 @@
void *opdata, ConnContext *context, const unsigned char *secret,
size_t secretlen)
{
- init_respond_smp(us, ops, opdata, context, secret, secretlen, 0);
+ init_respond_smp(us, ops, opdata, context, NULL, secret, secretlen, 0);
}
/* Abort the SMP. Called when an unexpected SMP message breaks the
@@ -1006,12 +1032,24 @@
/* If TLVs contain SMP data, process it */
nextMsg = context->smstate->nextExpected;
+ tlv = otrl_tlv_find(tlvs, OTRL_TLV_SMP1Q);
+ if (tlv && nextMsg == OTRL_SMP_EXPECT1) {
+ /* We can only do the verification half now.
+ * We must wait for the secret to be entered
+ * to continue. */
+ char *question = (char *)tlv->data;
+ char *qend = memchr(question, '\0', tlv->len - 1);
+ size_t qlen = qend ? (qend - question + 1) : tlv->len;
+ otrl_sm_step2a(context->smstate, tlv->data + qlen,
+ tlv->len - qlen, 1);
+ }
tlv = otrl_tlv_find(tlvs, OTRL_TLV_SMP1);
if (tlv && nextMsg == OTRL_SMP_EXPECT1) {
/* We can only do the verification half now.
* We must wait for the secret to be entered
* to continue. */
- otrl_sm_step2a(context->smstate, tlv->data, tlv->len);
+ otrl_sm_step2a(context->smstate, tlv->data, tlv->len,
+ 0);
}
tlv = otrl_tlv_find(tlvs, OTRL_TLV_SMP2);
if (tlv && nextMsg == OTRL_SMP_EXPECT2) {
@@ -1022,17 +1060,22 @@
otrl_sm_step3(context->smstate, tlv->data, tlv->len,
&nextmsg, &nextmsglen);
- /* Send msg with next smp msg content */
- sendtlv = otrl_tlv_new(OTRL_TLV_SMP3, nextmsglen,
- nextmsg);
- err = otrl_proto_create_data(&sendsmp,
- context, "", sendtlv,
- OTRL_MSGFLAGS_IGNORE_UNREADABLE);
- if (!err) {
- err = otrl_message_fragment_and_send(ops, opdata, context, sendsmp, OTRL_FRAGMENT_SEND_ALL, NULL);
+ if (context->smstate->sm_prog_state !=
+ OTRL_SMP_PROG_CHEATED) {
+ /* Send msg with next smp msg content */
+ sendtlv = otrl_tlv_new(OTRL_TLV_SMP3, nextmsglen,
+ nextmsg);
+ err = otrl_proto_create_data(&sendsmp,
+ context, "", sendtlv,
+ OTRL_MSGFLAGS_IGNORE_UNREADABLE);
+ if (!err) {
+ err = otrl_message_fragment_and_send(ops,
+ opdata, context, sendsmp,
+ OTRL_FRAGMENT_SEND_ALL, NULL);
+ }
+ free(sendsmp);
+ otrl_tlv_free(sendtlv);
}
- free(sendsmp);
- otrl_tlv_free(sendtlv);
free(nextmsg);
}
tlv = otrl_tlv_find(tlvs, OTRL_TLV_SMP3);
@@ -1044,20 +1087,27 @@
err = otrl_sm_step4(context->smstate, tlv->data,
tlv->len, &nextmsg, &nextmsglen);
/* Set trust level based on result */
- set_smp_trust(ops, opdata, context,
- (err == gcry_error(GPG_ERR_NO_ERROR)));
+ if (context->smstate->received_question == 0) {
+ set_smp_trust(ops, opdata, context,
+ (err == gcry_error(GPG_ERR_NO_ERROR)));
+ }
- /* Send msg with next smp msg content */
- sendtlv = otrl_tlv_new(OTRL_TLV_SMP4, nextmsglen,
- nextmsg);
- err = otrl_proto_create_data(&sendsmp,
- context, "", sendtlv,
- OTRL_MSGFLAGS_IGNORE_UNREADABLE);
- if (!err) {
- err = otrl_message_fragment_and_send(ops, opdata, context, sendsmp, OTRL_FRAGMENT_SEND_ALL, NULL);
+ if (context->smstate->sm_prog_state !=
+ OTRL_SMP_PROG_CHEATED) {
+ /* Send msg with next smp msg content */
+ sendtlv = otrl_tlv_new(OTRL_TLV_SMP4, nextmsglen,
+ nextmsg);
+ err = otrl_proto_create_data(&sendsmp,
+ context, "", sendtlv,
+ OTRL_MSGFLAGS_IGNORE_UNREADABLE);
+ if (!err) {
+ err = otrl_message_fragment_and_send(ops,
+ opdata, context, sendsmp,
+ OTRL_FRAGMENT_SEND_ALL, NULL);
+ }
+ free(sendsmp);
+ otrl_tlv_free(sendtlv);
}
- free(sendsmp);
- otrl_tlv_free(sendtlv);
free(nextmsg);
}
tlv = otrl_tlv_find(tlvs, OTRL_TLV_SMP4);
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libotr-3.1.0/src/message.h new/libotr-3.2.0/src/message.h
--- old/libotr-3.1.0/src/message.h 2007-07-24 21:17:41.000000000 +0200
+++ new/libotr-3.2.0/src/message.h 2008-05-27 14:35:28.000000000 +0200
@@ -1,6 +1,6 @@
/*
* Off-the-Record Messaging library
- * Copyright (C) 2004-2007 Ian Goldberg, Chris Alexander, Nikita Borisov
+ * Copyright (C) 2004-2008 Ian Goldberg, Chris Alexander, Nikita Borisov
*
*
* This library is free software; you can redistribute it and/or
@@ -191,6 +191,12 @@
void *opdata, ConnContext *context, const unsigned char *secret,
size_t secretlen);
+/* Initiate the Socialist Millionaires' Protocol and send a prompt
+ * question to the buddy */
+void otrl_message_initiate_smp_q(OtrlUserState us,
+ const OtrlMessageAppOps *ops, void *opdata, ConnContext *context,
+ const char *question, const unsigned char *secret, size_t secretlen);
+
/* Respond to a buddy initiating the Socialist Millionaires' Protocol */
void otrl_message_respond_smp(OtrlUserState us, const OtrlMessageAppOps *ops,
void *opdata, ConnContext *context, const unsigned char *secret,
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libotr-3.1.0/src/privkey.c new/libotr-3.2.0/src/privkey.c
--- old/libotr-3.1.0/src/privkey.c 2007-07-24 21:17:41.000000000 +0200
+++ new/libotr-3.2.0/src/privkey.c 2008-05-27 14:35:28.000000000 +0200
@@ -1,6 +1,6 @@
/*
* Off-the-Record Messaging library
- * Copyright (C) 2004-2007 Ian Goldberg, Chris Alexander, Nikita Borisov
+ * Copyright (C) 2004-2008 Ian Goldberg, Chris Alexander, Nikita Borisov
*
*
* This library is free software; you can redistribute it and/or
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libotr-3.1.0/src/privkey.h new/libotr-3.2.0/src/privkey.h
--- old/libotr-3.1.0/src/privkey.h 2007-07-24 21:17:41.000000000 +0200
+++ new/libotr-3.2.0/src/privkey.h 2008-05-27 14:35:28.000000000 +0200
@@ -1,6 +1,6 @@
/*
* Off-the-Record Messaging library
- * Copyright (C) 2004-2007 Ian Goldberg, Chris Alexander, Nikita Borisov
+ * Copyright (C) 2004-2008 Ian Goldberg, Chris Alexander, Nikita Borisov
*
*
* This library is free software; you can redistribute it and/or
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libotr-3.1.0/src/privkey-t.h new/libotr-3.2.0/src/privkey-t.h
--- old/libotr-3.1.0/src/privkey-t.h 2007-07-24 21:17:41.000000000 +0200
+++ new/libotr-3.2.0/src/privkey-t.h 2008-05-27 14:35:28.000000000 +0200
@@ -1,6 +1,6 @@
/*
* Off-the-Record Messaging library
- * Copyright (C) 2004-2007 Ian Goldberg, Chris Alexander, Nikita Borisov
+ * Copyright (C) 2004-2008 Ian Goldberg, Chris Alexander, Nikita Borisov
*
*
* This library is free software; you can redistribute it and/or
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libotr-3.1.0/src/proto.c new/libotr-3.2.0/src/proto.c
--- old/libotr-3.1.0/src/proto.c 2007-07-26 18:30:51.000000000 +0200
+++ new/libotr-3.2.0/src/proto.c 2008-05-27 14:35:28.000000000 +0200
@@ -1,6 +1,6 @@
/*
* Off-the-Record Messaging library
- * Copyright (C) 2004-2007 Ian Goldberg, Chris Alexander, Nikita Borisov
+ * Copyright (C) 2004-2008 Ian Goldberg, Chris Alexander, Nikita Borisov
*
*
* This library is free software; you can redistribute it and/or
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libotr-3.1.0/src/proto.h new/libotr-3.2.0/src/proto.h
--- old/libotr-3.1.0/src/proto.h 2007-07-24 21:17:41.000000000 +0200
+++ new/libotr-3.2.0/src/proto.h 2008-05-27 14:35:28.000000000 +0200
@@ -1,6 +1,6 @@
/*
* Off-the-Record Messaging library
- * Copyright (C) 2004-2007 Ian Goldberg, Chris Alexander, Nikita Borisov
+ * Copyright (C) 2004-2008 Ian Goldberg, Chris Alexander, Nikita Borisov
*
*
* This library is free software; you can redistribute it and/or
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libotr-3.1.0/src/serial.h new/libotr-3.2.0/src/serial.h
--- old/libotr-3.1.0/src/serial.h 2007-07-24 21:17:42.000000000 +0200
+++ new/libotr-3.2.0/src/serial.h 2008-05-27 14:35:28.000000000 +0200
@@ -1,6 +1,6 @@
/*
* Off-the-Record Messaging library
- * Copyright (C) 2004-2007 Ian Goldberg, Chris Alexander, Nikita Borisov
+ * Copyright (C) 2004-2008 Ian Goldberg, Chris Alexander, Nikita Borisov
*
*
* This library is free software; you can redistribute it and/or
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libotr-3.1.0/src/sm.c new/libotr-3.2.0/src/sm.c
--- old/libotr-3.1.0/src/sm.c 2007-08-01 18:10:58.000000000 +0200
+++ new/libotr-3.2.0/src/sm.c 2008-05-27 14:35:28.000000000 +0200
@@ -1,6 +1,6 @@
/*
* Off-the-Record Messaging library
- * Copyright (C) 2004-2007 Ian Goldberg, Chris Alexander, Nikita Borisov
+ * Copyright (C) 2004-2008 Ian Goldberg, Chris Alexander, Nikita Borisov
*
*
* This library is free software; you can redistribute it and/or
@@ -95,6 +95,8 @@
smst->pab = NULL;
smst->qab = NULL;
smst->nextExpected = OTRL_SMP_EXPECT1;
+ smst->received_question = 0;
+ smst->sm_prog_state = OTRL_SMP_PROG_OK;
}
/*
@@ -115,6 +117,8 @@
smst->q = gcry_mpi_new(SM_MOD_LEN_BITS);
smst->pab = gcry_mpi_new(SM_MOD_LEN_BITS);
smst->qab = gcry_mpi_new(SM_MOD_LEN_BITS);
+ smst->received_question = 0;
+ smst->sm_prog_state = OTRL_SMP_PROG_OK;
}
/*
@@ -605,6 +609,7 @@
}
gcry_mpi_set(astate->secret, secret_mpi);
gcry_mpi_release(secret_mpi);
+ astate->received_question = 0;
otrl_sm_msg1_init(&msg1);
@@ -619,13 +624,14 @@
serialize_mpi_array(output, outputlen, SM_MSG1_LEN, msg1);
otrl_sm_msg_free(&msg1, SM_MSG1_LEN);
+ astate->sm_prog_state = OTRL_SMP_PROG_OK;
return gcry_error(GPG_ERR_NO_ERROR);
}
/* Receive the first message in SMP exchange, which was generated by
* otrl_sm_step1. Input is saved until the user inputs their secret
* information. No output. */
-gcry_error_t otrl_sm_step2a(OtrlSMBobState *bstate, const unsigned char* input, const int inputlen)
+gcry_error_t otrl_sm_step2a(OtrlSMBobState *bstate, const unsigned char* input, const int inputlen, int received_question)
{
gcry_mpi_t *msg1;
gcry_error_t err;
@@ -634,6 +640,8 @@
if (! bstate->g1) {
otrl_sm_state_init(bstate);
}
+ bstate->received_question = received_question;
+ bstate->sm_prog_state = OTRL_SMP_PROG_CHEATED;
/* Read from input to find the mpis */
err = unserialize_mpi_array(&msg1, SM_MSG1_LEN, input, inputlen);
@@ -662,6 +670,7 @@
gcry_mpi_powm(bstate->g2, msg1[0], bstate->x2, SM_MODULUS);
gcry_mpi_powm(bstate->g3, msg1[3], bstate->x3, SM_MODULUS);
+ bstate->sm_prog_state = OTRL_SMP_PROG_OK;
return gcry_error(GPG_ERR_NO_ERROR);
}
@@ -739,6 +748,7 @@
*output = NULL;
*outputlen = 0;
+ astate->sm_prog_state = OTRL_SMP_PROG_CHEATED;
err = unserialize_mpi_array(&msg2, SM_MSG2_LEN, input, inputlen);
if (err != gcry_error(GPG_ERR_NO_ERROR)) return err;
@@ -800,6 +810,7 @@
gcry_mpi_release(qa2);
gcry_mpi_release(inv);
+ astate->sm_prog_state = OTRL_SMP_PROG_OK;
return gcry_error(GPG_ERR_NO_ERROR);
}
@@ -823,6 +834,7 @@
*output = NULL;
*outputlen = 0;
+ bstate->sm_prog_state = OTRL_SMP_PROG_CHEATED;
if (err != gcry_error(GPG_ERR_NO_ERROR)) return err;
@@ -866,6 +878,9 @@
gcry_mpi_release(rab);
gcry_mpi_release(inv);
+ bstate->sm_prog_state = comp ? OTRL_SMP_PROG_FAILED :
+ OTRL_SMP_PROG_SUCCEEDED;
+
if (comp)
return gcry_error(GPG_ERR_INV_VALUE);
else
@@ -884,6 +899,7 @@
gcry_mpi_t *msg4;
gcry_error_t err;
err = unserialize_mpi_array(&msg4, SM_MSG4_LEN, input, inputlen);
+ astate->sm_prog_state = OTRL_SMP_PROG_CHEATED;
if (err != gcry_error(GPG_ERR_NO_ERROR)) return err;
@@ -903,6 +919,9 @@
gcry_mpi_release(rab);
otrl_sm_msg_free(&msg4, SM_MSG4_LEN);
+ astate->sm_prog_state = comp ? OTRL_SMP_PROG_FAILED :
+ OTRL_SMP_PROG_SUCCEEDED;
+
if (comp)
return gcry_error(GPG_ERR_INV_VALUE);
else
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libotr-3.1.0/src/sm.h new/libotr-3.2.0/src/sm.h
--- old/libotr-3.1.0/src/sm.h 2007-07-23 14:20:28.000000000 +0200
+++ new/libotr-3.2.0/src/sm.h 2008-05-27 14:35:28.000000000 +0200
@@ -1,6 +1,6 @@
/*
* Off-the-Record Messaging library
- * Copyright (C) 2004-2007 Ian Goldberg, Chris Alexander, Nikita Borisov
+ * Copyright (C) 2004-2008 Ian Goldberg, Chris Alexander, Nikita Borisov
*
*
* This library is free software; you can redistribute it and/or
@@ -33,9 +33,18 @@
OTRL_SMP_EXPECT5
} NextExpectedSMP;
+typedef enum {
+ OTRL_SMP_PROG_OK = 0, /* All is going fine so far */
+ OTRL_SMP_PROG_CHEATED = -2, /* Some verification failed */
+ OTRL_SMP_PROG_FAILED = -1, /* The secrets didn't match */
+ OTRL_SMP_PROG_SUCCEEDED = 1 /* The SMP completed successfully */
+} OtrlSMProgState;
+
typedef struct {
gcry_mpi_t secret, x2, x3, g1, g2, g3, g3o, p, q, pab, qab;
NextExpectedSMP nextExpected;
+ int received_question; /* 1 if we received a question in an SMP1Q TLV */
+ OtrlSMProgState sm_prog_state;
} OtrlSMState;
typedef OtrlSMState OtrlSMAliceState;
@@ -65,7 +74,7 @@
void otrl_sm_state_free(OtrlSMState *smst);
gcry_error_t otrl_sm_step1(OtrlSMAliceState *astate, const unsigned char* secret, int secretlen, unsigned char** output, int* outputlen);
-gcry_error_t otrl_sm_step2a(OtrlSMBobState *bstate, const unsigned char* input, const int inputlen);
+gcry_error_t otrl_sm_step2a(OtrlSMBobState *bstate, const unsigned char* input, const int inputlen, int received_question);
gcry_error_t otrl_sm_step2b(OtrlSMBobState *bstate, const unsigned char* secret, int secretlen, unsigned char **output, int* outputlen);
gcry_error_t otrl_sm_step3(OtrlSMAliceState *astate, const unsigned char* input, const int inputlen, unsigned char **output, int* outputlen);
gcry_error_t otrl_sm_step4(OtrlSMBobState *bstate, const unsigned char* input, const int inputlen, unsigned char **output, int* outputlen);
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libotr-3.1.0/src/tlv.c new/libotr-3.2.0/src/tlv.c
--- old/libotr-3.1.0/src/tlv.c 2007-07-24 21:17:42.000000000 +0200
+++ new/libotr-3.2.0/src/tlv.c 2008-05-27 14:35:28.000000000 +0200
@@ -1,6 +1,6 @@
/*
* Off-the-Record Messaging library
- * Copyright (C) 2004-2007 Ian Goldberg, Chris Alexander, Nikita Borisov
+ * Copyright (C) 2004-2008 Ian Goldberg, Chris Alexander, Nikita Borisov
*
*
* This library is free software; you can redistribute it and/or
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libotr-3.1.0/src/tlv.h new/libotr-3.2.0/src/tlv.h
--- old/libotr-3.1.0/src/tlv.h 2007-07-24 21:17:42.000000000 +0200
+++ new/libotr-3.2.0/src/tlv.h 2008-05-27 14:35:28.000000000 +0200
@@ -1,6 +1,6 @@
/*
* Off-the-Record Messaging library
- * Copyright (C) 2004-2007 Ian Goldberg, Chris Alexander, Nikita Borisov
+ * Copyright (C) 2004-2008 Ian Goldberg, Chris Alexander, Nikita Borisov
*
*
* This library is free software; you can redistribute it and/or
@@ -41,6 +41,9 @@
#define OTRL_TLV_SMP3 0x0004
#define OTRL_TLV_SMP4 0x0005
#define OTRL_TLV_SMP_ABORT 0x0006
+/* Like OTRL_TLV_SMP1, but there's a question for the buddy at the
+ * beginning */
+#define OTRL_TLV_SMP1Q 0x0007
/* Make a single TLV, copying the supplied data */
OtrlTLV *otrl_tlv_new(unsigned short type, unsigned short len,
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libotr-3.1.0/src/userstate.c new/libotr-3.2.0/src/userstate.c
--- old/libotr-3.1.0/src/userstate.c 2007-07-24 21:17:42.000000000 +0200
+++ new/libotr-3.2.0/src/userstate.c 2008-05-27 14:35:28.000000000 +0200
@@ -1,6 +1,6 @@
/*
* Off-the-Record Messaging library
- * Copyright (C) 2004-2007 Ian Goldberg, Chris Alexander, Nikita Borisov
+ * Copyright (C) 2004-2008 Ian Goldberg, Chris Alexander, Nikita Borisov
*
*
* This library is free software; you can redistribute it and/or
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libotr-3.1.0/src/userstate.h new/libotr-3.2.0/src/userstate.h
--- old/libotr-3.1.0/src/userstate.h 2007-07-24 21:17:42.000000000 +0200
+++ new/libotr-3.2.0/src/userstate.h 2008-05-27 14:35:28.000000000 +0200
@@ -1,6 +1,6 @@
/*
* Off-the-Record Messaging library
- * Copyright (C) 2004-2007 Ian Goldberg, Chris Alexander, Nikita Borisov
+ * Copyright (C) 2004-2008 Ian Goldberg, Chris Alexander, Nikita Borisov
*
*
* This library is free software; you can redistribute it and/or
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libotr-3.1.0/src/version.h new/libotr-3.2.0/src/version.h
--- old/libotr-3.1.0/src/version.h 2007-07-24 21:17:42.000000000 +0200
+++ new/libotr-3.2.0/src/version.h 2008-05-27 14:35:28.000000000 +0200
@@ -1,6 +1,6 @@
/*
* Off-the-Record Messaging library
- * Copyright (C) 2004-2007 Ian Goldberg, Chris Alexander, Nikita Borisov
+ * Copyright (C) 2004-2008 Ian Goldberg, Chris Alexander, Nikita Borisov
*
*
* This library is free software; you can redistribute it and/or
@@ -20,10 +20,10 @@
#ifndef __VERSION_H__
#define __VERSION_H__
-#define OTRL_VERSION "3.1.0"
+#define OTRL_VERSION "3.2.0"
#define OTRL_VERSION_MAJOR 3
-#define OTRL_VERSION_MINOR 1
+#define OTRL_VERSION_MINOR 2
#define OTRL_VERSION_SUB 0
#endif
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libotr-3.1.0/toolkit/ctrmode.c new/libotr-3.2.0/toolkit/ctrmode.c
--- old/libotr-3.1.0/toolkit/ctrmode.c 2007-07-24 21:17:43.000000000 +0200
+++ new/libotr-3.2.0/toolkit/ctrmode.c 2008-05-27 14:35:28.000000000 +0200
@@ -1,6 +1,6 @@
/*
* Off-the-Record Messaging Toolkit
- * Copyright (C) 2004-2007 Ian Goldberg, Chris Alexander, Nikita Borisov
+ * Copyright (C) 2004-2008 Ian Goldberg, Chris Alexander, Nikita Borisov
*
*
* This program is free software; you can redistribute it and/or modify
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libotr-3.1.0/toolkit/ctrmode.h new/libotr-3.2.0/toolkit/ctrmode.h
--- old/libotr-3.1.0/toolkit/ctrmode.h 2007-07-24 21:17:43.000000000 +0200
+++ new/libotr-3.2.0/toolkit/ctrmode.h 2008-05-27 14:35:28.000000000 +0200
@@ -1,6 +1,6 @@
/*
* Off-the-Record Messaging Toolkit
- * Copyright (C) 2004-2007 Ian Goldberg, Chris Alexander, Nikita Borisov
+ * Copyright (C) 2004-2008 Ian Goldberg, Chris Alexander, Nikita Borisov
*
*
* This program is free software; you can redistribute it and/or modify
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libotr-3.1.0/toolkit/otr_mackey.c new/libotr-3.2.0/toolkit/otr_mackey.c
--- old/libotr-3.1.0/toolkit/otr_mackey.c 2007-07-24 21:17:44.000000000 +0200
+++ new/libotr-3.2.0/toolkit/otr_mackey.c 2008-05-27 14:35:28.000000000 +0200
@@ -1,6 +1,6 @@
/*
* Off-the-Record Messaging Toolkit
- * Copyright (C) 2004-2007 Ian Goldberg, Chris Alexander, Nikita Borisov
+ * Copyright (C) 2004-2008 Ian Goldberg, Chris Alexander, Nikita Borisov
*
*
* This program is free software; you can redistribute it and/or modify
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libotr-3.1.0/toolkit/otr_modify.c new/libotr-3.2.0/toolkit/otr_modify.c
--- old/libotr-3.1.0/toolkit/otr_modify.c 2007-07-24 21:17:44.000000000 +0200
+++ new/libotr-3.2.0/toolkit/otr_modify.c 2008-05-27 14:35:28.000000000 +0200
@@ -1,6 +1,6 @@
/*
* Off-the-Record Messaging Toolkit
- * Copyright (C) 2004-2007 Ian Goldberg, Chris Alexander, Nikita Borisov
+ * Copyright (C) 2004-2008 Ian Goldberg, Chris Alexander, Nikita Borisov
*
*
* This program is free software; you can redistribute it and/or modify
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libotr-3.1.0/toolkit/otr_parse.c new/libotr-3.2.0/toolkit/otr_parse.c
--- old/libotr-3.1.0/toolkit/otr_parse.c 2007-07-24 21:17:44.000000000 +0200
+++ new/libotr-3.2.0/toolkit/otr_parse.c 2008-05-27 14:35:28.000000000 +0200
@@ -1,6 +1,6 @@
/*
* Off-the-Record Messaging Toolkit
- * Copyright (C) 2004-2007 Ian Goldberg, Chris Alexander, Nikita Borisov
+ * Copyright (C) 2004-2008 Ian Goldberg, Chris Alexander, Nikita Borisov
*
*
* This program is free software; you can redistribute it and/or modify
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libotr-3.1.0/toolkit/otr_readforge.c new/libotr-3.2.0/toolkit/otr_readforge.c
--- old/libotr-3.1.0/toolkit/otr_readforge.c 2007-07-24 21:17:44.000000000 +0200
+++ new/libotr-3.2.0/toolkit/otr_readforge.c 2008-05-27 14:35:28.000000000 +0200
@@ -1,6 +1,6 @@
/*
* Off-the-Record Messaging Toolkit
- * Copyright (C) 2004-2007 Ian Goldberg, Chris Alexander, Nikita Borisov
+ * Copyright (C) 2004-2008 Ian Goldberg, Chris Alexander, Nikita Borisov
*
*
* This program is free software; you can redistribute it and/or modify
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libotr-3.1.0/toolkit/otr_remac.c new/libotr-3.2.0/toolkit/otr_remac.c
--- old/libotr-3.1.0/toolkit/otr_remac.c 2007-07-24 21:17:44.000000000 +0200
+++ new/libotr-3.2.0/toolkit/otr_remac.c 2008-05-27 14:35:28.000000000 +0200
@@ -1,6 +1,6 @@
/*
* Off-the-Record Messaging Toolkit
- * Copyright (C) 2004-2007 Ian Goldberg, Chris Alexander, Nikita Borisov
+ * Copyright (C) 2004-2008 Ian Goldberg, Chris Alexander, Nikita Borisov
*
*
* This program is free software; you can redistribute it and/or modify
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libotr-3.1.0/toolkit/otr_sesskeys.c new/libotr-3.2.0/toolkit/otr_sesskeys.c
--- old/libotr-3.1.0/toolkit/otr_sesskeys.c 2007-07-24 21:17:45.000000000 +0200
+++ new/libotr-3.2.0/toolkit/otr_sesskeys.c 2008-05-27 14:35:28.000000000 +0200
@@ -1,6 +1,6 @@
/*
* Off-the-Record Messaging Toolkit
- * Copyright (C) 2004-2007 Ian Goldberg, Chris Alexander, Nikita Borisov
+ * Copyright (C) 2004-2008 Ian Goldberg, Chris Alexander, Nikita Borisov
*
*
* This program is free software; you can redistribute it and/or modify
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libotr-3.1.0/toolkit/parse.c new/libotr-3.2.0/toolkit/parse.c
--- old/libotr-3.1.0/toolkit/parse.c 2007-07-24 21:17:45.000000000 +0200
+++ new/libotr-3.2.0/toolkit/parse.c 2008-05-27 14:35:28.000000000 +0200
@@ -1,6 +1,6 @@
/*
* Off-the-Record Messaging Toolkit
- * Copyright (C) 2004-2007 Ian Goldberg, Chris Alexander, Nikita Borisov
+ * Copyright (C) 2004-2008 Ian Goldberg, Chris Alexander, Nikita Borisov
*
*
* This program is free software; you can redistribute it and/or modify
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libotr-3.1.0/toolkit/parse.h new/libotr-3.2.0/toolkit/parse.h
--- old/libotr-3.1.0/toolkit/parse.h 2007-07-24 21:17:46.000000000 +0200
+++ new/libotr-3.2.0/toolkit/parse.h 2008-05-27 14:35:28.000000000 +0200
@@ -1,6 +1,6 @@
/*
* Off-the-Record Messaging Toolkit
- * Copyright (C) 2004-2007 Ian Goldberg, Chris Alexander, Nikita Borisov
+ * Copyright (C) 2004-2008 Ian Goldberg, Chris Alexander, Nikita Borisov
*
*
* This program is free software; you can redistribute it and/or modify
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libotr-3.1.0/toolkit/readotr.c new/libotr-3.2.0/toolkit/readotr.c
--- old/libotr-3.1.0/toolkit/readotr.c 2007-07-24 21:17:47.000000000 +0200
+++ new/libotr-3.2.0/toolkit/readotr.c 2008-05-27 14:35:28.000000000 +0200
@@ -1,6 +1,6 @@
/*
* Off-the-Record Messaging Toolkit
- * Copyright (C) 2004-2007 Ian Goldberg, Chris Alexander, Nikita Borisov
+ * Copyright (C) 2004-2008 Ian Goldberg, Chris Alexander, Nikita Borisov
*
*
* This program is free software; you can redistribute it and/or modify
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libotr-3.1.0/toolkit/readotr.h new/libotr-3.2.0/toolkit/readotr.h
--- old/libotr-3.1.0/toolkit/readotr.h 2007-07-24 21:17:48.000000000 +0200
+++ new/libotr-3.2.0/toolkit/readotr.h 2008-05-27 14:35:28.000000000 +0200
@@ -1,6 +1,6 @@
/*
* Off-the-Record Messaging Toolkit
- * Copyright (C) 2004-2007 Ian Goldberg, Chris Alexander, Nikita Borisov
+ * Copyright (C) 2004-2008 Ian Goldberg, Chris Alexander, Nikita Borisov
*
*
* This program is free software; you can redistribute it and/or modify
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libotr-3.1.0/toolkit/sesskeys.c new/libotr-3.2.0/toolkit/sesskeys.c
--- old/libotr-3.1.0/toolkit/sesskeys.c 2007-07-24 21:17:50.000000000 +0200
+++ new/libotr-3.2.0/toolkit/sesskeys.c 2008-05-27 14:35:28.000000000 +0200
@@ -1,6 +1,6 @@
/*
* Off-the-Record Messaging Toolkit
- * Copyright (C) 2004-2007 Ian Goldberg, Chris Alexander, Nikita Borisov
+ * Copyright (C) 2004-2008 Ian Goldberg, Chris Alexander, Nikita Borisov
*
*
* This program is free software; you can redistribute it and/or modify
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libotr-3.1.0/toolkit/sesskeys.h new/libotr-3.2.0/toolkit/sesskeys.h
--- old/libotr-3.1.0/toolkit/sesskeys.h 2007-07-24 21:17:50.000000000 +0200
+++ new/libotr-3.2.0/toolkit/sesskeys.h 2008-05-27 14:35:28.000000000 +0200
@@ -1,6 +1,6 @@
/*
* Off-the-Record Messaging Toolkit
- * Copyright (C) 2004-2007 Ian Goldberg, Chris Alexander, Nikita Borisov
+ * Copyright (C) 2004-2008 Ian Goldberg, Chris Alexander, Nikita Borisov
*
*
* This program is free software; you can redistribute it and/or modify
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libotr-3.1.0/toolkit/sha1hmac.c new/libotr-3.2.0/toolkit/sha1hmac.c
--- old/libotr-3.1.0/toolkit/sha1hmac.c 2007-07-24 21:17:50.000000000 +0200
+++ new/libotr-3.2.0/toolkit/sha1hmac.c 2008-05-27 14:35:28.000000000 +0200
@@ -1,6 +1,6 @@
/*
* Off-the-Record Messaging Toolkit
- * Copyright (C) 2004-2007 Ian Goldberg, Chris Alexander, Nikita Borisov
+ * Copyright (C) 2004-2008 Ian Goldberg, Chris Alexander, Nikita Borisov
*
*
* This program is free software; you can redistribute it and/or modify
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libotr-3.1.0/toolkit/sha1hmac.h new/libotr-3.2.0/toolkit/sha1hmac.h
--- old/libotr-3.1.0/toolkit/sha1hmac.h 2007-07-24 21:17:50.000000000 +0200
+++ new/libotr-3.2.0/toolkit/sha1hmac.h 2008-05-27 14:35:28.000000000 +0200
@@ -1,6 +1,6 @@
/*
* Off-the-Record Messaging Toolkit
- * Copyright (C) 2004-2007 Ian Goldberg, Chris Alexander, Nikita Borisov
+ * Copyright (C) 2004-2008 Ian Goldberg, Chris Alexander, Nikita Borisov
*
*
* This program is free software; you can redistribute it and/or modify
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libotr-3.1.0/UPGRADING new/libotr-3.2.0/UPGRADING
--- old/libotr-3.1.0/UPGRADING 2007-07-24 21:45:16.000000000 +0200
+++ new/libotr-3.2.0/UPGRADING 2008-06-13 17:18:23.000000000 +0200
@@ -19,16 +19,16 @@
1. Introduction
This file contains information about the changes between the 3.0.0 and
-the 3.1.0 APIs for libotr. Note that, as a minor release, applications
-compiled against 3.0.0 will continue to work with 3.1.0. This document
-explains how to add the new functionality in 3.1.0.
+the 3.2.0 APIs for libotr. Note that, as a minor release, applications
+compiled against 3.0.0 will continue to work with 3.2.0. This document
+explains how to add the new functionality in 3.2.0.
2. Major Additions
-This section describes the new features in OTR 3.1.0 along with a short
+This section describes the new features in OTR 3.2.0 along with a short
history or motivation for each.
-2.1. Fragmentation
+2.1. Fragmentation [Added in 3.1.0]
Most IM networks supported by Pidgin have fixed maximum message sizes
(MMS) of approximately 1-3 kB. The longer messages in the initial key
@@ -39,9 +39,9 @@
OTR version 3.0.0 added support for recombining message fragments to
recover the original message. Now that users may be assumed to be able to
handle message fragments, support for fragmenting and sending large
-messages has been added to OTR 3.1.0.
+messages has been added to OTR 3.2.0.
-2.2. Socialist Millionaires' Protocol
+2.2. Socialist Millionaires' Protocol [Added in 3.1.0, revised in 3.2.0]
In version 3.0.0, the only method available to authenticate a buddy was
fingerprint verification. However, many users who are unfamiliar with
@@ -53,7 +53,7 @@
verification altogether.
To allow for a method of authentication that is both easier to understand
-and easier to use, OTR version 3.1.0 includes the Socialist Millionaires'
+and easier to use, OTR version 3.2.0 includes the Socialist Millionaires'
Protocol (SMP). SMP runs as follows: each user inputs a secret string,
say "x" and "y". They then exchange a series of messages which reveal
the value of (x==y), but no additional information about the inputs.
@@ -84,7 +84,7 @@
Schoenmakers and Traore titled "A Fair and Efficient Solution to the
Socialist Millionaires Problem" (2001), on which our solution is based.
-3. Required Changes
+3. Required Changes [Added in 3.1.0]
3.1. OtrlMessageAppOps Callbacks
@@ -142,7 +142,7 @@
Setting account_name to NULL will cause libotr to use
ConnContext->accountname as the displayed name for an account.
-3.2. Using Fragmentation
+3.2. Using Fragmentation [Added in 3.1.0]
To make use of fragmentation, first make sure that the max_message_size
callback described in 3.1.1. has been implemented. Then, whenever you
@@ -168,7 +168,7 @@
must be received in order, so at most one of the latter two options
will result in readable messages.
-3.3. Using SMP
+3.3. Using SMP [Added in 3.1.0, revised in 3.2.0]
Recall from section 2.2. above that SMP takes one input string from each
user and outputs either failure or success.
@@ -216,8 +216,11 @@
The protocol itself consists of 4 messages passed between the two users,
say Alice and Bob. These messages are identified through their TLVs:
-OTRL_TLV_SMP1 The initial message, containing Alice's secret
-OTRL_TLV_SMP2 A response containing Bob's secret
+OTRL_TLV_SMP1 The initial message, containing a commitment to
+ Alice's secret
+OTRL_TLV_SMP1Q Like OTRL_TLV_SMP1, but also containing a question
+ to display to Bob
+OTRL_TLV_SMP2 A response containing a commitment to Bob's secret
OTRL_TLV_SMP3 The next message in the chain, from Alice to Bob
OTRL_TLV_SMP4 The final message in the chain, from Bob to Alice
OTRL_TLV_SMP_ABORT Indicates an error has occurred. Will reset SMP state
@@ -247,49 +250,69 @@
ConnContext *context = [correct context];
NextExpectedSMP nextMsg = context->smstate->nextExpected;
- tlv = otrl_tlv_find(tlvs, OTRL_TLV_SMP1);
- if (tlv) {
- if (nextMsg != OTRL_SMP_EXPECT1)
- [abort SMP];
- else {
- [get secret from user and continue SMP];
- }
- }
- tlv = otrl_tlv_find(tlvs, OTRL_TLV_SMP2);
- if (tlv) {
- if (nextMsg != OTRL_SMP_EXPECT2)
- [abort SMP];
- else {
- // If we received TLV2, we will send TLV3 and expect TLV4
- context->smstate->nextExpected = OTRL_SMP_EXPECT4;
- }
- }
- tlv = otrl_tlv_find(tlvs, OTRL_TLV_SMP3);
- if (tlv) {
- if (nextMsg != OTRL_SMP_EXPECT3)
- [abort SMP];
- else {
- // If we received TLV3, we will send TLV4
- // We will not expect more messages, so prepare for next SMP
- context->smstate->nextExpected = OTRL_SMP_EXPECT1;
- // Report result to user
- }
- }
- tlv = otrl_tlv_find(tlvs, OTRL_TLV_SMP4);
- if (tlv) {
- if (nextMsg != OTRL_SMP_EXPECT4)
- [abort SMP];
- else {
- // We will not expect more messages, so prepare for next SMP
- context->smstate->nextExpected = OTRL_SMP_EXPECT1;
- // Report result to user
- }
- }
- tlv = otrl_tlv_find(tlvs, OTRL_TLV_SMP_ABORT);
- if (tlv) {
- // The message we are waiting for will not arrive, so reset
- // and prepare for the next SMP
+ if (context->smstate->sm_prog_state == OTRL_SMP_PROG_CHEATED) {
+ otrg_plugin_abort_smp(context);
+ otrg_dialog_update_smp(context, 0.0);
context->smstate->nextExpected = OTRL_SMP_EXPECT1;
+ context->smstate->sm_prog_state = OTRL_SMP_PROG_OK;
+ } else {
+ tlv = otrl_tlv_find(tlvs, OTRL_TLV_SMP1Q);
+ if (tlv) {
+ if (nextMsg != OTRL_SMP_EXPECT1)
+ [abort SMP];
+ else {
+ char *question = (char *)tlv->data;
+ char *eoq = memchr(question, '\0', tlv->len);
+ if (eoq) {
+ [prompt the user with question, get the response,
+ and continue SMP];
+ }
+ }
+ }
+ tlv = otrl_tlv_find(tlvs, OTRL_TLV_SMP1);
+ if (tlv) {
+ if (nextMsg != OTRL_SMP_EXPECT1)
+ [abort SMP];
+ else {
+ [get secret from user and continue SMP];
+ }
+ }
+ tlv = otrl_tlv_find(tlvs, OTRL_TLV_SMP2);
+ if (tlv) {
+ if (nextMsg != OTRL_SMP_EXPECT2)
+ [abort SMP];
+ else {
+ // If we received TLV2, we will send TLV3 and expect TLV4
+ context->smstate->nextExpected = OTRL_SMP_EXPECT4;
+ }
+ }
+ tlv = otrl_tlv_find(tlvs, OTRL_TLV_SMP3);
+ if (tlv) {
+ if (nextMsg != OTRL_SMP_EXPECT3)
+ [abort SMP];
+ else {
+ // If we received TLV3, we will send TLV4
+ // We will not expect more messages, so prepare for next SMP
+ context->smstate->nextExpected = OTRL_SMP_EXPECT1;
+ // Report result to user
+ }
+ }
+ tlv = otrl_tlv_find(tlvs, OTRL_TLV_SMP4);
+ if (tlv) {
+ if (nextMsg != OTRL_SMP_EXPECT4)
+ [abort SMP];
+ else {
+ // We will not expect more messages, so prepare for next SMP
+ context->smstate->nextExpected = OTRL_SMP_EXPECT1;
+ // Report result to user
+ }
+ }
+ tlv = otrl_tlv_find(tlvs, OTRL_TLV_SMP_ABORT);
+ if (tlv) {
+ // The message we are waiting for will not arrive, so reset
+ // and prepare for the next SMP
+ context->smstate->nextExpected = OTRL_SMP_EXPECT1;
+ }
}
To report the result to the user after receiving OTRL_TLV_SMP3 or
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
---------------------------------------------------------------------
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org