Hello community,

here is the log from the commit of package yubikey-personalization-gui for 
openSUSE:Factory checked in at 2018-02-23 15:31:23
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/yubikey-personalization-gui (Old)
 and      /work/SRC/openSUSE:Factory/.yubikey-personalization-gui.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "yubikey-personalization-gui"

Fri Feb 23 15:31:23 2018 rev:5 rq:579310 version:3.1.25

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/yubikey-personalization-gui/yubikey-personalization-gui.changes
  2016-01-08 15:23:56.000000000 +0100
+++ 
/work/SRC/openSUSE:Factory/.yubikey-personalization-gui.new/yubikey-personalization-gui.changes
     2018-02-23 15:31:37.298569430 +0100
@@ -1,0 +2,9 @@
+Wed Feb 21 21:27:21 UTC 2018 - t.gru...@katodev.de
+
+- Version 3.1.25 (released 2018-01-16)
+  - Add oath ID for PSKC output.
+  - Add french scancode options.
+  - Improve static password format validation.
+  - Change about heading. 
+
+-------------------------------------------------------------------

Old:
----
  yubikey-personalization-gui-3.1.24.tar.gz
  yubikey-personalization-gui-3.1.24.tar.gz.sig

New:
----
  yubikey-personalization-gui-3.1.25.tar.gz
  yubikey-personalization-gui-3.1.25.tar.gz.sig

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ yubikey-personalization-gui.spec ++++++
--- /var/tmp/diff_new_pack.GFpi9Y/_old  2018-02-23 15:31:38.730517693 +0100
+++ /var/tmp/diff_new_pack.GFpi9Y/_new  2018-02-23 15:31:38.734517549 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package yubikey-personalization-gui
 #
-# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
 
 
 Name:           yubikey-personalization-gui
-Version:        3.1.24
+Version:        3.1.25
 Release:        0
 Summary:        GUI for Yubikey personalization
 License:        BSD-2-Clause

++++++ yubikey-personalization-gui-3.1.24.tar.gz -> 
yubikey-personalization-gui-3.1.25.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yubikey-personalization-gui-3.1.24/BLURB 
new/yubikey-personalization-gui-3.1.25/BLURB
--- old/yubikey-personalization-gui-3.1.24/BLURB        2016-01-04 
12:15:45.000000000 +0100
+++ new/yubikey-personalization-gui-3.1.25/BLURB        1970-01-01 
01:00:00.000000000 +0100
@@ -1,8 +0,0 @@
-Author: Yubico
-Basename: yubikey-personalization-gui
-Homepage: http://opensource.yubico.com/yubikey-personalization-gui/
-License: BSD-2-Clause
-Name: yubikey-personalization-gui
-Project: yubikey-personalization-gui
-Summary: Qt based Cross-Platform YubiKey Personalization Tool
-Yubico-Category: YubiKey Personalization
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yubikey-personalization-gui-3.1.24/ChangeLog 
new/yubikey-personalization-gui-3.1.25/ChangeLog
--- old/yubikey-personalization-gui-3.1.24/ChangeLog    2016-01-04 
12:16:28.000000000 +0100
+++ new/yubikey-personalization-gui-3.1.25/ChangeLog    2018-01-16 
13:16:41.000000000 +0100
@@ -1,3 +1,70 @@
+2018-01-16  Klas Lindfors <k...@yubico.com>
+
+       * NEWS: NEWS for 3.1.25
+
+2018-01-16  Klas Lindfors <k...@yubico.com>
+
+       * src/ui/aboutpage.ui: change about heading to "YubiKey
+       Personalization Tool"
+
+2017-03-30  Klas Lindfors <k...@yubico.com>
+
+       * : commit 0aa00acc9f369e46f8316eb15ea696bcf055ed4c Author: Mickaël
+       Thomas <micka...@gmail.com> Date:   Wed Mar 29 17:38:38 2017 +0200
+
+2017-03-29  Klas Lindfors <k...@yubico.com>
+
+       * : commit 1255546888e6256108e7d888751c32601703bf4b Author: Mickaël
+       Thomas <micka...@gmail.com> Date:   Sun Jan 29 21:51:34 2017 +0100
+
+2017-03-29  Klas Lindfors <k...@yubico.com>
+
+       * : commit e23ee929e67f13e704818cb0a3ce622231d2027e Author:
+       Guillaume Grasset <guilla...@delvelabs.ca> Date:   Tue Mar 28
+       09:43:04 2017 -0400
+
+2016-06-21  Klas Lindfors <k...@yubico.com>
+
+       * installer/win-nsis/ykpers.nsi: for win installer respect silent
+       properly and don't show a splash
+
+2016-06-21  Klas Lindfors <k...@yubico.com>
+
+       * installer/win-nsis/ykpers.nsi, lib/common.h,
+       resources/lin/yubikey-personalization-gui.1, src/ui/aboutpage.ui: 
+       various http -> https
+
+2016-06-21  Klas Lindfors <k...@yubico.com>
+
+       * BLURB: drop BLURB
+
+2016-05-17  Klas Lindfors <k...@yubico.com>
+
+       * src/ui/mainwindow.cpp: display the edge picture for any 4
+
+2016-05-16  Klas Lindfors <k...@yubico.com>
+
+       * src/ui/chalresppage.ui, src/ui/oathpage.ui, src/ui/otppage.ui,
+       src/ui/staticpage.ui: make elements line up better
+
+2016-05-16  Klas Lindfors <k...@yubico.com>
+
+       * src/yubikeylogger.cpp: probably a better idea to use \n
+       consistently as new line, not endl
+
+2016-03-16  Klas Lindfors <k...@yubico.com>
+
+       * README: use https URL for git clone
+
+2016-01-07  Klas Lindfors <k...@yubico.com>
+
+       * src/yubikeylogger.cpp, src/yubikeylogger.h: add oath id for PSKC
+       output
+
+2016-01-04  Klas Lindfors <k...@yubico.com>
+
+       * NEWS, src/src.pro: bump versions
+
 2016-01-04  Klas Lindfors <k...@yubico.com>
 
        * NEWS: NEWS for 3.1.24
