FriBID forum

FriBID är ett fritt program för e-legitimation med BankID.

You are not logged in.

#1 2014-04-06 18:32:29

Hellqvio
Member
Registered: 2014-04-06

fribid på openbsd

Hej
har lyckats bygga fribid på openbsd, har oxå fått hem p12 filen från Länsförsäkringar.
Men sen var det stopp!
Testsidan för fribid ger felkod -1 för båda testerna.
Nåt förslag på hur gå vidare ?

Offline

#2 2014-04-06 20:02:00

samuellb
Administratör
Registered: 2010-02-15
Website

Re: fribid på openbsd

Har aldrig kört OpenBSD själv, men här är några förslag:

  • Kolla efter felmeddelanden i ~/.xsession-errors om den filen finns

  • Alternativt kan du starta webbläsaren från en terminal så att outputen hamnar där (förslagsvis med "-no-remote" om du kör Firefox).

  • Prova att byta namn på katalogen ~/cbt (som innehåller certifikatfiler för e-legitimationerna) och se om FriBID går att starta då.

  • Testa scriptet "testsign.sh" i client/ i sourcen (men kommentera ut raden med valgrind och zzuf och avkommentera den under)

Offline

#3 2014-04-07 11:58:40

Hellqvio
Member
Registered: 2014-04-06

Re: fribid på openbsd

Hej igen
Error från Firefox:
"fribid: pipe error in plugin
"
provade att byta namn på cbt, ingen skillnad.

körde testsign.sh enl instruktion.
problem:
sha1sum finns inte i OpenBSD ersatte den därför med sha1 i scriptet.
"head" som finns i scriptet är inte kompatibelt med BSD "head". Ersatte den därför med ett hembryggt head. Om jag förstår det hela rätt ska den filtrera bort allt utom dom 5 första byten.   Stämmer det?

efter detta blev de ändrade raderna i scripet:
"
#sha="`echo $signature | sha1sum | head -c 5`"
sha="`echo $signature | sha1| hbhead`"
"
(sha blir utan filtreing 40 bytes lång)
resultat vid körning:
"
$sh testsign.sh         
error=,   length=,   sha1=adc83
Segmentation fault (core dumped)
"
början på man page för sha1:
"
NAME
     sha1 - calculate a message-digest fingerprint (checksum) for a file

SYNOPSIS
     sha1 [-bpqrtx] [-c [checklist ...]] [-s string] [file ...]

DESCRIPTION
     sha1 takes as input a message of arbitrary length and produces as output
     a 160-bit "fingerprint" or "message digest" of the input.  It is
     conjectured that it is computationally infeasible to produce two messages
     having the same message digest (a collision), or to produce any message
     having a given prespecified target message digest.  However, researchers
     have developed theoretical attacks that significantly reduce the amount
     of time needed to find a collision in SHA-1.  The use of other message
     digest functions, such as sha256(1), is now preferred.

     The SHA-1 algorithm is intended for digital signature applications, where
     a large file must be "compressed" in a secure manner before being
     encrypted with a private (secret) key under a public-key cryptosystem
     such as RSA.

     The options are as follows:
...
"

Offline

#4 2014-04-07 13:57:04

samuellb
Administratör
Registered: 2010-02-15
Website

Re: fribid på openbsd

Ok, så det blir en segfault i FriBID. Prova att skapa en textfil med detta innehåll:

3;
20;https://example.com/
11;example.com
14;198.51.100.200
12;MTIzNDU2Nzg5
0;
0;
0;
5;UTF-8
4;aGkK
0;
hack

Kör sedan "sign"-binären i en debugger med filen ovan pipe:ad till standard input. Vet inte riktigt vad man brukar köra för debuggers på OpenBSD men om du kör GDB så kan du använda dessa kommandon:

$ gdb client/sign
(gdb) run --internal--ipc=10 < signdata.txt
<Programmet kraschar>
(gdb) bt
<Stacktrace skrivs ut. Posta den på forumet>

Offline

#5 2014-04-07 14:13:24

Hellqvio
Member
Registered: 2014-04-06

Re: fribid på openbsd

OK och tack för dom snabba svaren,
här kommer tracen:
$ gdb sign
GNU gdb 6.3
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "amd64-unknown-openbsd5.4"...
(no debugging symbols found)

(gdb) run --internal--ipc=10 < signdata.txt
Starting program: /home/ole/Downloads/fribid-1.0.3/client/sign --internal--ipc=10 < signdata.txt

Program received signal SIGSEGV, Segmentation fault.
closedir (dirp=0x0) at /usr/src/lib/libc/gen/closedir.c:50
50              free(dirp->dd_td->td_locs);
(gdb) bt
#0  closedir (dirp=0x0) at /usr/src/lib/libc/gen/closedir.c:50
#1  0x0000174b0c30b3ec in platform_closeDir ()
   from /home/ole/Downloads/fribid-1.0.3/client/sign
#2  0x0000174b0c30b49b in platform_openDir ()
   from /home/ole/Downloads/fribid-1.0.3/client/sign
#3  0x0000174b0c30c7a8 in platform_addKeyDirectories ()
   from /home/ole/Downloads/fribid-1.0.3/client/sign
#4  0x0000174b0c30a58d in pipeCommand ()
   from /home/ole/Downloads/fribid-1.0.3/client/sign
#5  0x0000174b0c30a66c in pipeData ()
   from /home/ole/Downloads/fribid-1.0.3/client/sign
#6  0x0000174b0c30b99c in pipeCallback ()
   from /home/ole/Downloads/fribid-1.0.3/client/sign