@@ -419,23 +486,23 @@
 
        * YKPersonalization.pro: switch mac build to qt5
 
-2014-10-29  Henrik Stråth <min...@users.noreply.github.com>
+2014-10-29  Henrik Str�th <min...@users.noreply.github.com>
 
        * README: Update README
 
-2014-10-29  Henrik Stråth <min...@users.noreply.github.com>
+2014-10-29  Henrik Str�th <min...@users.noreply.github.com>
 
        * README: Update README
 
-2014-10-29  Henrik Stråth <min...@users.noreply.github.com>
+2014-10-29  Henrik Str�th <min...@users.noreply.github.com>
 
        * README: Update README
 
-2014-10-29  Henrik Stråth <min...@users.noreply.github.com>
+2014-10-29  Henrik Str�th <min...@users.noreply.github.com>
 
        * README: Update README
 
-2014-10-29  Henrik Stråth <hen...@yubico.com>
+2014-10-29  Henrik Str�th <hen...@yubico.com>
 
        * README.adoc: symlinked README
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yubikey-personalization-gui-3.1.24/NEWS 
new/yubikey-personalization-gui-3.1.25/NEWS
--- old/yubikey-personalization-gui-3.1.24/NEWS 2016-01-04 12:15:45.000000000 
+0100
+++ new/yubikey-personalization-gui-3.1.25/NEWS 2018-01-16 13:15:14.000000000 
+0100
@@ -1,5 +1,15 @@
 yubikey-personalization-gui NEWS -- History of user-visible changes.     -*- 
outline -*-
 
+* Version 3.1.25 (released 2018-01-16)
+
+** Add oath ID for PSKC output.
+
+** Add french scancode options.
+
+** Improve static password format validation.
+
+** Change about heading.
+
 * Version 3.1.24 (released 2016-01-04)
 
 ** Fix a bug when doing consecutive programming that reset id to 0.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yubikey-personalization-gui-3.1.24/README 
new/yubikey-personalization-gui-3.1.25/README
--- old/yubikey-personalization-gui-3.1.24/README       2016-01-04 
12:15:45.000000000 +0100
+++ new/yubikey-personalization-gui-3.1.25/README       2018-01-16 
13:15:14.000000000 +0100
@@ -33,7 +33,7 @@
 You may check out the sources using Git with the following command:
 
 -----------
-  $ git clone git://github.com/Yubico/yubikey-personalization-gui.git
+  $ git clone https://github.com/Yubico/yubikey-personalization-gui.git
 -----------
 
 This will create a directory 'yubikey-personalization-gui'. Enter the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yubikey-personalization-gui-3.1.24/installer/win-nsis/ykpers.nsi 
new/yubikey-personalization-gui-3.1.25/installer/win-nsis/ykpers.nsi
--- old/yubikey-personalization-gui-3.1.24/installer/win-nsis/ykpers.nsi        
2016-01-04 12:15:45.000000000 +0100
+++ new/yubikey-personalization-gui-3.1.25/installer/win-nsis/ykpers.nsi        
2018-01-16 13:15:14.000000000 +0100
@@ -1,4 +1,5 @@
 !include "MUI.nsh"
+!include "LogicLib.nsh"
 
 ; The name of the installer
 Name "YubiKey Personalization Tool"
@@ -20,14 +21,16 @@
 Var STARTMENU_FOLDER
 
 Function .onInit
-    # Display splash image.
-    InitPluginsDir
+    # Display splash image it not silent
+    ${IfNot} ${Silent}
+        InitPluginsDir
+
+        File /oname=$PLUGINSDIR\splash.bmp "yubico_logo.bmp"
+        advsplash::show 1000 600 400 0x04025C $PLUGINSDIR\splash
+        Pop $0
 
-    File /oname=$PLUGINSDIR\splash.bmp "yubico_logo.bmp"
-    advsplash::show 1000 600 400 0x04025C $PLUGINSDIR\splash
-    Pop $0
-
-    Delete $PLUGINSDIR\splash.bmp
+        Delete $PLUGINSDIR\splash.bmp
+    ${EndIf}
 FunctionEnd
 
 ;Interface Settings
@@ -96,7 +99,7 @@
   WriteRegExpandStr HKLM $MYTMP "InstallLocation" "$INSTDIR"
   WriteRegStr       HKLM $MYTMP "DisplayVersion"  "${YKPERS_VERSION}"
   WriteRegStr       HKLM $MYTMP "Publisher"       "Yubico AB"
-  WriteRegStr       HKLM $MYTMP "URLInfoAbout"    "http://www.yubico.com";
+  WriteRegStr       HKLM $MYTMP "URLInfoAbout"    "https://www.yubico.com";
   WriteRegDWORD     HKLM $MYTMP "NoModify"        "1"
   WriteRegDWORD     HKLM $MYTMP "NoRepair"        "1"
 
@@ -108,7 +111,7 @@
   CreateShortCut "YubiKey Personalization Tool.lnk" 
"$INSTDIR\yubikey-personalization-gui.exe" "" 
"$INSTDIR\yubikey-personalization-gui.exe" 0
   CreateShortCut "Uninstall.lnk" "$INSTDIR\uninstall.exe" "" 
"$INSTDIR\uninstall.exe" 1
   WriteINIStr "$SMPROGRAMS\$STARTMENU_FOLDER\Yubico Web page.url" \
-                   "InternetShortcut" "URL" "http://www.yubico.com/";
+                   "InternetShortcut" "URL" "https://www.yubico.com/";
 !insertmacro MUI_STARTMENU_WRITE_END
 
 SectionEnd
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yubikey-personalization-gui-3.1.24/lib/bepo-scanedit.cpp 
new/yubikey-personalization-gui-3.1.25/lib/bepo-scanedit.cpp
--- old/yubikey-personalization-gui-3.1.24/lib/bepo-scanedit.cpp        
1970-01-01 01:00:00.000000000 +0100
+++ new/yubikey-personalization-gui-3.1.25/lib/bepo-scanedit.cpp        
2018-01-16 13:15:14.000000000 +0100
@@ -0,0 +1,134 @@
+/*
+Copyright (C) 2015 Yubico AB.  All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+   1. Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+
+   2. Redistributions in binary form must reproduce the above
+      copyright notice, this list of conditions and the following
+      disclaimer in the documentation and/or other materials provided
+      with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "bepo-scanedit.h"
+
+#define        SHIFT   0x80
+
+BepoScanEdit::BepoScanEdit() {
+    keyMap = QMap<int, int>();
+    keyMap[0x09] = 0x2b | SHIFT; /* '\t' */
+    keyMap[0x0a] = 0x28 | SHIFT; /* '\n' */
+    keyMap[0x20] = 0x2c; /* ' ' */
+    keyMap[0x21] = 0x1c | SHIFT; /* '!' */
+    keyMap[0x22] = 0x1e; /* '"' */
+    keyMap[0x23] = 0x35 | SHIFT; /* '#' */
+    keyMap[0x24] = 0x35; /* '$' */
+    keyMap[0x25] = 0x2e; /* '%' */
+    keyMap[0x27] = 0x11; /* "'" */
+    keyMap[0x28] = 0x21; /* '(' */
+    keyMap[0x29] = 0x22; /* ')' */
+    keyMap[0x2a] = 0x27; /* '*' */
+    keyMap[0x2b] = 0x24; /* '+' */
+    keyMap[0x2c] = 0x0a; /* ',' */
+    keyMap[0x2d] = 0x25; /* '-' */
+    keyMap[0x2e] = 0x19; /* '.' */
+    keyMap[0x2f] = 0x26; /* '/' */
+    keyMap[0x30] = 0x27 | SHIFT; /* '0' */
+    keyMap[0x31] = 0x1e | SHIFT; /* '1' */
+    keyMap[0x32] = 0x1f | SHIFT; /* '2' */
+    keyMap[0x33] = 0x20 | SHIFT; /* '3' */
+    keyMap[0x34] = 0x21 | SHIFT; /* '4' */
+    keyMap[0x35] = 0x22 | SHIFT; /* '5' */
+    keyMap[0x36] = 0x23 | SHIFT; /* '6' */
+    keyMap[0x37] = 0x24 | SHIFT; /* '7' */
+    keyMap[0x38] = 0x25 | SHIFT; /* '8' */
+    keyMap[0x39] = 0x26 | SHIFT; /* '9' */
+    keyMap[0x3a] = 0x19 | SHIFT; /* ':' */
+    keyMap[0x3b] = 0x0a | SHIFT; /* ';' */
+    keyMap[0x3d] = 0x2d; /* '=' */
+    keyMap[0x3f] = 0x11 | SHIFT; /* '?' */
+    keyMap[0x40] = 0x23; /* '@' */
+    keyMap[0x41] = 0x04 | SHIFT; /* 'A' */
+    keyMap[0x42] = 0x14 | SHIFT; /* 'B' */
+    keyMap[0x43] = 0x0b | SHIFT; /* 'C' */
+    keyMap[0x44] = 0x0c | SHIFT; /* 'D' */
+    keyMap[0x45] = 0x09 | SHIFT; /* 'E' */
+    keyMap[0x46] = 0x38 | SHIFT; /* 'F' */
+    keyMap[0x47] = 0x36 | SHIFT; /* 'G' */
+    keyMap[0x48] = 0x37 | SHIFT; /* 'H' */
+    keyMap[0x49] = 0x07 | SHIFT; /* 'I' */
+    keyMap[0x4a] = 0x13 | SHIFT; /* 'J' */
+    keyMap[0x4b] = 0x05 | SHIFT; /* 'K' */
+    keyMap[0x4c] = 0x12 | SHIFT; /* 'L' */
+    keyMap[0x4d] = 0x34 | SHIFT; /* 'M' */
+    keyMap[0x4e] = 0x33 | SHIFT; /* 'N' */
+    keyMap[0x4f] = 0x15 | SHIFT; /* 'O' */
+    keyMap[0x50] = 0x08 | SHIFT; /* 'P' */
+    keyMap[0x51] = 0x10 | SHIFT; /* 'Q' */
+    keyMap[0x52] = 0x0f | SHIFT; /* 'R' */
+    keyMap[0x53] = 0x0e | SHIFT; /* 'S' */
+    keyMap[0x54] = 0x0d | SHIFT; /* 'T' */
+    keyMap[0x55] = 0x16 | SHIFT; /* 'U' */
+    keyMap[0x56] = 0x18 | SHIFT; /* 'V' */
+    keyMap[0x57] = 0x30 | SHIFT; /* 'W' */
+    keyMap[0x58] = 0x06 | SHIFT; /* 'X' */
+    keyMap[0x59] = 0x1b | SHIFT; /* 'Y' */
+    keyMap[0x5a] = 0x2f | SHIFT; /* 'Z' */
+    keyMap[0x60] = 0x2e | SHIFT; /* '`' */
+    keyMap[0x61] = 0x04; /* 'a' */
+    keyMap[0x62] = 0x14; /* 'b' */
+    keyMap[0x63] = 0x0b; /* 'c' */
+    keyMap[0x64] = 0x0c; /* 'd' */
+    keyMap[0x65] = 0x09; /* 'e' */
+    keyMap[0x66] = 0x38; /* 'f' */
+    keyMap[0x67] = 0x36; /* 'g' */
+    keyMap[0x68] = 0x37; /* 'h' */
+    keyMap[0x69] = 0x07; /* 'i' */
+    keyMap[0x6a] = 0x13; /* 'j' */
+    keyMap[0x6b] = 0x05; /* 'k' */
+    keyMap[0x6c] = 0x12; /* 'l' */
+    keyMap[0x6d] = 0x34; /* 'm' */
+    keyMap[0x6e] = 0x33; /* 'n' */
+    keyMap[0x6f] = 0x15; /* 'o' */
+    keyMap[0x70] = 0x08; /* 'p' */
+    keyMap[0x71] = 0x10; /* 'q' */
+    keyMap[0x72] = 0x0f; /* 'r' */
+    keyMap[0x73] = 0x0e; /* 's' */
+    keyMap[0x74] = 0x0d; /* 't' */
+    keyMap[0x75] = 0x16; /* 'u' */
+    keyMap[0x76] = 0x18; /* 'v' */
+    keyMap[0x77] = 0x30; /* 'w' */
+    keyMap[0x78] = 0x06; /* 'x' */
+    keyMap[0x79] = 0x1b; /* 'y' */
+    keyMap[0x7a] = 0x2f; /* 'z' */
+    keyMap[0xa0] = 0x2c | SHIFT; /* '\xa0' non-breaking space */
+    keyMap[0xab] = 0x1f; /* '«' */
+    keyMap[0xb0] = 0x2d | SHIFT; /* '°' */
+    keyMap[0xbb] = 0x20; /* '»' */
+    keyMap[0xc0] = 0x1d | SHIFT; /* 'À' */
+    keyMap[0xc7] = 0x31 | SHIFT; /* 'Ç' */
+    keyMap[0xc8] = 0x17 | SHIFT; /* 'È' */
+    keyMap[0xc9] = 0x1a | SHIFT; /* 'É' */
+    keyMap[0xca] = 0x64 | SHIFT; /* 'Ê' */
+    keyMap[0xe0] = 0x1d; /* 'à' */
+    keyMap[0xe7] = 0x31; /* 'ç' */
+    keyMap[0xe8] = 0x17; /* 'è' */
+    keyMap[0xe9] = 0x1a; /* 'é' */
+    keyMap[0xea] = 0x64; /* 'ê' */
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yubikey-personalization-gui-3.1.24/lib/bepo-scanedit.h 
new/yubikey-personalization-gui-3.1.25/lib/bepo-scanedit.h
--- old/yubikey-personalization-gui-3.1.24/lib/bepo-scanedit.h  1970-01-01 
01:00:00.000000000 +0100
+++ new/yubikey-personalization-gui-3.1.25/lib/bepo-scanedit.h  2018-01-16 
13:15:14.000000000 +0100
@@ -0,0 +1,40 @@
+/*
+Copyright (C) 2015 Yubico AB.  All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+   1. Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+
+   2. Redistributions in binary form must reproduce the above
+      copyright notice, this list of conditions and the following
+      disclaimer in the documentation and/or other materials provided
+      with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef BEPO_SCANEDIT_H
+#define BEPO_SCANEDIT_H
+
+#include "scanedit.h"
+
+class BepoScanEdit : public ScanEdit
+{
+public:
+    BepoScanEdit();
+};
+
+#endif // BEPO_SCANEDIT_H
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yubikey-personalization-gui-3.1.24/lib/common.h 
new/yubikey-personalization-gui-3.1.25/lib/common.h
--- old/yubikey-personalization-gui-3.1.24/lib/common.h 2016-01-04 
12:15:45.000000000 +0100
+++ new/yubikey-personalization-gui-3.1.25/lib/common.h 2018-01-16 
13:15:14.000000000 +0100
@@ -57,7 +57,7 @@
 #define WRITE_CONFIG                0
 #define EXPORT_CONFIG               1
 
-#define SUPPORT_LINK                "http://yubi.co/forum";
+#define SUPPORT_LINK                "https://yubi.co/forum";
 #define UPLOAD_URL                  "<!doctype 
html><html><head><title>upload</title></head><body><form 
action='https://upload.yubico.com/' method='post' id='upload'>serial:<input 
name='serial' value='%1'/><br/>prefix:<input name='prefix' 
value='%2'/><br/>uid:<input name='uid' value='%3'/><br/>aeskey:<input 
name='aeskey' value='%4'/><br/><input type='submit'/><br/></form><script 
type='text/javascript'>window.onload=function(){document.getElementById('upload').submit();}</script></body></html>"
 
 #define ERR_NOERROR                 0
@@ -69,6 +69,8 @@
 #define KEYMAP_NONE                 0
 #define KEYMAP_US                   1
 #define KEYMAP_DE                   2
+#define KEYMAP_BEPO                 3
+#define KEYMAP_FR                   4
 
 //Timeouts
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yubikey-personalization-gui-3.1.24/lib/fr-scanedit.cpp 
new/yubikey-personalization-gui-3.1.25/lib/fr-scanedit.cpp
--- old/yubikey-personalization-gui-3.1.24/lib/fr-scanedit.cpp  1970-01-01 
01:00:00.000000000 +0100
+++ new/yubikey-personalization-gui-3.1.25/lib/fr-scanedit.cpp  2018-01-16 
13:15:14.000000000 +0100
@@ -0,0 +1,134 @@
+/*
+Copyright (C) 2015 Yubico AB.  All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+   1. Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+
+   2. Redistributions in binary form must reproduce the above
+      copyright notice, this list of conditions and the following
+      disclaimer in the documentation and/or other materials provided
+      with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "fr-scanedit.h"
+
+#define        SHIFT   0x80
+
+FrScanEdit::FrScanEdit() {
+    /* Generated using: loadkeys -m fr-pc | python convert.py */
+    /* 
https://gist.github.com/mickael9/567ce26b028ce89cafcaf4250464c526#file-convert-py
 */