#7  0x0000174d106f289a in g_main_context_dispatch ()
   from /usr/local/lib/libglib-2.0.so.3600.1
#8  0x0000174d106f4648 in g_main_context_iterate ()
   from /usr/local/lib/libglib-2.0.so.3600.1
#9  0x0000174d106f576b in g_main_loop_run ()
   from /usr/local/lib/libglib-2.0.so.3600.1
#10 0x0000174d0e9c6883 in gtk_main ()
   from /usr/local/lib/libgtk-x11-2.0.so.2400.0
#11 0x0000174b0c309e12 in main ()
   from /home/ole/Downloads/fribid-1.0.3/client/sign

Offline

#6 2014-04-07 18:20:57

Hellqvio
Member
Registered: 2014-04-06

Re: fribid på openbsd

hej igen
kom ett litet steg vidare
Moddade platform_closeDir  i client/posix.c
enl:

void platform_closeDir(PlatformDirIter *iter)
{
//   printf(" platform_closeDir \n");
   // if (iter->dir == NULL)
    //printf("iter->dir == NULL \n");
   if (iter->dir != NULL)
       closedir(iter->dir);
    free(iter->path);
    free(iter);
}


scriptet säger sen :
"
$ sh testsign.sh                                                       
error=0,   length=,   sha1=24163

är det i sin ordning?

Last edited by Hellqvio (2014-04-07 18:36:11)

Offline

#7 2014-04-07 18:52:35

Hellqvio
Member
Registered: 2014-04-06

Re: fribid på openbsd

Jippy!
gled in som en svan på banken efter ändringen.

liten fundering bara:
"platform_closeDir" funktionen kallas två gånger från  platform_addKeyDirectories då parametern len  där är 1;
är det meningen ?

Om det det finns något allm intresse kanske mina moddingar för bygget i övrigt också kanske borde presenteras:

körde ./configure med " --plugin-path= /usr/local/lib/mozilla/plugins

klämde sen in
"
CCFLAGS  +=  `pkg-config --cflags gtk+-2.0`
LIBS    +=  `pkg-config --libs --cflags gtk+-2.0`
"
i client/Makefile för att få det att fungera. Detta borde kanske ha varit med i configure, men configure är inte riktigt min kopp av te.

/Ole

Offline

#8 2014-04-07 19:58:36

samuellb
Administratör
Registered: 2010-02-15
Website

Re: fribid på openbsd

Bra att du fick det att fungera. Har committat platform_closeDir-fixen. Angående addKeyDirectories och len-variabeln så verkar 1 ha fått betydelsen "2 stycken" av någon anledning. Kanske borde fixa det också.

Angående flaggona till Makefile, har du testat med "./configure --with-gtk=2" istället? För det där ska vara default om man inte kör GTK3 (med undantag för --cflags-flaggan i LIBS).

Offline

#9 2014-04-08 05:31:07

Hellqvio
Member
Registered: 2014-04-06

Re: fribid på openbsd

Provade att köra configure :
"
$ ./configure --plugin-path=/usr/local/lib/mozilla/plugins --with-gtk=2
"
det gick bra.
gtk3 gick också bra.
inga ändringar i Makefilerna  är nödvändiga.

Angående min ändring i platform_closeDir tror jag detta är mer att betrakta som en "albyl", rätt ställa att angripa problemet borde vara i  addKeyDirectories.
Att försöka använda free() på null variabler kan också ställa till det.
en liten ändring jag också gjort för att undvika varningar i kompileringen för omdefinitioner är enligt nedan:

"
--- client/misc.h~      Fri Jan 31 22:52:07 2014
+++ client/misc.h       Mon Apr  7 09:35:10 2014
@@ -26,9 +26,9 @@
#define MISC_H

#include <stdbool.h>
-
+#ifndef SIZE_T_MAX
#define SIZE_T_MAX ((size_t)-1)
-
+#endif
/**
  * Adds to a size_t and checks for integer overflow
  *
"

Offline

#10 2014-04-08 06:55:27

samuellb
Administratör
Registered: 2010-02-15
Website

Re: fribid på openbsd

Tack för patch nr 2 smile Har committat den också.

Enligt "man 3 malloc" på Linux så ska det gå att skicka in NULL till free(), men det kanske är annorlunda på *BSD?

Offline

#11 2014-04-08 10:54:48

Hellqvio
Member
Registered: 2014-04-06

Re: fribid på openbsd

angående malloc/free i OpenBSD

se nedan man malloc .

DIAGNOSTICS
     If malloc(), calloc(), realloc(), or free() detect an error condition, a
     message will be printed to file descriptor 2 (not using stdio).  Errors
     will result in the process being aborted, unless the a option has been
     specified.

     Here is a brief description of the error messages and what they mean:

     ``out of memory''
             If the X option is specified it is an error for malloc(),
             calloc(), or realloc() to return NULL.

     ``malloc init mmap failed''
             This is a rather weird condition that is most likely to indicate
             a seriously overloaded system or a ulimit restriction.

     ``bogus pointer (double free?)''
             An attempt to free() or realloc() an unallocated pointer was
             made.

     ``chunk is already free''
             There was an attempt to free a chunk that had already been freed.
.......

Men
Jag fick problem, senare packade upp hela fribid på ett nytt ställe patchade  configurerade. men då ville inte gtk.c bygga.
Efter lite forskning upptäckte jag att configure inte fungerade som jag antagit trots make clean ./configure etc var client/Makefilen orörd.
Jag kom sedan på att den styrs av parametrar från configure. Det fungerar inte BSDmake ( bla annat är if/else statser annorlunda).
laddade därför ner gmake, med den gick det bra  !

Offline

Board footer

Powered by FluxBB