+    keyMap = QMap<int, int>();
+    keyMap[0x09] = 0x2b; /* '\t' */
+    keyMap[0x0a] = 0x28; /* '\n' */
+    keyMap[0x20] = 0x2c; /* ' ' */
+    keyMap[0x21] = 0x38; /* '!' */
+    keyMap[0x22] = 0x20; /* '"' */
+    keyMap[0x24] = 0x30; /* '$' */
+    keyMap[0x25] = 0x34 | SHIFT; /* '%' */
+    keyMap[0x26] = 0x1e; /* '&' */
+    keyMap[0x27] = 0x21; /* "'" */
+    keyMap[0x28] = 0x22; /* '(' */
+    keyMap[0x29] = 0x2d; /* ')' */
+    keyMap[0x2a] = 0x31; /* '*' */
+    keyMap[0x2b] = 0x2e | SHIFT; /* '+' */
+    keyMap[0x2c] = 0x10; /* ',' */
+    keyMap[0x2d] = 0x23; /* '-' */
+    keyMap[0x2e] = 0x36 | SHIFT; /* '.' */
+    keyMap[0x2f] = 0x37 | SHIFT; /* '/' */
+    keyMap[0x30] = 0x27 | SHIFT; /* '0' */
+    keyMap[0x31] = 0x1e | SHIFT; /* '1' */
+    keyMap[0x32] = 0x1f | SHIFT; /* '2' */
+    keyMap[0x33] = 0x20 | SHIFT; /* '3' */
+    keyMap[0x34] = 0x21 | SHIFT; /* '4' */
+    keyMap[0x35] = 0x22 | SHIFT; /* '5' */
+    keyMap[0x36] = 0x23 | SHIFT; /* '6' */
+    keyMap[0x37] = 0x24 | SHIFT; /* '7' */
+    keyMap[0x38] = 0x25 | SHIFT; /* '8' */
+    keyMap[0x39] = 0x26 | SHIFT; /* '9' */
+    keyMap[0x3a] = 0x37; /* ':' */
+    keyMap[0x3b] = 0x36; /* ';' */
+    keyMap[0x3c] = 0x64; /* '<' */
+    keyMap[0x3d] = 0x2e; /* '=' */
+    keyMap[0x3e] = 0x64 | SHIFT; /* '>' */
+    keyMap[0x3f] = 0x10 | SHIFT; /* '?' */
+    keyMap[0x41] = 0x14 | SHIFT; /* 'A' */
+    keyMap[0x42] = 0x05 | SHIFT; /* 'B' */
+    keyMap[0x43] = 0x06 | SHIFT; /* 'C' */
+    keyMap[0x44] = 0x07 | SHIFT; /* 'D' */
+    keyMap[0x45] = 0x08 | SHIFT; /* 'E' */
+    keyMap[0x46] = 0x09 | SHIFT; /* 'F' */
+    keyMap[0x47] = 0x0a | SHIFT; /* 'G' */
+    keyMap[0x48] = 0x0b | SHIFT; /* 'H' */
+    keyMap[0x49] = 0x0c | SHIFT; /* 'I' */
+    keyMap[0x4a] = 0x0d | SHIFT; /* 'J' */
+    keyMap[0x4b] = 0x0e | SHIFT; /* 'K' */
+    keyMap[0x4c] = 0x0f | SHIFT; /* 'L' */
+    keyMap[0x4d] = 0x33 | SHIFT; /* 'M' */
+    keyMap[0x4e] = 0x11 | SHIFT; /* 'N' */
+    keyMap[0x4f] = 0x12 | SHIFT; /* 'O' */
+    keyMap[0x50] = 0x13 | SHIFT; /* 'P' */
+    keyMap[0x51] = 0x04 | SHIFT; /* 'Q' */
+    keyMap[0x52] = 0x15 | SHIFT; /* 'R' */
+    keyMap[0x53] = 0x16 | SHIFT; /* 'S' */
+    keyMap[0x54] = 0x17 | SHIFT; /* 'T' */
+    keyMap[0x55] = 0x18 | SHIFT; /* 'U' */
+    keyMap[0x56] = 0x19 | SHIFT; /* 'V' */
+    keyMap[0x57] = 0x1d | SHIFT; /* 'W' */
+    keyMap[0x58] = 0x1b | SHIFT; /* 'X' */
+    keyMap[0x59] = 0x1c | SHIFT; /* 'Y' */
+    keyMap[0x5a] = 0x1a | SHIFT; /* 'Z' */
+    keyMap[0x5f] = 0x25; /* '_' */
+    keyMap[0x61] = 0x14; /* 'a' */
+    keyMap[0x62] = 0x05; /* 'b' */
+    keyMap[0x63] = 0x06; /* 'c' */
+    keyMap[0x64] = 0x07; /* 'd' */
+    keyMap[0x65] = 0x08; /* 'e' */
+    keyMap[0x66] = 0x09; /* 'f' */
+    keyMap[0x67] = 0x0a; /* 'g' */
+    keyMap[0x68] = 0x0b; /* 'h' */
+    keyMap[0x69] = 0x0c; /* 'i' */
+    keyMap[0x6a] = 0x0d; /* 'j' */
+    keyMap[0x6b] = 0x0e; /* 'k' */
+    keyMap[0x6c] = 0x0f; /* 'l' */
+    keyMap[0x6d] = 0x33; /* 'm' */
+    keyMap[0x6e] = 0x11; /* 'n' */
+    keyMap[0x6f] = 0x12; /* 'o' */
+    keyMap[0x70] = 0x13; /* 'p' */
+    keyMap[0x71] = 0x04; /* 'q' */
+    keyMap[0x72] = 0x15; /* 'r' */
+    keyMap[0x73] = 0x16; /* 's' */
+    keyMap[0x74] = 0x17; /* 't' */
+    keyMap[0x75] = 0x18; /* 'u' */
+    keyMap[0x76] = 0x19; /* 'v' */
+    keyMap[0x77] = 0x1d; /* 'w' */
+    keyMap[0x78] = 0x1b; /* 'x' */
+    keyMap[0x79] = 0x1c; /* 'y' */
+    keyMap[0x7a] = 0x1a; /* 'z' */
+    keyMap[0x7f] = 0x2a; /* '\x7f' */
+    keyMap[0xa3] = 0x30 | SHIFT; /* '£' */
+    keyMap[0xa7] = 0x38 | SHIFT; /* '§' */
+    keyMap[0xb0] = 0x2d | SHIFT; /* '°' */
+    keyMap[0xb2] = 0x35; /* '²' */
+    keyMap[0xb5] = 0x31 | SHIFT; /* 'µ' */
+    keyMap[0xe0] = 0x27; /* 'à' */
+    keyMap[0xe7] = 0x26; /* 'ç' */
+    keyMap[0xe8] = 0x24; /* 'è' */
+    keyMap[0xe9] = 0x1f; /* 'é' */
+    keyMap[0xf9] = 0x34; /* 'ù' */
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yubikey-personalization-gui-3.1.24/lib/fr-scanedit.h 
new/yubikey-personalization-gui-3.1.25/lib/fr-scanedit.h
--- old/yubikey-personalization-gui-3.1.24/lib/fr-scanedit.h    1970-01-01 
01:00:00.000000000 +0100
+++ new/yubikey-personalization-gui-3.1.25/lib/fr-scanedit.h    2018-01-16 
13:15:14.000000000 +0100
@@ -0,0 +1,40 @@
+/*
+Copyright (C) 2015 Yubico AB.  All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+   1. Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+
+   2. Redistributions in binary form must reproduce the above
+      copyright notice, this list of conditions and the following
+      disclaimer in the documentation and/or other materials provided
+      with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef FR_SCANEDIT_H
+#define FR_SCANEDIT_H
+
+#include "scanedit.h"
+
+class FrScanEdit : public ScanEdit
+{
+public:
+    FrScanEdit();
+};
+
+#endif // DE_SCANEDIT_H
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yubikey-personalization-gui-3.1.24/lib/lib.pro 
new/yubikey-personalization-gui-3.1.25/lib/lib.pro
--- old/yubikey-personalization-gui-3.1.24/lib/lib.pro  2016-01-04 
12:15:45.000000000 +0100
+++ new/yubikey-personalization-gui-3.1.25/lib/lib.pro  2018-01-16 
13:15:14.000000000 +0100
@@ -18,6 +18,8 @@
     scanedit.h \
     us-scanedit.h \
     de-scanedit.h \
+    bepo-scanedit.h \
+    fr-scanedit.h \
     common.h \
     otpdef.h \
     yubikeyutil.h
@@ -26,6 +28,8 @@
     scanedit.cpp \
     us-scanedit.cpp \
     de-scanedit.cpp \
+    bepo-scanedit.cpp \
+    fr-scanedit.cpp \
     yubikeyutil.cpp
 
 QMAKE_CXXFLAGS += $$CXXFLAGS $$CPPFLAGS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yubikey-personalization-gui-3.1.24/resources/lin/yubikey-personalization-gui.1
 
new/yubikey-personalization-gui-3.1.25/resources/lin/yubikey-personalization-gui.1
--- 
old/yubikey-personalization-gui-3.1.24/resources/lin/yubikey-personalization-gui.1
  2016-01-04 12:15:45.000000000 +0100
+++ 
new/yubikey-personalization-gui-3.1.25/resources/lin/yubikey-personalization-gui.1
  2018-01-16 13:15:14.000000000 +0100
@@ -43,4 +43,4 @@
 .URL "https://github.com/Yubico/yubikey-personalization-gui/issues"; "the issue 
tracker"
 .SH "SEE ALSO"
 YubiKeys can be obtained from
-.URL "http://www.yubico.com/"; "Yubico" "."
+.URL "https://www.yubico.com/"; "Yubico" "."
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yubikey-personalization-gui-3.1.24/src/src.pro 
new/yubikey-personalization-gui-3.1.25/src/src.pro
--- old/yubikey-personalization-gui-3.1.24/src/src.pro  2016-01-04 
12:15:45.000000000 +0100
+++ new/yubikey-personalization-gui-3.1.25/src/src.pro  2018-01-16 
13:15:14.000000000 +0100
@@ -3,7 +3,7 @@
 #
 VERSION_MAJOR   = 3
 VERSION_MINOR   = 1
-VERSION_BUILD   = 24
+VERSION_BUILD   = 25
 VERSION         = "$${VERSION_MAJOR}.$${VERSION_MINOR}.$${VERSION_BUILD}"
 APP_NAME        = $$quote(YubiKey Personalization Tool)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yubikey-personalization-gui-3.1.24/src/ui/aboutpage.ui 
new/yubikey-personalization-gui-3.1.25/src/ui/aboutpage.ui
--- old/yubikey-personalization-gui-3.1.24/src/ui/aboutpage.ui  2016-01-04 
12:15:45.000000000 +0100
+++ new/yubikey-personalization-gui-3.1.25/src/ui/aboutpage.ui  2018-01-16 
13:15:14.000000000 +0100
@@ -310,7 +310,7 @@
 color: rgb(140, 192, 65);</string>
     </property>
     <property name="text">
-     <string>The Swiss Army Knife for the YubiKey</string>
+     <string>YubiKey Personalization Tool</string>
     </property>
     <property name="alignment">
      <set>Qt::AlignCenter</set>
@@ -475,7 +475,7 @@
 color: rgb(5, 67, 168);</string>
     </property>
     <property name="text">
-     <string>http://yubi.co/forum</string>
+     <string>https://yubi.co/forum</string>
     </property>
     <property name="autoDefault">
      <bool>false</bool>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yubikey-personalization-gui-3.1.24/src/ui/chalresppage.ui 
new/yubikey-personalization-gui-3.1.25/src/ui/chalresppage.ui
--- old/yubikey-personalization-gui-3.1.24/src/ui/chalresppage.ui       
2016-01-04 12:15:45.000000000 +0100
+++ new/yubikey-personalization-gui-3.1.25/src/ui/chalresppage.ui       
2018-01-16 13:15:14.000000000 +0100
@@ -150,7 +150,7 @@
      <property name="geometry">
       <rect>
        <x>20</x>
-       <y>120</y>
+       <y>125</y>
        <width>671</width>
        <height>30</height>
       </rect>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yubikey-personalization-gui-3.1.24/src/ui/mainwindow.cpp 
new/yubikey-personalization-gui-3.1.25/src/ui/mainwindow.cpp
--- old/yubikey-personalization-gui-3.1.24/src/ui/mainwindow.cpp        
2016-01-04 12:15:45.000000000 +0100
+++ new/yubikey-personalization-gui-3.1.25/src/ui/mainwindow.cpp        
2018-01-16 13:15:14.000000000 +0100
@@ -409,7 +409,7 @@
             movie->setFileName(":/res/images/neo_production_33.mng");
         } else if(version < YK_VERSION(4,1,0)) {
             movie->setFileName(":/res/images/plus.mng");
-        } else if(version < YK_VERSION(4,3,0)) {
+        } else if(version < YK_VERSION(4,9,9)) {
             movie->setFileName(":/res/images/edge.mng");
         } else {
             pixmap.load(":/res/images/blank.png");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yubikey-personalization-gui-3.1.24/src/ui/oathpage.ui 
new/yubikey-personalization-gui-3.1.25/src/ui/oathpage.ui
--- old/yubikey-personalization-gui-3.1.24/src/ui/oathpage.ui   2016-01-04 
12:15:45.000000000 +0100
+++ new/yubikey-personalization-gui-3.1.25/src/ui/oathpage.ui   2018-01-16 
13:15:14.000000000 +0100
@@ -150,7 +150,7 @@
      <property name="geometry">
       <rect>
        <x>20</x>
-       <y>120</y>
+       <y>125</y>
        <width>671</width>
        <height>30</height>
       </rect>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yubikey-personalization-gui-3.1.24/src/ui/otppage.ui 
new/yubikey-personalization-gui-3.1.25/src/ui/otppage.ui
--- old/yubikey-personalization-gui-3.1.24/src/ui/otppage.ui    2016-01-04 
12:15:45.000000000 +0100
+++ new/yubikey-personalization-gui-3.1.25/src/ui/otppage.ui    2018-01-16 
13:15:14.000000000 +0100
@@ -150,7 +150,7 @@
      <property name="geometry">
       <rect>
        <x>20</x>
-       <y>120</y>
+       <y>125</y>
        <width>671</width>
        <height>30</height>
       </rect>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yubikey-personalization-gui-3.1.24/src/ui/staticpage.cpp 
new/yubikey-personalization-gui-3.1.25/src/ui/staticpage.cpp
--- old/yubikey-personalization-gui-3.1.24/src/ui/staticpage.cpp        
2016-01-04 12:15:45.000000000 +0100
+++ new/yubikey-personalization-gui-3.1.25/src/ui/staticpage.cpp        
2018-01-16 13:15:14.000000000 +0100
@@ -45,6 +45,8 @@
 
 #include "us-scanedit.h"
 #include "de-scanedit.h"
+#include "bepo-scanedit.h"
+#include "fr-scanedit.h"
 
 #include "common.h"
 
@@ -76,8 +78,11 @@
     ui->quickResultsWidget->resizeColumnsToContents();
     ui->advResultsWidget->resizeColumnsToContents();
 
-    QRegExp rx("^[a-f0-9]{0,72}$");
-    ui->quickScanCodesTxt->setValidator(new QRegExpValidator(rx, this));
+    QRegExp rxScan("[A-Fa-f0-9]{,76}");
+    ui->quickScanCodesTxt->setValidator(new QRegExpValidator(rxScan, this));
+
+    QRegExp rxText("(\\\\[tn\\\\]|.){,38}");
+    ui->quickStaticTxt->setValidator(new QRegExpValidator(rxText, this));
 
     scanedit = NULL;
 }
@@ -357,6 +362,9 @@
 }
 
 void StaticPage::on_quickStaticTxt_returnPressed() {
+    if (!ui->quickInsertTabBtn->isEnabled())
+        return;
+
     QString text = ui->quickStaticTxt->text() + "\\n";
     ui->quickStaticTxt->setText(text);
     on_quickStaticTxt_textEdited(text);
@@ -1150,6 +1158,10 @@
             scanedit = new UsScanEdit();
         } else if(index == KEYMAP_DE) {
             scanedit = new DeScanEdit();
+        } else if(index == KEYMAP_BEPO) {
+            scanedit = new BepoScanEdit();
+        } else if(index == KEYMAP_FR) {
+            scanedit = new FrScanEdit();
         }
         ui->quickStaticTxt->setEnabled(true);
         ui->quickScanCodesTxt->setEnabled(true);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yubikey-personalization-gui-3.1.24/src/ui/staticpage.ui 
new/yubikey-personalization-gui-3.1.25/src/ui/staticpage.ui
--- old/yubikey-personalization-gui-3.1.24/src/ui/staticpage.ui 2016-01-04 
12:15:45.000000000 +0100
+++ new/yubikey-personalization-gui-3.1.25/src/ui/staticpage.ui 2018-01-16 
13:15:14.000000000 +0100
@@ -150,7 +150,7 @@
      <property name="geometry">
       <rect>
        <x>20</x>
-       <y>120</y>
+       <y>125</y>
        <width>671</width>
        <height>30</height>
       </rect>
@@ -686,7 +686,17 @@
        <string>DE Keyboard</string>
       </property>
      </item>
-    </widget>
+     <item>
+      <property name="text">
+       <string>B&#201;PO Keyboard</string>
+      </property>
+     </item>
+     <item>
+      <property name="text">
+       <string>FR Keyboard</string>
+      </property>
+     </item>
+   </widget>
    </widget>
    <widget class="QGroupBox" name="quickActionsBox">
     <property name="geometry">
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yubikey-personalization-gui-3.1.24/src/yubikeylogger.cpp 
new/yubikey-personalization-gui-3.1.25/src/yubikeylogger.cpp
--- old/yubikey-personalization-gui-3.1.24/src/yubikeylogger.cpp        
2016-01-04 12:15:45.000000000 +0100
+++ new/yubikey-personalization-gui-3.1.25/src/yubikeylogger.cpp        
2018-01-16 13:15:14.000000000 +0100
@@ -27,6 +27,7 @@
  */
 
 #include "yubikeylogger.h"
+#include "yubikeyutil.h"
 #include <QFile>
 #include <QDir>
 #include <QDebug>
@@ -54,6 +55,7 @@
     { "timestampLocal", NULL, STRING, YubiKeyLogger::resolve_timestamp },
     { "configSlot", "configSlot", INT, NULL },
     { "pubIdTxt", "pubIdTxt", STRING, NULL },
+    { "oathIdTxt", NULL, STRING, YubiKeyLogger::resolve_oathId },
     { "pvtIdTxt", "pvtIdTxt", STRING, NULL },
     { "secretKeyTxt", "secretKeyTxt", STRING, NULL },
     { "secretKeyB64", NULL, STRING, YubiKeyLogger::resolve_secretKeyB64 },
@@ -180,7 +182,11 @@
             m_started = false;
         }
         format += 
"<KeyPackage><DeviceInfo><Manufacturer>Yubico</Manufacturer><SerialNo>{serial}</SerialNo></DeviceInfo>";
-        format += 
"<CryptoModuleInfo><Id>{configSlot}</Id></CryptoModuleInfo><Key 
Id=\"{serial}:{configSlot}\"";
+        QString id = "\"{serial}:{configSlot}\"";
+        if(ykConfig->programmingMode() == YubiKeyConfig::Mode_OathHotp && 
ykConfig->pubIdTxt().length() > 0) {
+            id = "\"{oathIdTxt}\"";
+        }
+        format += 
"<CryptoModuleInfo><Id>{configSlot}</Id></CryptoModuleInfo><Key Id=" + id;
         if(ykConfig->programmingMode() == YubiKeyConfig::Mode_YubicoOtp) {
             format += " 
Algorithm=\"http://www.yubico.com/#yubikey-aes\";><AlgorithmParameters><ResponseFormat
 Length=\"{tokenLength}\" Encoding=\"ALPHANUMERIC\"/></AlgorithmParameters>";
         } else if(ykConfig->programmingMode() == YubiKeyConfig::Mode_OathHotp) 
{
@@ -324,6 +330,27 @@
     return code.rightJustified(12, '0');
 }
 
+QString YubiKeyLogger::resolve_oathId(YubiKeyConfig *ykConfig, QString name 
__attribute__((unused))) {
+    QString id;
+    QString pubid = ykConfig->pubIdTxt();
+    int modhex = 0;
+    if(ykConfig->oathFixedModhex()) {
+        modhex = pubid.length();
+    } else if(ykConfig->oathFixedModhex1()) {
+        modhex = 2;
+    } else if(ykConfig->oathFixedModhex2()) {
+        modhex = 4;
+    }
+    id = pubid.left(modhex);
+    if(modhex != pubid.length()) {
+        unsigned char buf[16];
+        size_t len = sizeof(buf);
+        YubiKeyUtil::qstrModhexDecode(buf, &len, pubid.right(pubid.length() - 
modhex));
+        id += YubiKeyUtil::qstrHexEncode(buf, len);
+    }
+    return id;
+}
+
 QStringList YubiKeyLogger::getLogNames() {
     QStringList list;
     for(unsigned int i = 0; i < (sizeof(logging_map) / sizeof(logging_st)); 
i++) {
@@ -344,6 +371,6 @@
     }
 
     QTextStream out(file);
-    out << string << endl;
+    out << string << "\n";
     file->flush();
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yubikey-personalization-gui-3.1.24/src/yubikeylogger.h 
new/yubikey-personalization-gui-3.1.25/src/yubikeylogger.h
--- old/yubikey-personalization-gui-3.1.24/src/yubikeylogger.h  2016-01-04 
12:15:45.000000000 +0100
+++ new/yubikey-personalization-gui-3.1.25/src/yubikeylogger.h  2018-01-16 
13:15:14.000000000 +0100
@@ -93,6 +93,7 @@
     static QString resolve_secretKeyB64(YubiKeyConfig*, QString);
     static QString resolve_tokenLength(YubiKeyConfig*, QString);
     static QString resolve_accessCode(YubiKeyConfig*, QString);
+    static QString resolve_oathId(YubiKeyConfig*, QString);
 };
 
 #endif // YUBIKEYLOGGER_H


Reply via email to