gnomint-1.6.4/0000755000000000000000000000000015212761360011736 5ustar00rootrootgnomint-1.6.4/m4/0000755000000000000000000000000015212761357012264 5ustar00rootrootgnomint-1.6.4/m4/lib-ld.m40000644000000000000000000000714315212761267013676 0ustar00rootroot# lib-ld.m4 serial 6 dnl Copyright (C) 1996-2003, 2009-2016 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl Subroutines of libtool.m4, dnl with replacements s/_*LT_PATH/AC_LIB_PROG/ and s/lt_/acl_/ to avoid dnl collision with libtool.m4. dnl From libtool-2.4. Sets the variable with_gnu_ld to yes or no. AC_DEFUN([AC_LIB_PROG_LD_GNU], [AC_CACHE_CHECK([if the linker ($LD) is GNU ld], [acl_cv_prog_gnu_ld], [# I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 /dev/null 2>&1 \ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ || PATH_SEPARATOR=';' } fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by $CC]) case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]]* | ?:[[\\/]]*) re_direlt='/[[^/]][[^/]]*/\.\./' # Canonicalize the pathname of ld ac_prog=`echo "$ac_prog"| sed 's%\\\\%/%g'` while echo "$ac_prog" | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL([acl_cv_path_LD], [if test -z "$LD"; then acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$acl_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then acl_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$acl_cv_path_LD" -v 2>&1 , 1995-2000. dnl Bruno Haible , 2000-2003. AC_PREREQ([2.60]) dnl Checks for all prerequisites of the po subdirectory. AC_DEFUN([AM_PO_SUBDIRS], [ AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl AC_REQUIRE([AC_PROG_SED])dnl AC_REQUIRE([AM_NLS])dnl dnl Release version of the gettext macros. This is used to ensure that dnl the gettext macros and po/Makefile.in.in are in sync. AC_SUBST([GETTEXT_MACRO_VERSION], [0.19]) dnl Perform the following tests also if --disable-nls has been given, dnl because they are needed for "make dist" to work. dnl Search for GNU msgfmt in the PATH. dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions. dnl The second test excludes FreeBSD msgfmt. AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, [$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], :) AC_PATH_PROG([GMSGFMT], [gmsgfmt], [$MSGFMT]) dnl Test whether it is GNU msgfmt >= 0.15. changequote(,)dnl case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;; *) MSGFMT_015=$MSGFMT ;; esac changequote([,])dnl AC_SUBST([MSGFMT_015]) changequote(,)dnl case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; *) GMSGFMT_015=$GMSGFMT ;; esac changequote([,])dnl AC_SUBST([GMSGFMT_015]) dnl Search for GNU xgettext 0.12 or newer in the PATH. dnl The first test excludes Solaris xgettext and early GNU xgettext versions. dnl The second test excludes FreeBSD xgettext. AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], :) dnl Remove leftover from FreeBSD xgettext call. rm -f messages.po dnl Test whether it is GNU xgettext >= 0.15. changequote(,)dnl case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;; *) XGETTEXT_015=$XGETTEXT ;; esac changequote([,])dnl AC_SUBST([XGETTEXT_015]) dnl Search for GNU msgmerge 0.11 or newer in the PATH. AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge, [$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1], :) dnl Installation directories. dnl Autoconf >= 2.60 defines localedir. For older versions of autoconf, we dnl have to define it here, so that it can be used in po/Makefile. test -n "$localedir" || localedir='${datadir}/locale' AC_SUBST([localedir]) dnl Support for AM_XGETTEXT_OPTION. test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= AC_SUBST([XGETTEXT_EXTRA_OPTIONS]) AC_CONFIG_COMMANDS([po-directories], [[ for ac_file in $CONFIG_FILES; do # Support "outfile[:infile[:infile...]]" case "$ac_file" in *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; esac # PO directories have a Makefile.in generated from Makefile.in.in. case "$ac_file" in */Makefile.in) # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'` ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac # Treat a directory as a PO directory if and only if it has a # POTFILES.in file. This allows packages to have multiple PO # directories under different names or in different locations. if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then rm -f "$ac_dir/POTFILES" test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" gt_tab=`printf '\t'` cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ${gt_tab}]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" POMAKEFILEDEPS="POTFILES.in" # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend # on $ac_dir but don't depend on user-specified configuration # parameters. if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then # The LINGUAS file contains the set of available languages. if test -n "$OBSOLETE_ALL_LINGUAS"; then test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" fi ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` # Hide the ALL_LINGUAS assignment from automake < 1.5. eval 'ALL_LINGUAS''=$ALL_LINGUAS_' POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" else # The set of available languages was given in configure.in. # Hide the ALL_LINGUAS assignment from automake < 1.5. eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' fi # Compute POFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) # Compute UPDATEPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) # Compute DUMMYPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) # Compute GMOFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) case "$ac_given_srcdir" in .) srcdirpre= ;; *) srcdirpre='$(srcdir)/' ;; esac POFILES= UPDATEPOFILES= DUMMYPOFILES= GMOFILES= for lang in $ALL_LINGUAS; do POFILES="$POFILES $srcdirpre$lang.po" UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" DUMMYPOFILES="$DUMMYPOFILES $lang.nop" GMOFILES="$GMOFILES $srcdirpre$lang.gmo" done # CATALOGS depends on both $ac_dir and the user's LINGUAS # environment variable. INST_LINGUAS= if test -n "$ALL_LINGUAS"; then for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "$LINGUAS"; then desiredlanguages="$LINGUAS" else desiredlanguages="$ALL_LINGUAS" fi for desiredlang in $desiredlanguages; do # Use the presentlang catalog if desiredlang is # a. equal to presentlang, or # b. a variant of presentlang (because in this case, # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in "$presentlang"*) useit=yes;; esac done if test $useit = yes; then INST_LINGUAS="$INST_LINGUAS $presentlang" fi done fi CATALOGS= if test -n "$INST_LINGUAS"; then for lang in $INST_LINGUAS; do CATALOGS="$CATALOGS $lang.gmo" done fi test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do if test -f "$f"; then case "$f" in *.orig | *.bak | *~) ;; *) cat "$f" >> "$ac_dir/Makefile" ;; esac fi done fi ;; esac done]], [# Capture the value of obsolete ALL_LINGUAS because we need it to compute # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it # from automake < 1.5. eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' # Capture the value of LINGUAS because we need it to compute CATALOGS. LINGUAS="${LINGUAS-%UNSET%}" ]) ]) dnl Postprocesses a Makefile in a directory containing PO files. AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE], [ # When this code is run, in config.status, two variables have already been # set: # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in, # - LINGUAS is the value of the environment variable LINGUAS at configure # time. changequote(,)dnl # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'` ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac # Find a way to echo strings without interpreting backslash. if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then gt_echo='echo' else if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then gt_echo='printf %s\n' else echo_func () { cat < "$ac_file.tmp" tab=`printf '\t'` if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then # Add dependencies that cannot be formulated as a simple suffix rule. for lang in $ALL_LINGUAS; do frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` cat >> "$ac_file.tmp" < /dev/null; then # Add dependencies that cannot be formulated as a simple suffix rule. for lang in $ALL_LINGUAS; do frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'` cat >> "$ac_file.tmp" <> "$ac_file.tmp" < 3]), [1], [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl [[m4_foreach([_Lt_prefix], [$2], [m4_foreach([_Lt_suffix], ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) # lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) # ----------------------------------------------------------------------- # Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited # by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. m4_define([lt_if_append_uniq], [m4_ifdef([$1], [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], [lt_append([$1], [$2], [$3])$4], [$5])], [lt_append([$1], [$2], [$3])$4])]) # lt_dict_add(DICT, KEY, VALUE) # ----------------------------- m4_define([lt_dict_add], [m4_define([$1($2)], [$3])]) # lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) # -------------------------------------------- m4_define([lt_dict_add_subkey], [m4_define([$1($2:$3)], [$4])]) # lt_dict_fetch(DICT, KEY, [SUBKEY]) # ---------------------------------- m4_define([lt_dict_fetch], [m4_ifval([$3], m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) # lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) # ----------------------------------------------------------------- m4_define([lt_if_dict_fetch], [m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], [$5], [$6])]) # lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) # -------------------------------------------------------------- m4_define([lt_dict_filter], [m4_if([$5], [], [], [lt_join(m4_quote(m4_default([$4], [[, ]])), lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl ]) gnomint-1.6.4/m4/iconv.m40000644000000000000000000002207215212761266013646 0ustar00rootroot# iconv.m4 serial 19 (gettext-0.18.2) dnl Copyright (C) 2000-2002, 2007-2014, 2016 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. AC_DEFUN([AM_ICONV_LINKFLAGS_BODY], [ dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV dnl accordingly. AC_LIB_LINKFLAGS_BODY([iconv]) ]) AC_DEFUN([AM_ICONV_LINK], [ dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and dnl those with the standalone portable GNU libiconv installed). AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV dnl accordingly. AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) dnl Add $INCICONV to CPPFLAGS before performing the following checks, dnl because if the user has installed libiconv and not disabled its use dnl via --without-libiconv-prefix, he wants to use it. The first dnl AC_LINK_IFELSE will then fail, the second AC_LINK_IFELSE will succeed. am_save_CPPFLAGS="$CPPFLAGS" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV]) AC_CACHE_CHECK([for iconv], [am_cv_func_iconv], [ am_cv_func_iconv="no, consider installing GNU libiconv" am_cv_lib_iconv=no AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[ #include #include ]], [[iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd);]])], [am_cv_func_iconv=yes]) if test "$am_cv_func_iconv" != yes; then am_save_LIBS="$LIBS" LIBS="$LIBS $LIBICONV" AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[ #include #include ]], [[iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd);]])], [am_cv_lib_iconv=yes] [am_cv_func_iconv=yes]) LIBS="$am_save_LIBS" fi ]) if test "$am_cv_func_iconv" = yes; then AC_CACHE_CHECK([for working iconv], [am_cv_func_iconv_works], [ dnl This tests against bugs in AIX 5.1, AIX 6.1..7.1, HP-UX 11.11, dnl Solaris 10. am_save_LIBS="$LIBS" if test $am_cv_lib_iconv = yes; then LIBS="$LIBS $LIBICONV" fi am_cv_func_iconv_works=no for ac_iconv_const in '' 'const'; do AC_RUN_IFELSE( [AC_LANG_PROGRAM( [[ #include #include #ifndef ICONV_CONST # define ICONV_CONST $ac_iconv_const #endif ]], [[int result = 0; /* Test against AIX 5.1 bug: Failures are not distinguishable from successful returns. */ { iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); if (cd_utf8_to_88591 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\342\202\254"; /* EURO SIGN */ char buf[10]; ICONV_CONST char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_utf8_to_88591, &inptr, &inbytesleft, &outptr, &outbytesleft); if (res == 0) result |= 1; iconv_close (cd_utf8_to_88591); } } /* Test against Solaris 10 bug: Failures are not distinguishable from successful returns. */ { iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646"); if (cd_ascii_to_88591 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\263"; char buf[10]; ICONV_CONST char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_ascii_to_88591, &inptr, &inbytesleft, &outptr, &outbytesleft); if (res == 0) result |= 2; iconv_close (cd_ascii_to_88591); } } /* Test against AIX 6.1..7.1 bug: Buffer overrun. */ { iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1"); if (cd_88591_to_utf8 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\304"; static char buf[2] = { (char)0xDE, (char)0xAD }; ICONV_CONST char *inptr = input; size_t inbytesleft = 1; char *outptr = buf; size_t outbytesleft = 1; size_t res = iconv (cd_88591_to_utf8, &inptr, &inbytesleft, &outptr, &outbytesleft); if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD) result |= 4; iconv_close (cd_88591_to_utf8); } } #if 0 /* This bug could be worked around by the caller. */ /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ { iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); if (cd_88591_to_utf8 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; char buf[50]; ICONV_CONST char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_88591_to_utf8, &inptr, &inbytesleft, &outptr, &outbytesleft); if ((int)res > 0) result |= 8; iconv_close (cd_88591_to_utf8); } } #endif /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is provided. */ if (/* Try standardized names. */ iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1) /* Try IRIX, OSF/1 names. */ && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1) /* Try AIX names. */ && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1) /* Try HP-UX names. */ && iconv_open ("utf8", "eucJP") == (iconv_t)(-1)) result |= 16; return result; ]])], [am_cv_func_iconv_works=yes], , [case "$host_os" in aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; *) am_cv_func_iconv_works="guessing yes" ;; esac]) test "$am_cv_func_iconv_works" = no || break done LIBS="$am_save_LIBS" ]) case "$am_cv_func_iconv_works" in *no) am_func_iconv=no am_cv_lib_iconv=no ;; *) am_func_iconv=yes ;; esac else am_func_iconv=no am_cv_lib_iconv=no fi if test "$am_func_iconv" = yes; then AC_DEFINE([HAVE_ICONV], [1], [Define if you have the iconv() function and it works.]) fi if test "$am_cv_lib_iconv" = yes; then AC_MSG_CHECKING([how to link with libiconv]) AC_MSG_RESULT([$LIBICONV]) else dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV dnl either. CPPFLAGS="$am_save_CPPFLAGS" LIBICONV= LTLIBICONV= fi AC_SUBST([LIBICONV]) AC_SUBST([LTLIBICONV]) ]) dnl Define AM_ICONV using AC_DEFUN_ONCE for Autoconf >= 2.64, in order to dnl avoid warnings like dnl "warning: AC_REQUIRE: `AM_ICONV' was expanded before it was required". dnl This is tricky because of the way 'aclocal' is implemented: dnl - It requires defining an auxiliary macro whose name ends in AC_DEFUN. dnl Otherwise aclocal's initial scan pass would miss the macro definition. dnl - It requires a line break inside the AC_DEFUN_ONCE and AC_DEFUN expansions. dnl Otherwise aclocal would emit many "Use of uninitialized value $1" dnl warnings. m4_define([gl_iconv_AC_DEFUN], m4_version_prereq([2.64], [[AC_DEFUN_ONCE( [$1], [$2])]], [m4_ifdef([gl_00GNULIB], [[AC_DEFUN_ONCE( [$1], [$2])]], [[AC_DEFUN( [$1], [$2])]])])) gl_iconv_AC_DEFUN([AM_ICONV], [ AM_ICONV_LINK if test "$am_cv_func_iconv" = yes; then AC_MSG_CHECKING([for iconv declaration]) AC_CACHE_VAL([am_cv_proto_iconv], [ AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[ #include #include extern #ifdef __cplusplus "C" #endif #if defined(__STDC__) || defined(_MSC_VER) || defined(__cplusplus) size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); #else size_t iconv(); #endif ]], [[]])], [am_cv_proto_iconv_arg1=""], [am_cv_proto_iconv_arg1="const"]) am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` AC_MSG_RESULT([ $am_cv_proto_iconv]) AC_DEFINE_UNQUOTED([ICONV_CONST], [$am_cv_proto_iconv_arg1], [Define as const if the declaration of iconv() needs const.]) dnl Also substitute ICONV_CONST in the gnulib generated . m4_ifdef([gl_ICONV_H_DEFAULTS], [AC_REQUIRE([gl_ICONV_H_DEFAULTS]) if test -n "$am_cv_proto_iconv_arg1"; then ICONV_CONST="const" fi ]) fi ]) gnomint-1.6.4/m4/nls.m40000644000000000000000000000230715212761267013324 0ustar00rootroot# nls.m4 serial 5 (gettext-0.18) dnl Copyright (C) 1995-2003, 2005-2006, 2008-2014, 2016 Free Software dnl Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995-2000. dnl Bruno Haible , 2000-2003. AC_PREREQ([2.50]) AC_DEFUN([AM_NLS], [ AC_MSG_CHECKING([whether NLS is requested]) dnl Default is enabled NLS AC_ARG_ENABLE([nls], [ --disable-nls do not use Native Language Support], USE_NLS=$enableval, USE_NLS=yes) AC_MSG_RESULT([$USE_NLS]) AC_SUBST([USE_NLS]) ]) gnomint-1.6.4/m4/intlmacosx.m40000644000000000000000000000474515212761267014721 0ustar00rootroot# intlmacosx.m4 serial 5 (gettext-0.18.2) dnl Copyright (C) 2004-2014, 2016 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Checks for special options needed on Mac OS X. dnl Defines INTL_MACOSX_LIBS. AC_DEFUN([gt_INTL_MACOSX], [ dnl Check for API introduced in Mac OS X 10.2. AC_CACHE_CHECK([for CFPreferencesCopyAppValue], [gt_cv_func_CFPreferencesCopyAppValue], [gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[#include ]], [[CFPreferencesCopyAppValue(NULL, NULL)]])], [gt_cv_func_CFPreferencesCopyAppValue=yes], [gt_cv_func_CFPreferencesCopyAppValue=no]) LIBS="$gt_save_LIBS"]) if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], [1], [Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in the CoreFoundation framework.]) fi dnl Check for API introduced in Mac OS X 10.3. AC_CACHE_CHECK([for CFLocaleCopyCurrent], [gt_cv_func_CFLocaleCopyCurrent], [gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[#include ]], [[CFLocaleCopyCurrent();]])], [gt_cv_func_CFLocaleCopyCurrent=yes], [gt_cv_func_CFLocaleCopyCurrent=no]) LIBS="$gt_save_LIBS"]) if test $gt_cv_func_CFLocaleCopyCurrent = yes; then AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], [1], [Define to 1 if you have the Mac OS X function CFLocaleCopyCurrent in the CoreFoundation framework.]) fi INTL_MACOSX_LIBS= if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" fi AC_SUBST([INTL_MACOSX_LIBS]) ]) gnomint-1.6.4/m4/libtool.m40000644000000000000000000113752015212761272014177 0ustar00rootroot# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # # Copyright (C) 1996-2001, 2003-2019, 2021-2024 Free Software # Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. m4_define([_LT_COPYING], [dnl # Copyright (C) 2024 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # GNU Libtool is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program or library that is built # using GNU Libtool, you may include this file under the same # distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . ]) # serial 63 LT_INIT # LT_PREREQ(VERSION) # ------------------ # Complain and exit if this libtool version is less that VERSION. m4_defun([LT_PREREQ], [m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, [m4_default([$3], [m4_fatal([Libtool version $1 or higher is required], 63)])], [$2])]) # _LT_CHECK_BUILDDIR # ------------------ # Complain if the absolute build directory name contains unusual characters m4_defun([_LT_CHECK_BUILDDIR], [case `pwd` in *\ * | *\ *) AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; esac ]) # LT_INIT([OPTIONS]) # ------------------ AC_DEFUN([LT_INIT], [AC_PREREQ([2.64])dnl We use AC_PATH_PROGS_FEATURE_CHECK AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl AC_BEFORE([$0], [LT_LANG])dnl AC_BEFORE([$0], [LT_OUTPUT])dnl AC_BEFORE([$0], [LTDL_INIT])dnl m4_require([_LT_CHECK_BUILDDIR])dnl dnl Autoconf doesn't catch unexpanded LT_ macros by default: m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 dnl unless we require an AC_DEFUNed macro: AC_REQUIRE([LTOPTIONS_VERSION])dnl AC_REQUIRE([LTSUGAR_VERSION])dnl AC_REQUIRE([LTVERSION_VERSION])dnl AC_REQUIRE([LTOBSOLETE_VERSION])dnl m4_require([_LT_PROG_LTMAIN])dnl _LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) dnl Parse OPTIONS _LT_SET_OPTIONS([$0], [$1]) # This can be used to rebuild libtool when needed LIBTOOL_DEPS=$ltmain # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' AC_SUBST(LIBTOOL)dnl _LT_SETUP # Only expand once: m4_define([LT_INIT]) ])# LT_INIT # Old names: AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PROG_LIBTOOL], []) dnl AC_DEFUN([AM_PROG_LIBTOOL], []) # _LT_PREPARE_CC_BASENAME # ----------------------- m4_defun([_LT_PREPARE_CC_BASENAME], [ # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. func_cc_basename () { for cc_temp in @S|@*""; do case $cc_temp in compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; \-*) ;; *) break;; esac done func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` } ])# _LT_PREPARE_CC_BASENAME # _LT_CC_BASENAME(CC) # ------------------- # It would be clearer to call AC_REQUIREs from _LT_PREPARE_CC_BASENAME, # but that macro is also expanded into generated libtool script, which # arranges for $SED and $ECHO to be set by different means. m4_defun([_LT_CC_BASENAME], [m4_require([_LT_PREPARE_CC_BASENAME])dnl AC_REQUIRE([_LT_DECL_SED])dnl AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl func_cc_basename $1 cc_basename=$func_cc_basename_result ]) # _LT_FILEUTILS_DEFAULTS # ---------------------- # It is okay to use these file commands and assume they have been set # sensibly after 'm4_require([_LT_FILEUTILS_DEFAULTS])'. m4_defun([_LT_FILEUTILS_DEFAULTS], [: ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} ])# _LT_FILEUTILS_DEFAULTS # _LT_SETUP # --------- m4_defun([_LT_SETUP], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl _LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl dnl _LT_DECL([], [host_alias], [0], [The host system])dnl _LT_DECL([], [host], [0])dnl _LT_DECL([], [host_os], [0])dnl dnl _LT_DECL([], [build_alias], [0], [The build system])dnl _LT_DECL([], [build], [0])dnl _LT_DECL([], [build_os], [0])dnl dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl dnl AC_REQUIRE([AC_PROG_LN_S])dnl test -z "$LN_S" && LN_S="ln -s" _LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl dnl AC_REQUIRE([LT_CMD_MAX_LEN])dnl _LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl _LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl m4_require([_LT_CMD_RELOAD])dnl m4_require([_LT_DECL_FILECMD])dnl m4_require([_LT_CHECK_MAGIC_METHOD])dnl m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl m4_require([_LT_CMD_OLD_ARCHIVE])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_WITH_SYSROOT])dnl m4_require([_LT_CMD_TRUNCATE])dnl _LT_CONFIG_LIBTOOL_INIT([ # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi ]) if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi _LT_CHECK_OBJDIR m4_require([_LT_TAG_COMPILER])dnl case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a '.a' archive for static linking (except MSVC and # ICC, which need '.lib'). libext=a with_gnu_ld=$lt_cv_prog_gnu_ld old_CC=$CC old_CFLAGS=$CFLAGS # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o _LT_CC_BASENAME([$compiler]) # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then _LT_PATH_MAGIC fi ;; esac # Use C for the default configuration in the libtool script LT_SUPPORTED_TAG([CC]) _LT_LANG_C_CONFIG _LT_LANG_DEFAULT_CONFIG _LT_CONFIG_COMMANDS ])# _LT_SETUP # _LT_PREPARE_SED_QUOTE_VARS # -------------------------- # Define a few sed substitution that help us do robust quoting. m4_defun([_LT_PREPARE_SED_QUOTE_VARS], [# Backslashify metacharacters that are still active within # double-quoted strings. sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\([["`\\]]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ]) # _LT_PROG_LTMAIN # --------------- # Note that this code is called both from 'configure', and 'config.status' # now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, # 'config.status' has no value for ac_aux_dir unless we are using Automake, # so we pass a copy along to make sure it has a sensible value anyway. m4_defun([_LT_PROG_LTMAIN], [m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl _LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) ltmain=$ac_aux_dir/ltmain.sh ])# _LT_PROG_LTMAIN ## ------------------------------------- ## ## Accumulate code for creating libtool. ## ## ------------------------------------- ## # So that we can recreate a full libtool script including additional # tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS # in macros and then make a single call at the end using the 'libtool' # label. # _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) # ---------------------------------------- # Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL_INIT], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_INIT], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_INIT]) # _LT_CONFIG_LIBTOOL([COMMANDS]) # ------------------------------ # Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) # _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) # ----------------------------------------------------- m4_defun([_LT_CONFIG_SAVE_COMMANDS], [_LT_CONFIG_LIBTOOL([$1]) _LT_CONFIG_LIBTOOL_INIT([$2]) ]) # _LT_FORMAT_COMMENT([COMMENT]) # ----------------------------- # Add leading comment marks to the start of each line, and a trailing # full-stop to the whole comment if one is not present already. m4_define([_LT_FORMAT_COMMENT], [m4_ifval([$1], [ m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) )]) ## ------------------------ ## ## FIXME: Eliminate VARNAME ## ## ------------------------ ## # _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) # ------------------------------------------------------------------- # CONFIGNAME is the name given to the value in the libtool script. # VARNAME is the (base) name used in the configure script. # VALUE may be 0, 1 or 2 for a computed quote escaped value based on # VARNAME. Any other value will be used directly. m4_define([_LT_DECL], [lt_if_append_uniq([lt_decl_varnames], [$2], [, ], [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], [m4_ifval([$1], [$1], [$2])]) lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) m4_ifval([$4], [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) lt_dict_add_subkey([lt_decl_dict], [$2], [tagged?], [m4_ifval([$5], [yes], [no])])]) ]) # _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) # -------------------------------------------------------- m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) # lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_tag_varnames], [_lt_decl_filter([tagged?], [yes], $@)]) # _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) # --------------------------------------------------------- m4_define([_lt_decl_filter], [m4_case([$#], [0], [m4_fatal([$0: too few arguments: $#])], [1], [m4_fatal([$0: too few arguments: $#: $1])], [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], [lt_dict_filter([lt_decl_dict], $@)])[]dnl ]) # lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) # -------------------------------------------------- m4_define([lt_decl_quote_varnames], [_lt_decl_filter([value], [1], $@)]) # lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_dquote_varnames], [_lt_decl_filter([value], [2], $@)]) # lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_varnames_tagged], [m4_assert([$# <= 2])dnl _$0(m4_quote(m4_default([$1], [[, ]])), m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) m4_define([_lt_decl_varnames_tagged], [m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) # lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_all_varnames], [_$0(m4_quote(m4_default([$1], [[, ]])), m4_if([$2], [], m4_quote(lt_decl_varnames), m4_quote(m4_shift($@))))[]dnl ]) m4_define([_lt_decl_all_varnames], [lt_join($@, lt_decl_varnames_tagged([$1], lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl ]) # _LT_CONFIG_STATUS_DECLARE([VARNAME]) # ------------------------------------ # Quote a variable value, and forward it to 'config.status' so that its # declaration there will have the same value as in 'configure'. VARNAME # must have a single quote delimited value for this to work. m4_define([_LT_CONFIG_STATUS_DECLARE], [$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) # _LT_CONFIG_STATUS_DECLARATIONS # ------------------------------ # We delimit libtool config variables with single quotes, so when # we write them to config.status, we have to be sure to quote all # embedded single quotes properly. In configure, this macro expands # each variable declared with _LT_DECL (and _LT_TAGDECL) into: # # ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], [m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAGS # ---------------- # Output comment and list of tags supported by the script m4_defun([_LT_LIBTOOL_TAGS], [_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl available_tags='_LT_TAGS'dnl ]) # _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) # ----------------------------------- # Extract the dictionary values for VARNAME (optionally with TAG) and # expand to a commented shell variable setting: # # # Some comment about what VAR is for. # visible_name=$lt_internal_name m4_define([_LT_LIBTOOL_DECLARE], [_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [description])))[]dnl m4_pushdef([_libtool_name], m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), [0], [_libtool_name=[$]$1], [1], [_libtool_name=$lt_[]$1], [2], [_libtool_name=$lt_[]$1], [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl ]) # _LT_LIBTOOL_CONFIG_VARS # ----------------------- # Produce commented declarations of non-tagged libtool config variables # suitable for insertion in the LIBTOOL CONFIG section of the 'libtool' # script. Tagged libtool config variables (even for the LIBTOOL CONFIG # section) are produced by _LT_LIBTOOL_TAG_VARS. m4_defun([_LT_LIBTOOL_CONFIG_VARS], [m4_foreach([_lt_var], m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAG_VARS(TAG) # ------------------------- m4_define([_LT_LIBTOOL_TAG_VARS], [m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) # _LT_TAGVAR(VARNAME, [TAGNAME]) # ------------------------------ m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) # _LT_CONFIG_COMMANDS # ------------------- # Send accumulated output to $CONFIG_STATUS. Thanks to the lists of # variables for single and double quote escaping we saved from calls # to _LT_DECL, we can put quote escaped variables declarations # into 'config.status', and then the shell code to quote escape them in # for loops in 'config.status'. Finally, any additional code accumulated # from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. m4_defun([_LT_CONFIG_COMMANDS], [AC_PROVIDE_IFELSE([LT_OUTPUT], dnl If the libtool generation code has been placed in $CONFIG_LT, dnl instead of duplicating it all over again into config.status, dnl then we will have config.status run $CONFIG_LT later, so it dnl needs to know what name is stored there: [AC_CONFIG_COMMANDS([libtool], [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], dnl If the libtool generation code is destined for config.status, dnl expand the accumulated commands and init code now: [AC_CONFIG_COMMANDS([libtool], [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) ])#_LT_CONFIG_COMMANDS # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], [ # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' _LT_CONFIG_STATUS_DECLARATIONS LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$[]1 _LTECHO_EOF' } # Quote evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_quote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_dquote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done _LT_OUTPUT_LIBTOOL_INIT ]) # _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) # ------------------------------------ # Generate a child script FILE with all initialization necessary to # reuse the environment learned by the parent script, and make the # file executable. If COMMENT is supplied, it is inserted after the # '#!' sequence but before initialization text begins. After this # macro, additional text can be appended to FILE to form the body of # the child script. The macro ends with non-zero status if the # file could not be fully written (such as if the disk is full). m4_ifdef([AS_INIT_GENERATED], [m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], [m4_defun([_LT_GENERATED_FILE_INIT], [m4_require([AS_PREPARE])]dnl [m4_pushdef([AS_MESSAGE_LOG_FD])]dnl [lt_write_fail=0 cat >$1 <<_ASEOF || lt_write_fail=1 #! $SHELL # Generated by $as_me. $2 SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$1 <<\_ASEOF || lt_write_fail=1 AS_SHELL_SANITIZE _AS_PREPARE exec AS_MESSAGE_FD>&1 _ASEOF test 0 = "$lt_write_fail" && chmod +x $1[]dnl m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT # LT_OUTPUT # --------- # This macro allows early generation of the libtool script (before # AC_OUTPUT is called), in case it is used in configure for compilation # tests. AC_DEFUN([LT_OUTPUT], [: ${CONFIG_LT=./config.lt} AC_MSG_NOTICE([creating $CONFIG_LT]) _LT_GENERATED_FILE_INIT(["$CONFIG_LT"], [# Run this file to recreate a libtool stub with the current configuration.]) cat >>"$CONFIG_LT" <<\_LTEOF lt_cl_silent=false exec AS_MESSAGE_LOG_FD>>config.log { echo AS_BOX([Running $as_me.]) } >&AS_MESSAGE_LOG_FD lt_cl_help="\ '$as_me' creates a local libtool stub from the current configuration, for use in further configure time tests before the real libtool is generated. Usage: $[0] [[OPTIONS]] -h, --help print this help, then exit -V, --version print version number, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files Report bugs to ." lt_cl_version="\ m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) configured by $[0], generated by m4_PACKAGE_STRING. Copyright (C) 2024 Free Software Foundation, Inc. This config.lt script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." while test 0 != $[#] do case $[1] in --version | --v* | -V ) echo "$lt_cl_version"; exit 0 ;; --help | --h* | -h ) echo "$lt_cl_help"; exit 0 ;; --debug | --d* | -d ) debug=: ;; --quiet | --q* | --silent | --s* | -q ) lt_cl_silent=: ;; -*) AC_MSG_ERROR([unrecognized option: $[1] Try '$[0] --help' for more information.]) ;; *) AC_MSG_ERROR([unrecognized argument: $[1] Try '$[0] --help' for more information.]) ;; esac shift done if $lt_cl_silent; then exec AS_MESSAGE_FD>/dev/null fi _LTEOF cat >>"$CONFIG_LT" <<_LTEOF _LT_OUTPUT_LIBTOOL_COMMANDS_INIT _LTEOF cat >>"$CONFIG_LT" <<\_LTEOF AC_MSG_NOTICE([creating $ofile]) _LT_OUTPUT_LIBTOOL_COMMANDS AS_EXIT(0) _LTEOF chmod +x "$CONFIG_LT" # configure is writing to config.log, but config.lt does its own redirection, # appending to config.log, which fails on DOS, as config.log is still kept # open by configure. Here we exec the FD to /dev/null, effectively closing # config.log, so it can be properly (re)opened and appended to by config.lt. lt_cl_success=: test yes = "$silent" && lt_config_lt_args="$lt_config_lt_args --quiet" exec AS_MESSAGE_LOG_FD>/dev/null $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false exec AS_MESSAGE_LOG_FD>>config.log $lt_cl_success || AS_EXIT(1) ])# LT_OUTPUT # _LT_CONFIG(TAG) # --------------- # If TAG is the built-in tag, create an initial libtool script with a # default configuration from the untagged config vars. Otherwise add code # to config.status for appending the configuration named by TAG from the # matching tagged config vars. m4_defun([_LT_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_CONFIG_SAVE_COMMANDS([ m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl m4_if(_LT_TAG, [C], [ # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi cfgfile=${ofile}T trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # Generated automatically by $as_me ($PACKAGE) $VERSION # NOTE: Changes made to this file will be lost: look at ltmain.sh. # Provide generalized library-building support services. # Written by Gordon Matzigkeit, 1996 _LT_COPYING _LT_LIBTOOL_TAGS # Configured defaults for sys_lib_dlsearch_path munging. : \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} # ### BEGIN LIBTOOL CONFIG _LT_LIBTOOL_CONFIG_VARS _LT_LIBTOOL_TAG_VARS # ### END LIBTOOL CONFIG _LT_EOF cat <<'_LT_EOF' >> "$cfgfile" # ### BEGIN FUNCTIONS SHARED WITH CONFIGURE _LT_PREPARE_MUNGE_PATH_LIST _LT_PREPARE_CC_BASENAME # ### END FUNCTIONS SHARED WITH CONFIGURE _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac _LT_PROG_LTMAIN # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? $SED '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ], [cat <<_LT_EOF >> "$ofile" dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded dnl in a comment (ie after a #). # ### BEGIN LIBTOOL TAG CONFIG: $1 _LT_LIBTOOL_TAG_VARS(_LT_TAG) # ### END LIBTOOL TAG CONFIG: $1 _LT_EOF ])dnl /m4_if ], [m4_if([$1], [], [ PACKAGE='$PACKAGE' VERSION='$VERSION' RM='$RM' ofile='$ofile'], []) ])dnl /_LT_CONFIG_SAVE_COMMANDS ])# _LT_CONFIG # LT_SUPPORTED_TAG(TAG) # --------------------- # Trace this macro to discover what tags are supported by the libtool # --tag option, using: # autoconf --trace 'LT_SUPPORTED_TAG:$1' AC_DEFUN([LT_SUPPORTED_TAG], []) # C support is built-in for now m4_define([_LT_LANG_C_enabled], []) m4_define([_LT_TAGS], []) # LT_LANG(LANG) # ------------- # Enable libtool support for the given language if not already enabled. AC_DEFUN([LT_LANG], [AC_BEFORE([$0], [LT_OUTPUT])dnl m4_case([$1], [C], [_LT_LANG(C)], [C++], [_LT_LANG(CXX)], [Go], [_LT_LANG(GO)], [Java], [_LT_LANG(GCJ)], [Fortran 77], [_LT_LANG(F77)], [Fortran], [_LT_LANG(FC)], [Windows Resource], [_LT_LANG(RC)], [m4_ifdef([_LT_LANG_]$1[_CONFIG], [_LT_LANG($1)], [m4_fatal([$0: unsupported language: "$1"])])])dnl ])# LT_LANG # _LT_LANG(LANGNAME) # ------------------ m4_defun([_LT_LANG], [m4_ifdef([_LT_LANG_]$1[_enabled], [], [LT_SUPPORTED_TAG([$1])dnl m4_append([_LT_TAGS], [$1 ])dnl m4_define([_LT_LANG_]$1[_enabled], [])dnl _LT_LANG_$1_CONFIG($1)])dnl ])# _LT_LANG m4_ifndef([AC_PROG_GO], [ ############################################################ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_GO. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # ############################################################ m4_defun([AC_PROG_GO], [AC_LANG_PUSH(Go)dnl AC_ARG_VAR([GOC], [Go compiler command])dnl AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl _AC_ARG_VAR_LDFLAGS()dnl AC_CHECK_TOOL(GOC, gccgo) if test -z "$GOC"; then if test -n "$ac_tool_prefix"; then AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) fi fi if test -z "$GOC"; then AC_CHECK_PROG(GOC, gccgo, gccgo, false) fi ])#m4_defun ])#m4_ifndef # _LT_LANG_DEFAULT_CONFIG # ----------------------- m4_defun([_LT_LANG_DEFAULT_CONFIG], [AC_PROVIDE_IFELSE([AC_PROG_CXX], [LT_LANG(CXX)], [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) AC_PROVIDE_IFELSE([AC_PROG_F77], [LT_LANG(F77)], [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) AC_PROVIDE_IFELSE([AC_PROG_FC], [LT_LANG(FC)], [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal dnl pulling things in needlessly. AC_PROVIDE_IFELSE([AC_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([LT_PROG_GCJ], [LT_LANG(GCJ)], [m4_ifdef([AC_PROG_GCJ], [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([A][M_PROG_GCJ], [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([LT_PROG_GCJ], [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) AC_PROVIDE_IFELSE([AC_PROG_GO], [LT_LANG(GO)], [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) AC_PROVIDE_IFELSE([LT_PROG_RC], [LT_LANG(RC)], [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) ])# _LT_LANG_DEFAULT_CONFIG # Obsolete macros: AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_CXX], []) dnl AC_DEFUN([AC_LIBTOOL_F77], []) dnl AC_DEFUN([AC_LIBTOOL_FC], []) dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) dnl AC_DEFUN([AC_LIBTOOL_RC], []) # _LT_TAG_COMPILER # ---------------- m4_defun([_LT_TAG_COMPILER], [AC_REQUIRE([AC_PROG_CC])dnl _LT_DECL([LTCC], [CC], [1], [A C compiler])dnl _LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl _LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl _LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC ])# _LT_TAG_COMPILER # _LT_COMPILER_BOILERPLATE # ------------------------ # Check for compiler boilerplate output or warnings with # the simple compiler test code. m4_defun([_LT_COMPILER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ])# _LT_COMPILER_BOILERPLATE # _LT_LINKER_BOILERPLATE # ---------------------- # Check for linker boilerplate output or warnings with # the simple link test code. m4_defun([_LT_LINKER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ])# _LT_LINKER_BOILERPLATE # _LT_REQUIRED_DARWIN_CHECKS # ------------------------- m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ case $host_os in rhapsody* | darwin*) AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) AC_CHECK_TOOL([LIPO], [lipo], [:]) AC_CHECK_TOOL([OTOOL], [otool], [:]) AC_CHECK_TOOL([OTOOL64], [otool64], [:]) _LT_DECL([], [DSYMUTIL], [1], [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) _LT_DECL([], [NMEDIT], [1], [Tool to change global to local symbols on Mac OS X]) _LT_DECL([], [LIPO], [1], [Tool to manipulate fat objects and archives on Mac OS X]) _LT_DECL([], [OTOOL], [1], [ldd/readelf like tool for Mach-O binaries on Mac OS X]) _LT_DECL([], [OTOOL64], [1], [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], [lt_cv_apple_cc_single_mod=no if test -z "$LT_MULTI_MODULE"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? # If there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&AS_MESSAGE_LOG_FD # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. elif test -f libconftest.dylib && test 0 = "$_lt_result"; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -rf libconftest.dylib* rm -f conftest.* fi]) # Feature test to disable chained fixups since it is not # compatible with '-undefined dynamic_lookup' AC_CACHE_CHECK([for -no_fixup_chains linker flag], [lt_cv_support_no_fixup_chains], [ save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -Wl,-no_fixup_chains" AC_LINK_IFELSE( [AC_LANG_PROGRAM([],[])], lt_cv_support_no_fixup_chains=yes, lt_cv_support_no_fixup_chains=no ) LDFLAGS=$save_LDFLAGS ] ) AC_CACHE_CHECK([for -exported_symbols_list linker flag], [lt_cv_ld_exported_symbols_list], [lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [lt_cv_ld_exported_symbols_list=yes], [lt_cv_ld_exported_symbols_list=no]) LDFLAGS=$save_LDFLAGS ]) AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], [lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD echo "$AR $AR_FLAGS libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD $AR $AR_FLAGS libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD cat > conftest.c << _LT_EOF int main(void) { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&AS_MESSAGE_LOG_FD elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then lt_cv_ld_force_load=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM ]) case $host_os in rhapsody* | darwin1.[[012]]) _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; darwin*) case $MACOSX_DEPLOYMENT_TARGET,$host in 10.[[012]],*|,*powerpc*-darwin[[5-8]]*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; *) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' if test yes = "$lt_cv_support_no_fixup_chains"; then AS_VAR_APPEND([_lt_dar_allow_undefined], [' $wl-no_fixup_chains']) fi ;; esac ;; esac if test yes = "$lt_cv_apple_cc_single_mod"; then _lt_dar_single_mod='$single_module' fi _lt_dar_needs_single_mod=no case $host_os in rhapsody* | darwin1.*) _lt_dar_needs_single_mod=yes ;; darwin*) # When targeting Mac OS X 10.4 (darwin 8) or later, # -single_module is the default and -multi_module is unsupported. # The toolchain on macOS 10.14 (darwin 18) and later cannot # target any OS version that needs -single_module. case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*-darwin[[567]].*|10.[[0-3]],*-darwin[[5-9]].*|10.[[0-3]],*-darwin1[[0-7]].*) _lt_dar_needs_single_mod=yes ;; esac ;; esac if test yes = "$lt_cv_ld_exported_symbols_list"; then _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' fi if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac ]) # _LT_DARWIN_LINKER_FEATURES([TAG]) # --------------------------------- # Checks for linker and compiler features on darwin m4_defun([_LT_DARWIN_LINKER_FEATURES], [ m4_require([_LT_REQUIRED_DARWIN_CHECKS]) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported if test yes = "$lt_cv_ld_force_load"; then _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) else _LT_TAGVAR(whole_archive_flag_spec, $1)='' fi _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=$_lt_dar_allow_undefined case $cc_basename in ifort*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test yes = "$_lt_dar_can_shared"; then output_verbose_link_cmd=func_echo_all _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" _LT_TAGVAR(archive_expsym_cmds, $1)="$SED 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" _LT_TAGVAR(module_expsym_cmds, $1)="$SED -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" m4_if([$1], [CXX], [ if test yes = "$_lt_dar_needs_single_mod" -a yes != "$lt_cv_apple_cc_single_mod"; then _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil" _LT_TAGVAR(archive_expsym_cmds, $1)="$SED 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" fi ],[]) else _LT_TAGVAR(ld_shlibs, $1)=no fi ]) # _LT_SYS_MODULE_PATH_AIX([TAGNAME]) # ---------------------------------- # Links a minimal program and checks the executable # for the system default hardcoded library path. In most cases, # this is /usr/lib:/lib, but when the MPI compilers are used # the location of the communication and MPI libs are included too. # If we don't find anything, use the default library path according # to the aix ld manual. # Store the results from the different compilers for each TAGNAME. # Allow to override them for all tags through lt_cv_aix_libpath. m4_defun([_LT_SYS_MODULE_PATH_AIX], [m4_require([_LT_DECL_SED])dnl if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ lt_aix_libpath_sed='[ /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }]' _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi],[]) if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=/usr/lib:/lib fi ]) aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) fi ])# _LT_SYS_MODULE_PATH_AIX # _LT_SHELL_INIT(ARG) # ------------------- m4_define([_LT_SHELL_INIT], [m4_divert_text([M4SH-INIT], [$1 ])])# _LT_SHELL_INIT # _LT_PROG_ECHO_BACKSLASH # ----------------------- # Find how we can fake an echo command that does not interpret backslash. # In particular, with Autoconf 2.60 or later we add some code to the start # of the generated configure script that will find a shell with a builtin # printf (that we can use as an echo command). m4_defun([_LT_PROG_ECHO_BACKSLASH], [ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO AC_MSG_CHECKING([how to print strings]) # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $[]1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } case $ECHO in printf*) AC_MSG_RESULT([printf]) ;; print*) AC_MSG_RESULT([print -r]) ;; *) AC_MSG_RESULT([cat]) ;; esac m4_ifdef([_AS_DETECT_SUGGESTED], [_AS_DETECT_SUGGESTED([ test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test "X`printf %s $ECHO`" = "X$ECHO" \ || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) _LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) _LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) ])# _LT_PROG_ECHO_BACKSLASH # _LT_WITH_SYSROOT # ---------------- AC_DEFUN([_LT_WITH_SYSROOT], [m4_require([_LT_DECL_SED])dnl AC_MSG_CHECKING([for sysroot]) AC_ARG_WITH([sysroot], [AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@], [Search for dependent libraries within DIR (or the compiler's sysroot if not specified).])], [], [with_sysroot=no]) dnl lt_sysroot will always be passed unquoted. We quote it here dnl in case the user passed a directory name. lt_sysroot= case $with_sysroot in #( yes) if test yes = "$GCC"; then # Trim trailing / since we'll always append absolute paths and we want # to avoid //, if only for less confusing output for the user. lt_sysroot=`$CC --print-sysroot 2>/dev/null | $SED 's:/\+$::'` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | $SED -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) AC_MSG_RESULT([$with_sysroot]) AC_MSG_ERROR([The sysroot must be an absolute path.]) ;; esac AC_MSG_RESULT([${lt_sysroot:-no}]) _LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl [dependent libraries, and where our libraries should be installed.])]) # _LT_ENABLE_LOCK # --------------- m4_defun([_LT_ENABLE_LOCK], [AC_ARG_ENABLE([libtool-lock], [AS_HELP_STRING([--disable-libtool-lock], [avoid locking (might break parallel builds)])]) test no = "$enable_libtool_lock" || enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out what ABI is being produced by ac_compile, and set mode # options accordingly. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `$FILECMD conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE=32 ;; *ELF-64*) HPUX_IA64_MODE=64 ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then if test yes = "$lt_cv_prog_gnu_ld"; then case `$FILECMD conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `$FILECMD conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; mips64*-*linux*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then emul=elf case `$FILECMD conftest.$ac_objext` in *32-bit*) emul="${emul}32" ;; *64-bit*) emul="${emul}64" ;; esac case `$FILECMD conftest.$ac_objext` in *MSB*) emul="${emul}btsmip" ;; *LSB*) emul="${emul}ltsmip" ;; esac case `$FILECMD conftest.$ac_objext` in *N32*) emul="${emul}n32" ;; esac LD="${LD-ld} -m $emul" fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*|x86_64-gnu*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. Note that the listed cases only cover the # situations where additional linker options are needed (such as when # doing 32-bit compilation for a host where ld defaults to 64-bit, or # vice versa); the common cases where no linker options are needed do # not appear in the list. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `$FILECMD conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*|x86_64-gnu*) case `$FILECMD conftest.o` in *x86-64*) LD="${LD-ld} -m elf32_x86_64" ;; *) LD="${LD-ld} -m elf_i386" ;; esac ;; powerpc64le-*linux*) LD="${LD-ld} -m elf32lppclinux" ;; powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*|x86_64-gnu*) LD="${LD-ld} -m elf_x86_64" ;; powerpcle-*linux*) LD="${LD-ld} -m elf64lppc" ;; powerpc-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS=$CFLAGS CFLAGS="$CFLAGS -belf" AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, [AC_LANG_PUSH(C) AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) AC_LANG_POP]) if test yes != "$lt_cv_cc_needs_belf"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS=$SAVE_CFLAGS fi ;; *-*solaris*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `$FILECMD conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-solaris*|x86_64-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then LD=${LD-ld}_sol2 fi ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks=$enable_libtool_lock ])# _LT_ENABLE_LOCK # _LT_PROG_AR # ----------- m4_defun([_LT_PROG_AR], [AC_CHECK_TOOLS(AR, [ar], false) : ${AR=ar} _LT_DECL([], [AR], [1], [The archiver]) # Use ARFLAGS variable as AR's operation code to sync the variable naming with # Automake. If both AR_FLAGS and ARFLAGS are specified, AR_FLAGS should have # higher priority because that's what people were doing historically (setting # ARFLAGS for automake and AR_FLAGS for libtool). FIXME: Make the AR_FLAGS # variable obsoleted/removed. test ${AR_FLAGS+y} || AR_FLAGS=${ARFLAGS-cr} lt_ar_flags=$AR_FLAGS _LT_DECL([], [lt_ar_flags], [0], [Flags to create an archive (by configure)]) # Make AR_FLAGS overridable by 'make ARFLAGS='. Don't try to run-time override # by AR_FLAGS because that was never working and AR_FLAGS is about to die. _LT_DECL([], [AR_FLAGS], [\@S|@{ARFLAGS-"\@S|@lt_ar_flags"}], [Flags to create an archive]) AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], [lt_cv_ar_at_file=no AC_COMPILE_IFELSE([AC_LANG_PROGRAM], [echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' AC_TRY_EVAL([lt_ar_try]) if test 0 -eq "$ac_status"; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a AC_TRY_EVAL([lt_ar_try]) if test 0 -ne "$ac_status"; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a ]) ]) if test no = "$lt_cv_ar_at_file"; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi _LT_DECL([], [archiver_list_spec], [1], [How to feed a file listing to the archiver]) ])# _LT_PROG_AR # _LT_CMD_OLD_ARCHIVE # ------------------- m4_defun([_LT_CMD_OLD_ARCHIVE], [_LT_PROG_AR AC_CHECK_TOOL(STRIP, strip, :) test -z "$STRIP" && STRIP=: _LT_DECL([], [STRIP], [1], [A symbol stripping program]) AC_REQUIRE([AC_PROG_RANLIB]) test -z "$RANLIB" && RANLIB=: _LT_DECL([], [RANLIB], [1], [Commands used to install an old-style archive]) # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac _LT_DECL([], [old_postinstall_cmds], [2]) _LT_DECL([], [old_postuninstall_cmds], [2]) _LT_TAGDECL([], [old_archive_cmds], [2], [Commands used to build an old-style archive]) _LT_DECL([], [lock_old_archive_extraction], [0], [Whether to use a lock for old archive extraction]) ])# _LT_CMD_OLD_ARCHIVE # _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------------------- # Check whether the given compiler option works AC_DEFUN([_LT_COMPILER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$3" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi fi $RM conftest* ]) if test yes = "[$]$2"; then m4_if([$5], , :, [$5]) else m4_if([$6], , :, [$6]) fi ])# _LT_COMPILER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) # _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------- # Check whether the given linker option works AC_DEFUN([_LT_LINKER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $3" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&AS_MESSAGE_LOG_FD $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi else $2=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS ]) if test yes = "[$]$2"; then m4_if([$4], , :, [$4]) else m4_if([$5], , :, [$5]) fi ])# _LT_LINKER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) # LT_CMD_MAX_LEN #--------------- AC_DEFUN([LT_CMD_MAX_LEN], [AC_REQUIRE([AC_CANONICAL_HOST])dnl # find the maximum length of command line arguments AC_MSG_CHECKING([the maximum length of command line arguments]) AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl i=0 teststring=ABCD case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu* | ironclad*) # Under GNU Hurd and Ironclad, this test is not required because there # is no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | windows* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; darwin* | dragonfly* | freebsd* | midnightbsd* | netbsd* | openbsd*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | $SED 's/.*[[ ]]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len" && \ test undefined != "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test X`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test 17 != "$i" # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac ]) if test -n "$lt_cv_sys_max_cmd_len"; then AC_MSG_RESULT($lt_cv_sys_max_cmd_len) else AC_MSG_RESULT(none) fi max_cmd_len=$lt_cv_sys_max_cmd_len _LT_DECL([], [max_cmd_len], [0], [What is the maximum length of a command?]) ])# LT_CMD_MAX_LEN # Old name: AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) # _LT_HEADER_DLFCN # ---------------- m4_defun([_LT_HEADER_DLFCN], [AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl ])# _LT_HEADER_DLFCN # _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, # ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) # ---------------------------------------------------------------- m4_defun([_LT_TRY_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test yes = "$cross_compiling"; then : [$4] else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF [#line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord (void) __attribute__((visibility("default"))); #endif int fnord (void) { return 42; } int main (void) { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; }] _LT_EOF if AC_TRY_EVAL(ac_link) && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) $1 ;; x$lt_dlneed_uscore) $2 ;; x$lt_dlunknown|x*) $3 ;; esac else : # compilation failed $3 fi fi rm -fr conftest* ])# _LT_TRY_DLOPEN_SELF # LT_SYS_DLOPEN_SELF # ------------------ AC_DEFUN([LT_SYS_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test yes != "$enable_dlopen"; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen=load_add_on lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | windows* | pw32* | cegcc*) lt_cv_dlopen=LoadLibrary lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen=dlopen lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl],[ lt_cv_dlopen=dyld lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ]) ;; tpf*) # Don't try to run any link tests for TPF. We know it's impossible # because TPF is a cross-compiler, and we know how we open DSOs. lt_cv_dlopen=dlopen lt_cv_dlopen_libs= lt_cv_dlopen_self=no ;; *) AC_CHECK_FUNC([shl_load], [lt_cv_dlopen=shl_load], [AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld], [AC_CHECK_FUNC([dlopen], [lt_cv_dlopen=dlopen], [AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld]) ]) ]) ]) ]) ]) ;; esac if test no = "$lt_cv_dlopen"; then enable_dlopen=no else enable_dlopen=yes fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS=$CPPFLAGS test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS=$LDFLAGS wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS=$LIBS LIBS="$lt_cv_dlopen_libs $LIBS" AC_CACHE_CHECK([whether a program can dlopen itself], lt_cv_dlopen_self, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) ]) if test yes = "$lt_cv_dlopen_self"; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" AC_CACHE_CHECK([whether a statically linked program can dlopen itself], lt_cv_dlopen_self_static, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) ]) fi CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi _LT_DECL([dlopen_support], [enable_dlopen], [0], [Whether dlopen is supported]) _LT_DECL([dlopen_self], [enable_dlopen_self], [0], [Whether dlopen of programs is supported]) _LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], [Whether dlopen of statically linked programs is supported]) ])# LT_SYS_DLOPEN_SELF # Old name: AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) # _LT_COMPILER_C_O([TAGNAME]) # --------------------------- # Check to see if options -c and -o are simultaneously supported by compiler. # This macro does not hard code the compiler like AC_PROG_CC_C_O. m4_defun([_LT_COMPILER_C_O], [m4_require([_LT_DECL_SED])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes fi fi chmod u+w . 2>&AS_MESSAGE_LOG_FD $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* ]) _LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], [Does compiler simultaneously support -c and -o options?]) ])# _LT_COMPILER_C_O # _LT_COMPILER_FILE_LOCKS([TAGNAME]) # ---------------------------------- # Check to see if we can do hard links to lock some files if needed m4_defun([_LT_COMPILER_FILE_LOCKS], [m4_require([_LT_ENABLE_LOCK])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_COMPILER_C_O([$1]) hard_links=nottested if test no = "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" && test no != "$need_locks"; then # do not overwrite the value of need_locks provided by the user AC_MSG_CHECKING([if we can lock with hard links]) hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no AC_MSG_RESULT([$hard_links]) if test no = "$hard_links"; then AC_MSG_WARN(['$CC' does not support '-c -o', so 'make -j' may be unsafe]) need_locks=warn fi else need_locks=no fi _LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) ])# _LT_COMPILER_FILE_LOCKS # _LT_CHECK_OBJDIR # ---------------- m4_defun([_LT_CHECK_OBJDIR], [AC_CACHE_CHECK([for objdir], [lt_cv_objdir], [rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null]) objdir=$lt_cv_objdir _LT_DECL([], [objdir], [0], [The name of the directory that contains temporary libtool files])dnl m4_pattern_allow([LT_OBJDIR])dnl AC_DEFINE_UNQUOTED([LT_OBJDIR], "$lt_cv_objdir/", [Define to the sub-directory where libtool stores uninstalled libraries.]) ])# _LT_CHECK_OBJDIR # _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) # -------------------------------------- # Check hardcoding attributes. m4_defun([_LT_LINKER_HARDCODE_LIBPATH], [AC_MSG_CHECKING([how to hardcode library paths into programs]) _LT_TAGVAR(hardcode_action, $1)= if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || test -n "$_LT_TAGVAR(runpath_var, $1)" || test yes = "$_LT_TAGVAR(hardcode_automatic, $1)"; then # We can hardcode non-existent directories. if test no != "$_LT_TAGVAR(hardcode_direct, $1)" && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" && test no != "$_LT_TAGVAR(hardcode_minus_L, $1)"; then # Linking always hardcodes the temporary library directory. _LT_TAGVAR(hardcode_action, $1)=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. _LT_TAGVAR(hardcode_action, $1)=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. _LT_TAGVAR(hardcode_action, $1)=unsupported fi AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) if test relink = "$_LT_TAGVAR(hardcode_action, $1)" || test yes = "$_LT_TAGVAR(inherit_rpath, $1)"; then # Fast installation is not supported enable_fast_install=no elif test yes = "$shlibpath_overrides_runpath" || test no = "$enable_shared"; then # Fast installation is not necessary enable_fast_install=needless fi _LT_TAGDECL([], [hardcode_action], [0], [How to hardcode a shared library path into an executable]) ])# _LT_LINKER_HARDCODE_LIBPATH # _LT_CMD_STRIPLIB # ---------------- m4_defun([_LT_CMD_STRIPLIB], [m4_require([_LT_DECL_EGREP]) striplib= old_striplib= AC_MSG_CHECKING([whether stripping libraries is possible]) if test -z "$STRIP"; then AC_MSG_RESULT([no]) else if $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then old_striplib="$STRIP --strip-debug" striplib="$STRIP --strip-unneeded" AC_MSG_RESULT([yes]) else case $host_os in darwin*) # FIXME - insert some real tests, host_os isn't really good enough striplib="$STRIP -x" old_striplib="$STRIP -S" AC_MSG_RESULT([yes]) ;; freebsd*) if $STRIP -V 2>&1 | $GREP "elftoolchain" >/dev/null; then old_striplib="$STRIP --strip-debug" striplib="$STRIP --strip-unneeded" AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi ;; *) AC_MSG_RESULT([no]) ;; esac fi fi _LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) _LT_DECL([], [striplib], [1]) ])# _LT_CMD_STRIPLIB # _LT_PREPARE_MUNGE_PATH_LIST # --------------------------- # Make sure func_munge_path_list() is defined correctly. m4_defun([_LT_PREPARE_MUNGE_PATH_LIST], [[# func_munge_path_list VARIABLE PATH # ----------------------------------- # VARIABLE is name of variable containing _space_ separated list of # directories to be munged by the contents of PATH, which is string # having a format: # "DIR[:DIR]:" # string "DIR[ DIR]" will be prepended to VARIABLE # ":DIR[:DIR]" # string "DIR[ DIR]" will be appended to VARIABLE # "DIRP[:DIRP]::[DIRA:]DIRA" # string "DIRP[ DIRP]" will be prepended to VARIABLE and string # "DIRA[ DIRA]" will be appended to VARIABLE # "DIR[:DIR]" # VARIABLE will be replaced by "DIR[ DIR]" func_munge_path_list () { case x@S|@2 in x) ;; *:) eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'` \@S|@@S|@1\" ;; x:*) eval @S|@1=\"\@S|@@S|@1 `$ECHO @S|@2 | $SED 's/:/ /g'`\" ;; *::*) eval @S|@1=\"\@S|@@S|@1\ `$ECHO @S|@2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" eval @S|@1=\"`$ECHO @S|@2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \@S|@@S|@1\" ;; *) eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'`\" ;; esac } ]])# _LT_PREPARE_PATH_LIST # _LT_SYS_DYNAMIC_LINKER([TAG]) # ----------------------------- # PORTME Fill in your ld.so characteristics m4_defun([_LT_SYS_DYNAMIC_LINKER], [AC_REQUIRE([AC_CANONICAL_HOST])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_OBJDUMP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl m4_require([_LT_PREPARE_MUNGE_PATH_LIST])dnl AC_MSG_CHECKING([dynamic linker characteristics]) m4_if([$1], [], [ if test yes = "$GCC"; then case $host_os in darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; *) lt_awk_arg='/^libraries:/' ;; esac case $host_os in mingw* | windows* | cegcc*) lt_sed_strip_eq='s|=\([[A-Za-z]]:\)|\1|g' ;; *) lt_sed_strip_eq='s|=/|/|g' ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary... lt_tmp_lt_search_path_spec= lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` # ...but if some path component already ends with the multilib dir we assume # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). case "$lt_multi_os_dir; $lt_search_path_spec " in "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) lt_multi_os_dir= ;; esac for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" elif test -n "$lt_multi_os_dir"; then test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS = " "; FS = "/|\n";} { lt_foo = ""; lt_count = 0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo = "/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[[lt_foo]]++; } if (lt_freq[[lt_foo]] == 1) { print lt_foo; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | windows* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's|/\([[A-Za-z]]:\)|\1|g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi]) library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=.so postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown AC_ARG_VAR([LT_SYS_LIBRARY_PATH], [User-defined run-time library search path.]) case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='$libname$release$shared_ext$major' ;; aix[[4-9]]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test ia64 = "$host_cpu"; then # AIX 5 supports IA64 library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line '#! .'. This would cause the generated library to # depend on '.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[[01]] | aix4.[[01]].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # Using Import Files as archive members, it is possible to support # filename-based versioning of shared library archives on AIX. While # this would work for both with and without runtime linking, it will # prevent static linking of such archives. So we do filename-based # shared library versioning with .so extension only, which is used # when both runtime linking and shared linking is enabled. # Unfortunately, runtime linking may impact performance, so we do # not want this to be the default eventually. Also, we use the # versioned .so libs for executables only if there is the -brtl # linker flag in LDFLAGS as well, or --enable-aix-soname=svr4 only. # To allow for filename-based versioning support, we need to create # libNAME.so.V as an archive file, containing: # *) an Import File, referring to the versioned filename of the # archive as well as the shared archive member, telling the # bitwidth (32 or 64) of that shared object, and providing the # list of exported symbols of that shared object, eventually # decorated with the 'weak' keyword # *) the shared object with the F_LOADONLY flag set, to really avoid # it being seen by the linker. # At run time we better use the real file rather than another symlink, # but for link time we create the symlink libNAME.so -> libNAME.so.V case $with_aix_soname,$aix_use_runtimelinking in # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. aix,yes) # traditional libtool dynamic_linker='AIX unversionable lib.so' # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; aix,no) # traditional AIX only dynamic_linker='AIX lib.a[(]lib.so.V[)]' # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' ;; svr4,*) # full svr4 only dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)]" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,yes) # both, prefer svr4 dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)], lib.a[(]lib.so.V[)]" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # unpreferred sharedlib libNAME.a needs extra handling postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,no) # both, prefer aix dynamic_linker="AIX lib.a[(]lib.so.V[)], lib.so.V[(]$shared_archive_member_spec.o[)]" library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' ;; esac shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='$libname$shared_ext' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[[45]]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | windows* | pw32* | cegcc*) version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds # If user builds GCC with multilib enabled, # it should just install on $(libdir) # not on $(libdir)/../bin or 32 bits dlls would override 64 bit ones. if test xyes = x"$multilib"; then postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ $install_prog $dir/$dlname $destdir/$dlname~ chmod a+x $destdir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib $destdir/$dlname'\'' || exit \$?; fi' else postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' fi postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo $libname | $SED -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) ;; mingw* | windows* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo $libname | $SED -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl* | *,icl*) # Native MSVC or ICC libname_spec='$name' soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' library_names_spec='$libname.dll.lib' case $build_os in mingw* | windows*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec=$LIB if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC and ICC wrapper library_names_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' soname_spec='$libname$release$major$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly* | midnightbsd*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[[23]].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' need_version=yes ;; esac case $host_cpu in powerpc64) # On FreeBSD bi-arch platforms, a different variable is used for 32-bit # binaries. See . AC_COMPILE_IFELSE( [AC_LANG_SOURCE( [[int test_pointer_size[sizeof (void *) - 5]; ]])], [shlibpath_var=LD_LIBRARY_PATH], [shlibpath_var=LD_32_LIBRARY_PATH]) ;; *) shlibpath_var=LD_LIBRARY_PATH ;; esac case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[[01]]* | freebsdelf3.[[01]]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec='/boot/system/non-packaged/develop/lib /boot/system/develop/lib' sys_lib_dlsearch_path_spec='/boot/home/config/non-packaged/lib /boot/home/config/lib /boot/system/non-packaged/lib /boot/system/lib' hardcode_into_libs=no ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' if test 32 = "$HPUX_IA64_MODE"; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" sys_lib_dlsearch_path_spec=/usr/lib/hpux32 else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" sys_lib_dlsearch_path_spec=/usr/lib/hpux64 fi ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[[3-9]]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test yes = "$lt_cv_prog_gnu_ld"; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; linux*android*) version_type=none # Android doesn't support versioned libraries. need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext $libname$shared_ext' soname_spec='$libname$release$shared_ext' finish_cmds= shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes dynamic_linker='Android linker' # -rpath works at least for libraries that are not overridden by # libraries installed in system locations. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], [lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], [lt_cv_shlibpath_overrides_runpath=yes])]) LDFLAGS=$save_LDFLAGS libdir=$save_libdir ]) shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Add ABI-specific directories to the system library path. sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" # Ideally, we could use ldconfig to report *all* directories which are # searched for libraries, however this is still not possible. Aside from not # being certain /sbin/ldconfig is available, command # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, # even though it is searched at run-time. Try to do the best guess by # appending ld.so.conf contents (and includes) to the search path. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; *-mlibc) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='mlibc ld.so' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec=/usr/lib need_lib_prefix=no if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then need_version=no else need_version=yes fi library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no # OS/2 can only load a DLL with a base name of 8 characters or less. soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; v=$($ECHO $release$versuffix | tr -d .-); n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); $ECHO $n$v`$shared_ext' library_names_spec='${libname}_dll.$libext' dynamic_linker='OS/2 ld.exe' shlibpath_var=BEGINLIBPATH sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; rdos*) dynamic_linker=no ;; serenity*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no dynamic_linker='SerenityOS LibELF' ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test yes = "$with_gnu_ld"; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec; then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' soname_spec='$libname$shared_ext.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=sco need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test yes = "$with_gnu_ld"; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; emscripten*) version_type=none need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext' soname_spec='$libname$release$shared_ext' finish_cmds= dynamic_linker="Emscripten linker" _LT_COMPILER_PIC($1)='-fPIC' _LT_TAGVAR(archive_cmds, $1)='$CC -sSIDE_MODULE=2 -shared $libobjs $deplibs $compiler_flags -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -sSIDE_MODULE=2 -shared $libobjs $deplibs $compiler_flags -o $lib -s EXPORTED_FUNCTIONS=@$output_objdir/$soname.expsym' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(no_undefined_flag, $1)= ;; *) dynamic_linker=no ;; esac AC_MSG_RESULT([$dynamic_linker]) test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test yes = "$GCC"; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec fi if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec fi # remember unaugmented sys_lib_dlsearch_path content for libtool script decls... configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec # ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" # to be used as default LT_SYS_LIBRARY_PATH value in generated libtool configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH _LT_DECL([], [variables_saved_for_relink], [1], [Variables whose values should be saved in libtool wrapper scripts and restored at link time]) _LT_DECL([], [need_lib_prefix], [0], [Do we need the "lib" prefix for modules?]) _LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) _LT_DECL([], [version_type], [0], [Library versioning type]) _LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) _LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) _LT_DECL([], [shlibpath_overrides_runpath], [0], [Is shlibpath searched before the hard-coded library search path?]) _LT_DECL([], [libname_spec], [1], [Format of library name prefix]) _LT_DECL([], [library_names_spec], [1], [[List of archive names. First name is the real one, the rest are links. The last name is the one that the linker finds with -lNAME]]) _LT_DECL([], [soname_spec], [1], [[The coded name of the library, if different from the real name]]) _LT_DECL([], [install_override_mode], [1], [Permission mode override for installation of shared libraries]) _LT_DECL([], [postinstall_cmds], [2], [Command to use after installation of a shared archive]) _LT_DECL([], [postuninstall_cmds], [2], [Command to use after uninstallation of a shared archive]) _LT_DECL([], [finish_cmds], [2], [Commands used to finish a libtool library installation in a directory]) _LT_DECL([], [finish_eval], [1], [[As "finish_cmds", except a single script fragment to be evaled but not shown]]) _LT_DECL([], [hardcode_into_libs], [0], [Whether we should hardcode library paths into libraries]) _LT_DECL([], [sys_lib_search_path_spec], [2], [Compile-time system search path for libraries]) _LT_DECL([sys_lib_dlsearch_path_spec], [configure_time_dlsearch_path], [2], [Detected run-time system search path for libraries]) _LT_DECL([], [configure_time_lt_sys_library_path], [2], [Explicit LT_SYS_LIBRARY_PATH set during ./configure time]) ])# _LT_SYS_DYNAMIC_LINKER # _LT_PATH_TOOL_PREFIX(TOOL) # -------------------------- # find a file program that can recognize shared library AC_DEFUN([_LT_PATH_TOOL_PREFIX], [m4_require([_LT_DECL_EGREP])dnl AC_MSG_CHECKING([for $1]) AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, [case $MAGIC_CMD in [[\\/*] | ?:[\\/]*]) lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD=$MAGIC_CMD lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR dnl $ac_dummy forces splitting on constant user-supplied paths. dnl POSIX.2 word splitting is done only on the output of word expansions, dnl not every word. This closes a longstanding sh security hole. ac_dummy="m4_if([$2], , $PATH, [$2])" for ac_dir in $ac_dummy; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$1"; then lt_cv_path_MAGIC_CMD=$ac_dir/"$1" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD=$lt_cv_path_MAGIC_CMD if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS=$lt_save_ifs MAGIC_CMD=$lt_save_MAGIC_CMD ;; esac]) MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then AC_MSG_RESULT($MAGIC_CMD) else AC_MSG_RESULT(no) fi _LT_DECL([], [MAGIC_CMD], [0], [Used to examine libraries when file_magic_cmd begins with "file"])dnl ])# _LT_PATH_TOOL_PREFIX # Old name: AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) # _LT_PATH_MAGIC # -------------- # find a file program that can recognize a shared library m4_defun([_LT_PATH_MAGIC], [_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) else MAGIC_CMD=: fi fi ])# _LT_PATH_MAGIC # LT_PATH_LD # ---------- # find the pathname to the GNU or non-GNU linker AC_DEFUN([LT_PATH_LD], [AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_PROG_ECHO_BACKSLASH])dnl AC_ARG_WITH([gnu-ld], [AS_HELP_STRING([--with-gnu-ld], [assume the C compiler uses GNU ld @<:@default=no@:>@])], [test no = "$withval" || with_gnu_ld=yes], [with_gnu_ld=no])dnl ac_prog=ld if test yes = "$GCC"; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by $CC]) case $host in *-*-mingw* | *-*-windows*) # gcc leaves a trailing carriage return, which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]]* | ?:[[\\/]]*) re_direlt='/[[^/]][[^/]]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD=$ac_prog ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test yes = "$with_gnu_ld"; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(lt_cv_path_LD, [if test -z "$LD"; then lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD=$ac_dir/$ac_prog # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &1 conftest.i cat conftest.i conftest.i >conftest2.i : ${lt_DD:=$DD} AC_PATH_PROGS_FEATURE_CHECK([lt_DD], [dd], [if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: fi]) rm -f conftest.i conftest2.i conftest.out]) ])# _LT_PATH_DD # _LT_CMD_TRUNCATE # ---------------- # find command to truncate a binary pipe m4_defun([_LT_CMD_TRUNCATE], [m4_require([_LT_PATH_DD]) AC_CACHE_CHECK([how to truncate binary pipes], [lt_cv_truncate_bin], [printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i lt_cv_truncate_bin= if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" fi rm -f conftest.i conftest2.i conftest.out test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q"]) _LT_DECL([lt_truncate_bin], [lt_cv_truncate_bin], [1], [Command to truncate a binary pipe]) ])# _LT_CMD_TRUNCATE # _LT_CHECK_MAGIC_METHOD # ---------------------- # how to check for library dependencies # -- PORTME fill in with the dynamic library characteristics m4_defun([_LT_CHECK_MAGIC_METHOD], [m4_require([_LT_DECL_EGREP]) m4_require([_LT_DECL_OBJDUMP]) AC_CACHE_CHECK([how to recognize dependent libraries], lt_cv_deplibs_check_method, [lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # 'unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'file_magic [[regex]]' -- check by looking for files in library path # that responds to the $file_magic_cmd with a given extended regex. # If you have 'file' or equivalent on your system and you're not sure # whether 'pass_all' will *always* work, you probably want this one. case $host_os in aix[[4-9]]*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[[45]]*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='$FILECMD -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | windows* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. if ( file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64|pe-aarch64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly* | midnightbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=$FILECMD lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=$FILECMD case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[[3-9]]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) lt_cv_deplibs_check_method=pass_all ;; *-mlibc) lt_cv_deplibs_check_method=pass_all ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=$FILECMD lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; serenity*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; os2*) lt_cv_deplibs_check_method=pass_all ;; esac ]) file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | windows* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` fi ;; esac fi file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown _LT_DECL([], [deplibs_check_method], [1], [Method to check whether dependent libraries are shared objects]) _LT_DECL([], [file_magic_cmd], [1], [Command to use when deplibs_check_method = "file_magic"]) _LT_DECL([], [file_magic_glob], [1], [How to find potential files when deplibs_check_method = "file_magic"]) _LT_DECL([], [want_nocaseglob], [1], [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) ])# _LT_CHECK_MAGIC_METHOD # LT_PATH_NM # ---------- # find the pathname to a BSD- or MS-compatible name lister AC_DEFUN([LT_PATH_NM], [AC_REQUIRE([AC_PROG_CC])dnl AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, [if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM=$NM else lt_nm_to_check=${ac_tool_prefix}nm if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. tmp_nm=$ac_dir/$lt_tmp_nm if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then # Check to see if the nm accepts a BSD-compat flag. # Adding the 'sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty case $build_os in mingw* | windows*) lt_bad_file=conftest.nm/nofile ;; *) lt_bad_file=/dev/null ;; esac case `"$tmp_nm" -B $lt_bad_file 2>&1 | $SED '1q'` in *$lt_bad_file* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break 2 ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | $SED '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break 2 ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS=$lt_save_ifs done : ${lt_cv_path_NM=no} fi]) if test no != "$lt_cv_path_NM"; then NM=$lt_cv_path_NM else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) case `$DUMPBIN -symbols -headers /dev/null 2>&1 | $SED '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols -headers" ;; *) DUMPBIN=: ;; esac fi AC_SUBST([DUMPBIN]) if test : != "$DUMPBIN"; then NM=$DUMPBIN fi fi test -z "$NM" && NM=nm AC_SUBST([NM]) _LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], [lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) cat conftest.out >&AS_MESSAGE_LOG_FD if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest*]) ])# LT_PATH_NM # Old names: AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_PROG_NM], []) dnl AC_DEFUN([AC_PROG_NM], []) # _LT_CHECK_SHAREDLIB_FROM_LINKLIB # -------------------------------- # how to determine the name of the shared library # associated with a specific link library. # -- PORTME fill in with the dynamic library characteristics m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], [m4_require([_LT_DECL_EGREP]) m4_require([_LT_DECL_OBJDUMP]) m4_require([_LT_DECL_DLLTOOL]) AC_CACHE_CHECK([how to associate runtime and link libraries], lt_cv_sharedlib_from_linklib_cmd, [lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | windows* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh; # decide which one to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd=$ECHO ;; esac ]) sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO _LT_DECL([], [sharedlib_from_linklib_cmd], [1], [Command to associate shared and link libraries]) ])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB # _LT_PATH_MANIFEST_TOOL # ---------------------- # locate the manifest tool m4_defun([_LT_PATH_MANIFEST_TOOL], [AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_manifest_tool], [lt_cv_path_manifest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&AS_MESSAGE_LOG_FD if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_manifest_tool=yes fi rm -f conftest*]) if test yes != "$lt_cv_path_manifest_tool"; then MANIFEST_TOOL=: fi _LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl ])# _LT_PATH_MANIFEST_TOOL # _LT_DLL_DEF_P([FILE]) # --------------------- # True iff FILE is a Windows DLL '.def' file. # Keep in sync with func_dll_def_p in the libtool script AC_DEFUN([_LT_DLL_DEF_P], [dnl test DEF = "`$SED -n dnl -e '\''s/^[[ ]]*//'\'' dnl Strip leading whitespace -e '\''/^\(;.*\)*$/d'\'' dnl Delete empty lines and comments -e '\''s/^\(EXPORTS\|LIBRARY\)\([[ ]].*\)*$/DEF/p'\'' dnl -e q dnl Only consider the first "real" line $1`" dnl ])# _LT_DLL_DEF_P # LT_LIB_M # -------- # check for math library AC_DEFUN([LT_LIB_M], [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case $host in *-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-mingw* | *-*-pw32* | *-*-darwin*) # These system don't have libm, or don't need it ;; *-ncr-sysv4.3*) AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM=-lmw) AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") ;; *) AC_CHECK_LIB(m, cos, LIBM=-lm) ;; esac AC_SUBST([LIBM]) ])# LT_LIB_M # Old name: AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_CHECK_LIBM], []) # _LT_COMPILER_NO_RTTI([TAGNAME]) # ------------------------------- m4_defun([_LT_COMPILER_NO_RTTI], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= if test yes = "$GCC"; then case $cc_basename in nvcc*) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; *) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; esac _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], lt_cv_prog_compiler_rtti_exceptions, [-fno-rtti -fno-exceptions], [], [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) fi _LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], [Compiler flag to turn off builtin functions]) ])# _LT_COMPILER_NO_RTTI # _LT_CMD_GLOBAL_SYMBOLS # ---------------------- m4_defun([_LT_CMD_GLOBAL_SYMBOLS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([LT_PATH_NM])dnl AC_REQUIRE([LT_PATH_LD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_TAG_COMPILER])dnl # Check for command to grab the raw symbol name followed by C symbol from nm. AC_MSG_CHECKING([command to parse $NM output from $compiler object]) AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [ # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[[BCDEGRST]]' # Regexp to match symbols that can be accessed directly from C. sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[[BCDT]]' ;; cygwin* | mingw* | windows* | pw32* | cegcc*) symcode='[[ABCDGISTW]]' ;; hpux*) if test ia64 = "$host_cpu"; then symcode='[[ABCDEGRST]]' fi ;; irix* | nonstopux*) symcode='[[BCDEGRST]]' ;; osf*) symcode='[[BCDEGQRST]]' ;; solaris*) symcode='[[BCDRT]]' ;; sco3.2v5*) symcode='[[DT]]' ;; sysv4.2uw2*) symcode='[[DT]]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[[ABDT]]' ;; sysv4) symcode='[[DFNSTU]]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[[ABCDGIRSTW]]' ;; esac if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Gets list of data symbols to import. lt_cv_sys_global_symbol_to_import="$SED -n -e 's/^I .* \(.*\)$/\1/p'" # Adjust the below global symbol transforms to fixup imported variables. lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" lt_c_name_lib_hook="\ -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" else # Disable hooks by default. lt_cv_sys_global_symbol_to_import= lt_cdecl_hook= lt_c_name_hook= lt_c_name_lib_hook= fi # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="$SED -n"\ $lt_cdecl_hook\ " -e 's/^T .* \(.*\)$/extern int \1();/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="$SED -n"\ $lt_c_name_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" # Transform an extracted symbol line into symbol name with lib prefix and # symbol address. lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="$SED -n"\ $lt_c_name_lib_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw* | windows*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function, # D for any global variable and I for any imported variable. # Also find C++ and __fastcall symbols from MSVC++ or ICC, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK ['"\ " {last_section=section; section=\$ 3};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ " /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ " /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ " {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ " s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx]" else lt_cv_sys_global_symbol_pipe="$SED -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | $SED '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(void){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if AC_TRY_EVAL(ac_compile); then # Now try to grab the symbols. nlist=conftest.nm $ECHO "$as_me:$LINENO: $NM conftest.$ac_objext | $lt_cv_sys_global_symbol_pipe > $nlist" >&AS_MESSAGE_LOG_FD if eval "$NM" conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist 2>&AS_MESSAGE_LOG_FD && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE /* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT@&t@_DLSYM_CONST #elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT@&t@_DLSYM_CONST #else # define LT@&t@_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT@&t@_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[[]] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS=conftstm.$ac_objext CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" if AC_TRY_EVAL(ac_link) && test -s conftest$ac_exeext; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD fi else echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test yes = "$pipe_works"; then break else lt_cv_sys_global_symbol_pipe= fi done ]) if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then AC_MSG_RESULT(failed) else AC_MSG_RESULT(ok) fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then nm_file_list_spec='@' fi _LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], [Take the output of nm and produce a listing of raw symbols and C names]) _LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], [Transform the output of nm in a proper C declaration]) _LT_DECL([global_symbol_to_import], [lt_cv_sys_global_symbol_to_import], [1], [Transform the output of nm into a list of symbols to manually relocate]) _LT_DECL([global_symbol_to_c_name_address], [lt_cv_sys_global_symbol_to_c_name_address], [1], [Transform the output of nm in a C name address pair]) _LT_DECL([global_symbol_to_c_name_address_lib_prefix], [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], [Transform the output of nm in a C name address pair when lib prefix is needed]) _LT_DECL([nm_interface], [lt_cv_nm_interface], [1], [The name lister interface]) _LT_DECL([], [nm_file_list_spec], [1], [Specify filename containing input files for $NM]) ]) # _LT_CMD_GLOBAL_SYMBOLS # _LT_COMPILER_PIC([TAGNAME]) # --------------------------- m4_defun([_LT_COMPILER_PIC], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_wl, $1)= _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)= m4_if([$1], [CXX], [ # C++ specific cases for pic, static, wl, etc. if test yes = "$GXX"; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | windows* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) case $host_os in os2*) _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. _LT_TAGVAR(lt_prog_compiler_static, $1)= ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac else case $host_os in aix[[4-9]]*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; mingw* | windows* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; dgux*) case $cc_basename in ec++*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; ghcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; freebsd* | dragonfly* | midnightbsd*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' if test ia64 != "$host_cpu"; then _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' fi ;; aCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # KAI C++ Compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; ecpc* ) # old Intel C++ for x86_64, which still supported -KPIC. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL 8.0, 9.0 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | $SED 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' ;; *) ;; esac ;; netbsd* | netbsdelf*-gnu) ;; *-mlibc) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; cxx*) # Digital/Compaq C++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; *) ;; esac ;; psos*) ;; serenity*) ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; lcc*) # Lucid _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; *) ;; esac ;; vxworks*) ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ], [ if test yes = "$GCC"; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | windows* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) case $host_os in os2*) _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. _LT_TAGVAR(lt_prog_compiler_static, $1)= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' case $cc_basename in nagfor*) # NAG Fortran compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; mingw* | windows* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) case $host_os in os2*) _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' ;; esac ;; hpux9* | hpux10* | hpux11*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC (with -KPIC) is the default. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64, which still supported -KPIC. ecc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; *flang* | ftn | f18* | f95*) # Flang compiler. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # Lahey Fortran 8.1. lf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' ;; nagfor*) # NAG Fortran compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; tcc*) # Fabrice Bellard et al's Tiny C Compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; ccc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All Alpha code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | $SED 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='' ;; *Sun\ F* | *Sun*Fortran*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ;; *Intel*\ [[CF]]*Compiler*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; *Portland\ Group*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; esac ;; newsos6) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *-mlibc) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All OSF/1 code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; rdos*) _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; serenity*) ;; solaris*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; *) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; esac ;; sunos4*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; unicos*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; uts4*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ]) case $host_os in # For platforms that do not support PIC, -DPIC is meaningless: *djgpp*) _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" ;; esac AC_CACHE_CHECK([for $compiler option to produce PIC], [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) _LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) # # Check to make sure the PIC flag actually works. # if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in "" | " "*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; esac], [_LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) fi _LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], [Additional compiler flags for building library objects]) _LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], [How to pass a linker flag through the compiler]) # # Check to make sure the static flag actually works. # wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), $lt_tmp_static_flag, [], [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) _LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], [Compiler flag to prevent dynamic linking]) ])# _LT_COMPILER_PIC # _LT_LINKER_SHLIBS([TAGNAME]) # ---------------------------- # See if the linker supports building shared libraries. m4_defun([_LT_LINKER_SHLIBS], [AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) m4_if([$1], [CXX], [ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] case $host_os in aix[[4-9]]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to GNU nm, but means don't demangle to AIX nm. # Without the "-l" option, or with the "-B" option, AIX nm treats # weak defined symbols like other global defined symbols, whereas # GNU nm marks them as "W". # While the 'weak' keyword is ignored in the Export File, we need # it in the Import File for the 'aix-soname' feature, so we have # to replace the "-B" option with "-P" for AIX nm. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi ;; pw32*) _LT_TAGVAR(export_symbols_cmds, $1)=$ltdll_cmds ;; cygwin* | mingw* | windows* | cegcc*) case $cc_basename in cl* | icl*) _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] ;; esac ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac ], [ runpath_var= _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_cmds, $1)= _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(old_archive_from_new_cmds, $1)= _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= _LT_TAGVAR(thread_safe_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list _LT_TAGVAR(include_expsyms, $1)= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ' (' and ')$', so one must not match beginning or # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', # as well as any symbol that contains 'd'. _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. dnl Note also adjust exclude_expsyms for C++ above. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | windows* | pw32* | cegcc*) # FIXME: the MSVC++ and ICC port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++ or Intel C++ Compiler. if test yes != "$GCC"; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++ or ICC) with_gnu_ld=yes ;; esac _LT_TAGVAR(ld_shlibs, $1)=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test yes = "$with_gnu_ld"; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test yes = "$lt_use_gnu_ld_interface"; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='$wl' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi supports_anon_versioning=no case `$LD -v | $SED -e 's/([[^)]]\+)\s\+//' 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[[3-9]]*) # On AIX/PPC, the GNU linker is very broken if test ia64 != "$host_cpu"; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; cygwin* | mingw* | windows* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] _LT_TAGVAR(file_list_spec, $1)='@' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file, use it as # is; otherwise, prepend EXPORTS... _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=no ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported shrext_cmds=.dll _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test linux-dietlibc = "$host_os"; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test no = "$tmp_diet" then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 _LT_TAGVAR(whole_archive_flag_spec, $1)= tmp_sharedflag='--shared' ;; nagfor*) # NAGFOR 5.3 tmp_sharedflag='-Wl,-shared' ;; xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes ;; esac case `$CC -V 2>&1 | $SED 5q` in *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi case $cc_basename in tcc*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='-rdynamic' ;; xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; *-mlibc) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; sunos4*) _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac if test no = "$_LT_TAGVAR(ld_shlibs, $1)"; then runpath_var= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. _LT_TAGVAR(hardcode_minus_L, $1)=yes if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. _LT_TAGVAR(hardcode_direct, $1)=unsupported fi ;; aix[[4-9]]*) if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag= else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to GNU nm, but means don't demangle to AIX nm. # Without the "-l" option, or with the "-B" option, AIX nm treats # weak defined symbols like other global defined symbols, whereas # GNU nm marks them as "W". # While the 'weak' keyword is ignored in the Export File, we need # it in the Import File for the 'aix-soname' feature, so we have # to replace the "-B" option with "-P" for AIX nm. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # have runtime linking enabled, and use it for executables. # For shared libraries, we enable/disable runtime linking # depending on the kind of the shared library created - # when "with_aix_soname,aix_use_runtimelinking" is: # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables # "aix,yes" lib.so shared, rtl:yes, for executables # lib.a static archive # "both,no" lib.so.V(shr.o) shared, rtl:yes # lib.a(lib.so.V) shared, rtl:no, for executables # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a(lib.so.V) shared, rtl:no # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a static archive case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then aix_use_runtimelinking=yes break fi done if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then # With aix-soname=svr4, we create the lib.so.V shared archives only, # so we don't have lib.a shared libs to link our executables. # We have to force runtime linking in this case. aix_use_runtimelinking=yes LDFLAGS="$LDFLAGS -Wl,-brtl" fi ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='$wl-f,' case $with_aix_soname,$aix_use_runtimelinking in aix,*) ;; # traditional, no import file svr4,* | *,yes) # use import file # The Import File defines what to hardcode. _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no ;; esac if test yes = "$GCC"; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi ;; esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; then shared_flag="$shared_flag "'$wl-G' fi # Need to ensure runtime linking is disabled for the traditional # shared library, or the linker may eventually find shared libraries # /with/ Import File - we do not want to mix them. shared_flag_aix='-shared' shared_flag_svr4='-shared $wl-G' else # not using gcc if test ia64 = "$host_cpu"; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test yes = "$aix_use_runtimelinking"; then shared_flag='$wl-G' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. _LT_TAGVAR(always_export_symbols, $1)=yes if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else if test ia64 = "$host_cpu"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' # -brtl affects multiple linker settings, -berok does not and is overridden later compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' if test svr4 != "$with_aix_soname"; then # This is similar to how AIX traditionally builds its shared libraries. _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' fi if test aix != "$with_aix_soname"; then _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' else # used by -dlpreopen to get the symbols _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; bsdi[[45]]*) _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic ;; cygwin* | mingw* | windows* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++ or Intel C++ Compiler. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl* | icl*) # Native MSVC or ICC _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -Fe$output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then cp "$export_symbols" "$output_objdir/$soname.def"; echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; else $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -Fe$tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC and ICC wrapper _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' # FIXME: Should let the user specify the lib program. _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; esac ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; dgux*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly* | midnightbsd*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; hpux9*) if test yes = "$GCC"; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' else _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' ;; hpux10*) if test yes,no = "$GCC,$with_gnu_ld"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test no = "$with_gnu_ld"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes fi ;; hpux11*) if test yes,no = "$GCC,$with_gnu_ld"; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) m4_if($1, [], [ # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) _LT_LINKER_OPTION([if $CC understands -b], _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) ;; esac fi if test no = "$with_gnu_ld"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test yes = "$GCC"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], [lt_cv_irix_exported_symbol], [save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" AC_LINK_IFELSE( [AC_LANG_SOURCE( [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], [C++], [[int foo (void) { return 0; }]], [Fortran 77], [[ subroutine foo end]], [Fortran], [[ subroutine foo end]])])], [lt_cv_irix_exported_symbol=yes], [lt_cv_irix_exported_symbol=no]) LDFLAGS=$save_LDFLAGS]) if test yes = "$lt_cv_irix_exported_symbol"; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' fi else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes _LT_TAGVAR(link_all_deplibs, $1)=yes ;; linux*) case $cc_basename in tcc*) # Fabrice Bellard et al's Tiny C Compiler _LT_TAGVAR(ld_shlibs, $1)=yes _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' ;; esac ;; *-mlibc) ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; newsos6) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *nto* | *qnx*) ;; openbsd*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' fi else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported shrext_cmds=.dll _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' ;; osf3*) if test yes = "$GCC"; then _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test yes = "$GCC"; then _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; serenity*) ;; solaris*) _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' if test yes = "$GCC"; then wlarc='$wl' _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' _LT_TAGVAR(archive_cmds, $1)='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='$wl' _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. GCC discards it without '$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test yes = "$GCC"; then _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' else _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' fi ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes ;; sunos4*) if test sequent = "$host_vendor"; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4) case $host_vendor in sni) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' _LT_TAGVAR(hardcode_direct, $1)=no ;; motorola) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4.3*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes _LT_TAGVAR(ld_shlibs, $1)=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(ld_shlibs, $1)=no ;; esac if test sni = "$host_vendor"; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Blargedynsym' ;; esac fi fi ]) AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no _LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld _LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl _LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl _LT_DECL([], [extract_expsyms_cmds], [2], [The commands to extract the exported symbol list from a shared archive]) # # Do we need to explicitly link libc? # case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in x|xyes) # Assume -lc should be added _LT_TAGVAR(archive_cmds_need_lc, $1)=yes if test yes,yes = "$GCC,$enable_shared"; then case $_LT_TAGVAR(archive_cmds, $1) in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. AC_CACHE_CHECK([whether -lc should be explicitly linked in], [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), [$RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if AC_TRY_EVAL(ac_compile) 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) _LT_TAGVAR(allow_undefined_flag, $1)= if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) then lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no else lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes fi _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* ]) _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) ;; esac fi ;; esac _LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], [Whether or not to add -lc for building shared libraries]) _LT_TAGDECL([allow_libtool_libs_with_static_runtimes], [enable_shared_with_static_runtimes], [0], [Whether or not to disallow shared libs when runtime libs are static]) _LT_TAGDECL([], [export_dynamic_flag_spec], [1], [Compiler flag to allow reflexive dlopens]) _LT_TAGDECL([], [whole_archive_flag_spec], [1], [Compiler flag to generate shared objects directly from archives]) _LT_TAGDECL([], [compiler_needs_object], [1], [Whether the compiler copes with passing no objects directly]) _LT_TAGDECL([], [old_archive_from_new_cmds], [2], [Create an old-style archive from a shared archive]) _LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], [Create a temporary old-style archive to link instead of a shared archive]) _LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) _LT_TAGDECL([], [archive_expsym_cmds], [2]) _LT_TAGDECL([], [module_cmds], [2], [Commands used to build a loadable module if different from building a shared archive.]) _LT_TAGDECL([], [module_expsym_cmds], [2]) _LT_TAGDECL([], [with_gnu_ld], [1], [Whether we are building with GNU ld or not]) _LT_TAGDECL([], [allow_undefined_flag], [1], [Flag that allows shared libraries with undefined symbols to be built]) _LT_TAGDECL([], [no_undefined_flag], [1], [Flag that enforces no undefined symbols]) _LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], [Flag to hardcode $libdir into a binary during linking. This must work even if $libdir does not exist]) _LT_TAGDECL([], [hardcode_libdir_separator], [1], [Whether we need a single "-rpath" flag with a separated argument]) _LT_TAGDECL([], [hardcode_direct], [0], [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_direct_absolute], [0], [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes DIR into the resulting binary and the resulting library dependency is "absolute", i.e. impossible to change by setting $shlibpath_var if the library is relocated]) _LT_TAGDECL([], [hardcode_minus_L], [0], [Set to "yes" if using the -LDIR flag during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_shlibpath_var], [0], [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_automatic], [0], [Set to "yes" if building a shared library automatically hardcodes DIR into the library and all subsequent libraries and executables linked against it]) _LT_TAGDECL([], [inherit_rpath], [0], [Set to yes if linker adds runtime paths of dependent libraries to runtime path list]) _LT_TAGDECL([], [link_all_deplibs], [0], [Whether libtool must link a program against all its dependency libraries]) _LT_TAGDECL([], [always_export_symbols], [0], [Set to "yes" if exported symbols are required]) _LT_TAGDECL([], [export_symbols_cmds], [2], [The commands to list exported symbols]) _LT_TAGDECL([], [exclude_expsyms], [1], [Symbols that should not be listed in the preloaded symbols]) _LT_TAGDECL([], [include_expsyms], [1], [Symbols that must always be exported]) _LT_TAGDECL([], [prelink_cmds], [2], [Commands necessary for linking programs (against libraries) with templates]) _LT_TAGDECL([], [postlink_cmds], [2], [Commands necessary for finishing linking programs]) _LT_TAGDECL([], [file_list_spec], [1], [Specify filename containing input files]) dnl FIXME: Not yet implemented dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], dnl [Compiler flag to generate thread safe objects]) ])# _LT_LINKER_SHLIBS # _LT_LANG_C_CONFIG([TAG]) # ------------------------ # Ensure that the configuration variables for a C compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to 'libtool'. m4_defun([_LT_LANG_C_CONFIG], [m4_require([_LT_DECL_EGREP])dnl lt_save_CC=$CC AC_LANG_PUSH(C) # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(void){return(0);}' _LT_TAG_COMPILER # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) LT_SYS_DLOPEN_SELF _LT_CMD_STRIPLIB # Report what library types will actually be built AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test no = "$can_build_shared" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test ia64 != "$host_cpu"; then case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in yes,aix,yes) ;; # shared object as lib.so file only yes,svr4,*) ;; # shared object as lib.so archive member only yes,*) enable_static=no ;; # shared object in lib.a archive as well esac fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_CONFIG($1) fi AC_LANG_POP CC=$lt_save_CC ])# _LT_LANG_C_CONFIG # _LT_LANG_CXX_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a C++ compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to 'libtool'. m4_defun([_LT_LANG_CXX_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl if test -n "$CXX" && ( test no != "$CXX" && ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || (test g++ != "$CXX"))); then AC_PROG_CXXCPP else _lt_caught_CXX_error=yes fi AC_LANG_PUSH(C++) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test yes != "$_lt_caught_CXX_error"; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} CFLAGS=$CXXFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately if test yes = "$GXX"; then _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' else _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= fi if test yes = "$GXX"; then # Set up default GNU C++ configuration LT_PATH_LD # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test yes = "$with_gnu_ld"; then _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='$wl' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " [[-]]L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) _LT_TAGVAR(ld_shlibs, $1)=yes case $host_os in aix3*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aix[[4-9]]*) if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag= else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # have runtime linking enabled, and use it for executables. # For shared libraries, we enable/disable runtime linking # depending on the kind of the shared library created - # when "with_aix_soname,aix_use_runtimelinking" is: # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables # "aix,yes" lib.so shared, rtl:yes, for executables # lib.a static archive # "both,no" lib.so.V(shr.o) shared, rtl:yes # lib.a(lib.so.V) shared, rtl:no, for executables # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a(lib.so.V) shared, rtl:no # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a static archive case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then # With aix-soname=svr4, we create the lib.so.V shared archives only, # so we don't have lib.a shared libs to link our executables. # We have to force runtime linking in this case. aix_use_runtimelinking=yes LDFLAGS="$LDFLAGS -Wl,-brtl" fi ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='$wl-f,' case $with_aix_soname,$aix_use_runtimelinking in aix,*) ;; # no import file svr4,* | *,yes) # use import file # The Import File defines what to hardcode. _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no ;; esac if test yes = "$GXX"; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; then shared_flag=$shared_flag' $wl-G' fi # Need to ensure runtime linking is disabled for the traditional # shared library, or the linker may eventually find shared libraries # /with/ Import File - we do not want to mix them. shared_flag_aix='-shared' shared_flag_svr4='-shared $wl-G' else # not using gcc if test ia64 = "$host_cpu"; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test yes = "$aix_use_runtimelinking"; then shared_flag='$wl-G' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. _LT_TAGVAR(always_export_symbols, $1)=yes if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. # The "-G" linker flag allows undefined symbols. _LT_TAGVAR(no_undefined_flag, $1)='-bernotok' # Determine the default libpath from the value encoded in an empty # executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else if test ia64 = "$host_cpu"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' # -brtl affects multiple linker settings, -berok does not and is overridden later compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' if test svr4 != "$with_aix_soname"; then # This is similar to how AIX traditionally builds its shared # libraries. Need -bnortl late, we may have -brtl in LDFLAGS. _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' fi if test aix != "$with_aix_soname"; then _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' else # used by -dlpreopen to get the symbols _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' fi fi ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; cygwin* | mingw* | windows* | pw32* | cegcc*) case $GXX,$cc_basename in ,cl* | no,cl* | ,icl* | no,icl*) # Native MSVC or ICC # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then cp "$export_symbols" "$output_objdir/$soname.def"; echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; else $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ func_to_tool_file "$lt_outputfile"~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # g++ # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file, use it as # is; otherwise, prepend EXPORTS... _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported shrext_cmds=.dll _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; freebsd2.*) # C++ shared libraries reported to be fairly broken before # switch to ELF _LT_TAGVAR(ld_shlibs, $1)=no ;; freebsd-elf*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; freebsd* | dragonfly* | midnightbsd*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions _LT_TAGVAR(ld_shlibs, $1)=yes ;; haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=no ;; hpux9*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "[[-]]L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; hpux10*|hpux11*) if test no = "$with_gnu_ld"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) ;; *) _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP " [[-]]L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then if test no = "$with_gnu_ld"; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test yes = "$GXX"; then if test no = "$with_gnu_ld"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib' fi fi _LT_TAGVAR(link_all_deplibs, $1)=yes ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc* | ecpc* ) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; esac _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ $RANLIB $oldlib' _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 6 and above use weak symbols _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl--rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' ;; cxx*) # Compaq C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib $wl-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' ;; xl* | mpixl* | bgxl*) # IBM XL 8.0 on PPC, with GNU ld _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi ;; *) case `$CC -V 2>&1 | $SED 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; m88k*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; *-mlibc) _LT_TAGVAR(ld_shlibs, $1)=yes ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; *nto* | *qnx*) _LT_TAGVAR(ld_shlibs, $1)=yes ;; openbsd*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' fi output_verbose_link_cmd=func_echo_all else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Archives containing C++ object files must be created using # the KAI C++ compiler. case $host in osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; esac ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; cxx*) case $host in osf3*) _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' ;; *) _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~ $RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' ;; esac _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes,no = "$GXX,$with_gnu_ld"; then _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' case $host in osf3*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " [[-]]L"' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; serenity*) ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(archive_cmds_need_lc,$1)=yes _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test yes,no = "$GXX,$with_gnu_ld"; then _LT_TAGVAR(no_undefined_flag, $1)=' $wl-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " [[-]]L"' else # g++ 2.7 appears to require '-G' NOT '-shared' on this # platform. _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " [[-]]L"' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $wl$libdir' case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ '"$_LT_TAGVAR(old_archive_cmds, $1)" _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ '"$_LT_TAGVAR(reload_cmds, $1)" ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no _LT_TAGVAR(GCC, $1)=$GXX _LT_TAGVAR(LD, $1)=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld fi # test yes != "$_lt_caught_CXX_error" AC_LANG_POP ])# _LT_LANG_CXX_CONFIG # _LT_FUNC_STRIPNAME_CNF # ---------------------- # func_stripname_cnf prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). # # This function is identical to the (non-XSI) version of func_stripname, # except this one can be used by m4 code that may be executed by configure, # rather than the libtool script. m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl AC_REQUIRE([_LT_DECL_SED]) AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) func_stripname_cnf () { case @S|@2 in .*) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%\\\\@S|@2\$%%"`;; *) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%@S|@2\$%%"`;; esac } # func_stripname_cnf ])# _LT_FUNC_STRIPNAME_CNF # _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) # --------------------------------- # Figure out "hidden" library dependencies from verbose # compiler output when linking a shared library. # Parse the compiler output and extract the necessary # objects, libraries and library flags. m4_defun([_LT_SYS_HIDDEN_LIBDEPS], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl # Dependencies to place before and after the object being linked: _LT_TAGVAR(predep_objects, $1)= _LT_TAGVAR(postdep_objects, $1)= _LT_TAGVAR(predeps, $1)= _LT_TAGVAR(postdeps, $1)= _LT_TAGVAR(compiler_lib_search_path, $1)= dnl we can't use the lt_simple_compile_test_code here, dnl because it contains code intended for an executable, dnl not a library. It's possible we should let each dnl tag define a new lt_????_link_test_code variable, dnl but it's only used here... m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF int a; void foo (void) { a = 0; } _LT_EOF ], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF class Foo { public: Foo (void) { a = 0; } private: int a; }; _LT_EOF ], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer*4 a a=0 return end _LT_EOF ], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer a a=0 return end _LT_EOF ], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF public class foo { private int a; public void bar (void) { a = 0; } }; _LT_EOF ], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF package foo func foo() { } _LT_EOF ]) _lt_libdeps_save_CFLAGS=$CFLAGS case "$CC $CFLAGS " in #( *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; *\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; esac dnl Parse the compiler output and extract the necessary dnl objects, libraries and library flags. if AC_TRY_EVAL(ac_compile); then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do case $prev$p in -L* | -R* | -l*) # Some compilers place space between "-{L,R,l}" and the path. # Remove the space. if test x-L = x"$p" || test x-R = x"$p" || test x-l = x"$p"; then prev=$p continue fi # Expand the sysroot to ease extracting the directories later. if test -z "$prev"; then case $p in -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; esac fi case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac if test no = "$pre_test_object_deps_done"; then case $prev in -L | -R) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then _LT_TAGVAR(compiler_lib_search_path, $1)=$prev$p else _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} $prev$p" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$_LT_TAGVAR(postdeps, $1)"; then _LT_TAGVAR(postdeps, $1)=$prev$p else _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} $prev$p" fi fi prev= ;; *.lto.$objext) ;; # Ignore GCC LTO objects *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test no = "$pre_test_object_deps_done"; then if test -z "$_LT_TAGVAR(predep_objects, $1)"; then _LT_TAGVAR(predep_objects, $1)=$p else _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" fi else if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then _LT_TAGVAR(postdep_objects, $1)=$p else _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling $1 test program" fi $RM -f confest.$objext CFLAGS=$_lt_libdeps_save_CFLAGS # PORTME: override above test on systems where it is broken m4_if([$1], [CXX], [case $host_os in interix[[3-9]]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. _LT_TAGVAR(predep_objects,$1)= _LT_TAGVAR(postdep_objects,$1)= _LT_TAGVAR(postdeps,$1)= ;; esac ]) case " $_LT_TAGVAR(postdeps, $1) " in *" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; esac _LT_TAGVAR(compiler_lib_search_dirs, $1)= if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | $SED -e 's! -L! !g' -e 's!^ !!'` fi _LT_TAGDECL([], [compiler_lib_search_dirs], [1], [The directories searched by this compiler when creating a shared library]) _LT_TAGDECL([], [predep_objects], [1], [Dependencies to place before and after the objects being linked to create a shared library]) _LT_TAGDECL([], [postdep_objects], [1]) _LT_TAGDECL([], [predeps], [1]) _LT_TAGDECL([], [postdeps], [1]) _LT_TAGDECL([], [compiler_lib_search_path], [1], [The library search path used internally by the compiler when linking a shared library]) ])# _LT_SYS_HIDDEN_LIBDEPS # _LT_LANG_F77_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a Fortran 77 compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_F77_CONFIG], [AC_LANG_PUSH(Fortran 77) if test -z "$F77" || test no = "$F77"; then _lt_disable_F77=yes fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for f77 test sources. ac_ext=f # Object file extension for compiled f77 test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the F77 compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test yes != "$_lt_disable_F77"; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${F77-"f77"} CFLAGS=$FFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) GCC=$G77 if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test no = "$can_build_shared" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test ia64 != "$host_cpu"; then case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in yes,aix,yes) ;; # shared object as lib.so file only yes,svr4,*) ;; # shared object as lib.so archive member only yes,*) enable_static=no ;; # shared object in lib.a archive as well esac fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)=$G77 _LT_TAGVAR(LD, $1)=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS fi # test yes != "$_lt_disable_F77" AC_LANG_POP ])# _LT_LANG_F77_CONFIG # _LT_LANG_FC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for a Fortran compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_FC_CONFIG], [AC_LANG_PUSH(Fortran) if test -z "$FC" || test no = "$FC"; then _lt_disable_FC=yes fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for fc test sources. ac_ext=${ac_fc_srcext-f} # Object file extension for compiled fc test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the FC compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test yes != "$_lt_disable_FC"; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${FC-"f95"} CFLAGS=$FCFLAGS compiler=$CC GCC=$ac_cv_fc_compiler_gnu _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test no = "$can_build_shared" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test ia64 != "$host_cpu"; then case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in yes,aix,yes) ;; # shared object as lib.so file only yes,svr4,*) ;; # shared object as lib.so archive member only yes,*) enable_static=no ;; # shared object in lib.a archive as well esac fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)=$ac_cv_fc_compiler_gnu _LT_TAGVAR(LD, $1)=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS fi # test yes != "$_lt_disable_FC" AC_LANG_POP ])# _LT_LANG_FC_CONFIG # _LT_LANG_GCJ_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for the GNU Java Compiler compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_GCJ_CONFIG], [AC_REQUIRE([LT_PROG_GCJ])dnl AC_LANG_SAVE # Source file extension for Java test sources. ac_ext=java # Object file extension for compiled Java test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="class foo {}" # Code to be used in simple link tests lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GCJ-"gcj"} CFLAGS=$GCJFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)=$LD _LT_CC_BASENAME([$compiler]) # GCJ did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GCJ_CONFIG # _LT_LANG_GO_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for the GNU Go compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_GO_CONFIG], [AC_REQUIRE([LT_PROG_GO])dnl AC_LANG_SAVE # Source file extension for Go test sources. ac_ext=go # Object file extension for compiled Go test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="package main; func main() { }" # Code to be used in simple link tests lt_simple_link_test_code='package main; func main() { }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GOC-"gccgo"} CFLAGS=$GOFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)=$LD _LT_CC_BASENAME([$compiler]) # Go did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GO_CONFIG # _LT_LANG_RC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for the Windows resource compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_RC_CONFIG], [AC_REQUIRE([LT_PROG_RC])dnl AC_LANG_SAVE # Source file extension for RC test sources. ac_ext=rc # Object file extension for compiled RC test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' # Code to be used in simple link tests lt_simple_link_test_code=$lt_simple_compile_test_code # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC= CC=${RC-"windres"} CFLAGS= compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes if test -n "$compiler"; then : _LT_CONFIG($1) fi GCC=$lt_save_GCC AC_LANG_RESTORE CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_RC_CONFIG # LT_PROG_GCJ # ----------- AC_DEFUN([LT_PROG_GCJ], [m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], [AC_CHECK_TOOL(GCJ, gcj,) test set = "${GCJFLAGS+set}" || GCJFLAGS="-g -O2" AC_SUBST(GCJFLAGS)])])[]dnl ]) # Old name: AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_GCJ], []) # LT_PROG_GO # ---------- AC_DEFUN([LT_PROG_GO], [AC_CHECK_TOOL(GOC, gccgo,) ]) # LT_PROG_RC # ---------- AC_DEFUN([LT_PROG_RC], [AC_CHECK_TOOL(RC, windres,) ]) # Old name: AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_RC], []) # _LT_DECL_EGREP # -------------- # If we don't have a new enough Autoconf to choose the best grep # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_EGREP], [AC_REQUIRE([AC_PROG_EGREP])dnl AC_REQUIRE([AC_PROG_FGREP])dnl test -z "$GREP" && GREP=grep _LT_DECL([], [GREP], [1], [A grep program that handles long lines]) _LT_DECL([], [EGREP], [1], [An ERE matcher]) _LT_DECL([], [FGREP], [1], [A literal string matcher]) dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too AC_SUBST([GREP]) ]) # _LT_DECL_OBJDUMP # -------------- # If we don't have a new enough Autoconf to choose the best objdump # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_OBJDUMP], [AC_CHECK_TOOL(OBJDUMP, objdump, false) test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) AC_SUBST([OBJDUMP]) ]) # _LT_DECL_DLLTOOL # ---------------- # Ensure DLLTOOL variable is set. m4_defun([_LT_DECL_DLLTOOL], [AC_CHECK_TOOL(DLLTOOL, dlltool, false) test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [1], [DLL creation program]) AC_SUBST([DLLTOOL]) ]) # _LT_DECL_FILECMD # ---------------- # Check for a file(cmd) program that can be used to detect file type and magic m4_defun([_LT_DECL_FILECMD], [AC_CHECK_PROG([FILECMD], [file], [file], [:]) _LT_DECL([], [FILECMD], [1], [A file(cmd) program that detects file types]) ])# _LD_DECL_FILECMD # _LT_DECL_SED # ------------ # Check for a fully-functional sed program, that truncates # as few characters as possible. Prefer GNU sed if found. m4_defun([_LT_DECL_SED], [AC_PROG_SED test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" _LT_DECL([], [SED], [1], [A sed program that does not truncate output]) _LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], [Sed that helps us avoid accidentally triggering echo(1) options like -n]) ])# _LT_DECL_SED dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_SED], []) # _LT_CHECK_SHELL_FEATURES # ------------------------ # Find out whether the shell is Bourne or XSI compatible, # or has some other useful features. m4_defun([_LT_CHECK_SHELL_FEATURES], [if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi _LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac _LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl _LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl ])# _LT_CHECK_SHELL_FEATURES # _LT_PATH_CONVERSION_FUNCTIONS # ----------------------------- # Determine what file name conversion functions should be used by # func_to_host_file (and, implicitly, by func_to_host_path). These are needed # for certain cross-compile configurations and native mingw. m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_MSG_CHECKING([how to convert $build file names to $host format]) AC_CACHE_VAL(lt_cv_to_host_file_cmd, [case $host in *-*-mingw* ) case $build in *-*-mingw* | *-*-windows* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* | *-*-windows* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac ]) to_host_file_cmd=$lt_cv_to_host_file_cmd AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) _LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], [0], [convert $build file names to $host format])dnl AC_MSG_CHECKING([how to convert $build file names to toolchain format]) AC_CACHE_VAL(lt_cv_to_tool_file_cmd, [#assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* | *-*-windows* ) case $build in *-*-mingw* | *-*-windows* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac ]) to_tool_file_cmd=$lt_cv_to_tool_file_cmd AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) _LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], [0], [convert $build files to toolchain format])dnl ])# _LT_PATH_CONVERSION_FUNCTIONS gnomint-1.6.4/m4/ltoptions.m40000644000000000000000000003612115212761272014560 0ustar00rootroot# Helper functions for option handling. -*- Autoconf -*- # # Copyright (C) 2004-2005, 2007-2009, 2011-2019, 2021-2024 Free # Software Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 10 ltoptions.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) # _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) # ------------------------------------------ m4_define([_LT_MANGLE_OPTION], [[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) # _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) # --------------------------------------- # Set option OPTION-NAME for macro MACRO-NAME, and if there is a # matching handler defined, dispatch to it. Other OPTION-NAMEs are # saved as a flag. m4_define([_LT_SET_OPTION], [m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), _LT_MANGLE_DEFUN([$1], [$2]), [m4_warning([Unknown $1 option '$2'])])[]dnl ]) # _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) # ------------------------------------------------------------ # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. m4_define([_LT_IF_OPTION], [m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) # _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) # ------------------------------------------------------- # Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME # are set. m4_define([_LT_UNLESS_OPTIONS], [m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), [m4_define([$0_found])])])[]dnl m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 ])[]dnl ]) # _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) # ---------------------------------------- # OPTION-LIST is a space-separated list of Libtool options associated # with MACRO-NAME. If any OPTION has a matching handler declared with # LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about # the unknown option and exit. m4_defun([_LT_SET_OPTIONS], [# Set options m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [_LT_SET_OPTION([$1], _LT_Option)]) m4_if([$1],[LT_INIT],[ dnl dnl Simply set some default values (i.e off) if boolean options were not dnl specified: _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no ]) _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no ]) dnl dnl If no reference was made to various pairs of opposing options, then dnl we run the default mode handler for the pair. For example, if neither dnl 'shared' nor 'disable-shared' was passed, we enable building of shared dnl archives by default: _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], [_LT_ENABLE_FAST_INSTALL]) _LT_UNLESS_OPTIONS([LT_INIT], [aix-soname=aix aix-soname=both aix-soname=svr4], [_LT_WITH_AIX_SONAME([aix])]) ]) ])# _LT_SET_OPTIONS ## --------------------------------- ## ## Macros to handle LT_INIT options. ## ## --------------------------------- ## # _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) # ----------------------------------------- m4_define([_LT_MANGLE_DEFUN], [[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) # LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) # ----------------------------------------------- m4_define([LT_OPTION_DEFINE], [m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl ])# LT_OPTION_DEFINE # dlopen # ------ LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes ]) AU_DEFUN([AC_LIBTOOL_DLOPEN], [_LT_SET_OPTION([LT_INIT], [dlopen]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'dlopen' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) # win32-dll # --------- # Declare package support for building win32 dll's. LT_OPTION_DEFINE([LT_INIT], [win32-dll], [enable_win32_dll=yes case $host in *-*-cygwin* | *-*-mingw* | *-*-windows* | *-*-pw32* | *-*-cegcc*) AC_CHECK_TOOL(AS, as, false) AC_CHECK_TOOL(DLLTOOL, dlltool, false) AC_CHECK_TOOL(OBJDUMP, objdump, false) ;; esac test -z "$AS" && AS=as _LT_DECL([], [AS], [1], [Assembler program])dnl test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl ])# win32-dll AU_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_REQUIRE([AC_CANONICAL_HOST])dnl _LT_SET_OPTION([LT_INIT], [win32-dll]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'win32-dll' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) # _LT_ENABLE_SHARED([DEFAULT]) # ---------------------------- # implement the --enable-shared flag, and supports the 'shared' and # 'disable-shared' LT_INIT options. # DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. m4_define([_LT_ENABLE_SHARED], [m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([shared], [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS=$lt_save_ifs ;; esac], [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) _LT_DECL([build_libtool_libs], [enable_shared], [0], [Whether or not to build shared libraries]) ])# _LT_ENABLE_SHARED LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) # Old names: AC_DEFUN([AC_ENABLE_SHARED], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) ]) AC_DEFUN([AC_DISABLE_SHARED], [_LT_SET_OPTION([LT_INIT], [disable-shared]) ]) AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_SHARED], []) dnl AC_DEFUN([AM_DISABLE_SHARED], []) # _LT_ENABLE_STATIC([DEFAULT]) # ---------------------------- # implement the --enable-static flag, and support the 'static' and # 'disable-static' LT_INIT options. # DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. m4_define([_LT_ENABLE_STATIC], [m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([static], [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS=$lt_save_ifs ;; esac], [enable_static=]_LT_ENABLE_STATIC_DEFAULT) _LT_DECL([build_old_libs], [enable_static], [0], [Whether or not to build static libraries]) ])# _LT_ENABLE_STATIC LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) # Old names: AC_DEFUN([AC_ENABLE_STATIC], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) ]) AC_DEFUN([AC_DISABLE_STATIC], [_LT_SET_OPTION([LT_INIT], [disable-static]) ]) AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_STATIC], []) dnl AC_DEFUN([AM_DISABLE_STATIC], []) # _LT_ENABLE_FAST_INSTALL([DEFAULT]) # ---------------------------------- # implement the --enable-fast-install flag, and support the 'fast-install' # and 'disable-fast-install' LT_INIT options. # DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. m4_define([_LT_ENABLE_FAST_INSTALL], [m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([fast-install], [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS=$lt_save_ifs ;; esac], [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) _LT_DECL([fast_install], [enable_fast_install], [0], [Whether or not to optimize for fast installation])dnl ])# _LT_ENABLE_FAST_INSTALL LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) # Old names: AU_DEFUN([AC_ENABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'fast-install' option into LT_INIT's first parameter.]) ]) AU_DEFUN([AC_DISABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], [disable-fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'disable-fast-install' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) # _LT_WITH_AIX_SONAME([DEFAULT]) # ---------------------------------- # implement the --enable-aix-soname configure option, and support the # `aix-soname=aix' and `aix-soname=both' and `aix-soname=svr4' LT_INIT options. # DEFAULT is either `aix', `both', or `svr4'. If omitted, it defaults to `aix'. m4_define([_LT_WITH_AIX_SONAME], [m4_define([_LT_WITH_AIX_SONAME_DEFAULT], [m4_if($1, svr4, svr4, m4_if($1, both, both, aix))])dnl shared_archive_member_spec= case $host,$enable_shared in power*-*-aix[[5-9]]*,yes) AC_MSG_CHECKING([which variant of shared library versioning to provide]) AC_ARG_ENABLE([aix-soname], [AS_HELP_STRING([--enable-aix-soname=aix|svr4|both], [shared library versioning (aka "SONAME") variant to provide on AIX, @<:@default=]_LT_WITH_AIX_SONAME_DEFAULT[@:>@.])], [case $enableval in aix|svr4|both) ;; *) AC_MSG_ERROR([Unknown argument to --enable-aix-soname]) ;; esac lt_cv_with_aix_soname=$enable_aix_soname], [_AC_ENABLE_IF([with], [aix-soname], [case $withval in aix|svr4|both) ;; *) AC_MSG_ERROR([Unknown argument to --with-aix-soname]) ;; esac lt_cv_with_aix_soname=$with_aix_soname], [AC_CACHE_VAL([lt_cv_with_aix_soname], [lt_cv_with_aix_soname=]_LT_WITH_AIX_SONAME_DEFAULT)]) enable_aix_soname=$lt_cv_with_aix_soname]) with_aix_soname=$enable_aix_soname AC_MSG_RESULT([$with_aix_soname]) if test aix != "$with_aix_soname"; then # For the AIX way of multilib, we name the shared archive member # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, # the AIX toolchain works better with OBJECT_MODE set (default 32). if test 64 = "${OBJECT_MODE-32}"; then shared_archive_member_spec=shr_64 else shared_archive_member_spec=shr fi fi ;; *) with_aix_soname=aix ;; esac _LT_DECL([], [shared_archive_member_spec], [0], [Shared archive member basename, for filename based shared library versioning on AIX])dnl ])# _LT_WITH_AIX_SONAME LT_OPTION_DEFINE([LT_INIT], [aix-soname=aix], [_LT_WITH_AIX_SONAME([aix])]) LT_OPTION_DEFINE([LT_INIT], [aix-soname=both], [_LT_WITH_AIX_SONAME([both])]) LT_OPTION_DEFINE([LT_INIT], [aix-soname=svr4], [_LT_WITH_AIX_SONAME([svr4])]) # _LT_WITH_PIC([MODE]) # -------------------- # implement the --enable-pic flag, and support the 'pic-only' and 'no-pic' # LT_INIT options. # MODE is either 'yes' or 'no'. If omitted, it defaults to 'both'. m4_define([_LT_WITH_PIC], [AC_ARG_ENABLE([pic], [AS_HELP_STRING([--enable-pic@<:@=PKGS@:>@], [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], [lt_p=${PACKAGE-default} case $enableval in yes|no) pic_mode=$enableval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for lt_pkg in $enableval; do IFS=$lt_save_ifs if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS=$lt_save_ifs ;; esac], [dnl Continue to support --with-pic and --without-pic, for backward dnl compatibility. _AC_ENABLE_IF([with], [pic], [lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for lt_pkg in $withval; do IFS=$lt_save_ifs if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS=$lt_save_ifs ;; esac], [pic_mode=m4_default([$1], [default])])] ) _LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl ])# _LT_WITH_PIC LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) # Old name: AU_DEFUN([AC_LIBTOOL_PICMODE], [_LT_SET_OPTION([LT_INIT], [pic-only]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'pic-only' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) ## ----------------- ## ## LTDL_INIT Options ## ## ----------------- ## m4_define([_LTDL_MODE], []) LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], [m4_define([_LTDL_MODE], [nonrecursive])]) LT_OPTION_DEFINE([LTDL_INIT], [recursive], [m4_define([_LTDL_MODE], [recursive])]) LT_OPTION_DEFINE([LTDL_INIT], [subproject], [m4_define([_LTDL_MODE], [subproject])]) m4_define([_LTDL_TYPE], []) LT_OPTION_DEFINE([LTDL_INIT], [installable], [m4_define([_LTDL_TYPE], [installable])]) LT_OPTION_DEFINE([LTDL_INIT], [convenience], [m4_define([_LTDL_TYPE], [convenience])]) gnomint-1.6.4/m4/gettext.m40000644000000000000000000003676315212761266014230 0ustar00rootroot# gettext.m4 serial 68 (gettext-0.19.8) dnl Copyright (C) 1995-2014, 2016 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995-2000. dnl Bruno Haible , 2000-2006, 2008-2010. dnl Macro to add for using GNU gettext. dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The dnl default (if it is not specified or empty) is 'no-libtool'. dnl INTLSYMBOL should be 'external' for packages with no intl directory, dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory. dnl If INTLSYMBOL is 'use-libtool', then a libtool library dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, dnl depending on --{enable,disable}-{shared,static} and on the presence of dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library dnl $(top_builddir)/intl/libintl.a will be created. dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext dnl implementations (in libc or libintl) without the ngettext() function dnl will be ignored. If NEEDSYMBOL is specified and is dnl 'need-formatstring-macros', then GNU gettext implementations that don't dnl support the ISO C 99 formatstring macros will be ignored. dnl INTLDIR is used to find the intl libraries. If empty, dnl the value '$(top_builddir)/intl/' is used. dnl dnl The result of the configuration is one of three cases: dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled dnl and used. dnl Catalog format: GNU --> install in $(datadir) dnl Catalog extension: .mo after installation, .gmo in source tree dnl 2) GNU gettext has been found in the system's C library. dnl Catalog format: GNU --> install in $(datadir) dnl Catalog extension: .mo after installation, .gmo in source tree dnl 3) No internationalization, always use English msgid. dnl Catalog format: none dnl Catalog extension: none dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur. dnl The use of .gmo is historical (it was needed to avoid overwriting the dnl GNU format catalogs when building on a platform with an X/Open gettext), dnl but we keep it in order not to force irrelevant filename changes on the dnl maintainers. dnl AC_DEFUN([AM_GNU_GETTEXT], [ dnl Argument checking. ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], , [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT ])])])])]) ifelse(ifelse([$1], [], [old])[]ifelse([$1], [no-libtool], [old]), [old], [AC_DIAGNOSE([obsolete], [Use of AM_GNU_GETTEXT without [external] argument is deprecated.])]) ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], , [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT ])])])]) define([gt_included_intl], ifelse([$1], [external], ifdef([AM_GNU_GETTEXT_][INTL_SUBDIR], [yes], [no]), [yes])) define([gt_libtool_suffix_prefix], ifelse([$1], [use-libtool], [l], [])) gt_NEEDS_INIT AM_GNU_GETTEXT_NEED([$2]) AC_REQUIRE([AM_PO_SUBDIRS])dnl ifelse(gt_included_intl, yes, [ AC_REQUIRE([AM_INTL_SUBDIR])dnl ]) dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) dnl Sometimes libintl requires libiconv, so first search for libiconv. dnl Ideally we would do this search only after the dnl if test "$USE_NLS" = "yes"; then dnl if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT dnl the configure script would need to contain the same shell code dnl again, outside any 'if'. There are two solutions: dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE. dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not dnl documented, we avoid it. ifelse(gt_included_intl, yes, , [ AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) ]) dnl Sometimes, on Mac OS X, libintl requires linking with CoreFoundation. gt_INTL_MACOSX dnl Set USE_NLS. AC_REQUIRE([AM_NLS]) ifelse(gt_included_intl, yes, [ BUILD_INCLUDED_LIBINTL=no USE_INCLUDED_LIBINTL=no ]) LIBINTL= LTLIBINTL= POSUB= dnl Add a version number to the cache macros. case " $gt_needs " in *" need-formatstring-macros "*) gt_api_version=3 ;; *" need-ngettext "*) gt_api_version=2 ;; *) gt_api_version=1 ;; esac gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" dnl If we use NLS figure out what method if test "$USE_NLS" = "yes"; then gt_use_preinstalled_gnugettext=no ifelse(gt_included_intl, yes, [ AC_MSG_CHECKING([whether included gettext is requested]) AC_ARG_WITH([included-gettext], [ --with-included-gettext use the GNU gettext library included here], nls_cv_force_use_gnu_gettext=$withval, nls_cv_force_use_gnu_gettext=no) AC_MSG_RESULT([$nls_cv_force_use_gnu_gettext]) nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" if test "$nls_cv_force_use_gnu_gettext" != "yes"; then ]) dnl User does not insist on using GNU NLS library. Figure out what dnl to use. If GNU gettext is available we use this. Else we have dnl to fall back to GNU NLS library. if test $gt_api_version -ge 3; then gt_revision_test_code=' #ifndef __GNU_GETTEXT_SUPPORTED_REVISION #define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) #endif changequote(,)dnl typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; changequote([,])dnl ' else gt_revision_test_code= fi if test $gt_api_version -ge 2; then gt_expression_test_code=' + * ngettext ("", "", 0)' else gt_expression_test_code= fi AC_CACHE_CHECK([for GNU gettext in libc], [$gt_func_gnugettext_libc], [AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[ #include #ifndef __GNU_GETTEXT_SUPPORTED_REVISION extern int _nl_msg_cat_cntr; extern int *_nl_domain_bindings; #define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_domain_bindings) #else #define __GNU_GETTEXT_SYMBOL_EXPRESSION 0 #endif $gt_revision_test_code ]], [[ bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION ]])], [eval "$gt_func_gnugettext_libc=yes"], [eval "$gt_func_gnugettext_libc=no"])]) if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then dnl Sometimes libintl requires libiconv, so first search for libiconv. ifelse(gt_included_intl, yes, , [ AM_ICONV_LINK ]) dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) dnl because that would add "-liconv" to LIBINTL and LTLIBINTL dnl even if libiconv doesn't exist. AC_LIB_LINKFLAGS_BODY([intl]) AC_CACHE_CHECK([for GNU gettext in libintl], [$gt_func_gnugettext_libintl], [gt_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $INCINTL" gt_save_LIBS="$LIBS" LIBS="$LIBS $LIBINTL" dnl Now see whether libintl exists and does not depend on libiconv. AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[ #include #ifndef __GNU_GETTEXT_SUPPORTED_REVISION extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *); #define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_expand_alias ("")) #else #define __GNU_GETTEXT_SYMBOL_EXPRESSION 0 #endif $gt_revision_test_code ]], [[ bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION ]])], [eval "$gt_func_gnugettext_libintl=yes"], [eval "$gt_func_gnugettext_libintl=no"]) dnl Now see whether libintl exists and depends on libiconv. if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then LIBS="$LIBS $LIBICONV" AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[ #include #ifndef __GNU_GETTEXT_SUPPORTED_REVISION extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *); #define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_expand_alias ("")) #else #define __GNU_GETTEXT_SYMBOL_EXPRESSION 0 #endif $gt_revision_test_code ]], [[ bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION ]])], [LIBINTL="$LIBINTL $LIBICONV" LTLIBINTL="$LTLIBINTL $LTLIBICONV" eval "$gt_func_gnugettext_libintl=yes" ]) fi CPPFLAGS="$gt_save_CPPFLAGS" LIBS="$gt_save_LIBS"]) fi dnl If an already present or preinstalled GNU gettext() is found, dnl use it. But if this macro is used in GNU gettext, and GNU dnl gettext is already preinstalled in libintl, we update this dnl libintl. (Cf. the install rule in intl/Makefile.in.) if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \ && test "$PACKAGE" != gettext-runtime \ && test "$PACKAGE" != gettext-tools; }; then gt_use_preinstalled_gnugettext=yes else dnl Reset the values set by searching for libintl. LIBINTL= LTLIBINTL= INCINTL= fi ifelse(gt_included_intl, yes, [ if test "$gt_use_preinstalled_gnugettext" != "yes"; then dnl GNU gettext is not found in the C library. dnl Fall back on included GNU gettext library. nls_cv_use_gnu_gettext=yes fi fi if test "$nls_cv_use_gnu_gettext" = "yes"; then dnl Mark actions used to generate GNU NLS library. BUILD_INCLUDED_LIBINTL=yes USE_INCLUDED_LIBINTL=yes LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV $LIBTHREAD" LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV $LTLIBTHREAD" LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` fi CATOBJEXT= if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then dnl Mark actions to use GNU gettext tools. CATOBJEXT=.gmo fi ]) if test -n "$INTL_MACOSX_LIBS"; then if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then dnl Some extra flags are needed during linking. LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" fi fi if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then AC_DEFINE([ENABLE_NLS], [1], [Define to 1 if translation of program messages to the user's native language is requested.]) else USE_NLS=no fi fi AC_MSG_CHECKING([whether to use NLS]) AC_MSG_RESULT([$USE_NLS]) if test "$USE_NLS" = "yes"; then AC_MSG_CHECKING([where the gettext function comes from]) if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then gt_source="external libintl" else gt_source="libc" fi else gt_source="included intl directory" fi AC_MSG_RESULT([$gt_source]) fi if test "$USE_NLS" = "yes"; then if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then AC_MSG_CHECKING([how to link with libintl]) AC_MSG_RESULT([$LIBINTL]) AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) fi dnl For backward compatibility. Some packages may be using this. AC_DEFINE([HAVE_GETTEXT], [1], [Define if the GNU gettext() function is already present or preinstalled.]) AC_DEFINE([HAVE_DCGETTEXT], [1], [Define if the GNU dcgettext() function is already present or preinstalled.]) fi dnl We need to process the po/ directory. POSUB=po fi ifelse(gt_included_intl, yes, [ dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL dnl to 'yes' because some of the testsuite requires it. if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then BUILD_INCLUDED_LIBINTL=yes fi dnl Make all variables we use known to autoconf. AC_SUBST([BUILD_INCLUDED_LIBINTL]) AC_SUBST([USE_INCLUDED_LIBINTL]) AC_SUBST([CATOBJEXT]) dnl For backward compatibility. Some configure.ins may be using this. nls_cv_header_intl= nls_cv_header_libgt= dnl For backward compatibility. Some Makefiles may be using this. DATADIRNAME=share AC_SUBST([DATADIRNAME]) dnl For backward compatibility. Some Makefiles may be using this. INSTOBJEXT=.mo AC_SUBST([INSTOBJEXT]) dnl For backward compatibility. Some Makefiles may be using this. GENCAT=gencat AC_SUBST([GENCAT]) dnl For backward compatibility. Some Makefiles may be using this. INTLOBJS= if test "$USE_INCLUDED_LIBINTL" = yes; then INTLOBJS="\$(GETTOBJS)" fi AC_SUBST([INTLOBJS]) dnl Enable libtool support if the surrounding package wishes it. INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix AC_SUBST([INTL_LIBTOOL_SUFFIX_PREFIX]) ]) dnl For backward compatibility. Some Makefiles may be using this. INTLLIBS="$LIBINTL" AC_SUBST([INTLLIBS]) dnl Make all documented variables known to autoconf. AC_SUBST([LIBINTL]) AC_SUBST([LTLIBINTL]) AC_SUBST([POSUB]) ]) dnl gt_NEEDS_INIT ensures that the gt_needs variable is initialized. m4_define([gt_NEEDS_INIT], [ m4_divert_text([DEFAULTS], [gt_needs=]) m4_define([gt_NEEDS_INIT], []) ]) dnl Usage: AM_GNU_GETTEXT_NEED([NEEDSYMBOL]) AC_DEFUN([AM_GNU_GETTEXT_NEED], [ m4_divert_text([INIT_PREPARE], [gt_needs="$gt_needs $1"]) ]) dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version]) AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) dnl Usage: AM_GNU_GETTEXT_REQUIRE_VERSION([gettext-version]) AC_DEFUN([AM_GNU_GETTEXT_REQUIRE_VERSION], []) gnomint-1.6.4/m4/lib-prefix.m40000644000000000000000000002042215212761267014567 0ustar00rootroot# lib-prefix.m4 serial 7 (gettext-0.18) dnl Copyright (C) 2001-2005, 2008-2016 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't dnl require excessive bracketing. ifdef([AC_HELP_STRING], [AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])], [AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])]) dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed dnl to access previously installed libraries. The basic assumption is that dnl a user will want packages to use other packages he previously installed dnl with the same --prefix option. dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate dnl libraries, but is otherwise very convenient. AC_DEFUN([AC_LIB_PREFIX], [ AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) dnl By default, look in $includedir and $libdir. use_additional=yes AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) AC_LIB_ARG_WITH([lib-prefix], [ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib --without-lib-prefix don't search for libraries in includedir and libdir], [ if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" fi fi ]) if test $use_additional = yes; then dnl Potentially add $additional_includedir to $CPPFLAGS. dnl But don't add it dnl 1. if it's the standard /usr/include, dnl 2. if it's already present in $CPPFLAGS, dnl 3. if it's /usr/local/include and we are using GCC on Linux, dnl 4. if it doesn't exist as a directory. if test "X$additional_includedir" != "X/usr/include"; then haveit= for x in $CPPFLAGS; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then if test -d "$additional_includedir"; then dnl Really add $additional_includedir to $CPPFLAGS. CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" fi fi fi fi dnl Potentially add $additional_libdir to $LDFLAGS. dnl But don't add it dnl 1. if it's the standard /usr/lib, dnl 2. if it's already present in $LDFLAGS, dnl 3. if it's /usr/local/lib and we are using GCC on Linux, dnl 4. if it doesn't exist as a directory. if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then haveit= for x in $LDFLAGS; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LDFLAGS. LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" fi fi fi fi fi ]) dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, dnl acl_final_exec_prefix, containing the values to which $prefix and dnl $exec_prefix will expand at the end of the configure script. AC_DEFUN([AC_LIB_PREPARE_PREFIX], [ dnl Unfortunately, prefix and exec_prefix get only finally determined dnl at the end of configure. if test "X$prefix" = "XNONE"; then acl_final_prefix="$ac_default_prefix" else acl_final_prefix="$prefix" fi if test "X$exec_prefix" = "XNONE"; then acl_final_exec_prefix='${prefix}' else acl_final_exec_prefix="$exec_prefix" fi acl_save_prefix="$prefix" prefix="$acl_final_prefix" eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" prefix="$acl_save_prefix" ]) dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the dnl variables prefix and exec_prefix bound to the values they will have dnl at the end of the configure script. AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], [ acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" $1 exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" ]) dnl AC_LIB_PREPARE_MULTILIB creates dnl - a variable acl_libdirstem, containing the basename of the libdir, either dnl "lib" or "lib64" or "lib/64", dnl - a variable acl_libdirstem2, as a secondary possible value for dnl acl_libdirstem, either the same as acl_libdirstem or "lib/sparcv9" or dnl "lib/amd64". AC_DEFUN([AC_LIB_PREPARE_MULTILIB], [ dnl There is no formal standard regarding lib and lib64. dnl On glibc systems, the current practice is that on a system supporting dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under dnl $prefix/lib64 and 32-bit libraries go under $prefix/lib. We determine dnl the compiler's default mode by looking at the compiler's library search dnl path. If at least one of its elements ends in /lib64 or points to a dnl directory whose absolute pathname ends in /lib64, we assume a 64-bit ABI. dnl Otherwise we use the default, namely "lib". dnl On Solaris systems, the current practice is that on a system supporting dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under dnl $prefix/lib/64 (which is a symlink to either $prefix/lib/sparcv9 or dnl $prefix/lib/amd64) and 32-bit libraries go under $prefix/lib. AC_REQUIRE([AC_CANONICAL_HOST]) acl_libdirstem=lib acl_libdirstem2= case "$host_os" in solaris*) dnl See Solaris 10 Software Developer Collection > Solaris 64-bit Developer's Guide > The Development Environment dnl . dnl "Portable Makefiles should refer to any library directories using the 64 symbolic link." dnl But we want to recognize the sparcv9 or amd64 subdirectory also if the dnl symlink is missing, so we set acl_libdirstem2 too. AC_CACHE_CHECK([for 64-bit host], [gl_cv_solaris_64bit], [AC_EGREP_CPP([sixtyfour bits], [ #ifdef _LP64 sixtyfour bits #endif ], [gl_cv_solaris_64bit=yes], [gl_cv_solaris_64bit=no]) ]) if test $gl_cv_solaris_64bit = yes; then acl_libdirstem=lib/64 case "$host_cpu" in sparc*) acl_libdirstem2=lib/sparcv9 ;; i*86 | x86_64) acl_libdirstem2=lib/amd64 ;; esac fi ;; *) searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` if test -n "$searchpath"; then acl_save_IFS="${IFS= }"; IFS=":" for searchdir in $searchpath; do if test -d "$searchdir"; then case "$searchdir" in */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; */../ | */.. ) # Better ignore directories of this form. They are misleading. ;; *) searchdir=`cd "$searchdir" && pwd` case "$searchdir" in */lib64 ) acl_libdirstem=lib64 ;; esac ;; esac fi done IFS="$acl_save_IFS" fi ;; esac test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem" ]) gnomint-1.6.4/m4/progtest.m40000644000000000000000000000604015212761266014374 0ustar00rootroot# progtest.m4 serial 7 (gettext-0.18.2) dnl Copyright (C) 1996-2003, 2005, 2008-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1996. AC_PREREQ([2.50]) # Search path for a program which passes the given test. dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) AC_DEFUN([AM_PATH_PROG_WITH_TEST], [ # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which # contains only /bin. Note that ksh looks also at the FPATH variable, # so we have to set that as well for the test. PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ || PATH_SEPARATOR=';' } fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "$2", so it can be a program name with args. set dummy $2; ac_word=[$]2 AC_MSG_CHECKING([for $ac_word]) AC_CACHE_VAL([ac_cv_path_$1], [case "[$]$1" in [[\\/]]* | ?:[[\\/]]*) ac_cv_path_$1="[$]$1" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in ifelse([$5], , $PATH, [$5]); do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD if [$3]; then ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" dnl If no 4th arg is given, leave the cache variable unset, dnl so AC_PATH_PROGS will keep looking. ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" ])dnl ;; esac])dnl $1="$ac_cv_path_$1" if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then AC_MSG_RESULT([$][$1]) else AC_MSG_RESULT([no]) fi AC_SUBST([$1])dnl ]) gnomint-1.6.4/m4/lib-link.m40000644000000000000000000010044315212761267014231 0ustar00rootroot# lib-link.m4 serial 26 (gettext-0.18.2) dnl Copyright (C) 2001-2016 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. AC_PREREQ([2.54]) dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and dnl the libraries corresponding to explicit and implicit dependencies. dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and dnl augments the CPPFLAGS variable. dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem. AC_DEFUN([AC_LIB_LINKFLAGS], [ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) pushdef([Name],[m4_translit([$1],[./+-], [____])]) pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [ AC_LIB_LINKFLAGS_BODY([$1], [$2]) ac_cv_lib[]Name[]_libs="$LIB[]NAME" ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME" ac_cv_lib[]Name[]_cppflags="$INC[]NAME" ac_cv_lib[]Name[]_prefix="$LIB[]NAME[]_PREFIX" ]) LIB[]NAME="$ac_cv_lib[]Name[]_libs" LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs" INC[]NAME="$ac_cv_lib[]Name[]_cppflags" LIB[]NAME[]_PREFIX="$ac_cv_lib[]Name[]_prefix" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) AC_SUBST([LIB]NAME) AC_SUBST([LTLIB]NAME) AC_SUBST([LIB]NAME[_PREFIX]) dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the dnl results of this search when this library appears as a dependency. HAVE_LIB[]NAME=yes popdef([NAME]) popdef([Name]) ]) dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode, [missing-message]) dnl searches for libname and the libraries corresponding to explicit and dnl implicit dependencies, together with the specified include files and dnl the ability to compile and link the specified testcode. The missing-message dnl defaults to 'no' and may contain additional hints for the user. dnl If found, it sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} dnl and LTLIB${NAME} variables and augments the CPPFLAGS variable, and dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty. dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem. AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], [ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) pushdef([Name],[m4_translit([$1],[./+-], [____])]) pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME dnl accordingly. AC_LIB_LINKFLAGS_BODY([$1], [$2]) dnl Add $INC[]NAME to CPPFLAGS before performing the following checks, dnl because if the user has installed lib[]Name and not disabled its use dnl via --without-lib[]Name-prefix, he wants to use it. ac_save_CPPFLAGS="$CPPFLAGS" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [ ac_save_LIBS="$LIBS" dnl If $LIB[]NAME contains some -l options, add it to the end of LIBS, dnl because these -l options might require -L options that are present in dnl LIBS. -l options benefit only from the -L options listed before it. dnl Otherwise, add it to the front of LIBS, because it may be a static dnl library that depends on another static library that is present in LIBS. dnl Static libraries benefit only from the static libraries listed after dnl it. case " $LIB[]NAME" in *" -l"*) LIBS="$LIBS $LIB[]NAME" ;; *) LIBS="$LIB[]NAME $LIBS" ;; esac AC_LINK_IFELSE( [AC_LANG_PROGRAM([[$3]], [[$4]])], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name='m4_if([$5], [], [no], [[$5]])']) LIBS="$ac_save_LIBS" ]) if test "$ac_cv_lib[]Name" = yes; then HAVE_LIB[]NAME=yes AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the lib][$1 library.]) AC_MSG_CHECKING([how to link with lib[]$1]) AC_MSG_RESULT([$LIB[]NAME]) else HAVE_LIB[]NAME=no dnl If $LIB[]NAME didn't lead to a usable library, we don't need dnl $INC[]NAME either. CPPFLAGS="$ac_save_CPPFLAGS" LIB[]NAME= LTLIB[]NAME= LIB[]NAME[]_PREFIX= fi AC_SUBST([HAVE_LIB]NAME) AC_SUBST([LIB]NAME) AC_SUBST([LTLIB]NAME) AC_SUBST([LIB]NAME[_PREFIX]) popdef([NAME]) popdef([Name]) ]) dnl Determine the platform dependent parameters needed to use rpath: dnl acl_libext, dnl acl_shlibext, dnl acl_libname_spec, dnl acl_library_names_spec, dnl acl_hardcode_libdir_flag_spec, dnl acl_hardcode_libdir_separator, dnl acl_hardcode_direct, dnl acl_hardcode_minus_L. AC_DEFUN([AC_LIB_RPATH], [ dnl Tell automake >= 1.10 to complain if config.rpath is missing. m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])]) AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir AC_CACHE_CHECK([for shared library run path origin], [acl_cv_rpath], [ CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh . ./conftest.sh rm -f ./conftest.sh acl_cv_rpath=done ]) wl="$acl_cv_wl" acl_libext="$acl_cv_libext" acl_shlibext="$acl_cv_shlibext" acl_libname_spec="$acl_cv_libname_spec" acl_library_names_spec="$acl_cv_library_names_spec" acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" acl_hardcode_direct="$acl_cv_hardcode_direct" acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" dnl Determine whether the user wants rpath handling at all. AC_ARG_ENABLE([rpath], [ --disable-rpath do not hardcode runtime library paths], :, enable_rpath=yes) ]) dnl AC_LIB_FROMPACKAGE(name, package) dnl declares that libname comes from the given package. The configure file dnl will then not have a --with-libname-prefix option but a dnl --with-package-prefix option. Several libraries can come from the same dnl package. This declaration must occur before an AC_LIB_LINKFLAGS or similar dnl macro call that searches for libname. AC_DEFUN([AC_LIB_FROMPACKAGE], [ pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) define([acl_frompackage_]NAME, [$2]) popdef([NAME]) pushdef([PACK],[$2]) pushdef([PACKUP],[m4_translit(PACK,[abcdefghijklmnopqrstuvwxyz./+-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) define([acl_libsinpackage_]PACKUP, m4_ifdef([acl_libsinpackage_]PACKUP, [m4_defn([acl_libsinpackage_]PACKUP)[, ]],)[lib$1]) popdef([PACKUP]) popdef([PACK]) ]) dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and dnl the libraries corresponding to explicit and implicit dependencies. dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. dnl Also, sets the LIB${NAME}_PREFIX variable to nonempty if libname was found dnl in ${LIB${NAME}_PREFIX}/$acl_libdirstem. AC_DEFUN([AC_LIB_LINKFLAGS_BODY], [ AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) pushdef([PACK],[m4_ifdef([acl_frompackage_]NAME, [acl_frompackage_]NAME, lib[$1])]) pushdef([PACKUP],[m4_translit(PACK,[abcdefghijklmnopqrstuvwxyz./+-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) pushdef([PACKLIBS],[m4_ifdef([acl_frompackage_]NAME, [acl_libsinpackage_]PACKUP, lib[$1])]) dnl Autoconf >= 2.61 supports dots in --with options. pushdef([P_A_C_K],[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.61]),[-1],[m4_translit(PACK,[.],[_])],PACK)]) dnl By default, look in $includedir and $libdir. use_additional=yes AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) AC_ARG_WITH(P_A_C_K[-prefix], [[ --with-]]P_A_C_K[[-prefix[=DIR] search for ]PACKLIBS[ in DIR/include and DIR/lib --without-]]P_A_C_K[[-prefix don't search for ]PACKLIBS[ in includedir and libdir]], [ if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" if test "$acl_libdirstem2" != "$acl_libdirstem" \ && ! test -d "$withval/$acl_libdirstem"; then additional_libdir="$withval/$acl_libdirstem2" fi fi fi ]) dnl Search the library and its dependencies in $additional_libdir and dnl $LDFLAGS. Using breadth-first-seach. LIB[]NAME= LTLIB[]NAME= INC[]NAME= LIB[]NAME[]_PREFIX= dnl HAVE_LIB${NAME} is an indicator that LIB${NAME}, LTLIB${NAME} have been dnl computed. So it has to be reset here. HAVE_LIB[]NAME= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='$1 $2' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" dnl See if it was already located by an earlier AC_LIB_LINKFLAGS dnl or AC_LIB_HAVE_LINKFLAGS call. uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value" else dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined dnl that this library doesn't exist. So just drop it. : fi else dnl Search the library lib$name in $additional_libdir and $LDFLAGS dnl and the already constructed $LIBNAME/$LTLIBNAME. found_dir= found_la= found_so= found_a= eval libname=\"$acl_libname_spec\" # typically: libname=lib$name if test -n "$acl_shlibext"; then shrext=".$acl_shlibext" # typically: shrext=.so else shrext= fi if test $use_additional = yes; then dir="$additional_libdir" dnl The same code as in the loop below: dnl First look for a shared library. if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi dnl Then look for a static library. if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext"; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` dnl First look for a shared library. if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi dnl Then look for a static library. if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext"; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then dnl Found the library. LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then dnl Linking with a shared library. We attempt to hardcode its dnl directory into the executable's runpath, unless it's the dnl standard /usr/lib. if test "$enable_rpath" = no \ || test "X$found_dir" = "X/usr/$acl_libdirstem" \ || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then dnl No hardcoding is needed. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else dnl Use an explicit option to hardcode DIR into the resulting dnl binary. dnl Potentially add DIR to ltrpathdirs. dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi dnl The hardcoding into $LIBNAME is system dependent. if test "$acl_hardcode_direct" = yes; then dnl Using DIR/libNAME.so during linking hardcodes DIR into the dnl resulting binary. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then dnl Use an explicit option to hardcode DIR into the resulting dnl binary. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" dnl Potentially add DIR to rpathdirs. dnl The rpathdirs will be appended to $LIBNAME at the end. haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else dnl Rely on "-L$found_dir". dnl But don't add it if it's already contained in the LDFLAGS dnl or the already constructed $LIBNAME haveit= for x in $LDFLAGS $LIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir" fi if test "$acl_hardcode_minus_L" != no; then dnl FIXME: Not sure whether we should use dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" dnl here. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else dnl We cannot use $acl_hardcode_runpath_var and LD_RUN_PATH dnl here, because this doesn't fit in flags passed to the dnl compiler. So give up. No hardcoding. This affects only dnl very old systems. dnl FIXME: Not sure whether we should use dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" dnl here. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then dnl Linking with a static library. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a" else dnl We shouldn't come here, but anyway it's good to have a dnl fallback. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name" fi fi dnl Assume the include files are nearby. additional_includedir= case "$found_dir" in */$acl_libdirstem | */$acl_libdirstem/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` if test "$name" = '$1'; then LIB[]NAME[]_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; */$acl_libdirstem2 | */$acl_libdirstem2/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` if test "$name" = '$1'; then LIB[]NAME[]_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then dnl Potentially add $additional_includedir to $INCNAME. dnl But don't add it dnl 1. if it's the standard /usr/include, dnl 2. if it's /usr/local/include and we are using GCC on Linux, dnl 3. if it's already present in $CPPFLAGS or the already dnl constructed $INCNAME, dnl 4. if it doesn't exist as a directory. if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INC[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then dnl Really add $additional_includedir to $INCNAME. INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir" fi fi fi fi fi dnl Look for dependencies. if test -n "$found_la"; then dnl Read the .la file. It defines the variables dnl dlname, library_names, old_library, dependency_libs, current, dnl age, revision, installed, dlopen, dlpreopen, libdir. save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" dnl We use only dependency_libs. for dep in $dependency_libs; do case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME. dnl But don't add it dnl 1. if it's the standard /usr/lib, dnl 2. if it's /usr/local/lib and we are using GCC on Linux, dnl 3. if it's already present in $LDFLAGS or the already dnl constructed $LIBNAME, dnl 4. if it doesn't exist as a directory. if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then haveit= if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LIBNAME. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir" fi fi haveit= for x in $LDFLAGS $LTLIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LTLIBNAME. LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then dnl Potentially add DIR to rpathdirs. dnl The rpathdirs will be appended to $LIBNAME at the end. haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi dnl Potentially add DIR to ltrpathdirs. dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) dnl Handle this in the next round. names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) dnl Handle this in the next round. Throw away the .la's dnl directory; it is already contained in a preceding -L dnl option. names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) dnl Most likely an immediate library name. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep" LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep" ;; esac done fi else dnl Didn't find the library; assume it is in the system directories dnl known to the linker and runtime loader. (All the system dnl directories known to the linker should also be known to the dnl runtime loader, otherwise the system is severely misconfigured.) LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$acl_hardcode_libdir_separator"; then dnl Weird platform: only the last -rpath option counts, the user must dnl pass all path elements in one option. We can arrange that for a dnl single library, but not when more than one $LIBNAMEs are used. alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" done dnl Note: acl_hardcode_libdir_flag_spec uses $libdir and $wl. acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" else dnl The -rpath options are cumulative. for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then dnl When using libtool, the option that works for both libraries and dnl executables is -R. The -R options are cumulative. for found_dir in $ltrpathdirs; do LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" done fi popdef([P_A_C_K]) popdef([PACKLIBS]) popdef([PACKUP]) popdef([PACK]) popdef([NAME]) ]) dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, dnl unless already present in VAR. dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes dnl contains two or three consecutive elements that belong together. AC_DEFUN([AC_LIB_APPENDTOVAR], [ for element in [$2]; do haveit= for x in $[$1]; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then [$1]="${[$1]}${[$1]:+ }$element" fi done ]) dnl For those cases where a variable contains several -L and -l options dnl referring to unknown libraries and directories, this macro determines the dnl necessary additional linker options for the runtime path. dnl AC_LIB_LINKFLAGS_FROM_LIBS([LDADDVAR], [LIBSVALUE], [USE-LIBTOOL]) dnl sets LDADDVAR to linker options needed together with LIBSVALUE. dnl If USE-LIBTOOL evaluates to non-empty, linking with libtool is assumed, dnl otherwise linking without libtool is assumed. AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS], [ AC_REQUIRE([AC_LIB_RPATH]) AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) $1= if test "$enable_rpath" != no; then if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then dnl Use an explicit option to hardcode directories into the resulting dnl binary. rpathdirs= next= for opt in $2; do if test -n "$next"; then dir="$next" dnl No need to hardcode the standard /usr/lib. if test "X$dir" != "X/usr/$acl_libdirstem" \ && test "X$dir" != "X/usr/$acl_libdirstem2"; then rpathdirs="$rpathdirs $dir" fi next= else case $opt in -L) next=yes ;; -L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'` dnl No need to hardcode the standard /usr/lib. if test "X$dir" != "X/usr/$acl_libdirstem" \ && test "X$dir" != "X/usr/$acl_libdirstem2"; then rpathdirs="$rpathdirs $dir" fi next= ;; *) next= ;; esac fi done if test "X$rpathdirs" != "X"; then if test -n ""$3""; then dnl libtool is used for linking. Use -R options. for dir in $rpathdirs; do $1="${$1}${$1:+ }-R$dir" done else dnl The linker is used for linking directly. if test -n "$acl_hardcode_libdir_separator"; then dnl Weird platform: only the last -rpath option counts, the user dnl must pass all path elements in one option. alldirs= for dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$dir" done acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" $1="$flag" else dnl The -rpath options are cumulative. for dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$dir" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" $1="${$1}${$1:+ }$flag" done fi fi fi fi fi AC_SUBST([$1]) ]) gnomint-1.6.4/src/0000755000000000000000000000000015212761357012533 5ustar00rootrootgnomint-1.6.4/src/creation_process_window.h0000644000000000000000000000305615212761266017640 0ustar00rootroot// gnoMint: a graphical interface for managing a certification authority // Copyright (C) 2006-2009 David Marín Carreño // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #ifndef _CREATION_PROCESS_WINDOW_H_ #define _CREATION_PROCESS_WINDOW_H_ #include "tls.h" #ifndef GNOMINTCLI void creation_process_window_error_dialog (gchar *message); void on_cancel_creation_process_clicked (GtkButton *button, gpointer user_data); void creation_process_window_ca_display (TlsCreationData * ca_creation_data); void creation_process_window_csr_display (TlsCreationData * ca_creation_data); void creation_process_window_ca_finish (void); gint creation_process_window_ca_pulse (gpointer data); void creation_process_window_csr_finish (void); gint creation_process_window_csr_pulse (gpointer data); #endif #endif gnomint-1.6.4/src/san_entry.h0000644000000000000000000000311515212761266014705 0ustar00rootroot// gnoMint: a graphical interface for managing a certification authority // Copyright (C) 2006-2009 David Marín Carreño // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #ifndef SAN_ENTRY_H #define SAN_ENTRY_H #include G_BEGIN_DECLS #define GNOMINT_TYPE_SAN_ENTRY (gnomint_san_entry_get_type()) G_DECLARE_FINAL_TYPE (GnomintSanEntry, gnomint_san_entry, GNOMINT, SAN_ENTRY, GObject) GnomintSanEntry *gnomint_san_entry_new (const gchar *san_type, const gchar *value); void gnomint_san_entry_set_san_type (GnomintSanEntry *self, const gchar *san_type); const gchar *gnomint_san_entry_get_san_type (GnomintSanEntry *self); void gnomint_san_entry_set_value (GnomintSanEntry *self, const gchar *value); const gchar *gnomint_san_entry_get_value (GnomintSanEntry *self); G_END_DECLS #endif /* SAN_ENTRY_H */ gnomint-1.6.4/src/gnomint_time.c0000644000000000000000000001013215212761266015364 0ustar00rootroot// gnoMint: a graphical interface for managing a certification authority // Copyright (C) 2006-2026 David Marín Carreño // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #include #include #include "gnomint_time.h" time_t gnomint_time_max (void) { if (sizeof (time_t) >= 8) // Far beyond any certificate's lifetime; the clamp below never // actually triggers on 64-bit-time_t platforms. return (time_t) 0x7FFFFFFFFFFFFFFFLL; // 32-bit signed time_t: 2038-01-19 03:14:07 UTC. return (time_t) 0x7FFFFFFF; } time_t gnomint_mktime_checked (struct tm *tm, gboolean *overflowed) { time_t result; errno = 0; result = mktime (tm); // Certificate expiration is always a future date, so the only way // mktime() returns (time_t)-1 here is genuine overflow of a 32-bit // time_t (errno EOVERFLOW), not the legitimate timestamp -1. if (result == (time_t) -1) { if (overflowed) *overflowed = TRUE; return gnomint_time_max (); } if (overflowed) *overflowed = FALSE; return result; } struct tm *gnomint_gmtime (gint64 unixtime, struct tm *result) { gint64 days, rem, z, era, doe, yoe, y, doy, mp, d, m; gint64 wday; // Days in the year before the start of each month (non-leap year). static const gint mdays_before[12] = { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 }; // Split into whole days and the seconds within the day, handling // negative timestamps (pre-1970) with floored division. days = unixtime / 86400; rem = unixtime % 86400; if (rem < 0) { rem += 86400; days -= 1; } result->tm_hour = (gint) (rem / 3600); result->tm_min = (gint) ((rem % 3600) / 60); result->tm_sec = (gint) (rem % 60); // 1970-01-01 was a Thursday (tm_wday == 4). wday = (4 + (days % 7) + 7) % 7; result->tm_wday = (gint) wday; // Civil-from-days (Howard Hinnant's algorithm), shifting the epoch to // 0000-03-01 so that leap days fall at the end of the 400-year era. z = days + 719468; era = (z >= 0 ? z : z - 146096) / 146097; doe = z - era * 146097; // [0, 146096] yoe = (doe - doe / 1460 + doe / 36524 - doe / 146096) / 365; // [0, 399] y = yoe + era * 400; doy = doe - (365 * yoe + yoe / 4 - yoe / 100); // [0, 365] mp = (5 * doy + 2) / 153; // [0, 11] d = doy - (153 * mp + 2) / 5 + 1; // [1, 31] m = mp < 10 ? mp + 3 : mp - 9; // [1, 12] y += (m <= 2); result->tm_year = (gint) (y - 1900); result->tm_mon = (gint) (m - 1); result->tm_mday = (gint) d; // Day of the year, accounting for the leap day once March is reached. result->tm_yday = mdays_before[result->tm_mon] + (result->tm_mday - 1); if (result->tm_mon > 1 && ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0)) result->tm_yday += 1; result->tm_isdst = 0; return result; } gboolean gnomint_time_display_is_uncertain (gint64 unixtime) { // 64-bit time_t represents every realistic certificate date exactly. if (sizeof (time_t) >= 8) return FALSE; // 32-bit time_t: the representable range ends 2038-01-19 03:14:07 UTC. // A value within the final stretch before that ceiling, or wrapped to a // negative value, is the fingerprint of a later date that GnuTLS's // time_t getter could not represent. 2114380800 == 2037-01-01 UTC; any // date from then on is too close to the ceiling to be trusted here. return (unixtime < 0) || (unixtime >= 2114380800LL); } gnomint-1.6.4/src/ca_selector.c0000644000000000000000000002411315212761266015162 0ustar00rootroot// gnoMint: a graphical interface for managing a certification authority // Copyright (C) 2006-2009 David Marin Carreno // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #include #include #include #include #include "ca_selector.h" #include "ca_file.h" /* ------------------------------------------------------------------ */ /* Column indices returned by ca_file_foreach_ca (SQLite callback) */ /* ------------------------------------------------------------------ */ enum { CA_SEL_COL_ID = 0, CA_SEL_COL_SERIAL = 1, CA_SEL_COL_SUBJECT = 2, CA_SEL_COL_DN = 3, CA_SEL_COL_PARENT_DN = 4, CA_SEL_COL_PEM = 5, CA_SEL_COL_EXPIRATION = 6, CA_SEL_COL_SUBJECT_COUNT = 7 }; /* ------------------------------------------------------------------ */ /* Population state passed through the SQLite callback */ /* ------------------------------------------------------------------ */ typedef struct { GListStore *root_store; GnomintCertRow *last_row; /* last row inserted (any level) */ GnomintCertRow *last_parent; /* current parent row (or NULL) */ } _CaSelectorPopCtx; /* Recursive helper: find a GnomintCertRow with the given DN in a store. */ static GnomintCertRow * _find_row_with_dn (GListStore *store, const gchar *dn) { guint n = g_list_model_get_n_items (G_LIST_MODEL (store)); for (guint i = 0; i < n; i++) { GnomintCertRow *row = g_list_model_get_item (G_LIST_MODEL (store), i); const gchar *row_dn = gnomint_cert_row_get_dn (row); if (row_dn && !strcmp (row_dn, dn)) { /* Found -- return without unref; caller must unref. */ return row; } /* Search children. */ GListStore *children = gnomint_cert_row_get_children (row); GnomintCertRow *found = _find_row_with_dn (children, dn); g_object_unref (row); if (found) return found; } return NULL; } /* SQLite callback for ca_file_foreach_ca(). */ static int _ca_selector_add_ca (void *pArg, int argc, char **argv, char **columnNames) { (void) argc; (void) columnNames; _CaSelectorPopCtx *ctx = (_CaSelectorPopCtx *) pArg; gchar *subject_with_expiration = ca_file_format_subject_with_expiration ( argv[CA_SEL_COL_SUBJECT], argv[CA_SEL_COL_EXPIRATION], argv[CA_SEL_COL_SUBJECT_COUNT]); GnomintCertRow *row = gnomint_cert_row_new (); gnomint_cert_row_set_id (row, (guint64) atoll (argv[CA_SEL_COL_ID])); gnomint_cert_row_set_serial (row, argv[CA_SEL_COL_SERIAL]); gnomint_cert_row_set_subject (row, subject_with_expiration); gnomint_cert_row_set_dn (row, argv[CA_SEL_COL_DN]); gnomint_cert_row_set_parent_dn (row, argv[CA_SEL_COL_PARENT_DN]); gnomint_cert_row_set_pem (row, argv[CA_SEL_COL_PEM]); gnomint_cert_row_set_expiration (row, argv[CA_SEL_COL_EXPIRATION]); gnomint_cert_row_set_is_ca (row, TRUE); gnomint_cert_row_set_item_type (row, GNOMINT_ROW_TYPE_CA); g_free (subject_with_expiration); /* Determine where to insert: top-level or child of a parent. */ const gchar *dn = argv[CA_SEL_COL_DN]; const gchar *parent_dn = argv[CA_SEL_COL_PARENT_DN]; GListStore *target_store = ctx->root_store; if (dn && parent_dn && strcmp (dn, parent_dn) != 0) { /* Not self-signed -- find parent row by DN. */ GnomintCertRow *parent = _find_row_with_dn (ctx->root_store, parent_dn); if (parent) { target_store = gnomint_cert_row_get_children (parent); ctx->last_parent = parent; /* parent ref will be released when ctx->last_parent is replaced. */ } } else { /* Self-signed: clear parent tracking. */ ctx->last_parent = NULL; } g_list_store_append (target_store, row); if (ctx->last_row) g_object_unref (ctx->last_row); ctx->last_row = row; /* transfer ownership */ return 0; } GListStore * ca_selector_populate (void) { GListStore *root_store = g_list_store_new (GNOMINT_TYPE_CERT_ROW); _CaSelectorPopCtx ctx; ctx.root_store = root_store; ctx.last_row = NULL; ctx.last_parent = NULL; ca_file_foreach_ca (_ca_selector_add_ca, &ctx); if (ctx.last_row) g_object_unref (ctx.last_row); return root_store; } /* ------------------------------------------------------------------ */ /* GtkTreeListModel child-model callback */ /* ------------------------------------------------------------------ */ static GListModel * _ca_selector_create_child_model (gpointer item, gpointer user_data G_GNUC_UNUSED) { GnomintCertRow *row = GNOMINT_CERT_ROW (item); GListStore *children = gnomint_cert_row_get_children (row); if (g_list_model_get_n_items (G_LIST_MODEL (children)) == 0) return NULL; return G_LIST_MODEL (g_object_ref (children)); } /* Helper: expand all rows. */ static void _ca_selector_expand_all (GtkTreeListModel *tree_model) { guint n = g_list_model_get_n_items (G_LIST_MODEL (tree_model)); for (guint i = 0; i < n; i++) { GtkTreeListRow *tlr = gtk_tree_list_model_get_row (tree_model, i); if (tlr) { gtk_tree_list_row_set_expanded (tlr, TRUE); g_object_unref (tlr); } n = g_list_model_get_n_items (G_LIST_MODEL (tree_model)); } } /* ------------------------------------------------------------------ */ /* GtkColumnView factory callbacks (Subject column with tree expander) */ /* ------------------------------------------------------------------ */ static void _ca_selector_subject_setup (GtkSignalListItemFactory *factory G_GNUC_UNUSED, GtkListItem *list_item, gpointer user_data G_GNUC_UNUSED) { GtkWidget *expander = gtk_tree_expander_new (); GtkWidget *label = gtk_label_new (NULL); gtk_label_set_xalign (GTK_LABEL (label), 0); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); gtk_label_set_ellipsize (GTK_LABEL (label), PANGO_ELLIPSIZE_END); gtk_tree_expander_set_child (GTK_TREE_EXPANDER (expander), label); gtk_list_item_set_child (list_item, expander); } static void _ca_selector_subject_bind (GtkSignalListItemFactory *factory G_GNUC_UNUSED, GtkListItem *list_item, gpointer user_data G_GNUC_UNUSED) { GtkTreeListRow *tree_row = GTK_TREE_LIST_ROW ( gtk_list_item_get_item (list_item)); GtkWidget *expander = gtk_list_item_get_child (list_item); gtk_tree_expander_set_list_row (GTK_TREE_EXPANDER (expander), tree_row); GnomintCertRow *row = GNOMINT_CERT_ROW ( gtk_tree_list_row_get_item (tree_row)); GtkWidget *label = gtk_tree_expander_get_child ( GTK_TREE_EXPANDER (expander)); const gchar *subject = gnomint_cert_row_get_subject (row); gtk_label_set_markup (GTK_LABEL (label), subject ? subject : ""); g_object_unref (row); } /* ------------------------------------------------------------------ */ /* Public API */ /* ------------------------------------------------------------------ */ GtkSingleSelection * ca_selector_setup (GtkColumnView *colview, GListStore *root_store, GtkTreeListModel **tree_model_out) { /* Create a GtkTreeListModel wrapping the root store. */ GtkTreeListModel *tree_model = gtk_tree_list_model_new ( G_LIST_MODEL (g_object_ref (root_store)), FALSE, /* passthrough = FALSE so items are GtkTreeListRow */ TRUE, /* autoexpand */ _ca_selector_create_child_model, NULL, NULL); /* Wrap in a single-selection model. */ GtkSingleSelection *sel = gtk_single_selection_new ( G_LIST_MODEL (tree_model)); gtk_single_selection_set_autoselect (sel, FALSE); gtk_single_selection_set_can_unselect (sel, TRUE); /* Set up the Subject column with a tree expander. */ { GtkListItemFactory *f = gtk_signal_list_item_factory_new (); g_signal_connect (f, "setup", G_CALLBACK (_ca_selector_subject_setup), NULL); g_signal_connect (f, "bind", G_CALLBACK (_ca_selector_subject_bind), NULL); GtkColumnViewColumn *col = gtk_column_view_column_new ( _("Subject"), f); gtk_column_view_column_set_expand (col, TRUE); gtk_column_view_append_column (colview, col); g_object_unref (col); } /* Set the model on the column view. */ gtk_column_view_set_model (colview, GTK_SELECTION_MODEL (sel)); /* Expand all rows. */ _ca_selector_expand_all (tree_model); /* Return tree model if requested. */ if (tree_model_out) *tree_model_out = g_object_ref (tree_model); return sel; } guint64 ca_selector_get_selected_id (GtkSingleSelection *sel) { GnomintCertRow *row = ca_selector_get_selected_row (sel); if (!row) return 0; guint64 id = gnomint_cert_row_get_id (row); g_object_unref (row); return id; } GnomintCertRow * ca_selector_get_selected_row (GtkSingleSelection *sel) { GtkTreeListRow *tree_row = GTK_TREE_LIST_ROW ( gtk_single_selection_get_selected_item (sel)); if (!tree_row) return NULL; return GNOMINT_CERT_ROW (gtk_tree_list_row_get_item (tree_row)); } gboolean ca_selector_select_by_id (GtkSingleSelection *sel, guint64 ca_id) { GListModel *model = gtk_single_selection_get_model (sel); guint n = g_list_model_get_n_items (model); for (guint i = 0; i < n; i++) { GtkTreeListRow *tlr = g_list_model_get_item (model, i); if (!tlr) continue; GnomintCertRow *row = GNOMINT_CERT_ROW ( gtk_tree_list_row_get_item (tlr)); if (row) { guint64 rid = gnomint_cert_row_get_id (row); g_object_unref (row); if (rid == ca_id) { gtk_single_selection_set_selected (sel, i); g_object_unref (tlr); return TRUE; } } g_object_unref (tlr); } return FALSE; } gnomint-1.6.4/src/tls.h0000644000000000000000000001507315212761266013513 0ustar00rootroot// gnoMint: a graphical interface for managing a certification authority // Copyright (C) 2006-2009 David Marín Carreño // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #ifndef _TLS_H_ #define _TLS_H_ #include "uint160.h" #include #include #include #include #include #define TLS_INVALID_PASSWORD GNUTLS_E_DECRYPTION_FAILED #define TLS_NON_MATCHING_PRIVATE_KEY -2000 typedef struct { gchar * country; gchar * state; gchar * city; gchar * org; gchar * ou; gchar * cn; gchar * emailAddress; gint key_type; gint key_bitlength; gint key_months_before_expiration; time_t activation; time_t expiration; gchar * crl_distribution_point; gchar * password; gchar * parent_ca_id_str; gchar * subject_alt_name; // Comma-separated list of SANs (e.g., "DNS:example.com,DNS:*.example.com,IP:192.168.1.1") } TlsCreationData; typedef struct { gint key_months_before_expiration; time_t activation; time_t expiration; UInt160 serial; gboolean ca; gboolean crl_signing; gboolean digital_signature; gboolean data_encipherment; gboolean key_encipherment; gboolean non_repudiation; gboolean key_agreement; gboolean email_protection; gboolean code_signing; gboolean web_client; gboolean web_server; gboolean time_stamping; gboolean ocsp_signing; gboolean any_purpose; gchar * crl_distribution_point; gchar * cadb_password; gchar * subject_alt_name; // Comma-separated list of SANs (e.g., "DNS:example.com,DNS:*.example.com,IP:192.168.1.1") } TlsCertCreationData; typedef struct __TlsCert { UInt160 serial_number; gchar * cn; gchar * o; gchar * ou; gchar * c; gchar * st; gchar * l; gchar * dn; gchar * emailAddress; gchar * i_cn; gchar * i_o; gchar * i_ou; gchar * i_c; gchar * i_st; gchar * i_l; gchar * i_dn; gchar * i_emailAddress; gchar * sha1; gchar * md5; gchar * sha256; gchar * sha512; gchar * key_id; gchar * subject_key_id; gchar * issuer_key_id; gchar * crl_distribution_point; gchar * subject_alt_name; // Human-readable SANs (e.g., "DNS:example.com, IP:192.168.1.1") GList * uses; /* 64-bit so a notBefore/notAfter past 2038 survives on 32-bit-time_t * platforms (i386). Populated from GnuTLS's time_t getter when parsing * a PEM (capped there on i386), but overridden from the database's * 64-bit columns when the certificate is DB-resident — see * ca_file_get_stored_cert_dates(). */ gint64 expiration_time; gint64 activation_time; } TlsCert; typedef struct __TlsCsr { gchar * cn; gchar * o; gchar * ou; gchar * c; gchar * st; gchar * l; gchar * dn; gchar * emailAddress; gchar * key_id; gchar * subject_alt_name; // Human-readable SANs (e.g., "DNS:example.com, IP:192.168.1.1") } TlsCsr; void tls_init (void); gchar * tls_generate_rsa_keys (TlsCreationData *creation_data, gchar ** private_key, gnutls_x509_privkey_t **key); gchar * tls_generate_dsa_keys (TlsCreationData *creation_data, gchar ** private_key, gnutls_x509_privkey_t **key); gchar * tls_generate_ecdsa_keys (TlsCreationData *creation_data, gchar ** private_key, gnutls_x509_privkey_t **key); gchar * tls_generate_eddsa_keys (TlsCreationData *creation_data, gchar ** private_key, gnutls_x509_privkey_t **key); /* key_type enum values used in TlsCreationData (consumed by the * dispatchers in ca_creation.c / csr_creation.c). */ typedef enum { TLS_KEY_TYPE_RSA = 0, TLS_KEY_TYPE_DSA = 1, TLS_KEY_TYPE_ECDSA = 2, TLS_KEY_TYPE_EDDSA = 3, } TlsKeyType; gchar * tls_generate_pkcs8_encrypted_private_key (gchar *private_key, gchar *passphrase); gchar * tls_load_pkcs8_private_key (gchar *pem, gchar *passphrase, const gchar * key_id, gint *tls_error); gnutls_datum_t * tls_generate_pkcs12 (gchar *certificate, gchar *private_key, gchar *passphrase); gchar * tls_generate_self_signed_certificate (TlsCreationData * creation_data, gnutls_x509_privkey_t *key, gchar ** certificate); gchar * tls_generate_csr (TlsCreationData * creation_data, gnutls_x509_privkey_t *key, gchar ** csr); gchar * tls_generate_certificate (TlsCertCreationData * creation_data, gchar *csr_pem, gchar *ca_cert_pem, gchar *ca_priv_key_pem, gchar **certificate); TlsCert * tls_parse_cert_pem (const char * pem_certificate); /* Reads only the validity period (notBefore/notAfter) from a certificate PEM, * as 64-bit Unix timestamps, without the cost of a full tls_parse_cert_pem(). * Used to re-derive a date from the certificate when its database column is * NULL (i.e. the date could not be represented when the cert was stored). The * values come from GnuTLS's time_t getter, so on a 32-bit-time_t build they are * still capped at 2038 — callers should pass them through * gnomint_time_display_is_uncertain(). Returns TRUE on success. */ gboolean tls_cert_pem_get_validity (const gchar *pem_certificate, gint64 *activation, gint64 *expiration); gboolean tls_is_ca_pem (const char * pem_certificate); void tls_cert_free (TlsCert *); TlsCsr * tls_parse_csr_pem (const char * pem_csr); void tls_csr_free (TlsCsr *); void tls_creation_data_free (TlsCreationData *cd); gchar * tls_generate_crl (GList * revoked_certs, guchar *ca_pem, guchar *ca_private_key, gint crl_version, time_t current_timestamp, time_t next_crl_timestamp); gchar * tls_generate_dh_params (guint bits); gboolean tls_cert_check_issuer (const gchar *cert_pem, const gchar *ca_pem); gchar * tls_get_private_key_id (const gchar *privkey_pem); gchar * tls_get_public_key_id (const gchar *certificate_pem); #ifdef ADVANCED_GNUTLS gchar * tls_get_csr_public_key_id (const gchar *csr_pem); #endif #endif gnomint-1.6.4/src/pkey_manage.c0000644000000000000000000010640015212761266015157 0ustar00rootroot// gnoMint: a graphical interface for managing a certification authority // Copyright (C) 2006-2009 David Marín Carreño // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #ifndef GNOMINTCLI #include #include #include #include #endif #include #include #include #include #include #include #include "tls.h" #include "ca_file.h" #include "dialog.h" #include "pkey_manage.h" #include #define PKEY_MANAGE_ENCRYPTED_PKCS8_HEADER "-----BEGIN ENCRYPTED PRIVATE KEY-----" #define PKEY_MANAGE_UNCRYPTED_PKCS8_HEADER "-----BEGIN PRIVATE KEY-----" typedef void (*__PkeyExternalFilePasswordCallback)(gchar *password, gpointer user_data); typedef void (*__PkeyRetrieveFromFileCallback)(gchar *pem_pkey, gchar *final_filename, gboolean save_new_filename, gpointer user_data); #ifdef GNOMINTCLI gchar * __pkey_manage_ask_external_file_password (const gchar *cert_dn); gchar * __pkey_retrieve_from_file (gchar **fn, gchar *cert_pem); #else void __pkey_manage_ask_external_file_password (const gchar *cert_dn, __PkeyExternalFilePasswordCallback cb, gpointer user_data); void __pkey_retrieve_from_file (gchar **fn, gchar *cert_pem, __PkeyRetrieveFromFileCallback cb, gpointer user_data); #endif gchar * __pkey_manage_to_hex (const guchar *buffer, size_t len); guchar * __pkey_manage_from_hex (const gchar *input); guchar *__pkey_manage_create_key(const gchar *password); gchar * __pkey_manage_aes_encrypt (const gchar *in, const gchar *password); gchar * __pkey_manage_aes_decrypt (const gchar *string, const gchar *password); gchar * __pkey_manage_aes_encrypt_aux (const gchar *in, const gchar *password, const guchar *iv, const guchar *ctr); gchar * __pkey_manage_aes_decrypt_aux (const gchar *string, const gchar *password, const guchar *iv, const guchar *ctr); #ifndef GNOMINTCLI // CALLBACKS G_MODULE_EXPORT gboolean pkey_manage_filechooser_file_set_cb (GtkWidget *widget, gpointer user_data); typedef struct { GtkBuilder *dialog_gtkb; GObject *password_widget; gchar *message; __PkeyExternalFilePasswordCallback cb; gpointer user_data; } __AskExternalFilePasswordCtx; static void __pkey_manage_ask_external_file_password_response (GtkDialog *dialog, gint response_id, gpointer data) { __AskExternalFilePasswordCtx *ctx = (__AskExternalFilePasswordCtx *) data; gchar *password = NULL; if (response_id == GTK_RESPONSE_OK || response_id == GTK_RESPONSE_ACCEPT || response_id == GTK_RESPONSE_YES || response_id > 0) { password = g_strdup ((gchar *) gtk_editable_get_text (GTK_EDITABLE (ctx->password_widget))); } gtk_window_destroy (GTK_WINDOW (dialog)); g_object_unref (G_OBJECT (ctx->dialog_gtkb)); g_free (ctx->message); ctx->cb (password, ctx->user_data); g_free (ctx); } void __pkey_manage_ask_external_file_password (const gchar *cert_dn, __PkeyExternalFilePasswordCallback cb, gpointer user_data) { GObject * widget = NULL, * password_widget = NULL, *remember_password_widget = NULL; GtkBuilder * dialog_gtkb = NULL; gchar *message = NULL; __AskExternalFilePasswordCtx *ctx; dialog_gtkb = gtk_builder_new(); gtk_builder_add_from_file (dialog_gtkb, g_build_filename (PACKAGE_DATA_DIR, "gnomint", "get_db_password_dialog.ui", NULL), NULL); password_widget = gtk_builder_get_object (dialog_gtkb, "cadb_password_entry"); remember_password_widget = gtk_builder_get_object (dialog_gtkb, "remember_password_checkbutton"); g_object_set (G_OBJECT(remember_password_widget), "visible", FALSE, NULL); widget = gtk_builder_get_object (dialog_gtkb, "get_passwd_msg_label"); message = g_strdup_printf (_("The file that holds private key for certificate '%s' is password-protected.\n\n" "Please, insert the password corresponding to this file."), cert_dn); gtk_label_set_text (GTK_LABEL(widget), message); gtk_widget_grab_focus (GTK_WIDGET(password_widget)); ctx = g_new0 (__AskExternalFilePasswordCtx, 1); ctx->dialog_gtkb = dialog_gtkb; ctx->password_widget = password_widget; ctx->message = message; ctx->cb = cb; ctx->user_data = user_data; widget = gtk_builder_get_object (dialog_gtkb, "get_db_password_dialog"); g_signal_connect (widget, "response", G_CALLBACK (__pkey_manage_ask_external_file_password_response), ctx); gtk_widget_set_visible (GTK_WIDGET (widget), TRUE); gtk_window_set_transient_for (GTK_WINDOW (widget), dialog_get_main_window ()); gtk_window_present (GTK_WINDOW (widget)); } gboolean pkey_manage_filechooser_file_set_cb (GtkWidget *widget, gpointer user_data) { GtkWidget *remember_filepath_widget = NULL; remember_filepath_widget = g_object_get_data (G_OBJECT(widget), "save_filename_checkbutton"); g_object_set (G_OBJECT(remember_filepath_widget), "visible", TRUE, NULL); return FALSE; } #else gchar * __pkey_manage_ask_external_file_password (const gchar *cert_dn) { gchar *password; gchar *aux = NULL; printf (_("The file that holds private key for certificate\n'%s' is password-protected.\n\n"), cert_dn); aux = getpass ("Please, insert the password corresponding to this file:"); if (!aux || aux[0] == '\0') { return NULL; } else { password = g_strdup (aux); memset (aux, 0, strlen(aux)); } return password; } #endif #ifdef GNOMINTCLI gchar * __pkey_retrieve_from_file (gchar **fn, gchar *cert_pem) { gsize file_length = 0; GError *error = NULL; gboolean cancel = FALSE; gboolean save_new_filename = FALSE; gchar *file_name = g_strdup(* fn); gchar *file_contents = NULL; gchar *pem_pkey = NULL; gint tls_error = 0; gchar *password = NULL; TlsCert *cert = tls_parse_cert_pem (cert_pem); do { if (g_file_test(file_name, G_FILE_TEST_EXISTS)) { GIOChannel *gc = g_io_channel_new_file (file_name, "r", &error); if (gc) { g_io_channel_read_to_end (gc, &file_contents, &file_length, &error); g_io_channel_shutdown (gc, TRUE, NULL); do { pem_pkey = tls_load_pkcs8_private_key (file_contents, password, cert->key_id, &tls_error); if (tls_error == TLS_INVALID_PASSWORD) { if (password) dialog_error (_("The given password doesn't match with the one used while crypting the file.")); // We ask for a password password = __pkey_manage_ask_external_file_password (cert->dn); if (! password) cancel = TRUE; } } while (tls_error == TLS_INVALID_PASSWORD && ! cancel); g_free (password); if (! pem_pkey) { if (tls_error == TLS_NON_MATCHING_PRIVATE_KEY) { dialog_error (_("The file designated in database contains a private key, but it " "is not the private key corresponding to the certificate.")); } else { dialog_error (_("The file designated in database doesn't contain any recognized private key.")); } } } else { dialog_error (_("The file designated in database couldn't be opened.")); } } else { dialog_error (_("The file designated in database doesn't exist.")); } if (! pem_pkey && ! cancel) { cancel = TRUE; } } while (! pem_pkey && ! cancel); tls_cert_free (cert); g_free (file_contents); if (error) g_error_free (error); if (cancel) { g_free (file_name); return NULL; } if (save_new_filename) { g_free (*fn); (* fn) = file_name; } return pem_pkey; } #else /* GUI async __pkey_retrieve_from_file */ typedef struct { gchar *file_name; gchar *file_contents; gsize file_length; gchar *cert_pem; TlsCert *cert; gchar *password; gboolean save_new_filename; __PkeyRetrieveFromFileCallback cb; gpointer user_data; } __RetrieveFromFileCtx; static void __pkey_retrieve_try_file (__RetrieveFromFileCtx *ctx); static void __pkey_retrieve_external_password_cb (gchar *password, gpointer data) { __RetrieveFromFileCtx *ctx = (__RetrieveFromFileCtx *) data; gchar *pem_pkey = NULL; gint tls_error = 0; if (!password) { /* User cancelled the password dialog */ tls_cert_free (ctx->cert); g_free (ctx->file_contents); g_free (ctx->file_name); g_free (ctx->password); ctx->cb (NULL, NULL, FALSE, ctx->user_data); g_free (ctx); return; } g_free (ctx->password); ctx->password = password; pem_pkey = tls_load_pkcs8_private_key (ctx->file_contents, ctx->password, ctx->cert->key_id, &tls_error); if (tls_error == TLS_INVALID_PASSWORD) { dialog_error (_("The given password doesn't match with the one used while crypting the file.")); /* Re-ask for password */ __pkey_manage_ask_external_file_password (ctx->cert->dn, __pkey_retrieve_external_password_cb, ctx); return; } g_free (ctx->password); ctx->password = NULL; if (!pem_pkey) { if (tls_error == TLS_NON_MATCHING_PRIVATE_KEY) { dialog_error (_("The file designated in database contains a private key, but it " "is not the private key corresponding to the certificate.")); } else { dialog_error (_("The file designated in database doesn't contain any recognized private key.")); } /* Show file chooser to pick a different file */ g_free (ctx->file_contents); ctx->file_contents = NULL; __pkey_retrieve_try_file (ctx); return; } /* Success */ { gchar *final_filename = g_strdup (ctx->file_name); gboolean save = ctx->save_new_filename; tls_cert_free (ctx->cert); g_free (ctx->file_contents); g_free (ctx->file_name); ctx->cb (pem_pkey, final_filename, save, ctx->user_data); g_free (ctx); } } static void __pkey_browse_open_cb (GObject *source, GAsyncResult *result, gpointer user_data) { GtkButton *btn = GTK_BUTTON (user_data); GtkFileDialog *fd = GTK_FILE_DIALOG (source); GError *err = NULL; GFile *gfile = gtk_file_dialog_open_finish (fd, result, &err); if (!gfile) { g_clear_error (&err); return; } gchar *path = g_file_get_path (gfile); g_object_unref (gfile); gtk_button_set_label (btn, path); g_object_set_data_full (G_OBJECT (btn), "selected-path", path, g_free); } static void __pkey_browse_clicked (GtkButton *btn, gpointer user_data G_GNUC_UNUSED) { GtkFileDialog *fd = gtk_file_dialog_new (); gtk_file_dialog_set_title (fd, _("Select private key file")); const gchar *cur = (const gchar *) g_object_get_data (G_OBJECT (btn), "selected-path"); if (cur && cur[0]) { GFile *f = g_file_new_for_path (cur); GFile *folder = g_file_get_parent (f); if (folder) { gtk_file_dialog_set_initial_folder (fd, folder); g_object_unref (folder); } g_object_unref (f); } gtk_file_dialog_open (fd, GTK_WINDOW (gtk_widget_get_root (GTK_WIDGET (btn))), NULL, __pkey_browse_open_cb, btn); g_object_unref (fd); } static void __pkey_retrieve_filechooser_response (GtkDialog *dialog, gint response_id, gpointer data) { __RetrieveFromFileCtx *ctx = (__RetrieveFromFileCtx *) data; GtkBuilder *dialog_gtkb = g_object_get_data (G_OBJECT (dialog), "dialog_gtkb"); GObject *filepath_widget = gtk_builder_get_object (dialog_gtkb, "pkey_filechooser"); GObject *remember_filepath_widget = gtk_builder_get_object (dialog_gtkb, "save_filename_checkbutton"); if (response_id != GTK_RESPONSE_OK && response_id != GTK_RESPONSE_ACCEPT && response_id != GTK_RESPONSE_YES && response_id <= 0) { /* Cancel */ gtk_window_destroy (GTK_WINDOW (dialog)); g_object_unref (G_OBJECT (dialog_gtkb)); tls_cert_free (ctx->cert); g_free (ctx->file_contents); g_free (ctx->file_name); g_free (ctx->password); ctx->cb (NULL, NULL, FALSE, ctx->user_data); g_free (ctx); return; } const gchar *selected = (const gchar *) g_object_get_data ( G_OBJECT (filepath_widget), "selected-path"); if (selected && selected[0]) { g_free (ctx->file_name); ctx->file_name = g_strdup (selected); } ctx->save_new_filename = gtk_check_button_get_active ( GTK_CHECK_BUTTON (remember_filepath_widget)); gtk_window_destroy (GTK_WINDOW (dialog)); g_object_unref (G_OBJECT (dialog_gtkb)); /* Retry with the new file */ g_free (ctx->file_contents); ctx->file_contents = NULL; g_free (ctx->password); ctx->password = NULL; __pkey_retrieve_try_file (ctx); } static void __pkey_retrieve_show_filechooser (__RetrieveFromFileCtx *ctx) { GObject *widget = NULL, *filepath_widget = NULL, *remember_filepath_widget = NULL; GtkBuilder *dialog_gtkb = NULL; dialog_gtkb = gtk_builder_new (); gtk_builder_add_from_file (dialog_gtkb, g_build_filename (PACKAGE_DATA_DIR, "gnomint", "get_pkey_dialog.ui", NULL), NULL); filepath_widget = gtk_builder_get_object (dialog_gtkb, "pkey_filechooser"); gtk_button_set_label (GTK_BUTTON (filepath_widget), ctx->file_name); g_object_set_data_full (G_OBJECT (filepath_widget), "selected-path", g_strdup (ctx->file_name), g_free); g_signal_connect (filepath_widget, "clicked", G_CALLBACK (__pkey_browse_clicked), NULL); remember_filepath_widget = gtk_builder_get_object (dialog_gtkb, "save_filename_checkbutton"); g_object_set (G_OBJECT (remember_filepath_widget), "visible", FALSE, NULL); widget = gtk_builder_get_object (dialog_gtkb, "cert_dn_label"); gtk_label_set_text (GTK_LABEL (widget), ctx->cert->dn); widget = gtk_builder_get_object (dialog_gtkb, "get_pkey_dialog"); g_object_set_data (G_OBJECT (widget), "dialog_gtkb", dialog_gtkb); g_signal_connect (widget, "response", G_CALLBACK (__pkey_retrieve_filechooser_response), ctx); gtk_widget_set_visible (GTK_WIDGET (widget), TRUE); gtk_window_set_transient_for (GTK_WINDOW (widget), dialog_get_main_window ()); gtk_window_present (GTK_WINDOW (widget)); } static void __pkey_retrieve_try_file (__RetrieveFromFileCtx *ctx) { GError *error = NULL; gchar *pem_pkey = NULL; gint tls_error = 0; if (g_file_test (ctx->file_name, G_FILE_TEST_EXISTS)) { GIOChannel *gc = g_io_channel_new_file (ctx->file_name, "r", &error); if (gc) { g_io_channel_read_to_end (gc, &ctx->file_contents, &ctx->file_length, &error); g_io_channel_shutdown (gc, TRUE, NULL); pem_pkey = tls_load_pkcs8_private_key (ctx->file_contents, NULL, ctx->cert->key_id, &tls_error); if (tls_error == TLS_INVALID_PASSWORD) { /* Need password -- ask asynchronously */ __pkey_manage_ask_external_file_password (ctx->cert->dn, __pkey_retrieve_external_password_cb, ctx); return; } if (!pem_pkey) { if (tls_error == TLS_NON_MATCHING_PRIVATE_KEY) { dialog_error (_("The file designated in database contains a private key, but it " "is not the private key corresponding to the certificate.")); } else { dialog_error (_("The file designated in database doesn't contain any recognized private key.")); } /* Show file chooser */ g_free (ctx->file_contents); ctx->file_contents = NULL; __pkey_retrieve_show_filechooser (ctx); return; } /* Success */ { gchar *final_filename = g_strdup (ctx->file_name); gboolean save = ctx->save_new_filename; tls_cert_free (ctx->cert); g_free (ctx->file_contents); g_free (ctx->file_name); ctx->cb (pem_pkey, final_filename, save, ctx->user_data); g_free (ctx); } return; } else { dialog_error (_("The file designated in database couldn't be opened.")); } } else { dialog_error (_("The file designated in database doesn't exist.")); } if (error) g_error_free (error); /* File didn't exist or couldn't be opened -- show file chooser */ __pkey_retrieve_show_filechooser (ctx); } void __pkey_retrieve_from_file (gchar **fn, gchar *cert_pem, __PkeyRetrieveFromFileCallback cb, gpointer user_data) { __RetrieveFromFileCtx *ctx = g_new0 (__RetrieveFromFileCtx, 1); ctx->file_name = g_strdup (*fn); ctx->cert_pem = cert_pem; ctx->cert = tls_parse_cert_pem (cert_pem); ctx->cb = cb; ctx->user_data = user_data; __pkey_retrieve_try_file (ctx); } #endif /* GNOMINTCLI */ #ifdef GNOMINTCLI PkeyManageData * pkey_manage_get_certificate_pkey (guint64 id) { PkeyManageData *res = NULL; res = g_new0 (PkeyManageData, 1); if (ca_file_get_pkey_in_db_from_id (CA_FILE_ELEMENT_TYPE_CERT, id)) { res->pkey_data = ca_file_get_pkey_field_from_id (CA_FILE_ELEMENT_TYPE_CERT, id); res->is_in_db = TRUE; res->is_ciphered_with_db_pwd = ca_file_is_password_protected(); } else { gchar *cert_pem = ca_file_get_public_pem_from_id (CA_FILE_ELEMENT_TYPE_CERT, id); gchar *file_name = ca_file_get_pkey_field_from_id (CA_FILE_ELEMENT_TYPE_CERT, id); gchar *old_filename = g_strdup (file_name); gchar *file_contents = __pkey_retrieve_from_file (&file_name, cert_pem); if (strcmp (file_name, old_filename)) { ca_file_set_pkey_field_for_id (CA_FILE_ELEMENT_TYPE_CERT, file_name, id); } if (file_contents) { res->pkey_data = file_contents; res->is_in_db = FALSE; res->external_file = file_name; } else { g_free (file_name); g_free (res); res = NULL; } g_free (old_filename); g_free (cert_pem); } return res; } #else /* GUI async pkey_manage_get_certificate_pkey */ typedef struct { guint64 id; gchar *old_filename; PkeyManageGetPkeyCallback cb; gpointer user_data; } __GetCertPkeyCtx; static void __get_cert_pkey_retrieve_cb (gchar *pem_pkey, gchar *final_filename, gboolean save_new_filename, gpointer data) { __GetCertPkeyCtx *ctx = (__GetCertPkeyCtx *) data; PkeyManageData *res = NULL; if (pem_pkey) { res = g_new0 (PkeyManageData, 1); res->pkey_data = pem_pkey; res->is_in_db = FALSE; if (final_filename) { res->external_file = final_filename; if (save_new_filename && strcmp (final_filename, ctx->old_filename)) { ca_file_set_pkey_field_for_id (CA_FILE_ELEMENT_TYPE_CERT, final_filename, ctx->id); } } } else { g_free (final_filename); } g_free (ctx->old_filename); ctx->cb (res, ctx->user_data); g_free (ctx); } void pkey_manage_get_certificate_pkey (guint64 id, PkeyManageGetPkeyCallback cb, gpointer user_data) { if (ca_file_get_pkey_in_db_from_id (CA_FILE_ELEMENT_TYPE_CERT, id)) { PkeyManageData *res = g_new0 (PkeyManageData, 1); res->pkey_data = ca_file_get_pkey_field_from_id (CA_FILE_ELEMENT_TYPE_CERT, id); res->is_in_db = TRUE; res->is_ciphered_with_db_pwd = ca_file_is_password_protected(); cb (res, user_data); } else { gchar *cert_pem = ca_file_get_public_pem_from_id (CA_FILE_ELEMENT_TYPE_CERT, id); gchar *file_name = ca_file_get_pkey_field_from_id (CA_FILE_ELEMENT_TYPE_CERT, id); __GetCertPkeyCtx *ctx = g_new0 (__GetCertPkeyCtx, 1); ctx->id = id; ctx->old_filename = g_strdup (file_name); ctx->cb = cb; ctx->user_data = user_data; __pkey_retrieve_from_file (&file_name, cert_pem, __get_cert_pkey_retrieve_cb, ctx); g_free (file_name); g_free (cert_pem); } } #endif /* GNOMINTCLI */ PkeyManageData * pkey_manage_get_csr_pkey (guint64 id) { PkeyManageData *res = NULL; res = g_new0 (PkeyManageData, 1); if (ca_file_get_pkey_in_db_from_id (CA_FILE_ELEMENT_TYPE_CSR, id)) { res->pkey_data = ca_file_get_pkey_field_from_id (CA_FILE_ELEMENT_TYPE_CSR, id); res->is_in_db = TRUE; res->is_ciphered_with_db_pwd = ca_file_is_password_protected(); } else { // Retrieving external private keys for CSRs is not supported, as it is impossible to check if // a private key corresponds to a public key/CSR. // However, we fill the structure with enough data for recovering the private key. res->pkey_data = NULL; res->is_in_db = FALSE; res->external_file = ca_file_get_pkey_field_from_id (CA_FILE_ELEMENT_TYPE_CSR, id); } return res; } void pkey_manage_data_free (PkeyManageData *pkeydata) { if (! pkeydata) return; g_free (pkeydata->pkey_data); g_free (pkeydata->external_file); } guchar old_iv[16] = { 'a', 'g', 'z', 'e', 'Q', '5', 'E', '7', 'c', '+', '*', 'G', '1', 'D', 'u', '=' }; guchar old_ctr[16] = { 'd', 'g', '4', 'e', 'J', '5', '3', 'l', 'c', '-', '!', 'G', 'z', 'A', 'z', '=' }; gchar *saved_password = NULL; gchar * __pkey_manage_to_hex (const guchar *buffer, size_t len) { gchar *res = g_new0 (gchar, len*2+1); guint i; for (i=0; i= '0' && input[i] <= '9') { res[i/2] += (input[i] - '0'); } if (input[i] >='A' && input[i] <= 'F') { res[i/2] += 10 + (input[i] - 'A'); } } return res; } guchar *__pkey_manage_create_key(const gchar *password) { guchar *key = g_new0 (guchar, 33); guint i, j; if (strlen(password) <= 32) { for (i=0; i<32; i=i+strlen(password)) { snprintf ((gchar *) &key[i], 32 - i, "%s", password); } } else { i = 0; do { for (j=0; j<32 && j random_data for (i=0; idn, password); tls_cert_free (tls_cert); *pem_private_key = res; g_free (clean_private_key); return; } #ifndef GNOMINTCLI typedef struct { GtkBuilder *dialog_gtkb; GObject *password_widget; GObject *remember_password_widget; PkeyManagePasswordCallback cb; gpointer user_data; } __AskPasswordCtx; static void __pkey_manage_ask_password_response (GtkDialog *dialog, gint response_id, gpointer data) { __AskPasswordCtx *ctx = (__AskPasswordCtx *) data; gchar *password = NULL; gboolean remember = FALSE; if (response_id != GTK_RESPONSE_OK && response_id != GTK_RESPONSE_ACCEPT && response_id != GTK_RESPONSE_YES && response_id <= 0) { /* Cancel */ gtk_window_destroy (GTK_WINDOW (dialog)); g_object_unref (G_OBJECT (ctx->dialog_gtkb)); ctx->cb (NULL, ctx->user_data); g_free (ctx); return; } password = g_strdup ((gchar *) gtk_editable_get_text (GTK_EDITABLE (ctx->password_widget))); remember = gtk_check_button_get_active (GTK_CHECK_BUTTON (ctx->remember_password_widget)); if (! ca_file_check_password (password)) { dialog_error (_("The given password doesn't match the one used in the database")); g_free (password); /* Clear and re-present the dialog for another attempt */ gtk_editable_set_text (GTK_EDITABLE (ctx->password_widget), ""); gtk_widget_grab_focus (GTK_WIDGET (ctx->password_widget)); return; } /* Password correct */ if (remember) { if (saved_password) g_free (saved_password); saved_password = g_strdup (password); } gtk_window_destroy (GTK_WINDOW (dialog)); g_object_unref (G_OBJECT (ctx->dialog_gtkb)); ctx->cb (password, ctx->user_data); g_free (ctx); } void pkey_manage_ask_password (PkeyManagePasswordCallback cb, gpointer user_data) { GObject * widget = NULL, * password_widget = NULL, *remember_password_widget = NULL; GtkBuilder * dialog_gtkb = NULL; __AskPasswordCtx *ctx; if (! ca_file_is_password_protected()) { cb (NULL, user_data); return; } if (saved_password && ca_file_check_password (saved_password)) { cb (g_strdup (saved_password), user_data); return; } dialog_gtkb = gtk_builder_new(); gtk_builder_add_from_file (dialog_gtkb, g_build_filename (PACKAGE_DATA_DIR, "gnomint", "get_db_password_dialog.ui", NULL), NULL); password_widget = gtk_builder_get_object (dialog_gtkb, "cadb_password_entry"); remember_password_widget = gtk_builder_get_object (dialog_gtkb, "remember_password_checkbutton"); gtk_widget_grab_focus (GTK_WIDGET (password_widget)); ctx = g_new0 (__AskPasswordCtx, 1); ctx->dialog_gtkb = dialog_gtkb; ctx->password_widget = password_widget; ctx->remember_password_widget = remember_password_widget; ctx->cb = cb; ctx->user_data = user_data; widget = gtk_builder_get_object (dialog_gtkb, "get_db_password_dialog"); g_signal_connect (widget, "response", G_CALLBACK (__pkey_manage_ask_password_response), ctx); gtk_widget_set_visible (GTK_WIDGET (widget), TRUE); gtk_window_set_transient_for (GTK_WINDOW (widget), dialog_get_main_window ()); gtk_window_present (GTK_WINDOW (widget)); } #else gchar * pkey_manage_ask_password () { gchar *password = NULL; gchar *pass; gboolean is_key_ok; if (! ca_file_is_password_protected()) return NULL; is_key_ok = FALSE; while (! is_key_ok) { if (password) { g_free (password); password = NULL; } printf (_("This action requires using one or more private keys saved in the database.\n")); pass = getpass (_("Please insert the database password:")); if (! pass || pass[0] == '\0') { return NULL; } else { password = g_strdup (pass); memset (pass, 0, strlen(pass)); } is_key_ok = ca_file_check_password (password); if (! is_key_ok) { dialog_error (_("The given password doesn't match the one used in the database")); } } return password; } #endif gchar * pkey_manage_crypt (const gchar *pem_private_key, const gchar *dn) { gchar *res; gchar *password = NULL; if (! ca_file_is_password_protected()) return pkey_manage_crypt_w_pwd (pem_private_key, dn, ""); /* Use the cached password if available. In the CLI path, * pkey_manage_ask_password() is called which may prompt. * In the GUI path, the password should already be cached * by a prior pkey_manage_ask_password() call. */ if (saved_password && ca_file_check_password (saved_password)) { password = g_strdup (saved_password); } #ifdef GNOMINTCLI else { password = pkey_manage_ask_password (); } #endif if (!password) return NULL; res = pkey_manage_crypt_w_pwd (pem_private_key, dn, password); g_free (password); return res; } gchar * pkey_manage_crypt_w_pwd (const gchar *pem_private_key, const gchar *dn, const gchar *pwd) { gchar *res; gchar *password; if (! ca_file_is_password_protected()) return g_strdup(pem_private_key); password = g_strdup_printf ("gnoMintPrivateKey%s%s", pwd, dn); res = __pkey_manage_aes_encrypt (pem_private_key, password); g_free (password); return res; } #ifdef GNOMINTCLI gchar * pkey_manage_uncrypt (PkeyManageData *pem_private_key, const gchar *dn) { gchar *res = NULL; gchar *password = NULL; if (pem_private_key->is_in_db) { if (pem_private_key->is_ciphered_with_db_pwd) { password = pkey_manage_ask_password(); if (password) { res = pkey_manage_uncrypt_w_pwd (pem_private_key, dn, password); g_free (password); } } else { res = g_strdup (pem_private_key->pkey_data); } } else { res = g_strdup (pem_private_key->pkey_data); } return res; } #else /* GUI async pkey_manage_uncrypt */ typedef struct { PkeyManageData *pem_private_key; gchar *dn; PkeyManageUncryptCallback cb; gpointer user_data; } __UncryptCtx; static void __pkey_manage_uncrypt_password_cb (gchar *password, gpointer data) { __UncryptCtx *ctx = (__UncryptCtx *) data; gchar *res = NULL; if (password) { res = pkey_manage_uncrypt_w_pwd (ctx->pem_private_key, ctx->dn, password); g_free (password); } g_free (ctx->dn); ctx->cb (res, ctx->user_data); g_free (ctx); } void pkey_manage_uncrypt (PkeyManageData *pem_private_key, const gchar *dn, PkeyManageUncryptCallback cb, gpointer user_data) { if (pem_private_key->is_in_db) { if (pem_private_key->is_ciphered_with_db_pwd) { __UncryptCtx *ctx = g_new0 (__UncryptCtx, 1); ctx->pem_private_key = pem_private_key; ctx->dn = g_strdup (dn); ctx->cb = cb; ctx->user_data = user_data; pkey_manage_ask_password (__pkey_manage_uncrypt_password_cb, ctx); } else { cb (g_strdup (pem_private_key->pkey_data), user_data); } } else { cb (g_strdup (pem_private_key->pkey_data), user_data); } } #endif /* GNOMINTCLI */ gchar * pkey_manage_uncrypt_w_pwd (PkeyManageData *pem_private_key, const gchar *dn, const gchar *pwd) { gchar *res; gchar *password; if (! pem_private_key->is_in_db || ! pem_private_key->is_ciphered_with_db_pwd) return g_strdup(pem_private_key->pkey_data); password = g_strdup_printf ("gnoMintPrivateKey%s%s", pwd, dn); res = __pkey_manage_aes_decrypt (pem_private_key->pkey_data, password); g_free (password); return res; } gnomint-1.6.4/src/cert_renewal.c0000644000000000000000000003045215212761266015354 0ustar00rootroot/* gnoMint — certificate renewal. * See cert_renewal.h for the contract. */ #include #include #include #include #include #include "cert_renewal.h" #include "ca_file.h" #include "dialog.h" #include "tls.h" #include "pkey_manage.h" /* Read an integer policy with a fallback. */ static gint policy_int_default (guint64 ca_id, const gchar *key, gint fallback) { gint v = ca_file_policy_get_int (ca_id, (gchar *) key); return v ? v : fallback; } /* Continuation: sign and insert the new cert after the parent pkey is * decrypted. `db_password` may be NULL when the DB is not encrypted. * When non-NULL it is used to re-encrypt the newly-generated private key * under the new certificate's DN via pkey_manage_crypt_w_pwd. */ static gchar * __cert_renewal_finish (TlsCert *old_cert, guint64 parent_ca_id, gchar *parent_pem, gchar *parent_pkey_pem, const gchar *db_password, guint64 *new_cert_id_out) { gchar *new_private_key_pem = NULL; gchar *new_csr_pem = NULL; gchar *new_cert_pem = NULL; gchar *crypted_new_pkey = NULL; gnutls_x509_privkey_t *new_key = NULL; TlsCreationData *csr_cd = NULL; TlsCertCreationData *cert_cd = NULL; gchar *error = NULL; /* 3. Build TlsCreationData for the new keypair + CSR. */ csr_cd = g_new0 (TlsCreationData, 1); csr_cd->cn = g_strdup (old_cert->cn); csr_cd->org = g_strdup (old_cert->o); csr_cd->ou = g_strdup (old_cert->ou); csr_cd->country = g_strdup (old_cert->c); csr_cd->state = g_strdup (old_cert->st); csr_cd->city = g_strdup (old_cert->l); csr_cd->emailAddress = g_strdup (old_cert->emailAddress); csr_cd->subject_alt_name = g_strdup (old_cert->subject_alt_name); csr_cd->key_type = 0; /* RSA */ csr_cd->key_bitlength = 2048; csr_cd->activation = time (NULL); csr_cd->expiration = csr_cd->activation + 86400 * 30; /* placeholder */ /* 4. Generate fresh RSA keypair. */ error = tls_generate_rsa_keys (csr_cd, &new_private_key_pem, &new_key); if (error) goto out; /* 5. Generate CSR using the old cert's subject info. */ error = tls_generate_csr (csr_cd, new_key, &new_csr_pem); if (error) goto out; /* 6. Build TlsCertCreationData from parent CA's policy. */ cert_cd = g_new0 (TlsCertCreationData, 1); { gint months = policy_int_default (parent_ca_id, "MONTHS_TO_EXPIRE", 12); time_t now = time (NULL); cert_cd->activation = now; cert_cd->expiration = now + (time_t) months * 30 * 86400; cert_cd->key_months_before_expiration = months; } cert_cd->ca = ca_file_policy_get_int (parent_ca_id, "CA"); cert_cd->crl_signing = ca_file_policy_get_int (parent_ca_id, "CRL_SIGN"); cert_cd->non_repudiation = ca_file_policy_get_int (parent_ca_id, "NON_REPUDIATION"); cert_cd->digital_signature = ca_file_policy_get_int (parent_ca_id, "DIGITAL_SIGNATURE"); cert_cd->key_encipherment = ca_file_policy_get_int (parent_ca_id, "KEY_ENCIPHERMENT"); cert_cd->key_agreement = ca_file_policy_get_int (parent_ca_id, "KEY_AGREEMENT"); cert_cd->data_encipherment = ca_file_policy_get_int (parent_ca_id, "DATA_ENCIPHERMENT"); cert_cd->web_server = ca_file_policy_get_int (parent_ca_id, "TLS_WEB_SERVER"); cert_cd->web_client = ca_file_policy_get_int (parent_ca_id, "TLS_WEB_CLIENT"); cert_cd->time_stamping = ca_file_policy_get_int (parent_ca_id, "TIME_STAMPING"); cert_cd->ocsp_signing = ca_file_policy_get_int (parent_ca_id, "OCSP_SIGNING"); cert_cd->code_signing = ca_file_policy_get_int (parent_ca_id, "CODE_SIGNING"); cert_cd->email_protection = ca_file_policy_get_int (parent_ca_id, "EMAIL_PROTECTION"); if (!cert_cd->digital_signature && !cert_cd->key_encipherment && !cert_cd->web_server && !cert_cd->web_client && !cert_cd->code_signing && !cert_cd->email_protection) { cert_cd->digital_signature = TRUE; cert_cd->key_encipherment = TRUE; cert_cd->web_server = TRUE; } ca_file_get_next_serial (&cert_cd->serial, parent_ca_id); /* 7. Sign the CSR with the parent CA. */ error = tls_generate_certificate (cert_cd, new_csr_pem, parent_pem, parent_pkey_pem, &new_cert_pem); if (error) goto out; /* 8. Encrypt the new private key under the new cert's DN. */ { TlsCsr *new_csr_info = tls_parse_csr_pem (new_csr_pem); if (!new_csr_info) { error = g_strdup (_("Cannot parse generated CSR.")); goto out; } if (db_password) { crypted_new_pkey = pkey_manage_crypt_w_pwd (new_private_key_pem, new_csr_info->dn, db_password); } else { crypted_new_pkey = pkey_manage_crypt_w_pwd (new_private_key_pem, new_csr_info->dn, ""); } tls_csr_free (new_csr_info); if (!crypted_new_pkey) { error = g_strdup (_("Cannot encrypt new private key.")); goto out; } } /* 9. Insert the new certificate. */ { gchar *insert_err = ca_file_insert_cert ( FALSE /* is_ca */, TRUE /* private_key_in_db */, crypted_new_pkey, new_cert_pem); if (insert_err) { error = g_strdup (insert_err); goto out; } } if (new_cert_id_out) { TlsCert *new_cert = tls_parse_cert_pem (new_cert_pem); if (new_cert) { ca_file_get_id_from_dn (CA_FILE_ELEMENT_TYPE_CERT, new_cert->dn, new_cert_id_out); tls_cert_free (new_cert); } } out: if (new_key) { gnutls_x509_privkey_deinit (*new_key); g_free (new_key); } g_free (new_private_key_pem); g_free (new_csr_pem); g_free (new_cert_pem); g_free (crypted_new_pkey); if (csr_cd) tls_creation_data_free (csr_cd); g_free (cert_cd); return error; } #ifdef GNOMINTCLI gchar * cert_renewal_renew (guint64 cert_id, guint64 *new_cert_id_out) { gchar *old_pem = NULL; TlsCert *old_cert = NULL; guint64 parent_ca_id = 0; gchar *parent_pem = NULL; gchar *parent_dn = NULL; PkeyManageData *parent_crypted_pkey = NULL; gchar *parent_pkey_pem = NULL; gchar *db_password = NULL; gchar *error = NULL; old_pem = ca_file_get_public_pem_from_id (CA_FILE_ELEMENT_TYPE_CERT, cert_id); if (!old_pem) { error = g_strdup (_("Cannot read certificate PEM from database.")); goto out; } old_cert = tls_parse_cert_pem (old_pem); if (!old_cert) { error = g_strdup (_("Cannot parse certificate.")); goto out; } if (!ca_file_get_id_from_dn (CA_FILE_ELEMENT_TYPE_CERT, old_cert->i_dn, &parent_ca_id)) { error = g_strdup_printf ( _("Cannot find issuer CA in this database (issuer DN: %s)."), old_cert->i_dn ? old_cert->i_dn : "(null)"); goto out; } parent_pem = ca_file_get_public_pem_from_id (CA_FILE_ELEMENT_TYPE_CERT, parent_ca_id); parent_dn = ca_file_get_dn_from_id (CA_FILE_ELEMENT_TYPE_CERT, parent_ca_id); parent_crypted_pkey = pkey_manage_get_certificate_pkey (parent_ca_id); if (!parent_pem || !parent_dn || !parent_crypted_pkey) { error = g_strdup (_("Cannot load parent CA material from database.")); goto out; } /* Get DB password for both uncrypt and re-crypt */ if (parent_crypted_pkey->is_in_db && parent_crypted_pkey->is_ciphered_with_db_pwd) { db_password = pkey_manage_ask_password (); if (!db_password) { error = g_strdup (_("Cannot decrypt parent CA's private key.")); goto out; } parent_pkey_pem = pkey_manage_uncrypt_w_pwd (parent_crypted_pkey, parent_dn, db_password); } else { parent_pkey_pem = g_strdup (parent_crypted_pkey->pkey_data); } if (!parent_pkey_pem) { error = g_strdup (_("Cannot decrypt parent CA's private key.")); goto out; } error = __cert_renewal_finish (old_cert, parent_ca_id, parent_pem, parent_pkey_pem, db_password, new_cert_id_out); out: g_free (old_pem); if (old_cert) tls_cert_free (old_cert); g_free (parent_pem); g_free (parent_dn); pkey_manage_data_free (parent_crypted_pkey); g_free (parent_pkey_pem); g_free (db_password); return error; } #else /* GUI async cert_renewal_renew */ typedef struct { guint64 cert_id; guint64 *new_cert_id_out; gchar *old_pem; TlsCert *old_cert; guint64 parent_ca_id; gchar *parent_pem; gchar *parent_dn; PkeyManageData *parent_crypted_pkey; gchar *db_password; CertRenewalCallback cb; gpointer cb_user_data; } _CertRenewalCtx; static void _cert_renewal_password_cb (gchar *db_password, gpointer data) { _CertRenewalCtx *ctx = (_CertRenewalCtx *) data; gchar *parent_pkey_pem = NULL; gchar *error = NULL; if (!db_password && ctx->parent_crypted_pkey->is_ciphered_with_db_pwd) { error = g_strdup (_("Cannot decrypt parent CA's private key.")); goto done; } ctx->db_password = db_password; if (db_password) { parent_pkey_pem = pkey_manage_uncrypt_w_pwd (ctx->parent_crypted_pkey, ctx->parent_dn, db_password); } else { parent_pkey_pem = g_strdup (ctx->parent_crypted_pkey->pkey_data); } if (!parent_pkey_pem) { error = g_strdup (_("Cannot decrypt parent CA's private key.")); goto done; } error = __cert_renewal_finish (ctx->old_cert, ctx->parent_ca_id, ctx->parent_pem, parent_pkey_pem, db_password, ctx->new_cert_id_out); g_free (parent_pkey_pem); done: g_free (ctx->old_pem); if (ctx->old_cert) tls_cert_free (ctx->old_cert); g_free (ctx->parent_pem); g_free (ctx->parent_dn); pkey_manage_data_free (ctx->parent_crypted_pkey); g_free (ctx->db_password); ctx->cb (error, ctx->cb_user_data); g_free (ctx); } static void _cert_renewal_got_pkey_cb (PkeyManageData *parent_crypted_pkey, gpointer data) { _CertRenewalCtx *ctx = (_CertRenewalCtx *) data; ctx->parent_crypted_pkey = parent_crypted_pkey; if (!ctx->parent_pem || !ctx->parent_dn || !parent_crypted_pkey) { g_free (ctx->old_pem); if (ctx->old_cert) tls_cert_free (ctx->old_cert); g_free (ctx->parent_pem); g_free (ctx->parent_dn); pkey_manage_data_free (parent_crypted_pkey); ctx->cb (g_strdup (_("Cannot load parent CA material from database.")), ctx->cb_user_data); g_free (ctx); return; } /* Ask for the DB password once; it will be used for both uncrypt * and re-crypt of the new private key. */ if (parent_crypted_pkey->is_in_db && parent_crypted_pkey->is_ciphered_with_db_pwd) { pkey_manage_ask_password (_cert_renewal_password_cb, ctx); } else { _cert_renewal_password_cb (NULL, ctx); } } void cert_renewal_renew (guint64 cert_id, guint64 *new_cert_id_out, CertRenewalCallback cb, gpointer user_data) { _CertRenewalCtx *ctx; gchar *old_pem = NULL; TlsCert *old_cert = NULL; guint64 parent_ca_id = 0; old_pem = ca_file_get_public_pem_from_id (CA_FILE_ELEMENT_TYPE_CERT, cert_id); if (!old_pem) { cb (g_strdup (_("Cannot read certificate PEM from database.")), user_data); return; } old_cert = tls_parse_cert_pem (old_pem); if (!old_cert) { g_free (old_pem); cb (g_strdup (_("Cannot parse certificate.")), user_data); return; } if (!ca_file_get_id_from_dn (CA_FILE_ELEMENT_TYPE_CERT, old_cert->i_dn, &parent_ca_id)) { gchar *err = g_strdup_printf ( _("Cannot find issuer CA in this database (issuer DN: %s)."), old_cert->i_dn ? old_cert->i_dn : "(null)"); g_free (old_pem); tls_cert_free (old_cert); cb (err, user_data); return; } ctx = g_new0 (_CertRenewalCtx, 1); ctx->cert_id = cert_id; ctx->new_cert_id_out = new_cert_id_out; ctx->old_pem = old_pem; ctx->old_cert = old_cert; ctx->parent_ca_id = parent_ca_id; ctx->parent_pem = ca_file_get_public_pem_from_id (CA_FILE_ELEMENT_TYPE_CERT, parent_ca_id); ctx->parent_dn = ca_file_get_dn_from_id (CA_FILE_ELEMENT_TYPE_CERT, parent_ca_id); ctx->cb = cb; ctx->cb_user_data = user_data; pkey_manage_get_certificate_pkey (parent_ca_id, _cert_renewal_got_pkey_cb, ctx); } #endif /* GNOMINTCLI */ gnomint-1.6.4/src/prop_node.c0000644000000000000000000000472115212761266014667 0ustar00rootroot// gnoMint: a graphical interface for managing a certification authority // Copyright (C) 2006-2009 David Marin Carreno // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #include #include "prop_node.h" struct _GnomintPropNode { GObject parent_instance; gchar *name; gchar *value; GListStore *children; }; G_DEFINE_TYPE (GnomintPropNode, gnomint_prop_node, G_TYPE_OBJECT) static void gnomint_prop_node_finalize (GObject *object) { GnomintPropNode *self = GNOMINT_PROP_NODE (object); g_free (self->name); g_free (self->value); g_clear_object (&self->children); G_OBJECT_CLASS (gnomint_prop_node_parent_class)->finalize (object); } static void gnomint_prop_node_class_init (GnomintPropNodeClass *klass) { G_OBJECT_CLASS (klass)->finalize = gnomint_prop_node_finalize; } static void gnomint_prop_node_init (GnomintPropNode *self) { self->children = g_list_store_new (GNOMINT_TYPE_PROP_NODE); } GnomintPropNode * gnomint_prop_node_new (const gchar *name, const gchar *value) { GnomintPropNode *node = g_object_new (GNOMINT_TYPE_PROP_NODE, NULL); node->name = g_strdup (name); node->value = g_strdup (value); return node; } void gnomint_prop_node_set_name (GnomintPropNode *self, const gchar *name) { g_free (self->name); self->name = g_strdup (name); } const gchar * gnomint_prop_node_get_name (GnomintPropNode *self) { return self->name; } void gnomint_prop_node_set_value (GnomintPropNode *self, const gchar *value) { g_free (self->value); self->value = g_strdup (value); } const gchar * gnomint_prop_node_get_value (GnomintPropNode *self) { return self->value; } GListStore * gnomint_prop_node_get_children (GnomintPropNode *self) { return self->children; } gnomint-1.6.4/src/san_entry.c0000644000000000000000000000451015212761266014700 0ustar00rootroot// gnoMint: a graphical interface for managing a certification authority // Copyright (C) 2006-2009 David Marín Carreño // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #include #include "san_entry.h" struct _GnomintSanEntry { GObject parent_instance; gchar *san_type; gchar *value; }; G_DEFINE_TYPE (GnomintSanEntry, gnomint_san_entry, G_TYPE_OBJECT) static void gnomint_san_entry_finalize (GObject *object) { GnomintSanEntry *self = GNOMINT_SAN_ENTRY (object); g_free (self->san_type); g_free (self->value); G_OBJECT_CLASS (gnomint_san_entry_parent_class)->finalize (object); } static void gnomint_san_entry_class_init (GnomintSanEntryClass *klass) { G_OBJECT_CLASS (klass)->finalize = gnomint_san_entry_finalize; } static void gnomint_san_entry_init (GnomintSanEntry *self) { self->san_type = NULL; self->value = NULL; } GnomintSanEntry * gnomint_san_entry_new (const gchar *san_type, const gchar *value) { GnomintSanEntry *self = g_object_new (GNOMINT_TYPE_SAN_ENTRY, NULL); self->san_type = g_strdup (san_type); self->value = g_strdup (value); return self; } void gnomint_san_entry_set_san_type (GnomintSanEntry *self, const gchar *san_type) { g_free (self->san_type); self->san_type = g_strdup (san_type); } const gchar * gnomint_san_entry_get_san_type (GnomintSanEntry *self) { return self->san_type; } void gnomint_san_entry_set_value (GnomintSanEntry *self, const gchar *value) { g_free (self->value); self->value = g_strdup (value); } const gchar * gnomint_san_entry_get_value (GnomintSanEntry *self) { return self->value; } gnomint-1.6.4/src/import.c0000644000000000000000000014334115212761266014216 0ustar00rootroot// gnoMint: a graphical interface for managing a certification authority // Copyright (C) 2006-2009 David Marín Carreño // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #ifndef GNOMINTCLI #include #include #endif #include #include #include #include "import.h" #include "tls.h" #include "dialog.h" #include "ca_file.h" #include "gnomint_time.h" #ifndef GNOMINTCLI typedef void (*__ImportPasswordCallback)(gchar *password, gpointer user_data); #endif gchar * __import_ask_password (const gchar *crypted_part_description); gint __import_csr (gnutls_x509_crq_t *crq, gchar ** csr_dn, guint64 *id); gint __import_cert (gnutls_x509_crt_t *cert, gchar ** cert_dn, guint64 *id); #ifndef GNOMINTCLI typedef struct { GtkBuilder *dialog_gtkb; GObject *password_widget; __ImportPasswordCallback cb; gpointer user_data; } __ImportAskPasswordCtx; static void __import_ask_password_response (GtkDialog *dialog, gint response_id, gpointer data) { __ImportAskPasswordCtx *ctx = (__ImportAskPasswordCtx *) data; gchar *password = NULL; if (response_id == GTK_RESPONSE_OK || response_id == GTK_RESPONSE_ACCEPT || response_id == GTK_RESPONSE_YES || response_id > 0) { password = g_strdup ((gchar *) gtk_editable_get_text (GTK_EDITABLE (ctx->password_widget))); } gtk_window_destroy (GTK_WINDOW (dialog)); g_object_unref (G_OBJECT (ctx->dialog_gtkb)); ctx->cb (password, ctx->user_data); g_free (ctx); } G_GNUC_UNUSED static void __import_ask_password_async (const gchar *crypted_part_description, __ImportPasswordCallback cb, gpointer user_data) { GObject * widget = NULL, * password_widget = NULL, *description_widget = NULL; GtkBuilder * dialog_gtkb = NULL; gchar * label = NULL; __ImportAskPasswordCtx *ctx; dialog_gtkb = gtk_builder_new(); gtk_builder_add_from_file (dialog_gtkb, g_build_filename (PACKAGE_DATA_DIR, "gnomint", "import_password_dialog.ui", NULL), NULL); password_widget = gtk_builder_get_object (dialog_gtkb, "import_password_entry"); description_widget = gtk_builder_get_object (dialog_gtkb, "import_crypted_part_description"); label = g_strdup_printf ("%s", crypted_part_description); gtk_label_set_markup (GTK_LABEL(description_widget), (const gchar *) label); g_free (label); gtk_widget_grab_focus (GTK_WIDGET(password_widget)); ctx = g_new0 (__ImportAskPasswordCtx, 1); ctx->dialog_gtkb = dialog_gtkb; ctx->password_widget = password_widget; ctx->cb = cb; ctx->user_data = user_data; widget = gtk_builder_get_object (dialog_gtkb, "import_password_dialog"); g_signal_connect (widget, "response", G_CALLBACK (__import_ask_password_response), ctx); gtk_widget_set_visible (GTK_WIDGET (widget), TRUE); gtk_window_set_transient_for (GTK_WINDOW (widget), dialog_get_main_window ()); gtk_window_present (GTK_WINDOW (widget)); } #endif #ifndef GNOMINTCLI typedef struct { gint response; GMainLoop *loop; } _ImportPwdSyncCtx; static void __import_pwd_sync_response (GtkDialog *dialog, gint response_id, gpointer user_data) { _ImportPwdSyncCtx *ctx = user_data; ctx->response = response_id; g_main_loop_quit (ctx->loop); } #endif gchar * __import_ask_password (const gchar *crypted_part_description) { #ifndef GNOMINTCLI gchar *password = NULL; GObject *widget = NULL, *password_widget = NULL, *description_widget = NULL; GtkBuilder *dialog_gtkb = NULL; gchar *label = NULL; _ImportPwdSyncCtx ctx = { GTK_RESPONSE_NONE, g_main_loop_new (NULL, FALSE) }; dialog_gtkb = gtk_builder_new(); gtk_builder_set_translation_domain (dialog_gtkb, GETTEXT_PACKAGE); gtk_builder_add_from_file (dialog_gtkb, g_build_filename (PACKAGE_DATA_DIR, "gnomint", "import_password_dialog.ui", NULL), NULL); password_widget = gtk_builder_get_object (dialog_gtkb, "import_password_entry"); description_widget = gtk_builder_get_object (dialog_gtkb, "import_crypted_part_description"); label = g_strdup_printf ("%s", crypted_part_description); gtk_label_set_markup (GTK_LABEL(description_widget), label); g_free (label); gtk_widget_grab_focus (GTK_WIDGET(password_widget)); widget = gtk_builder_get_object (dialog_gtkb, "import_password_dialog"); g_signal_connect (widget, "response", G_CALLBACK (__import_pwd_sync_response), &ctx); gtk_widget_set_visible (GTK_WIDGET(widget), TRUE); gtk_window_set_transient_for (GTK_WINDOW(widget), dialog_get_main_window ()); gtk_window_present (GTK_WINDOW(widget)); g_main_loop_run (ctx.loop); g_main_loop_unref (ctx.loop); if (ctx.response == GTK_RESPONSE_OK || ctx.response == GTK_RESPONSE_ACCEPT) password = g_strdup (gtk_editable_get_text (GTK_EDITABLE(password_widget))); gtk_window_destroy (GTK_WINDOW(widget)); g_object_unref (G_OBJECT(dialog_gtkb)); return password; #else gchar *password = NULL; gchar *prompt = NULL; printf (_("The whole selected file, or some of its elements, seems to\n" "be cyphered using a password or passphrase. For importing\n" "the file into gnoMint database, you must provide an \n" "appropriate password.\n")); prompt = g_strdup_printf (_("Please introduce password for `%s'"), crypted_part_description); password = dialog_ask_for_password (prompt); g_free (prompt); return password; #endif } gint __import_csr (gnutls_x509_crq_t *crq, gchar ** csr_dn, guint64 *id) { gchar * pem_csr=NULL; size_t size; gchar * error_msg; gint result = -1; gchar *aux = NULL; if (csr_dn) { size = 0; gnutls_x509_crq_get_dn (*crq, aux, &size); if (size) { aux = g_new0(gchar, size); gnutls_x509_crq_get_dn (*crq, aux, &size); *csr_dn = g_strdup (aux); g_free (aux); aux = NULL; } } size = 0; gnutls_x509_crq_export (*crq, GNUTLS_X509_FMT_PEM, pem_csr, &size) ; if (size) { pem_csr = g_new0(gchar, size); gnutls_x509_crq_export (*crq, GNUTLS_X509_FMT_PEM, pem_csr, &size); } error_msg = ca_file_insert_csr (NULL, pem_csr, NULL, id); if (error_msg) { gchar *message = g_strdup_printf (_("Couldn't import the certificate request. \n" "The database returned this error: \n\n'%s'"), error_msg); dialog_error (message); g_free (message); } else { result = 1; } return result; } gint __import_cert (gnutls_x509_crt_t *cert, gchar **cert_dn, guint64 *id) { guchar *serial_str = NULL; UInt160 serial = {0, 0, 0}; gchar * pem_cert=NULL; size_t size; gchar * error_msg; gboolean is_ca; guint is_critical; gchar *aux = NULL; gint result = -1; // For inserting the cert into the database we must get: // - if the certificate is a CA certificate // - serial // - activation time // - expiration time // Is_CA? is_ca = gnutls_x509_crt_get_ca_status (*cert, &is_critical); if (is_ca == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) is_ca = FALSE; // Serial size = 0; gnutls_x509_crt_get_serial (*cert, aux, &size); aux = NULL; if (size) { serial_str = g_new0(guchar, size); gnutls_x509_crt_get_serial (*cert, serial_str, &size); uint160_read (&serial, serial_str, size); g_free (serial_str); aux = NULL; } if (cert_dn) { size = 0; gnutls_x509_crt_get_dn (*cert, aux, &size); if (size) { aux = g_new0(gchar, size); gnutls_x509_crt_get_dn (*cert, aux, &size); *cert_dn = g_strdup (aux); g_free (aux); aux = NULL; } } // Now we re-export the PEM (as the original PEM can be a list of certs) size = 0; gnutls_x509_crt_export (*cert, GNUTLS_X509_FMT_PEM, aux, &size); if (size) { aux = g_new0(gchar, size); gnutls_x509_crt_export (*cert, GNUTLS_X509_FMT_PEM, aux, &size); pem_cert = g_strdup (aux); g_free (aux); aux = NULL; } error_msg = ca_file_insert_imported_cert (is_ca, serial, pem_cert, id); /* On a 32-bit-time_t build, GnuTLS's getter caps an imported certificate's * notAfter at 2038, and that capped value is what gets stored — we cannot * recover the true date here. Warn the user that the stored expiration may * be inaccurate. gnomint_time_display_is_uncertain() is a no-op where * time_t is 64-bit, so this never fires on those builds (dates are exact). */ if (! error_msg) { time_t imported_expiration = gnutls_x509_crt_get_expiration_time (*cert); if (gnomint_time_display_is_uncertain ((gint64) imported_expiration)) dialog_info (_("The imported certificate expires after 2038-01-19, a date " "this 32-bit build cannot represent. Its stored expiration " "has been capped and may be inaccurate. The certificate " "itself is unchanged; open it on a 64-bit system to see the " "exact date.")); } if (pem_cert) g_free (pem_cert); if (error_msg) { gchar *message = g_strdup_printf (_("Couldn't import the certificate. \n" "The database returned this error: \n\n'%s'"), error_msg); dialog_error (message); g_free (message); } else { result = 1; } return result; } gint __import_crl (gnutls_x509_crl_t *crl) { gint result = -1; gnutls_x509_crt_t issuer_crt; gsize size = 0; gchar *issuer_dn = NULL; gchar *cert_pem = NULL; guint64 issuer_id; gnutls_datum_t file_datum; size = 0; gnutls_x509_crl_get_issuer_dn (*crl, issuer_dn, &size) ; if (size) { issuer_dn = g_new0(gchar, size); gnutls_x509_crl_get_issuer_dn (*crl, issuer_dn, &size); } // First, we search the issuer in the database, using DN if (ca_file_get_id_from_dn (CA_FILE_ELEMENT_TYPE_CERT, issuer_dn, &issuer_id)) { // We check if the supposed issuer is the actual issuer cert_pem = ca_file_get_public_pem_from_id (CA_FILE_ELEMENT_TYPE_CERT, issuer_id); if (gnutls_x509_crt_init (&issuer_crt) < 0) { g_free (issuer_dn); g_free (cert_pem); return result; } file_datum.data = (guchar *) cert_pem; file_datum.size = strlen(cert_pem); if (gnutls_x509_crt_import (issuer_crt, &file_datum, GNUTLS_X509_FMT_PEM) == GNUTLS_E_SUCCESS) { if (gnutls_x509_crl_check_issuer (*crl, issuer_crt)) { int number_of_certs; int i; // If it is, we recover all the certificates number_of_certs = gnutls_x509_crl_get_crt_count(*crl); for (i=0; i 0) { int i; // We go through all the certificates in inverse // order, as it's usual having a list of certificates conforming a // certification path, with the root CA certificate as the last // certificate result = -1; for (i = num_certs - 1; i>=0; i--) { if (cert_dn && *cert_dn) { g_free (*cert_dn); *cert_dn = NULL; } if (__import_cert (&certs[i], cert_dn, id) > 0) result = 1; } g_free (certs); return result; } // Trying to import a single certificate in DER format if (gnutls_x509_crt_init (&cert) < 0) return 0; if (gnutls_x509_crt_import (cert, &file_datum, GNUTLS_X509_FMT_DER) == 0) { result = __import_cert (&cert, cert_dn, id); } gnutls_x509_crt_deinit (cert); return result; } gint import_pkey_wo_passwd (guchar *file_contents, gsize file_contents_size) { gint result = 0; gnutls_x509_privkey_t privkey; gnutls_datum_t file_datum; gchar *result_import; file_datum.data = file_contents; file_datum.size = file_contents_size; // Trying to import a Private Key in PEM format if (gnutls_x509_privkey_init (&privkey) < 0) return 0; // Trying to import a Private Key in DER format if (gnutls_x509_privkey_import (privkey, &file_datum, GNUTLS_X509_FMT_PEM) == 0 || gnutls_x509_privkey_import (privkey, &file_datum, GNUTLS_X509_FMT_DER) == 0) { gchar * pem_privkey=NULL; size_t size; result = -1; size = 0; gnutls_x509_privkey_export (privkey, GNUTLS_X509_FMT_PEM, pem_privkey, &size) ; if (size) { pem_privkey = g_new0(gchar, size); gnutls_x509_privkey_export (privkey, GNUTLS_X509_FMT_PEM, pem_privkey, &size); } result_import = ca_file_insert_imported_privkey (pem_privkey); if (result_import) { dialog_error (result_import); } else { result = 1; } g_free (pem_privkey); } gnutls_x509_privkey_deinit (privkey); return result; } gint import_crl (guchar *file_contents, gsize file_contents_size) { gint result = 0; gnutls_x509_crl_t crl; gnutls_datum_t file_datum; file_datum.data = file_contents; file_datum.size = file_contents_size; // Trying to import a Certificate Revocation List in PEM format if (gnutls_x509_crl_init (&crl) < 0) return 0; if (gnutls_x509_crl_import (crl, &file_datum, GNUTLS_X509_FMT_PEM) != 0 && gnutls_x509_crl_import (crl, &file_datum, GNUTLS_X509_FMT_DER) != 0) { // The given file is not a DER-coded CRL, neither a PEM-coded CRL gnutls_x509_crl_deinit (crl); return 0; } result = __import_crl (&crl); gnutls_x509_crl_deinit (crl); return result; } /* PKCS#7 importing was removed in libgnutls 2.6.0 */ /* gint import_pkcs7 (guchar *file_contents, gsize file_contents_size) */ /* { */ /* gboolean successful_import = FALSE; */ /* gnutls_pkcs7_t pkcs7; */ /* gnutls_datum_t file_datum; */ /* file_datum.data = file_contents; */ /* file_datum.size = file_contents_size; */ /* // Trying to import a Private Key in PEM format */ /* if (gnutls_pkcs7_init (&pkcs7) < 0) */ /* return FALSE; */ /* // Trying to import a Private Key in DER format */ /* if (gnutls_pkcs7_import (pkcs7, &file_datum, GNUTLS_X509_FMT_PEM) == 0 || */ /* gnutls_pkcs7_import (pkcs7, &file_datum, GNUTLS_X509_FMT_DER) == 0) { */ /* int i; */ /* int certs_no = gnutls_pkcs7_get_crt_count (pkcs7); */ /* int crl_no = gnutls_pkcs7_get_crl_count (pkcs7); */ /* for (i=0; i < certs_no; i++) { */ /* guchar *raw_cert = NULL; */ /* gsize raw_cert_size = 0; */ /* gnutls_pkcs7_get_crt_raw (pkcs7, i, raw_cert, &raw_cert_size); */ /* raw_cert = g_new0(guchar, raw_cert_size); */ /* gnutls_pkcs7_get_crt_raw (pkcs7, i, raw_cert, &raw_cert_size); */ /* import_certlist (raw_cert, raw_cert_size); */ /* g_free (raw_cert); */ /* } */ /* for (i=0; i < crl_no; i++) { */ /* guchar *raw_crl = NULL; */ /* gsize raw_crl_size = 0; */ /* gnutls_pkcs7_get_crl_raw (pkcs7, i, raw_crl, &raw_crl_size); */ /* raw_crl = g_new0(guchar, raw_crl_size); */ /* gnutls_pkcs7_get_crl_raw (pkcs7, i, raw_crl, &raw_crl_size); */ /* import_crl (raw_crl, raw_crl_size); */ /* g_free (raw_crl); */ /* } */ /* successful_import = TRUE; */ /* } */ /* gnutls_pkcs7_deinit (pkcs7); */ /* return successful_import; */ /* } */ gint import_pkcs8 (guchar *file_contents, gsize file_contents_size) { gint result = 0; gnutls_x509_privkey_t privkey; gnutls_datum_t file_datum; file_datum.data = file_contents; file_datum.size = file_contents_size; // Trying to import a Private Key in PEM format if (gnutls_x509_privkey_init (&privkey) < 0) return 0; // Trying to import a Private Key in DER format if (gnutls_x509_privkey_import_pkcs8 (privkey, &file_datum, GNUTLS_X509_FMT_PEM, NULL, GNUTLS_PKCS_PLAIN) == 0 || gnutls_x509_privkey_import_pkcs8 (privkey, &file_datum, GNUTLS_X509_FMT_DER, NULL, GNUTLS_PKCS_PLAIN) == 0) { result = -1; gchar * pem_privkey=NULL; gchar * error_msg = NULL; size_t size; size = 0; gnutls_x509_privkey_export (privkey, GNUTLS_X509_FMT_PEM, pem_privkey, &size) ; if (size) { pem_privkey = g_new0(gchar, size); gnutls_x509_privkey_export (privkey, GNUTLS_X509_FMT_PEM, pem_privkey, &size); } error_msg = ca_file_insert_imported_privkey (pem_privkey); if (error_msg) { dialog_error (error_msg); } else { result = 1; } g_free (pem_privkey); } else { // Now we check if the given file is a PEM codified encrypted private key: while trying to import, // the password won't be correct. gint result_decryption = gnutls_x509_privkey_import_pkcs8 (privkey, &file_datum, GNUTLS_X509_FMT_PEM, NULL, 0); while (result_decryption==GNUTLS_E_DECRYPTION_FAILED) { // We mark a successful import, as it is a PKCS#8 cyphered file: it must not be probed with other formats. result = -1; // We launch a window for asking the password. gchar * password = __import_ask_password (_("PKCS#8 crypted private key")); if (! password) { gnutls_x509_privkey_deinit (privkey); return result; } result_decryption = gnutls_x509_privkey_import_pkcs8 (privkey, &file_datum, GNUTLS_X509_FMT_PEM, password, 0); g_free (password); if (result_decryption == GNUTLS_E_DECRYPTION_FAILED) { dialog_error (_("The given password doesn't match the one used for crypting this part")); } } if (result_decryption == GNUTLS_E_SUCCESS) { gchar * pem_privkey=NULL; size_t size; gchar * error_msg = NULL; result = -1; size = 0; gnutls_x509_privkey_export (privkey, GNUTLS_X509_FMT_PEM, pem_privkey, &size) ; if (size) { pem_privkey = g_new0(gchar, size); gnutls_x509_privkey_export (privkey, GNUTLS_X509_FMT_PEM, pem_privkey, &size); } error_msg = ca_file_insert_imported_privkey (pem_privkey); if (error_msg) { dialog_error (error_msg); } else { result = 1; } g_free (pem_privkey); } // Importing DER-codified encrypted private keys is not supported, as they cannot be probed without // a password. } gnutls_x509_privkey_deinit (privkey); return result; } gint import_pkcs12 (guchar *file_contents, gsize file_contents_size) { gint result = 0; gnutls_pkcs12_t pkcs12; gnutls_datum_t file_datum; file_datum.data = file_contents; file_datum.size = file_contents_size; // Trying to import a Private Key in PEM format if (gnutls_pkcs12_init (&pkcs12) < 0) return result; // Trying to import a PKCS#12 in PEM or DER format if (gnutls_pkcs12_import (pkcs12, &file_datum, GNUTLS_X509_FMT_PEM, 0) == 0 || gnutls_pkcs12_import (pkcs12, &file_datum, GNUTLS_X509_FMT_DER, 0) == 0) { guint n_bags = 0; gnutls_pkcs12_bag_t *pkcs12_aux_bag = NULL; GArray *pkcs_bag_array = g_array_new (FALSE, TRUE, sizeof(gnutls_pkcs12_bag_t)); gint get_bag_status; gchar *password = NULL; guint i; result = -1; // Now, we walk through all the bags in the PKCS12 structure // inserting them into an array for walking through them afterwards do { pkcs12_aux_bag = g_new0 (gnutls_pkcs12_bag_t, 1); gnutls_pkcs12_bag_init (pkcs12_aux_bag); get_bag_status = gnutls_pkcs12_get_bag (pkcs12, n_bags, *pkcs12_aux_bag); if (get_bag_status == GNUTLS_E_SUCCESS) { g_array_append_val (pkcs_bag_array, pkcs12_aux_bag); n_bags ++; } else { gnutls_pkcs12_bag_deinit (*pkcs12_aux_bag); g_free (pkcs12_aux_bag); } } while (get_bag_status == GNUTLS_E_SUCCESS); if (n_bags == 0) { // Couldn't get any bag. // Exiting with error gnutls_pkcs12_deinit (pkcs12); return result; } // Now, we first uncrypt all crypted bags for (i=0; imessage)); return FALSE; } file_contents_size = g_mapped_file_get_length (mapped_file); file_contents = g_new0 (guchar, file_contents_size); memcpy (file_contents, g_mapped_file_get_contents (mapped_file), file_contents_size); g_mapped_file_unref(mapped_file); // We start to check each type of file, in PEM and DER // formats, for see if some of them matches with the actual file // Certificate request successful_import = import_csr (file_contents, file_contents_size, dn, id); // Certificate list (or single certificate) if (! successful_import) successful_import = import_certlist (file_contents, file_contents_size, dn, id); // Private key without password if (! successful_import) successful_import = import_pkey_wo_passwd (file_contents, file_contents_size); // Certificate revocation list if (! successful_import) successful_import = import_crl (file_contents, file_contents_size); /* PKCS7 importing was removed in libgnutls 2.6.0 */ /* // PKCS7 structure */ /* if (! successful_import) */ /* successful_import = import_pkcs7 (file_contents, file_contents_size); */ // PKCS12 structure if (! successful_import) successful_import = import_pkcs12 (file_contents, file_contents_size); // PKCS8 privkey structure if (! successful_import) successful_import = import_pkcs8 (file_contents, file_contents_size); g_free (file_contents); if (successful_import) { dialog_refresh_list(); } else { dialog_error (_("Couldn't find any supported format in the given file")); } return TRUE; } gint import_openssl_private_key (const gchar *filename, gchar **last_password, gchar *file_description) { guint result = 0; gchar *filecontents = NULL; if (! g_file_get_contents (filename, &filecontents, NULL, NULL)) { gchar *message = g_strdup_printf(_("Couldn't open %s file. Check permissions."), filename); dialog_error (message); g_free (message); return result; } if (g_strrstr (filecontents, "Proc-Type") && g_strrstr (filecontents, "DEK-Info")) { // The file is codified with a proprietary OpenSSL format // so we call openssl for decoding it gchar *keytype = NULL; gchar *uncyphered_cakey = NULL; gchar *error_message = NULL; gchar *temp_pwd = NULL; gint exit_status = 0; GError *gerror = NULL; gchar *opensslargv[7]; gboolean first_time = TRUE; if (g_strrstr (filecontents, "BEGIN RSA")) { keytype = "rsa"; } if (g_strrstr (filecontents, "BEGIN DSA")) { keytype = "dsa"; } if (!keytype) { gchar * message = g_strdup_printf(_("Couldn't recognize the file %s as a RSA or DSA private key."), filename); dialog_error (message); g_free (message); g_free (filecontents); return result; } do { gchar *description; gchar *dirname = NULL; if (! first_time || ! *last_password) { // We ask for a password only if there is no current password // or if the current password has already failed. if (file_description) description = g_strdup_printf (_("Private key for %s"),file_description); else description = g_strdup_printf (_("Private key %s"), filename); *last_password = __import_ask_password (description); g_free (description); if (*last_password == NULL) { g_free (filecontents); break; } } temp_pwd = g_strdup_printf ("pass:%s", *last_password); opensslargv[0] = "openssl"; opensslargv[1] = keytype; opensslargv[2] = "-in"; opensslargv[3] = (gchar *) filename; opensslargv[4] = "-passin"; opensslargv[5] = temp_pwd; opensslargv[6] = NULL; dirname = g_path_get_dirname (filename); if (! g_spawn_sync (dirname, opensslargv, NULL, G_SPAWN_SEARCH_PATH, NULL, NULL, &uncyphered_cakey, &error_message, &exit_status, &gerror)) { // Problem while launching openssl... g_free (filecontents); g_free (temp_pwd); g_free (dirname); dialog_error (_("Problem while calling to openssl for decyphering private key.")); break; } g_free (dirname); g_free (temp_pwd); if (exit_status != 0) { gchar *error_to_show = g_strdup_printf (_("OpenSSL has returned the following error " "while trying to decypher the private key:\n\n%s"), error_message); dialog_error (error_to_show); g_free (error_to_show); first_time = FALSE; } } while (exit_status != 0); if (* last_password == NULL || gerror) { return result; } g_free (filecontents); if (error_message) g_free (error_message); filecontents = uncyphered_cakey; } // Now, we import the uncyphered private key: result = import_pkey_wo_passwd ((guchar *) filecontents, strlen(filecontents)); if (result == 1) dialog_refresh_list(); g_free (filecontents); return result; } gchar * import_whole_dir (gchar *dirname) { gchar *result = NULL; gchar *filename = NULL; const gchar *int_filename = NULL; guint CA_directory_type = 0; gboolean error = FALSE; gchar *ca_password = NULL; GError *gerror = NULL; GDir * dir = NULL; GList * problematic_files = NULL, *cursor = NULL; GHashTable *descriptions = NULL; guint64 ca_root_id; gchar *filecontents = NULL; UInt160 next_serial; // First, we try to probe if this is really a CA-containing directory // * Try to detect OpenSSL CA.pl or TinyCA { filename = g_build_filename (dirname, "cacert.pem", NULL); if (! g_file_test(filename, G_FILE_TEST_IS_REGULAR)) { error = TRUE; } g_free (filename); filename = g_build_filename (dirname, "serial", NULL); if (! g_file_test(filename, G_FILE_TEST_IS_REGULAR)) { error = TRUE; } g_free (filename); filename = g_build_filename (dirname, "certs", NULL); if (! g_file_test(filename, G_FILE_TEST_IS_DIR)) { error = TRUE; } g_free (filename); filename = g_build_filename (dirname, "crl", NULL); if (! g_file_test(filename, G_FILE_TEST_IS_DIR)) { error = TRUE; } g_free (filename); filename = g_build_filename (dirname, "cacert.key", NULL); if (! g_file_test(filename, G_FILE_TEST_IS_REGULAR)) { g_free (filename); filename = g_build_filename (dirname, "private", "cakey.pem", NULL); if (! g_file_test(filename, G_FILE_TEST_IS_REGULAR)) { error = TRUE; } else { if (! error) CA_directory_type = 2; // OpenSSL CA.pl } } g_free (filename); if (! error && ! CA_directory_type) { CA_directory_type = 1; //TinyCA } if (error) { CA_directory_type = 0; } } // * Other formats... (?) switch (CA_directory_type) { case 1: case 2: descriptions = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); // First we import the public CA root certificate filename = g_build_filename (dirname, "cacert.pem", NULL); if (import_single_file (filename, NULL, &ca_root_id) == FALSE) { g_free (filename); result = _("There was a problem while importing the public CA root certificate"); break; } g_free (filename); // Now we import the private CA root-certificate private key // Usually, it is crypted in a OpenSSL proprietary format. // Let's check it: if (CA_directory_type == 1 /* TinyCA */) { filename = g_build_filename (dirname, "cacert.key", NULL); } else { /* CA_directory_type == 2 (OpenSSL's CA.pl) */ filename = g_build_filename (dirname, "private", "cakey.pem", NULL); } if (import_openssl_private_key (filename, &ca_password, _("CA Root certificate")) == 0) { g_free (filename); result = _("There was a problem while importing the private key corresponding to CA root certificate"); break; } g_free (filename); // Now we import all the certificates emitted by the CA filename = g_build_filename (dirname, "certs", NULL); dir = g_dir_open (filename, 0, &gerror); if (! dir) { g_free (filename); result = _("There was a problem while opening the directory certs/."); } else { g_free (filename); while ((int_filename = g_dir_read_name (dir))) { if (g_strrstr (int_filename, ".pem")) { gchar *description = NULL; filename = g_build_filename (dirname, "certs", int_filename, NULL); if (import_single_file ((gchar *) filename, &description, NULL) == 0) { problematic_files = g_list_append (problematic_files, g_strdup(filename)); } else { if (description && ! g_hash_table_lookup (descriptions, int_filename)) g_hash_table_insert (descriptions, g_strdup(int_filename), description); } g_free (filename); } } g_dir_close (dir); } filename = g_build_filename (dirname, "newcerts", NULL); if (g_file_test(filename, G_FILE_TEST_IS_DIR)) { dir = g_dir_open (filename, 0, &gerror); if (! dir) { g_free (filename); result = _("There was a problem while opening the directory newcerts/."); } else { g_free (filename); while ((int_filename = g_dir_read_name (dir))) { if (g_strrstr (int_filename, ".pem")) { gchar *description = NULL; filename = g_build_filename (dirname, "newcerts", int_filename, NULL); if (import_single_file ((gchar *) filename, &description, NULL) == 0) { problematic_files = g_list_append (problematic_files, g_strdup(filename)); } else { if (description && ! g_hash_table_lookup (descriptions, int_filename)) g_hash_table_insert (descriptions, g_strdup(int_filename), description); } g_free (filename); } } g_dir_close (dir); } } // Now we import all the CSRs of the CA filename = g_build_filename (dirname, "req", NULL); if (g_file_test(filename, G_FILE_TEST_IS_DIR)) { dir = g_dir_open (filename, 0, &gerror); if (! dir) { g_free (filename); result = _("There was a problem while opening the directory req."); break; } g_free (filename); while ((int_filename = g_dir_read_name (dir))) { if (g_strrstr (int_filename, ".pem")) { gchar *description = NULL; filename = g_build_filename (dirname, "req", int_filename, NULL); if (import_single_file ((gchar *) filename, &description, NULL) == 0) { problematic_files = g_list_append (problematic_files, g_strdup(filename)); } else { if (description && ! g_hash_table_lookup (descriptions, int_filename)) g_hash_table_insert (descriptions, g_strdup(int_filename), description); } g_free (filename); } } g_dir_close (dir); } // Now we import all the CRLs of the CA filename = g_build_filename (dirname, "crl", NULL); dir = g_dir_open (filename, 0, &gerror); if (! dir) { g_free (filename); result = _("There was a problem while opening the directory crl/."); break; } g_free (filename); while ((int_filename = g_dir_read_name (dir))) { if (g_strrstr (int_filename, ".pem")) { filename = g_build_filename (dirname, "crl", int_filename, NULL); if (import_single_file ((gchar *) filename, NULL, NULL) == 0) { problematic_files = g_list_append (problematic_files, g_strdup(filename)); } g_free (filename); } } g_dir_close (dir); // Now we import all the private keys of the CA filename = g_build_filename (dirname, "keys", NULL); if (g_file_test(filename, G_FILE_TEST_IS_DIR)) { dir = g_dir_open (filename, 0, &gerror); if (! dir) { g_free (filename); result = _("There was a problem while opening the directory keys/."); break; } g_free (filename); while ((int_filename = g_dir_read_name (dir))) { if (g_strrstr (int_filename, ".pem")) { gchar *description = NULL; filename = g_build_filename (dirname, "keys", int_filename, NULL); description = g_hash_table_lookup (descriptions, int_filename); if (! description) description = filename; if (import_openssl_private_key (filename, &ca_password, description) == 0) { problematic_files = g_list_append (problematic_files, g_strdup(filename)); } g_free (filename); } } g_dir_close (dir); } // Now we import the last serial number filename = g_build_filename (dirname, "serial", NULL); if (! g_file_get_contents (filename, &filecontents, NULL, NULL)) { gchar *message = g_strdup_printf(_("Couldn't open %s file. Check permissions."), filename); dialog_error (message); g_free (message); return result; } g_free (filename); if (! uint160_assign_hexstr (&next_serial, filecontents)) uint160_assign (&next_serial, 1); g_free (filecontents); ca_file_set_next_serial (&next_serial, ca_root_id); // We must show the problematic files. // TO DO cursor = g_list_first (problematic_files); while (cursor) { g_free (cursor->data); cursor->data = NULL; cursor = cursor->next; } g_list_free (problematic_files); g_hash_table_destroy (descriptions); break; case 0: default: result = _("Files in the directory don't belong to any supported CA format."); break; } return result; } gnomint-1.6.4/src/new_ca_window.h0000644000000000000000000000356215212761266015534 0ustar00rootroot// gnoMint: a graphical interface for managing a certification authority // Copyright (C) 2006-2009 David Marín Carreño // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #ifndef _NEW_CA_WINDOW_H_ #define _NEW_CA_WINDOW_H_ #ifndef GNOMINTCLI void new_ca_window_display (void); void new_ca_tab_activate (int tab_number); void on_cn_entry_changed (GtkEditable *editable, gpointer user_data) ; void on_new_ca_next1_clicked (GtkButton *widget, gpointer user_data); void on_new_ca_previous2_clicked (GtkButton *widget, gpointer user_data); void on_new_ca_next2_clicked (GtkButton *widget, gpointer user_data); void on_new_ca_previous3_clicked (GtkButton *widget, gpointer user_data); void on_new_ca_cancel_clicked (GtkButton *widget, gpointer user_data); void on_new_ca_pwd_entry_changed (GtkEntry *entry, gpointer user_data); void on_new_ca_pwd_protect_radiobutton_toggled (GtkCheckButton *radiobutton, gpointer user_data); void on_new_ca_commit_clicked (GtkButton *widg, gpointer user_data); #endif #endif gnomint-1.6.4/src/csr_creation.h0000644000000000000000000000245415212761266015363 0ustar00rootroot// gnoMint: a graphical interface for managing a certification authority // Copyright (C) 2006-2009 David Marín Carreño // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #ifndef _CSR_CREATION_H_ #define _CSR_CREATION_H_ #include #include #include "tls.h" GThread * csr_creation_launch_thread (TlsCreationData *creation_data); void csr_creation_lock_status_mutex (void); void csr_creation_unlock_status_mutex (void); gpointer csr_creation_thread (gpointer data); gint csr_creation_get_thread_status (void); gchar * csr_creation_get_thread_message(void); #endif gnomint-1.6.4/src/export.c0000644000000000000000000005047515212761266014232 0ustar00rootroot// gnoMint: a graphical interface for managing a certification authority // Copyright (C) 2006-2009 David Marín Carreño // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #include #include #include #include #include "ca_file.h" #include "dialog.h" #include "export.h" #include "tls.h" #include "pkey_manage.h" gchar *export_dh_param (guint dh_size, gchar *filename) { GIOChannel * file = NULL; gchar *pem = NULL; GError * error = NULL; pem = tls_generate_dh_params (dh_size); file = g_io_channel_new_file (filename, "w", &error); if (error) { return (_("There was an error while saving Diffie-Hellman parameters.")); } g_io_channel_write_chars (file, pem, strlen(pem), NULL, &error); if (error) { return (_("There was an error while saving Diffie-Hellman parameters.")); } g_io_channel_shutdown (file, TRUE, &error); if (error) { return (_("There was an error while saving Diffie-Hellman parameters.")); } g_io_channel_unref (file); return NULL; } #ifdef GNOMINTCLI gchar * export_private_pkcs8 (guint64 id, gint type, gchar *filename) { GIOChannel * file = NULL; gchar * password = NULL; GError * error = NULL; gchar * dn = NULL; PkeyManageData * crypted_pkey = NULL; gchar * privatekey = NULL; gchar * pem = NULL; file = g_io_channel_new_file (filename, "w", &error); if (error) { if (file) g_io_channel_unref (file); return (_("There was an error while exporting private key.")); } switch (type) { case CA_FILE_ELEMENT_TYPE_CERT: crypted_pkey = pkey_manage_get_certificate_pkey (id); break; case CA_FILE_ELEMENT_TYPE_CSR: crypted_pkey = pkey_manage_get_csr_pkey (id); break; default: break; } dn = ca_file_get_dn_from_id (type, id); if (!crypted_pkey || !dn) { pkey_manage_data_free (crypted_pkey); g_free (dn); if (file) g_io_channel_unref (file); return (_("There was an error while getting private key.")); } privatekey = pkey_manage_uncrypt (crypted_pkey, dn); pkey_manage_data_free (crypted_pkey); g_free (dn); if (! privatekey) { if (file) g_io_channel_unref (file); return (_("There was an error while uncrypting private key.")); } password = dialog_get_password (_("You need to supply a passphrase for protecting the exported private key, " "so nobody else but authorized people can use it. This passphrase will be asked " "by any application that will make use of the private key."), _("Insert passphrase (8 characters or more):"), _("Insert passphrase (confirm):"), _("The introduced passphrases are distinct."), 8); if (! password) { g_free (privatekey); return (_("Operation cancelled.")); } pem = tls_generate_pkcs8_encrypted_private_key (privatekey, password); g_free (password); g_free (privatekey); if (!pem) { if (file) g_io_channel_unref (file); return (_("There was an error while password-protecting private key.")); } g_io_channel_write_chars (file, pem, strlen(pem), NULL, &error); if (error) { g_free (pem); if (file) g_io_channel_unref (file); return (_("There was an error while exporting private key.")); } g_free (pem); g_io_channel_shutdown (file, TRUE, &error); if (error) { g_io_channel_unref (file); return (_("There was an error while exporting private key.")); } g_io_channel_unref (file); ca_file_mark_pkey_as_extracted_for_id (type, filename, id); return NULL; } #else /* GUI async variant */ typedef struct { GIOChannel *file; gchar *privatekey; gchar *filename; guint64 id; gint type; ExportPkcs8Callback cb; gpointer cb_user_data; } _ExportPkcs8Ctx; static void _export_private_pkcs8_password_cb (gchar *password, gpointer user_data) { _ExportPkcs8Ctx *ctx = (_ExportPkcs8Ctx *) user_data; gchar *pem = NULL; GError *error = NULL; if (! password) { g_io_channel_unref (ctx->file); g_free (ctx->privatekey); ctx->cb (_("Operation cancelled."), ctx->cb_user_data); g_free (ctx->filename); g_free (ctx); return; } pem = tls_generate_pkcs8_encrypted_private_key (ctx->privatekey, password); g_free (password); g_free (ctx->privatekey); if (!pem) { g_io_channel_unref (ctx->file); ctx->cb (_("There was an error while password-protecting private key."), ctx->cb_user_data); g_free (ctx->filename); g_free (ctx); return; } g_io_channel_write_chars (ctx->file, pem, strlen(pem), NULL, &error); if (error) { g_free (pem); g_io_channel_unref (ctx->file); ctx->cb (_("There was an error while exporting private key."), ctx->cb_user_data); g_free (ctx->filename); g_free (ctx); return; } g_free (pem); g_io_channel_shutdown (ctx->file, TRUE, &error); if (error) { g_io_channel_unref (ctx->file); ctx->cb (_("There was an error while exporting private key."), ctx->cb_user_data); g_free (ctx->filename); g_free (ctx); return; } g_io_channel_unref (ctx->file); ca_file_mark_pkey_as_extracted_for_id (ctx->type, ctx->filename, ctx->id); ctx->cb (NULL, ctx->cb_user_data); g_free (ctx->filename); g_free (ctx); } typedef struct { GIOChannel *file; PkeyManageData *crypted_pkey; gchar *dn; gchar *filename; guint64 id; gint type; ExportPkcs8Callback cb; gpointer cb_user_data; } _ExportPkcs8UncryptCtx; static void _export_pkcs8_uncrypt_cb (gchar *privatekey, gpointer data) { _ExportPkcs8UncryptCtx *uctx = (_ExportPkcs8UncryptCtx *) data; _ExportPkcs8Ctx *ctx; pkey_manage_data_free (uctx->crypted_pkey); g_free (uctx->dn); if (! privatekey) { if (uctx->file) g_io_channel_unref (uctx->file); uctx->cb (_("There was an error while uncrypting private key."), uctx->cb_user_data); g_free (uctx->filename); g_free (uctx); return; } ctx = g_new0 (_ExportPkcs8Ctx, 1); ctx->file = uctx->file; ctx->privatekey = privatekey; ctx->filename = uctx->filename; ctx->id = uctx->id; ctx->type = uctx->type; ctx->cb = uctx->cb; ctx->cb_user_data = uctx->cb_user_data; g_free (uctx); dialog_get_password (_("You need to supply a passphrase for protecting the exported private key, " "so nobody else but authorized people can use it. This passphrase will be asked " "by any application that will make use of the private key."), _("Insert passphrase (8 characters or more):"), _("Insert passphrase (confirm):"), _("The introduced passphrases are distinct."), 8, _export_private_pkcs8_password_cb, ctx); } static void _export_pkcs8_got_pkey_cb (PkeyManageData *crypted_pkey, gpointer data) { _ExportPkcs8UncryptCtx *uctx = (_ExportPkcs8UncryptCtx *) data; uctx->crypted_pkey = crypted_pkey; if (!crypted_pkey || !uctx->dn) { pkey_manage_data_free (crypted_pkey); g_free (uctx->dn); if (uctx->file) g_io_channel_unref (uctx->file); uctx->cb (_("There was an error while getting private key."), uctx->cb_user_data); g_free (uctx->filename); g_free (uctx); return; } pkey_manage_uncrypt (crypted_pkey, uctx->dn, _export_pkcs8_uncrypt_cb, uctx); } void export_private_pkcs8 (guint64 id, gint type, gchar *filename, ExportPkcs8Callback cb, gpointer user_data) { GIOChannel * file = NULL; GError * error = NULL; _ExportPkcs8UncryptCtx *uctx; file = g_io_channel_new_file (filename, "w", &error); if (error) { if (file) g_io_channel_unref (file); cb (_("There was an error while exporting private key."), user_data); return; } uctx = g_new0 (_ExportPkcs8UncryptCtx, 1); uctx->file = file; uctx->filename = g_strdup (filename); uctx->id = id; uctx->type = type; uctx->cb = cb; uctx->cb_user_data = user_data; uctx->dn = ca_file_get_dn_from_id (type, id); if (type == CA_FILE_ELEMENT_TYPE_CERT) { pkey_manage_get_certificate_pkey (id, _export_pkcs8_got_pkey_cb, uctx); } else { PkeyManageData *crypted_pkey = pkey_manage_get_csr_pkey (id); _export_pkcs8_got_pkey_cb (crypted_pkey, uctx); } } #endif /* GNOMINTCLI */ #ifdef GNOMINTCLI gchar * export_private_pem (guint64 id, gint type, gchar *filename) { GIOChannel * file = NULL; PkeyManageData * crypted_pkey = NULL; gchar * dn = NULL; gchar * pem = NULL; GError * error = NULL; file = g_io_channel_new_file (filename, "w", &error); if (error) { if (file) g_io_channel_unref (file); return (_("There was an error while exporting private key.")); } if (type == CA_FILE_ELEMENT_TYPE_CERT) { crypted_pkey = pkey_manage_get_certificate_pkey (id); dn = ca_file_get_dn_from_id (CA_FILE_ELEMENT_TYPE_CERT, id); } else { crypted_pkey = pkey_manage_get_csr_pkey (id); dn = ca_file_get_dn_from_id (CA_FILE_ELEMENT_TYPE_CSR, id); } if (!crypted_pkey || !dn) { pkey_manage_data_free(crypted_pkey); g_free (dn); if (file) g_io_channel_unref (file); return (_("There was an error while getting private key.")); } pem = pkey_manage_uncrypt (crypted_pkey, dn); pkey_manage_data_free (crypted_pkey); g_free (dn); if (!pem) { if (file) g_io_channel_unref (file); return (_("There was an error while decrypting private key.")); } g_io_channel_write_chars (file, pem, strlen(pem), NULL, &error); if (error) { g_free (pem); if (file) g_io_channel_unref (file); return (_("There was an error while exporting private key.")); } g_free (pem); g_io_channel_shutdown (file, TRUE, &error); if (error) { g_io_channel_unref (file); return (_("There was an error while exporting private key.")); } g_io_channel_unref (file); return NULL; } #else /* GUI async export_private_pem */ typedef struct { GIOChannel *file; PkeyManageData *crypted_pkey; gchar *dn; ExportPrivatePemCallback cb; gpointer cb_user_data; } _ExportPrivatePemCtx; static void _export_private_pem_uncrypt_cb (gchar *pem, gpointer data) { _ExportPrivatePemCtx *ctx = (_ExportPrivatePemCtx *) data; GError *error = NULL; pkey_manage_data_free (ctx->crypted_pkey); g_free (ctx->dn); if (!pem) { if (ctx->file) g_io_channel_unref (ctx->file); ctx->cb (_("There was an error while decrypting private key."), ctx->cb_user_data); g_free (ctx); return; } g_io_channel_write_chars (ctx->file, pem, strlen(pem), NULL, &error); if (error) { g_free (pem); g_io_channel_unref (ctx->file); ctx->cb (_("There was an error while exporting private key."), ctx->cb_user_data); g_free (ctx); return; } g_free (pem); g_io_channel_shutdown (ctx->file, TRUE, &error); if (error) { g_io_channel_unref (ctx->file); ctx->cb (_("There was an error while exporting private key."), ctx->cb_user_data); g_free (ctx); return; } g_io_channel_unref (ctx->file); ctx->cb (NULL, ctx->cb_user_data); g_free (ctx); } static void _export_private_pem_got_pkey_cb (PkeyManageData *crypted_pkey, gpointer data) { _ExportPrivatePemCtx *ctx = (_ExportPrivatePemCtx *) data; ctx->crypted_pkey = crypted_pkey; if (!crypted_pkey || !ctx->dn) { pkey_manage_data_free (crypted_pkey); g_free (ctx->dn); if (ctx->file) g_io_channel_unref (ctx->file); ctx->cb (_("There was an error while getting private key."), ctx->cb_user_data); g_free (ctx); return; } pkey_manage_uncrypt (crypted_pkey, ctx->dn, _export_private_pem_uncrypt_cb, ctx); } void export_private_pem (guint64 id, gint type, gchar *filename, ExportPrivatePemCallback cb, gpointer user_data) { GIOChannel * file = NULL; GError * error = NULL; _ExportPrivatePemCtx *ctx; file = g_io_channel_new_file (filename, "w", &error); if (error) { if (file) g_io_channel_unref (file); cb (_("There was an error while exporting private key."), user_data); return; } ctx = g_new0 (_ExportPrivatePemCtx, 1); ctx->file = file; ctx->cb = cb; ctx->cb_user_data = user_data; if (type == CA_FILE_ELEMENT_TYPE_CERT) { ctx->dn = ca_file_get_dn_from_id (CA_FILE_ELEMENT_TYPE_CERT, id); pkey_manage_get_certificate_pkey (id, _export_private_pem_got_pkey_cb, ctx); } else { PkeyManageData *crypted_pkey = pkey_manage_get_csr_pkey (id); ctx->dn = ca_file_get_dn_from_id (CA_FILE_ELEMENT_TYPE_CSR, id); _export_private_pem_got_pkey_cb (crypted_pkey, ctx); } } #endif /* GNOMINTCLI */ #ifdef GNOMINTCLI gchar * export_pkcs12 (guint64 id, gint type, gchar *filename) { GIOChannel * file = NULL; gchar * password = NULL; GError * error = NULL; gchar * crt_pem = NULL; PkeyManageData * crypted_pkey = NULL; gchar * dn = NULL; gchar * privatekey = NULL; gnutls_datum_t * pkcs12_datum = NULL; if (type == CA_FILE_ELEMENT_TYPE_CERT) { crypted_pkey = pkey_manage_get_certificate_pkey (id); dn = ca_file_get_dn_from_id (CA_FILE_ELEMENT_TYPE_CERT, id); crt_pem = ca_file_get_public_pem_from_id (CA_FILE_ELEMENT_TYPE_CERT, id); } else { return (_("Unsupported operation: you cannot generate a PKCS#12 for a CSR.")); } if (! crypted_pkey || ! dn || ! crt_pem) { pkey_manage_data_free (crypted_pkey); g_free (dn); g_free (crt_pem); return (_("There was an error while getting the certificate and private key from the internal database.")); } privatekey = pkey_manage_uncrypt (crypted_pkey, dn); if (! privatekey) { pkey_manage_data_free (crypted_pkey); g_free (dn); g_free (crt_pem); return (_("There was an error while getting the certificate and private key from the internal database.")); } password = dialog_get_password (_("You need to supply a passphrase for protecting the exported certificate, " "so nobody else but authorized people can use it. This passphrase will be asked " "by any application that will import the certificate."), _("Insert passphrase (8 characters or more):"), _("Insert passphrase (confirm):"), _("The introduced passphrases are distinct."), 8); if (! password) { pkey_manage_data_free (crypted_pkey); g_free (dn); g_free (crt_pem); g_free (privatekey); return ""; } pkcs12_datum = tls_generate_pkcs12 (crt_pem, privatekey, password); g_free (password); g_free (privatekey); pkey_manage_data_free (crypted_pkey); g_free (dn); g_free (crt_pem); if (!pkcs12_datum) { return (_("There was an error while generating the PKCS#12 package.")); } file = g_io_channel_new_file (filename, "w", &error); if (error) { return (_("There was an error while exporting certificate.")); } g_io_channel_set_encoding (file, NULL, NULL); g_io_channel_write_chars (file, (gchar *) pkcs12_datum->data, pkcs12_datum->size, NULL, &error); if (error) { g_free (pkcs12_datum->data); g_free (pkcs12_datum); return (_("There was an error while exporting the certificate.")); } g_free (pkcs12_datum->data); g_free (pkcs12_datum); g_io_channel_shutdown (file, TRUE, &error); if (error) { g_io_channel_unref (file); return (_("There was an error while exporting the certificate.")); } g_io_channel_unref (file); return NULL; } #else /* GUI async variant */ typedef struct { gchar *crt_pem; gchar *privatekey; PkeyManageData *crypted_pkey; gchar *dn; gchar *filename; ExportPkcs12Callback cb; gpointer cb_user_data; } _ExportPkcs12Ctx; static void _export_pkcs12_password_cb (gchar *password, gpointer user_data) { _ExportPkcs12Ctx *ctx = (_ExportPkcs12Ctx *) user_data; gnutls_datum_t *pkcs12_datum = NULL; GIOChannel *file = NULL; GError *error = NULL; if (! password) { pkey_manage_data_free (ctx->crypted_pkey); g_free (ctx->dn); g_free (ctx->crt_pem); g_free (ctx->privatekey); ctx->cb ("", ctx->cb_user_data); g_free (ctx->filename); g_free (ctx); return; } pkcs12_datum = tls_generate_pkcs12 (ctx->crt_pem, ctx->privatekey, password); g_free (password); g_free (ctx->privatekey); pkey_manage_data_free (ctx->crypted_pkey); g_free (ctx->dn); g_free (ctx->crt_pem); ctx->privatekey = NULL; ctx->crypted_pkey = NULL; ctx->dn = NULL; ctx->crt_pem = NULL; if (!pkcs12_datum) { ctx->cb (_("There was an error while generating the PKCS#12 package."), ctx->cb_user_data); g_free (ctx->filename); g_free (ctx); return; } file = g_io_channel_new_file (ctx->filename, "w", &error); if (error) { g_free (pkcs12_datum->data); g_free (pkcs12_datum); ctx->cb (_("There was an error while exporting certificate."), ctx->cb_user_data); g_free (ctx->filename); g_free (ctx); return; } g_io_channel_set_encoding (file, NULL, NULL); g_io_channel_write_chars (file, (gchar *) pkcs12_datum->data, pkcs12_datum->size, NULL, &error); if (error) { g_free (pkcs12_datum->data); g_free (pkcs12_datum); g_io_channel_unref (file); ctx->cb (_("There was an error while exporting the certificate."), ctx->cb_user_data); g_free (ctx->filename); g_free (ctx); return; } g_free (pkcs12_datum->data); g_free (pkcs12_datum); g_io_channel_shutdown (file, TRUE, &error); if (error) { g_io_channel_unref (file); ctx->cb (_("There was an error while exporting the certificate."), ctx->cb_user_data); g_free (ctx->filename); g_free (ctx); return; } g_io_channel_unref (file); ctx->cb (NULL, ctx->cb_user_data); g_free (ctx->filename); g_free (ctx); } typedef struct { PkeyManageData *crypted_pkey; gchar *dn; gchar *crt_pem; gchar *filename; ExportPkcs12Callback cb; gpointer cb_user_data; } _ExportPkcs12UncryptCtx; static void _export_pkcs12_uncrypt_cb (gchar *privatekey, gpointer data) { _ExportPkcs12UncryptCtx *uctx = (_ExportPkcs12UncryptCtx *) data; _ExportPkcs12Ctx *ctx; if (! privatekey) { pkey_manage_data_free (uctx->crypted_pkey); g_free (uctx->dn); g_free (uctx->crt_pem); uctx->cb (_("There was an error while getting the certificate and private key from the internal database."), uctx->cb_user_data); g_free (uctx->filename); g_free (uctx); return; } ctx = g_new0 (_ExportPkcs12Ctx, 1); ctx->crt_pem = uctx->crt_pem; ctx->privatekey = privatekey; ctx->crypted_pkey = uctx->crypted_pkey; ctx->dn = uctx->dn; ctx->filename = uctx->filename; ctx->cb = uctx->cb; ctx->cb_user_data = uctx->cb_user_data; g_free (uctx); dialog_get_password (_("You need to supply a passphrase for protecting the exported certificate, " "so nobody else but authorized people can use it. This passphrase will be asked " "by any application that will import the certificate."), _("Insert passphrase (8 characters or more):"), _("Insert passphrase (confirm):"), _("The introduced passphrases are distinct."), 8, _export_pkcs12_password_cb, ctx); } static void _export_pkcs12_got_pkey_cb (PkeyManageData *crypted_pkey, gpointer data) { _ExportPkcs12UncryptCtx *uctx = (_ExportPkcs12UncryptCtx *) data; uctx->crypted_pkey = crypted_pkey; if (! crypted_pkey || ! uctx->dn || ! uctx->crt_pem) { pkey_manage_data_free (crypted_pkey); g_free (uctx->dn); g_free (uctx->crt_pem); uctx->cb (_("There was an error while getting the certificate and private key from the internal database."), uctx->cb_user_data); g_free (uctx->filename); g_free (uctx); return; } pkey_manage_uncrypt (crypted_pkey, uctx->dn, _export_pkcs12_uncrypt_cb, uctx); } void export_pkcs12 (guint64 id, gint type, gchar *filename, ExportPkcs12Callback cb, gpointer user_data) { _ExportPkcs12UncryptCtx *uctx; if (type != CA_FILE_ELEMENT_TYPE_CERT) { cb (_("Unsupported operation: you cannot generate a PKCS#12 for a CSR."), user_data); return; } uctx = g_new0 (_ExportPkcs12UncryptCtx, 1); uctx->dn = ca_file_get_dn_from_id (CA_FILE_ELEMENT_TYPE_CERT, id); uctx->crt_pem = ca_file_get_public_pem_from_id (CA_FILE_ELEMENT_TYPE_CERT, id); uctx->filename = g_strdup (filename); uctx->cb = cb; uctx->cb_user_data = user_data; pkey_manage_get_certificate_pkey (id, _export_pkcs12_got_pkey_cb, uctx); } #endif /* GNOMINTCLI */ gnomint-1.6.4/src/ca_bulk.c0000644000000000000000000000205515212761266014300 0ustar00rootroot/* Bulk certificate / CSR operations. See ca_bulk.h. */ #include #include "ca_bulk.h" #include "ca_file.h" gint ca_bulk_revoke_ids (GSList *cert_ids, gchar **error_out) { gint count = 0; if (error_out) *error_out = NULL; for (GSList *l = cert_ids; l; l = l->next) { guint64 id = GPOINTER_TO_UINT (l->data); if (id == 0) continue; if (! ca_file_check_if_is_cert_id (id)) continue; gchar *err = ca_file_revoke_crt (id); if (err) { if (error_out && ! *error_out) *error_out = err; else g_free (err); continue; } count++; } return count; } gint ca_bulk_delete_csr_ids (GSList *csr_ids, gchar **error_out) { gint count = 0; if (error_out) *error_out = NULL; for (GSList *l = csr_ids; l; l = l->next) { guint64 id = GPOINTER_TO_UINT (l->data); if (id == 0) continue; if (! ca_file_check_if_is_csr_id (id)) continue; gchar *err = ca_file_remove_csr (id); if (err) { if (error_out && ! *error_out) *error_out = err; else g_free (err); continue; } count++; } return count; } gnomint-1.6.4/src/csr_creation.c0000644000000000000000000001500215212761266015347 0ustar00rootroot// gnoMint: a graphical interface for managing a certification authority // Copyright (C) 2006-2009 David Marín Carreño // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #include #include "csr_creation.h" #include "ca_file.h" #include "tls.h" #include "pkey_manage.h" #include #include #include gint csr_creation_is_launched = -1; static GMutex csr_creation_thread_status_mutex; gint csr_creation_thread_status = 0; gchar * csr_creation_message = ""; gchar * csr_creation_database_save (TlsCreationData * creation_data, gchar * private_key, gchar * root_certificate); gpointer csr_creation_thread (gpointer data) { TlsCreationData *creation_data = (TlsCreationData *) data; gchar * private_key = NULL; gchar * pkey = NULL; gnutls_x509_privkey_t * csr_key = NULL; gchar * certificate_sign_request = NULL; gchar * error_message = NULL; TlsCsr *tlscsr; switch (creation_data->key_type){ case 0: /* RSA */ g_mutex_lock (&csr_creation_thread_status_mutex); csr_creation_message = _("Generating new RSA key pair"); g_mutex_unlock (&csr_creation_thread_status_mutex); error_message = tls_generate_rsa_keys (creation_data, &private_key, &csr_key); if (error_message) { printf ("%s\n\n", error_message); g_mutex_lock (&csr_creation_thread_status_mutex); csr_creation_message = g_strdup_printf ("%s:\n%s",_("Key generation failed"), error_message); csr_creation_thread_status = -1; g_mutex_unlock (&csr_creation_thread_status_mutex); return NULL; // return error_message; } break; case 1: /* DSA */ g_mutex_lock (&csr_creation_thread_status_mutex); csr_creation_message = _("Generating new DSA key pair"); g_mutex_unlock (&csr_creation_thread_status_mutex); error_message = tls_generate_dsa_keys (creation_data, &private_key, &csr_key); if (error_message) { printf ("%s\n\n", error_message); g_mutex_lock (&csr_creation_thread_status_mutex); csr_creation_message = g_strdup_printf ("%s:\n%s",_("Key generation failed"), error_message); csr_creation_thread_status = -1; g_mutex_unlock (&csr_creation_thread_status_mutex); return NULL; } break; case 2: /* ECDSA */ g_mutex_lock (&csr_creation_thread_status_mutex); csr_creation_message = _("Generating new ECDSA key pair"); g_mutex_unlock (&csr_creation_thread_status_mutex); error_message = tls_generate_ecdsa_keys (creation_data, &private_key, &csr_key); if (error_message) { printf ("%s\n\n", error_message); g_mutex_lock (&csr_creation_thread_status_mutex); csr_creation_message = g_strdup_printf ("%s:\n%s",_("Key generation failed"), error_message); csr_creation_thread_status = -1; g_mutex_unlock (&csr_creation_thread_status_mutex); return NULL; } break; case 3: /* EdDSA */ g_mutex_lock (&csr_creation_thread_status_mutex); csr_creation_message = _("Generating new Ed25519 key pair"); g_mutex_unlock (&csr_creation_thread_status_mutex); error_message = tls_generate_eddsa_keys (creation_data, &private_key, &csr_key); if (error_message) { printf ("%s\n\n", error_message); g_mutex_lock (&csr_creation_thread_status_mutex); csr_creation_message = g_strdup_printf ("%s:\n%s",_("Key generation failed"), error_message); csr_creation_thread_status = -1; g_mutex_unlock (&csr_creation_thread_status_mutex); return NULL; } break; } g_mutex_lock (&csr_creation_thread_status_mutex); csr_creation_message = _("Generating CSR"); g_mutex_unlock (&csr_creation_thread_status_mutex); error_message = tls_generate_csr (creation_data, csr_key, &certificate_sign_request); if (error_message) { printf ("%s\n\n", error_message); g_mutex_lock (&csr_creation_thread_status_mutex); csr_creation_message = g_strdup_printf ("%s:\n%s",_("CSR generation failed"), error_message); csr_creation_thread_status = -1; g_mutex_unlock (&csr_creation_thread_status_mutex); g_free (error_message); //return error_message; return NULL; } g_mutex_lock (&csr_creation_thread_status_mutex); csr_creation_message = _("Saving CSR in database"); g_mutex_unlock (&csr_creation_thread_status_mutex); tlscsr = tls_parse_csr_pem (certificate_sign_request); pkey = pkey_manage_crypt_w_pwd (private_key, tlscsr->dn, creation_data->password); tls_csr_free (tlscsr); if (! pkey) return NULL; g_free (private_key); error_message = csr_creation_database_save (creation_data, pkey, certificate_sign_request); if (error_message) { g_mutex_lock (&csr_creation_thread_status_mutex); csr_creation_message = g_strdup_printf ("%s:\n%s",_("CSR couldn't be saved"), error_message); csr_creation_thread_status = -1; g_mutex_unlock (&csr_creation_thread_status_mutex); g_free (error_message); return NULL; } g_mutex_lock (&csr_creation_thread_status_mutex); csr_creation_message = _("CSR generated successfully"); csr_creation_thread_status = 1; g_mutex_unlock (&csr_creation_thread_status_mutex); if (csr_key) { gnutls_x509_privkey_deinit ((* csr_key)); g_free (csr_key); } return NULL; } GThread * csr_creation_launch_thread (TlsCreationData *creation_data) { return g_thread_new("csr_creation", csr_creation_thread, creation_data); } void csr_creation_lock_status_mutex () { g_mutex_lock(&csr_creation_thread_status_mutex); } void csr_creation_unlock_status_mutex () { g_mutex_unlock (&csr_creation_thread_status_mutex); } gint csr_creation_get_thread_status () { return csr_creation_thread_status; } gchar * csr_creation_get_thread_message() { return csr_creation_message; } gchar * csr_creation_database_save (TlsCreationData * creation_data, gchar * private_key, gchar * certificate_sign_request) { return ca_file_insert_csr (private_key, certificate_sign_request, creation_data->parent_ca_id_str, NULL); } gnomint-1.6.4/src/cert_row.c0000644000000000000000000001124215212761266014522 0ustar00rootroot#include #include "cert_row.h" struct _GnomintCertRow { GObject parent_instance; guint64 id; gboolean is_ca; gchar *serial; gchar *subject; gchar *activation; gchar *expiration; gboolean revocation; gboolean pkey_in_db; gchar *pem; gchar *dn; gchar *parent_dn; gchar *parent_route; gint item_type; guint64 parent_id; gchar *foreground; time_t effective_expiration; GListStore *children; }; G_DEFINE_TYPE (GnomintCertRow, gnomint_cert_row, G_TYPE_OBJECT) static void gnomint_cert_row_finalize (GObject *object) { GnomintCertRow *self = GNOMINT_CERT_ROW (object); g_free (self->serial); g_free (self->subject); g_free (self->activation); g_free (self->expiration); g_free (self->pem); g_free (self->dn); g_free (self->parent_dn); g_free (self->parent_route); g_free (self->foreground); g_clear_object (&self->children); G_OBJECT_CLASS (gnomint_cert_row_parent_class)->finalize (object); } static void gnomint_cert_row_class_init (GnomintCertRowClass *klass) { G_OBJECT_CLASS (klass)->finalize = gnomint_cert_row_finalize; } static void gnomint_cert_row_init (GnomintCertRow *self) { self->children = g_list_store_new (GNOMINT_TYPE_CERT_ROW); } GnomintCertRow *gnomint_cert_row_new (void) { return g_object_new (GNOMINT_TYPE_CERT_ROW, NULL); } void gnomint_cert_row_set_id (GnomintCertRow *s, guint64 v) { s->id = v; } guint64 gnomint_cert_row_get_id (GnomintCertRow *s) { return s->id; } void gnomint_cert_row_set_is_ca (GnomintCertRow *s, gboolean v) { s->is_ca = v; } gboolean gnomint_cert_row_get_is_ca (GnomintCertRow *s) { return s->is_ca; } void gnomint_cert_row_set_serial (GnomintCertRow *s, const gchar *v) { g_free (s->serial); s->serial = g_strdup (v); } const gchar *gnomint_cert_row_get_serial (GnomintCertRow *s) { return s->serial; } void gnomint_cert_row_set_subject (GnomintCertRow *s, const gchar *v) { g_free (s->subject); s->subject = g_strdup (v); } const gchar *gnomint_cert_row_get_subject (GnomintCertRow *s) { return s->subject; } void gnomint_cert_row_set_activation (GnomintCertRow *s, const gchar *v) { g_free (s->activation); s->activation = g_strdup (v); } const gchar *gnomint_cert_row_get_activation (GnomintCertRow *s) { return s->activation; } void gnomint_cert_row_set_expiration (GnomintCertRow *s, const gchar *v) { g_free (s->expiration); s->expiration = g_strdup (v); } const gchar *gnomint_cert_row_get_expiration (GnomintCertRow *s) { return s->expiration; } void gnomint_cert_row_set_revocation (GnomintCertRow *s, gboolean v) { s->revocation = v; } gboolean gnomint_cert_row_get_revocation (GnomintCertRow *s) { return s->revocation; } void gnomint_cert_row_set_pkey_in_db (GnomintCertRow *s, gboolean v) { s->pkey_in_db = v; } gboolean gnomint_cert_row_get_pkey_in_db (GnomintCertRow *s) { return s->pkey_in_db; } void gnomint_cert_row_set_pem (GnomintCertRow *s, const gchar *v) { g_free (s->pem); s->pem = g_strdup (v); } const gchar *gnomint_cert_row_get_pem (GnomintCertRow *s) { return s->pem; } void gnomint_cert_row_set_dn (GnomintCertRow *s, const gchar *v) { g_free (s->dn); s->dn = g_strdup (v); } const gchar *gnomint_cert_row_get_dn (GnomintCertRow *s) { return s->dn; } void gnomint_cert_row_set_parent_dn (GnomintCertRow *s, const gchar *v) { g_free (s->parent_dn); s->parent_dn = g_strdup (v); } const gchar *gnomint_cert_row_get_parent_dn (GnomintCertRow *s) { return s->parent_dn; } void gnomint_cert_row_set_parent_route (GnomintCertRow *s, const gchar *v) { g_free (s->parent_route); s->parent_route = g_strdup (v); } const gchar *gnomint_cert_row_get_parent_route (GnomintCertRow *s) { return s->parent_route; } void gnomint_cert_row_set_item_type (GnomintCertRow *s, gint v) { s->item_type = v; } gint gnomint_cert_row_get_item_type (GnomintCertRow *s) { return s->item_type; } void gnomint_cert_row_set_parent_id (GnomintCertRow *s, guint64 v) { s->parent_id = v; } guint64 gnomint_cert_row_get_parent_id (GnomintCertRow *s) { return s->parent_id; } void gnomint_cert_row_set_foreground (GnomintCertRow *s, const gchar *v) { g_free (s->foreground); s->foreground = g_strdup (v); } const gchar *gnomint_cert_row_get_foreground (GnomintCertRow *s) { return s->foreground; } void gnomint_cert_row_set_effective_expiration (GnomintCertRow *s, time_t v) { s->effective_expiration = v; } time_t gnomint_cert_row_get_effective_expiration (GnomintCertRow *s) { return s->effective_expiration; } GListStore *gnomint_cert_row_get_children (GnomintCertRow *s) { return s->children; } gnomint-1.6.4/src/ca_policy.c0000644000000000000000000007267015212761266014654 0ustar00rootroot// gnoMint: a graphical interface for managing a certification authority // Copyright (C) 2006-2009 David Marín Carreño // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #ifndef GNOMINTCLI #include #include #include #else #include #endif #include #include #include #include #include "ca_policy.h" #ifndef GNOMINTCLI extern GtkBuilder * certificate_properties_window_gtkb; gint __ca_policy_populate_step (void *pArg, int argc, char **argv, char **columnNames); gint __ca_policy_populate_step (void *pArg, int argc, char **argv, char **columnNames) { GHashTable * policy_table = (GHashTable *) pArg; g_hash_table_insert (policy_table, g_strdup (argv[1]), g_strdup(argv[2])); return 0; } void ca_policy_populate (guint64 ca_id) { GObject * widget; gint value; gchar * strvalue; GHashTable *policy_table = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); ca_file_foreach_policy (__ca_policy_populate_step, ca_id, policy_table); strvalue = (gchar *) g_hash_table_lookup (policy_table, "C_INHERIT"); value = strvalue ? atoi(strvalue) : 0; widget = gtk_builder_get_object (certificate_properties_window_gtkb, "country_inherited_check"); gtk_check_button_set_active (GTK_CHECK_BUTTON(widget), value); gtk_widget_set_sensitive (GTK_WIDGET(gtk_builder_get_object (certificate_properties_window_gtkb, "country_same_radiobutton")), value); gtk_widget_set_sensitive (GTK_WIDGET(gtk_builder_get_object (certificate_properties_window_gtkb, "country_differ_radiobutton")), value); strvalue = (gchar *) g_hash_table_lookup (policy_table, "ST_INHERIT"); value = strvalue ? atoi(strvalue) : 0; widget = gtk_builder_get_object (certificate_properties_window_gtkb, "state_inherited_check"); gtk_check_button_set_active (GTK_CHECK_BUTTON(widget), value); gtk_widget_set_sensitive (GTK_WIDGET(gtk_builder_get_object (certificate_properties_window_gtkb, "state_same_radiobutton")), value); gtk_widget_set_sensitive (GTK_WIDGET(gtk_builder_get_object (certificate_properties_window_gtkb, "state_differ_radiobutton")), value); strvalue = (gchar *) g_hash_table_lookup (policy_table, "L_INHERIT"); value = strvalue ? atoi(strvalue) : 0; widget = gtk_builder_get_object (certificate_properties_window_gtkb, "city_inherited_check"); gtk_check_button_set_active (GTK_CHECK_BUTTON(widget), value); gtk_widget_set_sensitive (GTK_WIDGET(gtk_builder_get_object (certificate_properties_window_gtkb, "city_same_radiobutton")), value); gtk_widget_set_sensitive (GTK_WIDGET(gtk_builder_get_object (certificate_properties_window_gtkb, "city_differ_radiobutton")), value); strvalue = (gchar *) g_hash_table_lookup (policy_table, "O_INHERIT"); value = strvalue ? atoi(strvalue) : 0; widget = gtk_builder_get_object (certificate_properties_window_gtkb, "organization_inherited_check"); gtk_check_button_set_active (GTK_CHECK_BUTTON(widget), value); gtk_widget_set_sensitive (GTK_WIDGET(gtk_builder_get_object (certificate_properties_window_gtkb, "organization_same_radiobutton")), value); gtk_widget_set_sensitive (GTK_WIDGET(gtk_builder_get_object (certificate_properties_window_gtkb, "organization_differ_radiobutton")), value); strvalue = (gchar *) g_hash_table_lookup (policy_table, "OU_INHERIT"); value = strvalue ? atoi(strvalue) : 0; widget = gtk_builder_get_object (certificate_properties_window_gtkb, "ou_inherited_check"); gtk_check_button_set_active (GTK_CHECK_BUTTON(widget), value); gtk_widget_set_sensitive (GTK_WIDGET(gtk_builder_get_object (certificate_properties_window_gtkb, "ou_same_radiobutton")), value); gtk_widget_set_sensitive (GTK_WIDGET(gtk_builder_get_object (certificate_properties_window_gtkb, "ou_differ_radiobutton")), value); strvalue = (gchar *) g_hash_table_lookup (policy_table, "C_FORCE_SAME"); value = strvalue ? atoi(strvalue) : 0; widget = gtk_builder_get_object (certificate_properties_window_gtkb, "country_same_radiobutton"); gtk_check_button_set_active (GTK_CHECK_BUTTON(widget), value); strvalue = (gchar *) g_hash_table_lookup (policy_table, "ST_FORCE_SAME"); value = strvalue ? atoi(strvalue) : 0; widget = gtk_builder_get_object (certificate_properties_window_gtkb, "state_same_radiobutton"); gtk_check_button_set_active (GTK_CHECK_BUTTON(widget), value); strvalue = (gchar *) g_hash_table_lookup (policy_table, "L_FORCE_SAME"); value = strvalue ? atoi(strvalue) : 0; widget = gtk_builder_get_object (certificate_properties_window_gtkb, "city_same_radiobutton"); gtk_check_button_set_active (GTK_CHECK_BUTTON(widget), value); strvalue = (gchar *) g_hash_table_lookup (policy_table, "O_FORCE_SAME"); value = strvalue ? atoi(strvalue) : 0; widget = gtk_builder_get_object (certificate_properties_window_gtkb, "organization_same_radiobutton"); gtk_check_button_set_active (GTK_CHECK_BUTTON(widget), value); strvalue = (gchar *) g_hash_table_lookup (policy_table, "OU_FORCE_SAME"); value = strvalue ? atoi(strvalue) : 0; widget = gtk_builder_get_object (certificate_properties_window_gtkb, "ou_same_radiobutton"); gtk_check_button_set_active (GTK_CHECK_BUTTON(widget), value); strvalue = (gchar *) g_hash_table_lookup (policy_table, "HOURS_BETWEEN_CRL_UPDATES"); value = strvalue ? atoi(strvalue) : 0; widget = gtk_builder_get_object (certificate_properties_window_gtkb, "hours_between_crl_updates_spinbutton"); gtk_spin_button_set_value (GTK_SPIN_BUTTON(widget), value); strvalue = ((gchar *) g_hash_table_lookup (policy_table, "CRL_DISTRIBUTION_POINT")); widget = gtk_builder_get_object (certificate_properties_window_gtkb, "crl_distribution_point_entry"); if (strvalue) gtk_editable_set_text(GTK_EDITABLE(widget), strvalue); strvalue = (gchar *) g_hash_table_lookup (policy_table, "MONTHS_TO_EXPIRE"); value = strvalue ? atoi(strvalue) : 0; widget = gtk_builder_get_object (certificate_properties_window_gtkb, "months_before_expiration_spinbutton2"); gtk_spin_button_set_value (GTK_SPIN_BUTTON(widget), value); strvalue = (gchar *) g_hash_table_lookup (policy_table, "CA"); value = strvalue ? atoi(strvalue) : 0; widget = gtk_builder_get_object (certificate_properties_window_gtkb, "ca_check2"); gtk_check_button_set_active (GTK_CHECK_BUTTON(widget), value); strvalue = (gchar *) g_hash_table_lookup (policy_table, "CRL_SIGN"); value = strvalue ? atoi(strvalue) : 0; widget = gtk_builder_get_object (certificate_properties_window_gtkb, "crl_signing_check1"); gtk_check_button_set_active (GTK_CHECK_BUTTON(widget), value); strvalue = (gchar *) g_hash_table_lookup (policy_table, "NON_REPUDIATION"); value = strvalue ? atoi(strvalue) : 0; widget = gtk_builder_get_object (certificate_properties_window_gtkb, "non_repudiation_check2"); gtk_check_button_set_active (GTK_CHECK_BUTTON(widget), value); strvalue = (gchar *) g_hash_table_lookup (policy_table, "DIGITAL_SIGNATURE"); value = strvalue ? atoi(strvalue) : 0; widget = gtk_builder_get_object (certificate_properties_window_gtkb, "digital_signature_check4"); gtk_check_button_set_active (GTK_CHECK_BUTTON(widget), value); strvalue = (gchar *) g_hash_table_lookup (policy_table, "KEY_ENCIPHERMENT"); value = strvalue ? atoi(strvalue) : 0; widget = gtk_builder_get_object (certificate_properties_window_gtkb, "key_encipherment_check2"); gtk_check_button_set_active (GTK_CHECK_BUTTON(widget), value); strvalue = (gchar *) g_hash_table_lookup (policy_table, "KEY_AGREEMENT"); value = strvalue ? atoi(strvalue) : 0; widget = gtk_builder_get_object (certificate_properties_window_gtkb, "key_agreement_check2"); gtk_check_button_set_active (GTK_CHECK_BUTTON(widget), value); strvalue = (gchar *) g_hash_table_lookup (policy_table, "DATA_ENCIPHERMENT"); value = strvalue ? atoi(strvalue) : 0; widget = gtk_builder_get_object (certificate_properties_window_gtkb, "data_encipherment_check2"); gtk_check_button_set_active (GTK_CHECK_BUTTON(widget), value); strvalue = (gchar *) g_hash_table_lookup (policy_table, "TLS_WEB_SERVER"); value = strvalue ? atoi(strvalue) : 0; widget = gtk_builder_get_object (certificate_properties_window_gtkb, "webserver_check2"); gtk_check_button_set_active (GTK_CHECK_BUTTON(widget), value); strvalue = (gchar *) g_hash_table_lookup (policy_table, "TLS_WEB_CLIENT"); value = strvalue ? atoi(strvalue) : 0; widget = gtk_builder_get_object (certificate_properties_window_gtkb, "webclient_check2"); gtk_check_button_set_active (GTK_CHECK_BUTTON(widget), value); strvalue = (gchar *) g_hash_table_lookup (policy_table, "TIME_STAMPING"); value = strvalue ? atoi(strvalue) : 0; widget = gtk_builder_get_object (certificate_properties_window_gtkb, "time_stamping_check2"); gtk_check_button_set_active (GTK_CHECK_BUTTON(widget), value); strvalue = (gchar *) g_hash_table_lookup (policy_table, "CODE_SIGNING"); value = strvalue ? atoi(strvalue) : 0; widget = gtk_builder_get_object (certificate_properties_window_gtkb, "code_signing_check2"); gtk_check_button_set_active (GTK_CHECK_BUTTON(widget), value); strvalue = (gchar *) g_hash_table_lookup (policy_table, "EMAIL_PROTECTION"); value = strvalue ? atoi(strvalue) : 0; widget = gtk_builder_get_object (certificate_properties_window_gtkb, "email_protection_check2"); gtk_check_button_set_active (GTK_CHECK_BUTTON(widget), value); strvalue = (gchar *) g_hash_table_lookup (policy_table, "OCSP_SIGNING"); value = strvalue ? atoi(strvalue) : 0; widget = gtk_builder_get_object (certificate_properties_window_gtkb, "ocsp_signing_check2"); gtk_check_button_set_active (GTK_CHECK_BUTTON(widget), value); strvalue = (gchar *) g_hash_table_lookup (policy_table, "ANY_PURPOSE"); value = strvalue ? atoi(strvalue) : 0; widget = gtk_builder_get_object (certificate_properties_window_gtkb, "any_purpose_check2"); gtk_check_button_set_active (GTK_CHECK_BUTTON(widget), value); g_hash_table_destroy (policy_table); } #endif #ifndef GNOMINTCLI G_MODULE_EXPORT void ca_policy_expiration_spin_button_change (gpointer spin_button, gpointer userdata) { GObject * widget = gtk_builder_get_object (certificate_properties_window_gtkb, "certificate_properties_dialog"); gchar * cert_id_str = (gchar *) g_object_get_data (G_OBJECT(widget), "cert_id"); guint64 cert_id; if (! cert_id_str) return; if (! spin_button) return; cert_id = atoll(cert_id_str); ca_file_policy_set_int (cert_id, "MONTHS_TO_EXPIRE", gtk_spin_button_get_value(spin_button)); } G_MODULE_EXPORT void ca_policy_crl_update_spin_button_change (gpointer spin_button, gpointer userdata) { GObject * widget = gtk_builder_get_object (certificate_properties_window_gtkb, "certificate_properties_dialog"); gchar * cert_id_str = (gchar *) g_object_get_data (G_OBJECT(widget), "cert_id"); guint64 cert_id; if (! cert_id_str) return; if (! spin_button) return; cert_id = atoll(cert_id_str); ca_file_policy_set_int (cert_id, "HOURS_BETWEEN_CRL_UPDATES", gtk_spin_button_get_value(spin_button)); } G_MODULE_EXPORT void ca_policy_crl_distribution_point_change(gpointer gtkentry, gpointer userdata) { GObject * widget = gtk_builder_get_object (certificate_properties_window_gtkb, "certificate_properties_dialog"); gchar * cert_id_str = (gchar *) g_object_get_data (G_OBJECT(widget), "cert_id"); guint64 cert_id; if (! cert_id_str) return; if (! gtkentry) return; cert_id = atoll(cert_id_str); ca_file_policy_set (cert_id, "CRL_DISTRIBUTION_POINT", gtk_editable_get_text(GTK_EDITABLE(gtkentry))); } G_MODULE_EXPORT void ca_policy_toggle_button_toggled (gpointer button, gpointer userdata) { GObject * widget = gtk_builder_get_object (certificate_properties_window_gtkb, "certificate_properties_dialog"); gchar * cert_id_str = (gchar *) g_object_get_data (G_OBJECT(widget), "cert_id"); guint64 cert_id; gchar *property_name = NULL; gboolean is_active; if (! cert_id_str) return; if (! button) return; const gchar * widget_name = gtk_buildable_get_buildable_id(GTK_BUILDABLE(button)); cert_id = atoll(cert_id_str); is_active = gtk_check_button_get_active(button); if (! strcmp(widget_name, "country_inherited_check")) { property_name = "C_INHERIT"; gtk_widget_set_sensitive (GTK_WIDGET(gtk_builder_get_object (certificate_properties_window_gtkb, "country_same_radiobutton")), is_active); gtk_widget_set_sensitive (GTK_WIDGET(gtk_builder_get_object (certificate_properties_window_gtkb, "country_differ_radiobutton")), is_active); } if (! strcmp(widget_name, "state_inherited_check")) { property_name = "ST_INHERIT"; gtk_widget_set_sensitive (GTK_WIDGET(gtk_builder_get_object (certificate_properties_window_gtkb, "state_same_radiobutton")), is_active); gtk_widget_set_sensitive (GTK_WIDGET(gtk_builder_get_object (certificate_properties_window_gtkb, "state_differ_radiobutton")), is_active); } if (! strcmp(widget_name, "city_inherited_check")) { property_name = "L_INHERIT"; gtk_widget_set_sensitive (GTK_WIDGET(gtk_builder_get_object (certificate_properties_window_gtkb, "city_same_radiobutton")), is_active); gtk_widget_set_sensitive (GTK_WIDGET(gtk_builder_get_object (certificate_properties_window_gtkb, "city_differ_radiobutton")), is_active); } if (! strcmp(widget_name, "organization_inherited_check")) { property_name = "O_INHERIT"; gtk_widget_set_sensitive (GTK_WIDGET(gtk_builder_get_object (certificate_properties_window_gtkb, "organization_same_radiobutton")), is_active); gtk_widget_set_sensitive (GTK_WIDGET(gtk_builder_get_object (certificate_properties_window_gtkb, "organization_differ_radiobutton")), is_active); } if (! strcmp(widget_name, "ou_inherited_check")) { property_name = "OU_INHERIT"; gtk_widget_set_sensitive (GTK_WIDGET(gtk_builder_get_object (certificate_properties_window_gtkb, "ou_same_radiobutton")), is_active); gtk_widget_set_sensitive (GTK_WIDGET(gtk_builder_get_object (certificate_properties_window_gtkb, "ou_differ_radiobutton")), is_active); } if (! strcmp(widget_name, "country_same_radiobutton")) property_name = "C_FORCE_SAME"; if (! strcmp(widget_name, "state_same_radiobutton")) property_name = "ST_FORCE_SAME"; if (! strcmp(widget_name, "city_same_radiobutton")) property_name = "L_FORCE_SAME"; if (! strcmp(widget_name, "organization_same_radiobutton")) property_name = "O_FORCE_SAME"; if (! strcmp(widget_name, "ou_same_radiobutton")) property_name = "OU_FORCE_SAME"; if (! strcmp(widget_name, "ca_check2")) property_name = "CA"; if (! strcmp(widget_name, "crl_signing_check1")) property_name = "CRL_SIGN"; if (! strcmp(widget_name, "non_repudiation_check2")) { if (! is_active) { // TIME_STAMPING cannot be inactive gtk_check_button_set_active (GTK_CHECK_BUTTON(gtk_builder_get_object (certificate_properties_window_gtkb, "time_stamping_check2")), FALSE); // We must check if EMAIL_PROTECTION can be active if (! ca_file_policy_get (cert_id, "DIGITAL_SIGNATURE") && ! ca_file_policy_get (cert_id, "KEY_ENCIPHERMENT") && ! ca_file_policy_get (cert_id, "KEY_AGREEMENT")) { // If none is active, we must deactivate EMAIL_PROTECTION gtk_check_button_set_active (GTK_CHECK_BUTTON(gtk_builder_get_object (certificate_properties_window_gtkb, "email_protection_check2")), FALSE); } // We must check if OCSP_SIGNING can be active if (! ca_file_policy_get (cert_id, "DIGITAL_SIGNATURE")) { // If is not active, we must deactivate OCSP_SIGNING gtk_check_button_set_active (GTK_CHECK_BUTTON(gtk_builder_get_object (certificate_properties_window_gtkb, "ocsp_signing_check2")), FALSE); } } property_name = "NON_REPUDIATION"; } if (! strcmp(widget_name, "digital_signature_check4")) { if (! is_active) { // We must check if TLS_WEB_SERVER can be active if (! ca_file_policy_get (cert_id, "KEY_ENCIPHERMENT") && ! ca_file_policy_get (cert_id, "KEY_AGREEMENT")) { // If none is active, we must deactivate TLS_WEB_SERVER gtk_check_button_set_active (GTK_CHECK_BUTTON(gtk_builder_get_object (certificate_properties_window_gtkb, "webserver_check2")), FALSE); } // We must check if TLS_WEB_CLIENT can be active if (! ca_file_policy_get (cert_id, "KEY_AGREEMENT")) { // If none is active, we must deactivate TLS_WEB_CLIENT gtk_check_button_set_active (GTK_CHECK_BUTTON(gtk_builder_get_object (certificate_properties_window_gtkb, "webclient_check2")), FALSE); } // TIME_STAMPING and CODE_SIGNING cannot be active if digital signature is deactivated gtk_check_button_set_active (GTK_CHECK_BUTTON(gtk_builder_get_object(certificate_properties_window_gtkb, "time_stamping_check2")), FALSE); gtk_check_button_set_active (GTK_CHECK_BUTTON(gtk_builder_get_object(certificate_properties_window_gtkb, "code_signing_check2")), FALSE); // We must check if EMAIL_PROTECTION can be active if (! ca_file_policy_get (cert_id, "NON_REPUDIATION") && ! ca_file_policy_get (cert_id, "KEY_ENCIPHERMENT") && ! ca_file_policy_get (cert_id, "KEY_AGREEMENT")) { // If none is active, we must deactivate EMAIL_PROTECTION gtk_check_button_set_active (GTK_CHECK_BUTTON(gtk_builder_get_object (certificate_properties_window_gtkb, "email_protection_check2")), FALSE); } // We must check if OCSP_SIGNING can be active if (! ca_file_policy_get (cert_id, "NON_REPUDIATION")) { // If none is active, we must deactivate OCSP_SIGNING gtk_check_button_set_active (GTK_CHECK_BUTTON(gtk_builder_get_object (certificate_properties_window_gtkb, "ocsp_signing_check2")), FALSE); } } property_name = "DIGITAL_SIGNATURE"; } if (! strcmp(widget_name, "key_encipherment_check2")) { if (! is_active) { // We must check if TLS_WEB_SERVER can be active if (! ca_file_policy_get (cert_id, "DIGITAL_SIGNATURE") && ! ca_file_policy_get (cert_id, "KEY_AGREEMENT")) { // If none is active, we must deactivate TLS_WEB_SERVER gtk_check_button_set_active (GTK_CHECK_BUTTON(gtk_builder_get_object (certificate_properties_window_gtkb, "webserver_check2")), FALSE); } // We must check if EMAIL_PROTECTION can be active if (! ca_file_policy_get (cert_id, "DIGITAL_SIGNATURE") && ! ca_file_policy_get (cert_id, "NON_REPUDIATION") && ! ca_file_policy_get (cert_id, "KEY_AGREEMENT")) { // If none is active, we must deactivate EMAIL_PROTECTION gtk_check_button_set_active (GTK_CHECK_BUTTON(gtk_builder_get_object (certificate_properties_window_gtkb, "email_protection_check2")), FALSE); } } property_name = "KEY_ENCIPHERMENT"; } if (! strcmp(widget_name, "key_agreement_check2")) { if (! is_active) { // We must check if TLS_WEB_SERVER can be active if (! ca_file_policy_get (cert_id, "DIGITAL_SIGNATURE") && ! ca_file_policy_get (cert_id, "KEY_ENCIPHERMENT")) { // If none is active, we must deactivate TLS_WEB_SERVER gtk_check_button_set_active (GTK_CHECK_BUTTON(gtk_builder_get_object (certificate_properties_window_gtkb, "webserver_check2")), FALSE); } // We must check if TLS_WEB_CLIENT can be active if (! ca_file_policy_get (cert_id, "DIGITAL_SIGNATURE")) { // If none is active, we must deactivate TLS_WEB_CLIENT gtk_check_button_set_active (GTK_CHECK_BUTTON(gtk_builder_get_object (certificate_properties_window_gtkb, "webclient_check2")), FALSE); } // We must check if EMAIL_PROTECTION can be active if (! ca_file_policy_get (cert_id, "DIGITAL_SIGNATURE") && ! ca_file_policy_get (cert_id, "NON_REPUDIATION") && ! ca_file_policy_get (cert_id, "KEY_ENCIPHERMENT")) { // If none is active, we must deactivate EMAIL_PROTECTION gtk_check_button_set_active (GTK_CHECK_BUTTON(gtk_builder_get_object (certificate_properties_window_gtkb, "email_protection_check2")), FALSE); } } property_name = "KEY_AGREEMENT"; } if (! strcmp(widget_name, "data_encipherment_check2")) property_name = "DATA_ENCIPHERMENT"; // Purposes if (! strcmp(widget_name, "webserver_check2")) { if (is_active) { // We must check digitalSignature || keyEncipherment || keyAgreement if (!( ca_file_policy_get (cert_id, "DIGITAL_SIGNATURE") || ca_file_policy_get (cert_id, "KEY_ENCIPHERMENT") || ca_file_policy_get (cert_id, "KEY_AGREEMENT"))) { // If none is active, we activate key encipherment gtk_check_button_set_active (GTK_CHECK_BUTTON(gtk_builder_get_object (certificate_properties_window_gtkb, "key_encipherment_check2")), TRUE); } } property_name = "TLS_WEB_SERVER"; } if (! strcmp(widget_name, "webclient_check2")) { if (is_active) { // We must check digitalSignature || keyEncipherment || keyAgreement if (!( ca_file_policy_get (cert_id, "DIGITAL_SIGNATURE") || ca_file_policy_get (cert_id, "KEY_AGREEMENT"))) { // If none is active, we activate digital signature gtk_check_button_set_active (GTK_CHECK_BUTTON(gtk_builder_get_object (certificate_properties_window_gtkb, "digital_signature_check4")), TRUE); } } property_name = "TLS_WEB_CLIENT"; } if (! strcmp(widget_name, "time_stamping_check2")){ if (is_active) { // We must check digitalSignature && nonRepudiation if (!( ca_file_policy_get (cert_id, "DIGITAL_SIGNATURE") && ca_file_policy_get (cert_id, "NON_REPUDIATION"))) { // If none is active, we activate them both gtk_check_button_set_active (GTK_CHECK_BUTTON(gtk_builder_get_object (certificate_properties_window_gtkb, "digital_signature_check4")), TRUE); gtk_check_button_set_active (GTK_CHECK_BUTTON(gtk_builder_get_object (certificate_properties_window_gtkb, "non_repudiation_check2")), TRUE); } } property_name = "TIME_STAMPING"; } if (! strcmp(widget_name, "code_signing_check2")) { if (is_active) { // We must check digitalSignature if (!( ca_file_policy_get (cert_id, "DIGITAL_SIGNATURE"))) { // If it is not active, we activate it gtk_check_button_set_active (GTK_CHECK_BUTTON(gtk_builder_get_object (certificate_properties_window_gtkb, "digital_signature_check4")), TRUE); } } property_name = "CODE_SIGNING"; } if (! strcmp(widget_name, "email_protection_check2")) { if (is_active) { // We must check digitalSignature || nonRepudiation || (keyEncipherment || keyAgreement) if (!( ca_file_policy_get (cert_id, "DIGITAL_SIGNATURE") || ca_file_policy_get (cert_id, "NON_REPUDIATION") || ca_file_policy_get (cert_id, "KEY_ENCIPHERMENT") || ca_file_policy_get (cert_id, "KEY_AGREEMENT"))) { // If none is active, we activate key encipherment gtk_check_button_set_active (GTK_CHECK_BUTTON(gtk_builder_get_object (certificate_properties_window_gtkb, "digital_signature_check4")), TRUE); gtk_check_button_set_active (GTK_CHECK_BUTTON(gtk_builder_get_object (certificate_properties_window_gtkb, "key_encipherment_check2")), TRUE); } } property_name = "EMAIL_PROTECTION"; } if (! strcmp(widget_name, "ocsp_signing_check2")) { if (is_active) { // We must check digitalSignature || nonRepudiation if (!( ca_file_policy_get (cert_id, "DIGITAL_SIGNATURE") || ca_file_policy_get (cert_id, "NON_REPUDIATION"))) { // If none is active, we activate digital signature gtk_check_button_set_active (GTK_CHECK_BUTTON(gtk_builder_get_object (certificate_properties_window_gtkb, "digital_signature_check4")), TRUE); } } property_name = "OCSP_SIGNING"; } if (! strcmp(widget_name, "any_purpose_check2")) property_name = "ANY_PURPOSE"; if (property_name) ca_file_policy_set_int (cert_id, property_name, is_active); } #endif gnomint-1.6.4/src/csr_properties.h0000644000000000000000000000207415212761266015751 0ustar00rootroot// gnoMint: a graphical interface for managing a certification authority // Copyright (C) 2006-2009 David Marín Carreño // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #ifndef _CSR_PROPERTIES_H_ #define _CSR_PROPERTIES_H_ void csr_properties_display (const char *, gboolean); void csr_properties_close_clicked (const char *csr_pem); #endif gnomint-1.6.4/src/ca_creation.h0000644000000000000000000000247315212761266015160 0ustar00rootroot// gnoMint: a graphical interface for managing a certification authority // Copyright (C) 2006-2009 David Marín Carreño // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #ifndef _CA_CREATION_H_ #define _CA_CREATION_H_ #include #include #include "uint160.h" #include "tls.h" GThread * ca_creation_launch_thread (TlsCreationData *creation_data); void ca_creation_lock_status_mutex (void); void ca_creation_unlock_status_mutex (void); gint ca_creation_get_thread_status (void); gchar * ca_creation_get_thread_message(void); gpointer ca_creation_thread (gpointer data); #endif gnomint-1.6.4/src/crl.h0000644000000000000000000000262115212761266013464 0ustar00rootroot// gnoMint: a graphical interface for managing a certification authority // Copyright (C) 2006-2009 David Marín Carreño // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #ifndef _CRL_WINDOW_H_ #define _CRL_WINDOW_H_ #ifndef GNOMINTCLI void crl_window_display (void); void crl_cancel_clicked_cb (GtkButton *button, gpointer userdata); void crl_ok_clicked_cb (GtkButton *button, gpointer userdata); #endif #ifdef GNOMINTCLI gchar * crl_generate (guint64 ca_id, gchar *filename); #else typedef void (*CrlGenerateCallback)(gchar *error, gpointer user_data); void crl_generate (guint64 ca_id, gchar *filename, CrlGenerateCallback cb, gpointer user_data); #endif #endif gnomint-1.6.4/src/ca-cli.c0000644000000000000000000003473515212761266014042 0ustar00rootroot // gnoMint: a graphical interface for managing a certification authority // Copyright (C) 2006-2009 David Marín Carreño // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #include #include #include #include #include #include #include #include #include #include #include "ca-cli.h" #include "ca_file.h" #include "preferences.h" #include "ca-cli-callbacks.h" CaCommand ca_commands[] = { {"newdb", 1, 1, N_("newdb "), N_("Close current file and create a new database with given filename"), ca_cli_callback_newdb}, // 0 {"opendb", 1, 1, N_("opendb "), N_("Close current file and open the file with given filename"), ca_cli_callback_opendb}, // 1 {"savedbas", 1, 1, N_("savedbas "), N_("Save the current file with a different filename"), ca_cli_callback_savedbas}, // 2 {"status", 0, 0, "status", N_("Get current status (opened file, no. of certificates, etc...)"), ca_cli_callback_status}, // 3 {"listcert", 0, 1, "listcert [--see-revoked]", N_("List the certificates in database. With option --see-revoked, " "lists also the revoked ones"), ca_cli_callback_listcert}, // 4 {"listcsr", 0, 0, "listcsr", N_("List the CSRs in database"), ca_cli_callback_listcsr}, // 5 {"addcsr", 0, 1, N_("addcsr [ca-id-for-inherit-fields]"), N_("Start a new CSR creation process"), ca_cli_callback_addcsr}, // 6 {"addca", 0, 0, "addca", N_("Start a new self-signed CA creation process"), ca_cli_callback_addca}, //7 {"extractcertpkey", 2, 2, N_("extractcertpkey "), N_("Extract the private key of the certificate with the given " "internal id and saves it into the given file"), ca_cli_callback_extractcertpkey}, // 8 {"extractcsrpkey", 2, 2, N_("extractcsrpkey "), N_("Extract the private key of the CSR with the given " "internal id and saves it into the given file"), ca_cli_callback_extractcsrpkey}, // 9 {"revoke", 1, 1, N_("revoke "), N_("Revoke the certificate with the given internal ID"), ca_cli_callback_revoke}, // 10 {"sign", 2, 2, N_("sign "), N_("Generate a certificate signing the given CSR with the given CA"), ca_cli_callback_sign}, // 11 {"delete", 1, 1, N_("delete "), N_("Delete the given CSR from the database"), ca_cli_callback_delete}, // 12 {"crlgen", 2, 2, N_("crlgen "), N_("Generate a new CRL for the given CA, saving it into the file "), ca_cli_callback_crlgen}, // 13 {"dhgen", 2, 2, N_("dhgen "), N_("Generate a new DH-parameter set, saving it into the file "), ca_cli_callback_dhgen}, // 14 {"changepassword", 0, 0, "changepassword", N_("Change password for the current database"), ca_cli_callback_changepassword}, // 15 {"importfile", 1, 1, N_("importfile "), N_("Import the file with the given name "), ca_cli_callback_importfile}, // 16 {"importdir", 1, 1, N_("importdir "), N_("Import the given directory, as a OpenSSL-CA directory"), ca_cli_callback_importdir}, // 17 {"showcert", 1, 1, N_("showcert "), N_("Show properties of the given certificate"), ca_cli_callback_showcert}, // 18 {"showcsr", 1, 1, N_("showcsr "), N_("Show properties of the given CSR"), ca_cli_callback_showcsr}, // 19 {"showpolicy", 1, 1, N_("showpolicy "), N_("Show CA policy"), ca_cli_callback_showpolicy}, // 20 {"setpolicy", 3, 3, N_("setpolicy "), N_("Change the given CA policy"), ca_cli_callback_setpolicy}, // 21 {"showpreferences", 0, 0, "showpreferences", N_("Show program preferences"), ca_cli_callback_showpreferences}, // 22 {"setpreference", 2, 2, N_("setpreference "), N_("Set the given program preference"), ca_cli_callback_setpreference}, // 23 {"addservercert", 3, 3, N_("addservercert "), N_("Quick server certificate generation (cert-type: 'web' or 'email')"), ca_cli_callback_addservercert}, // 24 {"renewcert", 1, 1, N_("renewcert "), N_("Reissue a non-CA certificate with the same subject + SAN and a fresh keypair. The old certificate remains in the database. CA certificates cannot be renewed."), ca_cli_callback_renew}, {"exportchain", 2, 2, N_("exportchain "), N_("Export the full certificate chain (leaf → root) for the given certificate as a PEM bundle."), ca_cli_callback_exportchain}, {"revokemany", 1, 64, N_("revokemany [cert-id ...]"), N_("Revoke many certificates at once. Non-cert ids are silently skipped."), ca_cli_callback_revokemany}, {"deletemany", 1, 64, N_("deletemany [csr-id ...]"), N_("Delete many CSRs at once. Non-CSR ids are silently skipped."), ca_cli_callback_deletemany}, {"search", 1, 1, N_("search "), N_("List certificates and CSRs whose subject or serial contains (case-insensitive)."), ca_cli_callback_search}, {"diff", 2, 2, N_("diff "), N_("Side-by-side diff of two certificates. Each argument is either a numeric DB id or a path to a PEM file."), ca_cli_callback_diff}, {"about", 0, 0, "about", N_("Show about message"), ca_cli_callback_about}, // 25 {"warranty", 0, 0, "warranty", N_("Show warranty information"), ca_cli_callback_warranty}, // 26 {"distribution", 0, 0, "distribution", N_("Show distribution information"), ca_cli_callback_distribution}, // 27 {"version", 0, 0, "version", N_("Show version information"), ca_cli_callback_version}, // 28 {"help", 0, 0, "help", N_("Show (this) help message"), ca_cli_callback_help}, // 29 {"quit", 0, 0, "quit", N_("Close database and exit program"), ca_cli_callback_exit}, // 30 {"exit", 0, 0, "exit", N_("Close database and exit program"), ca_cli_callback_exit}, // 31 {"bye", 0, 0, "bye", N_("Close database and exit program"), ca_cli_callback_exit} // 32 }; #define CA_COMMAND_NUMBER 39 GHashTable *ca_command_table = NULL; gboolean ca_refresh_model (void) { return TRUE; } /* Walked over ca_file_foreach_crt to count certs whose own notAfter is * within the configured warning window. CLI-only; the GUI does the * same accounting with cascade-aware expiration via ca.c. */ typedef struct { time_t now; time_t threshold; gint count; } ExpiringCountCtx; static int __ca_cli_count_expiring (void *pArg, int argc, char **argv, char **columnNames) { ExpiringCountCtx *ctx = (ExpiringCountCtx *) pArg; if (argc <= CA_FILE_CERT_COLUMN_EXPIRATION) return 0; if (argv[CA_FILE_CERT_COLUMN_REVOCATION] && argv[CA_FILE_CERT_COLUMN_REVOCATION][0]) return 0; /* revoked — skip */ if (!argv[CA_FILE_CERT_COLUMN_EXPIRATION]) return 0; gint64 exp = g_ascii_strtoll (argv[CA_FILE_CERT_COLUMN_EXPIRATION], NULL, 10); if (exp <= 0) return 0; if (exp >= ctx->now && exp < ctx->threshold) ctx->count++; return 0; } gboolean ca_open (gchar *filename, gboolean create) { gboolean result; fprintf (stderr, _("Opening database %s..."), filename); result = ca_file_open (filename, create); if (result) fprintf (stderr, _(" OK.\n")); else fprintf (stderr, _(" Error.\n")); if (result) { /* Mirror of the GUI banner (#56). Count certs whose * notAfter is within `expire-warning-days` and print a * notice on stderr. */ gint warn_days = preferences_get_expire_warning_days (); if (warn_days > 0) { ExpiringCountCtx ctx; ctx.now = time (NULL); ctx.threshold = ctx.now + (time_t) warn_days * 86400; ctx.count = 0; ca_file_foreach_crt (__ca_cli_count_expiring, FALSE, &ctx); if (ctx.count > 0) { fprintf (stderr, ngettext ( "Notice: %d certificate expires within the " "next %d days. Use `renewcert ` to reissue.\n", "Notice: %d certificates expire within the " "next %d days. Use `renewcert ` to reissue.\n", ctx.count), ctx.count, warn_days); } } } return result; } void __ca_add_commands (GHashTable *table) { gint i; for (i=0; i < CA_COMMAND_NUMBER; i++) { g_hash_table_insert (table, (gchar *) ca_commands[i].command, &(ca_commands[i])); } } void ca_command_line() { const gchar *prompt = "gnoMint > "; gchar *line = NULL; ca_command_table = g_hash_table_new (g_str_hash, g_str_equal); __ca_add_commands (ca_command_table); printf (_("\n\n%s version %s \"%s\"\n%s\n\n"), PACKAGE_NAME, PACKAGE_VERSION, PACKAGE_CODENAME, PACKAGE_COPYRIGHT); printf (_("This program comes with ABSOLUTELY NO WARRANTY;\nfor details type 'warranty'.\n")); printf (_("This is free software, and you are welcome to redistribute it\nunder certain conditions; type 'distribution' for details.\n\n")); while (TRUE) { // Wait until read a command line = readline (prompt); // Check for EOF if (line == NULL) { printf ("\n\n"); return; } // Check for empty commands if (strlen (line) != 0) { gint i,j,k; gint argc = 0; gchar *oldaux = NULL; gchar **aux = NULL; GSList *arglist = NULL; gchar **argv = NULL; add_history (line); // Parse line aux = g_strsplit (line, "\"", -1 ); // Detect \" combinations, and discard them as a quote for (i = 0; i < (g_strv_length(aux) - 1); i++) { if (aux[i][strlen(aux[i]) - 1] == '\\') { oldaux = aux[i]; aux[i][strlen(aux[i]) - 1] = '\0'; aux[i] = g_strdup_printf ("%s\"%s", aux[i], aux[i+1]); g_free (oldaux); for (j = i+1; j < g_strv_length(aux); j++) { aux[j] = aux[j+1]; } } } if (g_strv_length(aux) % 2 == 0) { // Unpaired quotes fprintf (stderr, _("Unpaired quotes\n")); } else { // For each tuple not in quotes, detect spaces gchar **aux2[g_strv_length(aux)]; for (i=0; i < g_strv_length(aux); i++) { // Only in not-quoted terms (that is: even terms) if (i % 2 == 0) { aux2[i] = g_strsplit (aux[i], " ", -1); if (*aux2[i]) { // Detect "\ " combinations, and discard them as a quote for (j = 0; j < (g_strv_length(aux2[i]) - 1); j++) { if (aux2[i][j] && aux2[i][j][strlen(aux2[i][j]) - 1] == '\\') { oldaux = aux2[i][j]; aux2[i][j][strlen(aux2[i][j]) - 1] = '\0'; aux2[i][j] = g_strdup_printf ("%s %s", aux2[i][j], aux2[i][j+1]); g_free (oldaux); for (k = j+1; k < g_strv_length(aux2[i]); k++) { aux2[i][k] = aux2[i][k+1]; } } } // If this is a post-quote term, and begins with an empty element if (aux2[i][0][0]=='\0' && i > 0) { argc++; arglist = g_slist_append (arglist, g_strdup (aux[i-1])); } for (j=0; j < g_strv_length(aux2[i]); j++) { if (j < g_strv_length(aux2[i]) - 1 || i == g_strv_length(aux) - 1) { if (strlen(aux2[i][j])) { argc++; if (j==0 && i > 0) { arglist = g_slist_append (arglist, g_strdup_printf ("%s%s",aux[i-1],aux2[i][j])); } else { arglist = g_slist_append (arglist, g_strdup (aux2[i][j])); } } } } } else { if (i > 0) { argc++; arglist = g_slist_append (arglist, g_strdup (aux[i-1])); } } } else { if (*aux2[i-1]) { oldaux = aux[i]; aux[i] = g_strdup_printf("%s%s", aux2[i-1][g_strv_length(aux2[i-1]) - 1], aux[i]); g_free (oldaux); } } } for (i=0; i < g_strv_length(aux); i=i+2) g_strfreev (aux2[i]); } g_strfreev (aux); // fprintf (stderr, "Argc: %d\n", argc); argv = g_new (gchar*, argc + 1); argv[argc] = NULL; for (i=0; i < argc; i++) { argv[i] = (gchar *) g_slist_nth_data (arglist, i); // fprintf (stderr, "%d: «%s»\n", i, (gchar *) g_slist_nth_data (arglist, i)); } g_slist_free (arglist); // If the given command is defined if (argc > 0) { CaCommand *command_entry = ((CaCommand *) g_hash_table_lookup (ca_command_table, argv[0])); if (!command_entry) { fprintf (stderr, _("Invalid command. Try 'help' for getting a list of recognized commands.\n")); } else { // Check for parameter number if (argc - 1 < command_entry->mandatory_params || argc - 1 > command_entry->optional_params) { fprintf (stderr, _("Incorrect number of parameters.\n")); fprintf (stderr, _("Syntax: %s\n"), _(command_entry->syntax)); } else { // Call it command_entry->callback (argc, argv); } } } if (argv) { for (i=0; i < argc; i++) g_free (argv[i]); } } free (line); } } gnomint-1.6.4/src/new_req_window.h0000644000000000000000000000356315212761266015741 0ustar00rootroot// gnoMint: a graphical interface for managing a certification authority // Copyright (C) 2006-2009 David Marín Carreño // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #ifndef _NEW_REQ_WINDOW_H_ #define _NEW_REQ_WINDOW_H_ #ifndef GNOMINTCLI void new_req_window_display (void); void new_req_inherit_fields_toggled (GtkCheckButton *button, gpointer user_data); void new_req_tab_activate (int tab_number); void on_new_req_cn_entry_changed (GtkEditable *editable, gpointer user_data); void on_new_req_next1_clicked (GtkButton *button, gpointer user_data); void on_new_req_previous2_clicked (GtkButton *widget, gpointer user_data); void on_new_req_next2_clicked (GtkButton *widget, gpointer user_data); void on_new_req_previous3_clicked (GtkButton *widget, gpointer user_data); void on_new_req_cancel_clicked (GtkButton *widget, gpointer user_data); void on_new_req_commit_clicked (GtkButton *widg, gpointer user_data); #endif #endif gnomint-1.6.4/src/new_ca_window.c0000644000000000000000000004535315212761266015533 0ustar00rootroot// gnoMint: a graphical interface for managing a certification authority // Copyright (C) 2006-2009 David Marín Carreño // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #include #include #include #include #include #include #include "new_ca_window.h" #include "creation_process_window.h" #include "ca_file.h" #include "tls.h" #include "pkey_manage.h" #include "country_table.h" #include "san_manager.h" #include #include "dialog.h" #include "gnomint_time.h" GtkBuilder * new_ca_window_gtkb = NULL; GtkWidget *san_manager_widget = NULL; G_MODULE_EXPORT void on_new_ca_privkey_type_toggle (GtkCheckButton *button, gpointer user_data); void new_ca_window_display() { // Workaround for libglade GtkBuilder *san_builder; GtkWidget *alignment; gchar *ui_file; new_ca_window_gtkb = gtk_builder_new(); ui_file = g_build_filename (PACKAGE_DATA_DIR, "gnomint", "new_ca_window.ui", NULL); gtk_builder_add_from_file(new_ca_window_gtkb, ui_file, NULL); g_free(ui_file); country_table_populate_dropdown(GTK_DROP_DOWN(gtk_builder_get_object(new_ca_window_gtkb, "country_combobox"))); gtk_check_button_set_active(GTK_CHECK_BUTTON(gtk_builder_get_object (new_ca_window_gtkb, "rsa_radiobutton")), TRUE); gtk_spin_button_set_value (GTK_SPIN_BUTTON(gtk_builder_get_object(new_ca_window_gtkb, "keylength_spinbutton")), 2048); // Initialize SAN manager widget san_builder = gtk_builder_new(); ui_file = g_build_filename(PACKAGE_DATA_DIR, "gnomint", "san_manager_widget.ui", NULL); gtk_builder_add_from_file(san_builder, ui_file, NULL); g_free(ui_file); san_manager_widget = san_manager_create(san_builder, "san_manager_vbox"); if (san_manager_widget) { alignment = GTK_WIDGET(gtk_builder_get_object(new_ca_window_gtkb, "san_alignment")); gtk_box_append(GTK_BOX(alignment), san_manager_widget); gtk_widget_set_visible(san_manager_widget, TRUE); } /* Connect signals explicitly (gtk_builder_connect_signals removed in GTK 4) */ GtkWidget *w; w = GTK_WIDGET(gtk_builder_get_object(new_ca_window_gtkb, "rsa_radiobutton")); if (w) g_signal_connect(w, "notify::active", G_CALLBACK(on_new_ca_privkey_type_toggle), NULL); w = GTK_WIDGET(gtk_builder_get_object(new_ca_window_gtkb, "dsa_radiobutton")); if (w) g_signal_connect(w, "notify::active", G_CALLBACK(on_new_ca_privkey_type_toggle), NULL); w = GTK_WIDGET(gtk_builder_get_object(new_ca_window_gtkb, "ecdsa_radiobutton")); if (w) g_signal_connect(w, "notify::active", G_CALLBACK(on_new_ca_privkey_type_toggle), NULL); w = GTK_WIDGET(gtk_builder_get_object(new_ca_window_gtkb, "eddsa_radiobutton")); if (w) g_signal_connect(w, "notify::active", G_CALLBACK(on_new_ca_privkey_type_toggle), NULL); w = GTK_WIDGET(gtk_builder_get_object(new_ca_window_gtkb, "new_ca_pwd_protect_yes_radiobutton")); if (w) g_signal_connect(w, "toggled", G_CALLBACK(on_new_ca_pwd_protect_radiobutton_toggled), NULL); w = GTK_WIDGET(gtk_builder_get_object(new_ca_window_gtkb, "new_ca_pwd_protect_no_radiobutton")); if (w) g_signal_connect(w, "toggled", G_CALLBACK(on_new_ca_pwd_protect_radiobutton_toggled), NULL); w = GTK_WIDGET(gtk_builder_get_object(new_ca_window_gtkb, "new_ca_pwd_entry_1")); if (w) g_signal_connect(w, "changed", G_CALLBACK(on_new_ca_pwd_entry_changed), NULL); w = GTK_WIDGET(gtk_builder_get_object(new_ca_window_gtkb, "new_ca_pwd_entry_2")); if (w) g_signal_connect(w, "changed", G_CALLBACK(on_new_ca_pwd_entry_changed), NULL); w = GTK_WIDGET(gtk_builder_get_object(new_ca_window_gtkb, "cn_entry")); if (w) g_signal_connect(w, "changed", G_CALLBACK(on_cn_entry_changed), NULL); w = GTK_WIDGET(gtk_builder_get_object(new_ca_window_gtkb, "new_ca_next1")); if (w) g_signal_connect(w, "clicked", G_CALLBACK(on_new_ca_next1_clicked), NULL); w = GTK_WIDGET(gtk_builder_get_object(new_ca_window_gtkb, "new_ca_previous2")); if (w) g_signal_connect(w, "clicked", G_CALLBACK(on_new_ca_previous2_clicked), NULL); w = GTK_WIDGET(gtk_builder_get_object(new_ca_window_gtkb, "new_ca_next2")); if (w) g_signal_connect(w, "clicked", G_CALLBACK(on_new_ca_next2_clicked), NULL); w = GTK_WIDGET(gtk_builder_get_object(new_ca_window_gtkb, "new_ca_previous3")); if (w) g_signal_connect(w, "clicked", G_CALLBACK(on_new_ca_previous3_clicked), NULL); w = GTK_WIDGET(gtk_builder_get_object(new_ca_window_gtkb, "new_ca_commit")); if (w) g_signal_connect(w, "clicked", G_CALLBACK(on_new_ca_commit_clicked), NULL); w = GTK_WIDGET(gtk_builder_get_object(new_ca_window_gtkb, "new_ca_cancel1")); if (w) g_signal_connect(w, "clicked", G_CALLBACK(on_new_ca_cancel_clicked), NULL); w = GTK_WIDGET(gtk_builder_get_object(new_ca_window_gtkb, "new_ca_cancel2")); if (w) g_signal_connect(w, "clicked", G_CALLBACK(on_new_ca_cancel_clicked), NULL); w = GTK_WIDGET(gtk_builder_get_object(new_ca_window_gtkb, "new_ca_cancel3")); if (w) g_signal_connect(w, "clicked", G_CALLBACK(on_new_ca_cancel_clicked), NULL); on_new_ca_privkey_type_toggle (NULL, NULL); { static const char *bbox_ids[] = { "hbuttonbox1", "hbuttonbox12", "hbuttonbox4", NULL }; dialog_notebook_fix_tab_focus ( GTK_NOTEBOOK (gtk_builder_get_object (new_ca_window_gtkb, "new_ca_notebook")), bbox_ids, new_ca_window_gtkb); } gtk_widget_set_visible ( GTK_WIDGET (gtk_builder_get_object (new_ca_window_gtkb, "new_ca_window")), TRUE); gtk_window_set_transient_for (GTK_WINDOW (gtk_builder_get_object (new_ca_window_gtkb, "new_ca_window")), dialog_get_main_window ()); gtk_window_present (GTK_WINDOW (gtk_builder_get_object (new_ca_window_gtkb, "new_ca_window"))); } // TAB Manage void new_ca_tab_activate (int tab_number) { GtkNotebook *notebook = GTK_NOTEBOOK(gtk_builder_get_object (new_ca_window_gtkb, "new_ca_notebook")); gtk_notebook_set_current_page (notebook, tab_number); } G_MODULE_EXPORT void on_new_ca_privkey_type_toggle (GtkCheckButton *button, gpointer user_data) { GtkCheckButton *rsatoggle = GTK_CHECK_BUTTON (gtk_builder_get_object (new_ca_window_gtkb, "rsa_radiobutton")); GtkCheckButton *dsatoggle = GTK_CHECK_BUTTON (gtk_builder_get_object (new_ca_window_gtkb, "dsa_radiobutton")); GtkCheckButton *ecdsatoggle = GTK_CHECK_BUTTON (gtk_builder_get_object (new_ca_window_gtkb, "ecdsa_radiobutton")); GtkCheckButton *eddsatoggle = GTK_CHECK_BUTTON (gtk_builder_get_object (new_ca_window_gtkb, "eddsa_radiobutton")); GtkAdjustment *adj = GTK_ADJUSTMENT (gtk_builder_get_object (new_ca_window_gtkb, "adjustmentCAKeyLength")); GtkWidget *spin = GTK_WIDGET (gtk_builder_get_object (new_ca_window_gtkb, "keylength_spinbutton")); GtkWidget *combo = GTK_WIDGET (gtk_builder_get_object (new_ca_window_gtkb, "ecdsa_curve_combo")); GtkLabel *label = GTK_LABEL (gtk_builder_get_object (new_ca_window_gtkb, "label21")); gdouble value = gtk_spin_button_get_value (GTK_SPIN_BUTTON (spin)); if (rsatoggle && gtk_check_button_get_active (rsatoggle)) { gtk_adjustment_set_upper (adj, 10240); gtk_widget_set_visible(spin, TRUE); if (combo) gtk_widget_set_visible(combo, FALSE); if (label) { gtk_label_set_text (label, _("Private key bit length:")); gtk_widget_set_visible(GTK_WIDGET(label), TRUE); } } else if (dsatoggle && gtk_check_button_get_active(dsatoggle)) { gtk_adjustment_set_upper (adj, 3072); if (value > 3072) gtk_spin_button_set_value (GTK_SPIN_BUTTON (spin), 3072); gtk_widget_set_visible(spin, TRUE); if (combo) gtk_widget_set_visible(combo, FALSE); if (label) { gtk_label_set_text (label, _("Private key bit length:")); gtk_widget_set_visible(GTK_WIDGET(label), TRUE); } } else if (ecdsatoggle && gtk_check_button_get_active(ecdsatoggle)) { gtk_widget_set_visible(spin, FALSE); if (combo) { gtk_widget_set_visible(combo, TRUE); if (gtk_drop_down_get_selected (GTK_DROP_DOWN (combo)) == GTK_INVALID_LIST_POSITION) gtk_drop_down_set_selected (GTK_DROP_DOWN (combo), 0); } if (label) { gtk_label_set_text (label, _("ECDSA curve:")); gtk_widget_set_visible(GTK_WIDGET(label), TRUE); } } else if (eddsatoggle && gtk_check_button_get_active(eddsatoggle)) { gtk_widget_set_visible(spin, FALSE); if (combo) gtk_widget_set_visible(combo, FALSE); if (label) gtk_widget_set_visible(GTK_WIDGET(label), FALSE); } } G_MODULE_EXPORT void on_cn_entry_changed (GtkEditable *editable, gpointer user_data) { GtkButton *button = GTK_BUTTON(gtk_builder_get_object (new_ca_window_gtkb, "new_ca_next1")); if (strlen (gtk_editable_get_text(GTK_EDITABLE(editable)))) gtk_widget_set_sensitive (GTK_WIDGET(button), TRUE); else gtk_widget_set_sensitive (GTK_WIDGET(button), FALSE); } G_MODULE_EXPORT void on_new_ca_next1_clicked (GtkButton *widget, gpointer user_data) { GtkEditable *cn = GTK_EDITABLE(gtk_builder_get_object (new_ca_window_gtkb, "cn_entry")); if (!strlen (gtk_editable_get_text (cn))) { dialog_error (_("Please enter a Common Name (CN) for the CA.")); return; } new_ca_tab_activate (1); } G_MODULE_EXPORT void on_new_ca_previous2_clicked (GtkButton *widget, gpointer user_data) { new_ca_tab_activate (0); } G_MODULE_EXPORT void on_new_ca_next2_clicked (GtkButton *widget, gpointer user_data) { new_ca_tab_activate (2); } G_MODULE_EXPORT void on_new_ca_previous3_clicked (GtkButton *widget, gpointer user_data) { new_ca_tab_activate (1); } G_MODULE_EXPORT void on_new_ca_cancel_clicked (GtkButton *widget, gpointer user_data) { GtkWindow *window = GTK_WINDOW(gtk_builder_get_object (new_ca_window_gtkb, "new_ca_window")); gtk_window_destroy(GTK_WINDOW(GTK_WIDGET(window))); } G_MODULE_EXPORT void on_new_ca_pwd_entry_changed (GtkEntry *entry, gpointer user_data) { const gchar *text1; const gchar *text2; GtkEntry *pwd_entry_1 = GTK_ENTRY(gtk_builder_get_object (new_ca_window_gtkb, "new_ca_pwd_entry_1")); GtkEntry *pwd_entry_2 = GTK_ENTRY(gtk_builder_get_object (new_ca_window_gtkb, "new_ca_pwd_entry_2")); GtkButton *commit_button = GTK_BUTTON(gtk_builder_get_object (new_ca_window_gtkb, "new_ca_commit")); text1 = gtk_editable_get_text(GTK_EDITABLE(pwd_entry_1)); text2 = gtk_editable_get_text(GTK_EDITABLE(pwd_entry_2)); if (strlen(text1) && strlen(text2) && ! strcmp(text1, text2)) { gtk_widget_set_sensitive (GTK_WIDGET(commit_button), TRUE); } else { gtk_widget_set_sensitive (GTK_WIDGET(commit_button), FALSE); } } G_MODULE_EXPORT void on_new_ca_pwd_protect_radiobutton_toggled (GtkCheckButton *radiobutton, gpointer user_data) { GtkCheckButton *yes = GTK_CHECK_BUTTON(gtk_builder_get_object (new_ca_window_gtkb, "new_ca_pwd_protect_yes_radiobutton")); GtkLabel *pwd_label_1 = GTK_LABEL(gtk_builder_get_object (new_ca_window_gtkb, "new_ca_pwd_label_1")); GtkLabel *pwd_label_2 = GTK_LABEL(gtk_builder_get_object (new_ca_window_gtkb, "new_ca_pwd_label_2")); GtkEntry *pwd_entry_1 = GTK_ENTRY(gtk_builder_get_object (new_ca_window_gtkb, "new_ca_pwd_entry_1")); GtkEntry *pwd_entry_2 = GTK_ENTRY(gtk_builder_get_object (new_ca_window_gtkb, "new_ca_pwd_entry_2")); GtkButton *commit_button = GTK_BUTTON(gtk_builder_get_object (new_ca_window_gtkb, "new_ca_commit")); if (gtk_check_button_get_active (GTK_CHECK_BUTTON(yes))) { gtk_widget_set_sensitive (GTK_WIDGET(pwd_label_1), TRUE); gtk_widget_set_sensitive (GTK_WIDGET(pwd_label_2), TRUE); gtk_widget_set_sensitive (GTK_WIDGET(pwd_entry_1), TRUE); gtk_widget_set_sensitive (GTK_WIDGET(pwd_entry_2), TRUE); on_new_ca_pwd_entry_changed (pwd_entry_1, NULL); } else { gtk_widget_set_sensitive (GTK_WIDGET(pwd_label_1), FALSE); gtk_widget_set_sensitive (GTK_WIDGET(pwd_label_2), FALSE); gtk_widget_set_sensitive (GTK_WIDGET(pwd_entry_1), FALSE); gtk_widget_set_sensitive (GTK_WIDGET(pwd_entry_2), FALSE); gtk_widget_set_sensitive (GTK_WIDGET(commit_button), TRUE); } } static void __new_ca_commit_password_cb (gchar *password, gpointer user_data) { TlsCreationData *ca_creation_data = (TlsCreationData *) user_data; GtkWindow *window; if (!password) { /* The user hasn't provided a valid password */ tls_creation_data_free (ca_creation_data); return; } ca_creation_data->password = password; window = GTK_WINDOW(gtk_builder_get_object (new_ca_window_gtkb, "new_ca_window")); gtk_window_destroy(GTK_WINDOW(GTK_WIDGET(window))); creation_process_window_ca_display (ca_creation_data); } G_MODULE_EXPORT void on_new_ca_commit_clicked (GtkButton *widg, gpointer user_data) { TlsCreationData *ca_creation_data = NULL; GtkWidget *widget = NULL; GtkWindow *window = NULL; gint active = -1; gchar *text = NULL; time_t tmp; struct tm * expiration_time; ca_creation_data = g_new0 (TlsCreationData, 1); { GtkDropDown *country_dd = GTK_DROP_DOWN(gtk_builder_get_object (new_ca_window_gtkb, "country_combobox")); const gchar *code = country_table_get_code (country_dd); if (code) ca_creation_data->country = g_strndup (code, 2); else ca_creation_data->country = NULL; } widget = GTK_WIDGET(gtk_builder_get_object (new_ca_window_gtkb, "st_entry")); text = (gchar *) gtk_editable_get_text(GTK_EDITABLE(widget)); if (strlen (text)) ca_creation_data->state = g_strdup (text); else ca_creation_data->state = NULL; widget = GTK_WIDGET(gtk_builder_get_object (new_ca_window_gtkb, "city_entry")); text = (gchar *) gtk_editable_get_text(GTK_EDITABLE(widget)); if (strlen (text)) ca_creation_data->city = g_strdup (text); else ca_creation_data->city = NULL; widget = GTK_WIDGET(gtk_builder_get_object (new_ca_window_gtkb, "o_entry")); text = (gchar *) gtk_editable_get_text(GTK_EDITABLE(widget)); if (strlen (text)) ca_creation_data->org = g_strdup (text); else ca_creation_data->org = NULL; widget = GTK_WIDGET(gtk_builder_get_object (new_ca_window_gtkb, "ou_entry")); text = (gchar *) gtk_editable_get_text(GTK_EDITABLE(widget)); if (strlen (text)) ca_creation_data->ou = g_strdup (text); else ca_creation_data->ou = NULL; widget = GTK_WIDGET(gtk_builder_get_object (new_ca_window_gtkb, "cn_entry")); text = (gchar *) gtk_editable_get_text(GTK_EDITABLE(widget)); if (strlen (text)) ca_creation_data->cn = g_strdup (text); else ca_creation_data->cn = NULL; widget = GTK_WIDGET(gtk_builder_get_object (new_ca_window_gtkb, "email_entry")); text = (gchar *) gtk_editable_get_text(GTK_EDITABLE(widget)); if (strlen (text)) ca_creation_data->emailAddress = g_strdup (text); else ca_creation_data->emailAddress = NULL; // Get SANs from SAN manager widget if (san_manager_widget) { gchar *san_string = san_manager_get_string(san_manager_widget); if (san_string && san_string[0]) ca_creation_data->subject_alt_name = san_string; else { g_free(san_string); ca_creation_data->subject_alt_name = NULL; } } else { ca_creation_data->subject_alt_name = NULL; } { /* Walk the radio group in priority order so the most * specific selection wins (eddsa > ecdsa > dsa > rsa). */ GtkWidget *eddsa = GTK_WIDGET ( gtk_builder_get_object (new_ca_window_gtkb, "eddsa_radiobutton")); GtkWidget *ecdsa = GTK_WIDGET ( gtk_builder_get_object (new_ca_window_gtkb, "ecdsa_radiobutton")); GtkWidget *dsa = GTK_WIDGET ( gtk_builder_get_object (new_ca_window_gtkb, "dsa_radiobutton")); if (eddsa && gtk_check_button_get_active (GTK_CHECK_BUTTON (eddsa))) ca_creation_data->key_type = 3; /* EdDSA */ else if (ecdsa && gtk_check_button_get_active (GTK_CHECK_BUTTON (ecdsa))) ca_creation_data->key_type = 2; /* ECDSA */ else if (dsa && gtk_check_button_get_active (GTK_CHECK_BUTTON (dsa))) ca_creation_data->key_type = 1; /* DSA */ else ca_creation_data->key_type = 0; /* RSA */ } if (ca_creation_data->key_type == 2 /* ECDSA */) { /* Read the curve from the ECDSA dropdown. * Index 0=P-256, 1=P-384, 2=P-521. */ static const int ecdsa_bitlengths[] = { 256, 384, 521 }; GtkDropDown *curve_dd = GTK_DROP_DOWN ( gtk_builder_get_object (new_ca_window_gtkb, "ecdsa_curve_combo")); guint sel = curve_dd ? gtk_drop_down_get_selected (curve_dd) : GTK_INVALID_LIST_POSITION; ca_creation_data->key_bitlength = (sel < G_N_ELEMENTS (ecdsa_bitlengths)) ? ecdsa_bitlengths[sel] : 256; } else if (ca_creation_data->key_type == 3 /* EdDSA */) { ca_creation_data->key_bitlength = 0; /* fixed by the curve */ } else { widget = GTK_WIDGET (gtk_builder_get_object (new_ca_window_gtkb, "keylength_spinbutton")); active = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (widget)); ca_creation_data->key_bitlength = active; } widget = GTK_WIDGET(gtk_builder_get_object (new_ca_window_gtkb, "months_before_expiration_spinbutton")); active = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON(widget)); ca_creation_data->key_months_before_expiration = active; tmp = time (NULL); ca_creation_data->activation = tmp; expiration_time = g_new (struct tm,1); #ifndef WIN32 localtime_r (&tmp, expiration_time); #else expiration_time = localtime(&tmp); #endif expiration_time->tm_mon = expiration_time->tm_mon + ca_creation_data->key_months_before_expiration; expiration_time->tm_year = expiration_time->tm_year + (expiration_time->tm_mon / 12); expiration_time->tm_mon = expiration_time->tm_mon % 12; { gboolean exp_overflow = FALSE; ca_creation_data->expiration = gnomint_mktime_checked (expiration_time, &exp_overflow); if (exp_overflow) dialog_info (_("This system uses a 32-bit time_t and cannot represent " "dates after 2038-01-19. The new CA's expiration date has " "been clamped to that limit. To issue longer-lived CAs, " "run gnoMint on a 64-bit platform.")); } #ifndef WIN32 g_free (expiration_time); #endif widget = GTK_WIDGET(gtk_builder_get_object (new_ca_window_gtkb, "crl_distribution_point_entry")); text = (gchar *) gtk_editable_get_text(GTK_EDITABLE(widget)); if (strlen (text)) ca_creation_data->crl_distribution_point = g_strdup (text); else ca_creation_data->crl_distribution_point = NULL; if (ca_file_is_password_protected()) { pkey_manage_ask_password (__new_ca_commit_password_cb, ca_creation_data); return; } window = GTK_WINDOW(gtk_builder_get_object (new_ca_window_gtkb, "new_ca_window")); gtk_window_destroy(GTK_WINDOW(GTK_WIDGET(window))); creation_process_window_ca_display (ca_creation_data); } gnomint-1.6.4/src/cert_diff.h0000644000000000000000000000236615212761266014637 0ustar00rootroot/* Pairwise certificate diff. * * Parses two PEM-encoded X.509 certificates and produces a structured * comparison: an ordered list of (field name, left value, right value, * differs?) tuples covering the user-visible properties (subject DN, * issuer DN, serial, validity, fingerprints, SAN, key usage, etc.). * * The helper has no GUI dependency — the GTK dialog (#55) and a future * CLI `diff ` command can both walk the same structure. */ #ifndef _CERT_DIFF_H_ #define _CERT_DIFF_H_ #include typedef struct { gchar *field_name; gchar *left; /* may be NULL */ gchar *right; /* may be NULL */ gboolean differs; } CertDiffField; typedef struct { GList *fields; /* of CertDiffField */ gchar *parse_error_left; gchar *parse_error_right; } CertDiff; /* Build a diff. Either PEM may be NULL or fail to parse — the result * still surfaces whatever could be read, plus a parse_error_* string * for the side that failed. Caller frees with cert_diff_free. */ CertDiff * cert_diff_new (const gchar *pem_left, const gchar *pem_right); void cert_diff_free (CertDiff *d); /* Count of fields that differ between left and right. */ gint cert_diff_count_differences (const CertDiff *d); #endif gnomint-1.6.4/src/csr_properties.c0000644000000000000000000000706315212761266015747 0ustar00rootroot// gnoMint: a graphical interface for managing a certification authority // Copyright (C) 2006-2009 David Marín Carreño // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #include #include #include #include #include #include #include "tls.h" #include "csr_properties.h" #include #include "dialog.h" GtkBuilder * csr_properties_window_gtkb = NULL; void __csr_properties_populate (const char *csr_pem, gboolean); void csr_properties_display(const char *csr_pem, gboolean privkey_in_db) { GObject * widget = NULL; csr_properties_window_gtkb = gtk_builder_new(); gtk_builder_add_from_file (csr_properties_window_gtkb, g_build_filename (PACKAGE_DATA_DIR, "gnomint", "csr_properties_dialog.ui", NULL), NULL); __csr_properties_populate (csr_pem, privkey_in_db); widget = gtk_builder_get_object (csr_properties_window_gtkb, "csr_properties_dialog"); GObject *close_btn = gtk_builder_get_object (csr_properties_window_gtkb, "button13"); if (close_btn) g_signal_connect_swapped (close_btn, "clicked", G_CALLBACK (gtk_window_destroy), widget); gtk_window_set_transient_for (GTK_WINDOW (widget), dialog_get_main_window ()); gtk_widget_set_visible(GTK_WIDGET(widget), TRUE); } void __csr_properties_populate (const char *csr_pem, gboolean privkey_in_db) { GObject *widget = NULL; TlsCsr * csr = NULL; csr = tls_parse_csr_pem (csr_pem); widget = gtk_builder_get_object (csr_properties_window_gtkb, "certSubjectCNLabel1"); gtk_label_set_text (GTK_LABEL(widget), csr->cn); widget = gtk_builder_get_object (csr_properties_window_gtkb, "certSubjectOLabel1"); gtk_label_set_text (GTK_LABEL(widget), csr->o); widget = gtk_builder_get_object (csr_properties_window_gtkb, "certSubjectOULabel1"); gtk_label_set_text (GTK_LABEL(widget), csr->ou); widget = gtk_builder_get_object (csr_properties_window_gtkb, "certSubjectEmailLabel1"); gtk_label_set_text (GTK_LABEL(widget), csr->emailAddress ? csr->emailAddress : ""); widget = gtk_builder_get_object (csr_properties_window_gtkb, "certSubjectSANLabel1"); if (csr->subject_alt_name && csr->subject_alt_name[0]) { gtk_label_set_text (GTK_LABEL(widget), csr->subject_alt_name); } else { gtk_label_set_text (GTK_LABEL(widget), _("None")); } if (! privkey_in_db) { widget = gtk_builder_get_object (csr_properties_window_gtkb, "privatekey_in_db_label"); gtk_label_set_markup (GTK_LABEL(widget), _("This Certificate Signing Request has its corresponding private key saved in a external file.")); } tls_csr_free (csr); } G_MODULE_EXPORT void csr_properties_close_clicked (const char *csr_pem) { GObject *widget = NULL; widget = gtk_builder_get_object (csr_properties_window_gtkb, "csr_properties_dialog"); g_assert (widget); gtk_window_destroy(GTK_WINDOW(GTK_WIDGET(widget))); } gnomint-1.6.4/src/dialog.c0000644000000000000000000003645615212761266014153 0ustar00rootroot// gnoMint: a graphical interface for managing a certification authority // Copyright (C) 2006-2009 David Marín Carreño // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #include #include #include #include #include #include #include #include #include "dialog.h" #ifdef WIN32 #include char *getpass(const char *prompt) { static char buf[128]; size_t i; fputs(prompt, stderr); fflush(stderr); for (i = 0; i < sizeof(buf) - 1; i++) { buf[i] = _getch(); if (buf[i] == '\r') break; } buf[i] = 0; fputs("\n", stderr); return buf; } #endif #ifdef _WIN32 const gchar * gnomint_get_data_dir (void) { static gchar *data_dir = NULL; if (!data_dir) { gchar *install_dir = g_win32_get_package_installation_directory_of_module (NULL); data_dir = g_build_filename (install_dir, "share", NULL); g_free (install_dir); } return data_dir; } #endif DialogRefreshCallback dialog_refresh_callback = NULL; void dialog_establish_refresh_function (DialogRefreshCallback callback) { dialog_refresh_callback = callback; } gboolean dialog_refresh_list (void) { /* The CLI doesn't register a refresh callback — calling through a * NULL function pointer would segfault. The GUI registers via * dialog_establish_refresh_function in main.c. */ if (!dialog_refresh_callback) return TRUE; return dialog_refresh_callback(); } #ifdef GNOMINTCLI #include #include void dialog_info (gchar *message) { printf ("\nInfo: %s\n\n", message); } void dialog_error (gchar *message) { fprintf (stderr, "\nError: %s\n\n", message); } gchar * dialog_get_password (gchar *info_message, gchar *password_message, gchar *confirm_message, gchar *distinct_error_message, guint minimum_length) { gchar * res = NULL; gchar * password = NULL; gchar * password2 = NULL; printf ("%s\n\n", info_message); do { if (res) { g_free (res); res = NULL; } password = getpass(password_message); if (! password || password[0]=='\0') return NULL; res = g_strdup (password); if (strlen (res) < minimum_length) { fprintf (stderr, _("\nThe password must have, at least, %d characters\n"), minimum_length); continue; } memset (password, 0, strlen (res)); password2 = getpass(confirm_message); if (strcmp (res, password2)) { fprintf (stderr, "\n%s\n", distinct_error_message); memset (password, 0, strlen (password2)); } } while (strlen (res) < minimum_length || strcmp (res, password2) ); memset (password, 0, strlen (password2)); return res; } gboolean dialog_ask_for_confirmation (gchar *message, gchar *prompt, gboolean default_answer) { gchar *line; const gchar *positive_answers = Q_("List of affirmative answers, separated with #|Yes#yes#Y#y"); const gchar *negative_answers = Q_("List of negative answers, separated with #|No#no#N#n"); gchar **aux; gint i; if (message) printf ("%s\n", message); while (TRUE) { line = readline (prompt); if (line == NULL) return default_answer; if (strlen (line) == 0) return default_answer; aux = g_strsplit (positive_answers, "#", -1); i = 0; while (aux[i]) { if (!strcmp (line, aux[i])) { free (line); g_strfreev (aux); return TRUE; } i++; } g_strfreev (aux); aux = g_strsplit (negative_answers, "#", -1); i = 0; while (aux[i]) { if (!strcmp (line, aux[i])) { free (line); g_strfreev (aux); return FALSE; } i++; } g_strfreev (aux); free (line); } } gint dialog_ask_for_number (gchar *message, gint minimum, gint maximum, gint default_value) { gchar *line; gchar *prompt = NULL; gint result = default_value; gboolean keep_trying = TRUE; if (! message) message = ""; g_assert (minimum <= default_value); g_assert (maximum >= default_value); if (maximum == default_value) prompt = g_strdup_printf ("%s (%d - [%d]): ", message, minimum, maximum); else if (minimum == default_value) prompt = g_strdup_printf ("%s ([%d] - %d): ", message, minimum, maximum); else prompt = g_strdup_printf ("%s (%d - [%d] - %d): ", message, minimum, default_value, maximum); while (keep_trying) { line = readline (prompt); if (line == NULL) { result = default_value; break; } if (strlen (line) == 0) { result = default_value; free (line); break; } if (atoi (line) <= maximum && atoi(line) >= minimum) { result = atoi (line); free (line); break; } free (line); } g_free (prompt); return result; } gchar * dialog_ask_for_password (gchar *message) { gchar *password; gchar *aux = NULL; aux = getpass (message); if (!aux || aux[0] == '\0') { return NULL; } else { password = g_strdup (aux); memset (aux, 0, strlen(aux)); } return password; } gchar * dialog_ask_for_string (gchar *message, gchar *default_answer) { gchar *prompt; gchar *result = NULL; char *line; printf ("%s\n", message); if (default_answer) { prompt = g_strdup_printf ("[%s] : ", default_answer); } else { prompt = g_strdup (": "); } line = readline (prompt); if (line == NULL || strlen(line) == 0) { if (default_answer) result = g_strdup(default_answer); else result = NULL; } else { result = g_strdup (line); } g_free (prompt); return result; } #else #include #include extern GtkBuilder *main_window_gtkb; GtkWindow * dialog_get_main_window (void) { if (!main_window_gtkb) return NULL; GObject *w = gtk_builder_get_object (main_window_gtkb, "main_window1"); return w ? GTK_WINDOW (w) : NULL; } void dialog_info (gchar *message) { GtkAlertDialog *alert = gtk_alert_dialog_new ("%s", message); gtk_alert_dialog_show (alert, dialog_get_main_window ()); g_object_unref (alert); } void dialog_error (gchar *message) { GtkAlertDialog *alert = gtk_alert_dialog_new ("%s", message); gtk_alert_dialog_show (alert, dialog_get_main_window ()); g_object_unref (alert); } /* --- Async password dialog (GUI) --- */ typedef struct { GtkBuilder *dialog_gtkb; gchar *distinct_error_message; DialogPasswordCallback cb; gpointer user_data; } _DialogGetPasswordCtx; static void _dialog_get_password_response (GtkDialog *dialog, gint response_id, gpointer user_data) { _DialogGetPasswordCtx *ctx = (_DialogGetPasswordCtx *) user_data; GObject *widget; gchar *password; const gchar *passwordagain; if (!response_id || response_id == GTK_RESPONSE_CANCEL || response_id == GTK_RESPONSE_DELETE_EVENT) { gtk_window_destroy (GTK_WINDOW (dialog)); g_object_unref (G_OBJECT (ctx->dialog_gtkb)); ctx->cb (NULL, ctx->user_data); g_free (ctx->distinct_error_message); g_free (ctx); return; } /* OK pressed -- validate */ widget = gtk_builder_get_object (ctx->dialog_gtkb, "password_entry"); password = g_strdup (gtk_editable_get_text (GTK_EDITABLE (widget))); widget = gtk_builder_get_object (ctx->dialog_gtkb, "confirm_entry"); passwordagain = gtk_editable_get_text (GTK_EDITABLE (widget)); if (strcmp (password, passwordagain)) { g_free (password); dialog_error (ctx->distinct_error_message); /* Re-present the dialog so the user can try again */ widget = gtk_builder_get_object (ctx->dialog_gtkb, "password_entry"); gtk_editable_set_text (GTK_EDITABLE (widget), ""); widget = gtk_builder_get_object (ctx->dialog_gtkb, "confirm_entry"); gtk_editable_set_text (GTK_EDITABLE (widget), ""); widget = gtk_builder_get_object (ctx->dialog_gtkb, "password_entry"); gtk_widget_grab_focus (GTK_WIDGET (widget)); gtk_window_present (GTK_WINDOW (dialog)); return; } /* Passwords match -- success */ gtk_window_destroy (GTK_WINDOW (dialog)); g_object_unref (G_OBJECT (ctx->dialog_gtkb)); ctx->cb (password, ctx->user_data); g_free (ctx->distinct_error_message); g_free (ctx); } void dialog_get_password (gchar *info_message, gchar *password_message, gchar *confirm_message, gchar *distinct_error_message, guint minimum_length, DialogPasswordCallback cb, gpointer user_data) { GObject * widget = NULL, * password_widget = NULL; GtkBuilder * dialog_gtkb = NULL; _DialogGetPasswordCtx *ctx; dialog_gtkb = gtk_builder_new(); gtk_builder_add_from_file (dialog_gtkb, g_build_filename (PACKAGE_DATA_DIR, "gnomint", "get_password_dialog.ui", NULL ), NULL); widget = gtk_builder_get_object (dialog_gtkb, "info_message"); gtk_label_set_text (GTK_LABEL(widget), info_message); widget = gtk_builder_get_object (dialog_gtkb, "password_message"); gtk_label_set_text (GTK_LABEL(widget), password_message); widget = gtk_builder_get_object (dialog_gtkb, "confirm_message"); gtk_label_set_text (GTK_LABEL(widget), confirm_message); password_widget = gtk_builder_get_object (dialog_gtkb, "password_entry"); widget = gtk_builder_get_object (dialog_gtkb, "password_dialog_ok_button"); g_object_set_data (G_OBJECT(password_widget), "minimum_length", GINT_TO_POINTER(minimum_length)); g_object_set_data (G_OBJECT(password_widget), "ok_button", widget); ctx = g_new0 (_DialogGetPasswordCtx, 1); ctx->dialog_gtkb = dialog_gtkb; ctx->distinct_error_message = g_strdup (distinct_error_message); ctx->cb = cb; ctx->user_data = user_data; widget = gtk_builder_get_object (dialog_gtkb, "get_password_dialog"); g_signal_connect (GTK_DIALOG (widget), "response", G_CALLBACK (_dialog_get_password_response), ctx); gtk_widget_grab_focus (GTK_WIDGET (password_widget)); gtk_window_set_transient_for (GTK_WINDOW (widget), dialog_get_main_window ()); gtk_window_present (GTK_WINDOW (widget)); } G_MODULE_EXPORT void dialog_password_entry_changed_cb (GtkEditable *password_entry, gpointer user_data) { GtkWidget * button = GTK_WIDGET(g_object_get_data (G_OBJECT(password_entry), "ok_button")); guint minimum_length = GPOINTER_TO_INT (g_object_get_data (G_OBJECT(password_entry), "minimum_length")); if (strlen (gtk_editable_get_text(GTK_EDITABLE(password_entry))) >= minimum_length) gtk_widget_set_sensitive (button, TRUE); else gtk_widget_set_sensitive (button, FALSE); } /* GtkNotebook Tab-focus fix for wizard pages. * * GtkNotebook's focus() override cycles Tab within the current page * content but never reaches sibling button boxes (Help/Cancel/Next) * at the bottom of the page. This capture-phase key handler * intercepts Tab: when focus is NOT already in the button box, it * redirects focus there instead of letting the notebook wrap. */ typedef struct { GtkNotebook *notebook; GtkWidget **button_boxes; int n_pages; } NotebookFocusFixData; static GtkWidget * _find_ancestor_child_of (GtkWidget *widget, GtkWidget *ancestor) { GtkWidget *child = widget; GtkWidget *parent = gtk_widget_get_parent (child); while (parent && parent != ancestor) { child = parent; parent = gtk_widget_get_parent (child); } return (parent == ancestor) ? child : NULL; } static gboolean _notebook_tab_capture_cb (GtkEventControllerKey *ctrl, guint keyval, guint keycode, GdkModifierType state, gpointer user_data) { NotebookFocusFixData *data = user_data; GtkWidget *focused, *bbox; int page; if (keyval != GDK_KEY_Tab && keyval != GDK_KEY_ISO_Left_Tab) return FALSE; gboolean forward = !(state & GDK_SHIFT_MASK); page = gtk_notebook_get_current_page (data->notebook); if (page < 0 || page >= data->n_pages) return FALSE; bbox = data->button_boxes[page]; if (!bbox) return FALSE; focused = gtk_window_get_focus ( GTK_WINDOW (gtk_widget_get_root (GTK_WIDGET (data->notebook)))); if (!focused) return FALSE; GtkWidget *page_child = gtk_notebook_get_nth_page (data->notebook, page); if (!page_child) return FALSE; if (forward) { if (gtk_widget_is_ancestor (focused, bbox)) return FALSE; /* Find which direct child of the page contains focus. */ GtkWidget *focus_section = _find_ancestor_child_of (focused, page_child); if (!focus_section) return FALSE; /* Try to move within the current section first. */ gboolean moved = gtk_widget_child_focus (focus_section, GTK_DIR_TAB_FORWARD); GtkWidget *after = gtk_window_get_focus ( GTK_WINDOW (gtk_widget_get_root (GTK_WIDGET (data->notebook)))); if (moved && after != focused && !gtk_widget_is_ancestor (focused, after) && !gtk_widget_is_ancestor (after, focused)) return TRUE; /* Moved to a different widget. */ /* Section exhausted or focus moved within same widget tree * — try the next sibling section, then the button box. */ GtkWidget *next = gtk_widget_get_next_sibling (focus_section); while (next) { if (next == bbox) { gtk_widget_child_focus (bbox, GTK_DIR_TAB_FORWARD); return TRUE; } if (gtk_widget_child_focus (next, GTK_DIR_TAB_FORWARD)) { GtkWidget *now = gtk_window_get_focus ( GTK_WINDOW (gtk_widget_get_root (GTK_WIDGET (data->notebook)))); if (now != focused) return TRUE; } next = gtk_widget_get_next_sibling (next); } /* No more siblings — go to button box. */ gtk_widget_child_focus (bbox, GTK_DIR_TAB_FORWARD); return TRUE; } else { if (!gtk_widget_is_ancestor (focused, bbox)) return FALSE; /* Shift+Tab from button box: go to last widget before it. */ GtkWidget *prev = gtk_widget_get_prev_sibling (bbox); while (prev) { if (gtk_widget_child_focus (prev, GTK_DIR_TAB_BACKWARD)) return TRUE; prev = gtk_widget_get_prev_sibling (prev); } return FALSE; } } void dialog_notebook_fix_tab_focus (GtkNotebook *notebook, const char **button_box_ids, GtkBuilder *builder) { int n = 0; while (button_box_ids[n]) n++; NotebookFocusFixData *data = g_new0 (NotebookFocusFixData, 1); data->notebook = notebook; data->n_pages = n; data->button_boxes = g_new0 (GtkWidget *, n); for (int i = 0; i < n; i++) data->button_boxes[i] = GTK_WIDGET ( gtk_builder_get_object (builder, button_box_ids[i])); GtkEventController *kc = gtk_event_controller_key_new (); gtk_event_controller_set_propagation_phase (kc, GTK_PHASE_CAPTURE); g_signal_connect (kc, "key-pressed", G_CALLBACK (_notebook_tab_capture_cb), data); gtk_widget_add_controller (GTK_WIDGET (notebook), kc); } #endif void dialog_todo () { dialog_error (_("To do. Feature not implemented yet.")); } gnomint-1.6.4/src/preferences-window.c0000644000000000000000000000477015212761266016514 0ustar00rootroot// gnoMint: a graphical interface for managing a certification authority // Copyright (C) 2006-2009 David Marín Carreño // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #include #include #include #include #include #include #include "preferences-gui.h" #include "preferences-window.h" #include #include "dialog.h" GtkBuilder *preferences_window_gtkb = NULL; void preferences_window_display() { GtkWidget * widget = NULL; preferences_window_gtkb = gtk_builder_new(); gtk_builder_add_from_file (preferences_window_gtkb, g_build_filename (PACKAGE_DATA_DIR, "gnomint", "preferences_dialog.ui", NULL), NULL); gtk_check_button_set_active (GTK_CHECK_BUTTON(gtk_builder_get_object(preferences_window_gtkb, "gnomekeyring_export_check")), preferences_get_gnome_keyring_export()); widget = GTK_WIDGET(gtk_builder_get_object (preferences_window_gtkb, "preferences_dialog")); gtk_window_set_transient_for (GTK_WINDOW (widget), dialog_get_main_window ()); gtk_widget_set_visible(widget, TRUE); } G_MODULE_EXPORT void preferences_window_gnomekeyring_export_toggled (GtkCheckButton *togglebutton, gpointer user_data) { gboolean new_status = gtk_check_button_get_active (togglebutton); gboolean current_status = preferences_get_gnome_keyring_export(); if (new_status != current_status) preferences_set_gnome_keyring_export (new_status); } G_MODULE_EXPORT void preferences_window_ok_button_clicked_cb (GtkButton *button, gpointer user_data) { GtkWidget *widget = GTK_WIDGET(gtk_builder_get_object (preferences_window_gtkb, "preferences_dialog")); gtk_window_destroy(GTK_WINDOW(widget)); } gnomint-1.6.4/src/tls.c0000644000000000000000000021406315212761266013506 0ustar00rootroot// gnoMint: a graphical interface for managing a certification authority // Copyright (C) 2006-2009 David Marín Carreño // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #include #include #include #include #ifdef _WIN32 #include #include #else #include #endif #include #include "uint160.h" #include "time64_check.h" #include "tls.h" void tls_init () { gnutls_global_init (); } /* Helper function to parse and add Subject Alternative Names to a certificate * san_string format: "DNS:example.com,DNS:*.example.com,IP:192.168.1.1,EMAIL:admin@example.com" * Returns 0 on success, -1 on error */ static gint tls_add_san_to_cert (gnutls_x509_crt_t crt, const gchar *san_string) { if (!san_string || !san_string[0]) return 0; gchar **san_entries = g_strsplit(san_string, ",", -1); gint i, result = 0; for (i = 0; san_entries[i] != NULL; i++) { gchar *entry = g_strstrip(san_entries[i]); if (!entry || !entry[0]) continue; gchar **parts = g_strsplit(entry, ":", 2); if (!parts[0] || !parts[1]) { g_strfreev(parts); continue; } gchar *type = g_strstrip(parts[0]); gchar *value = g_strstrip(parts[1]); if (g_ascii_strcasecmp(type, "DNS") == 0) { result = gnutls_x509_crt_set_subject_alt_name(crt, GNUTLS_SAN_DNSNAME, value, strlen(value), GNUTLS_FSAN_APPEND); } else if (g_ascii_strcasecmp(type, "IP") == 0) { // Parse IP address (supports both IPv4 and IPv6) and convert to binary struct in_addr ipv4_addr; struct in6_addr ipv6_addr; // Try IPv4 first if (inet_pton(AF_INET, value, &ipv4_addr) == 1) { result = gnutls_x509_crt_set_subject_alt_name(crt, GNUTLS_SAN_IPADDRESS, &ipv4_addr, sizeof(ipv4_addr), GNUTLS_FSAN_APPEND); } // Try IPv6 if IPv4 failed else if (inet_pton(AF_INET6, value, &ipv6_addr) == 1) { result = gnutls_x509_crt_set_subject_alt_name(crt, GNUTLS_SAN_IPADDRESS, &ipv6_addr, sizeof(ipv6_addr), GNUTLS_FSAN_APPEND); } // Invalid IP address format else { result = -1; } } else if (g_ascii_strcasecmp(type, "EMAIL") == 0 || g_ascii_strcasecmp(type, "RFC822") == 0) { result = gnutls_x509_crt_set_subject_alt_name(crt, GNUTLS_SAN_RFC822NAME, value, strlen(value), GNUTLS_FSAN_APPEND); } else if (g_ascii_strcasecmp(type, "URI") == 0) { result = gnutls_x509_crt_set_subject_alt_name(crt, GNUTLS_SAN_URI, value, strlen(value), GNUTLS_FSAN_APPEND); } g_strfreev(parts); if (result < 0) { g_strfreev(san_entries); return -1; } } g_strfreev(san_entries); return 0; } /* Helper function to parse and add Subject Alternative Names to a CSR * san_string format: "DNS:example.com,DNS:*.example.com,IP:192.168.1.1,EMAIL:admin@example.com" * Returns 0 on success, -1 on error */ static gint tls_add_san_to_crq (gnutls_x509_crq_t crq, const gchar *san_string) { if (!san_string || !san_string[0]) return 0; gchar **san_entries = g_strsplit(san_string, ",", -1); gint i, result = 0; for (i = 0; san_entries[i] != NULL; i++) { gchar *entry = g_strstrip(san_entries[i]); if (!entry || !entry[0]) continue; gchar **parts = g_strsplit(entry, ":", 2); if (!parts[0] || !parts[1]) { g_strfreev(parts); continue; } gchar *type = g_strstrip(parts[0]); gchar *value = g_strstrip(parts[1]); if (g_ascii_strcasecmp(type, "DNS") == 0) { result = gnutls_x509_crq_set_subject_alt_name(crq, GNUTLS_SAN_DNSNAME, value, strlen(value), GNUTLS_FSAN_APPEND); } else if (g_ascii_strcasecmp(type, "IP") == 0) { // Parse IP address (supports both IPv4 and IPv6) and convert to binary struct in_addr ipv4_addr; struct in6_addr ipv6_addr; // Try IPv4 first if (inet_pton(AF_INET, value, &ipv4_addr) == 1) { result = gnutls_x509_crq_set_subject_alt_name(crq, GNUTLS_SAN_IPADDRESS, &ipv4_addr, sizeof(ipv4_addr), GNUTLS_FSAN_APPEND); } // Try IPv6 if IPv4 failed else if (inet_pton(AF_INET6, value, &ipv6_addr) == 1) { result = gnutls_x509_crq_set_subject_alt_name(crq, GNUTLS_SAN_IPADDRESS, &ipv6_addr, sizeof(ipv6_addr), GNUTLS_FSAN_APPEND); } // Invalid IP address format else { result = -1; } } else if (g_ascii_strcasecmp(type, "EMAIL") == 0 || g_ascii_strcasecmp(type, "RFC822") == 0) { result = gnutls_x509_crq_set_subject_alt_name(crq, GNUTLS_SAN_RFC822NAME, value, strlen(value), GNUTLS_FSAN_APPEND); } else if (g_ascii_strcasecmp(type, "URI") == 0) { result = gnutls_x509_crq_set_subject_alt_name(crq, GNUTLS_SAN_URI, value, strlen(value), GNUTLS_FSAN_APPEND); } g_strfreev(parts); if (result < 0) { g_strfreev(san_entries); return -1; } } g_strfreev(san_entries); return 0; } gchar * tls_generate_rsa_keys (TlsCreationData *creation_data, gchar ** private_key, gnutls_x509_privkey_t **key) { size_t private_key_len = 0; gint error; (*key) = g_new0 (gnutls_x509_privkey_t, 1); if (gnutls_x509_privkey_init (*key) < 0) { return g_strdup_printf(_("Error initializing private key structure.")); } /* Generate a RSA private key. */ error = gnutls_x509_privkey_generate ((** key), GNUTLS_PK_RSA, creation_data->key_bitlength, 0); if (error < 0) { return g_strdup_printf(_("Error creating private key: %d"), error); } /* Calculate private key length */ (* private_key) = NULL; gnutls_x509_privkey_export ((** key), GNUTLS_X509_FMT_PEM, (* private_key), &private_key_len); /* Save the private key to a PEM format */ (* private_key) = g_new0 (gchar, private_key_len); if (gnutls_x509_privkey_export ((** key), GNUTLS_X509_FMT_PEM, (* private_key), &private_key_len) < 0) { return g_strdup_printf(_("Error exporting private key to PEM structure.")); } return NULL; } gchar * tls_generate_dsa_keys (TlsCreationData *creation_data, gchar ** private_key, gnutls_x509_privkey_t **key) { size_t private_key_len = 0; gint error; (*key) = g_new0 (gnutls_x509_privkey_t, 1); if (gnutls_x509_privkey_init (*key) < 0) { return g_strdup_printf(_("Error initializing private key structure.")); } /* Generate DSA private key. */ error = gnutls_x509_privkey_generate ((** key), GNUTLS_PK_DSA, creation_data->key_bitlength, 0); if (error < 0) { return g_strdup_printf(_("Error creating private key: %d"), error); } /* Calculate private key length */ (* private_key) = NULL; gnutls_x509_privkey_export ((** key), GNUTLS_X509_FMT_PEM, (* private_key), &private_key_len); /* Save the private key to a PEM format */ (* private_key) = g_new0 (gchar, private_key_len); if (gnutls_x509_privkey_export ((** key), GNUTLS_X509_FMT_PEM, (* private_key), &private_key_len) < 0) { return g_strdup_printf(_("Error exporting private key to PEM structure.")); } return NULL; } /* ECDSA keypair on a NIST prime curve. creation_data->key_bitlength * selects the curve: 256 → SECP256R1 (P-256), 384 → SECP384R1 (P-384), * 521 → SECP521R1 (P-521). Anything else falls back to P-256. */ gchar * tls_generate_ecdsa_keys (TlsCreationData *creation_data, gchar **private_key, gnutls_x509_privkey_t **key) { size_t private_key_len = 0; gint error; gnutls_ecc_curve_t curve; switch (creation_data->key_bitlength) { case 384: curve = GNUTLS_ECC_CURVE_SECP384R1; break; case 521: curve = GNUTLS_ECC_CURVE_SECP521R1; break; case 256: default: curve = GNUTLS_ECC_CURVE_SECP256R1; break; } *key = g_new0 (gnutls_x509_privkey_t, 1); if (gnutls_x509_privkey_init (*key) < 0) return g_strdup_printf (_("Error initializing private key structure.")); error = gnutls_x509_privkey_generate (**key, GNUTLS_PK_ECDSA, GNUTLS_CURVE_TO_BITS (curve), 0); if (error < 0) return g_strdup_printf (_("Error creating private key: %d"), error); *private_key = NULL; gnutls_x509_privkey_export (**key, GNUTLS_X509_FMT_PEM, *private_key, &private_key_len); *private_key = g_new0 (gchar, private_key_len); if (gnutls_x509_privkey_export (**key, GNUTLS_X509_FMT_PEM, *private_key, &private_key_len) < 0) return g_strdup_printf (_("Error exporting private key to PEM structure.")); return NULL; } /* Ed25519 keypair. key_bitlength is ignored — Ed25519 is a fixed * 256-bit curve; we always pick it. Ed448 is rarely useful in practice * and there's no UI knob for it yet. */ gchar * tls_generate_eddsa_keys (TlsCreationData *creation_data G_GNUC_UNUSED, gchar **private_key, gnutls_x509_privkey_t **key) { size_t private_key_len = 0; gint error; *key = g_new0 (gnutls_x509_privkey_t, 1); if (gnutls_x509_privkey_init (*key) < 0) return g_strdup_printf (_("Error initializing private key structure.")); error = gnutls_x509_privkey_generate (**key, GNUTLS_PK_EDDSA_ED25519, 0, 0); if (error < 0) return g_strdup_printf (_("Error creating private key: %d"), error); *private_key = NULL; gnutls_x509_privkey_export_pkcs8 (**key, GNUTLS_X509_FMT_PEM, NULL, GNUTLS_PKCS_PLAIN, *private_key, &private_key_len); *private_key = g_new0 (gchar, private_key_len); if (gnutls_x509_privkey_export_pkcs8 (**key, GNUTLS_X509_FMT_PEM, NULL, GNUTLS_PKCS_PLAIN, *private_key, &private_key_len) < 0) return g_strdup_printf (_("Error exporting private key to PEM structure.")); return NULL; } gchar * tls_generate_pkcs8_encrypted_private_key (gchar *pem_private_key, gchar *passphrase) { gnutls_datum_t pem_datum; gchar *pkcs8_private_key = NULL; size_t pkcs8_private_key_len = 0; gnutls_x509_privkey_t key; pem_datum.data = (unsigned char *) pem_private_key; pem_datum.size = strlen(pem_private_key); if (gnutls_x509_privkey_init (&key) < 0) { return NULL; } /* Import PEM private key into internal structure. */ if (gnutls_x509_privkey_import (key, &pem_datum, GNUTLS_X509_FMT_PEM) < 0) { gnutls_x509_privkey_deinit (key); return NULL; } /* Calculate pkcs8 length */ pkcs8_private_key = NULL; gnutls_x509_privkey_export_pkcs8 (key, GNUTLS_X509_FMT_PEM, passphrase, GNUTLS_PKCS_USE_PKCS12_3DES, pkcs8_private_key, &pkcs8_private_key_len); /* Save the private key to a PEM format */ pkcs8_private_key = g_new0 (gchar, pkcs8_private_key_len); if (gnutls_x509_privkey_export_pkcs8 (key, GNUTLS_X509_FMT_PEM, passphrase, GNUTLS_PKCS_USE_PKCS12_3DES, pkcs8_private_key, &pkcs8_private_key_len) < 0) { gnutls_x509_privkey_deinit (key); return NULL; } gnutls_x509_privkey_deinit (key); return pkcs8_private_key; } gchar * tls_load_pkcs8_private_key (gchar *pkcs8_pem, gchar *passphrase, const gchar *cert_key_id, gint *error) { gnutls_datum_t pkcs8_datum; gchar * pem_private_key = NULL; size_t pem_private_key_len = 0; gnutls_x509_privkey_t key; gchar * pkey_key_id = NULL; size_t pkey_key_id_len = 0; guchar * uaux; guint i; pkcs8_datum.data = (unsigned char *) pkcs8_pem; pkcs8_datum.size = strlen (pkcs8_pem); if (gnutls_x509_privkey_init (&key) < 0) { return NULL; } *error = gnutls_x509_privkey_import_pkcs8 (key, &pkcs8_datum, GNUTLS_X509_FMT_PEM, passphrase, 0); if (*error) { gnutls_x509_privkey_deinit (key); return NULL; } /* Calculate private key length */ pem_private_key = g_new0 (gchar, 1); gnutls_x509_privkey_export (key, GNUTLS_X509_FMT_PEM, pem_private_key, &pem_private_key_len); g_free (pem_private_key); /* Save the private key to a PEM format */ pem_private_key = g_new0 (gchar, pem_private_key_len); if (gnutls_x509_privkey_export (key, GNUTLS_X509_FMT_PEM, pem_private_key, &pem_private_key_len) < 0) { g_free (pem_private_key); gnutls_x509_privkey_deinit (key); return NULL; } uaux = NULL; pkey_key_id_len = 0; gnutls_x509_privkey_get_key_id (key, 0, uaux, &pkey_key_id_len); uaux = g_new0(guchar, pkey_key_id_len); if (gnutls_x509_privkey_get_key_id (key, 0, uaux, &pkey_key_id_len)) { g_free (uaux); g_free (pem_private_key); gnutls_x509_privkey_deinit (key); return NULL; } pkey_key_id = g_new0(gchar, pkey_key_id_len*3); for (i=0; idata = (unsigned char *) pkcs12_struct; pkcs12_datum->size = pkcs12_struct_size; return pkcs12_datum; } gchar * tls_generate_self_signed_certificate (TlsCreationData * creation_data, gnutls_x509_privkey_t *key, gchar ** certificate) { gnutls_x509_crt_t crt; UInt160 *sn = uint160_new(); guchar * keyid = NULL; size_t keyidsize = 0; guchar * serialstr = NULL; size_t serialsize = 0; size_t certificate_len = 0; uint160_assign (sn, G_GUINT64_CONSTANT(1)); if (gnutls_x509_crt_init (&crt) < 0) { uint160_free (sn); return g_strdup_printf(_("Error when initializing certificate structure")); } if (gnutls_x509_crt_set_version (crt, 3) < 0){ gnutls_x509_crt_deinit (crt); uint160_free (sn); return g_strdup_printf(_("Error when setting certificate version")); } uint160_write (sn, NULL, &serialsize); serialstr = g_new0 (guchar, serialsize); uint160_write (sn, serialstr, &serialsize); if (gnutls_x509_crt_set_serial (crt, serialstr, serialsize) < 0) { gnutls_x509_crt_deinit (crt); uint160_free (sn); return g_strdup_printf(_("Error when setting certificate serial number")); } g_free (serialstr); uint160_free (sn); if (gnutls_x509_crt_set_activation_time (crt, creation_data->activation) < 0) { gnutls_x509_crt_deinit (crt); return g_strdup_printf(_("Error when setting activation time")); } if (gnutls_x509_crt_set_expiration_time (crt, creation_data->expiration) < 0) { gnutls_x509_crt_deinit (crt); return g_strdup_printf(_("Error when setting expiration time")); } gnutls_x509_crt_set_key (crt, (* key)); if (creation_data->country) { gnutls_x509_crt_set_dn_by_oid (crt, GNUTLS_OID_X520_COUNTRY_NAME, 0, creation_data->country, strlen(creation_data->country)); gnutls_x509_crt_set_issuer_dn_by_oid (crt, GNUTLS_OID_X520_COUNTRY_NAME, 0, creation_data->country, strlen(creation_data->country)); } if (creation_data->state) { gnutls_x509_crt_set_dn_by_oid (crt, GNUTLS_OID_X520_STATE_OR_PROVINCE_NAME, 0, creation_data->state, strlen(creation_data->state)); gnutls_x509_crt_set_issuer_dn_by_oid (crt, GNUTLS_OID_X520_STATE_OR_PROVINCE_NAME, 0, creation_data->state, strlen(creation_data->state)); } if (creation_data->city) { gnutls_x509_crt_set_dn_by_oid (crt, GNUTLS_OID_X520_LOCALITY_NAME, 0, creation_data->city, strlen(creation_data->city)); gnutls_x509_crt_set_issuer_dn_by_oid (crt, GNUTLS_OID_X520_LOCALITY_NAME, 0, creation_data->city, strlen(creation_data->city)); } if (creation_data->org) { gnutls_x509_crt_set_dn_by_oid (crt, GNUTLS_OID_X520_ORGANIZATION_NAME, 0, creation_data->org, strlen(creation_data->org)); gnutls_x509_crt_set_issuer_dn_by_oid (crt, GNUTLS_OID_X520_ORGANIZATION_NAME, 0, creation_data->org, strlen(creation_data->org)); } if (creation_data->ou) { gnutls_x509_crt_set_dn_by_oid (crt, GNUTLS_OID_X520_ORGANIZATIONAL_UNIT_NAME, 0, creation_data->ou, strlen(creation_data->ou)); gnutls_x509_crt_set_issuer_dn_by_oid (crt, GNUTLS_OID_X520_ORGANIZATIONAL_UNIT_NAME, 0, creation_data->ou, strlen(creation_data->ou)); } if (creation_data->cn) { gnutls_x509_crt_set_dn_by_oid (crt, GNUTLS_OID_X520_COMMON_NAME, 0, creation_data->cn, strlen(creation_data->cn)); gnutls_x509_crt_set_issuer_dn_by_oid (crt, GNUTLS_OID_X520_COMMON_NAME, 0, creation_data->cn, strlen(creation_data->cn)); } if (creation_data->emailAddress) { gnutls_x509_crt_set_dn_by_oid (crt, GNUTLS_OID_PKCS9_EMAIL, 0, creation_data->emailAddress, strlen (creation_data->emailAddress)); gnutls_x509_crt_set_issuer_dn_by_oid (crt, GNUTLS_OID_PKCS9_EMAIL, 0, creation_data->emailAddress, strlen (creation_data->emailAddress)); } if (gnutls_x509_crt_set_ca_status (crt, 1) != 0) { gnutls_x509_crt_deinit (crt); return g_strdup_printf(_("Error when setting basicConstraint extension")); } if (gnutls_x509_crt_set_key_usage (crt, GNUTLS_KEY_KEY_CERT_SIGN | GNUTLS_KEY_CRL_SIGN) != 0) { gnutls_x509_crt_deinit (crt); return g_strdup_printf(_("Error when setting keyUsage extension")); } if (creation_data->crl_distribution_point) { gnutls_x509_crt_set_crl_dist_points (crt, GNUTLS_SAN_URI, creation_data->crl_distribution_point, 0); } // Add Subject Alternative Names if provided if (creation_data->subject_alt_name && creation_data->subject_alt_name[0]) { if (tls_add_san_to_cert(crt, creation_data->subject_alt_name) < 0) { gnutls_x509_crt_deinit (crt); return g_strdup_printf(_("Error when setting Subject Alternative Name extension")); } } keyid = g_new0 (guchar,1); gnutls_x509_crt_get_key_id(crt, 0, keyid, &keyidsize); g_free (keyid); keyid = g_new0 (guchar,keyidsize); gnutls_x509_crt_get_key_id(crt, 0, keyid, &keyidsize); if (gnutls_x509_crt_set_subject_key_id(crt, keyid, keyidsize) !=0) { gnutls_x509_crt_deinit (crt); return g_strdup_printf(_("Error when setting subject key identifier extension")); } if (gnutls_x509_crt_set_authority_key_id(crt, keyid, keyidsize) !=0) { gnutls_x509_crt_deinit (crt); return g_strdup_printf(_("Error when setting authority key identifier extension")); } // __add_ext (certificate, NID_netscape_cert_type, "sslCA"); // //__add_ext (certificate, NID_netscape_comment, "gnoMint Generated Certificate"); if (gnutls_x509_crt_sign2(crt, crt, (* key), GNUTLS_DIG_SHA512, 0)) { gnutls_x509_crt_deinit (crt); return g_strdup_printf(_("Error when signing self-signed certificate")); } /* Calculate certificate length */ (* certificate) = g_new0 (gchar, 1); gnutls_x509_crt_export (crt, GNUTLS_X509_FMT_PEM, (* certificate), &certificate_len); g_free (* certificate); /* Save the private key to a PEM format */ (* certificate) = g_new0 (gchar, certificate_len); if (gnutls_x509_crt_export (crt, GNUTLS_X509_FMT_PEM, (* certificate), &certificate_len) < 0) { gnutls_x509_crt_deinit (crt); return g_strdup_printf(_("Error exporting private key to PEM structure.")); } gnutls_x509_crt_deinit (crt); return NULL; } gchar * tls_generate_csr (TlsCreationData * creation_data, gnutls_x509_privkey_t *key, gchar ** csr) { gnutls_x509_crq_t crq; size_t csr_len = 0; gnutls_privkey_t pkey; if (gnutls_privkey_init(&pkey) < 0) { return g_strdup_printf(_("Error when initializing privkey structure")); } if (gnutls_privkey_import_x509(pkey, (* key), 0) < 0) { return g_strdup_printf(_("Error when importing private key into privkey structure")); } if (gnutls_x509_crq_init (&crq) < 0) { return g_strdup_printf(_("Error when initializing csr structure")); } if (gnutls_x509_crq_set_version (crq, 1) < 0){ return g_strdup_printf(_("Error when setting csr version")); } gnutls_x509_crq_set_key (crq, (* key)); if (creation_data->country) { gnutls_x509_crq_set_dn_by_oid (crq, GNUTLS_OID_X520_COUNTRY_NAME, 0, creation_data->country, strlen(creation_data->country)); } if (creation_data->state) { gnutls_x509_crq_set_dn_by_oid (crq, GNUTLS_OID_X520_STATE_OR_PROVINCE_NAME, 0, creation_data->state, strlen(creation_data->state)); } if (creation_data->city) { gnutls_x509_crq_set_dn_by_oid (crq, GNUTLS_OID_X520_LOCALITY_NAME, 0, creation_data->city, strlen(creation_data->city)); } if (creation_data->org) { gnutls_x509_crq_set_dn_by_oid (crq, GNUTLS_OID_X520_ORGANIZATION_NAME, 0, creation_data->org, strlen(creation_data->org)); } if (creation_data->ou) { gnutls_x509_crq_set_dn_by_oid (crq, GNUTLS_OID_X520_ORGANIZATIONAL_UNIT_NAME, 0, creation_data->ou, strlen(creation_data->ou)); } if (creation_data->cn) { gnutls_x509_crq_set_dn_by_oid (crq, GNUTLS_OID_X520_COMMON_NAME, 0, creation_data->cn, strlen(creation_data->cn)); } if (creation_data->emailAddress) { gnutls_x509_crq_set_dn_by_oid (crq, GNUTLS_OID_PKCS9_EMAIL, 0, creation_data->emailAddress, strlen (creation_data->emailAddress)); } // Add Subject Alternative Names if provided if (creation_data->subject_alt_name && creation_data->subject_alt_name[0]) { if (tls_add_san_to_crq(crq, creation_data->subject_alt_name) < 0) { return g_strdup_printf(_("Error when setting Subject Alternative Name extension")); } } if (gnutls_x509_crq_privkey_sign(crq, pkey, GNUTLS_DIG_SHA512, 0)) { return g_strdup_printf(_("Error when signing self-signed csr")); } /* Calculate csr length */ (* csr) = g_new0 (gchar, 1); gnutls_x509_crq_export (crq, GNUTLS_X509_FMT_PEM, (* csr), &csr_len); g_free (* csr); /* Save the private key to a PEM format */ (* csr) = g_new0 (gchar, csr_len); if (gnutls_x509_crq_export (crq, GNUTLS_X509_FMT_PEM, (* csr), &csr_len) < 0) { return g_strdup_printf(_("Error exporting CSR to PEM structure.")); } gnutls_x509_crq_deinit (crq); return NULL; } gchar * tls_generate_certificate (TlsCertCreationData * creation_data, gchar *csr_pem, gchar *ca_cert_pem, gchar *ca_priv_key_pem, gchar **certificate) { gnutls_datum_t csr_pem_datum, ca_cert_pem_datum, ca_priv_key_pem_datum; gnutls_x509_crt_t crt; gnutls_x509_crq_t csr; gnutls_x509_crt_t ca_crt; gnutls_x509_privkey_t ca_pkey; guchar * serialstr = NULL; guchar * keyid = NULL; guchar * ca_keyid = NULL; size_t keyidsize = 0; size_t ca_keyidsize = 0; size_t serialsize = 0; gint key_usage; size_t certificate_len = 0; TlsCert *ca_cert_data = tls_parse_cert_pem (ca_cert_pem); csr_pem_datum.data = (unsigned char *) csr_pem; csr_pem_datum.size = strlen(csr_pem); ca_cert_pem_datum.data = (unsigned char *) ca_cert_pem; ca_cert_pem_datum.size = strlen(ca_cert_pem); ca_priv_key_pem_datum.data = (unsigned char *) ca_priv_key_pem; ca_priv_key_pem_datum.size = strlen(ca_priv_key_pem); gnutls_x509_crq_init (&csr); gnutls_x509_crq_import (csr, &csr_pem_datum, GNUTLS_X509_FMT_PEM); gnutls_x509_crt_init (&ca_crt); gnutls_x509_crt_import (ca_crt, &ca_cert_pem_datum, GNUTLS_X509_FMT_PEM); gnutls_x509_privkey_init (&ca_pkey); if (gnutls_x509_privkey_import2 (ca_pkey, &ca_priv_key_pem_datum, GNUTLS_X509_FMT_PEM, NULL, 0) < 0) { gnutls_x509_crq_deinit (csr); gnutls_x509_crt_deinit (ca_crt); gnutls_x509_privkey_deinit (ca_pkey); return g_strdup_printf(_("Error when importing CA private key")); } if (gnutls_x509_crt_init (&crt) < 0) { gnutls_x509_crq_deinit (csr); gnutls_x509_crt_deinit (ca_crt); gnutls_x509_privkey_deinit (ca_pkey); return g_strdup_printf(_("Error when initializing crt structure")); } if (gnutls_x509_crt_set_crq (crt, csr) < 0) { gnutls_x509_crq_deinit (csr); gnutls_x509_crt_deinit (crt); gnutls_x509_crt_deinit (ca_crt); gnutls_x509_privkey_deinit (ca_pkey); return g_strdup_printf(_("Error when copying data from CSR to certificate structure")); } if (gnutls_x509_crt_set_version (crt, 3) < 0){ gnutls_x509_crq_deinit (csr); gnutls_x509_crt_deinit (crt); gnutls_x509_crt_deinit (ca_crt); gnutls_x509_privkey_deinit (ca_pkey); return g_strdup_printf(_("Error when setting certificate version")); } uint160_write (&creation_data->serial, NULL, &serialsize); serialstr = g_new0 (guchar, serialsize); uint160_write (&creation_data->serial, serialstr, &serialsize); if (gnutls_x509_crt_set_serial (crt, serialstr, serialsize) < 0) { g_free (serialstr); gnutls_x509_crq_deinit (csr); gnutls_x509_crt_deinit (crt); gnutls_x509_crt_deinit (ca_crt); gnutls_x509_privkey_deinit (ca_pkey); return g_strdup_printf(_("Error when setting certificate serial number")); } g_free (serialstr); if (gnutls_x509_crt_set_activation_time (crt, creation_data->activation) < 0) { gnutls_x509_crq_deinit (csr); gnutls_x509_crt_deinit (crt); gnutls_x509_crt_deinit (ca_crt); gnutls_x509_privkey_deinit (ca_pkey); return g_strdup_printf(_("Error when setting activation time")); } if (gnutls_x509_crt_set_expiration_time (crt, creation_data->expiration) < 0) { gnutls_x509_crq_deinit (csr); gnutls_x509_crt_deinit (crt); gnutls_x509_crt_deinit (ca_crt); gnutls_x509_privkey_deinit (ca_pkey); return g_strdup_printf(_("Error when setting expiration time")); } if (ca_cert_data->c) gnutls_x509_crt_set_issuer_dn_by_oid (crt, GNUTLS_OID_X520_COUNTRY_NAME, 0, ca_cert_data->c, strlen(ca_cert_data->c)); if (ca_cert_data->st) gnutls_x509_crt_set_issuer_dn_by_oid (crt, GNUTLS_OID_X520_STATE_OR_PROVINCE_NAME, 0, ca_cert_data->st, strlen(ca_cert_data->st)); if (ca_cert_data->l) gnutls_x509_crt_set_issuer_dn_by_oid (crt, GNUTLS_OID_X520_LOCALITY_NAME, 0, ca_cert_data->l, strlen(ca_cert_data->l)); if (ca_cert_data->o) gnutls_x509_crt_set_issuer_dn_by_oid (crt, GNUTLS_OID_X520_ORGANIZATION_NAME, 0, ca_cert_data->o, strlen(ca_cert_data->o)); if (ca_cert_data->ou) gnutls_x509_crt_set_issuer_dn_by_oid (crt, GNUTLS_OID_X520_ORGANIZATIONAL_UNIT_NAME, 0, ca_cert_data->ou, strlen(ca_cert_data->ou)); if (ca_cert_data->cn) gnutls_x509_crt_set_issuer_dn_by_oid (crt, GNUTLS_OID_X520_COMMON_NAME, 0, ca_cert_data->cn, strlen(ca_cert_data->cn)); if (ca_cert_data->emailAddress) gnutls_x509_crt_set_issuer_dn_by_oid (crt, GNUTLS_OID_PKCS9_EMAIL, 0, ca_cert_data->emailAddress, strlen (ca_cert_data->emailAddress)); ca_keyid = g_new0 (guchar,1); gnutls_x509_crt_get_subject_key_id(ca_crt, ca_keyid, &ca_keyidsize, NULL); g_free (ca_keyid); if (ca_keyidsize) { ca_keyid = g_new0 (guchar,ca_keyidsize); gnutls_x509_crt_get_subject_key_id(ca_crt, ca_keyid, &ca_keyidsize, NULL); if (gnutls_x509_crt_set_authority_key_id(crt, ca_keyid, ca_keyidsize) !=0) { gnutls_x509_crq_deinit (csr); gnutls_x509_crt_deinit (crt); gnutls_x509_crt_deinit (ca_crt); gnutls_x509_privkey_deinit (ca_pkey); return g_strdup_printf(_("Error when setting authority key identifier extension")); } } if (gnutls_x509_crt_set_ca_status (crt, creation_data->ca) != 0) { gnutls_x509_crq_deinit (csr); gnutls_x509_crt_deinit (crt); gnutls_x509_crt_deinit (ca_crt); gnutls_x509_privkey_deinit (ca_pkey); return g_strdup_printf(_("Error when setting basicConstraint extension")); } if (creation_data->ca) { keyid = g_new0 (guchar,1); gnutls_x509_crt_get_key_id(crt, 0, keyid, &keyidsize); g_free (keyid); keyid = g_new0 (guchar,keyidsize); gnutls_x509_crt_get_key_id(crt, 0, keyid, &keyidsize); if (gnutls_x509_crt_set_subject_key_id(crt, keyid, keyidsize) !=0) { gnutls_x509_crq_deinit (csr); gnutls_x509_crt_deinit (crt); gnutls_x509_crt_deinit (ca_crt); gnutls_x509_privkey_deinit (ca_pkey); return g_strdup_printf(_("Error when setting subject key identifier extension")); } } key_usage = 0; if (creation_data->ca) key_usage |= GNUTLS_KEY_KEY_CERT_SIGN; if (creation_data->crl_signing) key_usage |= GNUTLS_KEY_CRL_SIGN; if (creation_data->digital_signature) key_usage |= GNUTLS_KEY_DIGITAL_SIGNATURE; if (creation_data->data_encipherment) key_usage |= GNUTLS_KEY_DATA_ENCIPHERMENT; if (creation_data->key_encipherment) key_usage |= GNUTLS_KEY_KEY_ENCIPHERMENT; if (creation_data->non_repudiation) key_usage |= GNUTLS_KEY_NON_REPUDIATION; if (creation_data->key_agreement) key_usage |= GNUTLS_KEY_KEY_AGREEMENT; if (gnutls_x509_crt_set_key_usage (crt, key_usage) != 0) { gnutls_x509_crq_deinit (csr); gnutls_x509_crt_deinit (crt); gnutls_x509_crt_deinit (ca_crt); gnutls_x509_privkey_deinit (ca_pkey); return g_strdup_printf(_("Error when setting keyUsage extension")); } if (creation_data->email_protection) gnutls_x509_crt_set_key_purpose_oid (crt, GNUTLS_KP_EMAIL_PROTECTION, FALSE); if (creation_data->code_signing) gnutls_x509_crt_set_key_purpose_oid (crt, GNUTLS_KP_CODE_SIGNING, FALSE); if (creation_data->web_client) gnutls_x509_crt_set_key_purpose_oid (crt, GNUTLS_KP_TLS_WWW_CLIENT, FALSE); if (creation_data->web_server) gnutls_x509_crt_set_key_purpose_oid (crt, GNUTLS_KP_TLS_WWW_SERVER, FALSE); if (creation_data->time_stamping) gnutls_x509_crt_set_key_purpose_oid (crt, GNUTLS_KP_TIME_STAMPING, FALSE); if (creation_data->ocsp_signing) gnutls_x509_crt_set_key_purpose_oid (crt, GNUTLS_KP_OCSP_SIGNING, FALSE); if (creation_data->any_purpose) gnutls_x509_crt_set_key_purpose_oid (crt, GNUTLS_KP_ANY, FALSE); if (creation_data->crl_distribution_point && creation_data->crl_distribution_point[0]) gnutls_x509_crt_set_crl_dist_points (crt, GNUTLS_SAN_URI, creation_data->crl_distribution_point, 0); else gnutls_x509_crt_cpy_crl_dist_points (crt, ca_crt); // Add Subject Alternative Names // If explicitly provided in creation_data, use those; otherwise try to copy from CSR if (creation_data->subject_alt_name && creation_data->subject_alt_name[0]) { if (tls_add_san_to_cert(crt, creation_data->subject_alt_name) < 0) { gnutls_x509_crq_deinit (csr); gnutls_x509_crt_deinit (crt); gnutls_x509_crt_deinit (ca_crt); gnutls_x509_privkey_deinit (ca_pkey); return g_strdup_printf(_("Error when setting Subject Alternative Name extension")); } } else { // Try to copy SANs from CSR gint san_idx = 0; gboolean san_error = FALSE; while (1) { // First, query the size needed size_t san_size = 0; guint san_type = 0; gint result = gnutls_x509_crq_get_subject_alt_name(csr, san_idx, NULL, &san_size, &san_type, NULL); if (result == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE || result == GNUTLS_E_UNKNOWN_ALGORITHM) break; if (result < 0 && result != GNUTLS_E_SHORT_MEMORY_BUFFER) break; // Allocate buffer for the SAN (with null terminator for safety) gchar *san_buffer = g_new0(gchar, san_size + 1); size_t actual_size = san_size; result = gnutls_x509_crq_get_subject_alt_name(csr, san_idx, san_buffer, &actual_size, &san_type, NULL); if (result < 0) { g_free(san_buffer); break; } // Copy this SAN to the certificate if (gnutls_x509_crt_set_subject_alt_name(crt, san_type, san_buffer, actual_size, GNUTLS_FSAN_APPEND) < 0) { g_free(san_buffer); san_error = TRUE; break; } g_free(san_buffer); san_idx++; } // SANs from CSR are best-effort; if none copied, that's OK (void)san_error; // Suppress unused variable warning } { int ca_pk = gnutls_x509_privkey_get_pk_algorithm (ca_pkey); gnutls_digest_algorithm_t dig; if (ca_pk == GNUTLS_PK_EDDSA_ED25519) dig = GNUTLS_DIG_SHA512; else if (ca_pk == GNUTLS_PK_ECDSA) dig = GNUTLS_DIG_SHA256; else dig = GNUTLS_DIG_SHA512; gnutls_privkey_t abstract_key; gnutls_privkey_init (&abstract_key); gnutls_privkey_import_x509 (abstract_key, ca_pkey, 0); int sign_err = gnutls_x509_crt_privkey_sign (crt, ca_crt, abstract_key, dig, 0); gnutls_privkey_deinit (abstract_key); if (sign_err) { gchar *msg = g_strdup_printf ( _("Error when signing certificate: %s"), gnutls_strerror (sign_err)); gnutls_x509_crq_deinit (csr); gnutls_x509_crt_deinit (crt); gnutls_x509_crt_deinit (ca_crt); gnutls_x509_privkey_deinit (ca_pkey); return msg; } } /* Calculate certificate length */ (* certificate) = g_new0 (gchar, 1); gnutls_x509_crt_export (crt, GNUTLS_X509_FMT_PEM, (* certificate), &certificate_len); g_free (* certificate); /* Save the private key to a PEM format */ (* certificate) = g_new0 (gchar, certificate_len); if (gnutls_x509_crt_export (crt, GNUTLS_X509_FMT_PEM, (* certificate), &certificate_len) < 0) { gnutls_x509_crq_deinit (csr); gnutls_x509_crt_deinit (crt); gnutls_x509_crt_deinit (ca_crt); gnutls_x509_privkey_deinit (ca_pkey); return g_strdup_printf(_("Error exporting private key to PEM structure.")); } gnutls_x509_crq_deinit (csr); gnutls_x509_crt_deinit (crt); gnutls_x509_crt_deinit (ca_crt); gnutls_x509_privkey_deinit (ca_pkey); return NULL; } gboolean tls_cert_pem_get_validity (const gchar *pem_certificate, gint64 *activation, gint64 *expiration) { gnutls_x509_crt_t cert; gnutls_datum_t pem_datum; if (! pem_certificate) return FALSE; pem_datum.data = (unsigned char *) pem_certificate; pem_datum.size = strlen (pem_certificate); if (gnutls_x509_crt_init (&cert) < 0) return FALSE; if (gnutls_x509_crt_import (cert, &pem_datum, GNUTLS_X509_FMT_PEM) < 0) { gnutls_x509_crt_deinit (cert); return FALSE; } if (activation) *activation = (gint64) gnutls_x509_crt_get_activation_time (cert); if (expiration) *expiration = (gint64) gnutls_x509_crt_get_expiration_time (cert); gnutls_x509_crt_deinit (cert); return TRUE; } TlsCert * tls_parse_cert_pem (const char * pem_certificate) { gnutls_datum_t pem_datum; gnutls_x509_crt_t * cert = g_new0 (gnutls_x509_crt_t, 1); gchar *aux = NULL; guchar *uaux = NULL; guint key_usage; gint i; guint critical; guint aux_uint; size_t size; TlsCert *res = g_new0 (TlsCert, 1); pem_datum.data = (unsigned char *) pem_certificate; pem_datum.size = strlen(pem_certificate); gnutls_x509_crt_init (cert); gnutls_x509_crt_import (*cert, &pem_datum, GNUTLS_X509_FMT_PEM); res->activation_time = gnutls_x509_crt_get_activation_time (*cert); res->expiration_time = gnutls_x509_crt_get_expiration_time (*cert); size = 0; gnutls_x509_crt_get_serial (*cert, NULL, &size); if (size) { uaux = g_new0 (guchar, size); gnutls_x509_crt_get_serial (*cert, uaux, &size); uint160_read (&res->serial_number, uaux, size); g_free(uaux); uaux = NULL; } size = 0; gnutls_x509_crt_get_dn_by_oid (*cert, GNUTLS_OID_X520_COMMON_NAME, 0, 0, aux, &size); if (size) { aux = g_new0(gchar, size); gnutls_x509_crt_get_dn_by_oid (*cert, GNUTLS_OID_X520_COMMON_NAME, 0, 0, aux, &size); res->cn = g_strdup (aux); g_free (aux); aux = NULL; } size = 0; gnutls_x509_crt_get_dn_by_oid (*cert, GNUTLS_OID_X520_ORGANIZATION_NAME, 0, 0, aux, &size); if (size) { aux = g_new0(gchar, size); gnutls_x509_crt_get_dn_by_oid (*cert, GNUTLS_OID_X520_ORGANIZATION_NAME, 0, 0, aux, &size); res->o = g_strdup (aux); g_free (aux); aux = NULL; } size = 0; gnutls_x509_crt_get_dn_by_oid (*cert, GNUTLS_OID_X520_ORGANIZATIONAL_UNIT_NAME, 0, 0, aux, &size); if (size) { aux = g_new0(gchar, size); gnutls_x509_crt_get_dn_by_oid (*cert, GNUTLS_OID_X520_ORGANIZATIONAL_UNIT_NAME, 0, 0, aux, &size); res->ou = g_strdup (aux); g_free (aux); aux = NULL; } size = 0; gnutls_x509_crt_get_dn_by_oid (*cert, GNUTLS_OID_PKCS9_EMAIL, 0, 0, aux, &size); if (size) { aux = g_new0 (gchar, size); gnutls_x509_crt_get_dn_by_oid (*cert, GNUTLS_OID_PKCS9_EMAIL, 0, 0, aux, &size); res->emailAddress = g_strdup (aux); g_free (aux); aux = NULL; } size = 0; gnutls_x509_crt_get_dn (*cert, aux, &size); if (size) { aux = g_new0(gchar, size); gnutls_x509_crt_get_dn (*cert, aux, &size); res->dn = g_strdup (aux); g_free (aux); aux = NULL; } size = 0; gnutls_x509_crt_get_issuer_dn_by_oid (*cert, GNUTLS_OID_X520_COMMON_NAME, 0, 0, aux, &size); if (size) { aux = g_new0(gchar, size); gnutls_x509_crt_get_issuer_dn_by_oid (*cert, GNUTLS_OID_X520_COMMON_NAME, 0, 0, aux, &size); res->i_cn = g_strdup (aux); g_free (aux); aux = NULL; } size = 0; gnutls_x509_crt_get_issuer_dn_by_oid (*cert, GNUTLS_OID_X520_ORGANIZATION_NAME, 0, 0, aux, &size); if (size) { aux = g_new0(gchar, size); gnutls_x509_crt_get_issuer_dn_by_oid (*cert, GNUTLS_OID_X520_ORGANIZATION_NAME, 0, 0, aux, &size); res->i_o = g_strdup (aux); g_free (aux); aux = NULL; } size = 0; gnutls_x509_crt_get_issuer_dn_by_oid (*cert, GNUTLS_OID_X520_ORGANIZATIONAL_UNIT_NAME, 0, 0, aux, &size); if (size) { aux = g_new0(gchar, size); gnutls_x509_crt_get_issuer_dn_by_oid (*cert, GNUTLS_OID_X520_ORGANIZATIONAL_UNIT_NAME, 0, 0, aux, &size); res->i_ou = g_strdup (aux); g_free (aux); aux = NULL; } size = 0; gnutls_x509_crt_get_issuer_dn_by_oid (*cert, GNUTLS_OID_PKCS9_EMAIL, 0, 0, aux, &size); if (size) { aux = g_new0 (gchar, size); gnutls_x509_crt_get_issuer_dn_by_oid (*cert, GNUTLS_OID_PKCS9_EMAIL, 0, 0, aux, &size); res->i_emailAddress = g_strdup (aux); g_free (aux); aux = NULL; } size = 0; gnutls_x509_crt_get_issuer_dn (*cert, aux, &size); if (size) { aux = g_new0(gchar, size); gnutls_x509_crt_get_issuer_dn (*cert, aux, &size); res->i_dn = g_strdup (aux); g_free (aux); aux = NULL; } size = 0; gnutls_x509_crt_get_dn_by_oid (*cert, GNUTLS_OID_X520_COUNTRY_NAME, 0, 0, aux, &size); if (size) { aux = g_new0(gchar, size); gnutls_x509_crt_get_dn_by_oid (*cert, GNUTLS_OID_X520_COUNTRY_NAME, 0, 0, aux, &size); res->c = g_strdup (aux); g_free (aux); aux = NULL; } size = 0; gnutls_x509_crt_get_dn_by_oid (*cert, GNUTLS_OID_X520_STATE_OR_PROVINCE_NAME, 0, 0, aux, &size); if (size) { aux = g_new0(gchar, size); gnutls_x509_crt_get_dn_by_oid (*cert, GNUTLS_OID_X520_STATE_OR_PROVINCE_NAME, 0, 0, aux, &size); res->st = g_strdup (aux); g_free (aux); aux = NULL; } size = 0; gnutls_x509_crt_get_dn_by_oid (*cert, GNUTLS_OID_X520_LOCALITY_NAME, 0, 0, aux, &size); if (size) { aux = g_new0(gchar, size); gnutls_x509_crt_get_dn_by_oid (*cert, GNUTLS_OID_X520_LOCALITY_NAME, 0, 0, aux, &size); res->l = g_strdup (aux); g_free (aux); aux = NULL; } size = 0; gnutls_x509_crt_get_fingerprint (*cert, GNUTLS_DIG_MD5, uaux, &size); uaux = g_new0(guchar, size); gnutls_x509_crt_get_fingerprint (*cert, GNUTLS_DIG_MD5, uaux, &size); res->md5 = g_new0(gchar, size*3); for (i=0; imd5[i*3], 3, "%02X", uaux[i]); if (i != size - 1) res->md5[(i*3) + 2] = ':'; } g_free (uaux); uaux = NULL; size = 0; gnutls_x509_crt_get_fingerprint (*cert, GNUTLS_DIG_SHA1, uaux, &size); uaux = g_new0(guchar, size); gnutls_x509_crt_get_fingerprint (*cert, GNUTLS_DIG_SHA1, uaux, &size); res->sha1 = g_new0(gchar, size*3); for (i=0; isha1[i*3], 3, "%02X", uaux[i]); if (i != size - 1) res->sha1[(i*3) + 2] = ':'; } g_free (uaux); uaux = NULL; size = 0; gnutls_x509_crt_get_fingerprint (*cert, GNUTLS_DIG_SHA256, uaux, &size); uaux = g_new0(guchar, size); gnutls_x509_crt_get_fingerprint (*cert, GNUTLS_DIG_SHA256, uaux, &size); res->sha256 = g_new0(gchar, size*3); for (i=0; isha256[i*3], 3, "%02X", uaux[i]); if (i != size - 1) res->sha256[(i*3) + 2] = ':'; } g_free (uaux); uaux = NULL; size = 0; gnutls_x509_crt_get_fingerprint (*cert, GNUTLS_DIG_SHA512, uaux, &size); uaux = g_new0(guchar, size); gnutls_x509_crt_get_fingerprint (*cert, GNUTLS_DIG_SHA512, uaux, &size); res->sha512 = g_new0(gchar, size*3); for (i=0; isha512[i*3], 3, "%02X", uaux[i]); if (i != size - 1) res->sha512[(i*3) + 2] = ':'; } g_free (uaux); uaux = NULL; if (gnutls_x509_crt_get_ca_status (*cert, &critical)) { res->uses = g_list_append (res->uses, _("Certification Authority")); } if (gnutls_x509_crt_get_key_usage (*cert, &key_usage, &critical) >= 0) { if (key_usage & GNUTLS_KEY_DIGITAL_SIGNATURE) res->uses = g_list_append (res->uses, _("Digital signature")); if (key_usage & GNUTLS_KEY_NON_REPUDIATION) res->uses = g_list_append (res->uses, _("Non repudiation")); if (key_usage & GNUTLS_KEY_KEY_ENCIPHERMENT) res->uses = g_list_append (res->uses, _("Key encipherment")); if (key_usage & GNUTLS_KEY_DATA_ENCIPHERMENT) res->uses = g_list_append (res->uses, _("Data encipherment")); if (key_usage & GNUTLS_KEY_KEY_AGREEMENT) res->uses = g_list_append (res->uses, _("Key agreement")); if (key_usage & GNUTLS_KEY_KEY_CERT_SIGN) res->uses = g_list_append (res->uses, _("Certificate signing")); if (key_usage & GNUTLS_KEY_CRL_SIGN) res->uses = g_list_append (res->uses, _("CRL signing")); if (key_usage & GNUTLS_KEY_ENCIPHER_ONLY) res->uses = g_list_append (res->uses, _("Key encipher only")); if (key_usage & GNUTLS_KEY_DECIPHER_ONLY) res->uses = g_list_append (res->uses, _("Key decipher only")); } i = 0; size = 0; while (gnutls_x509_crt_get_key_purpose_oid (*cert, i, aux, &size, &critical) >= 0) { uaux = g_new0(guchar, size); gnutls_x509_crt_get_key_purpose_oid (*cert, i, aux, &size, &critical); if (aux && strcasecmp (aux, GNUTLS_KP_TLS_WWW_SERVER) == 0) res->uses = g_list_append (res->uses, _("TLS WWW Server")); else if (aux && strcasecmp (aux, GNUTLS_KP_TLS_WWW_CLIENT) == 0) res->uses = g_list_append (res->uses, _("TLS WWW Client.")); else if (aux && strcasecmp (aux, GNUTLS_KP_CODE_SIGNING) == 0) res->uses = g_list_append (res->uses, _("Code signing")); else if (aux && strcasecmp (aux, GNUTLS_KP_EMAIL_PROTECTION) == 0) res->uses = g_list_append (res->uses, _("Email protection")); else if (aux && strcasecmp (aux, GNUTLS_KP_TIME_STAMPING) == 0) res->uses = g_list_append (res->uses, _("Time stamping")); else if (aux && strcasecmp (aux, GNUTLS_KP_OCSP_SIGNING) == 0) res->uses = g_list_append (res->uses, _("OCSP signing")); else if (aux && strcasecmp (aux, GNUTLS_KP_ANY) == 0) res->uses = g_list_append (res->uses, _("Any purpose")); g_free (uaux); size = 0; i++; } size = 0; gnutls_x509_crt_get_key_id (*cert, 0, uaux, &size); uaux = g_new0(guchar, size); gnutls_x509_crt_get_key_id (*cert, 0, uaux, &size); res->key_id = g_new0(gchar, size*3); for (i=0; ikey_id[i*3], 3, "%02X", uaux[i]); if (i != size - 1) res->key_id[(i*3) + 2] = ':'; } g_free (uaux); uaux = NULL; size = 0; gnutls_x509_crt_get_crl_dist_points (*cert, 0, aux, &size, &aux_uint, &critical); if (size) { aux = g_new0(gchar, size); if (gnutls_x509_crt_get_crl_dist_points (*cert, 0, aux, &size, &aux_uint, &critical) == GNUTLS_SAN_URI && aux_uint == 0) res->crl_distribution_point = g_strdup (aux); g_free (aux); aux = NULL; } size = 0; gnutls_x509_crt_get_subject_key_id (*cert, uaux, &size, NULL); uaux = g_new0(guchar, size); gnutls_x509_crt_get_subject_key_id (*cert, uaux, &size, NULL); res->subject_key_id = g_new0(gchar, size*3); for (i=0; isubject_key_id[i*3], 3, "%02X", uaux[i]); if (i != size - 1) res->subject_key_id[(i*3) + 2] = ':'; } g_free (uaux); uaux = NULL; size = 0; gnutls_x509_crt_get_authority_key_id (*cert, uaux, &size, NULL); uaux = g_new0(guchar, size); gnutls_x509_crt_get_authority_key_id (*cert, uaux, &size, NULL); res->issuer_key_id = g_new0(gchar, size*3); for (i=0; iissuer_key_id[i*3], 3, "%02X", uaux[i]); if (i != size - 1) res->issuer_key_id[(i*3) + 2] = ':'; } g_free (uaux); uaux = NULL; // Extract Subject Alternative Names { GString *san_string = g_string_new(NULL); gboolean first = TRUE; int san_idx = 0; while (1) { // First, query the size needed size_t san_size = 0; unsigned int critical = 0; int result = gnutls_x509_crt_get_subject_alt_name(*cert, san_idx, NULL, &san_size, &critical); if (result == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) break; if (result < 0 && result != GNUTLS_E_SHORT_MEMORY_BUFFER) break; // Allocate buffer for the SAN (with null terminator for safety) gchar *san_buffer = g_new0(gchar, san_size + 1); size_t actual_size = san_size; result = gnutls_x509_crt_get_subject_alt_name(*cert, san_idx, san_buffer, &actual_size, &critical); // The result contains the SAN type when successful (>= 0) if (result >= 0) { if (!first) g_string_append(san_string, ", "); first = FALSE; // result is the SAN type switch (result) { case GNUTLS_SAN_DNSNAME: g_string_append_printf(san_string, "DNS:%s", san_buffer); break; case GNUTLS_SAN_RFC822NAME: g_string_append_printf(san_string, "EMAIL:%s", san_buffer); break; case GNUTLS_SAN_URI: g_string_append_printf(san_string, "URI:%s", san_buffer); break; case GNUTLS_SAN_IPADDRESS: // Convert binary IP to readable format if (actual_size == 4) { // IPv4 g_string_append_printf(san_string, "IP:%d.%d.%d.%d", (unsigned char)san_buffer[0], (unsigned char)san_buffer[1], (unsigned char)san_buffer[2], (unsigned char)san_buffer[3]); } else if (actual_size == 16) { // IPv6 gchar ip_str[INET6_ADDRSTRLEN]; if (inet_ntop(AF_INET6, san_buffer, ip_str, sizeof(ip_str))) { g_string_append_printf(san_string, "IP:%s", ip_str); } else { // Fallback to hex if conversion fails g_string_append(san_string, "IP:"); for (int j = 0; j < 16; j += 2) { if (j > 0) g_string_append(san_string, ":"); g_string_append_printf(san_string, "%02x%02x", (unsigned char)san_buffer[j], (unsigned char)san_buffer[j+1]); } } } break; } } g_free(san_buffer); san_idx++; } if (san_string->len > 0) { res->subject_alt_name = g_string_free(san_string, FALSE); } else { g_string_free(san_string, TRUE); res->subject_alt_name = NULL; } } gnutls_x509_crt_deinit (*cert); g_free (cert); return res; } gboolean tls_is_ca_pem (const char * pem_certificate) { gnutls_datum_t pem_datum; gnutls_x509_crt_t * cert = g_new0 (gnutls_x509_crt_t, 1); guint critical; gboolean res = FALSE; pem_datum.data = (unsigned char *) pem_certificate; pem_datum.size = strlen(pem_certificate); gnutls_x509_crt_init (cert); gnutls_x509_crt_import (*cert, &pem_datum, GNUTLS_X509_FMT_PEM); if (gnutls_x509_crt_get_ca_status (*cert, &critical)) { res = TRUE; } gnutls_x509_crt_deinit (*cert); g_free (cert); return res; } void tls_cert_free (TlsCert *tlscert) { g_free (tlscert->cn); g_free (tlscert->o); g_free (tlscert->ou); g_free (tlscert->c); g_free (tlscert->st); g_free (tlscert->l); g_free (tlscert->dn); g_free (tlscert->emailAddress); g_free (tlscert->i_cn); g_free (tlscert->i_o); g_free (tlscert->i_ou); g_free (tlscert->i_c); g_free (tlscert->i_st); g_free (tlscert->i_l); g_free (tlscert->i_dn); g_free (tlscert->i_emailAddress); g_free (tlscert->sha1); g_free (tlscert->sha256); g_free (tlscert->sha512); g_free (tlscert->md5); g_free (tlscert->key_id); g_free (tlscert->crl_distribution_point); g_free (tlscert->subject_alt_name); g_free (tlscert); } TlsCsr * tls_parse_csr_pem (const char * pem_csr) { gnutls_datum_t pem_datum; gnutls_x509_crq_t * csr = g_new0 (gnutls_x509_crq_t, 1); gchar *aux = NULL; #ifdef ADVANCED_GNUTLS guchar *uaux = NULL; #endif size_t size; TlsCsr *res = g_new0 (TlsCsr, 1); pem_datum.data = (unsigned char *) pem_csr; pem_datum.size = strlen(pem_csr); gnutls_x509_crq_init (csr); gnutls_x509_crq_import (*csr, &pem_datum, GNUTLS_X509_FMT_PEM); size = 0; gnutls_x509_crq_get_dn_by_oid (*csr, GNUTLS_OID_X520_COMMON_NAME, 0, 0, aux, &size); if (size) { aux = g_new0(gchar, size); gnutls_x509_crq_get_dn_by_oid (*csr, GNUTLS_OID_X520_COMMON_NAME, 0, 0, aux, &size); res->cn = g_strdup (aux); g_free (aux); aux = NULL; } size = 0; gnutls_x509_crq_get_dn_by_oid (*csr, GNUTLS_OID_X520_ORGANIZATION_NAME, 0, 0, aux, &size); if (size) { aux = g_new0(gchar, size); gnutls_x509_crq_get_dn_by_oid (*csr, GNUTLS_OID_X520_ORGANIZATION_NAME, 0, 0, aux, &size); res->o = g_strdup (aux); g_free (aux); aux = NULL; } size = 0; gnutls_x509_crq_get_dn_by_oid (*csr, GNUTLS_OID_X520_ORGANIZATIONAL_UNIT_NAME, 0, 0, aux, &size); if (size) { aux = g_new0(gchar, size); gnutls_x509_crq_get_dn_by_oid (*csr, GNUTLS_OID_X520_ORGANIZATIONAL_UNIT_NAME, 0, 0, aux, &size); res->ou = g_strdup (aux); g_free (aux); aux = NULL; } size = 0; gnutls_x509_crq_get_dn_by_oid (*csr, GNUTLS_OID_PKCS9_EMAIL, 0, 0, aux, &size); if (size) { aux = g_new0 (gchar, size); gnutls_x509_crq_get_dn_by_oid (*csr, GNUTLS_OID_PKCS9_EMAIL, 0, 0, aux, &size); res->emailAddress = g_strdup (aux); g_free (aux); aux = NULL; } size = 0; gnutls_x509_crq_get_dn_by_oid (*csr, GNUTLS_OID_X520_COUNTRY_NAME, 0, 0, aux, &size); if (size) { aux = g_new0(gchar, size); gnutls_x509_crq_get_dn_by_oid (*csr, GNUTLS_OID_X520_COUNTRY_NAME, 0, 0, aux, &size); res->c = g_strdup (aux); g_free (aux); aux = NULL; } size = 0; gnutls_x509_crq_get_dn_by_oid (*csr, GNUTLS_OID_X520_STATE_OR_PROVINCE_NAME, 0, 0, aux, &size); if (size) { aux = g_new0(gchar, size); gnutls_x509_crq_get_dn_by_oid (*csr, GNUTLS_OID_X520_STATE_OR_PROVINCE_NAME, 0, 0, aux, &size); res->st = g_strdup (aux); g_free (aux); aux = NULL; } size = 0; gnutls_x509_crq_get_dn_by_oid (*csr, GNUTLS_OID_X520_LOCALITY_NAME, 0, 0, aux, &size); if (size) { aux = g_new0(gchar, size); gnutls_x509_crq_get_dn_by_oid (*csr, GNUTLS_OID_X520_LOCALITY_NAME, 0, 0, aux, &size); res->l = g_strdup (aux); g_free (aux); aux = NULL; } size = 0; gnutls_x509_crq_get_dn (*csr, aux, &size); if (size) { aux = g_new0(gchar, size); gnutls_x509_crq_get_dn (*csr, aux, &size); res->dn = g_strdup (aux); g_free (aux); aux = NULL; } #ifdef ADVANCED_GNUTLS size = 0; gnutls_x509_crq_get_key_id (*csr, 0, uaux, &size); if (size) { aux = g_new0(gchar, size); gnutls_x509_crq_get_key_id (*csr, 0, uaux, &size); res->key_id = g_strdup (aux); g_free (aux); uaux = NULL; } #endif // Extract Subject Alternative Names from CSR { GString *san_string = g_string_new(NULL); gint san_idx = 0; gboolean first = TRUE; while (1) { size_t san_size = 0; guint san_type = 0; gint result = gnutls_x509_crq_get_subject_alt_name(*csr, san_idx, NULL, &san_size, &san_type, NULL); if (result == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE || result == GNUTLS_E_UNKNOWN_ALGORITHM) break; if (result < 0 && result != GNUTLS_E_SHORT_MEMORY_BUFFER) break; gchar *san_buffer = g_new0(gchar, san_size + 1); size_t actual_size = san_size; result = gnutls_x509_crq_get_subject_alt_name(*csr, san_idx, san_buffer, &actual_size, &san_type, NULL); // Note: result contains the SAN type when successful (>= 0) if (result >= 0) { if (!first) { g_string_append(san_string, ", "); } first = FALSE; // Use the san_type from the parameter, as result might be the type switch (san_type) { case GNUTLS_SAN_DNSNAME: g_string_append_printf(san_string, "DNS:%s", san_buffer); break; case GNUTLS_SAN_RFC822NAME: g_string_append_printf(san_string, "EMAIL:%s", san_buffer); break; case GNUTLS_SAN_URI: g_string_append_printf(san_string, "URI:%s", san_buffer); break; case GNUTLS_SAN_IPADDRESS: // Convert binary IP to string representation if (actual_size == 4) { // IPv4 g_string_append_printf(san_string, "IP:%d.%d.%d.%d", (guchar)san_buffer[0], (guchar)san_buffer[1], (guchar)san_buffer[2], (guchar)san_buffer[3]); } else if (actual_size == 16) { // IPv6 g_string_append(san_string, "IP:"); for (int i = 0; i < 16; i += 2) { if (i > 0) g_string_append(san_string, ":"); g_string_append_printf(san_string, "%02x%02x", (guchar)san_buffer[i], (guchar)san_buffer[i+1]); } } break; } } g_free(san_buffer); san_idx++; } if (san_string->len > 0) { res->subject_alt_name = g_string_free(san_string, FALSE); } else { g_string_free(san_string, TRUE); res->subject_alt_name = NULL; } } gnutls_x509_crq_deinit (*csr); g_free (csr); return res; } void tls_csr_free (TlsCsr *tlscsr) { if (tlscsr->cn) { g_free (tlscsr->cn); } if (tlscsr->o) { g_free (tlscsr->o); } if (tlscsr->ou) { g_free (tlscsr->ou); } if (tlscsr->c) { g_free (tlscsr->c); } if (tlscsr->st) { g_free (tlscsr->st); } if (tlscsr->l) { g_free (tlscsr->l); } if (tlscsr->dn) { g_free (tlscsr->dn); } if (tlscsr->emailAddress) { g_free (tlscsr->emailAddress); } if (tlscsr->key_id) { g_free (tlscsr->key_id); } if (tlscsr->subject_alt_name) { g_free (tlscsr->subject_alt_name); } g_free (tlscsr); } gchar * tls_generate_crl (GList * revoked_certs, guchar *ca_pem, guchar *ca_private_key, gint crl_version, time_t current_timestamp, time_t next_crl_timestamp) { gnutls_datum_t pem_datum; gnutls_x509_crl_t crl; gnutls_x509_crt_t rcrt; guchar *certificate_pem; gint64 revocation; /* 64-bit: g_ascii_strtoll, not atol() (long is 32-bit on ILP32) */ gnutls_x509_crt_t ca_crt; gnutls_x509_privkey_t ca_pkey; gnutls_privkey_t ca_privkey; GList *cursor = NULL; gchar *result = NULL; size_t result_size = 0; gnutls_x509_crl_init (&crl); cursor = g_list_first (revoked_certs); while (cursor) { gnutls_datum_t pem_datum; certificate_pem = cursor->data; cursor = g_list_next (cursor); revocation = g_ascii_strtoll ((const gchar *) cursor->data, NULL, 10); cursor = g_list_next (cursor); gnutls_x509_crt_init (&rcrt); pem_datum.data = certificate_pem; pem_datum.size = strlen((gchar *) certificate_pem); if (gnutls_x509_crt_import (rcrt, &pem_datum, GNUTLS_X509_FMT_PEM)) { return NULL; } if (gnutls_x509_crl_set_crt (crl, rcrt, revocation)) return NULL; gnutls_x509_crt_deinit (rcrt); } fprintf (stderr, "Number of certificates in CRL: %d\n", gnutls_x509_crl_get_crt_count (crl)); if (gnutls_x509_crl_set_version (crl, 2)) { fprintf (stderr, "Error setting version\n"); return NULL; } if (gnutls_x509_crl_set_this_update (crl, current_timestamp)) { fprintf (stderr, "Error setting this update\n"); return NULL; } if (! next_crl_timestamp) { next_crl_timestamp = current_timestamp + 60*24; } if (gnutls_x509_crl_set_next_update (crl, next_crl_timestamp)) { fprintf (stderr, "Error setting next update\n"); return NULL; } gnutls_x509_crt_init (&ca_crt); pem_datum.data = ca_pem; pem_datum.size = strlen((gchar *)ca_pem); if (gnutls_x509_crt_import (ca_crt, &pem_datum, GNUTLS_X509_FMT_PEM)) { fprintf (stderr, "Error importing ca_pem\n"); return NULL; } gnutls_x509_privkey_init (&ca_pkey); pem_datum.data = ca_private_key; pem_datum.size = strlen((gchar *) ca_private_key); if (gnutls_x509_privkey_import (ca_pkey, &pem_datum, GNUTLS_X509_FMT_PEM)) { fprintf (stderr, "Error importing ca privkey\n"); return NULL; } if (gnutls_privkey_init(& ca_privkey) < 0) { fprintf(stderr, "Error when initializing privkey structure"); return NULL; } if (gnutls_privkey_import_x509(ca_privkey, ca_pkey, 0) < 0) { fprintf(stderr, "Error when importing private key into privkey structure"); return NULL; } if (gnutls_x509_crl_privkey_sign (crl, ca_crt, ca_privkey, GNUTLS_DIG_SHA512, 0)) { fprintf (stderr, "Error signing CRL: %d\n", gnutls_x509_crl_privkey_sign (crl, ca_crt, ca_privkey, GNUTLS_DIG_SHA512, 0)); return NULL; } gnutls_x509_privkey_deinit (ca_pkey); gnutls_x509_crt_deinit (ca_crt); result = g_new0 (gchar, 0); gnutls_x509_crl_export (crl, GNUTLS_X509_FMT_PEM, result, &result_size); g_free (result); result = g_new0 (gchar, result_size); if (gnutls_x509_crl_export (crl, GNUTLS_X509_FMT_PEM, result, &result_size)) { fprintf (stderr, "Error exporting CRL pem\n"); return NULL; } return result; } gchar * tls_generate_dh_params (guint bits) { gnutls_dh_params_t dh_params; size_t dh_params_pem_len = 0; guchar * result = NULL; gint ret; gnutls_dh_params_init (&dh_params); ret = gnutls_dh_params_generate2 (dh_params, bits); if (ret < 0) { fprintf (stderr, "Error generating parameters: %s\n", gnutls_strerror (ret)); return NULL; } result = g_new (guchar, 0); gnutls_dh_params_export_pkcs3 (dh_params, GNUTLS_X509_FMT_PEM, result, &dh_params_pem_len); g_free (result); result = g_new (guchar, dh_params_pem_len); if (gnutls_dh_params_export_pkcs3 (dh_params, GNUTLS_X509_FMT_PEM, result, &dh_params_pem_len)) { fprintf (stderr, "Error exporting DH params pem\n"); return NULL; } return (gchar *) result; } gboolean tls_cert_check_issuer (const gchar *cert_pem, const gchar *ca_pem) { gnutls_datum_t pem_datum; gnutls_x509_crt_t crt; gnutls_x509_crt_t ca_crt; gboolean result = FALSE; if (gnutls_x509_crt_init (&crt) < 0) { return FALSE; } pem_datum.data = (unsigned char *) cert_pem; pem_datum.size = strlen(cert_pem); if (gnutls_x509_crt_import (crt, &pem_datum, GNUTLS_X509_FMT_PEM) < 0) { gnutls_x509_crt_deinit (crt); return FALSE; } if (gnutls_x509_crt_init (&ca_crt) < 0) { gnutls_x509_crt_deinit (crt); return FALSE; } pem_datum.data = (unsigned char *) ca_pem; pem_datum.size = strlen(ca_pem); if (gnutls_x509_crt_import (ca_crt, &pem_datum, GNUTLS_X509_FMT_PEM) < 0) { gnutls_x509_crt_deinit (crt); gnutls_x509_crt_deinit (ca_crt); return FALSE; } result = gnutls_x509_crt_check_issuer(crt, ca_crt); gnutls_x509_crt_deinit (crt); gnutls_x509_crt_deinit (ca_crt); return result; } gchar * tls_get_private_key_id (const gchar *privkey_pem) { gnutls_datum_t pem_datum; gnutls_x509_privkey_t privkey; gchar * pkey_key_id = NULL; gsize pkey_key_id_len; guchar *uaux = NULL; guint i; if (gnutls_x509_privkey_init (&privkey) < 0) { return FALSE; } pem_datum.data = (unsigned char *) privkey_pem; pem_datum.size = strlen(privkey_pem); if (gnutls_x509_privkey_import (privkey, &pem_datum, GNUTLS_X509_FMT_PEM) < 0) { gnutls_x509_privkey_deinit (privkey); return FALSE; } uaux = NULL; pkey_key_id_len = 0; gnutls_x509_privkey_get_key_id (privkey, 0, uaux, &pkey_key_id_len); uaux = g_new0(guchar, pkey_key_id_len); if (gnutls_x509_privkey_get_key_id (privkey, 0, uaux, &pkey_key_id_len)) { g_free (uaux); gnutls_x509_privkey_deinit (privkey); return NULL; } pkey_key_id = g_new0(gchar, pkey_key_id_len*3); for (i=0; icountry) g_free (cd->country); if (cd->state) g_free (cd->state); if (cd->city) g_free (cd->city); if (cd->org) g_free (cd->org); if (cd->ou) g_free (cd->ou); if (cd->cn) g_free (cd->cn); if (cd->emailAddress) g_free (cd->emailAddress); if (cd->password) g_free (cd->password); if (cd->crl_distribution_point) g_free (cd->crl_distribution_point); if (cd->parent_ca_id_str) g_free (cd->parent_ca_id_str); if (cd->subject_alt_name) g_free (cd->subject_alt_name); g_free (cd); } #ifdef ADVANCED_GNUTLS gchar * tls_get_csr_public_key_id (const gchar *csr_pem) { gnutls_datum_t pem_datum; gnutls_x509_crq_t crq; gchar * key_id = NULL; gsize key_id_len; guchar *uaux = NULL; guint i; if (gnutls_x509_crq_init (&crq) < 0) { return FALSE; } pem_datum.data = (unsigned char *) csr_pem; pem_datum.size = strlen(csr_pem); if (gnutls_x509_crq_import (crq, &pem_datum, GNUTLS_X509_FMT_PEM) < 0) { gnutls_x509_crq_deinit (crq); return FALSE; } uaux = NULL; key_id_len = 0; gnutls_x509_crq_get_key_id (crq, 0, uaux, &key_id_len); uaux = g_new0(guchar, key_id_len); if (gnutls_x509_crq_get_key_id (crq, 0, uaux, &key_id_len)) { g_free (uaux); gnutls_x509_crq_deinit (crq); return NULL; } key_id = g_new0(gchar, key_id_len*3); for (i=0; i // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #ifndef _PREFERENCES_H_ #define _PREFERENCES_H_ typedef void (* PreferencesGuiChangeCallback) (gboolean, gboolean); void preferences_gui_set_csr_visible_callback (PreferencesGuiChangeCallback callback); void preferences_gui_set_revoked_visible_callback (PreferencesGuiChangeCallback callback); void preferences_gui_set_expired_visible_callback (PreferencesGuiChangeCallback callback); void preferences_init (int, char**); gchar *preferences_get_size(void); void preferences_set_size (const gchar *new_value); gboolean preferences_get_revoked_visible(void); void preferences_set_revoked_visible (gboolean new_value); gboolean preferences_get_expired_visible(void); void preferences_set_expired_visible (gboolean new_value); gint preferences_get_expire_warning_days(void); void preferences_set_expire_warning_days (gint new_value); gboolean preferences_get_crq_visible(void); void preferences_set_crq_visible (gboolean new_value); gboolean preferences_get_gnome_keyring_export (void); void preferences_set_gnome_keyring_export (gboolean new_value); void preferences_deinit (void); #include void preferences_changed_callback(GSettings* settings, const gchar *key, gpointer user_data); #endif gnomint-1.6.4/src/time64_check.h0000644000000000000000000000411015212761266015144 0ustar00rootroot// gnoMint: a graphical interface for managing a certification authority // Copyright (C) 2006-2009 David Marín Carreño // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #ifndef _TIME64_CHECK_H_ #define _TIME64_CHECK_H_ #include // Compile-time check that time_t is 64-bit, to prevent Y2K38 problems so // gnoMint can handle certificates expiring after 2038-01-19 03:14:07 UTC. // // This is only enforced where 64-bit time_t is actually the ABI: either the // platform is natively 64-bit time_t (e.g. amd64, where _TIME_BITS is left // undefined and sizeof(time_t) == 8 anyway) or the toolchain has explicitly // opted in with _TIME_BITS=64 (e.g. the armhf port). On legacy 32-bit-time_t // platforms such as i386 the distribution toolchain keeps time_t at 32 bits for // ABI compatibility with the system libraries; forcing 64-bit there would break // the GnuTLS ABI (see issue #86 and the note in configure.ac), so we must NOT // fail the build in that case. #if defined(_TIME_BITS) && _TIME_BITS == 64 #if defined(__GNUC__) || defined(__clang__) _Static_assert(sizeof(time_t) >= 8, "_TIME_BITS=64 was requested but time_t is not 64-bit on this platform."); #elif defined(_MSC_VER) // MSVC static assertion static_assert(sizeof(time_t) >= 8, "_TIME_BITS=64 was requested but time_t is not 64-bit on this platform."); #endif #endif #endif // _TIME64_CHECK_H_ gnomint-1.6.4/src/certificate_properties.c0000644000000000000000000015076615212761266017453 0ustar00rootroot// gnoMint: a graphical interface for managing a certification authority // Copyright (C) 2006-2009 David Marín Carreño // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #include #include #include #include #include #include #ifdef _WIN32 #include #include #else #include #endif #include "tls.h" #include "ca_policy.h" #include "certificate_properties.h" #include "prop_node.h" #include #include "dialog.h" #include "gnomint_time.h" #include "ca_file.h" typedef struct { const gchar *oid; const gchar *label; } certificate_properties_oid_label_couple_t; typedef void (*certificate_properties_fill_t) (GnomintPropNode *, gnutls_x509_crt_t *); typedef struct { const gchar *oid; certificate_properties_fill_t function; } certificate_properties_oid_function_couple_t; const certificate_properties_oid_label_couple_t certificate_properties_oid_label_table[] = { {"1.3.6.1.5.5.7.3.1", "TLS WWW Server"}, {"1.3.6.1.5.5.7.3.2", "TLS WWW Client"}, {"1.3.6.1.5.5.7.3.3", "Code signing"}, {"1.3.6.1.5.5.7.3.4", "Email protection"}, {"1.3.6.1.5.5.7.3.8", "Time stamping"}, {"1.3.6.1.5.5.7.3.9", "OCSP signing"}, {"2.5.29.37.0", "Any purpose"}, {"2.5.29.9", "Subject Directory Attributes"}, {"2.5.29.14", "Subject Key Identifier"}, {"2.5.29.15", "Key Usage"}, {"2.5.29.16", "Private Key Usage Period"}, {"2.5.29.17", "Subject Alternative Name"}, {"2.5.29.19", "Basic Constraints"}, {"2.5.29.30", "Name Constraints"}, {"2.5.29.31", "CRL Distribution Points"}, {"2.5.29.32", "Certificate Policies"}, {"2.5.29.33", "Policy Mappings"}, {"2.5.29.35", "Authority Key Identifier"}, {"2.5.29.36", "Policy Constraints"}, {"2.5.29.37", "Extended Key Usage"}, {"2.5.29.46", "Delta CRL Distribution Point"}, {"2.5.29.54", "Inhibit Any-Policy"}, {0, 0}, }; void __certificate_properties_fill_cert_ext_SubjectKeyIdentifier(GnomintPropNode *, gnutls_x509_crt_t *); void __certificate_properties_fill_cert_ext_KeyUsage(GnomintPropNode *, gnutls_x509_crt_t *); void __certificate_properties_fill_cert_ext_SubjectAltName(GnomintPropNode *, gnutls_x509_crt_t *); void __certificate_properties_fill_cert_ext_BasicConstraints(GnomintPropNode *, gnutls_x509_crt_t *); void __certificate_properties_fill_cert_ext_CRLDistributionPoints(GnomintPropNode *, gnutls_x509_crt_t *); void __certificate_properties_fill_cert_ext_AuthorityKeyIdentifier(GnomintPropNode *, gnutls_x509_crt_t *); void __certificate_properties_fill_cert_ext_ExtKeyUsage(GnomintPropNode *, gnutls_x509_crt_t *); gchar * __certificate_properties_dump_raw_data(const unsigned char *buffer, size_t buffer_size); const gchar * __certificate_properties_lookup_oid_label(const certificate_properties_oid_label_couple_t *oid_label_table, const gchar *oid); certificate_properties_fill_t __certificate_properties_lookup_oid_function (const certificate_properties_oid_function_couple_t *oid_func_table, const gchar *oid); gchar * __certificate_properties_dump_RDNSequence(const gchar *buffer, gsize buffer_size); gchar * __certificate_properties_dump_key_usage(guint key_usage); void __certificate_properties_fill_cert_version(GnomintPropNode *parent, gnutls_x509_crt_t *certificate); void __certificate_properties_fill_cert_serialNumber(GnomintPropNode *parent, gnutls_x509_crt_t *certificate); void __certificate_properties_fill_cert_signature(GnomintPropNode *parent, gnutls_x509_crt_t *certificate); void __certificate_properties_fill_cert_issuer(GnomintPropNode *parent, gnutls_x509_crt_t *certificate); void __certificate_properties_fill_cert_validity (GnomintPropNode *parent, gnutls_x509_crt_t *certificate); void __certificate_properties_fill_cert_subject (GnomintPropNode *parent, gnutls_x509_crt_t *certificate); void __certificate_properties_fill_cert_subjectPublicKeyInfo (GnomintPropNode *parent, gnutls_x509_crt_t *certificate); void __certificate_properties_fill_cert_issuerUniqueID (GnomintPropNode *parent, gnutls_x509_crt_t *certificate); void __certificate_properties_fill_cert_subjectUniqueID (GnomintPropNode *parent, gnutls_x509_crt_t *certificate); void __certificate_properties_fill_cert_ext (GnomintPropNode *parent, gnutls_x509_crt_t *certificate); void __certificate_properties_fill_cert (GListStore *root_store, gnutls_x509_crt_t *certificate); void __certificate_properties_fill_signatureAlgorithm (GListStore *root_store, gnutls_x509_crt_t *certificate); void __certificate_properties_fill_signatureValue (GListStore *root_store, gnutls_x509_crt_t *certificate); void __certificate_properties_fill_certificate(GListStore *root_store, gnutls_x509_crt_t *certificate); const certificate_properties_oid_function_couple_t certificate_properties_oid_function_table[] = { {"2.5.29.14", __certificate_properties_fill_cert_ext_SubjectKeyIdentifier}, {"2.5.29.15", __certificate_properties_fill_cert_ext_KeyUsage}, {"2.5.29.17", __certificate_properties_fill_cert_ext_SubjectAltName}, {"2.5.29.19", __certificate_properties_fill_cert_ext_BasicConstraints}, {"2.5.29.31", __certificate_properties_fill_cert_ext_CRLDistributionPoints}, {"2.5.29.35", __certificate_properties_fill_cert_ext_AuthorityKeyIdentifier}, {"2.5.29.37", __certificate_properties_fill_cert_ext_ExtKeyUsage}, {0, 0}, }; GtkBuilder * certificate_properties_window_gtkb = NULL; /* Authoritative 64-bit validity dates for the certificate currently shown, * read from the database by certificate_properties_display(). Used to override * the (possibly 2038-capped) values GnuTLS parses from the PEM on a 32-bit * build. cp_dates_from_db is FALSE for certificates not in the database (e.g. * an externally-supplied PEM), in which case a displayed date that might have * overflowed is flagged to the user instead. */ static gboolean cp_have_activation = FALSE; /* DB column non-NULL (authoritative) */ static gboolean cp_have_expiration = FALSE; static gint64 cp_db_activation = 0; static gint64 cp_db_expiration = 0; /* Sets a validity-date label, appending a warning marker and explanatory * tooltip when the value may have overflowed the 32-bit time_t ceiling. */ static void __certificate_properties_set_date_label (GtkLabel *label, const gchar *date_str, gboolean uncertain) { if (uncertain) { gchar *m = g_strdup_printf ("%s \xE2\x9A\xA0", date_str); /* U+26A0 WARNING SIGN */ gtk_label_set_text (label, m); g_free (m); gtk_widget_set_tooltip_text (GTK_WIDGET (label), _("This 32-bit build cannot represent dates after 2038-01-19, so it " "cannot distinguish a genuine date from a later one that overflowed. " "This value may be inaccurate.")); } else { gtk_label_set_text (label, date_str); gtk_widget_set_tooltip_text (GTK_WIDGET (label), NULL); } } void __certificate_properties_populate (const char *certificate_pem); void __certificate_details_populate (const char *certificate_pem); static void __cert_props_ensure_css (void) { static gboolean done = FALSE; if (done) return; done = TRUE; GtkCssProvider *prov = gtk_css_provider_new (); gtk_css_provider_load_from_string (prov, ".cert-prop-value { font-family: Monospace; }"); gtk_style_context_add_provider_for_display ( gdk_display_get_default (), GTK_STYLE_PROVIDER (prov), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); } void certificate_properties_display(guint64 cert_id, const char *certificate_pem, gboolean privkey_in_db, gboolean is_ca) { GObject * widget = NULL; __cert_props_ensure_css (); certificate_properties_window_gtkb = gtk_builder_new(); gtk_builder_add_from_file (certificate_properties_window_gtkb, g_build_filename (PACKAGE_DATA_DIR, "gnomint", "certificate_properties_dialog.ui", NULL), NULL); /* The validity dates parsed from the PEM via GnuTLS's time_t getter cap * at 2038 on a 32-bit-time_t build. Fetch the authoritative 64-bit values * stored in the database so both the summary labels and the details tree * show the true date, consistent with the certificate list. The dialog is * single-instance, so file-scope is sufficient to carry these. */ ca_file_get_stored_cert_dates (cert_id, &cp_db_activation, &cp_have_activation, &cp_db_expiration, &cp_have_expiration); __certificate_properties_populate (certificate_pem); __certificate_details_populate (certificate_pem); if (! is_ca) { widget = gtk_builder_get_object (certificate_properties_window_gtkb, "notebook2"); gtk_notebook_remove_page (GTK_NOTEBOOK(widget), 2); } else { ca_policy_populate (cert_id); } widget = gtk_builder_get_object (certificate_properties_window_gtkb, "certificate_properties_dialog"); g_object_set_data (G_OBJECT(widget), "cert_id", g_strdup_printf("%" G_GUINT64_FORMAT, cert_id)); GObject *close_btn = gtk_builder_get_object (certificate_properties_window_gtkb, "button2"); if (close_btn) g_signal_connect_swapped (close_btn, "clicked", G_CALLBACK (gtk_window_destroy), widget); gtk_window_set_transient_for (GTK_WINDOW (widget), dialog_get_main_window ()); gtk_widget_set_visible(GTK_WIDGET(widget), TRUE); } void __certificate_properties_populate (const char *certificate_pem) { GObject *widget = NULL; struct tm tim; /* gnomint_gmtime() fills this directly on every platform */ TlsCert * cert = NULL; gchar model_time_str[100]; gchar * aux; UInt160 * serial_number; cert = tls_parse_cert_pem (certificate_pem); /* Prefer the database's authoritative 64-bit date over GnuTLS's * (2038-capped on a 32-bit build) parse. A NULL column (date not * representable when stored) leaves the re-parsed value in place — correct * on a 64-bit host, flagged uncertain on a 32-bit one. */ if (cp_have_activation) cert->activation_time = cp_db_activation; if (cp_have_expiration) cert->expiration_time = cp_db_expiration; serial_number = &cert->serial_number; widget = gtk_builder_get_object (certificate_properties_window_gtkb, "certActivationDateLabel"); gnomint_gmtime (cert->activation_time, &tim); strftime (model_time_str, 100, _("%m/%d/%Y %H:%M GMT"), &tim); __certificate_properties_set_date_label (GTK_LABEL (widget), model_time_str, ! cp_have_activation && gnomint_time_display_is_uncertain (cert->activation_time)); widget = gtk_builder_get_object (certificate_properties_window_gtkb, "certExpirationDateLabel"); gnomint_gmtime (cert->expiration_time, &tim); strftime (model_time_str, 100, _("%m/%d/%Y %H:%M GMT"), &tim); __certificate_properties_set_date_label (GTK_LABEL (widget), model_time_str, ! cp_have_expiration && gnomint_time_display_is_uncertain (cert->expiration_time)); widget = gtk_builder_get_object (certificate_properties_window_gtkb, "certSNLabel"); aux = uint160_strdup_printf (serial_number); gtk_label_set_text (GTK_LABEL(widget), aux); g_free (aux); widget = gtk_builder_get_object (certificate_properties_window_gtkb, "certSubjectCNLabel"); gtk_label_set_text (GTK_LABEL(widget), cert->cn); widget = gtk_builder_get_object (certificate_properties_window_gtkb, "certSubjectOLabel"); gtk_label_set_text (GTK_LABEL(widget), cert->o); widget = gtk_builder_get_object (certificate_properties_window_gtkb, "certSubjectOULabel"); gtk_label_set_text (GTK_LABEL(widget), cert->ou); widget = gtk_builder_get_object (certificate_properties_window_gtkb, "certSubjectEmailLabel"); gtk_label_set_text (GTK_LABEL(widget), cert->emailAddress ? cert->emailAddress : ""); // Display Subject Alternative Names if present if (cert->subject_alt_name && cert->subject_alt_name[0]) { widget = gtk_builder_get_object (certificate_properties_window_gtkb, "certSubjectAltNameLabel"); gtk_label_set_text (GTK_LABEL(widget), cert->subject_alt_name); } widget = gtk_builder_get_object (certificate_properties_window_gtkb, "certIssuerCNLabel"); gtk_label_set_text (GTK_LABEL(widget), cert->i_cn); widget = gtk_builder_get_object (certificate_properties_window_gtkb, "certIssuerOLabel"); gtk_label_set_text (GTK_LABEL(widget), cert->i_o); widget = gtk_builder_get_object (certificate_properties_window_gtkb, "certIssuerOULabel"); gtk_label_set_text (GTK_LABEL(widget), cert->i_ou); widget = gtk_builder_get_object (certificate_properties_window_gtkb, "certIssuerEmailLabel"); gtk_label_set_text (GTK_LABEL(widget), cert->i_emailAddress ? cert->i_emailAddress : ""); widget = gtk_builder_get_object (certificate_properties_window_gtkb, "sha1Label"); gtk_label_set_text (GTK_LABEL(widget), cert->sha1); widget = gtk_builder_get_object (certificate_properties_window_gtkb, "md5Label"); gtk_label_set_text (GTK_LABEL(widget), cert->md5); widget = gtk_builder_get_object (certificate_properties_window_gtkb, "sha256Label"); gtk_label_set_text (GTK_LABEL(widget), cert->sha256); widget = gtk_builder_get_object (certificate_properties_window_gtkb, "sha512Label"); gtk_label_set_text (GTK_LABEL(widget), cert->sha512); if (g_list_length (cert->uses)) { GValue * valtrue = g_new0 (GValue, 1); int i; g_value_init (valtrue, G_TYPE_BOOLEAN); g_value_set_boolean (valtrue, TRUE); widget = gtk_builder_get_object (certificate_properties_window_gtkb, "certPropSeparator"); gtk_widget_set_visible(GTK_WIDGET(widget), TRUE); widget = gtk_builder_get_object (certificate_properties_window_gtkb, "vboxCertCapabilities"); for (i = g_list_length(cert->uses) - 1; i >= 0; i--) { GtkLabel *label = NULL; label = GTK_LABEL(gtk_label_new ((gchar *) g_list_nth_data (cert->uses, i))); gtk_label_set_xalign (label, 0.0); gtk_label_set_yalign (label, 0.5); gtk_box_append(GTK_BOX(widget), GTK_WIDGET(label)); } gtk_widget_set_visible(GTK_WIDGET(widget), TRUE); g_free (valtrue); } tls_cert_free (cert); return; } G_MODULE_EXPORT void certificate_properties_close_clicked (const char *certificate_pem) { GObject *widget = gtk_builder_get_object (certificate_properties_window_gtkb, "certificate_properties_dialog"); gtk_window_destroy(GTK_WINDOW(GTK_WIDGET(widget))); } gchar * __certificate_properties_dump_raw_data(const unsigned char *buffer, size_t buffer_size) { const gint BYTES_PER_LINE = 16; gchar *result = g_new0 (gchar, 4 * buffer_size); size_t i; gchar *result_iterator = result; if (!result) { fprintf(stderr, "Error: (%s,%d): %s\n", __FILE__, __LINE__, "Not enough memory\n"); return result; } for (i = 0; i < buffer_size; i++) { size_t remaining = 4 * buffer_size - (result_iterator - result); int written = snprintf(result_iterator, remaining, "%02x:", buffer[i]); if (written < 0 || written >= (int) remaining) break; result_iterator += written; if ((i % BYTES_PER_LINE) == BYTES_PER_LINE - 1) *result_iterator++ = '\n'; } if ((i % BYTES_PER_LINE) == 0) *(result_iterator - 1) = 0; return result; } const gchar * __certificate_properties_lookup_oid_label(const certificate_properties_oid_label_couple_t *oid_label_table, const gchar *oid) { const certificate_properties_oid_label_couple_t *i; if (!oid) return 0; for (i = certificate_properties_oid_label_table; i->oid; i++) if (strcmp(i->oid, oid) == 0) break; if (i->label) return _(i->label); else return _("Unknown"); } certificate_properties_fill_t __certificate_properties_lookup_oid_function (const certificate_properties_oid_function_couple_t *oid_func_table, const gchar *oid) { const certificate_properties_oid_function_couple_t *i; if (!oid) return 0; for (i = oid_func_table; i->oid; i++) if (strcmp(i->oid, oid) == 0) break; return i->function; } gchar * __certificate_properties_dump_RDNSequence(const gchar *buffer, gsize buffer_size) { const char ESCAPE = '\\'; const char SEPARATOR = ','; gchar *result = g_new0 (gchar, buffer_size + 1); gsize i; gchar *result_iterator = result; gint previous_was_escape = 0; if (! result) { fprintf(stderr, "Error: (%s,%d): %s\n", __FILE__, __LINE__, "Not enough memory\n"); return result; } for (i = 0; i < buffer_size; i++) { if (previous_was_escape) { *result_iterator++ = *buffer++; previous_was_escape = 0; } else if (*buffer == ESCAPE) { buffer++; previous_was_escape = 1; } else if (*buffer == SEPARATOR) { *result_iterator++ = '\n'; buffer++; } else *result_iterator++ = *buffer++; } *result_iterator++ = 0; return result; } gchar * __certificate_properties_dump_key_usage(guint key_usage) { const gint BUFFER_SIZE_MAX = 1024; gchar *result = g_new0 (gchar, BUFFER_SIZE_MAX + 1); gchar *buffer_iterator = result; if (key_usage & GNUTLS_KEY_DIGITAL_SIGNATURE) buffer_iterator += sprintf(buffer_iterator, "%s\n", _("Digital signature")); if (key_usage & GNUTLS_KEY_NON_REPUDIATION) buffer_iterator += sprintf(buffer_iterator, "%s\n", _("Non repudiation")); if (key_usage & GNUTLS_KEY_KEY_ENCIPHERMENT) buffer_iterator += sprintf(buffer_iterator, "%s\n", _("Key encipherment")); if (key_usage & GNUTLS_KEY_DATA_ENCIPHERMENT) buffer_iterator += sprintf(buffer_iterator, "%s\n", _("Data encipherment")); if (key_usage & GNUTLS_KEY_KEY_AGREEMENT) buffer_iterator += sprintf(buffer_iterator, "%s\n", _("Key agreement")); if (key_usage & GNUTLS_KEY_KEY_CERT_SIGN) buffer_iterator += sprintf(buffer_iterator, "%s\n", _("Certificate signing")); if (key_usage & GNUTLS_KEY_CRL_SIGN) buffer_iterator += sprintf(buffer_iterator, "%s\n", _("CRL signing")); if (key_usage & GNUTLS_KEY_ENCIPHER_ONLY) buffer_iterator += sprintf(buffer_iterator, "%s\n", _("Key encipherment only")); if (key_usage & GNUTLS_KEY_DECIPHER_ONLY) buffer_iterator += sprintf(buffer_iterator, "%s\n", _("Key decipherment only")); *(buffer_iterator - 1) = 0; return result; } void __certificate_properties_fill_cert_version(GnomintPropNode *parent, gnutls_x509_crt_t *certificate) { gint result; gchar value[4]; result = gnutls_x509_crt_get_version(*certificate); sprintf(value, "v%d", result); GnomintPropNode *child = gnomint_prop_node_new(_("Version"), value); g_list_store_append(gnomint_prop_node_get_children(parent), child); g_object_unref(child); } void __certificate_properties_fill_cert_serialNumber(GnomintPropNode *parent, gnutls_x509_crt_t *certificate) { gint result; gsize buffer_size = 0; gchar *buffer = NULL; gchar *value = NULL; result = gnutls_x509_crt_get_serial(*certificate, 0, &buffer_size); if (result != GNUTLS_E_SHORT_MEMORY_BUFFER) { fprintf(stderr, "Error: (%s,%d): %s\n", __FILE__, __LINE__, gnutls_strerror(result)); return; } buffer = g_new0(gchar, buffer_size); if (!buffer) { fprintf(stderr, "Error: (%s,%d): %s\n", __FILE__, __LINE__, "Not enough memory!"); return; } result = gnutls_x509_crt_get_serial(*certificate, buffer, &buffer_size); if (result < 0) { fprintf(stderr, "Error: (%s,%d): %s\n", __FILE__, __LINE__, gnutls_strerror(result)); return; } value = __certificate_properties_dump_raw_data((unsigned char *) buffer, buffer_size); g_free(buffer); GnomintPropNode *child = gnomint_prop_node_new(_("Serial Number"), value); g_list_store_append(gnomint_prop_node_get_children(parent), child); g_object_unref(child); g_free(value); } void __certificate_properties_fill_cert_signature(GnomintPropNode *parent, gnutls_x509_crt_t *certificate) { int result; const gchar *name = NULL; result = gnutls_x509_crt_get_signature_algorithm(*certificate); name = gnutls_sign_algorithm_get_name(result); GnomintPropNode *sig_node = gnomint_prop_node_new(_("Signature"), NULL); g_list_store_append(gnomint_prop_node_get_children(parent), sig_node); GnomintPropNode *alg_child = gnomint_prop_node_new(_("Algorithm"), name); g_list_store_append(gnomint_prop_node_get_children(sig_node), alg_child); g_object_unref(alg_child); GnomintPropNode *params_child = gnomint_prop_node_new(_("Parameters"), _("(unknown)")); g_list_store_append(gnomint_prop_node_get_children(sig_node), params_child); g_object_unref(params_child); g_object_unref(sig_node); } void __certificate_properties_fill_cert_issuer(GnomintPropNode *parent, gnutls_x509_crt_t *certificate) { int result; size_t buffer_size = 0; gchar * buffer = NULL; gchar * value = NULL; result = gnutls_x509_crt_get_issuer_dn(*certificate, 0, &buffer_size); if (result != GNUTLS_E_SHORT_MEMORY_BUFFER) { fprintf(stderr, "Error: (%s,%d): %s\n", __FILE__, __LINE__, gnutls_strerror(result)); return; } buffer = g_new (gchar, buffer_size); if (!buffer) { fprintf(stderr, "Error: (%s,%d): %s\n", __FILE__, __LINE__, "Not enough memory!"); return; } result = gnutls_x509_crt_get_issuer_dn(*certificate, buffer, &buffer_size); if (result < 0) { fprintf(stderr, "Error: (%s,%d): %s\n", __FILE__, __LINE__, gnutls_strerror(result)); return; } value = __certificate_properties_dump_RDNSequence(buffer, buffer_size); g_free(buffer); GnomintPropNode *child = gnomint_prop_node_new(_("Issuer"), value); g_list_store_append(gnomint_prop_node_get_children(parent), child); g_object_unref(child); g_free(value); } void __certificate_properties_fill_cert_validity (GnomintPropNode *parent, gnutls_x509_crt_t *certificate) { gint64 not_before, not_after; struct tm tm; gchar not_before_str[64]; gchar not_after_str[64]; gboolean nb_uncertain, na_uncertain; gchar *nb_val, *na_val; /* Prefer the database's 64-bit value per field; fall back to GnuTLS's * time_t parse (2038-capped on a 32-bit build) where the column is NULL. */ if (cp_have_activation) not_before = cp_db_activation; else not_before = gnutls_x509_crt_get_activation_time(*certificate); if (cp_have_expiration) not_after = cp_db_expiration; else not_after = gnutls_x509_crt_get_expiration_time(*certificate); gnomint_gmtime (not_before, &tm); strftime (not_before_str, sizeof(not_before_str), "%a %b %d %H:%M:%S %Y GMT", &tm); gnomint_gmtime (not_after, &tm); strftime (not_after_str, sizeof(not_after_str), "%a %b %d %H:%M:%S %Y GMT", &tm); nb_uncertain = ! cp_have_activation && gnomint_time_display_is_uncertain (not_before); na_uncertain = ! cp_have_expiration && gnomint_time_display_is_uncertain (not_after); GnomintPropNode *validity_node = gnomint_prop_node_new(_("Validity"), NULL); g_list_store_append(gnomint_prop_node_get_children(parent), validity_node); nb_val = nb_uncertain ? g_strdup_printf ("%s \xE2\x9A\xA0", not_before_str) : g_strdup (not_before_str); GnomintPropNode *nb_child = gnomint_prop_node_new(_("Not Before"), nb_val); g_free (nb_val); g_list_store_append(gnomint_prop_node_get_children(validity_node), nb_child); g_object_unref(nb_child); na_val = na_uncertain ? g_strdup_printf ("%s \xE2\x9A\xA0", not_after_str) : g_strdup (not_after_str); GnomintPropNode *na_child = gnomint_prop_node_new(_("Not After"), na_val); g_free (na_val); g_list_store_append(gnomint_prop_node_get_children(validity_node), na_child); g_object_unref(na_child); if (nb_uncertain || na_uncertain) { GnomintPropNode *warn = gnomint_prop_node_new(_("Note"), _("This 32-bit build cannot represent dates after 2038-01-19, so a value " "marked \xE2\x9A\xA0 may be a later date that overflowed and is inaccurate.")); g_list_store_append(gnomint_prop_node_get_children(validity_node), warn); g_object_unref(warn); } g_object_unref(validity_node); } void __certificate_properties_fill_cert_subject (GnomintPropNode *parent, gnutls_x509_crt_t *certificate) { int result; size_t buffer_size = 0; gchar *buffer = NULL; gchar *value = NULL; result = gnutls_x509_crt_get_dn(*certificate, 0, &buffer_size); if (result != GNUTLS_E_SHORT_MEMORY_BUFFER) { fprintf(stderr, "Error: (%s,%d): %s\n", __FILE__, __LINE__, gnutls_strerror(result)); return; } buffer = g_new0 (gchar, buffer_size); if (!buffer) { fprintf(stderr, "Error: (%s,%d): %s\n", __FILE__, __LINE__, "Not enough memory!"); return; } result = gnutls_x509_crt_get_dn(*certificate, buffer, &buffer_size); if (result < 0) { fprintf(stderr, "Error: (%s,%d): %s\n", __FILE__, __LINE__, gnutls_strerror(result)); return; } value = __certificate_properties_dump_RDNSequence(buffer, buffer_size); g_free(buffer); GnomintPropNode *child = gnomint_prop_node_new(_("Subject"), value); g_list_store_append(gnomint_prop_node_get_children(parent), child); g_object_unref(child); g_free(value); } void __certificate_properties_fill_cert_subjectPublicKeyInfo (GnomintPropNode *parent, gnutls_x509_crt_t *certificate) { int result; unsigned int bits = 0; const gchar * name = NULL; gchar *value; gnutls_datum_t modulus, publicExponent; gnutls_datum_t p, q, g, y; result = gnutls_x509_crt_get_pk_algorithm(*certificate, &bits); name = gnutls_pk_algorithm_get_name(result); GnomintPropNode *spki_node = gnomint_prop_node_new(_("Subject Public Key Info"), NULL); g_list_store_append(gnomint_prop_node_get_children(parent), spki_node); GnomintPropNode *alg_node = gnomint_prop_node_new(_("Algorithm"), NULL); g_list_store_append(gnomint_prop_node_get_children(spki_node), alg_node); GnomintPropNode *alg_child = gnomint_prop_node_new(_("Algorithm"), name); g_list_store_append(gnomint_prop_node_get_children(alg_node), alg_child); g_object_unref(alg_child); switch (result) { case GNUTLS_PK_RSA: { GnomintPropNode *params_child = gnomint_prop_node_new(_("Parameters"), _("(unknown)")); g_list_store_append(gnomint_prop_node_get_children(alg_node), params_child); g_object_unref(params_child); GnomintPropNode *rsa_node = gnomint_prop_node_new(_("RSA PublicKey"), NULL); g_list_store_append(gnomint_prop_node_get_children(spki_node), rsa_node); result = gnutls_x509_crt_get_pk_rsa_raw(*certificate, &modulus, &publicExponent); if (result < 0) { fprintf(stderr, "Error: (%s,%d): %s\n", __FILE__, __LINE__, gnutls_strerror(result)); g_object_unref(rsa_node); break; } value = __certificate_properties_dump_raw_data(modulus.data, modulus.size); gnutls_free(modulus.data); GnomintPropNode *mod_child = gnomint_prop_node_new(_("Modulus"), value); g_list_store_append(gnomint_prop_node_get_children(rsa_node), mod_child); g_object_unref(mod_child); g_free(value); value = __certificate_properties_dump_raw_data(publicExponent.data, publicExponent.size); gnutls_free(publicExponent.data); GnomintPropNode *exp_child = gnomint_prop_node_new(_("Public Exponent"), value); g_list_store_append(gnomint_prop_node_get_children(rsa_node), exp_child); g_object_unref(exp_child); g_free(value); g_object_unref(rsa_node); break; } case GNUTLS_PK_DSA: { result = gnutls_x509_crt_get_pk_dsa_raw(*certificate, &p, &q, &g, &y); if (result < 0) { fprintf(stderr, "Error: (%s,%d): %s\n", __FILE__, __LINE__, gnutls_strerror(result)); break; } GnomintPropNode *params_node = gnomint_prop_node_new(_("Parameters"), NULL); g_list_store_append(gnomint_prop_node_get_children(alg_node), params_node); value = __certificate_properties_dump_raw_data(p.data, p.size); gnutls_free(p.data); GnomintPropNode *p_child = gnomint_prop_node_new("p", value); g_list_store_append(gnomint_prop_node_get_children(params_node), p_child); g_object_unref(p_child); g_free(value); value = __certificate_properties_dump_raw_data(q.data, q.size); gnutls_free(q.data); GnomintPropNode *q_child = gnomint_prop_node_new("p", value); g_list_store_append(gnomint_prop_node_get_children(params_node), q_child); g_object_unref(q_child); g_free(value); value = __certificate_properties_dump_raw_data(g.data, g.size); gnutls_free(g.data); GnomintPropNode *g_child = gnomint_prop_node_new("g", value); g_list_store_append(gnomint_prop_node_get_children(params_node), g_child); g_object_unref(g_child); g_free(value); g_object_unref(params_node); value = __certificate_properties_dump_raw_data(y.data, y.size); gnutls_free(y.data); GnomintPropNode *dsa_child = gnomint_prop_node_new(_("DSA PublicKey"), value); g_list_store_append(gnomint_prop_node_get_children(spki_node), dsa_child); g_object_unref(dsa_child); g_free(value); break; } default: { GnomintPropNode *params_child = gnomint_prop_node_new(_("Parameters"), _("(unknown)")); g_list_store_append(gnomint_prop_node_get_children(alg_node), params_child); g_object_unref(params_child); GnomintPropNode *spk_child = gnomint_prop_node_new(_("Subject Public Key"), _("(unknown)")); g_list_store_append(gnomint_prop_node_get_children(spki_node), spk_child); g_object_unref(spk_child); break; } } g_object_unref(alg_node); g_object_unref(spki_node); } void __certificate_properties_fill_cert_issuerUniqueID (GnomintPropNode *parent, gnutls_x509_crt_t *certificate) { GnomintPropNode *child = gnomint_prop_node_new(_("Issuer Unique ID"), _("(unknown)")); g_list_store_append(gnomint_prop_node_get_children(parent), child); g_object_unref(child); (void)certificate; } void __certificate_properties_fill_cert_subjectUniqueID (GnomintPropNode *parent, gnutls_x509_crt_t *certificate) { GnomintPropNode *child = gnomint_prop_node_new(_("Subject Unique ID"), _("(unknown)")); g_list_store_append(gnomint_prop_node_get_children(parent), child); g_object_unref(child); (void)certificate; } void __certificate_properties_fill_cert_ext_SubjectKeyIdentifier (GnomintPropNode *parent, gnutls_x509_crt_t *certificate) { guint critical; gint result; const gint BUFFER_SIZE_MAX = 256; gchar buffer[BUFFER_SIZE_MAX]; gsize buffer_size = BUFFER_SIZE_MAX; gchar *hex_buffer; result = gnutls_x509_crt_get_subject_key_id(*certificate, buffer, &buffer_size, &critical); if (result < 0) { fprintf(stderr, "Error: %s\n", gnutls_strerror(result)); return; } hex_buffer = __certificate_properties_dump_raw_data((guchar *) buffer, buffer_size); GnomintPropNode *child = gnomint_prop_node_new(_("Value"), hex_buffer); g_list_store_append(gnomint_prop_node_get_children(parent), child); g_object_unref(child); g_free(hex_buffer); } void __certificate_properties_fill_cert_ext_KeyUsage (GnomintPropNode *parent, gnutls_x509_crt_t *certificate) { guint critical; guint key_usage; gint result; gchar * buffer = NULL; result = gnutls_x509_crt_get_key_usage(*certificate, &key_usage, &critical); if (result < 0) { fprintf(stderr, "Error: %s\n", gnutls_strerror(result)); return; } buffer = __certificate_properties_dump_key_usage(key_usage); GnomintPropNode *child = gnomint_prop_node_new(_("Value"), buffer); g_list_store_append(gnomint_prop_node_get_children(parent), child); g_object_unref(child); g_free(buffer); } void __certificate_properties_fill_cert_ext_SubjectAltName (GnomintPropNode *parent, gnutls_x509_crt_t *certificate) { gint i = 0; while (1) { gint result; guint critical; const gint BUFFER_SIZE_MAX = 1024; gchar buffer[BUFFER_SIZE_MAX]; gsize buffer_size = BUFFER_SIZE_MAX; gchar *hex_buffer; result = gnutls_x509_crt_get_subject_alt_name(*certificate, i, buffer, &buffer_size, &critical); if (result == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) { break; } if (result == GNUTLS_E_SHORT_MEMORY_BUFFER) { fprintf(stderr, "Error: (%s,%d): %s\n", __FILE__, __LINE__, gnutls_strerror(result)); break; } if (result < 0) { fprintf(stderr, "Error: (%s,%d): %s\n", __FILE__, __LINE__, gnutls_strerror(result)); break; } switch (result) { case GNUTLS_SAN_DNSNAME: { GnomintPropNode *child = gnomint_prop_node_new(_("DNS Name"), buffer); g_list_store_append(gnomint_prop_node_get_children(parent), child); g_object_unref(child); break; } case GNUTLS_SAN_RFC822NAME: { GnomintPropNode *child = gnomint_prop_node_new(_("RFC822 Name"), buffer); g_list_store_append(gnomint_prop_node_get_children(parent), child); g_object_unref(child); break; } case GNUTLS_SAN_URI: { GnomintPropNode *child = gnomint_prop_node_new(_("URI"), buffer); g_list_store_append(gnomint_prop_node_get_children(parent), child); g_object_unref(child); break; } case GNUTLS_SAN_IPADDRESS: // Convert binary IP to readable format if (buffer_size == 4) { // IPv4 gchar ip_str[INET_ADDRSTRLEN]; if (inet_ntop(AF_INET, buffer, ip_str, sizeof(ip_str))) { GnomintPropNode *child = gnomint_prop_node_new(_("IP Address"), ip_str); g_list_store_append(gnomint_prop_node_get_children(parent), child); g_object_unref(child); } else { hex_buffer = __certificate_properties_dump_raw_data ((guchar *) buffer, buffer_size); GnomintPropNode *child = gnomint_prop_node_new(_("IP"), hex_buffer); g_list_store_append(gnomint_prop_node_get_children(parent), child); g_object_unref(child); g_free(hex_buffer); } } else if (buffer_size == 16) { // IPv6 gchar ip_str[INET6_ADDRSTRLEN]; if (inet_ntop(AF_INET6, buffer, ip_str, sizeof(ip_str))) { GnomintPropNode *child = gnomint_prop_node_new(_("IP Address"), ip_str); g_list_store_append(gnomint_prop_node_get_children(parent), child); g_object_unref(child); } else { hex_buffer = __certificate_properties_dump_raw_data ((guchar *) buffer, buffer_size); GnomintPropNode *child = gnomint_prop_node_new(_("IP"), hex_buffer); g_list_store_append(gnomint_prop_node_get_children(parent), child); g_object_unref(child); g_free(hex_buffer); } } else { // Unknown format, fall back to hex hex_buffer = __certificate_properties_dump_raw_data ((guchar *) buffer, buffer_size); GnomintPropNode *child = gnomint_prop_node_new(_("IP"), hex_buffer); g_list_store_append(gnomint_prop_node_get_children(parent), child); g_object_unref(child); g_free(hex_buffer); } break; case GNUTLS_SAN_DN: { hex_buffer = __certificate_properties_dump_RDNSequence (buffer, buffer_size); GnomintPropNode *child = gnomint_prop_node_new(_("Directory Name"), hex_buffer); g_list_store_append(gnomint_prop_node_get_children(parent), child); g_object_unref(child); g_free(hex_buffer); break; } default: { hex_buffer = __certificate_properties_dump_raw_data((guchar *) buffer, buffer_size); GnomintPropNode *child = gnomint_prop_node_new(_("Value"), hex_buffer); g_list_store_append(gnomint_prop_node_get_children(parent), child); g_object_unref(child); g_free(hex_buffer); break; } } i++; } } void __certificate_properties_fill_cert_ext_BasicConstraints (GnomintPropNode *parent, gnutls_x509_crt_t *certificate) { guint critical; gint result; guint ca; gint path_len_constraint; gchar *pathlen_as_string = NULL; gchar *ca_as_string = NULL; result = gnutls_x509_crt_get_basic_constraints(*certificate, &critical, &ca, &path_len_constraint); if (result < 0) { fprintf(stderr, "Error: %s\n", gnutls_strerror(result)); return; } ca_as_string = ca ? _("TRUE") : _("FALSE"); pathlen_as_string = g_strdup_printf ("%d", path_len_constraint); GnomintPropNode *ca_child = gnomint_prop_node_new(_("CA"), ca_as_string); g_list_store_append(gnomint_prop_node_get_children(parent), ca_child); g_object_unref(ca_child); GnomintPropNode *pl_child = gnomint_prop_node_new(_("Path Length Constraint"), pathlen_as_string); g_list_store_append(gnomint_prop_node_get_children(parent), pl_child); g_object_unref(pl_child); g_free (pathlen_as_string); } void __certificate_properties_fill_cert_ext_CRLDistributionPoints (GnomintPropNode *parent, gnutls_x509_crt_t *certificate) { gint i; for (i = 0;; i++) { gint result; guint critical; const gint BUFFER_SIZE_MAX = 1024; gchar buffer[BUFFER_SIZE_MAX]; gsize buffer_size = BUFFER_SIZE_MAX; gchar *hex_buffer; result = gnutls_x509_crt_get_crl_dist_points(*certificate, i, buffer, &buffer_size, 0, &critical); if (result == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) break; if (result == GNUTLS_E_SHORT_MEMORY_BUFFER) { fprintf(stderr, "Error: (%s,%d): %s\n", __FILE__, __LINE__, gnutls_strerror(result)); break; } if (result < 0) { fprintf(stderr, "Error: (%s,%d): %s\n", __FILE__, __LINE__, gnutls_strerror(result)); break; } switch (result) { case GNUTLS_SAN_DNSNAME: { GnomintPropNode *child = gnomint_prop_node_new(_("DNS Name"), buffer); g_list_store_append(gnomint_prop_node_get_children(parent), child); g_object_unref(child); break; } case GNUTLS_SAN_RFC822NAME: { GnomintPropNode *child = gnomint_prop_node_new(_("RFC822 Name"), buffer); g_list_store_append(gnomint_prop_node_get_children(parent), child); g_object_unref(child); break; } case GNUTLS_SAN_URI: { GnomintPropNode *child = gnomint_prop_node_new(_("URI"), buffer); g_list_store_append(gnomint_prop_node_get_children(parent), child); g_object_unref(child); break; } case GNUTLS_SAN_IPADDRESS: { hex_buffer = __certificate_properties_dump_raw_data ((guchar *) buffer, buffer_size); GnomintPropNode *child = gnomint_prop_node_new(_("IP Address"), hex_buffer); g_list_store_append(gnomint_prop_node_get_children(parent), child); g_object_unref(child); g_free(hex_buffer); break; } case GNUTLS_SAN_DN: { hex_buffer = __certificate_properties_dump_RDNSequence (buffer, buffer_size); GnomintPropNode *child = gnomint_prop_node_new(_("Directory Name"), hex_buffer); g_list_store_append(gnomint_prop_node_get_children(parent), child); g_object_unref(child); g_free(hex_buffer); break; } default: { hex_buffer = __certificate_properties_dump_raw_data((guchar *) buffer, buffer_size); GnomintPropNode *child = gnomint_prop_node_new(_("Value"), hex_buffer); g_list_store_append(gnomint_prop_node_get_children(parent), child); g_object_unref(child); g_free(hex_buffer); break; } } } } void __certificate_properties_fill_cert_ext_AuthorityKeyIdentifier (GnomintPropNode *parent, gnutls_x509_crt_t *certificate) { gint result; guint critical; const gint BUFFER_SIZE_MAX = 256; gchar buffer[BUFFER_SIZE_MAX]; gsize buffer_size = BUFFER_SIZE_MAX; gchar *hex_buffer = NULL; result = gnutls_x509_crt_get_authority_key_id(*certificate, buffer, &buffer_size, &critical); if (result < 0) { fprintf(stderr, "Error: %s\n", gnutls_strerror(result)); return; } hex_buffer = __certificate_properties_dump_raw_data((guchar *) buffer, buffer_size); GnomintPropNode *child = gnomint_prop_node_new(_("Value"), hex_buffer); g_list_store_append(gnomint_prop_node_get_children(parent), child); g_object_unref(child); g_free(hex_buffer); } void __certificate_properties_fill_cert_ext_ExtKeyUsage (GnomintPropNode *parent, gnutls_x509_crt_t *certificate) { gint i; const gint BUFFER_SIZE_MAX = 1024; gchar usage_buffer[BUFFER_SIZE_MAX]; gchar *usage_buffer_iterator = usage_buffer; for (i = 0;; i++) { gint result; gchar buffer[BUFFER_SIZE_MAX]; gsize buffer_size = BUFFER_SIZE_MAX; const gchar *label = NULL; result = gnutls_x509_crt_get_key_purpose_oid(*certificate, i, buffer, &buffer_size, 0); if (result == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) { break; } if (result == GNUTLS_E_SHORT_MEMORY_BUFFER) { fprintf(stderr, "Error: (%s,%d): %s\n", __FILE__, __LINE__, gnutls_strerror(result)); return; } if (result < 0) { fprintf(stderr, "Error: (%s,%d): %s\n", __FILE__, __LINE__, gnutls_strerror(result)); return; } label = __certificate_properties_lookup_oid_label(certificate_properties_oid_label_table, buffer); usage_buffer_iterator += sprintf(usage_buffer_iterator, "%s\n", label); } *(usage_buffer_iterator - 1) = 0; GnomintPropNode *child = gnomint_prop_node_new(_("Value"), usage_buffer); g_list_store_append(gnomint_prop_node_get_children(parent), child); g_object_unref(child); } void __certificate_properties_fill_cert_ext (GnomintPropNode *parent, gnutls_x509_crt_t *certificate) { gint result; const gint OID_SIZE_MAX = 128; gchar oid[OID_SIZE_MAX]; gsize oid_size = OID_SIZE_MAX; guint critical; guint i; GnomintPropNode *ext_node = NULL; for (i = 0;; i++) { const gchar *label = NULL; const gchar *critical_as_string = NULL; certificate_properties_fill_t function; oid_size = OID_SIZE_MAX; result = gnutls_x509_crt_get_extension_info(*certificate, i, oid, &oid_size, &critical); if (result == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) break; if (result < 0) { fprintf(stderr, "Error: %s\n", gnutls_strerror(result)); break; } if (i == 0) { ext_node = gnomint_prop_node_new(_("Extensions"), NULL); g_list_store_append(gnomint_prop_node_get_children(parent), ext_node); } label = __certificate_properties_lookup_oid_label(certificate_properties_oid_label_table, oid); if (!label) label = oid; GnomintPropNode *ext_item = gnomint_prop_node_new(label, NULL); g_list_store_append(gnomint_prop_node_get_children(ext_node), ext_item); critical_as_string = critical ? _("TRUE") : _("FALSE"); GnomintPropNode *crit_child = gnomint_prop_node_new(_("Critical"), critical_as_string); g_list_store_append(gnomint_prop_node_get_children(ext_item), crit_child); g_object_unref(crit_child); function = __certificate_properties_lookup_oid_function(certificate_properties_oid_function_table, oid); if (function) function(ext_item, certificate); else { const gint BUFFER_SIZE_MAX = 1024; gchar buffer[BUFFER_SIZE_MAX]; gsize buffer_size = BUFFER_SIZE_MAX; gchar *hex_buffer = NULL; gnutls_x509_crt_get_extension_data(*certificate, i, buffer, &buffer_size); hex_buffer = __certificate_properties_dump_raw_data((unsigned char *) buffer, buffer_size); GnomintPropNode *val_child = gnomint_prop_node_new(_("Value"), hex_buffer); g_list_store_append(gnomint_prop_node_get_children(ext_item), val_child); g_object_unref(val_child); g_free(hex_buffer); } g_object_unref(ext_item); } if (ext_node) g_object_unref(ext_node); } void __certificate_properties_fill_cert (GListStore *root_store, gnutls_x509_crt_t *certificate) { GnomintPropNode *cert_node = gnomint_prop_node_new(_("Certificate"), NULL); g_list_store_append(root_store, cert_node); __certificate_properties_fill_cert_version(cert_node, certificate); __certificate_properties_fill_cert_serialNumber(cert_node, certificate); __certificate_properties_fill_cert_signature(cert_node, certificate); __certificate_properties_fill_cert_issuer(cert_node, certificate); __certificate_properties_fill_cert_validity(cert_node, certificate); __certificate_properties_fill_cert_subject(cert_node, certificate); __certificate_properties_fill_cert_subjectPublicKeyInfo(cert_node, certificate); __certificate_properties_fill_cert_issuerUniqueID(cert_node, certificate); __certificate_properties_fill_cert_subjectUniqueID(cert_node, certificate); __certificate_properties_fill_cert_ext(cert_node, certificate); g_object_unref(cert_node); } void __certificate_properties_fill_signatureAlgorithm (GListStore *root_store, gnutls_x509_crt_t *certificate) { gint result; const gchar *name = NULL; result = gnutls_x509_crt_get_signature_algorithm(*certificate); name = gnutls_sign_algorithm_get_name(result); GnomintPropNode *sigalg_node = gnomint_prop_node_new(_("Signature Algorithm"), NULL); g_list_store_append(root_store, sigalg_node); GnomintPropNode *alg_child = gnomint_prop_node_new(_("Algorithm"), name); g_list_store_append(gnomint_prop_node_get_children(sigalg_node), alg_child); g_object_unref(alg_child); GnomintPropNode *params_child = gnomint_prop_node_new(_("Parameters"), _("(unknown)")); g_list_store_append(gnomint_prop_node_get_children(sigalg_node), params_child); g_object_unref(params_child); g_object_unref(sigalg_node); } void __certificate_properties_fill_signatureValue (GListStore *root_store, gnutls_x509_crt_t *certificate) { gint result; gchar *buffer = NULL; gsize buffer_size = 0; gchar *hex_buffer = NULL; result = gnutls_x509_crt_get_signature(*certificate, 0, &buffer_size); if (result != GNUTLS_E_SHORT_MEMORY_BUFFER) { fprintf(stderr, "Error: (%s,%d): %s\n", __FILE__, __LINE__, gnutls_strerror(result)); return; } buffer = g_new0 (gchar, buffer_size); result = gnutls_x509_crt_get_signature(*certificate, buffer, &buffer_size); if (result < 0) { fprintf(stderr, "Error: (%s,%d): %s\n", __FILE__, __LINE__, gnutls_strerror(result)); return; } hex_buffer = __certificate_properties_dump_raw_data((guchar *) buffer, buffer_size); GnomintPropNode *sig_child = gnomint_prop_node_new(_("Signature"), hex_buffer); g_list_store_append(root_store, sig_child); g_object_unref(sig_child); g_free(hex_buffer); } void __certificate_properties_fill_certificate(GListStore *root_store, gnutls_x509_crt_t *certificate) { __certificate_properties_fill_cert(root_store, certificate); __certificate_properties_fill_signatureAlgorithm(root_store, certificate); __certificate_properties_fill_signatureValue(root_store, certificate); } /* ------------------------------------------------------------------ */ /* GtkColumnView factory callbacks for the certificate details tree */ /* ------------------------------------------------------------------ */ /* Helper: extract the GnomintPropNode from a GtkListItem. The item in * a GtkTreeListModel-backed column view is a GtkTreeListRow; the * actual data object is obtained via gtk_tree_list_row_get_item(). */ static GnomintPropNode * __cert_prop_node_from_list_item (GtkListItem *list_item) { GtkTreeListRow *tree_row = GTK_TREE_LIST_ROW ( gtk_list_item_get_item (list_item)); if (!tree_row) return NULL; return GNOMINT_PROP_NODE (gtk_tree_list_row_get_item (tree_row)); } /* --- Name column (GtkTreeExpander + GtkLabel) --- */ static void __cert_name_setup (GtkSignalListItemFactory *factory G_GNUC_UNUSED, GtkListItem *list_item, gpointer user_data G_GNUC_UNUSED) { GtkWidget *expander = gtk_tree_expander_new (); GtkWidget *label = gtk_label_new (NULL); gtk_label_set_xalign (GTK_LABEL (label), 0); gtk_widget_set_halign (label, GTK_ALIGN_START); gtk_tree_expander_set_child (GTK_TREE_EXPANDER (expander), label); gtk_list_item_set_child (list_item, expander); } static void __cert_name_bind (GtkSignalListItemFactory *factory G_GNUC_UNUSED, GtkListItem *list_item, gpointer user_data G_GNUC_UNUSED) { GtkTreeListRow *tree_row = GTK_TREE_LIST_ROW ( gtk_list_item_get_item (list_item)); GtkWidget *expander = gtk_list_item_get_child (list_item); gtk_tree_expander_set_list_row (GTK_TREE_EXPANDER (expander), tree_row); GnomintPropNode *node = GNOMINT_PROP_NODE ( gtk_tree_list_row_get_item (tree_row)); GtkWidget *label = gtk_tree_expander_get_child ( GTK_TREE_EXPANDER (expander)); const gchar *name = gnomint_prop_node_get_name (node); gtk_label_set_text (GTK_LABEL (label), name ? name : ""); g_object_unref (node); } /* --- Value column (GtkLabel, monospace) --- */ static void __cert_value_setup (GtkSignalListItemFactory *factory G_GNUC_UNUSED, GtkListItem *list_item, gpointer user_data G_GNUC_UNUSED) { GtkWidget *label = gtk_label_new (NULL); gtk_label_set_xalign (GTK_LABEL (label), 0); gtk_widget_set_halign (label, GTK_ALIGN_START); gtk_widget_add_css_class (label, "cert-prop-value"); gtk_list_item_set_child (list_item, label); } static void __cert_value_bind (GtkSignalListItemFactory *factory G_GNUC_UNUSED, GtkListItem *list_item, gpointer user_data G_GNUC_UNUSED) { GnomintPropNode *node = __cert_prop_node_from_list_item (list_item); GtkWidget *label = gtk_list_item_get_child (list_item); const gchar *value = gnomint_prop_node_get_value (node); gtk_label_set_text (GTK_LABEL (label), value ? value : ""); g_object_unref (node); } /* GtkTreeListModel child-model callback: given a GnomintPropNode, * return its children GListStore (or NULL if empty/leaf). */ static GListModel * __cert_tree_list_create_model (gpointer item, gpointer user_data G_GNUC_UNUSED) { GnomintPropNode *node = GNOMINT_PROP_NODE (item); GListStore *children = gnomint_prop_node_get_children (node); if (g_list_model_get_n_items (G_LIST_MODEL (children)) == 0) return NULL; return G_LIST_MODEL (g_object_ref (children)); } /* Helper: recursively expand all rows in the tree list model. */ static void __cert_expand_all (GtkTreeListModel *tree_model) { guint n = g_list_model_get_n_items (G_LIST_MODEL (tree_model)); for (guint i = 0; i < n; i++) { GtkTreeListRow *tlr = gtk_tree_list_model_get_row (tree_model, i); if (tlr) { gtk_tree_list_row_set_expanded (tlr, TRUE); g_object_unref (tlr); } /* After expanding, new items may have been inserted. */ n = g_list_model_get_n_items (G_LIST_MODEL (tree_model)); } } void __certificate_details_populate(const char *certificate_pem) { gint result; gnutls_datum_t pem_datum; gnutls_x509_crt_t certificate; pem_datum.data = (guchar *) certificate_pem; pem_datum.size = strlen(certificate_pem); result = gnutls_x509_crt_init(&certificate); if (result < 0) { fprintf(stderr, "Error: (%s,%d): %s\n", __FILE__, __LINE__, gnutls_strerror(result)); return; } gnutls_x509_crt_import(certificate, &pem_datum, GNUTLS_X509_FMT_PEM); if (result < 0) { fprintf(stderr, "Error: (%s,%d): %s\n", __FILE__, __LINE__, gnutls_strerror(result)); return; } /* Build the prop-node tree. */ GListStore *root_store = g_list_store_new (GNOMINT_TYPE_PROP_NODE); __certificate_properties_fill_certificate(root_store, &certificate); gnutls_x509_crt_deinit(certificate); /* Create a GtkTreeListModel wrapping the root store. */ GtkTreeListModel *tree_model = gtk_tree_list_model_new ( G_LIST_MODEL (g_object_ref (root_store)), FALSE, /* passthrough = FALSE so items are GtkTreeListRow */ TRUE, /* autoexpand */ __cert_tree_list_create_model, NULL, NULL); /* Expand all rows. */ __cert_expand_all (tree_model); /* Wrap in a GtkNoSelection (read-only display). */ GtkNoSelection *no_sel = gtk_no_selection_new (G_LIST_MODEL (tree_model)); /* Get the column view from the builder. */ GObject *view = gtk_builder_get_object (certificate_properties_window_gtkb, "certTreeView"); GtkColumnView *colview = GTK_COLUMN_VIEW (view); /* Set headers invisible to match the old tree view appearance. */ gtk_column_view_set_show_column_separators (colview, FALSE); gtk_column_view_set_show_row_separators (colview, FALSE); /* Build and attach columns if not already present. */ { /* Name column with tree expander. */ GtkListItemFactory *f = gtk_signal_list_item_factory_new (); g_signal_connect (f, "setup", G_CALLBACK (__cert_name_setup), NULL); g_signal_connect (f, "bind", G_CALLBACK (__cert_name_bind), NULL); GtkColumnViewColumn *col = gtk_column_view_column_new (_("Name"), f); gtk_column_view_column_set_expand (col, TRUE); gtk_column_view_column_set_resizable (col, TRUE); gtk_column_view_append_column (colview, col); g_object_unref (col); } { /* Value column with monospace font. */ GtkListItemFactory *f = gtk_signal_list_item_factory_new (); g_signal_connect (f, "setup", G_CALLBACK (__cert_value_setup), NULL); g_signal_connect (f, "bind", G_CALLBACK (__cert_value_bind), NULL); GtkColumnViewColumn *col = gtk_column_view_column_new (_("Value"), f); gtk_column_view_column_set_expand (col, TRUE); gtk_column_view_column_set_resizable (col, TRUE); gtk_column_view_append_column (colview, col); g_object_unref (col); } /* Set the model on the column view. */ gtk_column_view_set_model (colview, GTK_SELECTION_MODEL (no_sel)); g_object_unref (no_sel); g_object_unref (root_store); } #if 0 //Function included for generating extra gettext strings. Do not remove. void useless_function () { printf ("%s",_("TLS WWW Server")); printf ("%s",_("TLS WWW Client")); printf ("%s",_("Code signing")); printf ("%s",_("Email protection")); printf ("%s",_("Time stamping")); printf ("%s",_("OCSP signing")); printf ("%s",_("Any purpose")); printf ("%s",_("Subject Directory Attributes")); printf ("%s",_("Subject Key Identifier")); printf ("%s",_("Key Usage")); printf ("%s",_("Private Key Usage Period")); printf ("%s",_("Subject Alternative Name")); printf ("%s",_("Basic Constraints")); printf ("%s",_("Name Constraints")); printf ("%s",_("CRL Distribution Points")); printf ("%s",_("Certificate Policies")); printf ("%s",_("Policy Mappings")); printf ("%s",_("Authority Key Identifier")); printf ("%s",_("Policy Constraints")); printf ("%s",_("Extended Key Usage")); printf ("%s",_("Delta CRL Distribution Point")); printf ("%s",_("Inhibit Any-Policy")); } #endif gnomint-1.6.4/src/ca_policy.h0000644000000000000000000000175315212761266014653 0ustar00rootroot// gnoMint: a graphical interface for managing a certification authority // Copyright (C) 2006-2009 David Marín Carreño // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #ifndef _CA_POLICY_H_ #define _CA_POLICY_H_ void ca_policy_populate (guint64 ca_id); #endif gnomint-1.6.4/src/ca-cli-callbacks.h0000644000000000000000000000554415212761266015760 0ustar00rootroot// gnoMint: a graphical interface for managing a certification authority // Copyright (C) 2006-2009 David Marín Carreño // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA int ca_cli_callback_newdb (int argc, char **argv); int ca_cli_callback_opendb (int argc, char **argv); int ca_cli_callback_savedbas (int argc, char **argv); int ca_cli_callback_status (int argc, char **argv); int ca_cli_callback_listcert (int argc, char **argv); int ca_cli_callback_listcsr (int argc, char **argv); int ca_cli_callback_addcsr (int argc, char **argv); int ca_cli_callback_addca (int argc, char **argv); int ca_cli_callback_extractcertpkey (int argc, char **argv); int ca_cli_callback_extractcsrpkey (int argc, char **argv); int ca_cli_callback_revoke (int argc, char **argv); int ca_cli_callback_sign (int argc, char **argv); int ca_cli_callback_delete (int argc, char **argv); int ca_cli_callback_crlgen (int argc, char **argv); int ca_cli_callback_dhgen (int argc, char **argv); int ca_cli_callback_changepassword (int argc, char **argv); int ca_cli_callback_importfile (int argc, char **argv); int ca_cli_callback_importdir (int argc, char **argv); int ca_cli_callback_showcert (int argc, char **argv); int ca_cli_callback_showcsr (int argc, char **argv); int ca_cli_callback_showpolicy (int argc, char **argv); int ca_cli_callback_setpolicy (int argc, char **argv); int ca_cli_callback_showpreferences (int argc, char **argv); int ca_cli_callback_setpreference (int argc, char **argv); int ca_cli_callback_about (int argc, char **argv); int ca_cli_callback_warranty (int argc, char **argv); int ca_cli_callback_distribution (int argc, char **argv); int ca_cli_callback_version (int argc, char **argv); int ca_cli_callback_help (int argc, char **argv); int ca_cli_callback_exit (int argc, char **argv); int ca_cli_callback_addservercert (int argc, char **argv); int ca_cli_callback_renew (int argc, char **argv); int ca_cli_callback_exportchain (int argc, char **argv); int ca_cli_callback_revokemany (int argc, char **argv); int ca_cli_callback_deletemany (int argc, char **argv); int ca_cli_callback_search (int argc, char **argv); int ca_cli_callback_diff (int argc, char **argv); gnomint-1.6.4/src/preferences-gui.c0000644000000000000000000001257515212761266015773 0ustar00rootroot// gnoMint: a graphical interface for managing a certification authority // Copyright (C) 2006-2009 David Marín Carreño // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #include #include #include #include "preferences-gui.h" #include static GSettings * preferences_settings; PreferencesGuiChangeCallback csr_visible_callback = NULL; PreferencesGuiChangeCallback revoked_visible_callback = NULL; PreferencesGuiChangeCallback expired_visible_callback = NULL; void preferences_gui_set_csr_visible_callback (PreferencesGuiChangeCallback callback) { csr_visible_callback = callback; } void preferences_gui_set_revoked_visible_callback (PreferencesGuiChangeCallback callback) { revoked_visible_callback = callback; } void preferences_gui_set_expired_visible_callback (PreferencesGuiChangeCallback callback) { expired_visible_callback = callback; } void preferences_changed_callback(GSettings* settings, const gchar *key, gpointer user_data) { if (! strcmp (key, "crq-visible") && csr_visible_callback) { gboolean value = g_settings_get_boolean (settings, key); csr_visible_callback (value, TRUE); } if (! strcmp (key, "revoked-visible") && revoked_visible_callback) { gboolean value = g_settings_get_boolean (settings, key); revoked_visible_callback (value, TRUE); } if (! strcmp (key, "expired-visible") && expired_visible_callback) { gboolean value = g_settings_get_boolean (settings, key); expired_visible_callback (value, TRUE); } } void preferences_init (int argc, char ** argv) { preferences_settings = g_settings_new ("org.gnome.gnomint"); g_signal_connect (preferences_settings, "changed::revoked-visible", G_CALLBACK (preferences_changed_callback), NULL); g_signal_connect (preferences_settings, "changed::crq-visible", G_CALLBACK (preferences_changed_callback), NULL); g_signal_connect (preferences_settings, "changed::expired-visible", G_CALLBACK (preferences_changed_callback), NULL); } gchar * preferences_get_size () { return g_settings_get_string (preferences_settings, "size"); } void preferences_set_size (const gchar *new_value) { g_settings_set_string (preferences_settings, "size", new_value); } gboolean preferences_get_revoked_visible () { if (!preferences_settings) return TRUE; return g_settings_get_boolean (preferences_settings, "revoked-visible"); } void preferences_set_revoked_visible (gboolean new_value) { if (!preferences_settings) return; g_settings_set_boolean (preferences_settings, "revoked-visible", new_value); } gboolean preferences_get_expired_visible () { if (!preferences_settings) return TRUE; return g_settings_get_boolean (preferences_settings, "expired-visible"); } void preferences_set_expired_visible (gboolean new_value) { if (!preferences_settings) return; g_settings_set_boolean (preferences_settings, "expired-visible", new_value); } gint preferences_get_expire_warning_days () { /* Defensive: this getter is called from __ca_refresh_model_add_certificate * which the workflow test suite exercises without going through * preferences_init (it builds only the GTK builders, not the whole * application state). Fall back to the schema default of 30. */ if (! preferences_settings) return 30; return g_settings_get_int (preferences_settings, "expire-warning-days"); } void preferences_set_expire_warning_days (gint new_value) { g_settings_set_int (preferences_settings, "expire-warning-days", new_value); } gboolean preferences_get_crq_visible () { if (!preferences_settings) return TRUE; return g_settings_get_boolean (preferences_settings, "crq-visible"); } void preferences_set_crq_visible (gboolean new_value) { if (!preferences_settings) return; g_settings_set_boolean (preferences_settings, "crq-visible", new_value); } gboolean preferences_get_gnome_keyring_export () { return g_settings_get_boolean (preferences_settings, "gnome-keyring-export"); } void preferences_set_gnome_keyring_export (gboolean new_value) { g_settings_set_boolean (preferences_settings, "gnome-keyring-export", new_value); } void preferences_deinit () { g_object_unref (preferences_settings); preferences_settings = NULL; } gnomint-1.6.4/src/prop_node.h0000644000000000000000000000346415212761266014677 0ustar00rootroot// gnoMint: a graphical interface for managing a certification authority // Copyright (C) 2006-2009 David Marin Carreno // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #ifndef PROP_NODE_H #define PROP_NODE_H #include #include G_BEGIN_DECLS #define GNOMINT_TYPE_PROP_NODE (gnomint_prop_node_get_type()) G_DECLARE_FINAL_TYPE (GnomintPropNode, gnomint_prop_node, GNOMINT, PROP_NODE, GObject) GnomintPropNode *gnomint_prop_node_new (const gchar *name, const gchar *value); void gnomint_prop_node_set_name (GnomintPropNode *self, const gchar *name); const gchar *gnomint_prop_node_get_name (GnomintPropNode *self); void gnomint_prop_node_set_value (GnomintPropNode *self, const gchar *value); const gchar *gnomint_prop_node_get_value (GnomintPropNode *self); GListStore *gnomint_prop_node_get_children (GnomintPropNode *self); G_END_DECLS #endif /* PROP_NODE_H */ gnomint-1.6.4/src/ca_selector.h0000644000000000000000000000504315212761266015170 0ustar00rootroot// gnoMint: a graphical interface for managing a certification authority // Copyright (C) 2006-2009 David Marin Carreno // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #ifndef CA_SELECTOR_H #define CA_SELECTOR_H #include #include "cert_row.h" /* Shared CA-selector widget used by crl.c, new_cert.c, and new_req_window.c. * * Replaces the old GtkTreeView + GtkTreeStore pattern with a * GtkColumnView + GtkTreeListModel backed by GnomintCertRow objects. */ /* Populate a GListStore with GnomintCertRow objects obtained from * ca_file_foreach_ca(). The store is created internally and returned * via *store_out. */ GListStore *ca_selector_populate (void); /* Set up a GtkColumnView for CA selection. Creates a GtkTreeListModel, * wraps it in a GtkSingleSelection, adds a Subject column with a * GtkTreeExpander, and expands all rows. * * The GtkColumnView must already exist (typically from the UI file). * * Returns the GtkSingleSelection model (caller owns a ref). * Also returns the GtkTreeListModel via *tree_model_out if non-NULL. */ GtkSingleSelection *ca_selector_setup (GtkColumnView *colview, GListStore *root_store, GtkTreeListModel **tree_model_out); /* Convenience: get the selected GnomintCertRow's ID. * Returns 0 if nothing is selected. */ guint64 ca_selector_get_selected_id (GtkSingleSelection *sel); /* Convenience: get the selected GnomintCertRow itself (caller must * g_object_unref). Returns NULL if nothing is selected. */ GnomintCertRow *ca_selector_get_selected_row (GtkSingleSelection *sel); /* Find a CA row by its numeric id and select it. * Returns TRUE if found and selected. */ gboolean ca_selector_select_by_id (GtkSingleSelection *sel, guint64 ca_id); #endif /* CA_SELECTOR_H */ gnomint-1.6.4/src/certificate_properties.h0000644000000000000000000000216615212761266017446 0ustar00rootroot// gnoMint: a graphical interface for managing a certification authority // Copyright (C) 2006-2009 David Marín Carreño // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #ifndef _CERTIFICATE_PROPERTIES_H_ #define _CERTIFICATE_PROPERTIES_H_ void certificate_properties_display (guint64, const char *, gboolean, gboolean); void certificate_properties_close_clicked (const char *certificate_pem); #endif gnomint-1.6.4/src/dialog.h0000644000000000000000000000503715212761266014147 0ustar00rootroot// gnoMint: a graphical interface for managing a certification authority // Copyright (C) 2006-2009 David Marín Carreño // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #ifndef _DIALOG_H_ #define _DIALOG_H_ #include #include #ifndef GNOMINTCLI #include #endif typedef void (*DialogPasswordCallback)(gchar *password, gpointer user_data); void dialog_info (gchar *message); void dialog_error (gchar *message); #ifdef GNOMINTCLI gchar * dialog_get_password (gchar *info_message, gchar *password_message, gchar *confirm_message, gchar *distinct_error_message, guint minimum_length); #else void dialog_get_password (gchar *info_message, gchar *password_message, gchar *confirm_message, gchar *distinct_error_message, guint minimum_length, DialogPasswordCallback cb, gpointer user_data); #endif void dialog_todo_callback (void); #ifdef _WIN32 const gchar *gnomint_get_data_dir (void); #undef PACKAGE_DATA_DIR #define PACKAGE_DATA_DIR gnomint_get_data_dir() #endif typedef gboolean (* DialogRefreshCallback) (void); void dialog_establish_refresh_function (DialogRefreshCallback callback); gboolean dialog_refresh_list (void); #ifndef GNOMINTCLI GtkWindow * dialog_get_main_window (void); void dialog_password_entry_changed_cb (GtkEditable *password_entry, gpointer user_data); void dialog_notebook_fix_tab_focus (GtkNotebook *notebook, const char **button_box_ids, GtkBuilder *builder); #else #ifdef WIN32 char *getpass(const char *prompt); #endif gboolean dialog_ask_for_confirmation (gchar *message, gchar *prompt, gboolean default_answer); gint dialog_ask_for_number (gchar *message, gint minimum, gint maximum, gint default_value); gchar * dialog_ask_for_password (gchar *message); gchar * dialog_ask_for_string (gchar *message, gchar *default_answer); #endif #endif gnomint-1.6.4/src/san_manager.h0000644000000000000000000000312115212761266015153 0ustar00rootroot// gnoMint: a graphical interface for managing a certification authority // Copyright (C) 2006-2009 David Marín Carreño // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #ifndef _SAN_MANAGER_H_ #define _SAN_MANAGER_H_ #include typedef enum { SAN_TYPE_DNS = 0, SAN_TYPE_IP = 1, SAN_TYPE_EMAIL = 2, SAN_TYPE_URI = 3 } SanType; // Initialize a SAN manager widget from builder GtkWidget * san_manager_create(GtkBuilder *builder, const gchar *widget_id); // Get the SAN list as a formatted string (e.g., "DNS:example.com,IP:192.168.1.1") gchar * san_manager_get_string(GtkWidget *san_manager); // Set the SAN list from a formatted string void san_manager_set_string(GtkWidget *san_manager, const gchar *san_string); // Validate a SAN value based on type gboolean san_validate(SanType type, const gchar *value, gchar **error_message); #endif // _SAN_MANAGER_H_ gnomint-1.6.4/src/new_cert.c0000644000000000000000000012136015212761266014507 0ustar00rootroot// gnoMint: a graphical interface for managing a certification authority // Copyright (C) 2006-2009 David Marín Carreño // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #ifndef GNOMINTCLI #include #include #include #endif #include #include #include #include #include "ca_file.h" #include "tls.h" #include "dialog.h" #include "gnomint_time.h" #include "pkey_manage.h" #include "preferences-gui.h" #include "new_cert.h" #ifndef GNOMINTCLI # include "san_manager.h" # include "ca_selector.h" #endif #ifndef GNOMINTCLI GtkBuilder * new_cert_window_gtkb = NULL; static GtkSingleSelection *new_cert_ca_selection = NULL; static GListStore *new_cert_ca_root_store = NULL; #ifndef GNOMINTCLI GtkWidget *new_cert_san_manager = NULL; /* SAN editor for issue #40 */ #endif static void __new_cert_selection_changed (GObject *sel, GParamSpec *pspec G_GNUC_UNUSED, gpointer user_data G_GNUC_UNUSED) { guint pos = gtk_single_selection_get_selected (GTK_SINGLE_SELECTION (sel)); gboolean has_sel = (pos != GTK_INVALID_LIST_POSITION); gtk_widget_set_sensitive ( GTK_WIDGET (gtk_builder_get_object (new_cert_window_gtkb, "new_cert_next2")), has_sel); } void new_cert_window_display(const guint64 csr_id, const gchar *csr_pem, const gchar *csr_parent_id) { GObject * object; TlsCsr * csr_info = NULL; csr_info = tls_parse_csr_pem (csr_pem); new_cert_window_gtkb = gtk_builder_new(); gtk_builder_add_from_file (new_cert_window_gtkb, g_build_filename (PACKAGE_DATA_DIR, "gnomint", "new_cert_window.ui", NULL ), NULL); object = gtk_builder_get_object (new_cert_window_gtkb, "new_cert_window"); g_object_set_data_full (G_OBJECT(object), "csr_info", csr_info, (GDestroyNotify) tls_csr_free); g_object_set_data (G_OBJECT(object), "csr_id", g_strdup_printf ("%" G_GUINT64_FORMAT, csr_id)); object = gtk_builder_get_object (new_cert_window_gtkb, "c_label"); gtk_label_set_text (GTK_LABEL(object), csr_info->c); object = gtk_builder_get_object (new_cert_window_gtkb, "st_label"); gtk_label_set_text (GTK_LABEL(object), csr_info->st); object = gtk_builder_get_object (new_cert_window_gtkb, "l_label"); gtk_label_set_text (GTK_LABEL(object), csr_info->l); object = gtk_builder_get_object (new_cert_window_gtkb, "o_label"); gtk_label_set_text (GTK_LABEL(object), csr_info->o); object = gtk_builder_get_object (new_cert_window_gtkb, "ou_label"); gtk_label_set_text (GTK_LABEL(object), csr_info->ou); object = gtk_builder_get_object (new_cert_window_gtkb, "cn_label"); gtk_label_set_text (GTK_LABEL(object), csr_info->cn); object = gtk_builder_get_object (new_cert_window_gtkb, "email_label"); if (csr_info->emailAddress && csr_info->emailAddress[0]) { gtk_label_set_text (GTK_LABEL(object), csr_info->emailAddress); } else { gtk_label_set_text (GTK_LABEL(object), _("None")); } #ifndef GNOMINTCLI /* SAN editor (issue #40): replace the read-only san_label with a * live san_manager_widget pre-populated from the CSR. The * commit handler (on_new_cert_next2_clicked) reads * san_manager_get_string back into cert_creation_data so the * issued certificate carries whatever the CA operator chose, * not just the CSR's request. CLI doesn't have a SAN editor — * the CLI signing path keeps the CSR's SAN verbatim. */ { GtkBuilder *san_builder = gtk_builder_new (); gchar *san_ui = g_build_filename (PACKAGE_DATA_DIR, "gnomint", "san_manager_widget.ui", NULL); gtk_builder_add_from_file (san_builder, san_ui, NULL); g_free (san_ui); new_cert_san_manager = san_manager_create (san_builder, "san_manager_vbox"); if (new_cert_san_manager) { GtkWidget *box = GTK_WIDGET (gtk_builder_get_object ( new_cert_window_gtkb, "san_alignment")); gtk_box_append(GTK_BOX(box), new_cert_san_manager); gtk_widget_set_visible(new_cert_san_manager, TRUE); if (csr_info->subject_alt_name && csr_info->subject_alt_name[0]) san_manager_set_string (new_cert_san_manager, csr_info->subject_alt_name); } } #endif /* Populate and set up CA selector (GtkColumnView). */ new_cert_ca_root_store = ca_selector_populate (); new_cert_ca_selection = ca_selector_setup ( GTK_COLUMN_VIEW (gtk_builder_get_object (new_cert_window_gtkb, "signing_ca_treeview")), new_cert_ca_root_store, NULL); g_signal_connect (new_cert_ca_selection, "notify::selected", G_CALLBACK (__new_cert_selection_changed), NULL); if (csr_parent_id) { ca_selector_select_by_id (new_cert_ca_selection, atoll (csr_parent_id)); } { static const char *bbox_ids[] = { "hbuttonbox14", "hbuttonbox3", "hbuttonbox15", NULL }; dialog_notebook_fix_tab_focus ( GTK_NOTEBOOK (gtk_builder_get_object (new_cert_window_gtkb, "new_cert_notebook")), bbox_ids, new_cert_window_gtkb); } gtk_widget_set_visible ( GTK_WIDGET (gtk_builder_get_object (new_cert_window_gtkb, "new_cert_window")), TRUE); gtk_window_set_transient_for (GTK_WINDOW (gtk_builder_get_object (new_cert_window_gtkb, "new_cert_window")), dialog_get_main_window ()); gtk_window_present (GTK_WINDOW (gtk_builder_get_object (new_cert_window_gtkb, "new_cert_window"))); } void new_cert_tab_activate (int tab_number) { GtkNotebook *notebook = GTK_NOTEBOOK(gtk_builder_get_object (new_cert_window_gtkb, "new_cert_notebook")); gtk_notebook_set_current_page (notebook, tab_number); } G_MODULE_EXPORT void on_new_cert_next2_clicked (GtkButton *button, gpointer user_data) { GObject * object; guint i_value; guint64 ca_id; const gchar *ca_pem; TlsCert *tls_ca_cert = NULL; TlsCsr * tls_csr = g_object_get_data (G_OBJECT(gtk_builder_get_object(new_cert_window_gtkb, "new_cert_window")), "csr_info"); GnomintCertRow *sel_row = ca_selector_get_selected_row (new_cert_ca_selection); if (!sel_row) return; ca_id = gnomint_cert_row_get_id (sel_row); ca_pem = gnomint_cert_row_get_pem (sel_row); tls_ca_cert = tls_parse_cert_pem (ca_pem); g_object_unref (sel_row); /* Check for differences in fields that must be equal according to the CA policy */ if (ca_file_policy_get_int (ca_id, "C_FORCE_SAME") && (tls_ca_cert->c != tls_csr->c) && // If they are the same, they both are NULL, so it is OK (tls_ca_cert->c == NULL || tls_csr->c == NULL || strcmp(tls_ca_cert->c, tls_csr->c))) { dialog_error (_("The policy of this CA obligue the country field of the certificates to be the same as the one in the CA cert.")); return; } if (ca_file_policy_get_int (ca_id, "ST_FORCE_SAME") && (tls_ca_cert->st != tls_csr->st) && // If they are the same, they both are NULL, so it is OK (tls_ca_cert->st == NULL || tls_csr->st == NULL || strcmp(tls_ca_cert->st, tls_csr->st))) { dialog_error (_("The policy of this CA obligue the state/province field of the certificates to be the same as the one in the CA cert.")); return; } if (ca_file_policy_get_int (ca_id, "L_FORCE_SAME") && (tls_ca_cert->l != tls_csr->l) && // If they are the same, they both are NULL, so it is OK (tls_ca_cert->l == NULL || tls_csr->st == NULL || strcmp(tls_ca_cert->l, tls_csr->l))) { dialog_error (_("The policy of this CA obligue the locality/city field of the certificates to be the same as the one in the CA cert.")); return; } if (ca_file_policy_get_int (ca_id, "O_FORCE_SAME") && (tls_ca_cert->o != tls_csr->o) && // If they are the same, they both are NULL, so it is OK (tls_ca_cert->o == NULL || tls_csr->o == NULL || strcmp(tls_ca_cert->o, tls_csr->o))) { dialog_error (_("The policy of this CA obligue the organization field of the certificates to be the same as the one in the CA cert.")); return; } if (ca_file_policy_get_int (ca_id, "OU_FORCE_SAME") && (tls_ca_cert->ou != tls_csr->ou) && // If they are the same, they both are NULL, so it is OK (tls_ca_cert->ou == NULL || tls_csr->ou == NULL || strcmp(tls_ca_cert->ou, tls_csr->ou))) { dialog_error (_("The policy of this CA obligue the organizational unit field of the certificates to be the same as the one in the CA cert.")); return; } tls_cert_free (tls_ca_cert); i_value = ca_file_policy_get_int (ca_id, "MONTHS_TO_EXPIRE"); object = gtk_builder_get_object (new_cert_window_gtkb, "months_before_expiration_spinbutton1"); gtk_spin_button_set_range (GTK_SPIN_BUTTON(object), 1, i_value); gtk_spin_button_set_value (GTK_SPIN_BUTTON(object), i_value); i_value = ca_file_policy_get_int (ca_id, "CA"); object = gtk_builder_get_object (new_cert_window_gtkb, "ca_check"); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(object), i_value); /* i_value = ca_file_policy_get_int (ca_id, "CERT_SIGN")); */ /* object = gtk_builder_get_object (new_cert_window_gtkb, "cert_signing_check2"); */ /* gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(object), i_value); */ i_value = ca_file_policy_get_int (ca_id, "CRL_SIGN"); object = gtk_builder_get_object (new_cert_window_gtkb, "crl_signing_check"); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(object), i_value); i_value = ca_file_policy_get_int (ca_id, "NON_REPUDIATION"); object = gtk_builder_get_object (new_cert_window_gtkb, "non_repudiation_check"); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(object), i_value); gtk_widget_set_sensitive (GTK_WIDGET(object), i_value); i_value = ca_file_policy_get_int (ca_id, "DIGITAL_SIGNATURE"); object = gtk_builder_get_object (new_cert_window_gtkb, "digital_signature_check"); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(object), i_value); gtk_widget_set_sensitive (GTK_WIDGET(object), i_value); i_value = ca_file_policy_get_int (ca_id, "KEY_ENCIPHERMENT"); object = gtk_builder_get_object (new_cert_window_gtkb, "key_encipherment_check"); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(object), i_value); gtk_widget_set_sensitive (GTK_WIDGET(object), i_value); i_value = ca_file_policy_get_int (ca_id, "KEY_AGREEMENT"); object = gtk_builder_get_object (new_cert_window_gtkb, "key_agreement_check"); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(object), i_value); gtk_widget_set_sensitive (GTK_WIDGET(object), i_value); i_value = ca_file_policy_get_int (ca_id, "DATA_ENCIPHERMENT"); object = gtk_builder_get_object (new_cert_window_gtkb, "data_encipherment_check"); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(object), i_value); gtk_widget_set_sensitive (GTK_WIDGET(object), i_value); i_value = ca_file_policy_get_int (ca_id, "TLS_WEB_SERVER"); object = gtk_builder_get_object (new_cert_window_gtkb, "webserver_check"); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(object), i_value); gtk_widget_set_sensitive (GTK_WIDGET(object), i_value); i_value = ca_file_policy_get_int (ca_id, "TLS_WEB_CLIENT"); object = gtk_builder_get_object (new_cert_window_gtkb, "webclient_check"); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(object), i_value); gtk_widget_set_sensitive (GTK_WIDGET(object), i_value); i_value = ca_file_policy_get_int (ca_id, "TIME_STAMPING"); object = gtk_builder_get_object (new_cert_window_gtkb, "time_stamping_check"); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(object), i_value); gtk_widget_set_sensitive (GTK_WIDGET(object), i_value); i_value = ca_file_policy_get_int (ca_id, "CODE_SIGNING"); object = gtk_builder_get_object (new_cert_window_gtkb, "code_signing_check"); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(object), i_value); gtk_widget_set_sensitive (GTK_WIDGET(object), i_value); i_value = ca_file_policy_get_int (ca_id, "EMAIL_PROTECTION"); object = gtk_builder_get_object (new_cert_window_gtkb, "email_protection_check"); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(object), i_value); gtk_widget_set_sensitive (GTK_WIDGET(object), i_value); i_value = ca_file_policy_get_int (ca_id, "OCSP_SIGNING"); object = gtk_builder_get_object (new_cert_window_gtkb, "ocsp_signing_check"); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(object), i_value); gtk_widget_set_sensitive (GTK_WIDGET(object), i_value); i_value = ca_file_policy_get_int (ca_id, "ANY_PURPOSE"); object = gtk_builder_get_object (new_cert_window_gtkb, "any_purpose_check"); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(object), i_value); gtk_widget_set_sensitive (GTK_WIDGET(object), i_value); new_cert_tab_activate (2); } G_MODULE_EXPORT void on_new_cert_previous2_clicked (GtkButton *widget, gpointer user_data) { new_cert_tab_activate (0); } G_MODULE_EXPORT void on_new_cert_next1_clicked (GtkButton *button, gpointer user_data) { new_cert_tab_activate (1); } G_MODULE_EXPORT void on_new_cert_previous3_clicked (GtkButton *widget, gpointer user_data) { new_cert_tab_activate (1); } G_MODULE_EXPORT void on_new_cert_cancel_clicked (GtkButton *widget, gpointer user_data) { GtkWidget * window = GTK_WIDGET(gtk_builder_get_object (new_cert_window_gtkb, "new_cert_window")); gtk_window_destroy(GTK_WINDOW(GTK_WIDGET(window))); } G_MODULE_EXPORT void on_new_cert_property_toggled (GtkWidget *button, gpointer user_data) { gboolean is_active; if (! button) return; is_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)); if (! strcmp(gtk_widget_get_name (button), "non_repudiation_check")) { if (! is_active) { // TIME_STAMPING cannot be inactive gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(gtk_builder_get_object (new_cert_window_gtkb, "time_stamping_check")), FALSE); // We must check if EMAIL_PROTECTION can be active if (! gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(gtk_builder_get_object(new_cert_window_gtkb,"digital_signature_check"))) && ! gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(gtk_builder_get_object(new_cert_window_gtkb,"key_encipherment_check"))) && ! gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(gtk_builder_get_object(new_cert_window_gtkb,"key_agreement_check")))) { // If none is active, we must deactivate EMAIL_PROTECTION gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(gtk_builder_get_object (new_cert_window_gtkb, "email_protection_check")), FALSE); } // We must check if OCSP_SIGNING can be active if (! gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(gtk_builder_get_object(new_cert_window_gtkb,"digital_signature_check")))) { // If is not active, we must deactivate OCSP_SIGNING gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(gtk_builder_get_object (new_cert_window_gtkb, "ocsp_signing_check")), FALSE); } } } if (! strcmp(gtk_widget_get_name (button), "digital_signature_check")) { if (! is_active) { // We must check if TLS_WEB_SERVER can be active if (! gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(gtk_builder_get_object(new_cert_window_gtkb,"key_encipherment_check"))) && ! gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(gtk_builder_get_object(new_cert_window_gtkb,"key_agreement_check")))) { // If none is active, we must deactivate TLS_WEB_SERVER gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(gtk_builder_get_object (new_cert_window_gtkb, "webserver_check")), FALSE); } // We must check if TLS_WEB_CLIENT can be active if (! gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtk_builder_get_object(new_cert_window_gtkb,"key_agreement_check")))) { // If none is active, we must deactivate TLS_WEB_CLIENT gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(gtk_builder_get_object (new_cert_window_gtkb, "webclient_check")), FALSE); } // TIME_STAMPING and CODE_SIGNING cannot be active if digital signature is deactivated gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(gtk_builder_get_object(new_cert_window_gtkb, "time_stamping_check")), FALSE); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(gtk_builder_get_object(new_cert_window_gtkb, "code_signing_check")), FALSE); // We must check if EMAIL_PROTECTION can be active if (! gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtk_builder_get_object(new_cert_window_gtkb,"non_repudiation_check"))) && ! gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtk_builder_get_object(new_cert_window_gtkb,"key_encipherment_check"))) && ! gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtk_builder_get_object(new_cert_window_gtkb,"key_agreement_check")))) { // If none is active, we must deactivate EMAIL_PROTECTION gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(gtk_builder_get_object (new_cert_window_gtkb, "email_protection_check")), FALSE); } // We must check if OCSP_SIGNING can be active if (! gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtk_builder_get_object(new_cert_window_gtkb,"non_repudiation_check")))) { // If none is active, we must deactivate OCSP_SIGNING gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(gtk_builder_get_object (new_cert_window_gtkb, "ocsp_signing_check")), FALSE); } } } if (! strcmp(gtk_widget_get_name (button), "key_encipherment_check")) { if (! is_active) { // We must check if TLS_WEB_SERVER can be active if (! gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtk_builder_get_object(new_cert_window_gtkb, "digital_signature_check"))) && ! gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtk_builder_get_object(new_cert_window_gtkb,"key_agreement_check")))) { // If none is active, we must deactivate TLS_WEB_SERVER gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(gtk_builder_get_object (new_cert_window_gtkb, "webserver_check")), FALSE); } // We must check if EMAIL_PROTECTION can be active if (! gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtk_builder_get_object(new_cert_window_gtkb,"digital_signature_check"))) && ! gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtk_builder_get_object(new_cert_window_gtkb,"non_repudiation_check"))) && ! gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtk_builder_get_object(new_cert_window_gtkb,"key_agreement_check")))) { // If none is active, we must deactivate EMAIL_PROTECTION gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(gtk_builder_get_object (new_cert_window_gtkb, "email_protection_check")), FALSE); } } } if (! strcmp(gtk_widget_get_name (button), "key_agreement_check")) { if (! is_active) { // We must check if TLS_WEB_SERVER can be active if (! gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtk_builder_get_object(new_cert_window_gtkb,"digital_signature_check"))) && ! gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtk_builder_get_object(new_cert_window_gtkb,"key_encipherment_check")))) { // If none is active, we must deactivate TLS_WEB_SERVER gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(gtk_builder_get_object (new_cert_window_gtkb, "webserver_check")), FALSE); } // We must check if TLS_WEB_CLIENT can be active if (! gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtk_builder_get_object(new_cert_window_gtkb,"digital_signature_check")))) { // If none is active, we must deactivate TLS_WEB_CLIENT gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(gtk_builder_get_object (new_cert_window_gtkb, "webclient_check")), FALSE); } // We must check if EMAIL_PROTECTION can be active if (! gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtk_builder_get_object(new_cert_window_gtkb,"digital_signature_check"))) && ! gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtk_builder_get_object(new_cert_window_gtkb,"non_repudiation_check"))) && ! gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtk_builder_get_object(new_cert_window_gtkb,"key_encipherment_check")))) { // If none is active, we must deactivate EMAIL_PROTECTION gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(gtk_builder_get_object (new_cert_window_gtkb, "email_protection_check")), FALSE); } } } // Purposes if (! strcmp(gtk_widget_get_name (button), "webserver_check")) { if (is_active) { // We must check digitalSignature || keyEncipherment || keyAgreement if (!( gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtk_builder_get_object(new_cert_window_gtkb,"digital_signature_check"))) || gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtk_builder_get_object(new_cert_window_gtkb,"key_encipherment_check"))) || gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtk_builder_get_object(new_cert_window_gtkb,"key_agreement_check"))))) { // If none is active, we activate key encipherment gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(gtk_builder_get_object (new_cert_window_gtkb, "key_encipherment_check")), TRUE); } } } if (! strcmp(gtk_widget_get_name (button), "webclient_check")) { if (is_active) { // We must check digitalSignature || keyEncipherment || keyAgreement if (!( gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtk_builder_get_object(new_cert_window_gtkb,"digital_signature_check"))) || gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtk_builder_get_object(new_cert_window_gtkb,"key_agreement_check"))))) { // If none is active, we activate digital signature gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(gtk_builder_get_object (new_cert_window_gtkb, "digital_signature_check")), TRUE); } } } if (! strcmp(gtk_widget_get_name (button), "time_stamping_check")){ if (is_active) { // We must check digitalSignature && nonRepudiation if (!( gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtk_builder_get_object(new_cert_window_gtkb,"digital_signature_check"))) && gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtk_builder_get_object(new_cert_window_gtkb,"non_repudiation_check"))))) { // If none is active, we activate them both gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(gtk_builder_get_object (new_cert_window_gtkb, "digital_signature_check")), TRUE); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(gtk_builder_get_object (new_cert_window_gtkb, "non_repudiation_check")), TRUE); } } } if (! strcmp(gtk_widget_get_name (button), "code_signing_check")) { if (is_active) { gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(gtk_builder_get_object (new_cert_window_gtkb, "digital_signature_check")), TRUE); } } if (! strcmp(gtk_widget_get_name (button), "email_protection_check")) { if (is_active) { // We must check digitalSignature || nonRepudiation || (keyEncipherment || keyAgreement) if (!( gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtk_builder_get_object(new_cert_window_gtkb,"digital_signature_check"))) || gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtk_builder_get_object(new_cert_window_gtkb,"non_repudiation_check"))) || gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtk_builder_get_object(new_cert_window_gtkb,"key_encipherment_check"))) || gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtk_builder_get_object(new_cert_window_gtkb,"key_agreement_check"))))) { // If none is active, we activate key encipherment gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(gtk_builder_get_object (new_cert_window_gtkb, "digital_signature_check")), TRUE); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(gtk_builder_get_object (new_cert_window_gtkb, "key_encipherment_check")), TRUE); } } } if (! strcmp(gtk_widget_get_name (button), "ocsp_signing_check")) { if (is_active) { // We must check digitalSignature || nonRepudiation if (!( gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtk_builder_get_object(new_cert_window_gtkb,"digital_signature_check"))) || gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtk_builder_get_object(new_cert_window_gtkb,"non_repudiation"))))) { // If none is active, we activate digital signature gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(gtk_builder_get_object (new_cert_window_gtkb, "digital_signature_check")), TRUE); } } } } static void __new_cert_commit_done_cb (const gchar *error, gpointer user_data) { (void) user_data; if (error) { dialog_error ((gchar *) error); } dialog_refresh_list (); } G_MODULE_EXPORT void on_new_cert_commit_clicked (GtkButton *widg, gpointer user_data) { TlsCertCreationData *cert_creation_data = NULL; GObject *widget = NULL; gint active = -1; guint64 ca_id; gchar * csr_id_str = g_object_get_data (G_OBJECT(gtk_builder_get_object(new_cert_window_gtkb, "new_cert_window")), "csr_id"); guint64 csr_id = atoll(csr_id_str); ca_id = ca_selector_get_selected_id (new_cert_ca_selection); if (ca_id == 0) return; cert_creation_data = g_new0 (TlsCertCreationData, 1); widget = gtk_builder_get_object (new_cert_window_gtkb, "months_before_expiration_spinbutton1"); active = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON(widget)); cert_creation_data->key_months_before_expiration = active; widget = gtk_builder_get_object (new_cert_window_gtkb, "ca_check"); cert_creation_data->ca = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(widget)); widget = gtk_builder_get_object (new_cert_window_gtkb, "crl_signing_check"); cert_creation_data->crl_signing = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(widget)); widget = gtk_builder_get_object (new_cert_window_gtkb, "digital_signature_check"); cert_creation_data->digital_signature = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(widget)); widget = gtk_builder_get_object (new_cert_window_gtkb, "data_encipherment_check"); cert_creation_data->data_encipherment = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(widget)); widget = gtk_builder_get_object (new_cert_window_gtkb, "key_encipherment_check"); cert_creation_data->key_encipherment = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(widget)); widget = gtk_builder_get_object (new_cert_window_gtkb, "non_repudiation_check"); cert_creation_data->non_repudiation = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(widget)); widget = gtk_builder_get_object (new_cert_window_gtkb, "key_agreement_check"); cert_creation_data->key_agreement = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(widget)); widget = gtk_builder_get_object (new_cert_window_gtkb, "email_protection_check"); cert_creation_data->email_protection = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(widget)); widget = gtk_builder_get_object (new_cert_window_gtkb, "code_signing_check"); cert_creation_data->code_signing = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(widget)); widget = gtk_builder_get_object (new_cert_window_gtkb, "webclient_check"); cert_creation_data->web_client = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(widget)); widget = gtk_builder_get_object (new_cert_window_gtkb, "webserver_check"); cert_creation_data->web_server = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(widget)); widget = gtk_builder_get_object (new_cert_window_gtkb, "time_stamping_check"); cert_creation_data->time_stamping = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(widget)); widget = gtk_builder_get_object (new_cert_window_gtkb, "ocsp_signing_check"); cert_creation_data->ocsp_signing = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(widget)); widget = gtk_builder_get_object (new_cert_window_gtkb, "any_purpose_check"); cert_creation_data->any_purpose = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(widget)); cert_creation_data->crl_distribution_point = ca_file_policy_get (ca_id, "CRL_DISTRIBUTION_POINT"); // SANs will be copied from the CSR by default #ifndef GNOMINTCLI /* SAN editor (issue #40): read the (possibly-edited) SAN list back * from the manager widget. The empty string also means none, and * we normalise to NULL so the downstream tls_generate_certificate * path takes the no-SAN branch. */ if (new_cert_san_manager) { gchar *edited_san = san_manager_get_string (new_cert_san_manager); if (edited_san && *edited_san) { cert_creation_data->subject_alt_name = edited_san; } else { g_free (edited_san); cert_creation_data->subject_alt_name = NULL; } } else { cert_creation_data->subject_alt_name = NULL; } #else cert_creation_data->subject_alt_name = NULL; #endif widget = G_OBJECT(gtk_builder_get_object (new_cert_window_gtkb, "new_cert_window")); gtk_window_destroy(GTK_WINDOW(GTK_WIDGET(widget))); new_cert_sign_csr (csr_id, ca_id, cert_creation_data, __new_cert_commit_done_cb, NULL); } #endif /* Shared helper: given the decrypted CA private key, generate and insert the cert. */ static const gchar * __new_cert_sign_with_pkey (guint64 csr_id, guint64 ca_id, TlsCertCreationData *cert_creation_data, gchar *csr_pem, gchar *pem, gchar *pkey_pem) { gchar *certificate = NULL; gchar *error = NULL; PkeyManageData *csr_pkey = NULL; TlsCert *ca_cert = tls_parse_cert_pem (pem); if (cert_creation_data->expiration > ca_cert->expiration_time) { dialog_info (_("The expiration date of the new certificate is after the expiration date of the CA certificate.\n\n" "According to the current standards, this is not allowed. The new certificate will be created with the same " "expiration date as the CA certificate.")); cert_creation_data->expiration = ca_cert->expiration_time; } tls_cert_free (ca_cert); error = tls_generate_certificate (cert_creation_data, csr_pem, pem, pkey_pem, &certificate); if (! error) { csr_pkey = pkey_manage_get_csr_pkey (csr_id); if (csr_pkey) if (csr_pkey->is_in_db) error = ca_file_insert_cert (cert_creation_data->ca, 1, csr_pkey->pkey_data, certificate); else error = ca_file_insert_cert (cert_creation_data->ca, 0, csr_pkey->external_file, certificate); else error = ca_file_insert_cert (cert_creation_data->ca, 0, NULL, certificate); if (!error) ca_file_remove_csr (csr_id); else dialog_error (error); pkey_manage_data_free (csr_pkey); } if (!error && preferences_get_gnome_keyring_export()) { TlsCert * cert = NULL; gchar *filename = NULL; gchar *directory = NULL; gchar *aux = NULL; cert = tls_parse_cert_pem (certificate); aux = g_strdup_printf ("%s_%s_%s.pem", cert->dn, cert->i_dn, cert->sha1); aux = g_strcanon (aux, "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.", '_'); directory = g_build_filename (g_get_home_dir(), ".gnome2", "keystore", NULL); filename = g_build_filename (g_get_home_dir(), ".gnome2", "keystore", aux, NULL); if (! g_mkdir_with_parents (directory, 0700)) { g_file_set_contents (filename, certificate, strlen(certificate), NULL); } } return error; } static void __new_cert_prepare_expiration (TlsCertCreationData *cert_creation_data) { time_t tmp; struct tm * expiration_time; tmp = time (NULL); cert_creation_data->activation = tmp; #ifndef WIN32 expiration_time = g_new (struct tm,1); localtime_r (&tmp, expiration_time); #else expiration_time = localtime(&tmp); #endif expiration_time->tm_mon = expiration_time->tm_mon + cert_creation_data->key_months_before_expiration; expiration_time->tm_year = expiration_time->tm_year + (expiration_time->tm_mon / 12); expiration_time->tm_mon = expiration_time->tm_mon % 12; { gboolean exp_overflow = FALSE; cert_creation_data->expiration = gnomint_mktime_checked (expiration_time, &exp_overflow); if (exp_overflow) dialog_info (_("This system uses a 32-bit time_t and cannot represent " "dates after 2038-01-19. The new certificate's expiration " "date has been clamped to that limit. To issue longer-lived " "certificates, run gnoMint on a 64-bit platform.")); } #ifndef WIN32 g_free (expiration_time); #endif } #ifdef GNOMINTCLI const gchar *new_cert_sign_csr (guint64 csr_id, guint64 ca_id, TlsCertCreationData *cert_creation_data) { gchar *csr_pem = NULL; gchar *pem = NULL; gchar *dn = NULL; gchar *pkey_pem = NULL; PkeyManageData *crypted_pkey = NULL; const gchar *error = NULL; __new_cert_prepare_expiration (cert_creation_data); ca_file_get_next_serial (&cert_creation_data->serial, ca_id); csr_pem = ca_file_get_public_pem_from_id (CA_FILE_ELEMENT_TYPE_CSR, csr_id); pem = ca_file_get_public_pem_from_id (CA_FILE_ELEMENT_TYPE_CERT, ca_id); crypted_pkey = pkey_manage_get_certificate_pkey (ca_id); dn = ca_file_get_dn_from_id (CA_FILE_ELEMENT_TYPE_CERT, ca_id); if (pem && crypted_pkey && dn) { pkey_pem = pkey_manage_uncrypt (crypted_pkey, dn); if (! pkey_pem) { g_free (pem); pkey_manage_data_free (crypted_pkey); g_free (dn); return (_("Error while signing CSR.")); } error = __new_cert_sign_with_pkey (csr_id, ca_id, cert_creation_data, csr_pem, pem, pkey_pem); g_free (pkey_pem); } g_free (pem); pkey_manage_data_free (crypted_pkey); g_free (dn); return error; } #else /* GUI async new_cert_sign_csr */ typedef struct { guint64 csr_id; guint64 ca_id; TlsCertCreationData *cert_creation_data; gchar *csr_pem; gchar *pem; gchar *dn; PkeyManageData *crypted_pkey; NewCertSignCsrCallback cb; gpointer cb_user_data; } _NewCertSignCtx; static void _new_cert_sign_uncrypt_cb (gchar *pkey_pem, gpointer data) { _NewCertSignCtx *ctx = (_NewCertSignCtx *) data; const gchar *error = NULL; if (! pkey_pem) { g_free (ctx->pem); pkey_manage_data_free (ctx->crypted_pkey); g_free (ctx->dn); ctx->cb (_("Error while signing CSR."), ctx->cb_user_data); g_free (ctx); return; } error = __new_cert_sign_with_pkey (ctx->csr_id, ctx->ca_id, ctx->cert_creation_data, ctx->csr_pem, ctx->pem, pkey_pem); g_free (pkey_pem); g_free (ctx->pem); pkey_manage_data_free (ctx->crypted_pkey); g_free (ctx->dn); ctx->cb (error, ctx->cb_user_data); g_free (ctx); } static void _new_cert_sign_got_pkey_cb (PkeyManageData *crypted_pkey, gpointer data) { _NewCertSignCtx *ctx = (_NewCertSignCtx *) data; ctx->crypted_pkey = crypted_pkey; if (!ctx->pem || !crypted_pkey || !ctx->dn) { g_free (ctx->pem); pkey_manage_data_free (crypted_pkey); g_free (ctx->dn); ctx->cb (_("Error while signing CSR."), ctx->cb_user_data); g_free (ctx); return; } pkey_manage_uncrypt (crypted_pkey, ctx->dn, _new_cert_sign_uncrypt_cb, ctx); } void new_cert_sign_csr (guint64 csr_id, guint64 ca_id, TlsCertCreationData *cert_creation_data, NewCertSignCsrCallback cb, gpointer user_data) { _NewCertSignCtx *ctx; __new_cert_prepare_expiration (cert_creation_data); ca_file_get_next_serial (&cert_creation_data->serial, ca_id); ctx = g_new0 (_NewCertSignCtx, 1); ctx->csr_id = csr_id; ctx->ca_id = ca_id; ctx->cert_creation_data = cert_creation_data; ctx->csr_pem = ca_file_get_public_pem_from_id (CA_FILE_ELEMENT_TYPE_CSR, csr_id); ctx->pem = ca_file_get_public_pem_from_id (CA_FILE_ELEMENT_TYPE_CERT, ca_id); ctx->dn = ca_file_get_dn_from_id (CA_FILE_ELEMENT_TYPE_CERT, ca_id); ctx->cb = cb; ctx->cb_user_data = user_data; pkey_manage_get_certificate_pkey (ca_id, _new_cert_sign_got_pkey_cb, ctx); } #endif /* GNOMINTCLI */ gnomint-1.6.4/src/ca.c0000644000000000000000000031035315212761266013266 0ustar00rootroot// gnoMint: a graphical interface for managing a certification authority // Copyright (C) 2006-2009 David Marín Carreño // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #ifndef GNOMINTCLI #include #include #include #include #include #endif #include #include #include "ca.h" #include "ca_bulk.h" #include "ca_file.h" #ifndef GNOMINTCLI #include "cert_row.h" #endif #include "certificate_properties.h" #include "crl.h" #include "csr_properties.h" #include "dialog.h" #include "gnomint_time.h" #include "tls.h" #include "export.h" #include "new_ca_window.h" #include "new_req_window.h" #include "new_cert.h" #include "cert_renewal.h" #include "cert_diff.h" #include "preferences-gui.h" #include "preferences-window.h" #include "import.h" #include "wizard_window.h" #ifndef GNOMINTCLI #define GNOMINT_MIME_TYPE "application/x-gnomint" enum {CA_MODEL_COLUMN_ID=0, CA_MODEL_COLUMN_IS_CA=1, CA_MODEL_COLUMN_SERIAL=2, CA_MODEL_COLUMN_SUBJECT=3, CA_MODEL_COLUMN_ACTIVATION=4, CA_MODEL_COLUMN_EXPIRATION=5, CA_MODEL_COLUMN_REVOCATION=6, CA_MODEL_COLUMN_PRIVATE_KEY_IN_DB=7, CA_MODEL_COLUMN_PEM=8, CA_MODEL_COLUMN_DN=9, CA_MODEL_COLUMN_PARENT_DN=10, CA_MODEL_COLUMN_PARENT_ROUTE=11, CA_MODEL_COLUMN_ITEM_TYPE=12, CA_MODEL_COLUMN_PARENT_ID=13, /* Only for CSRs */ CA_MODEL_COLUMN_FOREGROUND=14, /* GdkRGBA-style color name, or NULL * for default. "gray" for certs * with effective_expiration past * the current time. */ CA_MODEL_COLUMN_NUMBER=15} CaModelColumns; enum {CSR_MODEL_COLUMN_ID=0, CSR_MODEL_COLUMN_SUBJECT=1, CSR_MODEL_COLUMN_PRIVATE_KEY_IN_DB=2, CSR_MODEL_COLUMN_PEM=3, CSR_MODEL_COLUMN_PARENT_ID=4, CSR_MODEL_COLUMN_NUMBER=5} CsrModelColumns; extern GtkBuilder * main_window_gtkb; extern GtkBuilder * cert_popup_menu_gtkb; extern GtkBuilder * csr_popup_menu_gtkb; /* --- New GtkColumnView-based model (GTK 4 modernization) --- */ static GListStore *ca_root_model = NULL; /* top-level GnomintCertRow items */ static GtkTreeListModel *ca_tree_list_model = NULL; GtkMultiSelection *ca_selection_model = NULL; static GtkColumnView *ca_columnview = NULL; /* Hash table used during model-rebuild: maps parent_route strings to * the GnomintCertRow that owns those children. Only valid during a * single ca_refresh_model_callback invocation. */ static GHashTable *ca_route_to_row = NULL; /* Parallel hash: "CSR" parent CA rows keyed by parent_id (string). */ static GHashTable *ca_id_to_row = NULL; /* Pure helper exposed for unit tests: classify a row's foreground color * given its effective expiration timestamp, a "now" reference, and the * warning-window in days. Returns a static string literal (so callers * don't free it) or NULL for the default color. * * effective_expiration | now / warn_days | result * ---------------------+--------------------+----------- * 0 (no expiration) | (any) | NULL * < now | (any) | "gray" * < now + warn_days*day | warn_days > 0 | "#cc7700" * anything else | NULL */ const gchar * ca_compute_row_foreground (time_t effective_expiration, time_t now, gint warn_days) { if (effective_expiration <= 0) return NULL; if (effective_expiration < now) return "gray"; if (warn_days > 0) { time_t threshold = now + (time_t) warn_days * 86400; if (effective_expiration < threshold) return "#cc7700"; } return NULL; } /* Register display-wide CSS classes for row foreground colours. * Called once, the first time the column view is set up. */ static void __ca_ensure_display_css (void) { static gboolean done = FALSE; if (done) return; done = TRUE; GtkCssProvider *prov = gtk_css_provider_new (); gtk_css_provider_load_from_string (prov, ".ca-fg-gray { color: gray; } " ".ca-fg-amber { color: #cc7700; } " ".expiry-banner { background: #fff3cd; padding: 6px 12px; }"); gtk_style_context_add_provider_for_display ( gdk_display_get_default (), GTK_STYLE_PROVIDER (prov), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); } /* Helper: apply (or clear) the foreground CSS class on a label widget * based on the row's foreground colour string. */ static void __ca_apply_fg_class (GtkWidget *widget, const gchar *fg) { gtk_widget_remove_css_class (widget, "ca-fg-gray"); gtk_widget_remove_css_class (widget, "ca-fg-amber"); if (fg) { if (g_strcmp0 (fg, "gray") == 0) gtk_widget_add_css_class (widget, "ca-fg-gray"); else if (g_strcmp0 (fg, "#cc7700") == 0) gtk_widget_add_css_class (widget, "ca-fg-amber"); } } static void __ca_bulk_revoke_choose_cb (GObject *source, GAsyncResult *result, gpointer user_data) { GSList *cert_ids = (GSList *) user_data; int btn = gtk_alert_dialog_choose_finish (GTK_ALERT_DIALOG (source), result, NULL); if (btn != 0) { g_slist_free (cert_ids); return; } gchar *err = NULL; gint done = ca_bulk_revoke_ids (cert_ids, &err); if (err) { dialog_error (g_strdup_printf ( _("Bulk revoke completed with errors. First error: %s"), err)); g_free (err); } g_slist_free (cert_ids); gchar *summary = g_strdup_printf ( ngettext ("%d certificate revoked.", "%d certificates revoked.", done), done); GtkAlertDialog *alert = gtk_alert_dialog_new ("%s", summary); g_free (summary); gtk_alert_dialog_show (alert, dialog_get_main_window ()); g_object_unref (alert); dialog_refresh_list (); } static void __ca_bulk_delete_csrs_choose_cb (GObject *source, GAsyncResult *result, gpointer user_data) { GSList *csr_ids = (GSList *) user_data; int btn = gtk_alert_dialog_choose_finish (GTK_ALERT_DIALOG (source), result, NULL); if (btn != 0) { g_slist_free (csr_ids); return; } gchar *err = NULL; ca_bulk_delete_csr_ids (csr_ids, &err); g_slist_free (csr_ids); if (err) { dialog_error (g_strdup_printf ( _("Bulk delete completed with errors. First error: %s"), err)); g_free (err); } dialog_refresh_list (); } static void __ca_renew_done_cb (gchar *error, gpointer user_data) { (void) user_data; if (error) { dialog_error (error); g_free (error); return; } dialog_info (_("Certificate renewed. A new certificate with a fresh " "keypair has been added to the database alongside the " "original.")); ca_refresh_model_callback (); } static void __ca_renew_choose_cb (GObject *source, GAsyncResult *result, gpointer user_data) { guint64 cert_id = *(guint64 *) user_data; g_free (user_data); int btn = gtk_alert_dialog_choose_finish (GTK_ALERT_DIALOG (source), result, NULL); if (btn != 0) return; cert_renewal_renew (cert_id, NULL, __ca_renew_done_cb, NULL); } static void __ca_revoke_choose_cb (GObject *source, GAsyncResult *result, gpointer user_data) { guint64 id = *(guint64 *) user_data; g_free (user_data); int btn = gtk_alert_dialog_choose_finish (GTK_ALERT_DIALOG (source), result, NULL); if (btn != 0) return; gchar *errmsg = ca_file_revoke_crt (id); if (errmsg) { dialog_error (_(errmsg)); } dialog_refresh_list (); } static void __ca_delete_csr_choose_cb (GObject *source, GAsyncResult *result, gpointer user_data) { guint64 id = *(guint64 *) user_data; g_free (user_data); int btn = gtk_alert_dialog_choose_finish (GTK_ALERT_DIALOG (source), result, NULL); if (btn != 0) return; ca_file_remove_csr (id); dialog_refresh_list (); } static gboolean view_csr = TRUE; static gboolean view_rcrt = TRUE; static gboolean view_expired = TRUE; /* Map ca_id (guint64 boxed as a pointer) → effective_expiration (time_t * boxed as a pointer). Used by the hide-expired filter to enforce the * RFC 5280 rule that a certificate's effective validity ends with its * issuing CA. Populated as ca_file_foreach_crt iterates: CAs come before * their descendants in hierarchical order, so by the time a descendant * is processed its CA's effective_expiration is already cached. Reset * each ca_refresh_model_callback. */ static GHashTable *ca_effective_expiration = NULL; /* Count of certificates whose effective_expiration falls inside the * configured warning window. Reset to 0 at the start of every * ca_refresh_model_callback, incremented from __ca_refresh_model_add_certificate * each time ca_compute_row_foreground returns the amber colour. Used * to drive the expiry-banner shown above the tree view (issue #56). */ static gint ca_expiring_soon_count = 0; /* The user may dismiss the banner; once dismissed for a given file * we don't show it again until the user re-opens the file. */ static gboolean ca_expiry_infobar_dismissed = FALSE; /* "Show only expiring" filter mode (#56): when TRUE, the row-add * function skips any non-amber leaf row. CAs are always shown so the * tree hierarchy stays intact. Activated by the banner's "Show them" * action button; reset when the banner is dismissed or a new file is * opened. Non-static so the test scenario can flip it directly. */ gboolean ca_view_only_expiring = FALSE; /* Active search text for the filter box (#53). When non-empty, leaf * certificates whose subject/serial doesn't contain this substring * (case-insensitive) are hidden from the tree. Owned by ca.c; freed * on next change. */ static gchar *ca_search_text = NULL; /* Does the haystack (UTF-8) contain the needle (UTF-8) ignoring case? * Both are assumed non-NULL; an empty needle matches anything. */ gboolean __ca_search_match (const gchar *haystack, const gchar *needle) { if (!needle || !*needle) return TRUE; if (!haystack) return FALSE; gchar *h = g_utf8_strdown (haystack, -1); gchar *n = g_utf8_strdown (needle, -1); gboolean m = (strstr (h, n) != NULL); g_free (h); g_free (n); return m; } int __ca_refresh_model_add_certificate (void *pArg, int argc, char **argv, char **columnNames); int __ca_refresh_model_add_csr (void *pArg, int argc, char **argv, char **columnNames); /* Helper: get the currently selected GnomintCertRow from the selection * model. Returns NULL if nothing is selected or the selection is * empty. The caller does NOT own the returned pointer (it's borrowed * from the model). */ static GnomintCertRow *__ca_get_selected_row (void); /* Determine whether the selected row is a cert, CSR, or neither. * Returns CA_FILE_ELEMENT_TYPE_CERT, CA_FILE_ELEMENT_TYPE_CSR, or -1. * If row_out is non-NULL, stores the GnomintCertRow* there (borrowed). */ static gint __ca_selection_type_cv (GnomintCertRow **row_out); void __ca_activate_certificate_selection_cv (GnomintCertRow *row); void __ca_activate_csr_selection_cv (GnomintCertRow *row); void __ca_deactivate_actions (void); void __ca_export_public_pem_cv (GnomintCertRow *row, gint type); void __ca_export_private_pkcs8_cv (GnomintCertRow *row, gint type); void __ca_export_private_pem_cv (GnomintCertRow *row, gint type); void __ca_export_pkcs12_cv (GnomintCertRow *row, gint type); /* Date formatting helper: convert epoch string to locale date string. * Returns a newly allocated string, or NULL if the epoch is 0/empty. */ static gchar *__ca_format_epoch_to_date (const gchar *epoch_str); void __disable_widget (gchar *widget_name); void __enable_widget (gchar *widget_name); int __ca_refresh_model_add_certificate (void *pArg, int argc, char **argv, char **columnNames) { /* Search filter (#53): skip leaf certs whose subject/serial * doesn't contain the active search text. CAs are always shown * so the tree hierarchy stays intact and the search reveals * which CA issued the matched leaves. Run before any allocation * so the early-return is leak-free. */ if (ca_search_text && *ca_search_text && argv[CA_FILE_CERT_COLUMN_IS_CA] && atoi (argv[CA_FILE_CERT_COLUMN_IS_CA]) == 0) { gboolean matched = __ca_search_match (argv[CA_FILE_CERT_COLUMN_SUBJECT], ca_search_text) || __ca_search_match (argv[CA_FILE_CERT_COLUMN_SERIAL], ca_search_text); if (! matched) return 0; } GListStore *root_store = G_LIST_STORE (pArg); /* Compute this cert's *effective* expiration: the earliest of its * own notAfter and every ancestor CA's notAfter, per RFC 5280. * * Parent lookup uses parent_route, which is colon-delimited like * ":3:5:" (this cert's parent is id 5, grandparent is id 3). For * top-level certs parent_route is ":" — no parent, so effective * expiration is just self_expiration. * * Because ca_file_foreach_crt yields certs in hierarchical order, * by the time we see a leaf cert the entire CA chain is already * cached in ca_effective_expiration. We also cache CAs we process * so that any cert further down can look us up. */ /* The expiration column is NULL when the date could not be represented * when the certificate was stored (post-2038 on a 32-bit-time_t build). * Re-derive it from the PEM so the list agrees with the certificate * properties dialog — correct on a 64-bit host, capped on a 32-bit one * (the dialog flags the latter). */ gchar *derived_expiration = NULL; const gchar *expiration_str = argv[CA_FILE_CERT_COLUMN_EXPIRATION]; if ((! expiration_str || ! expiration_str[0]) && argv[CA_FILE_CERT_COLUMN_PEM]) { gint64 d_act = 0, d_exp = 0; if (tls_cert_pem_get_validity (argv[CA_FILE_CERT_COLUMN_PEM], &d_act, &d_exp) && d_exp) expiration_str = derived_expiration = g_strdup_printf ("%" G_GINT64_FORMAT, d_exp); } time_t self_expiration = (expiration_str && expiration_str[0]) ? (time_t) g_ascii_strtoll (expiration_str, NULL, 10) : 0; time_t effective_expiration = self_expiration; if (argv[CA_FILE_CERT_COLUMN_PARENT_ROUTE]) { const gchar *route = argv[CA_FILE_CERT_COLUMN_PARENT_ROUTE]; const gchar *trailing = strrchr (route, ':'); /* route looks like ":3:5:" — the immediate parent id sits * between the second-to-last and the last ':'. */ if (trailing && trailing != route) { const gchar *p = trailing - 1; while (p > route && *p != ':') p--; if (*p == ':' && p + 1 < trailing) { guint64 parent_id = g_ascii_strtoull (p + 1, NULL, 10); gpointer key = GUINT_TO_POINTER ((guint) parent_id); if (ca_effective_expiration && g_hash_table_contains (ca_effective_expiration, key)) { time_t parent_eff = (time_t) GPOINTER_TO_INT ( g_hash_table_lookup (ca_effective_expiration, key)); if (parent_eff > 0 && (effective_expiration == 0 || parent_eff < effective_expiration)) effective_expiration = parent_eff; } } } } /* Cache this CA's effective expiration so descendants pick it up. */ if (argv[CA_FILE_CERT_COLUMN_IS_CA] && atoi (argv[CA_FILE_CERT_COLUMN_IS_CA]) == 1 && argv[CA_FILE_CERT_COLUMN_ID] && ca_effective_expiration) { guint64 self_id = g_ascii_strtoull ( argv[CA_FILE_CERT_COLUMN_ID], NULL, 10); g_hash_table_insert (ca_effective_expiration, GUINT_TO_POINTER ((guint) self_id), GINT_TO_POINTER ((gint) effective_expiration)); } /* Skip if hiding expired and this cert (or its CA chain) is past. */ if (! view_expired && effective_expiration > 0 && effective_expiration < time (NULL)) return 0; const gchar *row_foreground = ca_compute_row_foreground ( effective_expiration, time (NULL), preferences_get_expire_warning_days ()); /* Count amber rows so we can drive the expiry banner (#56). */ gboolean is_amber = (row_foreground && g_strcmp0 (row_foreground, "#cc7700") == 0); if (is_amber) ca_expiring_soon_count++; /* "Show only expiring" mode (#56 "Show them"): hide non-amber * leaves. CAs are always shown so the tree path to an amber * leaf stays visible. */ if (ca_view_only_expiring && argv[CA_FILE_CERT_COLUMN_IS_CA] && atoi (argv[CA_FILE_CERT_COLUMN_IS_CA]) == 0 && !is_amber) return 0; /* Build the GnomintCertRow for this certificate. */ GnomintCertRow *row = gnomint_cert_row_new (); gnomint_cert_row_set_id (row, (guint64) atoll (argv[CA_FILE_CERT_COLUMN_ID])); gnomint_cert_row_set_is_ca (row, atoi (argv[CA_FILE_CERT_COLUMN_IS_CA]) != 0); gnomint_cert_row_set_serial (row, argv[CA_FILE_CERT_COLUMN_SERIAL]); if (argv[CA_FILE_CERT_COLUMN_REVOCATION]) { gchar *revoked_subject = g_markup_printf_escaped ( "%s", argv[CA_FILE_CERT_COLUMN_SUBJECT]); gnomint_cert_row_set_subject (row, revoked_subject); g_free (revoked_subject); gnomint_cert_row_set_revocation (row, TRUE); } else { gnomint_cert_row_set_subject (row, argv[CA_FILE_CERT_COLUMN_SUBJECT]); gnomint_cert_row_set_revocation (row, FALSE); } gnomint_cert_row_set_activation (row, argv[CA_FILE_CERT_COLUMN_ACTIVATION]); gnomint_cert_row_set_expiration (row, expiration_str); g_free (derived_expiration); gnomint_cert_row_set_pkey_in_db (row, atoi (argv[CA_FILE_CERT_COLUMN_PRIVATE_KEY_IN_DB]) != 0); gnomint_cert_row_set_pem (row, argv[CA_FILE_CERT_COLUMN_PEM]); gnomint_cert_row_set_dn (row, argv[CA_FILE_CERT_COLUMN_DN]); gnomint_cert_row_set_parent_dn (row, argv[CA_FILE_CERT_COLUMN_PARENT_DN]); gnomint_cert_row_set_parent_route (row, argv[CA_FILE_CERT_COLUMN_PARENT_ROUTE]); gnomint_cert_row_set_item_type (row, gnomint_cert_row_get_is_ca (row) ? GNOMINT_ROW_TYPE_CA : GNOMINT_ROW_TYPE_CERT); gnomint_cert_row_set_foreground (row, row_foreground); gnomint_cert_row_set_effective_expiration (row, effective_expiration); /* Find the parent: look up parent_route in the hash table. * Top-level certs have parent_route ":" and go into root_store. */ const gchar *parent_route = argv[CA_FILE_CERT_COLUMN_PARENT_ROUTE]; GListStore *target_store = root_store; if (parent_route && g_strcmp0 (parent_route, ":") != 0 && ca_route_to_row) { GnomintCertRow *parent_row = g_hash_table_lookup ( ca_route_to_row, parent_route); if (parent_row) target_store = gnomint_cert_row_get_children (parent_row); } g_list_store_append (target_store, row); /* Register this row so children can find it. The key is * parent_route + id + ":" — the route that a child of this * row would carry. */ if (ca_route_to_row) { gchar *my_route = g_strdup_printf ( "%s%" G_GUINT64_FORMAT ":", parent_route ? parent_route : ":", gnomint_cert_row_get_id (row)); /* The hash table owns the key string. */ g_hash_table_insert (ca_route_to_row, my_route, row); } /* Also register by ID so CSRs can find their parent CA. */ if (ca_id_to_row) { gchar *id_str = g_strdup (argv[CA_FILE_CERT_COLUMN_ID]); g_hash_table_insert (ca_id_to_row, id_str, row); } g_object_unref (row); return 0; } int __ca_refresh_model_add_csr (void *pArg, int argc, char **argv, char **columnNames) { /* Search filter (#53): skip CSRs whose subject doesn't match. */ if (ca_search_text && *ca_search_text) { if (! __ca_search_match (argv[CA_FILE_CSR_COLUMN_SUBJECT], ca_search_text)) return 0; } GListStore *root_store = G_LIST_STORE (pArg); GnomintCertRow *row = gnomint_cert_row_new (); gnomint_cert_row_set_id (row, (guint64) atoll (argv[CA_FILE_CSR_COLUMN_ID])); gnomint_cert_row_set_subject (row, argv[CA_FILE_CSR_COLUMN_SUBJECT]); gnomint_cert_row_set_pkey_in_db (row, atoi (argv[CA_FILE_CSR_COLUMN_PRIVATE_KEY_IN_DB]) != 0); gnomint_cert_row_set_pem (row, argv[CA_FILE_CSR_COLUMN_PEM]); gnomint_cert_row_set_item_type (row, GNOMINT_ROW_TYPE_CSR); if (argv[CA_FILE_CSR_COLUMN_PARENT_ID]) { gnomint_cert_row_set_parent_id (row, (guint64) atoll (argv[CA_FILE_CSR_COLUMN_PARENT_ID])); } /* CSRs are shown as children of their parent CA in the tree. * Look up the parent CA by its id string. If not found (or no * parent), append to root. */ GListStore *target_store = root_store; if (argv[CA_FILE_CSR_COLUMN_PARENT_ID] && ca_id_to_row) { GnomintCertRow *parent_row = g_hash_table_lookup ( ca_id_to_row, argv[CA_FILE_CSR_COLUMN_PARENT_ID]); if (parent_row) target_store = gnomint_cert_row_get_children (parent_row); } g_list_store_append (target_store, row); g_object_unref (row); return 0; } /* ------------------------------------------------------------------ */ /* Date formatting helper (extracted from old tree-view data func) */ /* ------------------------------------------------------------------ */ static gchar * __ca_format_epoch_to_date (const gchar *epoch_str) { if (!epoch_str || !epoch_str[0]) return NULL; gint64 model_time = g_ascii_strtoll (epoch_str, NULL, 10); if (model_time == 0) return NULL; gchar buf[100]; struct tm model_time_tm; gnomint_gmtime (model_time, &model_time_tm); strftime (buf, sizeof (buf), _("%m/%d/%Y %H:%M GMT"), &model_time_tm); return g_strdup (buf); } /* ------------------------------------------------------------------ */ /* GtkColumnView factory callbacks */ /* ------------------------------------------------------------------ */ /* Helper: extract the GnomintCertRow from a GtkListItem. The item in * a GtkTreeListModel-backed column view is a GtkTreeListRow; the * actual data object is obtained via gtk_tree_list_row_get_item(). */ static GnomintCertRow * __ca_row_from_list_item (GtkListItem *list_item) { GtkTreeListRow *tree_row = GTK_TREE_LIST_ROW ( gtk_list_item_get_item (list_item)); if (!tree_row) return NULL; return GNOMINT_CERT_ROW (gtk_tree_list_row_get_item (tree_row)); } /* --- Subject column (GtkTreeExpander + GtkLabel with markup) --- */ static void __ca_subject_setup (GtkSignalListItemFactory *factory G_GNUC_UNUSED, GtkListItem *list_item, gpointer user_data G_GNUC_UNUSED) { GtkWidget *expander = gtk_tree_expander_new (); GtkWidget *label = gtk_label_new (NULL); gtk_label_set_xalign (GTK_LABEL (label), 0); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); gtk_label_set_ellipsize (GTK_LABEL (label), PANGO_ELLIPSIZE_END); gtk_tree_expander_set_child (GTK_TREE_EXPANDER (expander), label); gtk_list_item_set_child (list_item, expander); } static void __ca_subject_bind (GtkSignalListItemFactory *factory G_GNUC_UNUSED, GtkListItem *list_item, gpointer user_data G_GNUC_UNUSED) { GtkTreeListRow *tree_row = GTK_TREE_LIST_ROW ( gtk_list_item_get_item (list_item)); GtkWidget *expander = gtk_list_item_get_child (list_item); gtk_tree_expander_set_list_row (GTK_TREE_EXPANDER (expander), tree_row); GnomintCertRow *row = GNOMINT_CERT_ROW ( gtk_tree_list_row_get_item (tree_row)); GtkWidget *label = gtk_tree_expander_get_child ( GTK_TREE_EXPANDER (expander)); const gchar *subject = gnomint_cert_row_get_subject (row); gtk_label_set_markup (GTK_LABEL (label), subject ? subject : ""); __ca_apply_fg_class (label, gnomint_cert_row_get_foreground (row)); g_object_unref (row); } /* --- Is-CA column (GtkImage) --- */ static void __ca_is_ca_setup (GtkSignalListItemFactory *factory G_GNUC_UNUSED, GtkListItem *list_item, gpointer user_data G_GNUC_UNUSED) { GtkWidget *image = gtk_image_new (); gtk_list_item_set_child (list_item, image); } static void __ca_is_ca_bind (GtkSignalListItemFactory *factory G_GNUC_UNUSED, GtkListItem *list_item, gpointer user_data G_GNUC_UNUSED) { GnomintCertRow *row = __ca_row_from_list_item (list_item); GtkWidget *image = gtk_list_item_get_child (list_item); if (row && gnomint_cert_row_get_is_ca (row)) { gchar *path = g_build_filename ( PACKAGE_DATA_DIR, "gnomint", "ca-stamp-16.png", NULL); gtk_image_set_from_file (GTK_IMAGE (image), path); g_free (path); } else { gtk_image_clear (GTK_IMAGE (image)); } if (row) g_object_unref (row); } /* --- Private-key column (GtkImage) --- */ static void __ca_pkey_setup (GtkSignalListItemFactory *factory G_GNUC_UNUSED, GtkListItem *list_item, gpointer user_data G_GNUC_UNUSED) { GtkWidget *image = gtk_image_new (); gtk_list_item_set_child (list_item, image); } static void __ca_pkey_bind (GtkSignalListItemFactory *factory G_GNUC_UNUSED, GtkListItem *list_item, gpointer user_data G_GNUC_UNUSED) { GnomintCertRow *row = __ca_row_from_list_item (list_item); GtkWidget *image = gtk_list_item_get_child (list_item); if (row && gnomint_cert_row_get_pkey_in_db (row)) { gchar *path = g_build_filename ( PACKAGE_DATA_DIR, "gnomint", "key-16.png", NULL); gtk_image_set_from_file (GTK_IMAGE (image), path); g_free (path); } else { gtk_image_clear (GTK_IMAGE (image)); } if (row) g_object_unref (row); } /* --- Serial column (GtkLabel) --- */ static void __ca_serial_setup (GtkSignalListItemFactory *factory G_GNUC_UNUSED, GtkListItem *list_item, gpointer user_data G_GNUC_UNUSED) { GtkWidget *label = gtk_label_new (NULL); gtk_label_set_xalign (GTK_LABEL (label), 0); gtk_list_item_set_child (list_item, label); } static void __ca_serial_bind (GtkSignalListItemFactory *factory G_GNUC_UNUSED, GtkListItem *list_item, gpointer user_data G_GNUC_UNUSED) { GnomintCertRow *row = __ca_row_from_list_item (list_item); GtkWidget *label = gtk_list_item_get_child (list_item); const gchar *serial = row ? gnomint_cert_row_get_serial (row) : NULL; gtk_label_set_text (GTK_LABEL (label), serial ? serial : ""); __ca_apply_fg_class (label, row ? gnomint_cert_row_get_foreground (row) : NULL); if (row) g_object_unref (row); } /* --- Generic date column (Activation / Expiration / Revocation) --- */ /* The user_data for the date bind callback indicates which field: * 0 = activation, 1 = expiration, 2 = revocation. */ #define CA_DATE_ACTIVATION 0 #define CA_DATE_EXPIRATION 1 #define CA_DATE_REVOCATION 2 static void __ca_date_setup (GtkSignalListItemFactory *factory G_GNUC_UNUSED, GtkListItem *list_item, gpointer user_data G_GNUC_UNUSED) { GtkWidget *label = gtk_label_new (NULL); gtk_label_set_xalign (GTK_LABEL (label), 0); gtk_list_item_set_child (list_item, label); } static void __ca_date_bind (GtkSignalListItemFactory *factory G_GNUC_UNUSED, GtkListItem *list_item, gpointer user_data) { gint which = GPOINTER_TO_INT (user_data); GnomintCertRow *row = __ca_row_from_list_item (list_item); GtkWidget *label = gtk_list_item_get_child (list_item); const gchar *epoch_str = NULL; if (row) { switch (which) { case CA_DATE_ACTIVATION: epoch_str = gnomint_cert_row_get_activation (row); break; case CA_DATE_EXPIRATION: epoch_str = gnomint_cert_row_get_expiration (row); break; case CA_DATE_REVOCATION: /* Revocation is stored as a boolean; the epoch * string is not stored separately. Show empty * for non-revoked, or just "(revoked)" for revoked. */ if (gnomint_cert_row_get_revocation (row)) epoch_str = NULL; /* fall through to special handling */ else epoch_str = NULL; break; default: epoch_str = NULL; break; } } /* For the revocation column, we don't have epoch data in the new * model (revocation is a boolean). Show "Yes" / empty. */ if (which == CA_DATE_REVOCATION) { if (row && gnomint_cert_row_get_revocation (row)) gtk_label_set_text (GTK_LABEL (label), _("Yes")); else gtk_label_set_text (GTK_LABEL (label), ""); } else { gchar *formatted = __ca_format_epoch_to_date (epoch_str); gtk_label_set_text (GTK_LABEL (label), formatted ? formatted : ""); g_free (formatted); } __ca_apply_fg_class (label, row ? gnomint_cert_row_get_foreground (row) : NULL); if (row) g_object_unref (row); } /* GtkTreeListModel child-model callback: given a GnomintCertRow, * return its children GListStore (or NULL if empty/leaf). */ static GListModel * __ca_tree_list_create_model (gpointer item, gpointer user_data G_GNUC_UNUSED) { GnomintCertRow *row = GNOMINT_CERT_ROW (item); GListStore *children = gnomint_cert_row_get_children (row); if (g_list_model_get_n_items (G_LIST_MODEL (children)) == 0) return NULL; return G_LIST_MODEL (g_object_ref (children)); } /* Helper: recursively expand all rows in the tree list model. */ static void __ca_expand_all (GtkTreeListModel *tree_model) { guint n = g_list_model_get_n_items (G_LIST_MODEL (tree_model)); for (guint i = 0; i < n; i++) { GtkTreeListRow *tlr = gtk_tree_list_model_get_row (tree_model, i); if (tlr) { gtk_tree_list_row_set_expanded (tlr, TRUE); g_object_unref (tlr); } /* After expanding, new items may have been inserted, so * update n to cover them. */ n = g_list_model_get_n_items (G_LIST_MODEL (tree_model)); } } /* Forward declarations for expiry banner callbacks. */ void ca_expiry_banner_show_them (GtkRevealer *revealer); void ca_expiry_banner_close (GtkRevealer *revealer); /* Column view revocation column reference, used to toggle visibility. */ static GtkColumnViewColumn *ca_revocation_column = NULL; gboolean ca_refresh_model_callback () { /* Build a fresh root GListStore. */ GListStore *new_root = g_list_store_new (GNOMINT_TYPE_CERT_ROW); if (ca_effective_expiration) g_hash_table_destroy (ca_effective_expiration); ca_effective_expiration = g_hash_table_new (g_direct_hash, g_direct_equal); ca_expiring_soon_count = 0; /* Build temporary hash tables for parent lookup during population. */ if (ca_route_to_row) g_hash_table_destroy (ca_route_to_row); ca_route_to_row = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL); if (ca_id_to_row) g_hash_table_destroy (ca_id_to_row); ca_id_to_row = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL); ca_file_foreach_crt (__ca_refresh_model_add_certificate, view_rcrt, new_root); if (view_csr) ca_file_foreach_csr (__ca_refresh_model_add_csr, new_root); /* Clean up the temporary hash tables. */ g_hash_table_destroy (ca_route_to_row); ca_route_to_row = NULL; g_hash_table_destroy (ca_id_to_row); ca_id_to_row = NULL; /* Replace the root model. */ if (ca_root_model) g_object_unref (ca_root_model); ca_root_model = new_root; /* Create a GtkTreeListModel wrapping the flat root store. */ GtkTreeListModel *tree_model = gtk_tree_list_model_new ( G_LIST_MODEL (g_object_ref (ca_root_model)), FALSE, /* passthrough = FALSE so items are GtkTreeListRow */ TRUE, /* autoexpand — we'll also expand manually */ __ca_tree_list_create_model, NULL, NULL); /* Get or create the column view. */ if (!ca_columnview) { GObject *obj = gtk_builder_get_object (main_window_gtkb, "ca_treeview"); ca_columnview = GTK_COLUMN_VIEW (obj); } gboolean first_time = (ca_tree_list_model == NULL); /* Replace old tree list model. */ if (ca_tree_list_model) g_object_unref (ca_tree_list_model); ca_tree_list_model = tree_model; /* Create a selection model. */ GtkMultiSelection *sel = gtk_multi_selection_new ( G_LIST_MODEL (g_object_ref (ca_tree_list_model))); if (ca_selection_model) g_object_unref (ca_selection_model); ca_selection_model = sel; if (first_time) { /* ---- Set up columns (done once) ---- */ __ca_ensure_display_css (); /* Subject */ { GtkListItemFactory *f = gtk_signal_list_item_factory_new (); g_signal_connect (f, "setup", G_CALLBACK (__ca_subject_setup), NULL); g_signal_connect (f, "bind", G_CALLBACK (__ca_subject_bind), NULL); GtkColumnViewColumn *col = gtk_column_view_column_new ( _("Subject"), f); gtk_column_view_column_set_expand (col, TRUE); gtk_column_view_column_set_resizable (col, TRUE); gtk_column_view_append_column (ca_columnview, col); g_object_unref (col); } /* Is CA */ { GtkListItemFactory *f = gtk_signal_list_item_factory_new (); g_signal_connect (f, "setup", G_CALLBACK (__ca_is_ca_setup), NULL); g_signal_connect (f, "bind", G_CALLBACK (__ca_is_ca_bind), NULL); GtkColumnViewColumn *col = gtk_column_view_column_new ("", f); gtk_column_view_column_set_fixed_width (col, 32); gtk_column_view_append_column (ca_columnview, col); g_object_unref (col); } /* Private Key */ { GtkListItemFactory *f = gtk_signal_list_item_factory_new (); g_signal_connect (f, "setup", G_CALLBACK (__ca_pkey_setup), NULL); g_signal_connect (f, "bind", G_CALLBACK (__ca_pkey_bind), NULL); GtkColumnViewColumn *col = gtk_column_view_column_new ("", f); gtk_column_view_column_set_fixed_width (col, 32); gtk_column_view_append_column (ca_columnview, col); g_object_unref (col); } /* Serial */ { GtkListItemFactory *f = gtk_signal_list_item_factory_new (); g_signal_connect (f, "setup", G_CALLBACK (__ca_serial_setup), NULL); g_signal_connect (f, "bind", G_CALLBACK (__ca_serial_bind), NULL); GtkColumnViewColumn *col = gtk_column_view_column_new ( _("Serial"), f); gtk_column_view_column_set_resizable (col, TRUE); gtk_column_view_append_column (ca_columnview, col); g_object_unref (col); } /* Activation */ { GtkListItemFactory *f = gtk_signal_list_item_factory_new (); g_signal_connect (f, "setup", G_CALLBACK (__ca_date_setup), NULL); g_signal_connect (f, "bind", G_CALLBACK (__ca_date_bind), GINT_TO_POINTER (CA_DATE_ACTIVATION)); GtkColumnViewColumn *col = gtk_column_view_column_new ( _("Activation"), f); gtk_column_view_column_set_resizable (col, TRUE); gtk_column_view_append_column (ca_columnview, col); g_object_unref (col); } /* Expiration */ { GtkListItemFactory *f = gtk_signal_list_item_factory_new (); g_signal_connect (f, "setup", G_CALLBACK (__ca_date_setup), NULL); g_signal_connect (f, "bind", G_CALLBACK (__ca_date_bind), GINT_TO_POINTER (CA_DATE_EXPIRATION)); GtkColumnViewColumn *col = gtk_column_view_column_new ( _("Expiration"), f); gtk_column_view_column_set_resizable (col, TRUE); gtk_column_view_append_column (ca_columnview, col); g_object_unref (col); } /* Revocation */ { GtkListItemFactory *f = gtk_signal_list_item_factory_new (); g_signal_connect (f, "setup", G_CALLBACK (__ca_date_setup), NULL); g_signal_connect (f, "bind", G_CALLBACK (__ca_date_bind), GINT_TO_POINTER (CA_DATE_REVOCATION)); ca_revocation_column = gtk_column_view_column_new ( _("Revocation"), f); gtk_column_view_column_set_resizable (ca_revocation_column, TRUE); gtk_column_view_append_column (ca_columnview, ca_revocation_column); /* Don't unref — we keep the pointer to toggle visibility. */ } /* Connect selection-changed. */ g_signal_connect (ca_selection_model, "selection-changed", G_CALLBACK (ca_treeview_selection_change), NULL); /* Connect row activation. */ g_signal_connect (ca_columnview, "activate", G_CALLBACK (ca_treeview_row_activated), NULL); } /* Toggle revocation column visibility. */ if (ca_revocation_column) gtk_column_view_column_set_visible (ca_revocation_column, view_rcrt); /* Set the model on the column view. */ gtk_column_view_set_model (ca_columnview, GTK_SELECTION_MODEL (ca_selection_model)); /* Expand all rows. */ __ca_expand_all (ca_tree_list_model); /* Update the expiry banner (#56). Uses a GtkRevealer + GtkBox * instead of the deprecated GtkInfoBar. */ { GObject *rev_obj = gtk_builder_get_object (main_window_gtkb, "expiry_infobar"); GObject *lbl_obj = gtk_builder_get_object (main_window_gtkb, "expiry_infobar_label"); GObject *btn_obj = gtk_builder_get_object (main_window_gtkb, "expiry_show_them_button"); GtkRevealer *revealer = rev_obj ? GTK_REVEALER (rev_obj) : NULL; GtkLabel *lbl = lbl_obj ? GTK_LABEL (lbl_obj) : NULL; GtkWidget *show_btn = btn_obj ? GTK_WIDGET (btn_obj) : NULL; gint days = preferences_get_expire_warning_days (); if (revealer && lbl && ca_expiring_soon_count > 0 && !ca_expiry_infobar_dismissed && days > 0) { gchar *msg; if (ca_view_only_expiring) { msg = g_strdup_printf ( ngettext ( "Showing only the %d certificate expiring " "in the next %d days. Close this banner to show " "everything again.", "Showing only the %d certificates expiring " "in the next %d days. Close this banner to show " "everything again.", ca_expiring_soon_count), ca_expiring_soon_count, days); } else { msg = g_strdup_printf ( ngettext ( "%d certificate expires in the next %d days. " "Right-click it to renew with a fresh key.", "%d certificates expire in the next %d days. " "Right-click each one to renew with a fresh key.", ca_expiring_soon_count), ca_expiring_soon_count, days); } gtk_label_set_markup (lbl, msg); g_free (msg); if (show_btn && !g_object_get_data (G_OBJECT (revealer), "signals-connected")) { g_signal_connect_swapped (show_btn, "clicked", G_CALLBACK (ca_expiry_banner_show_them), revealer); GtkWidget *close_btn = GTK_WIDGET ( gtk_builder_get_object (main_window_gtkb, "expiry_close_button")); if (close_btn) g_signal_connect_swapped (close_btn, "clicked", G_CALLBACK (ca_expiry_banner_close), revealer); g_object_set_data (G_OBJECT (revealer), "signals-connected", GINT_TO_POINTER (1)); } if (show_btn) gtk_widget_set_visible (show_btn, !ca_view_only_expiring); gtk_revealer_set_reveal_child (revealer, TRUE); } else if (revealer) { gtk_revealer_set_reveal_child (revealer, FALSE); } } return TRUE; } /* Ctrl+F focuses the search entry (#53). GTK 4 uses * GtkEventControllerKey instead of the old key-press-event signal. */ gboolean ca_on_key_pressed (GtkEventControllerKey *controller, guint keyval, guint keycode, GdkModifierType state, gpointer user_data G_GNUC_UNUSED) { if ((state & GDK_CONTROL_MASK) && (keyval == GDK_KEY_f || keyval == GDK_KEY_F)) { GObject *entry = gtk_builder_get_object (main_window_gtkb, "search_entry"); if (entry && GTK_IS_WIDGET (entry)) { gtk_widget_grab_focus (GTK_WIDGET (entry)); return TRUE; } } return FALSE; } /* Search-entry handler (#53). Triggers on every keystroke; just stash * the new search text and refresh the tree. The actual filter is * applied in __ca_refresh_model_add_certificate. */ G_MODULE_EXPORT void ca_on_search_changed (GtkSearchEntry *entry, gpointer user_data G_GNUC_UNUSED) { const gchar *text = gtk_editable_get_text(GTK_EDITABLE(entry)); g_free (ca_search_text); ca_search_text = (text && *text) ? g_strdup (text) : NULL; ca_refresh_model_callback (); } /* Banner button handlers (replacing deprecated GtkInfoBar). * Non-static so the test suite can exercise them directly. */ void ca_expiry_banner_show_them (GtkRevealer *revealer G_GNUC_UNUSED) { ca_view_only_expiring = TRUE; ca_refresh_model_callback (); } void ca_expiry_banner_close (GtkRevealer *revealer) { ca_expiry_infobar_dismissed = TRUE; if (ca_view_only_expiring) { ca_view_only_expiring = FALSE; ca_refresh_model_callback (); } gtk_revealer_set_reveal_child (revealer, FALSE); } /* ------------------------------------------------------------------ */ /* Selection helpers for GtkColumnView */ /* ------------------------------------------------------------------ */ static GnomintCertRow * __ca_get_selected_row (void) { if (!ca_selection_model) return NULL; GtkBitset *sel = gtk_selection_model_get_selection ( GTK_SELECTION_MODEL (ca_selection_model)); if (gtk_bitset_get_size (sel) != 1) return NULL; guint pos = gtk_bitset_get_nth (sel, 0); GtkTreeListRow *tlr = GTK_TREE_LIST_ROW ( g_list_model_get_item ( G_LIST_MODEL (ca_selection_model), pos)); if (!tlr) return NULL; GnomintCertRow *row = GNOMINT_CERT_ROW ( gtk_tree_list_row_get_item (tlr)); g_object_unref (tlr); return row; /* caller must g_object_unref */ } static gint __ca_selection_type_cv (GnomintCertRow **row_out) { GnomintCertRow *row = __ca_get_selected_row (); if (!row) { if (row_out) *row_out = NULL; return -1; } gint item_type = gnomint_cert_row_get_item_type (row); if (row_out) *row_out = row; /* transfer ownership to caller */ else g_object_unref (row); switch (item_type) { case GNOMINT_ROW_TYPE_CERT: case GNOMINT_ROW_TYPE_CA: return CA_FILE_ELEMENT_TYPE_CERT; case GNOMINT_ROW_TYPE_CSR: return CA_FILE_ELEMENT_TYPE_CSR; default: return -1; } } /* ------------------------------------------------------------------ */ /* Activation handlers for GtkColumnView */ /* ------------------------------------------------------------------ */ static void __ca_certificate_activated_cv (GnomintCertRow *row) { certificate_properties_display ( gnomint_cert_row_get_id (row), gnomint_cert_row_get_pem (row), gnomint_cert_row_get_pkey_in_db (row), gnomint_cert_row_get_is_ca (row)); } static void __ca_csr_activated_cv (GnomintCertRow *row) { csr_properties_display ( gnomint_cert_row_get_pem (row), gnomint_cert_row_get_pkey_in_db (row)); } /* GtkColumnView "activate" signal or menu "Properties" action. * The old signature took GtkTreeView args; the new one takes * GtkColumnView + position. We also support being called with * NULL arguments (from the Properties menu item). */ G_MODULE_EXPORT gboolean ca_treeview_row_activated (GtkColumnView *colview G_GNUC_UNUSED, guint position, gpointer user_data G_GNUC_UNUSED) { GnomintCertRow *row = NULL; gint type = __ca_selection_type_cv (&row); if (type == CA_FILE_ELEMENT_TYPE_CERT && row) { __ca_certificate_activated_cv (row); } else if (type == CA_FILE_ELEMENT_TYPE_CSR && row) { __ca_csr_activated_cv (row); } if (row) g_object_unref (row); return FALSE; } static void __ca_set_action_enabled (const gchar *action_name, gboolean enabled) { GtkWidget *win = GTK_WIDGET (gtk_builder_get_object (main_window_gtkb, "main_window1")); if (!win) return; GAction *a = g_action_map_lookup_action (G_ACTION_MAP (win), action_name); if (a) g_simple_action_set_enabled (G_SIMPLE_ACTION (a), enabled); } static void __ca_set_toolbutton_sensitive (const gchar *id, gboolean sensitive) { GObject *w = gtk_builder_get_object (main_window_gtkb, id); if (w) gtk_widget_set_sensitive (GTK_WIDGET (w), sensitive); } void __ca_activate_certificate_selection_cv (GnomintCertRow *row) { gboolean pk_indb = gnomint_cert_row_get_pkey_in_db (row); gboolean is_revoked = gnomint_cert_row_get_revocation (row); gboolean is_ca = gnomint_cert_row_get_is_ca (row); __ca_set_action_enabled ("export", TRUE); __ca_set_action_enabled ("export-chain", TRUE); __ca_set_action_enabled ("extract-pkey", pk_indb); __ca_set_toolbutton_sensitive ("extractpkey_toolbutton", pk_indb); __ca_set_action_enabled ("revoke", !is_revoked); __ca_set_toolbutton_sensitive ("revoke_toolbutton", !is_revoked); /* Renewal is not offered for CA certificates: the new cert would * have a different key, so all certificates previously signed by * the old CA would no longer chain to it. */ __ca_set_action_enabled ("renew", !is_revoked && !is_ca); __ca_set_action_enabled ("sign", FALSE); __ca_set_toolbutton_sensitive ("sign_toolbutton", FALSE); __ca_set_action_enabled ("delete", FALSE); __ca_set_toolbutton_sensitive ("delete_toolbutton", FALSE); __ca_set_action_enabled ("properties", TRUE); } void __ca_activate_csr_selection_cv (GnomintCertRow *row) { gboolean pk_indb = gnomint_cert_row_get_pkey_in_db (row); __ca_set_action_enabled ("export", TRUE); __ca_set_action_enabled ("extract-pkey", pk_indb); __ca_set_toolbutton_sensitive ("extractpkey_toolbutton", pk_indb); __ca_set_action_enabled ("revoke", FALSE); __ca_set_toolbutton_sensitive ("revoke_toolbutton", FALSE); __ca_set_action_enabled ("renew", FALSE); __ca_set_action_enabled ("sign", TRUE); __ca_set_toolbutton_sensitive ("sign_toolbutton", TRUE); __ca_set_action_enabled ("delete", TRUE); __ca_set_toolbutton_sensitive ("delete_toolbutton", TRUE); __ca_set_action_enabled ("properties", TRUE); } void __ca_deactivate_actions () { __ca_set_action_enabled ("export", FALSE); __ca_set_action_enabled ("export-chain", FALSE); __ca_set_action_enabled ("extract-pkey", FALSE); __ca_set_toolbutton_sensitive ("extractpkey_toolbutton", FALSE); __ca_set_action_enabled ("revoke", FALSE); __ca_set_toolbutton_sensitive ("revoke_toolbutton", FALSE); __ca_set_action_enabled ("renew", FALSE); __ca_set_action_enabled ("sign", FALSE); __ca_set_toolbutton_sensitive ("sign_toolbutton", FALSE); __ca_set_action_enabled ("delete", FALSE); __ca_set_toolbutton_sensitive ("delete_toolbutton", FALSE); __ca_set_action_enabled ("properties", FALSE); } /* GtkMultiSelection "selection-changed" handler. Signature differs * from the old GtkTreeView "cursor-changed"; we ignore the position/ * n_items args and just re-query the selection. */ G_MODULE_EXPORT void ca_treeview_selection_change (GtkSelectionModel *model G_GNUC_UNUSED, guint position G_GNUC_UNUSED, guint n_items G_GNUC_UNUSED, gpointer user_data G_GNUC_UNUSED) { GnomintCertRow *row = NULL; gint type = __ca_selection_type_cv (&row); switch (type) { case CA_FILE_ELEMENT_TYPE_CERT: __ca_activate_certificate_selection_cv (row); g_object_unref (row); break; case CA_FILE_ELEMENT_TYPE_CSR: __ca_activate_csr_selection_cv (row); g_object_unref (row); break; case -1: default: if (row) g_object_unref (row); __ca_deactivate_actions (); break; } } typedef struct { GnomintCertRow *row; gint type; } _ExportPublicPemCtx; static void __ca_export_public_pem_save_cb (GObject *source, GAsyncResult *result, gpointer user_data) { _ExportPublicPemCtx *ctx = (_ExportPublicPemCtx *) user_data; GtkFileDialog *fd = GTK_FILE_DIALOG (source); GError *error = NULL; GFile *gfile = gtk_file_dialog_save_finish (fd, result, &error); if (!gfile) { g_clear_error (&error); g_free (ctx); return; } gchar *filename = g_file_get_path (gfile); g_object_unref (gfile); GIOChannel *file = g_io_channel_new_file (filename, "w", &error); g_free (filename); if (error) { g_clear_error (&error); if (ctx->type == CA_FILE_ELEMENT_TYPE_CERT) dialog_error (_("There was an error while exporting certificate.")); else dialog_error (_("There was an error while exporting CSR.")); g_free (ctx); return; } const gchar *pem = gnomint_cert_row_get_pem (ctx->row); const gchar *parent_route = NULL; if (ctx->type == CA_FILE_ELEMENT_TYPE_CERT) parent_route = gnomint_cert_row_get_parent_route (ctx->row); if (pem) g_io_channel_write_chars (file, pem, strlen(pem), NULL, &error); if (!error && parent_route && strcmp (parent_route, ":")) { gchar ** tokens = g_strsplit (parent_route, ":", -1); guint num_tokens = g_strv_length (tokens) - 2; gint i; for (i=num_tokens; i>=1; i--) { gchar * parent_pem = ca_file_get_public_pem_from_id (CA_FILE_ELEMENT_TYPE_CERT, atoll(tokens[i])); if (parent_pem) { g_io_channel_write_chars (file, parent_pem, strlen(parent_pem), NULL, &error); g_free (parent_pem); } } g_strfreev (tokens); } if (error) { g_clear_error (&error); g_io_channel_unref (file); if (ctx->type == CA_FILE_ELEMENT_TYPE_CERT) dialog_error (_("There was an error while exporting certificate.")); else dialog_error (_("There was an error while exporting CSR.")); g_free (ctx); return; } g_io_channel_shutdown (file, TRUE, &error); if (error) { g_clear_error (&error); g_io_channel_unref (file); if (ctx->type == CA_FILE_ELEMENT_TYPE_CERT) dialog_error (_("There was an error while exporting certificate.")); else dialog_error (_("There was an error while exporting CSR.")); g_free (ctx); return; } g_io_channel_unref (file); const gchar *ok_msg = (ctx->type == CA_FILE_ELEMENT_TYPE_CERT) ? _("Certificate exported successfully") : _("Certificate signing request exported successfully"); GtkAlertDialog *ok_alert = gtk_alert_dialog_new ("%s", ok_msg); gtk_alert_dialog_show (ok_alert, dialog_get_main_window ()); g_object_unref (ok_alert); g_free (ctx); } void __ca_export_public_pem_cv (GnomintCertRow *row, gint type) { GtkWindow *parent = GTK_WINDOW(gtk_builder_get_object (main_window_gtkb, "main_window1")); _ExportPublicPemCtx *ctx = g_new0 (_ExportPublicPemCtx, 1); ctx->row = row; ctx->type = type; GtkFileDialog *fd = gtk_file_dialog_new (); if (type == CA_FILE_ELEMENT_TYPE_CERT) gtk_file_dialog_set_title (fd, _("Export certificate")); else gtk_file_dialog_set_title (fd, _("Export certificate signing request")); gtk_file_dialog_save (fd, parent, NULL, __ca_export_public_pem_save_cb, ctx); g_object_unref (fd); } static void __ca_export_pkcs8_done (const gchar *error_msg, gpointer user_data) { gchar *filename = (gchar *) user_data; if (! error_msg) { GtkAlertDialog *alert = gtk_alert_dialog_new ("%s", _("Private key exported successfully")); gtk_alert_dialog_show (alert, dialog_get_main_window ()); g_object_unref (alert); } else { dialog_error ((gchar *) error_msg); } g_free (filename); } typedef struct { GnomintCertRow *row; gint type; } _ExportPrivatePkcs8Ctx; static void __ca_export_private_pkcs8_save_cb (GObject *source, GAsyncResult *result, gpointer user_data) { _ExportPrivatePkcs8Ctx *ctx = (_ExportPrivatePkcs8Ctx *) user_data; GtkFileDialog *fd = GTK_FILE_DIALOG (source); GError *err = NULL; GFile *gfile = gtk_file_dialog_save_finish (fd, result, &err); if (!gfile) { g_clear_error (&err); g_free (ctx); return; } gchar *filename = g_file_get_path (gfile); g_object_unref (gfile); guint64 id = gnomint_cert_row_get_id (ctx->row); export_private_pkcs8 (id, ctx->type, filename, __ca_export_pkcs8_done, filename); g_free (ctx); } void __ca_export_private_pkcs8_cv (GnomintCertRow *row, gint type) { GtkWindow *parent = GTK_WINDOW(gtk_builder_get_object (main_window_gtkb, "main_window1")); _ExportPrivatePkcs8Ctx *ctx = g_new0 (_ExportPrivatePkcs8Ctx, 1); ctx->row = row; ctx->type = type; GtkFileDialog *fd = gtk_file_dialog_new (); gtk_file_dialog_set_title (fd, _("Export crypted private key")); gtk_file_dialog_save (fd, parent, NULL, __ca_export_private_pkcs8_save_cb, ctx); g_object_unref (fd); } static void __ca_export_private_pem_done_cb (const gchar *error_msg, gpointer user_data) { (void) user_data; if (error_msg) { dialog_error ((gchar *) error_msg); } else { GtkAlertDialog *alert = gtk_alert_dialog_new ("%s", _("Private key exported successfully")); gtk_alert_dialog_show (alert, dialog_get_main_window ()); g_object_unref (alert); } } typedef struct { GnomintCertRow *row; gint type; } _ExportPrivatePemCtx; static void __ca_export_private_pem_save_cb (GObject *source, GAsyncResult *result, gpointer user_data) { _ExportPrivatePemCtx *ctx = (_ExportPrivatePemCtx *) user_data; GtkFileDialog *fd = GTK_FILE_DIALOG (source); GError *err = NULL; GFile *gfile = gtk_file_dialog_save_finish (fd, result, &err); if (!gfile) { g_clear_error (&err); g_free (ctx); return; } gchar *filename = g_file_get_path (gfile); g_object_unref (gfile); guint64 id = gnomint_cert_row_get_id (ctx->row); export_private_pem (id, ctx->type, filename, __ca_export_private_pem_done_cb, NULL); g_free (filename); g_free (ctx); } void __ca_export_private_pem_cv (GnomintCertRow *row, gint type) { GtkWindow *parent = GTK_WINDOW(gtk_builder_get_object (main_window_gtkb, "main_window1")); _ExportPrivatePemCtx *ctx = g_new0 (_ExportPrivatePemCtx, 1); ctx->row = row; ctx->type = type; GtkFileDialog *fd = gtk_file_dialog_new (); gtk_file_dialog_set_title (fd, _("Export unencrypted private key")); gtk_file_dialog_save (fd, parent, NULL, __ca_export_private_pem_save_cb, ctx); g_object_unref (fd); } static void __ca_export_pkcs12_done (const gchar *error_msg, gpointer user_data) { g_free (user_data); /* filename */ if (error_msg && strlen(error_msg)) { dialog_error ((gchar *) error_msg); return; } if (error_msg) { /* Export cancelled by user (empty string) */ return; } GtkAlertDialog *alert = gtk_alert_dialog_new ("%s", _("Certificate exported successfully")); gtk_alert_dialog_show (alert, dialog_get_main_window ()); g_object_unref (alert); } typedef struct { GnomintCertRow *row; gint type; } _ExportPkcs12Ctx; static void __ca_export_pkcs12_save_cb (GObject *source, GAsyncResult *result, gpointer user_data) { _ExportPkcs12Ctx *ctx = (_ExportPkcs12Ctx *) user_data; GtkFileDialog *fd = GTK_FILE_DIALOG (source); GError *err = NULL; GFile *gfile = gtk_file_dialog_save_finish (fd, result, &err); if (!gfile) { g_clear_error (&err); g_free (ctx); return; } gchar *filename = g_file_get_path (gfile); g_object_unref (gfile); guint64 id = gnomint_cert_row_get_id (ctx->row); export_pkcs12 (id, ctx->type, filename, __ca_export_pkcs12_done, filename); g_free (ctx); } void __ca_export_pkcs12_cv (GnomintCertRow *row, gint type) { GtkWindow *parent = GTK_WINDOW(gtk_builder_get_object (main_window_gtkb, "main_window1")); _ExportPkcs12Ctx *ctx = g_new0 (_ExportPkcs12Ctx, 1); ctx->row = row; ctx->type = type; GtkFileDialog *fd = gtk_file_dialog_new (); gtk_file_dialog_set_title (fd, _("Export whole certificate in PKCS#12 package")); gtk_file_dialog_save (fd, parent, NULL, __ca_export_pkcs12_save_cb, ctx); g_object_unref (fd); } /* ---- Async export-certificate dialog (Step 2.2) ---- */ /* Context passed through the export-certificate dialog response. */ typedef struct { GnomintCertRow *row; gint type; GtkBuilder *dialog_gtkb; } ExportCertCtx; static void __ca_export_cert_response (GtkDialog *dialog, gint response_id, gpointer user_data) { ExportCertCtx *ctx = (ExportCertCtx *) user_data; if (!response_id || response_id == GTK_RESPONSE_CANCEL) { gtk_window_destroy (GTK_WINDOW (dialog)); g_object_unref (G_OBJECT (ctx->dialog_gtkb)); g_object_unref (ctx->row); g_free (ctx); return; } if (gtk_check_button_get_active (GTK_CHECK_BUTTON ( gtk_builder_get_object (ctx->dialog_gtkb, "publicpart_radiobutton1")))) { __ca_export_public_pem_cv (ctx->row, ctx->type); } else if (gtk_check_button_get_active (GTK_CHECK_BUTTON ( gtk_builder_get_object (ctx->dialog_gtkb, "privatepart_radiobutton2")))) { __ca_export_private_pkcs8_cv (ctx->row, ctx->type); } else if (gtk_check_button_get_active (GTK_CHECK_BUTTON ( gtk_builder_get_object (ctx->dialog_gtkb, "privatepart_uncrypted_radiobutton2")))) { __ca_export_private_pem_cv (ctx->row, ctx->type); } else if (gtk_check_button_get_active (GTK_CHECK_BUTTON ( gtk_builder_get_object (ctx->dialog_gtkb, "bothparts_radiobutton3")))) { __ca_export_pkcs12_cv (ctx->row, ctx->type); } else { dialog_error (_("Unexpected error")); } gtk_window_destroy (GTK_WINDOW (dialog)); g_object_unref (G_OBJECT (ctx->dialog_gtkb)); g_object_unref (ctx->row); g_free (ctx); } G_MODULE_EXPORT void ca_on_export1_activate (gpointer sender, gpointer user_data) { GObject * widget = NULL; GnomintCertRow *row = NULL; gint type = __ca_selection_type_cv (&row); GtkBuilder * dialog_gtkb = NULL; gboolean has_pk_in_db = FALSE; ExportCertCtx *ctx = NULL; if (type == -1) { if (row) g_object_unref (row); return; } dialog_gtkb = gtk_builder_new(); gtk_builder_add_from_file (dialog_gtkb, g_build_filename (PACKAGE_DATA_DIR, "gnomint", "export_certificate_dialog.ui", NULL ), NULL); has_pk_in_db = gnomint_cert_row_get_pkey_in_db (row); widget = gtk_builder_get_object (dialog_gtkb, "privatepart_radiobutton2"); gtk_widget_set_sensitive (GTK_WIDGET(widget), has_pk_in_db); widget = gtk_builder_get_object (dialog_gtkb, "bothparts_radiobutton3"); gtk_widget_set_sensitive (GTK_WIDGET(widget), has_pk_in_db); if (type == CA_FILE_ELEMENT_TYPE_CSR) { widget = gtk_builder_get_object (dialog_gtkb, "export_certificate_dialog"); gtk_window_set_title (GTK_WINDOW(widget), _("Export CSR - gnoMint")); widget = gtk_builder_get_object (dialog_gtkb, "label2"); gtk_label_set_text (GTK_LABEL(widget), _("Please, choose which part of the saved Certificate Signing Request you want to export:")); widget = gtk_builder_get_object (dialog_gtkb, "label5"); gtk_label_set_markup (GTK_LABEL(widget), _("Export the Certificate Signing Request to a public file, in PEM format.")); widget = gtk_builder_get_object (dialog_gtkb, "label15"); gtk_label_set_markup (GTK_LABEL(widget), _("Export the saved private key to a PKCS#8 password-protected file. This file should only be accessed by the subject of the Certificate Signing Request.")); widget = gtk_builder_get_object (dialog_gtkb, "bothparts_radiobutton3"); g_object_set (G_OBJECT (widget), "visible", FALSE, NULL); widget = gtk_builder_get_object (dialog_gtkb, "label19"); g_object_set (G_OBJECT (widget), "visible", FALSE, NULL); } ctx = g_new0 (ExportCertCtx, 1); ctx->row = row; /* transfer ownership */ ctx->type = type; ctx->dialog_gtkb = dialog_gtkb; /* transfer ownership */ widget = gtk_builder_get_object (dialog_gtkb, "export_certificate_dialog"); gtk_window_set_transient_for (GTK_WINDOW (widget), dialog_get_main_window ()); g_signal_connect (widget, "response", G_CALLBACK (__ca_export_cert_response), ctx); gtk_window_present (GTK_WINDOW (widget)); } /* Context for the async export-chain file dialog. */ typedef struct { guint64 cert_id; } _ExportChainCtx; static void __ca_export_chain_save_cb (GObject *source, GAsyncResult *result, gpointer user_data) { _ExportChainCtx *ctx = (_ExportChainCtx *) user_data; GtkFileDialog *fd = GTK_FILE_DIALOG (source); GError *err = NULL; GFile *gfile = gtk_file_dialog_save_finish (fd, result, &err); if (!gfile) { g_clear_error (&err); g_free (ctx); return; } gchar *filename = g_file_get_path (gfile); g_object_unref (gfile); gchar *chain_pem = ca_file_get_chain_pem_from_id (ctx->cert_id); if (! chain_pem) { dialog_error (_("Could not build certificate chain.")); g_free (filename); g_free (ctx); return; } if (! g_file_set_contents (filename, chain_pem, -1, &err)) { dialog_error (g_strdup_printf (_("Failed to write chain: %s"), err ? err->message : "?")); g_clear_error (&err); } else { GtkAlertDialog *alert = gtk_alert_dialog_new ("%s", _("Certificate chain exported successfully.")); gtk_alert_dialog_show (alert, dialog_get_main_window ()); g_object_unref (alert); } g_free (chain_pem); g_free (filename); g_free (ctx); } /* Export the full certificate chain (leaf + intermediates + root) as a * single PEM bundle. Intended use: deploy the bundle as a web server's * SSLCertificateChainFile / ssl_certificate. See #52. */ G_MODULE_EXPORT void ca_on_export_chain_activate (gpointer sender G_GNUC_UNUSED, gpointer user_data G_GNUC_UNUSED) { GnomintCertRow *row = NULL; gint type = __ca_selection_type_cv (&row); if (type != CA_FILE_ELEMENT_TYPE_CERT) { if (row) g_object_unref (row); dialog_error (_("Please select a certificate to export its chain.")); return; } guint64 cert_id = gnomint_cert_row_get_id (row); g_object_unref (row); gchar *cn = NULL; { gchar *dn = ca_file_get_dn_from_id (CA_FILE_ELEMENT_TYPE_CERT, cert_id); if (dn) { const gchar *p = strstr (dn, "CN="); if (p) { p += 3; const gchar *end = strchr (p, ','); cn = end ? g_strndup (p, end - p) : g_strdup (p); } g_free (dn); } } GtkWindow *parent = GTK_WINDOW(gtk_builder_get_object (main_window_gtkb, "main_window1")); GtkFileDialog *fd = gtk_file_dialog_new (); gtk_file_dialog_set_title (fd, _("Export certificate chain")); if (cn && cn[0]) { gchar *fname = g_strdup_printf ("%s.chain.pem", cn); gtk_file_dialog_set_initial_name (fd, fname); g_free (fname); } g_free (cn); _ExportChainCtx *ctx = g_new0 (_ExportChainCtx, 1); ctx->cert_id = cert_id; gtk_file_dialog_save (fd, parent, NULL, __ca_export_chain_save_cb, ctx); g_object_unref (fd); } /* ------------------------------------------------------------------ */ /* Bulk operations (issue #54) */ /* ------------------------------------------------------------------ */ /* The actual ca_bulk_revoke_ids / ca_bulk_delete_csr_ids implementations * live in ca_bulk.c so the CLI can link them too. */ /* Helper: walk the tree selection, partitioning selected rows into a * list of cert ids and a list of CSR ids. The returned GSLists are * caller-owned (free with g_slist_free; no per-element free needed * since each element is a GUINT-boxed pointer). */ void __ca_collect_selected_ids (GSList **cert_ids_out, GSList **csr_ids_out) { *cert_ids_out = NULL; *csr_ids_out = NULL; if (!ca_selection_model) return; GtkBitset *sel = gtk_selection_model_get_selection ( GTK_SELECTION_MODEL (ca_selection_model)); guint64 n = gtk_bitset_get_size (sel); for (guint64 i = 0; i < n; i++) { guint pos = gtk_bitset_get_nth (sel, i); GtkTreeListRow *tlr = GTK_TREE_LIST_ROW ( g_list_model_get_item ( G_LIST_MODEL (ca_selection_model), pos)); if (!tlr) continue; GnomintCertRow *row = GNOMINT_CERT_ROW ( gtk_tree_list_row_get_item (tlr)); g_object_unref (tlr); if (!row) continue; guint64 id = gnomint_cert_row_get_id (row); gint item_type = gnomint_cert_row_get_item_type (row); g_object_unref (row); if (id == 0) continue; gpointer boxed = GUINT_TO_POINTER ((guint) id); if (item_type == GNOMINT_ROW_TYPE_CSR) *csr_ids_out = g_slist_prepend (*csr_ids_out, boxed); else *cert_ids_out = g_slist_prepend (*cert_ids_out, boxed); } } /* GUI handler: ask for confirmation, then bulk-revoke every selected * cert (and skip CSRs / non-certs in the selection). Visible from the * Certificates menu and the right-click popup. */ G_MODULE_EXPORT void ca_on_bulk_revoke_activate (gpointer sender G_GNUC_UNUSED, gpointer user_data G_GNUC_UNUSED) { GSList *cert_ids = NULL, *csr_ids = NULL; __ca_collect_selected_ids (&cert_ids, &csr_ids); g_slist_free (csr_ids); gint n = (gint) g_slist_length (cert_ids); if (n == 0) { g_slist_free (cert_ids); dialog_error (_("Please select one or more certificates to revoke.")); return; } gchar *msg = g_strdup_printf ( ngettext ("Are you sure you want to revoke %d certificate?", "Are you sure you want to revoke %d certificates?", n), n); gchar *detail = g_strdup_printf ("%s\n\n%s", msg, _("Revoking a certificate will include it in the next CRL, marking " "it as invalid. CSRs in the selection (if any) are not affected; " "use \"Delete selected CSRs\" for those.")); g_free (msg); GtkAlertDialog *alert = gtk_alert_dialog_new ("%s", detail); g_free (detail); const char *buttons[] = { _("Yes"), _("No"), NULL }; gtk_alert_dialog_set_buttons (alert, buttons); gtk_alert_dialog_set_cancel_button (alert, 1); gtk_alert_dialog_set_default_button (alert, 1); gtk_alert_dialog_choose (alert, dialog_get_main_window (), NULL, __ca_bulk_revoke_choose_cb, cert_ids); g_object_unref (alert); } /* GUI handler: bulk-delete CSRs from the current selection. */ G_MODULE_EXPORT void ca_on_bulk_delete_csrs_activate (gpointer sender G_GNUC_UNUSED, gpointer user_data G_GNUC_UNUSED) { GSList *cert_ids = NULL, *csr_ids = NULL; __ca_collect_selected_ids (&cert_ids, &csr_ids); g_slist_free (cert_ids); gint n = (gint) g_slist_length (csr_ids); if (n == 0) { g_slist_free (csr_ids); dialog_error (_("Please select one or more CSRs to delete.")); return; } gchar *msg = g_strdup_printf ( ngettext ("Are you sure you want to delete %d Certificate Signing Request?", "Are you sure you want to delete %d Certificate Signing Requests?", n), n); GtkAlertDialog *alert = gtk_alert_dialog_new ("%s", msg); g_free (msg); const char *buttons[] = { _("Yes"), _("No"), NULL }; gtk_alert_dialog_set_buttons (alert, buttons); gtk_alert_dialog_set_cancel_button (alert, 1); gtk_alert_dialog_set_default_button (alert, 1); gtk_alert_dialog_choose (alert, dialog_get_main_window (), NULL, __ca_bulk_delete_csrs_choose_cb, csr_ids); g_object_unref (alert); } typedef struct { gchar *filename; guint64 id; gint type; GnomintCertRow *row; } _ExtractPkeyCtx; static void __ca_extract_pkey_done (const gchar *error_msg, gpointer user_data) { _ExtractPkeyCtx *ctx = (_ExtractPkeyCtx *) user_data; if (! error_msg) { GtkAlertDialog *alert = gtk_alert_dialog_new ("%s", _("Private key exported successfully")); gtk_alert_dialog_show (alert, dialog_get_main_window ()); g_object_unref (alert); if (ctx->type == CA_FILE_ELEMENT_TYPE_CERT) ca_file_mark_pkey_as_extracted_for_id (CA_FILE_ELEMENT_TYPE_CERT, ctx->filename, ctx->id); else ca_file_mark_pkey_as_extracted_for_id (CA_FILE_ELEMENT_TYPE_CSR, ctx->filename, ctx->id); dialog_refresh_list(); } else { dialog_error ((gchar *) error_msg); } g_free (ctx->filename); g_object_unref (ctx->row); g_free (ctx); } /* Context for the async extract-pkey file dialog launch. */ typedef struct { GnomintCertRow *row; gint type; guint64 id; } _ExtractPkeyLaunchCtx; static void __ca_extract_pkey_save_cb (GObject *source, GAsyncResult *result, gpointer user_data) { _ExtractPkeyLaunchCtx *lctx = (_ExtractPkeyLaunchCtx *) user_data; GtkFileDialog *fd = GTK_FILE_DIALOG (source); GError *err = NULL; GFile *gfile = gtk_file_dialog_save_finish (fd, result, &err); if (!gfile) { g_clear_error (&err); g_object_unref (lctx->row); g_free (lctx); return; } gchar *filename = g_file_get_path (gfile); g_object_unref (gfile); _ExtractPkeyCtx *ctx = g_new0 (_ExtractPkeyCtx, 1); ctx->filename = filename; ctx->id = lctx->id; ctx->type = lctx->type; ctx->row = lctx->row; /* transfer ownership */ export_private_pkcs8 (lctx->id, lctx->type, filename, __ca_extract_pkey_done, ctx); g_free (lctx); } G_MODULE_EXPORT void ca_on_extractprivatekey1_activate (gpointer sender, gpointer user_data) { GnomintCertRow *row = NULL; gint type; type = __ca_selection_type_cv (&row); if (type == -1 || !row) { if (row) g_object_unref (row); return; } guint64 id = gnomint_cert_row_get_id (row); GtkWindow *parent = GTK_WINDOW(gtk_builder_get_object (main_window_gtkb, "main_window1")); _ExtractPkeyLaunchCtx *lctx = g_new0 (_ExtractPkeyLaunchCtx, 1); lctx->row = row; /* transfer ownership */ lctx->type = type; lctx->id = id; GtkFileDialog *fd = gtk_file_dialog_new (); gtk_file_dialog_set_title (fd, _("Export crypted private key")); gtk_file_dialog_save (fd, parent, NULL, __ca_extract_pkey_save_cb, lctx); g_object_unref (fd); } G_MODULE_EXPORT void ca_on_renew_activate (gpointer sender, gpointer user_data) { GnomintCertRow *row = NULL; gint type = __ca_selection_type_cv (&row); guint64 cert_id = 0; if (type != CA_FILE_ELEMENT_TYPE_CERT) { if (row) g_object_unref (row); return; } if (gnomint_cert_row_get_is_ca (row)) { g_object_unref (row); dialog_error (_("CA certificates cannot be renewed. A renewed CA " "would have a different key, so certificates " "previously signed by the old CA would no longer " "chain to it.")); return; } cert_id = gnomint_cert_row_get_id (row); g_object_unref (row); GtkAlertDialog *alert = gtk_alert_dialog_new ("%s", _("Renew this certificate?\n\n" "gnoMint will issue a new certificate with the same subject " "and SAN as the selected one, signed by the same CA, with a " "freshly-generated keypair. The old certificate will remain in " "the database — revoke it manually after you have deployed the " "new one.")); const char *buttons[] = { _("Yes"), _("No"), NULL }; gtk_alert_dialog_set_buttons (alert, buttons); gtk_alert_dialog_set_cancel_button (alert, 1); gtk_alert_dialog_set_default_button (alert, 1); guint64 *cert_id_heap = g_new (guint64, 1); *cert_id_heap = cert_id; gtk_alert_dialog_choose (alert, dialog_get_main_window (), NULL, __ca_renew_choose_cb, cert_id_heap); g_object_unref (alert); } /* Build and show the diff dialog from two PEM strings. Both must be * non-NULL; ownership stays with the caller. */ void __ca_show_diff_dialog (const gchar *pem_left, const gchar *pem_right, const gchar *left_label, const gchar *right_label) { CertDiff *diff = cert_diff_new (pem_left, pem_right); GObject *parent_obj = gtk_builder_get_object (main_window_gtkb, "main_window1"); GtkWidget *parent = (parent_obj && GTK_IS_WINDOW (parent_obj)) ? GTK_WIDGET (parent_obj) : NULL; gint n_diffs = cert_diff_count_differences (diff); gchar *title = g_strdup_printf ( ngettext ("Certificate diff — %d difference", "Certificate diff — %d differences", n_diffs), n_diffs); GtkWidget *dlg = gtk_window_new (); gtk_window_set_title (GTK_WINDOW (dlg), title); if (parent) gtk_window_set_transient_for (GTK_WINDOW (dlg), GTK_WINDOW (parent)); gtk_window_set_modal (GTK_WINDOW (dlg), TRUE); g_free (title); gtk_window_set_default_size (GTK_WINDOW (dlg), 900, 600); GtkWidget *content = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); gtk_window_set_child (GTK_WINDOW (dlg), content); GtkWidget *scroll = gtk_scrolled_window_new (); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroll), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_widget_set_vexpand (scroll, TRUE); gtk_widget_set_hexpand (scroll, TRUE); gtk_box_append (GTK_BOX (content), scroll); GtkWidget *grid = gtk_grid_new (); gtk_grid_set_column_spacing (GTK_GRID (grid), 12); gtk_grid_set_row_spacing (GTK_GRID (grid), 4); gtk_scrolled_window_set_child (GTK_SCROLLED_WINDOW (scroll), grid); /* Column headers. */ GtkWidget *l_hdr_left = gtk_label_new (NULL); gchar *m; m = g_markup_printf_escaped ("%s", left_label ? left_label : _("Left")); gtk_label_set_markup (GTK_LABEL (l_hdr_left), m); g_free (m); gtk_label_set_xalign (GTK_LABEL (l_hdr_left), 0); GtkWidget *l_hdr_right = gtk_label_new (NULL); m = g_markup_printf_escaped ("%s", right_label ? right_label : _("Right")); gtk_label_set_markup (GTK_LABEL (l_hdr_right), m); g_free (m); gtk_label_set_xalign (GTK_LABEL (l_hdr_right), 0); gtk_grid_attach (GTK_GRID (grid), gtk_label_new (""), 0, 0, 1, 1); gtk_grid_attach (GTK_GRID (grid), l_hdr_left, 1, 0, 1, 1); gtk_grid_attach (GTK_GRID (grid), l_hdr_right, 2, 0, 1, 1); gint row = 1; for (GList *l = diff->fields; l; l = l->next) { CertDiffField *f = (CertDiffField *) l->data; GtkWidget *name = gtk_label_new (f->field_name); gtk_label_set_xalign (GTK_LABEL (name), 0); gtk_widget_set_valign (name, GTK_ALIGN_START); const gchar *lval = f->left ? f->left : "—"; const gchar *rval = f->right ? f->right : "—"; GtkWidget *left = gtk_label_new (NULL); GtkWidget *right = gtk_label_new (NULL); if (f->differs) { gchar *lm = g_markup_printf_escaped ( "%s", lval); gchar *rm = g_markup_printf_escaped ( "%s", rval); gtk_label_set_markup (GTK_LABEL (left), lm); gtk_label_set_markup (GTK_LABEL (right), rm); g_free (lm); g_free (rm); } else { gtk_label_set_text (GTK_LABEL (left), lval); gtk_label_set_text (GTK_LABEL (right), rval); } gtk_label_set_xalign (GTK_LABEL (left), 0); gtk_label_set_xalign (GTK_LABEL (right), 0); gtk_label_set_selectable (GTK_LABEL (left), TRUE); gtk_label_set_selectable (GTK_LABEL (right), TRUE); gtk_label_set_wrap (GTK_LABEL (left), TRUE); gtk_label_set_wrap (GTK_LABEL (right), TRUE); gtk_widget_set_hexpand (left, TRUE); gtk_widget_set_hexpand (right, TRUE); gtk_grid_attach (GTK_GRID (grid), name, 0, row, 1, 1); gtk_grid_attach (GTK_GRID (grid), left, 1, row, 1, 1); gtk_grid_attach (GTK_GRID (grid), right, 2, row, 1, 1); row++; } GtkWidget *close_btn = gtk_button_new_with_mnemonic (_("_Close")); gtk_widget_set_halign (close_btn, GTK_ALIGN_END); gtk_widget_set_margin_top (close_btn, 6); gtk_widget_set_margin_end (close_btn, 6); gtk_widget_set_margin_bottom (close_btn, 6); g_signal_connect_swapped (close_btn, "clicked", G_CALLBACK (gtk_window_destroy), dlg); gtk_box_append (GTK_BOX (content), close_btn); g_object_set_data_full (G_OBJECT (dlg), "diff", diff, (GDestroyNotify) cert_diff_free); gtk_window_set_transient_for (GTK_WINDOW (dlg), dialog_get_main_window ()); gtk_window_present (GTK_WINDOW (dlg)); } /* Context for the async compare-with-PEM file dialog. */ typedef struct { gchar *left_pem; gchar *left_subject; } _CompareWithCtx; static void __ca_compare_with_open_cb (GObject *source, GAsyncResult *result, gpointer user_data) { _CompareWithCtx *ctx = (_CompareWithCtx *) user_data; GtkFileDialog *fd = GTK_FILE_DIALOG (source); GError *err = NULL; GFile *gfile = gtk_file_dialog_open_finish (fd, result, &err); if (!gfile) { g_clear_error (&err); g_free (ctx->left_pem); g_free (ctx->left_subject); g_free (ctx); return; } gchar *path = g_file_get_path (gfile); g_object_unref (gfile); gchar *right_pem = NULL; if (!g_file_get_contents (path, &right_pem, NULL, &err)) { dialog_error (err ? err->message : _("Cannot read file.")); g_clear_error (&err); g_free (path); g_free (ctx->left_pem); g_free (ctx->left_subject); g_free (ctx); return; } gchar *right_label = g_path_get_basename (path); __ca_show_diff_dialog (ctx->left_pem, right_pem, ctx->left_subject ? ctx->left_subject : _("Selected"), right_label); g_free (right_label); g_free (right_pem); g_free (path); g_free (ctx->left_pem); g_free (ctx->left_subject); g_free (ctx); } /* Menu callback: prompt for a PEM file via GtkFileDialog, then diff * against the currently-selected cert. */ G_MODULE_EXPORT void ca_on_compare_with_activate (gpointer sender G_GNUC_UNUSED, gpointer user_data G_GNUC_UNUSED) { GnomintCertRow *row = NULL; gint type = __ca_selection_type_cv (&row); if (type != CA_FILE_ELEMENT_TYPE_CERT) { if (row) g_object_unref (row); return; } gchar *left_pem = g_strdup (gnomint_cert_row_get_pem (row)); gchar *left_subject = g_strdup (gnomint_cert_row_get_subject (row)); g_object_unref (row); if (!left_pem) { dialog_error (_("Cannot read PEM of the selected certificate.")); g_free (left_subject); return; } GtkWindow *parent = GTK_WINDOW(gtk_builder_get_object (main_window_gtkb, "main_window1")); _CompareWithCtx *ctx = g_new0 (_CompareWithCtx, 1); ctx->left_pem = left_pem; ctx->left_subject = left_subject; GtkFileDialog *fd = gtk_file_dialog_new (); gtk_file_dialog_set_title (fd, _("Compare with PEM file\xe2\x80\xa6")); gtk_file_dialog_open (fd, parent, NULL, __ca_compare_with_open_cb, ctx); g_object_unref (fd); } G_MODULE_EXPORT void ca_on_revoke_activate (gpointer sender, gpointer user_data) { GnomintCertRow *row = NULL; gint type = __ca_selection_type_cv (&row); guint64 id = 0; if (type == CA_FILE_ELEMENT_TYPE_CSR || type == -1) { if (row) g_object_unref (row); return; } id = gnomint_cert_row_get_id (row); g_object_unref (row); gchar *msg; if (! ca_file_check_if_is_ca_id (id)) { msg = g_strdup_printf ("%s\n\n%s", _("Are you sure you want to revoke this certificate?"), _("Revoking a certificate will include it in the next CRL, marking it as invalid. This way, any future use of the certificate will be denied (as long as the CRL is checked).")); } else { msg = g_strdup_printf ("%s\n\n%s", _("Are you sure you want to revoke this CA certificate?"), _("Revoking a certificate will include it in the next CRL, marking it as invalid. This way, any future use of the certificate will be denied (as long as the CRL is checked). \n\nMoreover, revoking a CA certificate can invalidate all the certificates generated with it, so all them should be regenerated with a new CA certificate.")); } GtkAlertDialog *alert = gtk_alert_dialog_new ("%s", msg); g_free (msg); const char *buttons[] = { _("Yes"), _("No"), NULL }; gtk_alert_dialog_set_buttons (alert, buttons); gtk_alert_dialog_set_cancel_button (alert, 1); gtk_alert_dialog_set_default_button (alert, 1); guint64 *id_heap = g_new (guint64, 1); *id_heap = id; gtk_alert_dialog_choose (alert, dialog_get_main_window (), NULL, __ca_revoke_choose_cb, id_heap); g_object_unref (alert); } G_MODULE_EXPORT void ca_on_delete2_activate (gpointer sender, gpointer user_data) { GnomintCertRow *row = NULL; gint type = __ca_selection_type_cv (&row); guint64 id = 0; if (type != CA_FILE_ELEMENT_TYPE_CSR) { if (row) g_object_unref (row); return; } id = gnomint_cert_row_get_id (row); g_object_unref (row); GtkAlertDialog *alert = gtk_alert_dialog_new ("%s", _("Are you sure you want to delete this Certificate Signing Request?")); const char *buttons[] = { _("Yes"), _("No"), NULL }; gtk_alert_dialog_set_buttons (alert, buttons); gtk_alert_dialog_set_cancel_button (alert, 1); gtk_alert_dialog_set_default_button (alert, 1); guint64 *id_heap = g_new (guint64, 1); *id_heap = id; gtk_alert_dialog_choose (alert, dialog_get_main_window (), NULL, __ca_delete_csr_choose_cb, id_heap); g_object_unref (alert); } G_MODULE_EXPORT void ca_on_sign1_activate (gpointer sender, gpointer user_data) { GnomintCertRow *row = NULL; gint type = __ca_selection_type_cv (&row); const gchar * csr_pem; guint64 csr_id; guint64 csr_parent_id_num; gchar * csr_parent_id_str; if (type != CA_FILE_ELEMENT_TYPE_CSR) { if (row) g_object_unref (row); return; } csr_id = gnomint_cert_row_get_id (row); csr_pem = gnomint_cert_row_get_pem (row); csr_parent_id_num = gnomint_cert_row_get_parent_id (row); csr_parent_id_str = g_strdup_printf ("%" G_GUINT64_FORMAT, csr_parent_id_num); new_cert_window_display (csr_id, csr_pem, csr_parent_id_str); g_free (csr_parent_id_str); g_object_unref (row); } gboolean ca_open (gchar *filename, gboolean create) { if (! ca_file_open (filename, create)) return FALSE; /* Re-arm the expiry banner for the freshly-opened file. */ ca_expiry_infobar_dismissed = FALSE; ca_view_only_expiring = FALSE; /* Reset the search filter so the new DB starts with everything * visible — both internally and in the entry widget. */ g_clear_pointer (&ca_search_text, g_free); { GObject *e = gtk_builder_get_object (main_window_gtkb, "search_entry"); if (e && GTK_IS_ENTRY (e)) gtk_editable_set_text(GTK_EDITABLE(e), ""); } dialog_refresh_list(); return TRUE; } guint64 ca_get_selected_row_id () { GnomintCertRow *row = NULL; guint64 result = 0; if (__ca_selection_type_cv (&row) != -1 && row) { result = gnomint_cert_row_get_id (row); g_object_unref (row); } return result; } gchar * ca_get_selected_row_pem () { GnomintCertRow *row = NULL; gchar * result = NULL; if (__ca_selection_type_cv (&row) != -1 && row) { result = g_strdup (gnomint_cert_row_get_pem (row)); g_object_unref (row); } return result; } void ca_update_csr_view (gboolean new_value, gboolean refresh) { view_csr = new_value; if (refresh) dialog_refresh_list(); } G_MODULE_EXPORT gboolean ca_csr_view_toggled (gpointer sender, gpointer user_data) { view_csr = !view_csr; ca_update_csr_view (view_csr, TRUE); if (view_csr != preferences_get_crq_visible()) preferences_set_crq_visible (view_csr); return TRUE; } void ca_update_revoked_view (gboolean new_value, gboolean refresh) { view_rcrt = new_value; if (refresh) dialog_refresh_list(); } G_MODULE_EXPORT gboolean ca_rcrt_view_toggled (gpointer sender, gpointer user_data) { view_rcrt = !view_rcrt; ca_update_revoked_view (view_rcrt, TRUE); if (view_rcrt != preferences_get_revoked_visible()) preferences_set_revoked_visible (view_rcrt); return TRUE; } void ca_update_expired_view (gboolean new_value, gboolean refresh) { view_expired = new_value; if (refresh) dialog_refresh_list(); } G_MODULE_EXPORT gboolean ca_expired_view_toggled (gpointer sender, gpointer user_data) { view_expired = !view_expired; ca_update_expired_view (view_expired, TRUE); if (view_expired != preferences_get_expired_visible()) preferences_set_expired_visible (view_expired); return TRUE; } G_MODULE_EXPORT void ca_generate_crl (gpointer sender, gpointer user_data) { crl_window_display (); } void ca_treeview_popup_handler (GtkGestureClick *gesture, int n_press, double x, double y, gpointer user_data) { GtkWidget *colview_widget = GTK_WIDGET (user_data); GMenuModel *menu_model = NULL; GnomintCertRow *row = NULL; gint selection_type; /* The row under the click is already selected by the default * GtkColumnView click handling, so just query the selection. */ selection_type = __ca_selection_type_cv (&row); switch (selection_type) { case CA_FILE_ELEMENT_TYPE_CERT: if (!cert_popup_menu_gtkb) goto cleanup; menu_model = G_MENU_MODEL (gtk_builder_get_object ( cert_popup_menu_gtkb, "certificate_popup_menu")); break; case CA_FILE_ELEMENT_TYPE_CSR: if (!csr_popup_menu_gtkb) goto cleanup; menu_model = G_MENU_MODEL (gtk_builder_get_object ( csr_popup_menu_gtkb, "csr_popup_menu")); break; default: goto cleanup; } if (!menu_model) goto cleanup; { GtkWidget *popover = gtk_popover_menu_new_from_model (menu_model); GdkRectangle rect = { (int)x, (int)y, 1, 1 }; gtk_popover_set_pointing_to (GTK_POPOVER (popover), &rect); gtk_widget_set_parent (popover, colview_widget); gtk_popover_popup (GTK_POPOVER (popover)); } cleanup: if (row) g_object_unref (row); } /* ---- Async change-password dialog (Step 2.5b) ---- */ /* Response callback for the change-password dialog. Replaces the old * do { ... } while (repeat) loop that used compat_dialog_run. */ static void __ca_change_pwd_response (GtkDialog *dialog, gint response_id, gpointer user_data) { GtkBuilder *dialog_gtkb = (GtkBuilder *) user_data; GObject *widget = NULL; if (!response_id || response_id == GTK_RESPONSE_CANCEL || response_id == GTK_RESPONSE_DELETE_EVENT) { gtk_window_destroy (GTK_WINDOW (dialog)); g_object_unref (G_OBJECT (dialog_gtkb)); return; } /* Read entries. */ widget = gtk_builder_get_object (dialog_gtkb, "ca_changepwd_newpwd_entry1"); const gchar *newpwd = gtk_editable_get_text (GTK_EDITABLE (widget)); widget = gtk_builder_get_object (dialog_gtkb, "ca_changepwd_current_pwd_entry"); const gchar *currpwd = gtk_editable_get_text (GTK_EDITABLE (widget)); /* Validate current password. */ if (ca_file_is_password_protected () && !ca_file_check_password (currpwd)) { dialog_error (_("The current password you have entered " "doesn't match with the actual current database password.")); widget = gtk_builder_get_object (dialog_gtkb, "ca_changepwd_current_pwd_entry"); gtk_widget_grab_focus (GTK_WIDGET (widget)); /* Re-present the same dialog so the user can try again. */ gtk_window_present (GTK_WINDOW (dialog)); return; } /* Password validated — apply the change. */ widget = gtk_builder_get_object (dialog_gtkb, "ca_changepwd_pwd_protect_yes_radiobutton"); if (gtk_check_button_get_active (GTK_CHECK_BUTTON (widget))) { if (ca_file_is_password_protected ()) { /* It's a password change. */ if (!ca_file_password_change (currpwd, newpwd)) { dialog_error (_("Error while changing database password. " "The operation was cancelled.")); } else { { GtkAlertDialog *alert = gtk_alert_dialog_new ("%s", _("Password changed successfully")); gtk_alert_dialog_show (alert, GTK_WINDOW (dialog)); g_object_unref (alert); } } } else { /* It's a new password. */ if (!ca_file_password_protect (newpwd)) { dialog_error (_("Error while establishing database password. " "The operation was cancelled.")); } else { { GtkAlertDialog *alert = gtk_alert_dialog_new ("%s", _("Password established successfully")); gtk_alert_dialog_show (alert, GTK_WINDOW (dialog)); g_object_unref (alert); } } } } else { if (ca_file_is_password_protected ()) { /* Remove password protection. */ if (!ca_file_password_unprotect (currpwd)) { dialog_error (_("Error while removing database password. " "The operation was cancelled.")); } else { { GtkAlertDialog *alert = gtk_alert_dialog_new ("%s", _("Password removed successfully")); gtk_alert_dialog_show (alert, GTK_WINDOW (dialog)); g_object_unref (alert); } } } else { /* No password and not requesting one — nothing to do. */ } } gtk_window_destroy (GTK_WINDOW (dialog)); g_object_unref (G_OBJECT (dialog_gtkb)); } G_MODULE_EXPORT void ca_on_change_pwd_menuitem_activate (gpointer sender, gpointer user_data) { GObject * widget = NULL; GtkBuilder * dialog_gtkb = NULL; dialog_gtkb = gtk_builder_new(); gtk_builder_add_from_file (dialog_gtkb, g_build_filename (PACKAGE_DATA_DIR, "gnomint", "change_password_dialog.ui", NULL), NULL); if (ca_file_is_password_protected()) { widget = gtk_builder_get_object (dialog_gtkb, "ca_changepwd_pwd_protect_yes_radiobutton"); gtk_check_button_set_active (GTK_CHECK_BUTTON(widget), TRUE); widget = gtk_builder_get_object (dialog_gtkb, "ca_changepwd_label1"); g_object_set (G_OBJECT(widget), "visible", TRUE, NULL); widget = gtk_builder_get_object (dialog_gtkb, "ca_changepwd_current_pwd_entry"); g_object_set (G_OBJECT(widget), "visible", TRUE, NULL); widget = gtk_builder_get_object (dialog_gtkb, "ca_changepwd_label2"); gtk_widget_set_sensitive (GTK_WIDGET(widget), TRUE); widget = gtk_builder_get_object (dialog_gtkb, "ca_changepwd_label3"); gtk_widget_set_sensitive (GTK_WIDGET(widget), TRUE); widget = gtk_builder_get_object (dialog_gtkb, "ca_changepwd_newpwd_entry1"); gtk_widget_set_sensitive (GTK_WIDGET(widget), TRUE); widget = gtk_builder_get_object (dialog_gtkb, "ca_changepwd_newpwd_entry2"); gtk_widget_set_sensitive (GTK_WIDGET(widget), TRUE); widget = gtk_builder_get_object (dialog_gtkb, "ca_changepwd_commit_button"); gtk_widget_set_sensitive (GTK_WIDGET(widget), FALSE); } else { widget = gtk_builder_get_object (dialog_gtkb, "ca_changepwd_pwd_protect_no_radiobutton"); gtk_check_button_set_active (GTK_CHECK_BUTTON(widget), TRUE); widget = gtk_builder_get_object (dialog_gtkb, "ca_changepwd_label1"); g_object_set (G_OBJECT(widget), "visible", FALSE, NULL); widget = gtk_builder_get_object (dialog_gtkb, "ca_changepwd_current_pwd_entry"); g_object_set (G_OBJECT(widget), "visible", FALSE, NULL); widget = gtk_builder_get_object (dialog_gtkb, "ca_changepwd_label2"); gtk_widget_set_sensitive (GTK_WIDGET(widget), FALSE); widget = gtk_builder_get_object (dialog_gtkb, "ca_changepwd_label3"); gtk_widget_set_sensitive (GTK_WIDGET(widget), FALSE); widget = gtk_builder_get_object (dialog_gtkb, "ca_changepwd_newpwd_entry1"); gtk_widget_set_sensitive (GTK_WIDGET(widget), FALSE); widget = gtk_builder_get_object (dialog_gtkb, "ca_changepwd_newpwd_entry2"); gtk_widget_set_sensitive (GTK_WIDGET(widget), FALSE); } widget = gtk_builder_get_object (dialog_gtkb, "ca_changepwd_pwd_protect_yes_radiobutton"); g_object_set_data (G_OBJECT(widget), "dialog_gtkb", dialog_gtkb); widget = gtk_builder_get_object (dialog_gtkb, "ca_changepwd_newpwd_entry1"); g_object_set_data (G_OBJECT(widget), "dialog_gtkb", dialog_gtkb); widget = gtk_builder_get_object (dialog_gtkb, "ca_changepwd_newpwd_entry2"); g_object_set_data (G_OBJECT(widget), "dialog_gtkb", dialog_gtkb); widget = gtk_builder_get_object (dialog_gtkb, "ca_changepwd_current_pwd_entry"); g_object_set_data (G_OBJECT(widget), "dialog_gtkb", dialog_gtkb); /* Present the dialog asynchronously with a response callback. */ widget = gtk_builder_get_object (dialog_gtkb, "change_password_dialog"); gtk_window_set_title (GTK_WINDOW(widget), _("Change CA password - gnoMint")); gtk_window_set_transient_for (GTK_WINDOW (widget), dialog_get_main_window ()); g_signal_connect (widget, "response", G_CALLBACK (__ca_change_pwd_response), dialog_gtkb); gtk_window_present (GTK_WINDOW (widget)); } G_MODULE_EXPORT gboolean ca_changepwd_newpwd_entry_changed (GtkWidget *entry, gpointer user_data) { GtkBuilder * dialog_gtkb = g_object_get_data (G_OBJECT(entry), "dialog_gtkb"); GObject *widget; const gchar *pwd1; const gchar *pwd2; const gchar *currpwd; gboolean pwd_protect; widget = gtk_builder_get_object (dialog_gtkb, "ca_changepwd_pwd_protect_yes_radiobutton"); pwd_protect = gtk_check_button_get_active (GTK_CHECK_BUTTON (widget)); widget = gtk_builder_get_object (dialog_gtkb, "ca_changepwd_newpwd_entry1"); pwd1 = gtk_editable_get_text(GTK_EDITABLE(widget)); widget = gtk_builder_get_object (dialog_gtkb, "ca_changepwd_newpwd_entry2"); pwd2 = gtk_editable_get_text(GTK_EDITABLE(widget)); widget = gtk_builder_get_object (dialog_gtkb, "ca_changepwd_current_pwd_entry"); currpwd = gtk_editable_get_text(GTK_EDITABLE(widget)); widget = gtk_builder_get_object (dialog_gtkb, "ca_changepwd_commit_button"); if (pwd_protect) { if (strlen(pwd1) && strlen(pwd2) && ! strcmp(pwd1, pwd2)) { if (!ca_file_is_password_protected() || (ca_file_is_password_protected() && strlen(currpwd))) gtk_widget_set_sensitive (GTK_WIDGET(widget), TRUE); else gtk_widget_set_sensitive (GTK_WIDGET(widget), FALSE); } else { gtk_widget_set_sensitive (GTK_WIDGET(widget), FALSE); } } else { gtk_widget_set_sensitive (GTK_WIDGET(widget), TRUE); } return FALSE; } G_MODULE_EXPORT gboolean ca_changepwd_pwd_protect_radiobutton_toggled (GtkWidget *button, gpointer user_data) { GtkBuilder * dialog_gtkb; GObject * widget = NULL; if (! G_IS_OBJECT(button)) return TRUE; dialog_gtkb = g_object_get_data (G_OBJECT(button), "dialog_gtkb"); if (! dialog_gtkb) return TRUE; widget = gtk_builder_get_object (dialog_gtkb, "ca_changepwd_pwd_protect_yes_radiobutton"); if (gtk_check_button_get_active (GTK_CHECK_BUTTON (widget))) { /* We want to password-protect the database */ widget = gtk_builder_get_object (dialog_gtkb, "ca_changepwd_label2"); gtk_widget_set_sensitive (GTK_WIDGET(widget), TRUE); widget = gtk_builder_get_object (dialog_gtkb, "ca_changepwd_label3"); gtk_widget_set_sensitive (GTK_WIDGET(widget), TRUE); widget = gtk_builder_get_object (dialog_gtkb, "ca_changepwd_newpwd_entry1"); gtk_widget_set_sensitive (GTK_WIDGET(widget), TRUE); widget = gtk_builder_get_object (dialog_gtkb, "ca_changepwd_newpwd_entry2"); gtk_widget_set_sensitive (GTK_WIDGET(widget), TRUE); ca_changepwd_newpwd_entry_changed (button, NULL); } else { widget = gtk_builder_get_object (dialog_gtkb, "ca_changepwd_label2"); gtk_widget_set_sensitive (GTK_WIDGET(widget), FALSE); widget = gtk_builder_get_object (dialog_gtkb, "ca_changepwd_label3"); gtk_widget_set_sensitive (GTK_WIDGET(widget), FALSE); widget = gtk_builder_get_object (dialog_gtkb, "ca_changepwd_newpwd_entry1"); gtk_widget_set_sensitive (GTK_WIDGET(widget), FALSE); widget = gtk_builder_get_object (dialog_gtkb, "ca_changepwd_newpwd_entry2"); gtk_widget_set_sensitive (GTK_WIDGET(widget), FALSE); } return FALSE; } /* ---- Async DH-parameters dialog (Step 2.3) ---- */ typedef struct { guint dh_size; GtkBuilder *dialog_gtkb; GtkDialog *outer_dialog; } _DhParamSaveCtx; static void __ca_dh_param_save_cb (GObject *source, GAsyncResult *result, gpointer user_data) { _DhParamSaveCtx *ctx = (_DhParamSaveCtx *) user_data; GtkFileDialog *fd = GTK_FILE_DIALOG (source); GError *err = NULL; GFile *gfile = gtk_file_dialog_save_finish (fd, result, &err); if (!gfile) { g_clear_error (&err); /* User cancelled the file dialog — don't close the outer dialog. */ g_free (ctx); return; } gchar *filename = g_file_get_path (gfile); g_object_unref (gfile); gchar *strerror = export_dh_param (ctx->dh_size, filename); gtk_window_destroy (GTK_WINDOW (ctx->outer_dialog)); if (strerror) { dialog_error (strerror); } else { GtkAlertDialog *alert = gtk_alert_dialog_new ("%s", _("Diffie-Hellman parameters saved successfully")); gtk_alert_dialog_show (alert, dialog_get_main_window ()); g_object_unref (alert); } g_free (filename); g_object_unref (G_OBJECT (ctx->dialog_gtkb)); g_free (ctx); } static void __ca_dh_param_response (GtkDialog *dialog, gint response_id, gpointer user_data) { GtkBuilder *dialog_gtkb = (GtkBuilder *) user_data; if (!response_id) { gtk_window_destroy (GTK_WINDOW (dialog)); g_object_unref (G_OBJECT (dialog_gtkb)); return; } GObject *spin = gtk_builder_get_object (dialog_gtkb, "dh_prime_size_spinbutton"); guint dh_size = gtk_spin_button_get_value (GTK_SPIN_BUTTON (spin)); _DhParamSaveCtx *ctx = g_new0 (_DhParamSaveCtx, 1); ctx->dh_size = dh_size; ctx->dialog_gtkb = dialog_gtkb; /* transfer ownership */ ctx->outer_dialog = dialog; GtkFileDialog *fd = gtk_file_dialog_new (); gtk_file_dialog_set_title (fd, _("Save Diffie-Hellman parameters")); gtk_file_dialog_save (fd, GTK_WINDOW (dialog), NULL, __ca_dh_param_save_cb, ctx); g_object_unref (fd); } G_MODULE_EXPORT void ca_generate_dh_param_show (GtkWidget *menuitem, gpointer user_data) { GtkDialog * dialog = NULL; GtkBuilder * dialog_gtkb = NULL; dialog_gtkb = gtk_builder_new(); gtk_builder_add_from_file (dialog_gtkb, g_build_filename (PACKAGE_DATA_DIR, "gnomint", "dh_parameters_dialog.ui", NULL), NULL); dialog = GTK_DIALOG(gtk_builder_get_object (dialog_gtkb, "dh_parameters_dialog")); gtk_window_set_transient_for (GTK_WINDOW (dialog), dialog_get_main_window ()); g_signal_connect (dialog, "response", G_CALLBACK (__ca_dh_param_response), dialog_gtkb); gtk_window_present (GTK_WINDOW (dialog)); } /* * * FILE MENU CALLBACKS * */ G_MODULE_EXPORT void on_add_self_signed_ca_activate (gpointer sender, gpointer user_data) { new_ca_window_display(); } G_MODULE_EXPORT void on_add_csr_activate (gpointer sender, gpointer user_data) { new_req_window_display(); } G_MODULE_EXPORT void on_wizard_web_activate (gpointer sender, gpointer user_data) { wizard_window_display(WIZARD_CERT_TYPE_WEB_SERVER); } G_MODULE_EXPORT void on_wizard_email_activate (gpointer sender, gpointer user_data) { wizard_window_display(WIZARD_CERT_TYPE_EMAIL_SERVER); } /* ---- Async import file-or-directory dialog (Step 2.4) ---- */ /* Callback for the import-file open dialog. */ static void __ca_import_file_open_cb (GObject *source, GAsyncResult *result, gpointer user_data) { GtkBuilder *dialog_gtkb = (GtkBuilder *) user_data; GtkFileDialog *fd = GTK_FILE_DIALOG (source); GError *err = NULL; GFile *gfile = gtk_file_dialog_open_finish (fd, result, &err); if (!gfile) { g_clear_error (&err); g_object_unref (G_OBJECT (dialog_gtkb)); return; } gchar *filename = g_file_get_path (gfile); g_object_unref (gfile); if (!import_single_file (filename, NULL, NULL)) { GtkAlertDialog *alert = gtk_alert_dialog_new ( _("Problem when importing '%s' file"), filename); gtk_alert_dialog_show (alert, dialog_get_main_window ()); g_object_unref (alert); } g_free (filename); g_object_unref (G_OBJECT (dialog_gtkb)); } /* Callback for the import-directory select-folder dialog. */ static void __ca_import_dir_select_cb (GObject *source, GAsyncResult *result, gpointer user_data) { GtkBuilder *dialog_gtkb = (GtkBuilder *) user_data; GtkFileDialog *fd = GTK_FILE_DIALOG (source); GError *err = NULL; GFile *gfile = gtk_file_dialog_select_folder_finish (fd, result, &err); if (!gfile) { g_clear_error (&err); g_object_unref (G_OBJECT (dialog_gtkb)); return; } gchar *filename = g_file_get_path (gfile); g_object_unref (gfile); gchar *import_result = import_whole_dir (filename); if (import_result) { GtkAlertDialog *alert = gtk_alert_dialog_new ("%s", import_result); gtk_alert_dialog_show (alert, dialog_get_main_window ()); g_object_unref (alert); } g_free (filename); g_object_unref (G_OBJECT (dialog_gtkb)); } static void __ca_import_file_or_dir_response (GtkDialog *dialog, gint response_id, gpointer user_data) { GtkBuilder *dialog_gtkb = (GtkBuilder *) user_data; if (response_id < 0) { gtk_window_destroy (GTK_WINDOW (dialog)); g_object_unref (G_OBJECT (dialog_gtkb)); return; } GtkCheckButton *radiobutton = GTK_CHECK_BUTTON ( gtk_builder_get_object (dialog_gtkb, "importfile_radiobutton")); gboolean import_file = gtk_check_button_get_active (radiobutton); gtk_window_destroy (GTK_WINDOW (dialog)); GtkWindow *parent = GTK_WINDOW(gtk_builder_get_object (main_window_gtkb, "main_window1")); if (import_file) { GtkFileDialog *fd = gtk_file_dialog_new (); gtk_file_dialog_set_title (fd, _("Select PEM file to import")); gtk_file_dialog_open (fd, parent, NULL, __ca_import_file_open_cb, dialog_gtkb); g_object_unref (fd); } else { GtkFileDialog *fd = gtk_file_dialog_new (); gtk_file_dialog_set_title (fd, _("Select directory to import")); gtk_file_dialog_select_folder (fd, parent, NULL, __ca_import_dir_select_cb, dialog_gtkb); g_object_unref (fd); } } G_MODULE_EXPORT void on_import1_activate (gpointer sender, gpointer user_data) { GObject *widget; GtkBuilder * dialog_gtkb = NULL; dialog_gtkb = gtk_builder_new(); gtk_builder_add_from_file (dialog_gtkb, g_build_filename (PACKAGE_DATA_DIR, "gnomint", "import_file_or_directory_dialog.ui", NULL), NULL); widget = gtk_builder_get_object (dialog_gtkb, "import_file_or_directory_dialog"); g_signal_connect (widget, "response", G_CALLBACK (__ca_import_file_or_dir_response), dialog_gtkb); gtk_window_set_transient_for (GTK_WINDOW (widget), dialog_get_main_window ()); gtk_window_present (GTK_WINDOW (widget)); } /* * * EDIT MENU CALLBACKS * */ G_MODULE_EXPORT void on_preferences1_activate (gpointer sender, gpointer user_data) { preferences_window_display (); } G_MODULE_EXPORT void on_properties1_activate (gpointer sender, gpointer user_data) { ca_treeview_row_activated (NULL, 0, NULL); } #endif gnomint-1.6.4/src/ca.h0000644000000000000000000000640015212761266013266 0ustar00rootroot// gnoMint: a graphical interface for managing a certification authority // Copyright (C) 2006-2009 David Marín Carreño // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #ifndef _CA_H_ #define _CA_H_ #include #include #ifndef GNOMINTCLI #include #include const gchar *ca_compute_row_foreground (time_t effective_expiration, time_t now, gint warn_days); gboolean ca_refresh_model_callback (); gboolean ca_treeview_row_activated (GtkColumnView *colview, guint position, gpointer user_data); void ca_treeview_selection_change (GtkSelectionModel *model, guint position, guint n_items, gpointer user_data); void ca_on_export1_activate (gpointer sender, gpointer user_data); void ca_on_export_chain_activate (gpointer sender, gpointer user_data); void ca_on_bulk_revoke_activate (gpointer sender, gpointer user_data); void ca_on_bulk_delete_csrs_activate (gpointer sender, gpointer user_data); gint ca_bulk_revoke_ids (GSList *cert_ids, gchar **error_out); gint ca_bulk_delete_csr_ids (GSList *csr_ids, gchar **error_out); void ca_on_extractprivatekey1_activate (gpointer sender, gpointer user_data); void ca_on_revoke_activate (gpointer sender, gpointer user_data); void ca_on_delete2_activate (gpointer sender, gpointer user_data); void ca_on_sign1_activate (gpointer sender, gpointer user_data); gboolean ca_open (gchar *filename, gboolean create); guint64 ca_get_selected_row_id (void); gchar * ca_get_selected_row_pem (void); void ca_update_csr_view (gboolean new_value, gboolean refresh); gboolean ca_csr_view_toggled (gpointer sender, gpointer user_data); void ca_update_revoked_view (gboolean new_value, gboolean refresh); gboolean ca_rcrt_view_toggled (gpointer sender, gpointer user_data); void ca_update_expired_view (gboolean new_value, gboolean refresh); gboolean ca_expired_view_toggled (gpointer sender, gpointer user_data); void ca_generate_crl (gpointer sender, gpointer user_data); gboolean ca_treeview_popup_timeout_program_cb (gpointer data); void ca_on_change_pwd_menuitem_activate (gpointer sender, gpointer user_data); gboolean ca_changepwd_newpwd_entry_changed (GtkWidget *entry, gpointer user_data); gboolean ca_changepwd_pwd_protect_radiobutton_toggled (GtkWidget *button, gpointer user_data); void ca_generate_dh_param_show (GtkWidget *menuitem, gpointer user_data); void ca_on_renew_activate(gpointer sender, gpointer user_data); void ca_on_compare_with_activate(gpointer sender, gpointer user_data); #else #include "ca-cli.h" #endif #endif gnomint-1.6.4/src/cert_diff.c0000644000000000000000000001257515212761266014635 0ustar00rootroot/* Pairwise X.509 certificate diff. See cert_diff.h. */ #include #include "cert_diff.h" #include "tls.h" #include "uint160.h" #include "gnomint_time.h" #include #include #include static void __append_field (CertDiff *d, const gchar *name, const gchar *left, const gchar *right) { CertDiffField *f = g_new0 (CertDiffField, 1); f->field_name = g_strdup (name); f->left = left ? g_strdup (left) : NULL; f->right = right ? g_strdup (right) : NULL; f->differs = (g_strcmp0 (left, right) != 0); d->fields = g_list_append (d->fields, f); } static gchar * __format_time (gint64 t) { if (t == 0) return NULL; struct tm tm; gnomint_gmtime (t, &tm); gchar buf[64]; if (strftime (buf, sizeof (buf), "%Y-%m-%d %H:%M:%S GMT", &tm) == 0) return NULL; return g_strdup (buf); } /* Join a TlsCert's GList uses field into a comma-separated * string. uses is built by tls_parse_cert_pem and entries are * translated user-visible strings — fine for display. */ static gchar * __join_uses (GList *uses) { if (!uses) return NULL; GString *s = g_string_new (NULL); for (GList *l = uses; l; l = l->next) { if (s->len > 0) g_string_append (s, ", "); g_string_append (s, (const gchar *) l->data); } return g_string_free (s, FALSE); } static gchar * __format_serial (const UInt160 *s) { return uint160_strdup_printf ((UInt160 *) s); } CertDiff * cert_diff_new (const gchar *pem_left, const gchar *pem_right) { CertDiff *d = g_new0 (CertDiff, 1); TlsCert *L = pem_left ? tls_parse_cert_pem (pem_left) : NULL; TlsCert *R = pem_right ? tls_parse_cert_pem (pem_right) : NULL; if (pem_left && !L) d->parse_error_left = g_strdup (_("Cannot parse left certificate")); if (pem_right && !R) d->parse_error_right = g_strdup (_("Cannot parse right certificate")); const gchar *Lcn = L ? L->cn : NULL; const gchar *Rcn = R ? R->cn : NULL; const gchar *Lo = L ? L->o : NULL; const gchar *Ro = R ? R->o : NULL; const gchar *Lou = L ? L->ou : NULL; const gchar *Rou = R ? R->ou : NULL; const gchar *Lc = L ? L->c : NULL; const gchar *Rc = R ? R->c : NULL; const gchar *Lst = L ? L->st : NULL; const gchar *Rst = R ? R->st : NULL; const gchar *Ll = L ? L->l : NULL; const gchar *Rl = R ? R->l : NULL; const gchar *Lem = L ? L->emailAddress : NULL; const gchar *Rem = R ? R->emailAddress : NULL; const gchar *Ldn = L ? L->dn : NULL; const gchar *Rdn = R ? R->dn : NULL; const gchar *Lidn = L ? L->i_dn : NULL; const gchar *Ridn = R ? R->i_dn : NULL; gchar *Lserial = L ? __format_serial (&L->serial_number) : NULL; gchar *Rserial = R ? __format_serial (&R->serial_number) : NULL; gchar *Lact = L ? __format_time (L->activation_time) : NULL; gchar *Ract = R ? __format_time (R->activation_time) : NULL; gchar *Lexp = L ? __format_time (L->expiration_time) : NULL; gchar *Rexp = R ? __format_time (R->expiration_time) : NULL; gchar *Luses = L ? __join_uses (L->uses) : NULL; gchar *Ruses = R ? __join_uses (R->uses) : NULL; const gchar *Lsan = L ? L->subject_alt_name : NULL; const gchar *Rsan = R ? R->subject_alt_name : NULL; const gchar *Lski = L ? L->subject_key_id : NULL; const gchar *Rski = R ? R->subject_key_id : NULL; const gchar *Laki = L ? L->issuer_key_id : NULL; const gchar *Raki = R ? R->issuer_key_id : NULL; const gchar *Lcrl = L ? L->crl_distribution_point : NULL; const gchar *Rcrl = R ? R->crl_distribution_point : NULL; const gchar *Lsha1 = L ? L->sha1 : NULL; const gchar *Rsha1 = R ? R->sha1 : NULL; const gchar *Lsha256 = L ? L->sha256 : NULL; const gchar *Rsha256 = R ? R->sha256 : NULL; __append_field (d, _("Subject CN"), Lcn, Rcn); __append_field (d, _("Subject O"), Lo, Ro); __append_field (d, _("Subject OU"), Lou, Rou); __append_field (d, _("Subject Country"), Lc, Rc); __append_field (d, _("Subject State"), Lst, Rst); __append_field (d, _("Subject Locality"), Ll, Rl); __append_field (d, _("Subject email"), Lem, Rem); __append_field (d, _("Subject DN"), Ldn, Rdn); __append_field (d, _("Issuer DN"), Lidn, Ridn); __append_field (d, _("Serial"), Lserial, Rserial); __append_field (d, _("Activation"), Lact, Ract); __append_field (d, _("Expiration"), Lexp, Rexp); __append_field (d, _("SAN"), Lsan, Rsan); __append_field (d, _("Key usage / EKU"), Luses, Ruses); __append_field (d, _("Subject Key ID"), Lski, Rski); __append_field (d, _("Authority Key ID"), Laki, Raki); __append_field (d, _("CRL distribution"), Lcrl, Rcrl); __append_field (d, _("SHA-1 fingerprint"), Lsha1, Rsha1); __append_field (d, _("SHA-256 fingerprint"), Lsha256, Rsha256); g_free (Lserial); g_free (Rserial); g_free (Lact); g_free (Ract); g_free (Lexp); g_free (Rexp); g_free (Luses); g_free (Ruses); if (L) tls_cert_free (L); if (R) tls_cert_free (R); return d; } void cert_diff_free (CertDiff *d) { if (!d) return; for (GList *l = d->fields; l; l = l->next) { CertDiffField *f = (CertDiffField *) l->data; g_free (f->field_name); g_free (f->left); g_free (f->right); g_free (f); } g_list_free (d->fields); g_free (d->parse_error_left); g_free (d->parse_error_right); g_free (d); } gint cert_diff_count_differences (const CertDiff *d) { if (!d) return 0; gint n = 0; for (GList *l = d->fields; l; l = l->next) if (((CertDiffField *) l->data)->differs) n++; return n; } gnomint-1.6.4/src/new_cert.h0000644000000000000000000000440115212761266014510 0ustar00rootroot// gnoMint: a graphical interface for managing a certification authority // Copyright (C) 2006-2009 David Marín Carreño // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #ifndef _NEW_CERT_WINDOW_H_ #define _NEW_CERT_WINDOW_H_ #include "tls.h" #ifndef GNOMINTCLI void new_cert_window_display (const guint64 csr_id, const gchar * csr_pem, const gchar * csr_parent_id); void new_cert_tab_activate (int tab_number); void on_new_cert_next2_clicked (GtkButton *button, gpointer user_data); void on_new_cert_previous2_clicked (GtkButton *widget, gpointer user_data) ; void on_new_cert_next1_clicked (GtkButton *button, gpointer user_data); void on_new_cert_previous3_clicked (GtkButton *widget, gpointer user_data); void on_new_cert_cancel_clicked (GtkButton *widget, gpointer user_data); void on_new_cert_property_toggled (GtkWidget *toggle, gpointer user_data); void on_new_cert_commit_clicked (GtkButton *widg, gpointer user_data); #endif #ifdef GNOMINTCLI const gchar *new_cert_sign_csr (guint64 csr_id, guint64 ca_id, TlsCertCreationData *cert_creation_data); #else typedef void (*NewCertSignCsrCallback)(const gchar *error, gpointer user_data); void new_cert_sign_csr (guint64 csr_id, guint64 ca_id, TlsCertCreationData *cert_creation_data, NewCertSignCsrCallback cb, gpointer user_data); #endif #endif gnomint-1.6.4/src/preferences.h0000644000000000000000000000226615212761266015212 0ustar00rootroot// gnoMint: a graphical interface for managing a certification authority // Copyright (C) 2006-2009 David Marín Carreño // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #ifndef _PREFERENCES_H_ #define _PREFERENCES_H_ void preferences_init (int, char**); gboolean preferences_get_gnome_keyring_export (void); void preferences_set_gnome_keyring_export (gboolean new_value); gint preferences_get_expire_warning_days (void); void preferences_deinit (void); #endif gnomint-1.6.4/src/ca_file.h0000644000000000000000000001607215212761266014273 0ustar00rootroot// gnoMint: a graphical interface for managing a certification authority // Copyright (C) 2006-2009 David Marín Carreño // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #ifndef _CA_FILE_H_ #define _CA_FILE_H_ #include #include "uint160.h" typedef int (*CaFileCallbackFunc) (void *pArg, int argc, char **argv, char **columnNames); typedef enum { CA_FILE_ELEMENT_TYPE_CERT=0, CA_FILE_ELEMENT_TYPE_CSR=1 } CaFileElementType; gchar * ca_file_create (const gchar *filename); gboolean ca_file_open (gchar *file_name, gboolean create); /* Self-healing for NULL date columns: a certificate's activation/expiration is * stored NULL when the host that stored it could not represent the date (post- * 2038 on a 32-bit time_t). When a host that CAN represent them opens the * database, this re-derives those dates from each certificate's PEM and writes * them back. Dates this host still cannot represent are left NULL. Called * automatically by ca_file_open(); cheap no-op when there are no NULL dates. */ void ca_file_backfill_null_dates (void); void ca_file_close (void); gboolean ca_file_save_as (gchar *new_file_name); gint ca_file_get_number_of_certs (); gint ca_file_get_number_of_csrs (); void ca_file_get_next_serial (UInt160 *serial, guint64 ca_id); gboolean ca_file_set_next_serial (UInt160 *serial, guint64 ca_id); gchar * ca_file_insert_self_signed_ca (gchar *pem_ca_private_key, gchar *pem_ca_certificate); gchar * ca_file_insert_cert (gboolean is_ca, gboolean private_key_in_db, gchar *pem_private_key_info, gchar *pem_certificate); gchar * ca_file_insert_imported_cert (gboolean is_ca, const UInt160 serial, const gchar *pem_certificate, guint64 *id); gchar * ca_file_insert_csr (gchar *pem_private_key, gchar *pem_csr, gchar *parent_ca_id_str, guint64 *id); gchar * ca_file_insert_imported_privkey (const gchar *privkey_pem); gchar * ca_file_remove_csr (guint64 id); gchar * ca_file_revoke_crt (guint64 id); gchar * ca_file_revoke_crt_with_date (guint64 id, time_t date); GList * ca_file_get_revoked_certs (guint64 ca_id, gchar **error); // CaFileCAColumns enum CaFileCAColumns {CA_FILE_CA_COLUMN_ID=0, CA_FILE_CA_COLUMN_SERIAL=1, CA_FILE_CA_COLUMN_SUBJECT=2, CA_FILE_CA_COLUMN_DN=3, CA_FILE_CA_COLUMN_PARENT_DN=4, CA_FILE_CA_COLUMN_PEM=5, CA_FILE_CA_COLUMN_EXPIRATION=6, CA_FILE_CA_COLUMN_SUBJECT_COUNT=7, CA_FILE_CA_COLUMN_NUMBER=8}; // CaFileCertColumns enum CaFileCertColumns {CA_FILE_CERT_COLUMN_ID=0, CA_FILE_CERT_COLUMN_IS_CA=1, CA_FILE_CERT_COLUMN_SERIAL=2, CA_FILE_CERT_COLUMN_SUBJECT=3, CA_FILE_CERT_COLUMN_ACTIVATION=4, CA_FILE_CERT_COLUMN_EXPIRATION=5, CA_FILE_CERT_COLUMN_REVOCATION=6, CA_FILE_CERT_COLUMN_PRIVATE_KEY_IN_DB=7, CA_FILE_CERT_COLUMN_PEM=8, CA_FILE_CERT_COLUMN_DN=9, CA_FILE_CERT_COLUMN_PARENT_DN=10, CA_FILE_CERT_COLUMN_PARENT_ROUTE=11, CA_FILE_CERT_COLUMN_NUMBER=12}; // CaFileCSRColumns enum CaFileCSRColumns {CA_FILE_CSR_COLUMN_ID=0, CA_FILE_CSR_COLUMN_SUBJECT=1, CA_FILE_CSR_COLUMN_PRIVATE_KEY_IN_DB=2, CA_FILE_CSR_COLUMN_PEM=3, CA_FILE_CSR_COLUMN_PARENT_ID=4, CA_FILE_CSR_COLUMN_NUMBER=5}; gboolean ca_file_foreach_ca (CaFileCallbackFunc func, gpointer userdata); gboolean ca_file_foreach_crt (CaFileCallbackFunc func, gboolean view_revoked, gpointer userdata); gboolean ca_file_foreach_csr (CaFileCallbackFunc func, gpointer userdata); gboolean ca_file_foreach_policy (CaFileCallbackFunc func, guint64 ca_id, gpointer userdata); gboolean ca_file_get_id_from_serial_issuer_id (const UInt160 *serial, const guint64 issuer_id, guint64 *db_id); gboolean ca_file_get_id_from_dn (CaFileElementType type, const gchar *dn, guint64 *db_id); gchar * ca_file_get_dn_from_id (CaFileElementType type, guint64 db_id); gchar * ca_file_get_public_pem_from_id (CaFileElementType type, guint64 db_id); gchar * ca_file_get_chain_pem_from_id (guint64 cert_id); /* Reads a certificate's stored notBefore/notAfter from the database as 64-bit * Unix timestamps. The DB columns are plain integers, so they hold dates past * 2038 even where time_t is 32-bit — unlike GnuTLS's time_t getters. A column * may be NULL ("not cached — derive from the PEM"); the corresponding * *have_activation / *have_expiration is then set FALSE and the value is left * untouched. Returns TRUE when cert_id exists. Any output pointer may be NULL. */ gboolean ca_file_get_stored_cert_dates (guint64 cert_id, gint64 *activation, gboolean *have_activation, gint64 *expiration, gboolean *have_expiration); gchar * ca_file_get_pkey_field_from_id (CaFileElementType type, guint64 db_id); gboolean ca_file_get_pkey_in_db_from_id (CaFileElementType type, guint64 db_id); gboolean ca_file_set_pkey_field_for_id (CaFileElementType type, const gchar *new_value, guint64 db_id); gboolean ca_file_mark_pkey_as_extracted_for_id (CaFileElementType type, const gchar *filename, guint64 db_id); gint ca_file_begin_new_crl_transaction (guint64 ca_id, time_t timestamp); void ca_file_commit_new_crl_transaction (guint64 ca_id, const GList *revoked_certs); void ca_file_rollback_new_crl_transaction (void); gchar * ca_file_policy_get (guint64 ca_id, gchar *property_name); gboolean ca_file_policy_set (guint64 ca_id, gchar *property_name, const gchar *value); gint ca_file_policy_get_int (guint64 ca_id, gchar *property_name); gboolean ca_file_policy_set_int (guint64 ca_id, gchar *property_name, gint value); gboolean ca_file_is_password_protected(void); gboolean ca_file_check_password (const gchar *password); gboolean ca_file_password_unprotect(const gchar *old_password); gboolean ca_file_password_protect(const gchar *new_password); gboolean ca_file_password_change(const gchar *old_password, const gchar *new_password); gboolean ca_file_check_if_is_ca_id (guint64 ca_id); gboolean ca_file_check_if_is_cert_id (guint64 cert_id); gboolean ca_file_check_if_is_csr_id (guint64 csr_id); gchar * ca_file_format_subject_with_expiration (const gchar *subject, const gchar *expiration_str, const gchar *subject_count_str); #endif gnomint-1.6.4/src/ca_file.c0000644000000000000000000030122215212761266014260 0ustar00rootroot// gnoMint: a graphical interface for managing a certification authority // Copyright (C) 2006-2009 David Marín Carreño // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #include #include #include #include #include #include #include #include #include #include #include #include #include "time64_check.h" #include "dialog.h" #include "tls.h" #include "ca_file.h" #include "gnomint_time.h" #include "pkey_manage.h" #include #ifndef WIN32 #define GNOMINT_GUINT64_FORMAT G_GUINT64_FORMAT #else // G_GUINT64_FORMAT on windows currently defines "I64" which is not supported by SQLite #define GNOMINT_GUINT64_FORMAT "llu" #endif extern gchar * gnomint_current_opened_file; sqlite3 * ca_db = NULL; #define CURRENT_GNOMINT_DB_VERSION 12 void __ca_file_concat_string (sqlite3_context *context, int argc, sqlite3_value **argv); void __ca_file_zeropad (sqlite3_context *context, int argc, sqlite3_value **argv); void __ca_file_zeropad_route (sqlite3_context *context, int argc, sqlite3_value **argv); int __ca_file_get_single_row_cb (void *pArg, int argc, char **argv, char **columnNames); gchar ** __ca_file_get_single_row (sqlite3 *db, const gchar *query, ...); int __ca_file_get_revoked_certs_add_certificate (void *pArg, int argc, char **argv, char **columnNames); void __ca_file_mark_expired_and_revoked_certificates_as_already_shown_in_crl (guint64 ca_id, const GList *revoked_certs); int __ca_file_password_unprotect_cb (void *pArg, int argc, char **argv, char **columnNames); int __ca_file_password_protect_cb (void *pArg, int argc, char **argv, char **columnNames); int __ca_file_password_change_cb (void *pArg, int argc, char **argv, char **columnNames); gchar * __ca_file_get_field_from_id (CaFileElementType type, guint64 db_id, const gchar *field); gchar * __ca_file_check_and_update_version (sqlite3 * ca_checking_db); void __ca_file_concat_string (sqlite3_context *context, int argc, sqlite3_value **argv) { gchar *result = NULL; const guchar *aux1; gchar *aux2 = NULL; guint i; for (i=0; i < argc; i++) { aux1 = sqlite3_value_text(argv[i]); if (! result) { result = g_strdup ((const gchar *) aux1); } else { aux2 = g_strdup_printf ("%s%s", result, aux1); g_free (result); result = aux2; } } sqlite3_result_text (context, result, -1, g_free); } void __ca_file_zeropad (sqlite3_context *context, int argc, sqlite3_value **argv) { gchar * result = NULL; const gchar *value; int pad_size; gchar *aux = NULL; value = (const gchar *) sqlite3_value_text(argv[0]); pad_size = sqlite3_value_int (argv[1]); if (strlen(value) < pad_size) { aux = g_strnfill (pad_size - strlen(value),'0'); result = g_strconcat (aux, value, NULL); g_free (aux); } else { result = g_strdup (value); } sqlite3_result_text (context, result, -1, g_free); } void __ca_file_zeropad_route (sqlite3_context *context, int argc, sqlite3_value **argv) { gchar * result = NULL; const gchar *aux1; int pad_size; gchar **aux2 = NULL; gchar * aux3 = NULL; GString * res_str = NULL; aux1 = (const gchar *) sqlite3_value_text(argv[0]); pad_size = sqlite3_value_int (argv[1]); if (!strcmp (aux1, ":")) { result = g_strdup (aux1); } else { int i; aux2 = g_strsplit (aux1, ":", -1); res_str = g_string_new (""); for (i=0; i CURRENT_GNOMINT_DB_VERSION) { dialog_error (_("The selected database has been created with a newer version of gnoMint than the currently installed.")); return error; } switch (db_version_in_file) { /* Careful! This switch has not breaks, as all actions must be done for the earliest versions */ case 1: if (sqlite3_exec (ca_checking_db, "BEGIN TRANSACTION;", NULL, NULL, &error)) { return error; } if (sqlite3_exec (ca_checking_db, "CREATE TABLE ca_policies (id INTEGER PRIMARY KEY, ca_id INTEGER, name TEXT, value TEXT, UNIQUE (ca_id, name));", NULL, NULL, &error)) { return error; } sql = sqlite3_mprintf ("INSERT INTO ca_properties VALUES (NULL, 'ca_db_version', %d);", 2); if (sqlite3_exec (ca_checking_db, sql, NULL, NULL, &error)){ return error; } sqlite3_free (sql); if (sqlite3_exec (ca_checking_db, "COMMIT;", NULL, NULL, &error)) { return error; } case 2: if (sqlite3_exec (ca_checking_db, "BEGIN TRANSACTION;", NULL, NULL, &error)){ return error; } if (sqlite3_exec (ca_checking_db, "ALTER TABLE certificates ADD dn TEXT; ALTER TABLE certificates ADD parent_dn TEXT;", NULL, NULL, &error)){ return error; } { gchar **cert_table; gint rows, cols; gint i; if (sqlite3_get_table (ca_checking_db, "SELECT id, pem FROM certificates;", &cert_table, &rows, &cols, &error)) { return error; } for (i = 0; i < rows; i++) { TlsCert * tls_cert = tls_parse_cert_pem (cert_table[(i*2)+3]); sql = sqlite3_mprintf ("UPDATE certificates SET dn='%q', parent_dn='%q' WHERE id=%s;", tls_cert->dn, tls_cert->i_dn, cert_table[(i*2)+2]); if (sqlite3_exec (ca_checking_db, sql, NULL, NULL, &error)){ return error; } tls_cert_free (tls_cert); tls_cert = NULL; } sqlite3_free_table (cert_table); } if (sqlite3_exec (ca_checking_db, "CREATE TABLE cert_requests_new (id INTEGER PRIMARY KEY, subject TEXT, pem TEXT, private_key_in_db BOOLEAN, private_key TEXT, dn TEXT UNIQUE);", NULL, NULL, &error)){ return error; } if (sqlite3_exec (ca_checking_db, "INSERT OR REPLACE INTO cert_requests_new SELECT *, NULL FROM cert_requests;", NULL, NULL, &error)){ return error; } if (sqlite3_exec (ca_checking_db, "DROP TABLE cert_requests;", NULL, NULL, &error)){ return error; } if (sqlite3_exec (ca_checking_db, "ALTER TABLE cert_requests_new RENAME TO cert_requests;", NULL, NULL, &error)){ return error; } { gchar **csr_table; gint rows, cols; gint i; if (sqlite3_get_table (ca_checking_db, "SELECT id, pem FROM cert_requests;", &csr_table, &rows, &cols, &error)) { return error; } for (i = 0; i < rows; i++) { TlsCsr * tls_csr = tls_parse_csr_pem (csr_table[(i*2)+3]); sql = sqlite3_mprintf ("UPDATE cert_requests SET dn='%q' WHERE id=%s;", tls_csr->dn, csr_table[(i*2)+2]); if (sqlite3_exec (ca_checking_db, sql, NULL, NULL, &error)){ return error; } tls_csr_free (tls_csr); tls_csr = NULL; } sqlite3_free_table (csr_table); } sql = sqlite3_mprintf ("UPDATE ca_properties SET value=%d WHERE name='ca_db_version';", 3); if (sqlite3_exec (ca_checking_db, sql, NULL, NULL, &error)){ return error; } sqlite3_free (sql); if (sqlite3_exec (ca_checking_db, "COMMIT;", NULL, NULL, &error)){ return error; } case 3: if (sqlite3_exec (ca_checking_db, "BEGIN TRANSACTION;", NULL, NULL, &error)){ return error; } if (sqlite3_exec (ca_checking_db, "CREATE TABLE certificates_new (id INTEGER PRIMARY KEY, is_ca BOOLEAN, serial INT, subject TEXT, activation TIMESTAMP, expiration TIMESTAMP, revocation TIMESTAMP, pem TEXT, private_key_in_db BOOLEAN, private_key TEXT, dn TEXT, parent_dn TEXT);", NULL, NULL, &error)) { return error; } if (sqlite3_exec (ca_checking_db, "INSERT OR REPLACE INTO certificates_new SELECT id, is_ca, serial, subject, activation, expiration, NULL, pem, private_key_in_db, private_key, dn, parent_dn FROM certificates;", NULL, NULL, &error)){ return error; } if (sqlite3_exec (ca_checking_db, "DROP TABLE certificates;", NULL, NULL, &error)){ return error; } if (sqlite3_exec (ca_checking_db, "ALTER TABLE certificates_new RENAME TO certificates;", NULL, NULL, &error)){ return error; } sql = sqlite3_mprintf ("UPDATE ca_properties SET value=%d WHERE name='ca_db_version';", 4); if (sqlite3_exec (ca_checking_db, sql, NULL, NULL, &error)){ return error; } sqlite3_free (sql); if (sqlite3_exec (ca_checking_db, "CREATE TABLE ca_crl (id INTEGER PRIMARY KEY, ca_id INTEGER, crl_version INTEGER, " "date TIMESTAMP, UNIQUE (ca_id, crl_version));", NULL, NULL, &error)) { return error; } if (sqlite3_exec (ca_checking_db, "COMMIT;", NULL, NULL, &error)){ return error; } case 4: if (sqlite3_exec (ca_checking_db, "BEGIN TRANSACTION;", NULL, NULL, &error)) { return error; } sql = sqlite3_mprintf ("INSERT INTO ca_properties VALUES (NULL, 'ca_db_is_password_protected', 0);"); if (sqlite3_exec (ca_checking_db, sql, NULL, NULL, &error)) return error; sqlite3_free (sql); sql = sqlite3_mprintf ("INSERT INTO ca_properties VALUES (NULL, 'ca_db_hashed_password', '');"); if (sqlite3_exec (ca_checking_db, sql, NULL, NULL, &error)) return error; sqlite3_free (sql); sql = sqlite3_mprintf ("UPDATE ca_properties SET value=%d WHERE name='ca_db_version';", 5); if (sqlite3_exec (ca_checking_db, sql, NULL, NULL, &error)){ return error; } sqlite3_free (sql); if (sqlite3_exec (ca_checking_db, "COMMIT;", NULL, NULL, &error)) return error; case 5: if (sqlite3_exec (ca_checking_db, "BEGIN TRANSACTION;", NULL, NULL, &error)) { return error; } if (sqlite3_exec (ca_checking_db, "ALTER TABLE ca_properties RENAME TO ca_properties_tmp;", NULL, NULL, &error)) { return error; } if (sqlite3_exec (ca_checking_db, "CREATE TABLE ca_properties (id INTEGER PRIMARY KEY, ca_id INTEGER, name TEXT, value TEXT, UNIQUE (ca_id,name));", NULL, NULL, &error)) { return error; } if (sqlite3_exec (ca_checking_db, "INSERT OR REPLACE INTO ca_properties SELECT id, 0, name, value FROM ca_properties_tmp WHERE name LIKE 'ca_db_%';", NULL, NULL, &error)) { return error; } if (sqlite3_exec (ca_checking_db, "INSERT OR REPLACE INTO ca_properties SELECT id, 1, name, value FROM ca_properties_tmp WHERE name LIKE 'ca_root_%';", NULL, NULL, &error)) { return error; } if (sqlite3_exec (ca_checking_db, "DROP TABLE ca_properties_tmp;", NULL, NULL, &error)) { return error; } if (sqlite3_exec (ca_checking_db, "CREATE TABLE certificates_tmp (id INTEGER PRIMARY KEY, is_ca BOOLEAN, serial TEXT, subject TEXT, " "activation TIMESTAMP, expiration TIMESTAMP, revocation TIMESTAMP, pem TEXT, private_key_in_db BOOLEAN, " "private_key TEXT, dn TEXT, parent_dn TEXT, parent_id INTEGER DEFAULT 0, parent_route TEXT);", NULL, NULL, &error)) { return error; } if (sqlite3_exec (ca_checking_db, "INSERT OR REPLACE INTO certificates_tmp SELECT *, 0, NULL FROM certificates;", NULL, NULL, &error)) { return error; } { gchar **cert_table; gint rows, cols; gint i; if (sqlite3_get_table (ca_checking_db, "SELECT id, serial FROM certificates;", &cert_table, &rows, &cols, &error)) { return error; } for (i = 1; i <= rows; i++) { gchar *new_serial; UInt160 aux160; guint64 old_serial = atoll(cert_table[(i*cols)+1]); gchar *hex_guint64_format_string = g_strdup_printf ("%%0%s", G_GUINT64_FORMAT); gchar *aux = NULL; hex_guint64_format_string[strlen(hex_guint64_format_string) - 1] = 'X'; aux = g_strdup_printf (hex_guint64_format_string, old_serial); g_free (hex_guint64_format_string); uint160_read (&aux160, (guchar *) aux, strlen(aux)); new_serial = uint160_strdup_printf(&aux160); sql = sqlite3_mprintf ("UPDATE certificates_tmp SET serial='%q' WHERE id=%s;", new_serial, cert_table[i*cols]); g_free (aux); if (sqlite3_exec (ca_checking_db, sql, NULL, NULL, &error)){ return error; } sqlite3_free (sql); } sqlite3_free_table (cert_table); } { UInt160 aux160; gchar *aux; gsize size = 0; uint160_assign (&aux160, 0); uint160_write_escaped (&aux160, NULL, &size); aux = g_new0(gchar, size+1); uint160_write_escaped (&aux160, aux, &size); sql = sqlite3_mprintf ("UPDATE ca_properties SET value='%q' WHERE name='ca_root_last_assigned_serial' and ca_id=1;", aux); if (sqlite3_exec (ca_checking_db, sql, NULL, NULL, &error)) { return error; } sqlite3_free (sql); g_free (aux); } if (sqlite3_exec (ca_checking_db, "INSERT INTO ca_properties (id, ca_id, name, value) " "VALUES (NULL, 1, 'ca_root_must_check_serial_dups', 1);", NULL, NULL, &error)) { return error; } if (sqlite3_exec (ca_checking_db, "DROP TABLE certificates;", NULL, NULL, &error)) { return error; } if (sqlite3_exec (ca_checking_db, "ALTER TABLE certificates_tmp RENAME TO certificates;", NULL, NULL, &error)) { return error; } { gchar **cert_table; gint rows, cols; gint i; if (sqlite3_get_table (ca_checking_db, "SELECT id, dn FROM certificates;", &cert_table, &rows, &cols, &error)) { return error; } for (i = 0; i < rows; i++) { sql = sqlite3_mprintf ("UPDATE certificates SET parent_id='%q' WHERE parent_dn='%q';", cert_table[(i*2)+2], cert_table[(i*2)+3]); if (sqlite3_exec (ca_checking_db, sql, NULL, NULL, &error)){ return error; } sqlite3_free (sql); } sqlite3_free_table (cert_table); } sql = sqlite3_mprintf ("UPDATE certificates SET parent_route=':' WHERE dn=parent_dn;"); if (sqlite3_exec (ca_checking_db, sql, NULL, NULL, &error)){ return error; } sqlite3_free (sql); sql = sqlite3_mprintf ("UPDATE certificates SET parent_route=':1:' WHERE dn<>parent_dn;"); if (sqlite3_exec (ca_checking_db, sql, NULL, NULL, &error)){ return error; } sqlite3_free (sql); sql = sqlite3_mprintf ("UPDATE ca_properties SET value=%d WHERE name='ca_db_version' AND ca_id=0;", 6); if (sqlite3_exec (ca_checking_db, sql, NULL, NULL, &error)){ return error; } sqlite3_free (sql); if (sqlite3_exec (ca_checking_db, "COMMIT;", NULL, NULL, &error)) return error; case 6: if (sqlite3_exec (ca_checking_db, "BEGIN TRANSACTION;", NULL, NULL, &error)) { return error; } if (sqlite3_exec (ca_checking_db, "ALTER TABLE certificates ADD COLUMN expired_already_in_crl INTEGER DEFAULT '0';", NULL, NULL, &error)) { return error; } sql = sqlite3_mprintf ("UPDATE ca_properties SET value=%d WHERE name='ca_db_version' AND ca_id=0;", 7); if (sqlite3_exec (ca_checking_db, sql, NULL, NULL, &error)){ return error; } sqlite3_free (sql); if (sqlite3_exec (ca_checking_db, "COMMIT;", NULL, NULL, &error)) return error; case 7: if (sqlite3_exec (ca_checking_db, "BEGIN TRANSACTION;", NULL, NULL, &error)) { return error; } if (sqlite3_exec (ca_checking_db, "ALTER TABLE cert_requests ADD COLUMN parent_ca INTEGER DEFAULT NULL;", NULL, NULL, &error)) { return error; } sql = sqlite3_mprintf ("UPDATE ca_properties SET value=%d WHERE name='ca_db_version' AND ca_id=0;", 8); if (sqlite3_exec (ca_checking_db, sql, NULL, NULL, &error)){ return error; } sqlite3_free (sql); if (sqlite3_exec (ca_checking_db, "COMMIT;", NULL, NULL, &error)) return error; case 8: if (sqlite3_exec (ca_checking_db, "BEGIN TRANSACTION;", NULL, NULL, &error)) { return error; } if (sqlite3_exec (ca_checking_db, "ALTER TABLE certificates ADD COLUMN subject_key_id TEXT DEFAULT NULL;", NULL, NULL, &error)) { return error; } { gchar **cert_table; gint rows, cols; gint i; if (sqlite3_get_table (ca_checking_db, "SELECT id, pem FROM certificates;", &cert_table, &rows, &cols, &error)) { return error; } for (i = 0; i < rows; i++) { TlsCert *tls_cert = tls_parse_cert_pem (cert_table[(i*2)+3]); if (tls_cert->subject_key_id) { sql = sqlite3_mprintf ("UPDATE certificates SET subject_key_id='%q' WHERE id='%q';", tls_cert->subject_key_id, cert_table[(i*2)+2]); if (sqlite3_exec (ca_checking_db, sql, NULL, NULL, &error)){ return error; } sqlite3_free (sql); } tls_cert_free(tls_cert); } sqlite3_free_table (cert_table); } sql = sqlite3_mprintf ("UPDATE ca_properties SET value=%d WHERE name='ca_db_version' AND ca_id=0;", 9); if (sqlite3_exec (ca_checking_db, sql, NULL, NULL, &error)){ return error; } sqlite3_free (sql); if (sqlite3_exec (ca_checking_db, "COMMIT;", NULL, NULL, &error)) return error; case 9: if (sqlite3_exec (ca_checking_db, "BEGIN TRANSACTION;", NULL, NULL, &error)) { return error; } if (sqlite3_exec (ca_checking_db, "ALTER TABLE certificates ADD COLUMN issuer_key_id TEXT DEFAULT NULL;", NULL, NULL, &error)) { return error; } { gchar **cert_table; gint rows, cols; gint i; if (sqlite3_get_table (ca_checking_db, "SELECT id, pem FROM certificates;", &cert_table, &rows, &cols, &error)) { return error; } for (i = 0; i < rows; i++) { TlsCert *tls_cert = tls_parse_cert_pem (cert_table[(i*2)+3]); if (tls_cert->issuer_key_id) { sql = sqlite3_mprintf ("UPDATE certificates SET issuer_key_id='%q' WHERE id='%q';", tls_cert->issuer_key_id, cert_table[(i*2)+2]); if (sqlite3_exec (ca_checking_db, sql, NULL, NULL, &error)){ return error; } sqlite3_free (sql); } tls_cert_free(tls_cert); } sqlite3_free_table (cert_table); } sql = sqlite3_mprintf ("UPDATE ca_properties SET value=%d WHERE name='ca_db_version' AND ca_id=0;", 10); if (sqlite3_exec (ca_checking_db, sql, NULL, NULL, &error)){ return error; } sqlite3_free (sql); if (sqlite3_exec (ca_checking_db, "COMMIT;", NULL, NULL, &error)) return error; case 10: if (sqlite3_exec (ca_checking_db, "BEGIN TRANSACTION;", NULL, NULL, &error)) { return error; } { gchar **data_table; gint rows, cols; gint i; UInt160 serial; gchar *aux = NULL; gsize size = 0; if (sqlite3_get_table (ca_checking_db, "SELECT value, ca_id FROM ca_properties WHERE name='ca_root_last_assigned_serial'", &data_table, &rows, &cols, &error)) { return error; } for (i = 1; i <= rows; i++) { size = 0; aux = NULL; uint160_read_escaped_old_format (&serial, data_table[(i*2)], strlen (data_table[i*2])); uint160_write_escaped (&serial, NULL, &size); aux = g_new0(gchar, size+1); uint160_write_escaped (&serial, aux, &size); sql = sqlite3_mprintf ("UPDATE ca_properties SET value='%q' WHERE name='ca_root_last_assigned_serial' and ca_id=%" GNOMINT_GUINT64_FORMAT";", aux, atoll(data_table[(i*2)+1])); if (sqlite3_exec (ca_checking_db, sql, NULL, NULL, &error)) { return error; } sqlite3_free (sql); g_free (aux); } sqlite3_free_table (data_table); } sql = sqlite3_mprintf ("UPDATE ca_properties SET value=%d WHERE name='ca_db_version';", 11); if (sqlite3_exec (ca_checking_db, sql, NULL, NULL, &error)){ return error; } sqlite3_free (sql); if (sqlite3_exec (ca_checking_db, "COMMIT;", NULL, NULL, &error)) return error; case 11: if (sqlite3_exec (ca_checking_db, "BEGIN TRANSACTION;", NULL, NULL, &error)) { return error; } if (sqlite3_exec (ca_checking_db, "CREATE TABLE db_properties (id INTEGER PRIMARY KEY, name TEXT, value TEXT, UNIQUE (name));", NULL, NULL, &error)) { return error; } { gchar **data_table; gint rows, cols; gint i; if (sqlite3_get_table (ca_checking_db, "SELECT ca_id, name, value FROM ca_properties", &data_table, &rows, &cols, &error)) { return error; } for (i = 1; i <= rows; i++) { // Check if the property should be moved to ca_policies (ca_id != 0 && name != "ca_root_certificate_pem") if (atoi(data_table[(i*3)]) != 0 && strcmp(data_table[(i*3)+1], "ca_root_certificate_pem")) { if (!strcmp (data_table[(i*3)+1], "ca_root_last_assigned_serial")) { sql = sqlite3_mprintf ("INSERT INTO ca_policies (ca_id, name, value) " "VALUES (%s, 'ca_last_assigned_serial', '%q')", data_table[(i*3)], data_table[(i*3)+2]); if (sqlite3_exec (ca_checking_db, sql, NULL, NULL, &error)) { return error; } sqlite3_free (sql); } else if (!strcmp (data_table[(i*3)+1], "ca_root_must_check_serial_dups")) { sql = sqlite3_mprintf ("INSERT INTO ca_policies (ca_id, name, value) " "VALUES (%s, 'ca_must_check_serial_dups', '%q')", data_table[(i*3)], data_table[(i*3)+2]); if (sqlite3_exec (ca_checking_db, sql, NULL, NULL, &error)) { return error; } sqlite3_free (sql); } } if (! strcmp(data_table[(i*3)+1], "ca_db_version")) { sql = sqlite3_mprintf ("INSERT INTO db_properties (name, value) " "VALUES ('ca_db_version', '%q')", data_table[(i*3)+2]); if (sqlite3_exec (ca_checking_db, sql, NULL, NULL, &error)) { return error; } sqlite3_free (sql); } if (! strcmp(data_table[(i*3)+1], "ca_db_is_password_protected")) { sql = sqlite3_mprintf ("INSERT INTO db_properties (name, value) " "VALUES ('is_password_protected', '%q')", data_table[(i*3)+2]); if (sqlite3_exec (ca_checking_db, sql, NULL, NULL, &error)) { return error; } sqlite3_free (sql); } if (! strcmp(data_table[(i*3)+1], "ca_db_hashed_password")) { sql = sqlite3_mprintf ("INSERT INTO db_properties (name, value) " "VALUES ('hashed_password', '%q')", data_table[(i*3)+2]); if (sqlite3_exec (ca_checking_db, sql, NULL, NULL, &error)) { return error; } sqlite3_free (sql); } } sqlite3_free_table (data_table); } if (sqlite3_exec (ca_checking_db, "DROP TABLE ca_properties", NULL, NULL, &error)) return error; if (sqlite3_exec (ca_checking_db, "CREATE VIEW ca_properties AS SELECT id, name, value FROM db_properties;", NULL, NULL, &error)) { return error; } sql = sqlite3_mprintf ("UPDATE db_properties SET value=%d WHERE name='ca_db_version';", 12); if (sqlite3_exec (ca_checking_db, sql, NULL, NULL, &error)){ return error; } sqlite3_free (sql); if (sqlite3_exec (ca_checking_db, "COMMIT;", NULL, NULL, &error)) return error; case 12: /* Nothing must be done, as this is the current gnoMint db version */ break; } return NULL; } typedef struct { guint64 id; gchar *pem; gboolean act_null; gboolean exp_null; } BackfillRow; static int __ca_file_backfill_collect (void *pArg, int argc, char **argv, char **col) { GList **rows = (GList **) pArg; BackfillRow *r; (void) col; if (argc < 4 || ! argv[0] || ! argv[1]) return 0; r = g_new0 (BackfillRow, 1); r->id = g_ascii_strtoull (argv[0], NULL, 10); r->pem = g_strdup (argv[1]); r->act_null = (argv[2] && argv[2][0] == '1'); r->exp_null = (argv[3] && argv[3][0] == '1'); *rows = g_list_prepend (*rows, r); return 0; } void ca_file_backfill_null_dates (void) { GList *rows = NULL, *l; if (! ca_db) return; /* A 32-bit-time_t host cannot represent any date that is stored NULL (those * are exactly the post-2038 dates it could not represent), so it would only * re-derive the same capped value — never write it back. Skip entirely. */ if (sizeof (time_t) < 8) return; sqlite3_exec (ca_db, "SELECT id, pem, activation IS NULL, expiration IS NULL FROM certificates " "WHERE activation IS NULL OR expiration IS NULL;", __ca_file_backfill_collect, &rows, NULL); for (l = rows; l; l = l->next) { BackfillRow *r = l->data; gint64 act = 0, exp = 0; if (tls_cert_pem_get_validity (r->pem, &act, &exp)) { /* Only write values this host can actually represent. */ gboolean set_act = r->act_null && ! gnomint_time_display_is_uncertain (act); gboolean set_exp = r->exp_null && ! gnomint_time_display_is_uncertain (exp); gchar *sql = NULL; if (set_act && set_exp) sql = sqlite3_mprintf ("UPDATE certificates SET activation=%lld, " "expiration=%lld WHERE id=%" GNOMINT_GUINT64_FORMAT ";", (long long) act, (long long) exp, r->id); else if (set_act) sql = sqlite3_mprintf ("UPDATE certificates SET activation=%lld " "WHERE id=%" GNOMINT_GUINT64_FORMAT ";", (long long) act, r->id); else if (set_exp) sql = sqlite3_mprintf ("UPDATE certificates SET expiration=%lld " "WHERE id=%" GNOMINT_GUINT64_FORMAT ";", (long long) exp, r->id); if (sql) { sqlite3_exec (ca_db, sql, NULL, NULL, NULL); sqlite3_free (sql); } } g_free (r->pem); g_free (r); } g_list_free (rows); } gboolean ca_file_open (gchar *file_name, gboolean create) { gchar *dirname = NULL; gchar *error = NULL; sqlite3 * ca_opening_db = NULL; dirname = g_path_get_dirname (file_name); if (! g_file_test(dirname, G_FILE_TEST_IS_DIR)) { if (! create) { g_free (dirname); return FALSE; } else { if (g_mkdir_with_parents (dirname, 0700) == -1) { g_free (dirname); return FALSE; } } } g_free (dirname); if (! g_file_test(file_name, G_FILE_TEST_EXISTS)) { if (! create) return FALSE; else ca_file_create (file_name); } if (sqlite3_open(file_name, &ca_opening_db)) { g_printerr ("%s\n\n", sqlite3_errmsg(ca_opening_db)); return FALSE; } else { error = __ca_file_check_and_update_version (ca_opening_db); if (error) { fprintf (stderr, "Error while updating version: %s\n", error); //g_free (error); It mustn't be freed: it is always constant sqlite3_close (ca_opening_db); ca_opening_db = NULL; return FALSE; } } gnomint_current_opened_file = file_name; if (ca_db) { sqlite3_close (ca_db); ca_db = NULL; } ca_db = ca_opening_db; sqlite3_create_function (ca_db, "concat", -1, SQLITE_ANY, NULL, __ca_file_concat_string, NULL, NULL); sqlite3_create_function (ca_db, "zeropad", 2, SQLITE_ANY, NULL, __ca_file_zeropad, NULL, NULL); sqlite3_create_function (ca_db, "zeropad_route", 2, SQLITE_ANY, NULL, __ca_file_zeropad_route, NULL, NULL); /* Fill in any date columns that were stored NULL on a host that could * not represent them, now that this host may be able to. */ ca_file_backfill_null_dates (); return TRUE; } void ca_file_close () { sqlite3_close (ca_db); ca_db = NULL; if (gnomint_current_opened_file) { g_free (gnomint_current_opened_file); gnomint_current_opened_file = NULL; } } gboolean ca_file_save_as (gchar *new_file_name) { gchar * initial_file = g_strdup(gnomint_current_opened_file); GMappedFile *map = NULL; ca_file_close (); if (! (map = g_mapped_file_new (initial_file, FALSE, NULL))) { ca_file_open (gnomint_current_opened_file, FALSE); return FALSE; } if (! g_file_set_contents (new_file_name, g_mapped_file_get_contents (map), g_mapped_file_get_length (map), NULL)) { g_mapped_file_unref(map); ca_file_open (gnomint_current_opened_file, FALSE); return FALSE; } g_mapped_file_unref(map); g_free (initial_file); return ca_file_open (new_file_name, FALSE); } gint ca_file_get_number_of_certs () { gint result; gchar **aux; aux = __ca_file_get_single_row (ca_db, "SELECT COUNT(*) FROM certificates"); result = atoi (aux[0]); g_strfreev (aux); return result; } gint ca_file_get_number_of_csrs () { gint result; gchar **aux; aux = __ca_file_get_single_row (ca_db, "SELECT COUNT(*) FROM cert_requests"); result = atoi (aux[0]); g_strfreev (aux); return result; } void ca_file_get_next_serial (UInt160 *serial, guint64 ca_id) { gchar *serialstr = NULL; gchar **row = NULL; row = __ca_file_get_single_row (ca_db, "SELECT value FROM ca_policies WHERE name='ca_last_assigned_serial' AND ca_id=%" GNOMINT_GUINT64_FORMAT";", ca_id); if (row) { uint160_read_escaped (serial, row[0], strlen (row[0])); g_strfreev (row); } else { g_error (_("Cannot find last assigned serial number")); } row = __ca_file_get_single_row (ca_db, "SELECT value FROM ca_policies WHERE " "name='ca_must_check_serial_dups' AND ca_id=%"GNOMINT_GUINT64_FORMAT";", ca_id); if (row) { if (atoi(row[0])) { while (row) { uint160_inc (serial); g_strfreev (row); serialstr = uint160_strdup_printf (serial); row = __ca_file_get_single_row (ca_db, "SELECT id FROM certificates WHERE serial='%q' AND parent_id=%"GNOMINT_GUINT64_FORMAT";", serialstr, ca_id); g_free (serialstr); } } else { uint160_inc (serial); g_strfreev (row); } } else { uint160_inc (serial); } return; } gboolean ca_file_set_next_serial (UInt160 *serial, guint64 ca_id) { gsize size; gchar *serialstr = NULL; gchar *sql = NULL; gchar *error = NULL; size = 0; uint160_dec (serial); uint160_write_escaped (serial, NULL, &size); serialstr = g_new0(gchar, size+1); uint160_write_escaped (serial, serialstr, &size); sql = sqlite3_mprintf ("UPDATE ca_policies SET value='%q' WHERE name='ca_last_assigned_serial' and ca_id=%"GNOMINT_GUINT64_FORMAT";", serialstr, ca_id); if (sqlite3_exec (ca_db, sql, NULL, NULL, &error)) { fprintf (stderr, "%s: %s\n", error, sql); sqlite3_free (sql); return FALSE; } sqlite3_free (sql); g_free (serialstr); return TRUE; } gchar * ca_file_insert_self_signed_ca (gchar *pem_ca_private_key, gchar *pem_ca_certificate) { gchar *sql = NULL; gchar *error = NULL; gchar *aux = NULL; gsize size; UInt160 sn; gchar *serialstr; gchar **row; gint64 rootca_rowid; guint64 rootca_id; gchar *sql_subject_key_id = NULL; gchar *sql_issuer_key_id = NULL; TlsCert *tls_cert = tls_parse_cert_pem (pem_ca_certificate); uint160_assign (&sn, 1); serialstr = uint160_strdup_printf(&sn); sql_subject_key_id = (tls_cert->subject_key_id ? g_strdup_printf ("'%s'",tls_cert->subject_key_id) : g_strdup_printf ("NULL")); sql_issuer_key_id = (tls_cert->issuer_key_id ? g_strdup_printf ("'%s'",tls_cert->issuer_key_id) : g_strdup_printf ("NULL")); if (sqlite3_exec (ca_db, "BEGIN TRANSACTION;", NULL, NULL, &error)) return error; sql = sqlite3_mprintf ("INSERT INTO certificates (id, is_ca, serial, subject, activation, expiration, revocation, pem, private_key_in_db, " "private_key, dn, parent_dn, parent_id, parent_route, subject_key_id, issuer_key_id) " "VALUES (NULL, 1, '%q', '%q', '%lld', '%lld', NULL, '%q', 1, '%q','%q','%q', 0, ':', %s, %s);", serialstr, tls_cert->cn, (long long)tls_cert->activation_time, (long long)tls_cert->expiration_time, pem_ca_certificate, pem_ca_private_key, tls_cert->dn, tls_cert->i_dn, sql_subject_key_id, sql_issuer_key_id); g_free (sql_subject_key_id); g_free (sql_issuer_key_id); if (sqlite3_exec (ca_db, sql, NULL, NULL, &error)) return error; sqlite3_free (sql); g_free (serialstr); rootca_rowid = sqlite3_last_insert_rowid (ca_db); row = __ca_file_get_single_row (ca_db, "SELECT id FROM certificates WHERE ROWID=%"GNOMINT_GUINT64_FORMAT" ;", rootca_rowid); rootca_id = atoll (row[0]); g_strfreev (row); size = 0; uint160_write_escaped (&sn, NULL, &size); aux = g_new0 (gchar, size + 1); uint160_write_escaped (&sn, aux, &size); sql = sqlite3_mprintf ("INSERT INTO ca_policies (id, ca_id, name, value) VALUES (NULL, %"GNOMINT_GUINT64_FORMAT", 'ca_last_assigned_serial', '%q');", rootca_id, aux); g_free (aux); if (sqlite3_exec (ca_db, sql, NULL, NULL, &error)) return error; sqlite3_free (sql); ca_file_policy_set (rootca_id, "MONTHS_TO_EXPIRE", "60"); ca_file_policy_set (rootca_id, "HOURS_BETWEEN_CRL_UPDATES", "24"); ca_file_policy_set (rootca_id, "DIGITAL_SIGNATURE", "1"); ca_file_policy_set (rootca_id, "KEY_ENCIPHERMENT", "1"); ca_file_policy_set (rootca_id, "KEY_AGREEMENT", "1"); ca_file_policy_set (rootca_id, "DATA_ENCIPHERMENT", "1"); ca_file_policy_set (rootca_id, "TLS_WEB_SERVER", "1"); ca_file_policy_set (rootca_id, "TLS_WEB_CLIENT", "1"); ca_file_policy_set (rootca_id, "EMAIL_PROTECTION", "1"); if (tls_cert->crl_distribution_point) { ca_file_policy_set (rootca_id, "CRL_DISTRIBUTION_POINT", tls_cert->crl_distribution_point); } if (sqlite3_exec (ca_db, "COMMIT;", NULL, NULL, &error)) return error; tls_cert_free (tls_cert); tls_cert = NULL; return NULL; } gchar * ca_file_insert_cert (gboolean is_ca, gboolean private_key_in_db, gchar *private_key_info, gchar *pem_certificate) { gchar *sql = NULL; gchar *error = NULL; gchar **row; UInt160 serial; gchar *serialstr; gsize size; gint64 cert_rowid; guint64 cert_id; gchar **parent_idstr = NULL; guint64 parent_id; gchar *parent_route = NULL; gchar *sql_subject_key_id = NULL; gchar *sql_issuer_key_id = NULL; TlsCert *tlscert = tls_parse_cert_pem (pem_certificate); sql_subject_key_id = (tlscert->subject_key_id ? g_strdup_printf ("'%s'",tlscert->subject_key_id) : g_strdup_printf ("NULL")); sql_issuer_key_id = (tlscert->issuer_key_id ? g_strdup_printf ("'%s'",tlscert->issuer_key_id) : g_strdup_printf ("NULL")); if (sqlite3_exec (ca_db, "BEGIN TRANSACTION;", NULL, NULL, &error)) return error; parent_idstr = __ca_file_get_single_row (ca_db, "SELECT id, parent_route FROM certificates WHERE subject_key_id='%q';", tlscert->issuer_key_id); if (parent_idstr == NULL) { error = _("Cannot find parent CA in database"); return error; } else { parent_id = atoll (parent_idstr[0]); parent_route = g_strdup_printf("%s%s:",parent_idstr[1], parent_idstr[0]); g_strfreev (parent_idstr); } uint160_assign (&serial, 0); ca_file_get_next_serial (&serial, parent_id); serialstr = uint160_strdup_printf(&serial); if (private_key_info) sql = sqlite3_mprintf ("INSERT INTO certificates (id, is_ca, serial, subject, activation, expiration, revocation, " "pem, private_key_in_db, private_key, dn, parent_dn, parent_id, parent_route, subject_key_id, " "issuer_key_id) " "VALUES (NULL, %d, '%q', '%q', '%lld', '%lld', " "NULL, '%q', %d, '%q', '%q', '%q', %"GNOMINT_GUINT64_FORMAT", '%q', %s, %s);", is_ca, serialstr, tlscert->cn, (long long)tlscert->activation_time, (long long)tlscert->expiration_time, pem_certificate, private_key_in_db, private_key_info, tlscert->dn, tlscert->i_dn, parent_id, parent_route, sql_subject_key_id, sql_issuer_key_id); else sql = sqlite3_mprintf ("INSERT INTO certificates (id, is_ca, serial, subject, activation, expiration, revocation, " "pem, private_key_in_db, private_key, dn, parent_dn, parent_id, parent_route, subject_key_id, " "issuer_key_id) " "VALUES (NULL, %d, '%q', '%q', '%lld', '%lld', NULL, '%q', 0, NULL, '%q', '%q'," "%"GNOMINT_GUINT64_FORMAT", '%q', %s, %s);", is_ca, serialstr, tlscert->cn, (long long)tlscert->activation_time, (long long)tlscert->expiration_time, pem_certificate, tlscert->dn, tlscert->i_dn, parent_id, parent_route, sql_subject_key_id, sql_issuer_key_id); g_free (serialstr); tls_cert_free (tlscert); tlscert = NULL; g_free (parent_route); g_free (sql_subject_key_id); g_free (sql_issuer_key_id); if (sqlite3_exec (ca_db, sql, NULL, NULL, &error)) { sqlite3_exec (ca_db, "ROLLBACK;", NULL, NULL, NULL); fprintf (stderr, "%s\n", sql); sqlite3_free (sql); return error; } sqlite3_free (sql); cert_rowid = sqlite3_last_insert_rowid (ca_db); row = __ca_file_get_single_row (ca_db, "SELECT id FROM certificates WHERE ROWID=%"GNOMINT_GUINT64_FORMAT" ;", cert_rowid); cert_id = atoll (row[0]); g_strfreev (row); size = 0; uint160_write_escaped (&serial, NULL, &size); serialstr = g_new0(gchar, size+1); uint160_write_escaped (&serial, serialstr, &size); sql = sqlite3_mprintf ("UPDATE ca_policies SET value='%q' WHERE name='ca_last_assigned_serial' and ca_id=%"GNOMINT_GUINT64_FORMAT";", serialstr, parent_id); if (sqlite3_exec (ca_db, sql, NULL, NULL, &error)) { sqlite3_exec (ca_db, "ROLLBACK;", NULL, NULL, NULL); fprintf (stderr, "%s\n", sql); sqlite3_free (sql); return error; } g_free (serialstr); sqlite3_free (sql); if (is_ca) { size = 0; uint160_assign (&serial, 0); uint160_write_escaped (&serial, NULL, &size); serialstr = g_new0(gchar, size+1); uint160_write_escaped (&serial, serialstr, &size); sql = sqlite3_mprintf ("INSERT INTO ca_policies (id, ca_id, name, value) " "VALUES (NULL, %"GNOMINT_GUINT64_FORMAT", 'ca_last_assigned_serial', '%q');", cert_id, serialstr); if (sqlite3_exec (ca_db, sql, NULL, NULL, &error)) { sqlite3_exec (ca_db, "ROLLBACK;", NULL, NULL, NULL); fprintf (stderr, "%s\n", sql); sqlite3_free (sql); return error; } sqlite3_free (sql); g_free (serialstr); if (! ca_file_policy_set (cert_id, "MONTHS_TO_EXPIRE", "60") || ! ca_file_policy_set (cert_id, "HOURS_BETWEEN_CRL_UPDATES", "24")|| ! ca_file_policy_set (cert_id, "DIGITAL_SIGNATURE", "1")|| ! ca_file_policy_set (cert_id, "KEY_ENCIPHERMENT", "1") || ! ca_file_policy_set (cert_id, "KEY_AGREEMENT", "1") || ! ca_file_policy_set (cert_id, "DATA_ENCIPHERMENT", "1") || ! ca_file_policy_set (cert_id, "TLS_WEB_SERVER", "1") || ! ca_file_policy_set (cert_id, "TLS_WEB_CLIENT", "1") || ! ca_file_policy_set (cert_id, "EMAIL_PROTECTION", "1")) { sqlite3_exec (ca_db, "ROLLBACK;", NULL, NULL, NULL); sqlite3_free (sql); return g_strdup ("Error while establishing policies."); } } if (sqlite3_exec (ca_db, "COMMIT;", NULL, NULL, &error)) return error; return NULL; } gchar * ca_file_insert_imported_cert (gboolean is_ca, const UInt160 serial, const gchar *pem_certificate, guint64 *id) { guint64 cert_id; guint64 parent_id; gchar *parent_route = NULL; gchar *parent_pem = NULL; gchar *serialstr = NULL; gchar **issuer_res = NULL; gchar **orphan_res = NULL; gchar **existent_res = NULL; gchar *error = NULL; gchar *sql_subject_key_id = NULL; gchar *sql_issuer_key_id = NULL; gchar *sql_subject_key_id_with_condition = NULL; gchar *sql_issuer_key_id_with_condition = NULL; gchar *sql = NULL; TlsCert *tlscert = tls_parse_cert_pem (pem_certificate); sql_subject_key_id = (tlscert->subject_key_id ? g_strdup_printf ("'%s'",tlscert->subject_key_id) : g_strdup_printf ("NULL")); sql_issuer_key_id = (tlscert->issuer_key_id ? g_strdup_printf ("'%s'",tlscert->issuer_key_id) : g_strdup_printf ("NULL")); sql_subject_key_id_with_condition = (tlscert->subject_key_id ? g_strdup_printf ("= '%s'",tlscert->subject_key_id) : g_strdup_printf ("IS NULL")); sql_issuer_key_id_with_condition = (tlscert->issuer_key_id ? g_strdup_printf ("= '%s'",tlscert->issuer_key_id) : g_strdup_printf ("IS NULL")); // Let's check if it is already in the database: we don't want to import // the same certificate several times. existent_res = __ca_file_get_single_row (ca_db, "SELECT count (id) FROM certificates WHERE " "dn='%q' AND parent_dn='%q' AND " "subject_key_id %s and issuer_key_id %s;", tlscert->dn, tlscert->i_dn, sql_subject_key_id_with_condition, sql_issuer_key_id_with_condition); g_free (sql_subject_key_id_with_condition); g_free (sql_issuer_key_id_with_condition); if (! existent_res) { g_free (sql_subject_key_id); g_free (sql_issuer_key_id); tls_cert_free (tlscert); return error; } if (atoi(existent_res[0]) != 0) { g_free (sql_subject_key_id); g_free (sql_issuer_key_id); tls_cert_free (tlscert); return _("This certificate already exists in the database: cannot insert it twice."); } if (sqlite3_exec (ca_db, "BEGIN TRANSACTION;", NULL, NULL, &error)) { g_free (sql_subject_key_id); g_free (sql_issuer_key_id); tls_cert_free (tlscert); return error; } // We first look up if the issuer is already in the database // * We first search using issuer_key_id (if the imported certificate has this field) if (tlscert->issuer_key_id) { issuer_res = __ca_file_get_single_row (ca_db, "SELECT id, parent_route, pem FROM certificates WHERE is_ca=1 AND subject_key_id='%q';", tlscert->issuer_key_id); } if ((! issuer_res) && (tlscert->i_dn)) { // * If is not found, we seek the issuer through the issuer_dn field issuer_res = __ca_file_get_single_row (ca_db, "SELECT id, parent_route, pem FROM certificates WHERE is_ca=1 AND dn='%q';", tlscert->i_dn); } if (issuer_res) { parent_id = atoll (issuer_res[0]); parent_route = g_strdup_printf("%s%s:",issuer_res[1], issuer_res[0]); parent_pem = g_strdup (issuer_res[2]); g_strfreev (issuer_res); } else { // No possible parent certificate was found parent_id = 0; parent_route = g_strdup(":"); parent_pem = NULL; } // * Now, if we have found a possible issuer, we verify if the imported certificate has been issued by it if (parent_id != 0) { if (! tls_cert_check_issuer (pem_certificate, parent_pem)) { // The possible parent is not the issuer. parent_id = 0; g_free (parent_route); parent_route = g_strdup(":"); } } g_free (parent_pem); parent_pem = NULL; // We insert the certificate, with the correct issuer, if this has been found /* The dates come from GnuTLS's time_t getter, which caps at 2038 on a * 32-bit-time_t build. Rather than cache a WRONG value, store NULL for a * date we cannot represent: the column then means "not cached — derive * from the PEM", and a 64-bit host reading the same database recovers * the true date. The certificate's PEM (with the real notAfter) is * stored intact regardless. */ gchar *activation_val = gnomint_time_display_is_uncertain (tlscert->activation_time) ? g_strdup ("NULL") : g_strdup_printf ("'%lld'", (long long) tlscert->activation_time); gchar *expiration_val = gnomint_time_display_is_uncertain (tlscert->expiration_time) ? g_strdup ("NULL") : g_strdup_printf ("'%lld'", (long long) tlscert->expiration_time); serialstr = uint160_strdup_printf(&serial); sql = sqlite3_mprintf ("INSERT INTO certificates (id, is_ca, serial, subject, activation, expiration, revocation, " "pem, private_key_in_db, private_key, dn, parent_dn, parent_id, parent_route, subject_key_id, " "issuer_key_id) " "VALUES (NULL, %d, '%q', '%q', %s, %s, NULL, '%q', 0, NULL, '%q', '%q'," "%"GNOMINT_GUINT64_FORMAT", '%q', %s, %s);", is_ca, serialstr, tlscert->cn, activation_val, expiration_val, pem_certificate, tlscert->dn, tlscert->i_dn, parent_id, parent_route, sql_subject_key_id, sql_issuer_key_id); g_free (serialstr); g_free (activation_val); g_free (expiration_val); if (sqlite3_exec (ca_db, sql, NULL, NULL, &error)) { sqlite3_exec (ca_db, "ROLLBACK;", NULL, NULL, NULL); fprintf (stderr, "%s\n", sql); sqlite3_free (sql); tls_cert_free (tlscert); return error; } sqlite3_free (sql); cert_id = sqlite3_last_insert_rowid(ca_db); if (id) *id = cert_id; if (is_ca) { gint rows, cols; gint i; gsize size; UInt160 new_serial; // Now we look all "orphan" certificates, for seeing if the just inserted certificate is their issuer // so we only look up if their issuer_key_id is the same as the just-inserted-cert subject_key_id, or if // their parent_dn is the same as the just-inserted-cert DN. sql = sqlite3_mprintf ("SELECT id, pem FROM certificates WHERE " "parent_route=':' AND parent_id=0 AND (subject_key_id <> issuer_key_id OR dn <> parent_dn) " "AND (issuer_key_id = %s OR parent_dn = '%q');", sql_subject_key_id, tlscert->dn); if (sqlite3_get_table (ca_db, sql, &orphan_res, &rows, &cols, &error)) { sqlite3_exec (ca_db, "ROLLBACK;", NULL, NULL, &error); sqlite3_free (sql); return error; } sqlite3_free (sql); // * So, for each orphan certificate that could have been issued by the just-inserted certificate, for (i=1; i<=rows; i++) { // We verify if the imported certificate has issued it if (tls_cert_check_issuer (orphan_res[(i*2)+1], pem_certificate)) { // * If it has, we update the certificate parent_id, and parent_route // so it matches with the imported certificate sql = sqlite3_mprintf ("UPDATE certificates SET " "parent_dn='%q', " "parent_id=%"GNOMINT_GUINT64_FORMAT", " "parent_route='%s%"GNOMINT_GUINT64_FORMAT":'" "WHERE id=%s;", tlscert->dn, cert_id, parent_route,cert_id, orphan_res[i*2]); printf("%s\n",sql); if (sqlite3_exec (ca_db, sql, NULL, NULL, &error)) { sqlite3_exec (ca_db, "ROLLBACK;", NULL, NULL, NULL); fprintf (stderr, "%s\n", sql); sqlite3_free (sql); tls_cert_free (tlscert); return error; } sqlite3_free (sql); sql = sqlite3_mprintf ("UPDATE certificates SET " "parent_route=concat('%s%"GNOMINT_GUINT64_FORMAT"',parent_route)" "WHERE parent_route LIKE ':%s:%%';", parent_route, cert_id, orphan_res[i*2]); printf("%s\n",sql); if (sqlite3_exec (ca_db, sql, NULL, NULL, &error)) { sqlite3_exec (ca_db, "ROLLBACK;", NULL, NULL, NULL); fprintf (stderr, "%s\n", sql); sqlite3_free (sql); tls_cert_free (tlscert); return error; } sqlite3_free (sql); } } // * Now, we initialize minimally the just imported CA size = 0; uint160_assign (&new_serial, 0); uint160_write_escaped (&new_serial, NULL, &size); serialstr = g_new0(gchar, size+1); uint160_write_escaped (&new_serial, serialstr, &size); sql = sqlite3_mprintf ("INSERT INTO ca_policies (id, ca_id, name, value) " "VALUES (NULL, %"GNOMINT_GUINT64_FORMAT", 'ca_last_assigned_serial', '%q');", cert_id, serialstr); if (sqlite3_exec (ca_db, sql, NULL, NULL, &error)) { sqlite3_exec (ca_db, "ROLLBACK;", NULL, NULL, NULL); fprintf (stderr, "%s\n", sql); sqlite3_free (sql); return error; } sqlite3_free (sql); g_free (serialstr); sql = sqlite3_mprintf ("INSERT INTO ca_policies (id, ca_id, name, value) " "VALUES (NULL, %"GNOMINT_GUINT64_FORMAT", 'ca_must_check_serial_dups', 1);", cert_id); if (sqlite3_exec (ca_db, sql, NULL, NULL, &error)) { sqlite3_exec (ca_db, "ROLLBACK;", NULL, NULL, NULL); fprintf (stderr, "%s\n", sql); sqlite3_free (sql); return error; } sqlite3_free (sql); if (! ca_file_policy_set (cert_id, "MONTHS_TO_EXPIRE", "60") || ! ca_file_policy_set (cert_id, "HOURS_BETWEEN_CRL_UPDATES", "24")|| ! ca_file_policy_set (cert_id, "DIGITAL_SIGNATURE", "1")|| ! ca_file_policy_set (cert_id, "KEY_ENCIPHERMENT", "1") || ! ca_file_policy_set (cert_id, "KEY_AGREEMENT", "1") || ! ca_file_policy_set (cert_id, "DATA_ENCIPHERMENT", "1") || ! ca_file_policy_set (cert_id, "TLS_WEB_SERVER", "1") || ! ca_file_policy_set (cert_id, "TLS_WEB_CLIENT", "1") || ! ca_file_policy_set (cert_id, "EMAIL_PROTECTION", "1")) { sqlite3_exec (ca_db, "ROLLBACK;", NULL, NULL, NULL); sqlite3_free (sql); return g_strdup ("Error while establishing policies."); } } g_free (parent_route); tls_cert_free (tlscert); if (sqlite3_exec (ca_db, "COMMIT;", NULL, NULL, &error)) return error; return NULL; } gchar * ca_file_insert_csr (gchar *pem_csr_private_key, gchar *pem_csr, gchar *parent_ca_id_str, guint64 *id) { gchar *sql = NULL; gchar *error = NULL; TlsCsr * tlscsr = tls_parse_csr_pem (pem_csr); if (sqlite3_exec (ca_db, "BEGIN TRANSACTION;", NULL, NULL, &error)) return error; if (pem_csr_private_key) sql = sqlite3_mprintf ("INSERT INTO cert_requests (id, subject, pem, private_key_in_db, private_key, dn, parent_ca) " "VALUES (NULL, '%q', '%q', 1, '%q','%q', %s);", tlscsr->cn, pem_csr, pem_csr_private_key, tlscsr->dn, (parent_ca_id_str ? parent_ca_id_str : "NULL") ); else sql = sqlite3_mprintf ("INSERT INTO cert_requests (id, subject, pem, private_key_in_db, private_key, dn, parent_ca) " "VALUES (NULL, '%q', '%q', 0, NULL, '%q', %s);", tlscsr->cn, pem_csr, tlscsr->dn, (parent_ca_id_str ? parent_ca_id_str : "NULL") ); tls_csr_free (tlscsr); tlscsr = NULL; if (sqlite3_exec (ca_db, sql, NULL, NULL, &error)) { fprintf (stderr, "%s: %s\n", sql, error); sqlite3_exec (ca_db, "ROLLBACK;", NULL, NULL, NULL); return error; } sqlite3_free (sql); if (id) *id = sqlite3_last_insert_rowid(ca_db); if (sqlite3_exec (ca_db, "COMMIT;", NULL, NULL, &error)) return error; return NULL; } gchar * ca_file_remove_csr (guint64 id) { gchar *sql = NULL; gchar *error = NULL; if (sqlite3_exec (ca_db, "BEGIN TRANSACTION;", NULL, NULL, &error)) return error; sql = sqlite3_mprintf ("DELETE FROM cert_requests WHERE id = %"GNOMINT_GUINT64_FORMAT" ;", id); if (sqlite3_exec (ca_db, sql, NULL, NULL, &error)) return error; sqlite3_free (sql); if (sqlite3_exec (ca_db, "COMMIT;", NULL, NULL, &error)) return error; return NULL; } gchar * ca_file_revoke_crt (guint64 id) { gchar *sql = NULL; gchar *error = NULL; if (sqlite3_exec (ca_db, "BEGIN TRANSACTION;", NULL, NULL, &error)) return error; sql = sqlite3_mprintf ("UPDATE certificates SET revocation=%lld WHERE id = %"GNOMINT_GUINT64_FORMAT" ;", (long long) time(NULL), id); if (sqlite3_exec (ca_db, sql, NULL, NULL, &error)) return error; sqlite3_free (sql); if (sqlite3_exec (ca_db, "COMMIT;", NULL, NULL, &error)) return error; return NULL; } gchar * ca_file_revoke_crt_with_date (guint64 id, time_t date) { gchar *sql = NULL; gchar *error = NULL; if (sqlite3_exec (ca_db, "BEGIN TRANSACTION;", NULL, NULL, &error)) return error; sql = sqlite3_mprintf ("UPDATE certificates SET revocation=%lld WHERE id = %"GNOMINT_GUINT64_FORMAT" ;", (long long) date, id); if (sqlite3_exec (ca_db, sql, NULL, NULL, &error)) return error; sqlite3_free (sql); if (sqlite3_exec (ca_db, "COMMIT;", NULL, NULL, &error)) return error; return NULL; } gchar * ca_file_insert_imported_privkey (const gchar *privkey_pem) { gchar *pkey_key_id = NULL; gchar *sql = NULL; gchar *error = NULL; gint rows, cols; gint i; gchar **table; // We calculate key-id from the private key pkey_key_id = tls_get_private_key_id(privkey_pem); // I get all certificates in dateabase that have not their private key in // the database, and it is not locatable. if (sqlite3_get_table (ca_db, "SELECT id, pem FROM certificates WHERE " "private_key_in_db=0;", &table, &rows, &cols, &error)) { return error; } for (i=1; i<=rows; i++) { gchar *public_key_id = NULL; // Foreach of them, we get their key-id from the public-key public_key_id = tls_get_public_key_id (table[(i*cols) + 1]); // If both key-ids match, we cipher (it we must) the private key, // and insert it into the database. if (! strcmp (pkey_key_id, public_key_id)) { TlsCert *certificate = tls_parse_cert_pem (table[(i*cols) + 1]); gchar *crypted_pkey_pem = pkey_manage_crypt (privkey_pem, certificate->dn); sql = sqlite3_mprintf ("UPDATE certificates SET private_key_in_db=1, private_key='%q' " "WHERE id=%s", crypted_pkey_pem, table[i*cols]); if (sqlite3_exec (ca_db, sql, NULL, NULL, &error)) { tls_cert_free (certificate); g_free (crypted_pkey_pem); g_free (public_key_id); sqlite3_free_table (table); return error; } tls_cert_free (certificate); g_free (crypted_pkey_pem); g_free (public_key_id); sqlite3_free_table (table); return NULL; } g_free (public_key_id); } sqlite3_free_table (table); #ifdef ADVANCED_GNUTLS // I get all csr's in database that have not their private key in // the database, and it is not locatable. if (sqlite3_get_table (ca_db, "SELECT id, pem FROM cert_requests WHERE " "private_key_in_db=0;", &table, &rows, &cols, &error)) { return error; } for (i=1; i<=rows; i++) { gchar *public_key_id = NULL; // Foreach of them, we get their key-id from the public-key public_key_id = tls_get_csr_public_key_id (table[(i*cols) + 1]); // If both key-ids match, we cipher (it we must) the private key, // and insert it into the database. if (! strcmp (pkey_key_id, public_key_id)) { TlsCsr *certreq = tls_parse_csr_pem (table[(i*cols) + 1]); gchar *crypted_pkey_pem = pkey_manage_crypt (privkey_pem, certreq->dn); sql = sqlite3_mprintf ("UPDATE cert_requests SET private_key_in_db=1, private_key='%q' " "WHERE id=%s", crypted_pkey_pem, table[i*cols]); if (sqlite3_exec (ca_db, sql, NULL, NULL, &error)) { tls_csr_free (certreq); g_free (crypted_pkey_pem); g_free (public_key_id); sqlite3_free_table (table); return error; } tls_csr_free (certreq); g_free (crypted_pkey_pem); g_free (public_key_id); sqlite3_free_table (table); return NULL; } g_free (public_key_id); } sqlite3_free_table (table); return _("The given file contains a valid private key. However, it has not been imported to the database because it doesn't match any key-less certificate or certificate request in the database."); #else return _("The given file contains a valid private key. However, it has not been imported to the database because it doesn't match any key-less certificate in the database."); #endif } int __ca_file_get_revoked_certs_add_certificate (void *pArg, int argc, char **argv, char **columnNames) { GList **p_list = (GList **) pArg; GList *list = (* p_list); // Pem of the revoked certificate list = g_list_prepend (list, g_strdup(argv[0])); // Revocation time list = g_list_prepend (list, g_strdup(argv[1])); *p_list = list; return 0; } GList * ca_file_get_revoked_certs (guint64 ca_id, gchar **error) { GList * list = NULL; gchar * error_str = NULL; gchar * sql = NULL; sql = sqlite3_mprintf ("SELECT pem,revocation FROM certificates " "WHERE parent_id=%"GNOMINT_GUINT64_FORMAT" AND revocation IS NOT NULL " "AND (expired_already_in_crl=0 OR expiration > strftime('%%s','now')) ORDER BY id", ca_id); sqlite3_exec (ca_db, sql, __ca_file_get_revoked_certs_add_certificate, &list, &error_str); sqlite3_free (sql); if (error_str) { fprintf (stderr, "%s\n", error_str); (*error) = g_strdup (error_str); return NULL; } list = g_list_reverse (list); (*error) = NULL; return list; } void __ca_file_mark_expired_and_revoked_certificates_as_already_shown_in_crl (guint64 ca_id, const GList *revoked_certs) { gchar *sql = NULL; GList *cursor = NULL; gchar * error_str = NULL; guchar *certificate_pem; gint64 revocation; /* 64-bit: never atol()/%ld (long is 32-bit on ILP32) */ cursor = g_list_first ((GList *) revoked_certs); while (cursor) { certificate_pem = cursor->data; cursor = g_list_next (cursor); revocation = g_ascii_strtoll ((const gchar *) cursor->data, NULL, 10); cursor = g_list_next (cursor); sql = sqlite3_mprintf ("UPDATE certificates SET expired_already_in_crl=1, revocation=%lld " "WHERE parent_id=%"GNOMINT_GUINT64_FORMAT" AND revocation IS NOT NULL AND pem='%q' AND " "expired_already_in_crl=0 AND expiration < strftime('%%s','now'));", (long long) revocation, ca_id, certificate_pem); sqlite3_exec (ca_db, sql, __ca_file_get_revoked_certs_add_certificate, NULL, &error_str); sqlite3_free (sql); } } gint ca_file_begin_new_crl_transaction (guint64 ca_id, time_t timestamp) { gchar * sql; gchar **last_crl; gint next_crl_version; gchar *error; last_crl = __ca_file_get_single_row (ca_db, "SELECT crl_version FROM ca_crl WHERE ca_id=%"GNOMINT_GUINT64_FORMAT, ca_id); if (! last_crl) next_crl_version = 1; else { next_crl_version = atoi (last_crl[0]) + 1; g_strfreev (last_crl); } if (sqlite3_exec (ca_db, "BEGIN TRANSACTION;", NULL, NULL, &error)) return 0; sql = sqlite3_mprintf ("INSERT INTO ca_crl (id, ca_id, crl_version, date) VALUES (NULL, %"GNOMINT_GUINT64_FORMAT", %u, %u);", ca_id, next_crl_version, timestamp); if (sqlite3_exec (ca_db, sql, NULL, NULL, &error)){ sqlite3_free (sql); fprintf (stderr, "%s\n", error); return 0; } sqlite3_free (sql); return next_crl_version; } void ca_file_commit_new_crl_transaction (guint64 ca_id, const GList *revoked_certs) { gchar *error; __ca_file_mark_expired_and_revoked_certificates_as_already_shown_in_crl (ca_id, revoked_certs); sqlite3_exec (ca_db, "COMMIT;", NULL, NULL, &error); } void ca_file_rollback_new_crl_transaction () { gchar *error; sqlite3_exec (ca_db, "ROLLBACK;", NULL, NULL, &error); } gboolean ca_file_is_password_protected() { gchar **result; gboolean res; if (! ca_db) return FALSE; result = __ca_file_get_single_row (ca_db, "SELECT value FROM db_properties WHERE name='is_password_protected';"); res = ((result != NULL) && (strcmp(result[0], "0"))); if (result) g_strfreev (result); return res; } gboolean ca_file_check_password (const gchar *password) { gchar **result; gboolean res; if (! ca_file_is_password_protected()) return FALSE; result = __ca_file_get_single_row (ca_db, "SELECT value FROM db_properties WHERE name='hashed_password';"); if (! result) return FALSE; res = pkey_manage_check_password (password, result[0]); g_strfreev (result); return res; } typedef struct { const gchar *old_password; const gchar *new_password; const gchar *table; } CaFilePwdChange; int __ca_file_password_unprotect_cb (void *pArg, int argc, char **argv, char **columnNames) { CaFilePwdChange * pwd_change = (CaFilePwdChange *) pArg; const gchar *table = pwd_change->table; const gchar *pwd = pwd_change->old_password; PkeyManageData pkey; gchar *error; gchar *sql; gchar *new_pkey; pkey.pkey_data = argv[2]; pkey.is_in_db = TRUE; pkey.is_ciphered_with_db_pwd = TRUE; pkey.external_file = NULL; if (atoi(argv[1]) == 0) return 0; new_pkey = pkey_manage_uncrypt_w_pwd (&pkey, argv[3], pwd); sql = sqlite3_mprintf ("UPDATE %q SET private_key='%q' WHERE id='%q';", table, new_pkey, argv[0]); if (sqlite3_exec (ca_db, sql, NULL, NULL, &error)) { fprintf (stderr, "Error while executing: %s. %s", sql, error); sqlite3_exec (ca_db, "ROLLBACK;", NULL, NULL, &error); sqlite3_free (sql); g_free (new_pkey); return 1; } sqlite3_free(sql); g_free (new_pkey); return 0; } gboolean ca_file_password_unprotect(const gchar *old_password) { gchar *error; CaFilePwdChange pwd_change; if (! ca_file_is_password_protected ()) return FALSE; if (! ca_file_check_password (old_password)) return FALSE; sqlite3_exec (ca_db, "BEGIN TRANSACTION;", NULL, NULL, &error); pwd_change.old_password = old_password; pwd_change.table = "certificates"; if (sqlite3_exec (ca_db, "SELECT id, private_key_in_db, private_key, dn FROM certificates", __ca_file_password_unprotect_cb, &pwd_change, &error)) { sqlite3_exec (ca_db, "ROLLBACK;", NULL, NULL, &error); return FALSE; } pwd_change.table = "cert_requests"; if (sqlite3_exec (ca_db, "SELECT id, private_key_in_db, private_key, dn FROM cert_requests", __ca_file_password_unprotect_cb, &pwd_change, &error)) { sqlite3_exec (ca_db, "ROLLBACK;", NULL, NULL, &error); return FALSE; } if (sqlite3_exec (ca_db, "UPDATE db_properties SET value='0' WHERE name='is_password_protected';", NULL, NULL, &error)) { sqlite3_exec (ca_db, "ROLLBACK;", NULL, NULL, &error); return FALSE; } if (sqlite3_exec (ca_db, "UPDATE db_properties SET value='' WHERE name='hashed_password';", NULL, NULL, &error)) { sqlite3_exec (ca_db, "ROLLBACK;", NULL, NULL, &error); return FALSE; } sqlite3_exec (ca_db, "COMMIT;", NULL, NULL, &error); return TRUE; } int __ca_file_password_protect_cb (void *pArg, int argc, char **argv, char **columnNames) { CaFilePwdChange * pwd_change = (CaFilePwdChange *) pArg; const gchar *table = pwd_change->table; const gchar *pwd = pwd_change->new_password; gchar *error; gchar *sql; gchar *new_pkey; if (atoi(argv[1]) == 0) return 0; new_pkey = pkey_manage_crypt_w_pwd (argv[2], argv[3], pwd); sql = sqlite3_mprintf ("UPDATE %q SET private_key='%q' WHERE id='%q';", table, new_pkey, argv[0]); if (sqlite3_exec (ca_db, sql, NULL, NULL, &error)) { fprintf (stderr, "Error while executing: %s. %s", sql, error); sqlite3_exec (ca_db, "ROLLBACK;", NULL, NULL, &error); sqlite3_free (sql); g_free (new_pkey); return 1; } sqlite3_free(sql); g_free (new_pkey); return 0; } gboolean ca_file_password_protect(const gchar *new_password) { gchar *error; gchar *sql; gchar *hashed_pwd; CaFilePwdChange pwd_change; if (ca_file_is_password_protected ()) return FALSE; sqlite3_exec (ca_db, "BEGIN TRANSACTION;", NULL, NULL, &error); pwd_change.new_password = new_password; if (sqlite3_exec (ca_db, "UPDATE db_properties SET value='1' WHERE name='is_password_protected';", NULL, NULL, &error)) { sqlite3_exec (ca_db, "ROLLBACK;", NULL, NULL, &error); return FALSE; } hashed_pwd = pkey_manage_encrypt_password (new_password); sql = sqlite3_mprintf ("UPDATE db_properties SET value='%q' WHERE name='hashed_password';", hashed_pwd); g_free (hashed_pwd); if (sqlite3_exec (ca_db, sql, NULL, NULL, &error)) { sqlite3_free (sql); sqlite3_exec (ca_db, "ROLLBACK;", NULL, NULL, &error); return FALSE; } pwd_change.table = "certificates"; if (sqlite3_exec (ca_db, "SELECT id, private_key_in_db, private_key, dn FROM certificates", __ca_file_password_protect_cb, &pwd_change, &error)){ sqlite3_exec (ca_db, "ROLLBACK;", NULL, NULL, &error); return FALSE; } pwd_change.table = "cert_requests"; if (sqlite3_exec (ca_db, "SELECT id, private_key_in_db, private_key, dn FROM cert_requests", __ca_file_password_protect_cb, &pwd_change, &error)) { sqlite3_exec (ca_db, "ROLLBACK;", NULL, NULL, &error); return FALSE; } sqlite3_free (sql); sqlite3_exec (ca_db, "COMMIT;", NULL, NULL, &error); return TRUE; } int __ca_file_password_change_cb (void *pArg, int argc, char **argv, char **columnNames) { CaFilePwdChange * pwd_change = (CaFilePwdChange *) pArg; const gchar *table = pwd_change->table; const gchar *old_pwd = pwd_change->old_password; const gchar *new_pwd = pwd_change->new_password; gchar *error; gchar *sql; gchar *clear_pkey; gchar *new_pkey; PkeyManageData pkey; pkey.pkey_data = argv[2]; pkey.is_in_db = TRUE; pkey.is_ciphered_with_db_pwd = TRUE; pkey.external_file = NULL; if (atoi(argv[1]) == 0) return 0; clear_pkey = pkey_manage_uncrypt_w_pwd (&pkey, argv[3], old_pwd); new_pkey = pkey_manage_crypt_w_pwd (clear_pkey, argv[3], new_pwd); g_free (clear_pkey); sql = sqlite3_mprintf ("UPDATE %q SET private_key='%q' WHERE id='%q';", table, new_pkey, argv[0]); if (sqlite3_exec (ca_db, sql, NULL, NULL, &error)) { fprintf (stderr, "Error while executing: %s. %s", sql, error); sqlite3_exec (ca_db, "ROLLBACK;", NULL, NULL, &error); sqlite3_free (sql); g_free (new_pkey); return 1; } sqlite3_free(sql); g_free (new_pkey); return 0; } gboolean ca_file_password_change(const gchar *old_password, const gchar *new_password) { gchar *error; gchar *sql; gchar *hashed_pwd; CaFilePwdChange pwd_change; if (!ca_file_is_password_protected ()) return FALSE; if (! ca_file_check_password (old_password)) return FALSE; sqlite3_exec (ca_db, "BEGIN TRANSACTION;", NULL, NULL, &error); pwd_change.new_password = new_password; pwd_change.old_password = old_password; pwd_change.table = "certificates"; if (sqlite3_exec (ca_db, "SELECT id, private_key_in_db, private_key, dn FROM certificates", __ca_file_password_change_cb, &pwd_change, &error)) { sqlite3_exec (ca_db, "ROLLBACK;", NULL, NULL, &error); return FALSE; } pwd_change.table = "cert_requests"; if (sqlite3_exec (ca_db, "SELECT id, private_key_in_db, private_key, dn FROM cert_requests", __ca_file_password_change_cb, &pwd_change, &error)) { sqlite3_exec (ca_db, "ROLLBACK;", NULL, NULL, &error); return FALSE; } hashed_pwd = pkey_manage_encrypt_password (new_password); sql = sqlite3_mprintf ("UPDATE db_properties SET value='%q' WHERE name='hashed_password';", hashed_pwd); if (sqlite3_exec (ca_db, sql, NULL, NULL, &error)) { sqlite3_free (sql); g_free (hashed_pwd); sqlite3_exec (ca_db, "ROLLBACK;", NULL, NULL, &error); return FALSE; } sqlite3_free (sql); g_free (hashed_pwd); sqlite3_exec (ca_db, "COMMIT;", NULL, NULL, &error); return TRUE; } gboolean ca_file_foreach_ca (CaFileCallbackFunc func, gpointer userdata) { gchar *error_str; gchar **result; guint64 max_id; gchar* aux; guint num_chars = 1; gchar *sql; result = __ca_file_get_single_row (ca_db, "SELECT MAX(id) FROM certificates WHERE is_ca=1 AND revocation IS NULL"); if (result && result[0]) { max_id = atoll(result[0]); g_strfreev (result); aux = g_strdup_printf ("%"G_GUINT64_FORMAT, max_id); num_chars = strlen (aux); g_free (aux); } sql = sqlite3_mprintf ("SELECT c.id, c.serial, c.subject, c.dn, c.parent_dn, c.pem, c.expiration, " "(SELECT COUNT(*) FROM certificates WHERE subject = c.subject AND is_ca=1 AND revocation IS NULL) as subject_count " "FROM certificates c WHERE c.is_ca=1 AND c.revocation IS NULL " "ORDER BY concat(zeropad_route(c.parent_route, %u), zeropad(c.id, %u))", num_chars, num_chars); sqlite3_exec (ca_db, sql, func, userdata, &error_str); sqlite3_free (sql); return (! error_str); } gboolean ca_file_foreach_crt (CaFileCallbackFunc func, gboolean view_revoked, gpointer userdata) { gchar *error_str; gchar **result; guint64 max_id; gchar* aux; guint num_chars = 1; gchar *sql; result = __ca_file_get_single_row (ca_db, "SELECT MAX(id) FROM certificates"); if (result && result[0]) { max_id = atoll(result[0]); g_strfreev (result); aux = g_strdup_printf ("%"G_GUINT64_FORMAT, max_id); num_chars = strlen (aux); g_free (aux); } if (view_revoked) { sql = sqlite3_mprintf ("SELECT id, is_ca, serial, subject, activation, expiration, revocation, private_key_in_db, pem," " dn, parent_dn, parent_route " "FROM certificates ORDER BY concat(zeropad_route(parent_route, %u), zeropad(id, %u)) ", num_chars, num_chars); } else { sql = sqlite3_mprintf ("SELECT id, is_ca, serial, subject, activation, expiration, revocation, private_key_in_db, pem, " " dn, parent_dn, parent_route " "FROM certificates WHERE revocation IS NULL " "ORDER BY concat(zeropad_route(parent_route, %u), zeropad(id, %u))", num_chars, num_chars); } sqlite3_exec (ca_db, sql, func, userdata, &error_str); sqlite3_free (sql); return (! error_str); } gboolean ca_file_foreach_csr (CaFileCallbackFunc func, gpointer userdata) { gchar *error_str; sqlite3_exec (ca_db, "SELECT id, subject, private_key_in_db, pem, parent_ca FROM cert_requests ORDER BY id", func, userdata, &error_str); return (! error_str); } gboolean ca_file_foreach_policy (CaFileCallbackFunc func, guint64 ca_id, gpointer userdata) { gchar *error_str; gchar * query = g_strdup_printf ("SELECT ca_id, name, value FROM ca_policies WHERE ca_id=%" G_GUINT64_FORMAT ";", ca_id); sqlite3_exec (ca_db, query, func, userdata, &error_str); g_free (query); return (! error_str); } gboolean ca_file_get_id_from_serial_issuer_id (const UInt160 *serial, const guint64 issuer_id, guint64 *db_id) { gchar **aux; gchar *serial_str = uint160_strdup_printf(serial); aux = __ca_file_get_single_row (ca_db, "SELECT id FROM certificates WHERE parent_id=%"GNOMINT_GUINT64_FORMAT" AND serial='%q';", issuer_id, serial_str); g_free (serial_str); if (! aux) return FALSE; if (! aux[0]) { g_strfreev (aux); return FALSE; } *db_id = atoll (aux[0]); g_strfreev (aux); return TRUE; } gboolean ca_file_get_id_from_dn (CaFileElementType type, const gchar *dn, guint64 *db_id) { gchar **aux; if (type == CA_FILE_ELEMENT_TYPE_CERT) { aux = __ca_file_get_single_row (ca_db, "SELECT id FROM certificates WHERE dn='%q';", dn); } else { aux = __ca_file_get_single_row (ca_db, "SELECT id FROM cert_requests WHERE dn='%q';", dn); } if (! aux) return FALSE; if (! aux[0]) { g_strfreev (aux); return FALSE; } *db_id = atoll (aux[0]); g_strfreev (aux); return TRUE; } gchar * __ca_file_get_field_from_id (CaFileElementType type, guint64 db_id, const gchar *field) { gchar ** aux; gchar * res; if (type == CA_FILE_ELEMENT_TYPE_CERT) { aux = __ca_file_get_single_row (ca_db, "SELECT %s FROM certificates WHERE id=%" GNOMINT_GUINT64_FORMAT ";", field, db_id); } else { aux = __ca_file_get_single_row (ca_db, "SELECT %s FROM cert_requests WHERE id=%" GNOMINT_GUINT64_FORMAT ";", field, db_id); } if (! aux) return NULL; if (! aux[0]) { g_strfreev (aux); return NULL; } res = g_strdup (aux[0]); g_strfreev (aux); return res; } gchar * ca_file_get_dn_from_id (CaFileElementType type, guint64 db_id) { return __ca_file_get_field_from_id (type, db_id, "dn"); } gchar * ca_file_get_public_pem_from_id (CaFileElementType type, guint64 db_id) { return __ca_file_get_field_from_id (type, db_id, "pem"); } /* Build a PEM bundle for the certificate chain rooted at db_id: the * leaf certificate's PEM, followed by each ancestor's PEM up to and * including the root. Result is g_strdup'd; caller frees. * * Returns NULL if the leaf cert is missing. Missing ancestors are * skipped (the chain truncates at the first gap); this matches the * behaviour of openssl verify when an intermediate isn't local. * * Used by the "Export full certificate chain" action — see #52. */ gchar * ca_file_get_chain_pem_from_id (guint64 cert_id) { gchar *leaf_pem = ca_file_get_public_pem_from_id ( CA_FILE_ELEMENT_TYPE_CERT, cert_id); if (! leaf_pem) return NULL; GString *chain = g_string_new (NULL); g_string_append (chain, leaf_pem); if (chain->len > 0 && chain->str[chain->len - 1] != '\n') g_string_append_c (chain, '\n'); g_free (leaf_pem); /* Walk parent_route (format ":::..."). We append PEMs * in the order they appear in the route — closest parent first, * root last — to produce a bundle compatible with * `openssl verify -untrusted ...` and what most web servers * (Apache SSLCertificateChainFile, nginx ssl_certificate) expect. */ gchar *parent_route = __ca_file_get_field_from_id ( CA_FILE_ELEMENT_TYPE_CERT, cert_id, "parent_route"); if (parent_route && parent_route[0]) { gchar **ids = g_strsplit (parent_route, ":", -1); /* The split produces leading/trailing empty strings around * the ':' delimiters; we walk from rightmost (closest parent) * to leftmost (root). */ gint n = 0; while (ids && ids[n]) n++; for (gint i = n - 1; i >= 0; i--) { if (! ids[i] || ! ids[i][0]) continue; guint64 ancestor_id = g_ascii_strtoull (ids[i], NULL, 10); if (ancestor_id == 0) continue; gchar *anc_pem = ca_file_get_public_pem_from_id ( CA_FILE_ELEMENT_TYPE_CERT, ancestor_id); if (! anc_pem) continue; g_string_append (chain, anc_pem); if (chain->len > 0 && chain->str[chain->len - 1] != '\n') g_string_append_c (chain, '\n'); g_free (anc_pem); } g_strfreev (ids); } g_free (parent_route); return g_string_free (chain, FALSE); } gboolean ca_file_get_pkey_in_db_from_id (CaFileElementType type, guint64 db_id) { gboolean res; gchar *aux; aux = __ca_file_get_field_from_id (type, db_id, "private_key_in_db"); res = atoi(aux); g_free (aux); return res; } gchar * ca_file_get_pkey_field_from_id (CaFileElementType type, guint64 db_id) { return __ca_file_get_field_from_id (type, db_id, "private_key"); } gboolean ca_file_set_pkey_field_for_id (CaFileElementType type, const gchar *new_value, guint64 db_id) { gchar *sql; gchar *error; if (type == CA_FILE_ELEMENT_TYPE_CERT) { sql = sqlite3_mprintf ("UPDATE certificates SET private_key='%q' WHERE id=%" GNOMINT_GUINT64_FORMAT, new_value, db_id); } else { sql = sqlite3_mprintf ("UPDATE cert_requests SET private_key='%q' WHERE id=%" GNOMINT_GUINT64_FORMAT, new_value, db_id); } sqlite3_exec (ca_db, sql, NULL, NULL, &error); sqlite3_free (sql); return (! error); } gboolean ca_file_mark_pkey_as_extracted_for_id (CaFileElementType type, const gchar *filename, guint64 db_id) { gchar *sql; gchar *error; if (type == CA_FILE_ELEMENT_TYPE_CERT) { sql = sqlite3_mprintf ("UPDATE certificates SET private_key='%q', private_key_in_db=0 WHERE id=%" GNOMINT_GUINT64_FORMAT, filename, db_id); } else { sql = sqlite3_mprintf ("UPDATE cert_requests SET private_key='%q', private_key_in_db=0 WHERE id=%" GNOMINT_GUINT64_FORMAT, filename, db_id); } sqlite3_exec (ca_db, sql, NULL, NULL, &error); sqlite3_free (sql); if (error) fprintf (stderr, "%s", error); return (! error); } gchar * ca_file_policy_get (guint64 ca_id, gchar *property_name) { gchar **row = __ca_file_get_single_row (ca_db, "SELECT value FROM ca_policies WHERE name='%s' AND ca_id=%"GNOMINT_GUINT64_FORMAT" ;", property_name, ca_id); gchar * res; if (!row) return NULL; res = g_strdup(row[0]); g_strfreev (row); return res; } gboolean ca_file_policy_set (guint64 ca_id, gchar *property_name, const gchar * value) { gchar **aux; gchar *error = NULL; gchar *sql = NULL; aux = __ca_file_get_single_row (ca_db, "SELECT id, ca_id, name, value FROM ca_policies WHERE name='%s' AND ca_id=%"GNOMINT_GUINT64_FORMAT" ;", property_name, ca_id); if (! aux) { sql = sqlite3_mprintf ("INSERT INTO ca_policies(ca_id, name, value) VALUES (%"GNOMINT_GUINT64_FORMAT", '%q', '%q');", ca_id, property_name, value); if (sqlite3_exec (ca_db, sql, NULL, NULL, &error)) { fprintf (stderr, "%s\n", error); sqlite3_free (sql); return FALSE; } } else { g_strfreev (aux); sql = sqlite3_mprintf ("UPDATE ca_policies SET value='%q' WHERE ca_id=%"GNOMINT_GUINT64_FORMAT" AND name='%s';", value, ca_id, property_name); if (sqlite3_exec (ca_db, sql, NULL, NULL, &error)) { fprintf (stderr, "%s\n", error); sqlite3_free (sql); return FALSE; } } sqlite3_free (sql); return TRUE; } gint ca_file_policy_get_int (guint64 ca_id, gchar *property_name) { gchar **row = __ca_file_get_single_row (ca_db, "SELECT value FROM ca_policies WHERE name='%s' AND ca_id=%"GNOMINT_GUINT64_FORMAT" ;", property_name, ca_id); gint res; if (!row) return 0; res = atoi(row[0]); g_strfreev (row); return res; } gboolean ca_file_policy_set_int (guint64 ca_id, gchar *property_name, gint value) { gchar **aux; gchar *error = NULL; gchar *sql = NULL; aux = __ca_file_get_single_row (ca_db, "SELECT id, ca_id, name, value FROM ca_policies WHERE name='%s' AND ca_id=%"GNOMINT_GUINT64_FORMAT" ;", property_name, ca_id); if (! aux) { sql = sqlite3_mprintf ("INSERT INTO ca_policies(ca_id, name, value) VALUES (%"GNOMINT_GUINT64_FORMAT", '%q', '%d');", ca_id, property_name, value); if (sqlite3_exec (ca_db, sql, NULL, NULL, &error)) { fprintf (stderr, "%s\n", error); sqlite3_free (sql); return FALSE; } } else { g_strfreev (aux); sql = sqlite3_mprintf ("UPDATE ca_policies SET value='%d' WHERE ca_id=%"GNOMINT_GUINT64_FORMAT" AND name='%s';", value, ca_id, property_name); if (sqlite3_exec (ca_db, sql, NULL, NULL, &error)) { fprintf (stderr, "%s\n", error); sqlite3_free (sql); return FALSE; } } sqlite3_free (sql); return TRUE; } gboolean ca_file_check_if_is_ca_id (guint64 ca_id) { gchar **aux; gboolean res; aux = __ca_file_get_single_row (ca_db, "SELECT COUNT(*) FROM certificates WHERE is_ca=1 AND id=%"GNOMINT_GUINT64_FORMAT" ;", ca_id); if (!aux) { return FALSE; } res = (atoi(aux[0]) > 0); g_strfreev (aux); return res; } gboolean ca_file_check_if_is_cert_id (guint64 cert_id) { gchar **aux; gboolean res; aux = __ca_file_get_single_row (ca_db, "SELECT COUNT(*) FROM certificates WHERE id=%"GNOMINT_GUINT64_FORMAT" ;", cert_id); if (!aux) { return FALSE; } res = (atoi(aux[0]) > 0); g_strfreev (aux); return res; } gboolean ca_file_check_if_is_csr_id (guint64 csr_id) { gchar **aux; gboolean res; aux = __ca_file_get_single_row (ca_db, "SELECT COUNT(*) FROM cert_requests WHERE id=%"GNOMINT_GUINT64_FORMAT" ;", csr_id); if (!aux) { return FALSE; } res = (atoi(aux[0]) > 0); g_strfreev (aux); return res; } gchar * ca_file_format_subject_with_expiration (const gchar *subject, const gchar *expiration_str, const gchar *subject_count_str) { if (!subject) { return g_strdup(""); } // Only show expiration if there are multiple CAs with the same subject int subject_count = 1; if (subject_count_str) { char *endptr; long count = strtol(subject_count_str, &endptr, 10); if (*endptr == '\0' && count > 0) { subject_count = (int)count; } } if (subject_count <= 1 || !expiration_str) { return g_strdup(subject); } gint64 expiration_timestamp = g_ascii_strtoll(expiration_str, NULL, 10); struct tm expiration_tm; char date_str[16]; // "YYYY-MM-DD" + null terminator // gnomint_gmtime() is 64-bit-safe, so a notAfter past 2038 produces the // correct year here even where time_t is 32-bit (see issue #86). gnomint_gmtime(expiration_timestamp, &expiration_tm); // Format as full date: "YYYY-MM-DD" strftime(date_str, sizeof(date_str), "%Y-%m-%d", &expiration_tm); return g_strdup_printf("%s (expires %s)", subject, date_str); } gboolean ca_file_get_stored_cert_dates (guint64 cert_id, gint64 *activation, gboolean *have_activation, gint64 *expiration, gboolean *have_expiration) { gchar *s; gboolean exists; if (have_activation) *have_activation = FALSE; if (have_expiration) *have_expiration = FALSE; /* Confirm the certificate exists at all (its PEM column is never NULL). */ s = __ca_file_get_field_from_id (CA_FILE_ELEMENT_TYPE_CERT, cert_id, "id"); exists = (s != NULL); g_free (s); if (! exists) return FALSE; /* __ca_file_get_field_from_id() returns NULL for a NULL column, i.e. a * date that could not be represented when the cert was stored. */ s = __ca_file_get_field_from_id (CA_FILE_ELEMENT_TYPE_CERT, cert_id, "activation"); if (s) { if (activation) *activation = g_ascii_strtoll (s, NULL, 10); if (have_activation) *have_activation = TRUE; g_free (s); } s = __ca_file_get_field_from_id (CA_FILE_ELEMENT_TYPE_CERT, cert_id, "expiration"); if (s) { if (expiration) *expiration = g_ascii_strtoll (s, NULL, 10); if (have_expiration) *have_expiration = TRUE; g_free (s); } return TRUE; } gnomint-1.6.4/src/country_table.h0000644000000000000000000000225415212761266015560 0ustar00rootroot// gnoMint: a graphical interface for managing a certification authority // Copyright (C) 2006-2009 David Marín Carreño // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #ifndef _COUNTRY_TABLE_H_ #define _COUNTRY_TABLE_H_ void country_table_populate(); void country_table_populate_dropdown(GtkDropDown *dropdown); const gchar * country_table_get_code(GtkDropDown *dropdown); guint country_table_find_code(GtkDropDown *dropdown, const gchar *code); #endif gnomint-1.6.4/src/creation_process_window.c0000644000000000000000000002323515212761266017634 0ustar00rootroot// gnoMint: a graphical interface for managing a certification authority // Copyright (C) 2006-2009 David Marín Carreño // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #include #include #include #include #include #include #include #include "ca_creation.h" #include "csr_creation.h" #include "dialog.h" #include "creation_process_window.h" GtkBuilder * creation_process_window_gtkb = NULL; gint timer=0; GThread * creation_process_window_thread = NULL; void creation_process_window_error_dialog (gchar *message) { GtkAlertDialog *alert = gtk_alert_dialog_new ("%s", message); GObject *widget = gtk_builder_get_object (creation_process_window_gtkb, "creation_process_window"); gtk_alert_dialog_show (alert, GTK_WINDOW (widget)); g_object_unref (alert); } static void __ca_finish_alert_cb (GObject *source, GAsyncResult *result, gpointer user_data) { GtkWindow *win = GTK_WINDOW (user_data); gtk_window_destroy (win); } void creation_process_window_ca_finish (void) { GObject *widget = NULL; g_thread_join (creation_process_window_thread); widget = gtk_builder_get_object (creation_process_window_gtkb, "creation_process_window"); dialog_refresh_list(); GtkAlertDialog *alert = gtk_alert_dialog_new ("%s", _("CA creation process finished")); gtk_alert_dialog_choose (alert, GTK_WINDOW (widget), NULL, __ca_finish_alert_cb, GTK_WIDGET (widget)); g_object_unref (alert); } gint creation_process_window_ca_pulse (gpointer data) { GObject * widget = NULL; gchar *error_message = NULL; gint status = 0; if (data && GTK_IS_PROGRESS_BAR(data)) { gtk_progress_bar_set_pulse_step (GTK_PROGRESS_BAR(data), 0.1); gtk_progress_bar_pulse (GTK_PROGRESS_BAR(data)); } widget = gtk_builder_get_object (creation_process_window_gtkb, "status_message_label"); ca_creation_lock_status_mutex(); if (strcmp(ca_creation_get_thread_message(), gtk_label_get_text(GTK_LABEL(widget)))) { gtk_label_set_text (GTK_LABEL(widget), ca_creation_get_thread_message()); } status = ca_creation_get_thread_status(); ca_creation_unlock_status_mutex(); if (status > 0) { creation_process_window_ca_finish (); return G_SOURCE_REMOVE; } else if (status < 0) { error_message = (gchar *) g_thread_join (creation_process_window_thread); if (error_message) { creation_process_window_error_dialog (error_message); printf ("%s\n\n", error_message); } widget = gtk_builder_get_object (creation_process_window_gtkb, "creation_process_window"); gtk_window_destroy(GTK_WINDOW(GTK_WIDGET(widget))); return G_SOURCE_REMOVE; } return G_SOURCE_CONTINUE; } void creation_process_window_ca_display (TlsCreationData * ca_creation_data) { GObject * widget = NULL; GObject * progressbar = NULL; GError * error = NULL; creation_process_window_gtkb = gtk_builder_new(); if (!gtk_builder_add_from_file (creation_process_window_gtkb, g_build_filename (PACKAGE_DATA_DIR, "gnomint", "creation_process_window.ui", NULL ), &error)) { g_critical("Failed to load UI file: %s", error ? error->message : "unknown error"); if (error) g_error_free(error); return; } widget = gtk_builder_get_object (creation_process_window_gtkb, "creation_process_window"); if (!widget) { g_critical("Failed to get creation_process_window widget"); return; } gtk_window_set_transient_for (GTK_WINDOW (widget), dialog_get_main_window ()); gtk_widget_set_visible(GTK_WIDGET(widget), TRUE); /* Process pending events to ensure window is displayed */ while (g_main_context_pending(NULL)) g_main_context_iteration(NULL, TRUE); creation_process_window_thread = ca_creation_launch_thread (ca_creation_data); progressbar = gtk_builder_get_object (creation_process_window_gtkb, "creation_process_window_progressbar"); /* Timer must always start to monitor thread status */ if (progressbar && GTK_IS_PROGRESS_BAR(progressbar)) { /* Ensure progress bar is visible and pulse it initially */ gtk_widget_set_visible(GTK_WIDGET(progressbar), TRUE); gtk_progress_bar_pulse (GTK_PROGRESS_BAR(progressbar)); timer = g_timeout_add (100, creation_process_window_ca_pulse, progressbar); } else { /* Fallback: start timer with NULL, pulse callback will handle it */ if (!progressbar) { g_warning("Progress bar widget 'creation_process_window_progressbar' not found in UI file"); } else { g_warning("Widget 'creation_process_window_progressbar' is not a valid GtkProgressBar"); } timer = g_timeout_add (100, creation_process_window_ca_pulse, NULL); } } G_MODULE_EXPORT void on_cancel_creation_process_clicked (GtkButton *button, gpointer user_data) { GtkWidget *widget; if (timer) { g_source_remove (timer); timer = 0; } widget = GTK_WIDGET(gtk_builder_get_object (creation_process_window_gtkb, "creation_process_window")); /* Create the widgets */ { GtkAlertDialog *alert = gtk_alert_dialog_new ("%s", _("Creation process cancelled")); gtk_alert_dialog_show (alert, GTK_WINDOW (widget)); g_object_unref (alert); gtk_window_destroy (GTK_WINDOW (widget)); } } // ********************** CSRs void creation_process_window_csr_finish (void) { GtkWidget *widget = NULL; g_thread_join (creation_process_window_thread); g_source_remove (timer); timer = 0; widget = GTK_WIDGET(gtk_builder_get_object (creation_process_window_gtkb, "creation_process_window")); { GtkAlertDialog *alert = gtk_alert_dialog_new ("%s", _("CSR creation process finished")); gtk_alert_dialog_show (alert, GTK_WINDOW (widget)); g_object_unref (alert); gtk_window_destroy (GTK_WINDOW (widget)); } dialog_refresh_list (); } gint creation_process_window_csr_pulse (gpointer data) { GtkWidget * widget = NULL; gchar *error_message = NULL; gint status = 0; /* Only pulse if we have a valid progress bar widget */ if (data && GTK_IS_PROGRESS_BAR(data)) { gtk_progress_bar_set_pulse_step (GTK_PROGRESS_BAR(data), 0.1); gtk_progress_bar_pulse (GTK_PROGRESS_BAR(data)); } widget = GTK_WIDGET(gtk_builder_get_object (creation_process_window_gtkb, "status_message_label")); csr_creation_lock_status_mutex(); if (strcmp(csr_creation_get_thread_message(), gtk_label_get_text(GTK_LABEL(widget)))) { gtk_label_set_text (GTK_LABEL(widget), csr_creation_get_thread_message()); } status = csr_creation_get_thread_status(); csr_creation_unlock_status_mutex(); g_main_context_iteration(NULL, TRUE); if (status > 0) { creation_process_window_csr_finish (); } else if (status < 0) { error_message = (gchar *) g_thread_join (creation_process_window_thread); g_source_remove (timer); timer = 0; if (error_message) { creation_process_window_error_dialog (error_message); printf ("%s\n\n", error_message); } widget = GTK_WIDGET(gtk_builder_get_object (creation_process_window_gtkb, "creation_process_window")); gtk_window_destroy(GTK_WINDOW(widget)); } return 1; } void creation_process_window_csr_display (TlsCreationData * ca_creation_data) { GObject * widget = NULL; GObject * progressbar = NULL; GError * error = NULL; creation_process_window_gtkb = gtk_builder_new(); if (!gtk_builder_add_from_file (creation_process_window_gtkb, g_build_filename (PACKAGE_DATA_DIR, "gnomint", "creation_process_window.ui", NULL), &error)) { g_critical("Failed to load UI file: %s", error ? error->message : "unknown error"); if (error) g_error_free(error); return; } widget = gtk_builder_get_object (creation_process_window_gtkb, "titleLabel"); if (widget) { gtk_label_set_text (GTK_LABEL (widget), _("Creating Certificate Signing Request")); } widget = gtk_builder_get_object (creation_process_window_gtkb, "creation_process_window"); if (!widget) { g_critical("Failed to get creation_process_window widget"); return; } gtk_window_set_transient_for (GTK_WINDOW (widget), dialog_get_main_window ()); gtk_widget_set_visible(GTK_WIDGET(widget), TRUE); /* Process pending events to ensure window is displayed */ while (g_main_context_pending(NULL)) g_main_context_iteration(NULL, TRUE); creation_process_window_thread = csr_creation_launch_thread (ca_creation_data); progressbar = gtk_builder_get_object (creation_process_window_gtkb, "creation_process_window_progressbar"); /* Timer must always start to monitor thread status */ if (progressbar && GTK_IS_PROGRESS_BAR(progressbar)) { /* Ensure progress bar is visible and pulse it initially */ gtk_widget_set_visible(GTK_WIDGET(progressbar), TRUE); gtk_progress_bar_pulse (GTK_PROGRESS_BAR(progressbar)); timer = g_timeout_add (100, creation_process_window_csr_pulse, progressbar); } else { /* Fallback: start timer with NULL, pulse callback will handle it */ if (!progressbar) { g_warning("Progress bar widget 'creation_process_window_progressbar' not found in UI file"); } else { g_warning("Widget 'creation_process_window_progressbar' is not a valid GtkProgressBar"); } timer = g_timeout_add (100, creation_process_window_csr_pulse, NULL); } } gnomint-1.6.4/src/san_manager.c0000644000000000000000000003733215212761266015161 0ustar00rootroot// gnoMint: a graphical interface for managing a certification authority // Copyright (C) 2006-2009 David Marín Carreño // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #include #include #include #include #ifdef _WIN32 #include #include #else #include #endif #include "dialog.h" #include "san_manager.h" #include "san_entry.h" // Private data structure for SAN manager typedef struct { GtkColumnView *columnview; GListStore *model; GtkSingleSelection *selection; GtkButton *add_button; GtkButton *edit_button; GtkButton *remove_button; GtkBuilder *editor_builder; } SanManagerData; static const gchar * san_type_to_string(SanType type) { switch (type) { case SAN_TYPE_DNS: return "DNS"; case SAN_TYPE_IP: return "IP"; case SAN_TYPE_EMAIL: return "EMAIL"; case SAN_TYPE_URI: return "URI"; default: return "DNS"; } } static SanType san_type_from_string(const gchar *type_str) { if (g_ascii_strcasecmp(type_str, "IP") == 0 || g_ascii_strcasecmp(type_str, "IP Address") == 0) return SAN_TYPE_IP; if (g_ascii_strcasecmp(type_str, "EMAIL") == 0 || g_ascii_strcasecmp(type_str, "Email") == 0 || g_ascii_strcasecmp(type_str, "RFC822") == 0) return SAN_TYPE_EMAIL; if (g_ascii_strcasecmp(type_str, "URI") == 0) return SAN_TYPE_URI; return SAN_TYPE_DNS; } gboolean san_validate(SanType type, const gchar *value, gchar **error_message) { if (!value || !value[0]) { if (error_message) *error_message = g_strdup(_("Value cannot be empty")); return FALSE; } switch (type) { case SAN_TYPE_DNS: { if (g_regex_match_simple( "^(\\*\\.)?([a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?\\.)*[a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?$", value, 0, 0)) return TRUE; if (error_message) *error_message = g_strdup(_("Invalid DNS name. Use format: example.com or *.example.com")); return FALSE; } case SAN_TYPE_IP: { // Validate IPv4 or IPv6 struct in_addr ipv4; struct in6_addr ipv6; if (inet_pton(AF_INET, value, &ipv4) == 1 || inet_pton(AF_INET6, value, &ipv6) == 1) return TRUE; if (error_message) *error_message = g_strdup(_("Invalid IP address. Use IPv4 (e.g., 192.168.1.1) or IPv6 format")); return FALSE; } case SAN_TYPE_EMAIL: { // Basic email validation const gchar *at = strchr(value, '@'); if (at && at != value && at[1] != '\0' && strchr(at + 1, '.')) return TRUE; if (error_message) *error_message = g_strdup(_("Invalid email address. Use format: user@example.com")); return FALSE; } case SAN_TYPE_URI: { // Basic URI validation - must start with a scheme if (g_str_has_prefix(value, "http://") || g_str_has_prefix(value, "https://") || g_str_has_prefix(value, "ftp://") || g_str_has_prefix(value, "ldap://")) return TRUE; if (error_message) *error_message = g_strdup(_("Invalid URI. Must start with http://, https://, ftp://, or ldap://")); return FALSE; } } return TRUE; } /* ------------------------------------------------------------------ */ /* GtkColumnView factory callbacks */ /* ------------------------------------------------------------------ */ static void san_type_setup (GtkSignalListItemFactory *factory G_GNUC_UNUSED, GtkListItem *list_item, gpointer user_data G_GNUC_UNUSED) { GtkWidget *label = gtk_label_new (NULL); gtk_label_set_xalign (GTK_LABEL (label), 0); gtk_list_item_set_child (list_item, label); } static void san_type_bind (GtkSignalListItemFactory *factory G_GNUC_UNUSED, GtkListItem *list_item, gpointer user_data G_GNUC_UNUSED) { GnomintSanEntry *entry = GNOMINT_SAN_ENTRY (gtk_list_item_get_item (list_item)); GtkWidget *label = gtk_list_item_get_child (list_item); gtk_label_set_text (GTK_LABEL (label), gnomint_san_entry_get_san_type (entry)); } static void san_value_setup (GtkSignalListItemFactory *factory G_GNUC_UNUSED, GtkListItem *list_item, gpointer user_data G_GNUC_UNUSED) { GtkWidget *label = gtk_label_new (NULL); gtk_label_set_xalign (GTK_LABEL (label), 0); gtk_label_set_ellipsize (GTK_LABEL (label), PANGO_ELLIPSIZE_END); gtk_list_item_set_child (list_item, label); } static void san_value_bind (GtkSignalListItemFactory *factory G_GNUC_UNUSED, GtkListItem *list_item, gpointer user_data G_GNUC_UNUSED) { GnomintSanEntry *entry = GNOMINT_SAN_ENTRY (gtk_list_item_get_item (list_item)); GtkWidget *label = gtk_list_item_get_child (list_item); gtk_label_set_text (GTK_LABEL (label), gnomint_san_entry_get_value (entry)); } /* ------------------------------------------------------------------ */ /* Selection changed */ /* ------------------------------------------------------------------ */ static void san_manager_selection_changed(GtkSingleSelection *sel, GParamSpec *pspec G_GNUC_UNUSED, gpointer user_data) { SanManagerData *data = (SanManagerData *)user_data; gboolean has_selection = (gtk_single_selection_get_selected (sel) != GTK_INVALID_LIST_POSITION); gtk_widget_set_sensitive(GTK_WIDGET(data->edit_button), has_selection); gtk_widget_set_sensitive(GTK_WIDGET(data->remove_button), has_selection); } /* Context for the async SAN editor dialog. */ typedef struct { SanManagerData *data; gboolean editing; /* TRUE = edit existing row, FALSE = add new */ guint edit_position; /* valid only when editing == TRUE */ gulong response_handler_id; } SanEditorCtx; /* Forward declaration. */ static void san_editor_response (GtkDialog *dialog, gint response_id, gpointer user_data); /* Response callback for the SAN editor dialog. * On OK: validate; if invalid show error and re-present; if valid update model. * On CANCEL / DELETE_EVENT: destroy dialog, clean up. */ static void san_editor_response (GtkDialog *dialog, gint response_id, gpointer user_data) { SanEditorCtx *ctx = (SanEditorCtx *) user_data; SanManagerData *data = ctx->data; if (response_id != GTK_RESPONSE_OK) { /* Cancel / close / delete-event */ g_signal_handler_disconnect (dialog, ctx->response_handler_id); gtk_window_destroy (GTK_WINDOW (dialog)); g_free (ctx); return; } /* OK pressed -- validate input. */ GtkDropDown *type_dropdown = GTK_DROP_DOWN ( gtk_builder_get_object (data->editor_builder, "san_type_combo")); GtkEntry *value_entry = GTK_ENTRY ( gtk_builder_get_object (data->editor_builder, "san_value_entry")); guint selected = gtk_drop_down_get_selected (type_dropdown); SanType type = (SanType) selected; const gchar *value = gtk_editable_get_text (GTK_EDITABLE (value_entry)); gchar *error_msg = NULL; if (!san_validate (type, value, &error_msg)) { /* Show fire-and-forget error dialog, then re-present editor. */ GtkAlertDialog *err_alert = gtk_alert_dialog_new ("%s", error_msg); gtk_alert_dialog_show (err_alert, GTK_WINDOW (dialog)); g_object_unref (err_alert); g_free (error_msg); /* Re-present the same editor dialog so the user can correct. */ gtk_window_present (GTK_WINDOW (dialog)); return; } /* Valid -- update the model. */ const gchar *type_str = san_type_to_string (type); if (ctx->editing) { GnomintSanEntry *entry = g_list_model_get_item ( G_LIST_MODEL (data->model), ctx->edit_position); if (entry) { gnomint_san_entry_set_san_type (entry, type_str); gnomint_san_entry_set_value (entry, value); /* Notify the model of the change so the view refreshes. */ g_list_store_splice (data->model, ctx->edit_position, 1, (gpointer *) &entry, 1); g_object_unref (entry); } } else { GnomintSanEntry *entry = gnomint_san_entry_new (type_str, value); g_list_store_append (data->model, entry); g_object_unref (entry); } g_signal_handler_disconnect (dialog, ctx->response_handler_id); gtk_window_destroy (GTK_WINDOW (dialog)); g_free (ctx); } /* Present the SAN editor dialog asynchronously. When the user confirms, * the response callback validates and updates the model. */ static void san_manager_show_editor_async(SanManagerData *data, const gchar *initial_type, const gchar *initial_value, gboolean editing, guint edit_position) { GtkDialog *dialog; GtkDropDown *type_dropdown; GtkEntry *value_entry; GtkWidget *parent; gchar *ui_file; // Load editor dialog if not already loaded if (!data->editor_builder) { data->editor_builder = gtk_builder_new(); ui_file = g_build_filename(PACKAGE_DATA_DIR, "gnomint", "san_editor_dialog.ui", NULL); if (!gtk_builder_add_from_file(data->editor_builder, ui_file, NULL)) { g_free(ui_file); return; } g_free(ui_file); } dialog = GTK_DIALOG(gtk_builder_get_object(data->editor_builder, "san_editor_dialog")); type_dropdown = GTK_DROP_DOWN(gtk_builder_get_object(data->editor_builder, "san_type_combo")); value_entry = GTK_ENTRY(gtk_builder_get_object(data->editor_builder, "san_value_entry")); // Set parent window parent = GTK_WIDGET(gtk_widget_get_root(GTK_WIDGET(data->columnview))); if (GTK_IS_WINDOW(parent)) gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(parent)); // Set initial values if (initial_type) { SanType type = san_type_from_string(initial_type); gtk_drop_down_set_selected(type_dropdown, (guint) type); } else { gtk_drop_down_set_selected(type_dropdown, 0); } if (initial_value) gtk_editable_set_text(GTK_EDITABLE(value_entry), initial_value); else gtk_editable_set_text(GTK_EDITABLE(value_entry), ""); gtk_widget_grab_focus(GTK_WIDGET(value_entry)); /* Build async context and connect response. */ SanEditorCtx *ctx = g_new0 (SanEditorCtx, 1); ctx->data = data; ctx->editing = editing; ctx->edit_position = edit_position; ctx->response_handler_id = g_signal_connect ( dialog, "response", G_CALLBACK (san_editor_response), ctx); gtk_window_present (GTK_WINDOW (dialog)); } static void san_manager_add_clicked(GtkButton *button G_GNUC_UNUSED, gpointer user_data) { SanManagerData *data = (SanManagerData *)user_data; san_manager_show_editor_async (data, NULL, NULL, FALSE, 0); } static void san_manager_edit_clicked(GtkButton *button G_GNUC_UNUSED, gpointer user_data) { SanManagerData *data = (SanManagerData *)user_data; guint pos = gtk_single_selection_get_selected (data->selection); if (pos != GTK_INVALID_LIST_POSITION) { GnomintSanEntry *entry = g_list_model_get_item ( G_LIST_MODEL (data->model), pos); if (entry) { san_manager_show_editor_async (data, gnomint_san_entry_get_san_type (entry), gnomint_san_entry_get_value (entry), TRUE, pos); g_object_unref (entry); } } } static void san_manager_remove_clicked(GtkButton *button G_GNUC_UNUSED, gpointer user_data) { SanManagerData *data = (SanManagerData *)user_data; guint pos = gtk_single_selection_get_selected (data->selection); if (pos != GTK_INVALID_LIST_POSITION) { g_list_store_remove (data->model, pos); } } GtkWidget * san_manager_create(GtkBuilder *builder, const gchar *widget_id) { GtkWidget *vbox; GtkColumnView *columnview; GtkButton *add_button, *edit_button, *remove_button; SanManagerData *data; vbox = GTK_WIDGET(gtk_builder_get_object(builder, widget_id)); if (!vbox) return NULL; columnview = GTK_COLUMN_VIEW(gtk_builder_get_object(builder, "san_treeview")); add_button = GTK_BUTTON(gtk_builder_get_object(builder, "add_button")); edit_button = GTK_BUTTON(gtk_builder_get_object(builder, "edit_button")); remove_button = GTK_BUTTON(gtk_builder_get_object(builder, "remove_button")); /* Create GListStore of GnomintSanEntry objects. */ GListStore *model = g_list_store_new (GNOMINT_TYPE_SAN_ENTRY); /* Wrap in a GtkSingleSelection for the column view. */ GtkSingleSelection *sel = gtk_single_selection_new (G_LIST_MODEL (model)); gtk_single_selection_set_autoselect (sel, FALSE); gtk_single_selection_set_can_unselect (sel, TRUE); gtk_column_view_set_model (columnview, GTK_SELECTION_MODEL (sel)); // Create data structure data = g_new0(SanManagerData, 1); data->columnview = columnview; data->model = model; data->selection = sel; data->add_button = add_button; data->edit_button = edit_button; data->remove_button = remove_button; data->editor_builder = NULL; // Store data in widget g_object_set_data_full(G_OBJECT(vbox), "san_manager_data", data, g_free); /* Set up columns programmatically. */ /* Type column */ { GtkListItemFactory *f = gtk_signal_list_item_factory_new (); g_signal_connect (f, "setup", G_CALLBACK (san_type_setup), NULL); g_signal_connect (f, "bind", G_CALLBACK (san_type_bind), NULL); GtkColumnViewColumn *col = gtk_column_view_column_new (_("Type"), f); gtk_column_view_append_column (columnview, col); g_object_unref (col); } /* Value column */ { GtkListItemFactory *f = gtk_signal_list_item_factory_new (); g_signal_connect (f, "setup", G_CALLBACK (san_value_setup), NULL); g_signal_connect (f, "bind", G_CALLBACK (san_value_bind), NULL); GtkColumnViewColumn *col = gtk_column_view_column_new (_("Value"), f); gtk_column_view_column_set_expand (col, TRUE); gtk_column_view_append_column (columnview, col); g_object_unref (col); } // Connect signals g_signal_connect(sel, "notify::selected", G_CALLBACK(san_manager_selection_changed), data); g_signal_connect(add_button, "clicked", G_CALLBACK(san_manager_add_clicked), data); g_signal_connect(edit_button, "clicked", G_CALLBACK(san_manager_edit_clicked), data); g_signal_connect(remove_button, "clicked", G_CALLBACK(san_manager_remove_clicked), data); return vbox; } gchar * san_manager_get_string(GtkWidget *san_manager) { SanManagerData *data = (SanManagerData *)g_object_get_data(G_OBJECT(san_manager), "san_manager_data"); if (!data) return g_strdup(""); GString *result = g_string_new(NULL); guint n = g_list_model_get_n_items (G_LIST_MODEL (data->model)); for (guint i = 0; i < n; i++) { GnomintSanEntry *entry = g_list_model_get_item (G_LIST_MODEL (data->model), i); if (!entry) continue; if (i > 0) g_string_append(result, ","); g_string_append_printf(result, "%s:%s", gnomint_san_entry_get_san_type (entry), gnomint_san_entry_get_value (entry)); g_object_unref (entry); } return g_string_free(result, FALSE); } void san_manager_set_string(GtkWidget *san_manager, const gchar *san_string) { SanManagerData *data = (SanManagerData *)g_object_get_data(G_OBJECT(san_manager), "san_manager_data"); if (!data || !san_string || !san_string[0]) return; // Clear existing g_list_store_remove_all (data->model); // Parse and add entries gchar **entries = g_strsplit(san_string, ",", -1); for (int i = 0; entries[i] != NULL; i++) { gchar *entry_str = g_strstrip(entries[i]); if (entry_str[0]) { gchar **parts = g_strsplit(entry_str, ":", 2); if (parts[0] && parts[1]) { GnomintSanEntry *entry = gnomint_san_entry_new ( g_strstrip(parts[0]), g_strstrip(parts[1])); g_list_store_append (data->model, entry); g_object_unref (entry); } g_strfreev(parts); } } g_strfreev(entries); } gnomint-1.6.4/src/cert_renewal.h0000644000000000000000000000231715212761266015360 0ustar00rootroot/* gnoMint: certificate renewal entry point. * * Takes an existing certificate (by database id), generates a fresh * keypair, and signs a new certificate with the same subject + SAN as * the original, using the parent CA's current policy for everything * else (validity, key usage, extended key usage). * * The old certificate is left untouched in the database — common * practice is "issue new, deploy, revoke old". The caller can revoke * the old cert explicitly via the existing menu. * * CLI: Returns NULL on success and writes the new cert's database id * into *new_cert_id_out (if non-NULL). On failure returns a freshly * allocated error string the caller must g_free. * * GUI: Asynchronous — the callback receives the error string (or NULL * on success). The caller must g_free the error. */ #ifndef _CERT_RENEWAL_H_ #define _CERT_RENEWAL_H_ #include #ifdef GNOMINTCLI gchar * cert_renewal_renew (guint64 cert_id, guint64 *new_cert_id_out); #else typedef void (*CertRenewalCallback)(gchar *error, gpointer user_data); void cert_renewal_renew (guint64 cert_id, guint64 *new_cert_id_out, CertRenewalCallback cb, gpointer user_data); #endif #endif gnomint-1.6.4/src/Makefile.am0000644000000000000000000000500015212761266014561 0ustar00rootrootbin_PROGRAMS = gnomint gnomint-cli bin_SCRIPTS = gnomint-upgrade-db gnomint_CFLAGS = \ -I$(top_srcdir) \ -I$(top_builddir) \ $(GNOMINT_CFLAGS) \ $(LIBGNUTLS_CFLAGS) \ $(LIBGCRYPT_CFLAGS) \ $(SQLITE_CFLAGS) \ -DPACKAGE_DATA_DIR=\""$(datadir)"\" \ -DCOMPILATION_DATE=`date +%s` \ -DHAVE_CONFIG_H \ -DGDK_VERSION_MIN_REQUIRED=GDK_VERSION_4_10 \ -Wall -Werror gnomint_SOURCES = \ main.c \ cert_row.c \ cert_row.h \ prop_node.c \ prop_node.h \ ca_selector.c \ ca_selector.h \ country_table.c \ new_ca_window.c \ new_req_window.c \ new_cert.c \ cert_renewal.c \ cert_diff.c \ ca_bulk.c \ creation_process_window.c \ dialog.c \ gnomint_time.c \ gnomint_time.h \ ca.c \ ca_creation.c \ tls.c \ ca_file.c \ certificate_properties.c \ ca_policy.c \ csr_creation.c \ csr_properties.c \ pkey_manage.c \ preferences-gui.c \ preferences-window.c \ crl.c \ uint160.c \ import.c \ export.c \ san_entry.c \ san_entry.h \ san_manager.c \ san_manager.h \ wizard_window.c gnomint_LDADD = \ $(GNOMINT_LIBS) \ $(LIBGCRYPT_LIBS) \ $(LIBGNUTLS_LIBS) \ $(SQLITE_LIBS) \ $(WINSOCK_LIBS) \ $(LTLIBINTL) gnomint_LDFLAGS = \ -export-dynamic gnomint_cli_CFLAGS = \ -I$(top_srcdir) \ -I$(top_builddir) \ $(GNOMINTCLI_CFLAGS) \ $(LIBGCRYPT_CFLAGS) \ $(LIBGNUTLS_CFLAGS) \ $(SQLITE_CFLAGS) \ -DPACKAGE_DATA_DIR=\""$(datadir)"\" \ -DCOMPILATION_DATE=`date +%s` \ -DHAVE_CONFIG_H -DGNOMINTCLI \ -Wall -Werror gnomint_cli_SOURCES = \ dialog.c \ gnomint_time.c \ gnomint_time.h \ gnomint-cli.c \ export.c \ ca-cli.c \ ca-cli-callbacks.c \ ca_creation.c \ ca_file.c \ ca_policy.c \ ca_bulk.c \ cert_renewal.c \ cert_diff.c \ crl.c \ csr_creation.c \ import.c \ new_cert.c \ preferences.c \ pkey_manage.c \ tls.c \ uint160.c gnomint_cli_LDADD = \ $(GNOMINTCLI_LIBS) \ $(LIBGCRYPT_LIBS) \ $(LIBGNUTLS_LIBS) \ $(SQLITE_LIBS) \ $(READLINE_LIBS) \ $(WINSOCK_LIBS) \ $(LTLIBINTL) EXTRA_DIST = \ gnomint-upgrade-db \ ca_creation.h \ ca_file.h \ ca.h \ ca_selector.h \ ca_policy.h \ certificate_properties.h \ country_table.h \ csr_creation.h \ csr_properties.h \ prop_node.h \ dialog.h \ export.h \ main.h \ creation_process_window.h \ new_ca_window.h \ new_req_window.h \ new_cert.h \ cert_renewal.h \ cert_diff.h \ ca_bulk.h \ tls.h\ pkey_manage.h \ preferences.h \ preferences-gui.h \ preferences-window.h \ crl.h \ uint160.h \ import.h \ ca-cli.h \ ca-cli-callbacks.h \ time64_check.h \ wizard_window.h gnomint-1.6.4/src/ca-cli-callbacks.c0000644000000000000000000021042215212761266015744 0ustar00rootroot// gnoMint: a graphical interface for managing a certification authority // Copyright (C) 2006-2009 David Marín Carreño // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #include #include #include #include #include #include #include #include "ca-cli-callbacks.h" #include "ca-cli.h" #include "dialog.h" #include "gnomint_time.h" #include "ca_creation.h" #include "ca_file.h" #include "csr_creation.h" #include "export.h" #include "import.h" #include "new_cert.h" #include "pkey_manage.h" #include "preferences.h" #include "tls.h" #include "crl.h" #include "ca_bulk.h" #include "cert_renewal.h" extern CaCommand ca_commands[]; #define CA_COMMAND_NUMBER 33 extern gchar * gnomint_current_opened_file; extern gchar * ca_creation_message; extern gchar * csr_creation_message; int ca_cli_callback_newdb (int argc, char **argv) { gchar *filename = argv[1]; gchar *error = NULL; if (g_file_test(filename, G_FILE_TEST_EXISTS)) { /* The file already exists. We ask the user about overwriting it */ if (! dialog_ask_for_confirmation (_("The file already exists, so it will be overwritten."), _("Are you sure? Yes/[No] "), FALSE)) return 1; /* If he wants to overwrite it, we first rename it to "filename~", after deleting "filename~" if it already exists */ gchar *backup_filename = g_strdup_printf ("%s~", filename); if (g_file_test (backup_filename, G_FILE_TEST_EXISTS)) { g_remove (backup_filename); } g_rename (filename, backup_filename); g_free (backup_filename); } error = ca_file_create (filename); if (error) { fprintf (stderr, "%s\n", error); return 1; } if (! ca_open (filename, FALSE)) { fprintf (stderr, _("Problem when opening new '%s' CA database\n"), filename); return 1; } printf (_("File '%s' opened\n"), filename); return 0; } int ca_cli_callback_opendb (int argc, char **argv) { gchar *filename = argv[1]; if (! ca_open (filename, FALSE)) { fprintf (stderr, _("Problem when opening '%s' CA database\n"), filename); } return 0; } int ca_cli_callback_savedbas (int argc, char **argv) { gchar *filename = argv[1]; if (g_file_test(filename, G_FILE_TEST_EXISTS)) { /* The file already exists. We ask the user about overwriting it */ if (! dialog_ask_for_confirmation (_("The file already exists, so it will be overwritten."), _("Are you sure? Yes/[No] "), FALSE)) return 1; /* If he wants to overwrite it, we first rename it to "filename~", after deleting "filename~" if it already exists */ gchar *backup_filename = g_strdup_printf ("%s~", filename); if (g_file_test (backup_filename, G_FILE_TEST_EXISTS)) { g_remove (backup_filename); } g_rename (filename, backup_filename); g_free (backup_filename); } return ca_file_save_as (filename); } int ca_cli_callback_status (int argc, char **argv) { printf (_("Current opened file: %s\n"), gnomint_current_opened_file); printf (_("Number of certificates in file: %d\n"), ca_file_get_number_of_certs()); printf (_("Number of CSRs in file: %d\n"), ca_file_get_number_of_csrs()); return 0; } /* Formats a certificate validity date for the list. When the column is NULL * (the date could not be represented on the host that stored it), the value is * re-derived from the certificate PEM: correct on a 64-bit host, capped and * suffixed with a marker on a 32-bit one. Writes "" when there is no date. */ static void __ca_cli_format_list_date (const gchar *date_col, const gchar *pem, gboolean want_expiration, gchar *out, gsize outsz) { gint64 t = 0; gboolean authoritative = FALSE; struct tm tm; gsize n; if (date_col && date_col[0]) { t = g_ascii_strtoll (date_col, NULL, 10); authoritative = TRUE; } else if (pem && pem[0]) { gint64 act = 0, exp = 0; if (tls_cert_pem_get_validity (pem, &act, &exp)) t = want_expiration ? exp : act; } if (t == 0) { out[0] = '\0'; return; } gnomint_gmtime (t, &tm); n = strftime (out, outsz, _("%m/%d/%Y %H:%M GMT"), &tm); if (! authoritative && gnomint_time_display_is_uncertain (t) && n < outsz) g_strlcpy (out + n, _(" (after 2038?)"), outsz - n); } int __ca_cli_callback_listcert_aux (void *pArg, int argc, char **argv, char **columnNames) { struct tm tmp; gint64 aux_date; gchar model_time_str[100]; const gchar *cert_pem = (argc > CA_FILE_CERT_COLUMN_PEM) ? argv[CA_FILE_CERT_COLUMN_PEM] : NULL; printf (Q_("CertList ID|%s\t"), argv[CA_FILE_CERT_COLUMN_ID]); if (atoi(argv[CA_FILE_CERT_COLUMN_IS_CA])) printf (Q_("CertList IsCA|Y\t")); else printf (Q_("CertList IsCA|N\t")); if (strlen(argv[CA_FILE_CERT_COLUMN_SUBJECT]) > 16) argv[CA_FILE_CERT_COLUMN_SUBJECT][16] = '\0'; printf (Q_("CertList Subject|%s\t"), argv[CA_FILE_CERT_COLUMN_SUBJECT]); if (strlen (argv[CA_FILE_CERT_COLUMN_SUBJECT]) / 8 < 2) printf (Q_("CertList PadIfSubject<16|\t")); if (strlen (argv[CA_FILE_CERT_COLUMN_SUBJECT]) / 8 < 1) printf (Q_("CertList PadIfSubject<8|\t")); if (atoi(argv[CA_FILE_CERT_COLUMN_PRIVATE_KEY_IN_DB])) printf (Q_("CertList PKeyInDB|Y\t\t")); else printf (Q_("CertList PKeyInDB|N\t\t")); __ca_cli_format_list_date (argv[CA_FILE_CERT_COLUMN_ACTIVATION], cert_pem, FALSE, model_time_str, sizeof model_time_str); if (model_time_str[0]) printf (Q_("CertList Activation|%s\t"), model_time_str); else printf (Q_("CertList Activation|\t")); __ca_cli_format_list_date (argv[CA_FILE_CERT_COLUMN_EXPIRATION], cert_pem, TRUE, model_time_str, sizeof model_time_str); if (model_time_str[0]) printf (Q_("CertList Expiration|%s\t"), model_time_str); else printf (Q_("CertList Expiration|\t")); if (argc > CA_FILE_CERT_COLUMN_REVOCATION && argv[CA_FILE_CERT_COLUMN_REVOCATION]) { aux_date = g_ascii_strtoll (argv[CA_FILE_CERT_COLUMN_REVOCATION], NULL, 10); if (aux_date == 0) { printf (Q_("CertList Revocation|\n")); } else { gnomint_gmtime (aux_date, &tmp); strftime (model_time_str, 100, _("%m/%d/%Y %H:%M GMT"), &tmp); printf (Q_("CertList Revocation|%s\n"), model_time_str); } } else { printf ("\n"); } return 0; } int ca_cli_callback_listcert (int argc, char **argv) { gboolean see_revoked = FALSE; if (argc==2 && !strcmp (argv[1], "--see-revoked")) see_revoked = TRUE; printf (_("Certificates in Database:\n")); printf (_("Id.\tIs CA?\tCertificate Subject\tKey in DB?\tActivation\t\tExpiration")); if (see_revoked) printf (_("\t\tRevocation\n")); else printf ("\n"); ca_file_foreach_crt (__ca_cli_callback_listcert_aux, see_revoked, GINT_TO_POINTER(see_revoked)); return 0; } int __ca_cli_callback_listcsr_aux (void *pArg, int argc, char **argv, char **columnNames) { printf (Q_("CsrList ID|%s\t"), argv[CA_FILE_CSR_COLUMN_ID]); printf (Q_("CsrList ParentID|%s\t"), (argv[CA_FILE_CSR_COLUMN_PARENT_ID] ? argv[CA_FILE_CSR_COLUMN_PARENT_ID] : Q_("CsrList ParentID|\t"))); if (strlen(argv[CA_FILE_CSR_COLUMN_SUBJECT]) > 24) argv[CA_FILE_CSR_COLUMN_SUBJECT][24] = '\0'; printf (Q_("CsrList Subject|%-24s\t"), argv[CA_FILE_CSR_COLUMN_SUBJECT]); if (strlen (argv[CA_FILE_CSR_COLUMN_SUBJECT]) / 8 < 2) printf (Q_("CsrList PadIfSubject<16|\t")); if (strlen (argv[CA_FILE_CSR_COLUMN_SUBJECT]) / 8 < 1) printf (Q_("CsrList PadIfSubject<8|\t")); if (atoi(argv[CA_FILE_CSR_COLUMN_PRIVATE_KEY_IN_DB])) printf (Q_("CsrList PKeyInDB|Y\n")); else printf (Q_("CsrList PKeyInDB|N\n")); return 0; } int ca_cli_callback_listcsr (int argc, char **argv) { printf (_("Certificate Requests in Database:\n")); printf (_("Id.\tParent Id.\tCSR Subject\t\tKey in DB?\n")); ca_file_foreach_csr (__ca_cli_callback_listcsr_aux, NULL); return 0; } int ca_cli_callback_addcsr (int argc, char **argv) { gboolean with_ca_id = FALSE; guint64 ca_id; gboolean c_force_same = FALSE; gboolean st_force_same = FALSE; gboolean l_force_same = FALSE; gboolean o_force_same = FALSE; gboolean ou_force_same = FALSE; gboolean change_data = FALSE; TlsCreationData *csr_creation_data = NULL; guint max_key_length = 10240; // Default for RSA keys if (argc == 2) { ca_id = atoll (argv[1]); with_ca_id = TRUE; if (! ca_file_check_if_is_ca_id (ca_id)) { dialog_error (_("The given CA id. is not valid")); return -1; } } csr_creation_data = g_new0 (TlsCreationData, 1); if (with_ca_id) { TlsCert *tlscert = NULL; gchar *pem = NULL; pem = ca_file_get_public_pem_from_id (CA_FILE_ELEMENT_TYPE_CERT, ca_id); g_assert (pem); tlscert = tls_parse_cert_pem (pem); if (ca_file_policy_get_int (ca_id, "C_INHERIT")) { c_force_same = ca_file_policy_get_int (ca_id, "C_FORCE_SAME"); csr_creation_data->country = g_strdup (tlscert->c); } if (ca_file_policy_get_int (ca_id, "ST_INHERIT")) { st_force_same = ca_file_policy_get_int (ca_id, "ST_FORCE_SAME"); csr_creation_data->state = g_strdup (tlscert->st); } if (ca_file_policy_get_int (ca_id, "L_INHERIT")) { l_force_same = ca_file_policy_get_int (ca_id, "L_FORCE_SAME"); csr_creation_data->city = g_strdup (tlscert->l); } if (ca_file_policy_get_int (ca_id, "O_INHERIT")) { o_force_same = ca_file_policy_get_int (ca_id, "O_FORCE_SAME"); csr_creation_data->org = g_strdup (tlscert->o); } if (ca_file_policy_get_int (ca_id, "OU_INHERIT")) { ou_force_same = ca_file_policy_get_int (ca_id, "OU_FORCE_SAME"); csr_creation_data->ou = g_strdup (tlscert->ou); } csr_creation_data->parent_ca_id_str = g_strdup_printf ("%"G_GUINT64_FORMAT, ca_id); tls_cert_free (tlscert); } // Enter default values csr_creation_data->key_type = 0; csr_creation_data->key_bitlength = 2048; do { gchar * aux; printf (_("Please enter data corresponding to subject of the Certificate Signing Request:\n")); if (! c_force_same) { aux = dialog_ask_for_string (_("Enter country (C)"), csr_creation_data->country); if (csr_creation_data->country) g_free (csr_creation_data->country); csr_creation_data->country = aux; } aux = NULL; if (! st_force_same) { aux = dialog_ask_for_string (_("Enter state or province (ST)"), csr_creation_data->state); if (csr_creation_data->state) g_free (csr_creation_data->state); csr_creation_data->state = aux; aux = NULL; } if (! l_force_same) { aux = dialog_ask_for_string (_("Enter locality or city (L)"), csr_creation_data->city); if (csr_creation_data->city) g_free (csr_creation_data->city); csr_creation_data->city = aux; aux = NULL; } if (! o_force_same) { aux = dialog_ask_for_string (_("Enter organization (O)"), csr_creation_data->org); if (csr_creation_data->org) g_free (csr_creation_data->org); csr_creation_data->org = aux; aux = NULL; } if (! ou_force_same) { aux = dialog_ask_for_string (_("Enter organizational unit (OU)"), csr_creation_data->ou); if (csr_creation_data->ou) g_free (csr_creation_data->ou); csr_creation_data->ou = aux; aux = NULL; } aux = dialog_ask_for_string (_("Enter common name (CN)"), csr_creation_data->cn); if (csr_creation_data->cn) g_free (csr_creation_data->cn); csr_creation_data->cn = aux; aux = NULL; aux = dialog_ask_for_string (_("Enter email address (leave blank for none)"), csr_creation_data->emailAddress); if (csr_creation_data->emailAddress) g_free (csr_creation_data->emailAddress); if (aux && aux[0]) csr_creation_data->emailAddress = aux; else { g_free (aux); csr_creation_data->emailAddress = NULL; } aux = NULL; aux = dialog_ask_for_string (_("Enter Subject Alternative Names (SAN) [format: DNS:example.com,IP:192.168.1.1]"), csr_creation_data->subject_alt_name); if (csr_creation_data->subject_alt_name) g_free (csr_creation_data->subject_alt_name); csr_creation_data->subject_alt_name = aux; aux = NULL; do { if (aux) g_free (aux); aux = dialog_ask_for_string ( _("Enter type of key you are going to create " "(RSA/DSA/ECDSA/Ed25519)"), csr_creation_data->key_type == 3 ? "Ed25519" : csr_creation_data->key_type == 2 ? "ECDSA" : csr_creation_data->key_type == 1 ? "DSA" : "RSA"); } while (g_ascii_strcasecmp (aux, "RSA") && g_ascii_strcasecmp (aux, "DSA") && g_ascii_strcasecmp (aux, "ECDSA") && g_ascii_strcasecmp (aux, "Ed25519") && g_ascii_strcasecmp (aux, "ED25519")); if (! g_ascii_strcasecmp (aux, "RSA")) { csr_creation_data->key_type = 0; max_key_length = 10240; } else if (! g_ascii_strcasecmp (aux, "DSA")) { csr_creation_data->key_type = 1; max_key_length = 3072; } else if (! g_ascii_strcasecmp (aux, "ECDSA")) { csr_creation_data->key_type = 2; max_key_length = 521; } else { csr_creation_data->key_type = 3; /* Ed25519 */ max_key_length = 0; /* fixed */ } g_free (aux); aux = NULL; if (csr_creation_data->key_type == 2 /* ECDSA */) { /* P-256 / P-384 / P-521. The default lands at 256 * unless a previous prompt left a valid curve in * key_bitlength; an RSA-sized default (e.g. 2048) * would trip dialog_ask_for_number's assertion. */ gint ecdsa_default = (csr_creation_data->key_bitlength == 384 || csr_creation_data->key_bitlength == 521) ? csr_creation_data->key_bitlength : 256; do { csr_creation_data->key_bitlength = dialog_ask_for_number ( _("Enter curve size for ECDSA (256, 384, or 521)"), 256, 521, ecdsa_default); } while (csr_creation_data->key_bitlength != 256 && csr_creation_data->key_bitlength != 384 && csr_creation_data->key_bitlength != 521); } else if (csr_creation_data->key_type == 3 /* Ed25519 */) { csr_creation_data->key_bitlength = 0; } else { do { csr_creation_data->key_bitlength = dialog_ask_for_number ( _("Enter bitlength for the key (it must be a whole multiple of 1024)"), 1024, max_key_length, csr_creation_data->key_bitlength); } while (csr_creation_data->key_bitlength % 1024); } printf (_("These are the provided CSR properties:\n")); printf (_("Subject:\n")); printf (_("\tDistinguished Name: ")); if (csr_creation_data->country) printf ("C=%s/", csr_creation_data->country); if (csr_creation_data->state) printf ("ST=%s/", csr_creation_data->state); if (csr_creation_data->city) printf ("L=%s/", csr_creation_data->city); if (csr_creation_data->org) printf ("O=%s/", csr_creation_data->org); if (csr_creation_data->ou) printf ("OU=%s/", csr_creation_data->ou); if (csr_creation_data->cn) printf ("CN=%s", csr_creation_data->cn); printf ("\n"); if (csr_creation_data->subject_alt_name && csr_creation_data->subject_alt_name[0]) printf (_("\tSubject Alternative Names: %s\n"), csr_creation_data->subject_alt_name); printf (_("Key pair\n")); { const gchar *type_name = csr_creation_data->key_type == 3 ? "Ed25519" : csr_creation_data->key_type == 2 ? "ECDSA" : csr_creation_data->key_type == 1 ? "DSA" : "RSA"; printf (_("\tType: %s\n"), type_name); if (csr_creation_data->key_type == 3) printf (_("\tKey size: fixed (Ed25519)\n")); else if (csr_creation_data->key_type == 2) printf (_("\tCurve: P-%d\n"), csr_creation_data->key_bitlength); else printf (_("\tKey bitlength: %d\n"), csr_creation_data->key_bitlength); } change_data = dialog_ask_for_confirmation (NULL, _("Do you want to change anything? Yes/[No] "), FALSE); } while (change_data); if (dialog_ask_for_confirmation (_("You are about to create a Certificate Signing Request with these properties."), _("Are you sure? [Yes]/No "), TRUE)) { csr_creation_thread (csr_creation_data); printf ("%s\n", csr_creation_message); } else { printf (_("Operation cancelled.\n")); } return 0; } int ca_cli_callback_addca (int argc, char **argv) { gboolean change_data = FALSE; TlsCreationData *ca_creation_data = NULL; time_t tmp; struct tm * expiration_time; struct tm timer; char model_time_str[100]; ca_creation_data = g_new0 (TlsCreationData, 1); // Enter default values ca_creation_data->key_type = 0; ca_creation_data->key_bitlength = 2048; ca_creation_data->key_months_before_expiration = 240; do { gchar * aux; printf (_("Please enter data corresponding to subject of the new Certification Authority:\n")); aux = dialog_ask_for_string (_("Enter country (C)"), ca_creation_data->country); if (ca_creation_data->country) g_free (ca_creation_data->country); ca_creation_data->country = aux; aux = NULL; aux = dialog_ask_for_string (_("Enter state or province (ST)"), ca_creation_data->state); if (ca_creation_data->state) g_free (ca_creation_data->state); ca_creation_data->state = aux; aux = NULL; aux = dialog_ask_for_string (_("Enter locality or city (L)"), ca_creation_data->city); if (ca_creation_data->city) g_free (ca_creation_data->city); ca_creation_data->city = aux; aux = NULL; aux = dialog_ask_for_string (_("Enter organization (O)"), ca_creation_data->org); if (ca_creation_data->org) g_free (ca_creation_data->org); ca_creation_data->org = aux; aux = NULL; aux = dialog_ask_for_string (_("Enter organizational unit (OU)"), ca_creation_data->ou); if (ca_creation_data->ou) g_free (ca_creation_data->ou); ca_creation_data->ou = aux; aux = NULL; aux = dialog_ask_for_string (_("Enter common name (CN)"), ca_creation_data->cn); if (ca_creation_data->cn) g_free (ca_creation_data->cn); ca_creation_data->cn = aux; aux = NULL; aux = dialog_ask_for_string (_("Enter email address (leave blank for none)"), ca_creation_data->emailAddress); if (ca_creation_data->emailAddress) g_free (ca_creation_data->emailAddress); if (aux && aux[0]) ca_creation_data->emailAddress = aux; else { g_free (aux); ca_creation_data->emailAddress = NULL; } aux = NULL; aux = dialog_ask_for_string (_("Enter Subject Alternative Names (SAN) [format: DNS:example.com,IP:192.168.1.1]"), ca_creation_data->subject_alt_name); if (ca_creation_data->subject_alt_name) g_free (ca_creation_data->subject_alt_name); ca_creation_data->subject_alt_name = aux; aux = NULL; do { if (aux) g_free (aux); aux = dialog_ask_for_string ( _("Enter type of key you are going to create " "(RSA/DSA/ECDSA/Ed25519)"), ca_creation_data->key_type == 3 ? "Ed25519" : ca_creation_data->key_type == 2 ? "ECDSA" : ca_creation_data->key_type == 1 ? "DSA" : "RSA"); } while (g_ascii_strcasecmp (aux, "RSA") && g_ascii_strcasecmp (aux, "DSA") && g_ascii_strcasecmp (aux, "ECDSA") && g_ascii_strcasecmp (aux, "Ed25519") && g_ascii_strcasecmp (aux, "ED25519")); if (! g_ascii_strcasecmp (aux, "RSA")) { ca_creation_data->key_type = 0; } else if (! g_ascii_strcasecmp (aux, "DSA")) { ca_creation_data->key_type = 1; } else if (! g_ascii_strcasecmp (aux, "ECDSA")) { ca_creation_data->key_type = 2; } else { ca_creation_data->key_type = 3; /* Ed25519 */ } g_free (aux); aux = NULL; if (ca_creation_data->key_type == 2 /* ECDSA */) { gint ecdsa_default = (ca_creation_data->key_bitlength == 384 || ca_creation_data->key_bitlength == 521) ? ca_creation_data->key_bitlength : 256; do { ca_creation_data->key_bitlength = dialog_ask_for_number ( _("Enter curve size for ECDSA (256, 384, or 521)"), 256, 521, ecdsa_default); } while (ca_creation_data->key_bitlength != 256 && ca_creation_data->key_bitlength != 384 && ca_creation_data->key_bitlength != 521); } else if (ca_creation_data->key_type == 3 /* Ed25519 */) { ca_creation_data->key_bitlength = 0; } else { gint max_len = (ca_creation_data->key_type == 1) ? 3072 : 10240; do { ca_creation_data->key_bitlength = dialog_ask_for_number ( _("Enter bitlength for the key (it must be a whole multiple of 1024)"), 1024, max_len, ca_creation_data->key_bitlength); } while (ca_creation_data->key_bitlength % 1024); } ca_creation_data->key_months_before_expiration = dialog_ask_for_number (_("Introduce number of months before expiration of the new certification authority"), 1, 600, 240); tmp = time (NULL); ca_creation_data->activation = tmp; expiration_time = g_new (struct tm,1); #ifndef WIN32 localtime_r (&tmp, expiration_time); #else expiration_time = localtime (&tmp); #endif expiration_time->tm_mon = expiration_time->tm_mon + ca_creation_data->key_months_before_expiration; expiration_time->tm_year = expiration_time->tm_year + (expiration_time->tm_mon / 12); expiration_time->tm_mon = expiration_time->tm_mon % 12; { gboolean exp_overflow = FALSE; ca_creation_data->expiration = gnomint_mktime_checked (expiration_time, &exp_overflow); if (exp_overflow) dialog_info (_("This system uses a 32-bit time_t and cannot represent " "dates after 2038-01-19. The new CA's expiration date has " "been clamped to that limit. To issue longer-lived CAs, " "run gnoMint on a 64-bit platform.")); } #ifndef WIN32 g_free (expiration_time); #endif printf (_("These are the provided new CA properties:\n")); printf (_("Subject:\n")); printf (_("\tDistinguished Name: ")); if (ca_creation_data->country) printf ("C=%s/", ca_creation_data->country); if (ca_creation_data->state) printf ("ST=%s/", ca_creation_data->state); if (ca_creation_data->city) printf ("L=%s/", ca_creation_data->city); if (ca_creation_data->org) printf ("O=%s/", ca_creation_data->org); if (ca_creation_data->ou) printf ("OU=%s/", ca_creation_data->ou); if (ca_creation_data->cn) printf ("CN=%s", ca_creation_data->cn); printf ("\n"); if (ca_creation_data->subject_alt_name && ca_creation_data->subject_alt_name[0]) printf (_("\tSubject Alternative Names: %s\n"), ca_creation_data->subject_alt_name); printf (_("Key pair\n")); { const gchar *type_name = ca_creation_data->key_type == 3 ? "Ed25519" : ca_creation_data->key_type == 2 ? "ECDSA" : ca_creation_data->key_type == 1 ? "DSA" : "RSA"; printf (_("\tType: %s\n"), type_name); } printf (_("\tKey bitlength: %d\n"), ca_creation_data->key_bitlength); printf (_("Validity\n")); printf (_("Validity:\n")); gnomint_gmtime (ca_creation_data->activation, &timer); strftime (model_time_str, 100, _("%m/%d/%Y %H:%M GMT"), &timer); printf (_("\tActivated on: %s\n"), model_time_str); gnomint_gmtime (ca_creation_data->expiration, &timer); strftime (model_time_str, 100, _("%m/%d/%Y %H:%M GMT"), &timer); printf (_("\tExpires on: %s\n"), model_time_str); change_data = dialog_ask_for_confirmation (NULL, _("Do you want to change anything? Yes/[No] "), FALSE); } while (change_data); if (dialog_ask_for_confirmation (_("You are about to create a new Certification Authority with these properties."), _("Are you sure? [Yes]/No "), TRUE)) { ca_creation_thread (ca_creation_data); printf ("%s\n", ca_creation_message); } else { printf (_("Operation cancelled.\n")); } return 0; } int ca_cli_callback_extractcertpkey (int argc, char **argv) { guint64 id_cert = atoll(argv[1]); gchar *filename = argv[2]; gchar *error = NULL; if (! ca_file_check_if_is_cert_id (id_cert)) { dialog_error (_("The given certificate id. is not valid")); return -1; } error = export_private_pkcs8 (id_cert, CA_FILE_ELEMENT_TYPE_CERT, filename); if (! error) { printf (_("Private key extracted successfully into file '%s'\n"), filename); } else { dialog_error (error); return 1; } return 0; } int ca_cli_callback_extractcsrpkey (int argc, char **argv) { guint64 id_csr = atoll(argv[1]); gchar *filename = argv[2]; gchar *error = NULL; if (! ca_file_check_if_is_csr_id (id_csr)) { dialog_error (_("The given CSR id. is not valid")); return -1; } error = export_private_pkcs8 (id_csr, CA_FILE_ELEMENT_TYPE_CSR, filename); if (! error) { printf (_("Private key extracted successfully into file '%s'\n"), filename); } else { dialog_error (error); return 1; } return 0; } int ca_cli_callback_revoke (int argc, char **argv) { gchar *errmsg = NULL; guint64 id = atoll (argv[1]); if (! ca_file_check_if_is_cert_id (id)) { dialog_error (_("The given certificate id. is not valid")); return -1; } ca_cli_callback_showcert (argc, argv); if (dialog_ask_for_confirmation (_("This certificate will be revoked."), _("Are you sure? Yes/[No] "), FALSE)) { errmsg = ca_file_revoke_crt (id); if (errmsg) { dialog_error (_(errmsg)); } else { printf (_("Certificate revoked.\n")); } } else { printf (_("Operation cancelled.\n")); } return 0; } void __ca_cli_callback_show_uses_and_purposes (TlsCertCreationData *cert_creation_data) { printf (_("Certificate uses:\n")); if (cert_creation_data->ca) { printf (_("* Certification Authority use enabled.\n")); } else { printf (_("* Certification Authority use disabled.\n")); } if (cert_creation_data->crl_signing) { printf (_("* CRL signing use enabled.\n")); } else { printf (_("* CRL signing use disabled.\n")); } if (cert_creation_data->digital_signature) { printf (_("* Digital Signature use enabled.\n")); } else { printf (_("* Digital Signature use disabled.\n")); } if (cert_creation_data->data_encipherment) { printf (_("* Data Encipherment use enabled.\n")); } else { printf (_("* Data Encipherment use enabled.\n")); } if (cert_creation_data->key_encipherment) { printf (_("* Key Encipherment use enabled.\n")); } else { printf (_("* Key Encipherment use disabled.\n")); } if (cert_creation_data->non_repudiation) { printf (_("* Non Repudiation use enabled.\n")); } else { printf (_("* Non Repudiation use disabled.\n")); } if (cert_creation_data->key_agreement) { printf (_("* Key Agreement use enabled.\n")); } else { printf (_("* Key Agreement use disabled.\n")); } printf (_("Certificate purposes:\n")); if (cert_creation_data->email_protection) { printf (_("* Email Protection purpose enabled.\n")); } else { printf (_("* Email Protection purpose disabled.\n")); } if (cert_creation_data->code_signing) { printf (_("* Code Signing purpose enabled.\n")); } else { printf (_("* Code Signing purpose disabled.\n")); } if (cert_creation_data->web_client) { printf (_("* TLS Web Client purpose enabled.\n")); } else { printf (_("* TLS Web Client purpose disabled.\n")); } if (cert_creation_data->web_server) { printf (_("* TLS Web Server purpose enabled.\n")); } else { printf (_("* TLS Web Server purpose disabled.\n")); } if (cert_creation_data->time_stamping) { printf (_("* Time Stamping purpose enabled.\n")); } else { printf (_("* Time Stamping purpose disabled.\n")); } if (cert_creation_data->ocsp_signing) { printf (_("* OCSP Signing purpose enabled.\n")); } else { printf (_("* OCSP Signing purpose disabled.\n")); } if (cert_creation_data->any_purpose) { printf (_("* Any purpose enabled.\n")); } else { printf (_("* Any purpose disabled.\n")); } } int ca_cli_callback_sign (int argc, char **argv) { TlsCertCreationData *cert_creation_data = NULL; guint64 csr_id; guint64 ca_id; csr_id = atoll(argv[1]); ca_id = atoll(argv[2]); if (! ca_file_check_if_is_csr_id (csr_id)) { dialog_error (_("The given CSR id. is not valid")); return -1; } cert_creation_data = g_new0 (TlsCertCreationData, 1); printf (_("You are about to sign the following Certificate Signing Request:\n")); ca_cli_callback_showcsr (argc, argv); printf (_("with the certificate corresponding to the next CA:\n")); ca_cli_callback_showcert (argc - 1, &argv[1]); cert_creation_data->key_months_before_expiration = dialog_ask_for_number (_("Introduce number of months before expiration of the new certificate (0 to cancel)"), 0, ca_file_policy_get_int (ca_id, "MONTHS_TO_EXPIRE"), ca_file_policy_get_int (ca_id, "MONTHS_TO_EXPIRE")); if (cert_creation_data->key_months_before_expiration == 0) { g_free (cert_creation_data); printf (_("Operation cancelled.\n")); } cert_creation_data->ca = ca_file_policy_get_int (ca_id, "CA"); cert_creation_data->crl_signing = ca_file_policy_get_int (ca_id, "CRL_SIGN"); cert_creation_data->digital_signature = ca_file_policy_get_int (ca_id, "DIGITAL_SIGNATURE"); cert_creation_data->data_encipherment = ca_file_policy_get_int (ca_id, "DATA_ENCIPHERMENT"); cert_creation_data->key_encipherment = ca_file_policy_get_int (ca_id, "KEY_ENCIPHERMENT"); cert_creation_data->non_repudiation = ca_file_policy_get_int (ca_id, "NON_REPUDIATION"); cert_creation_data->key_agreement = ca_file_policy_get_int (ca_id, "KEY_AGREEMENT"); cert_creation_data->email_protection = ca_file_policy_get_int (ca_id, "EMAIL_PROTECTION"); cert_creation_data->code_signing = ca_file_policy_get_int (ca_id, "CODE_SIGNING"); cert_creation_data->web_client = ca_file_policy_get_int (ca_id, "TLS_WEB_CLIENT"); cert_creation_data->web_server = ca_file_policy_get_int (ca_id, "TLS_WEB_SERVER"); cert_creation_data->time_stamping = ca_file_policy_get_int (ca_id, "TIME_STAMPING"); cert_creation_data->ocsp_signing = ca_file_policy_get_int (ca_id, "OCSP_SIGNING"); cert_creation_data->any_purpose = ca_file_policy_get_int (ca_id, "ANY_PURPOSE"); printf (_("The new certificate will be created with the following uses and purposes:\n")); __ca_cli_callback_show_uses_and_purposes (cert_creation_data); while (dialog_ask_for_confirmation (NULL, _("Do you want to change any property of the new certificate? Yes/[No] "), FALSE)) { if (ca_file_policy_get_int (ca_id, "CA")) { cert_creation_data->ca = dialog_ask_for_confirmation (NULL, _("* Enable Certification Authority use? [Yes]/No "), TRUE); } else { printf (_("* Certification Authority use disabled by policy\n")); } if (ca_file_policy_get_int (ca_id, "CRL_SIGN")) { cert_creation_data->crl_signing = dialog_ask_for_confirmation (NULL, _("* Enable CRL Signing? [Yes]/No "), TRUE); } else { printf (_("* CRL signing use disabled by policy\n")); } if (ca_file_policy_get_int (ca_id, "DIGITAL_SIGNATURE")) { cert_creation_data->digital_signature = dialog_ask_for_confirmation (NULL, _("* Enable Digital Signature use? [Yes]/No "), TRUE); } else { printf (_("* Digital Signature use disabled by policy\n")); } if (ca_file_policy_get_int (ca_id, "DATA_ENCIPHERMENT")) { cert_creation_data->data_encipherment = dialog_ask_for_confirmation (NULL, _("Enable Data Encipherment use? [Yes]/No "), TRUE); } else { printf (_("* Data Encipherment use disabled by policy\n")); } if (ca_file_policy_get_int (ca_id, "KEY_ENCIPHERMENT")) { cert_creation_data->key_encipherment = dialog_ask_for_confirmation (NULL, _("Enable Key Encipherment use? [Yes]/No "), TRUE); } else { printf (_("* Key Encipherment use disabled by policy\n")); } if (ca_file_policy_get_int (ca_id, "NON_REPUDIATION")) { cert_creation_data->non_repudiation = dialog_ask_for_confirmation (NULL, _("Enable Non Repudiation use? [Yes]/No "), TRUE); } else { printf (_("* Non Repudiation use disabled by policy\n")); } if (ca_file_policy_get_int (ca_id, "KEY_AGREEMENT")) { cert_creation_data->key_agreement = dialog_ask_for_confirmation (NULL, _("Enable Key Agreement use? [Yes]/No "), TRUE); } else { printf (_("* Key Agreement use disabled by policy\n")); } if (ca_file_policy_get_int (ca_id, "EMAIL_PROTECTION")) { cert_creation_data->email_protection = dialog_ask_for_confirmation (NULL, _("Enable Email Protection purpose? [Yes]/No "), TRUE); } else { printf (_("* Email Protection purpose disabled by policy\n")); } if (ca_file_policy_get_int (ca_id, "CODE_SIGNING")) { cert_creation_data->code_signing = dialog_ask_for_confirmation (NULL, _("Enable Code Signing purpose? [Yes]/No "), TRUE); } else { printf (_("* Code Signing purpose disabled by policy\n")); } if (ca_file_policy_get_int (ca_id, "TLS_WEB_CLIENT")) { cert_creation_data->web_client = dialog_ask_for_confirmation (NULL, _("Enable TLS Web Client purpose? [Yes]/No "), TRUE); } else { printf (_("* TLS Web Client purpose disabled by policy\n")); } if (ca_file_policy_get_int (ca_id, "TLS_WEB_SERVER")) { cert_creation_data->web_server = dialog_ask_for_confirmation (NULL, _("Enable TLS Web Server purpose? [Yes]/No "), TRUE); } else { printf (_("* TLS Web Server purpose disabled by policy\n")); } if (ca_file_policy_get_int (ca_id, "TIME_STAMPING")) { cert_creation_data->time_stamping = dialog_ask_for_confirmation (NULL, _("Enable Time Stamping purpose? [Yes]/No "), TRUE); } else { printf (_("* Time Stamping purpose disabled by policy\n")); } if (ca_file_policy_get_int (ca_id, "OCSP_SIGNING")) { cert_creation_data->ocsp_signing = dialog_ask_for_confirmation (NULL, _("Enable OCSP Signing purpose? [Yes]/No "), TRUE); } else { printf (_("* OCSP Signing purpose disabled by policy\n")); } if (ca_file_policy_get_int (ca_id, "ANY_PURPOSE")) { cert_creation_data->any_purpose = dialog_ask_for_confirmation (NULL, _("Enable any purpose? [Yes]/No "), TRUE); } else { printf (_("* Any purpose disabled by policy\n")); } printf (_("The new certificate will be created with the following uses and purposes:\n")); __ca_cli_callback_show_uses_and_purposes (cert_creation_data); } if (dialog_ask_for_confirmation (_("All the mandatory data for the certificate generation has been gathered."), _("Do you want to proceed with the signing? [Yes]/No "), TRUE)) { const gchar * strerror = new_cert_sign_csr (csr_id, ca_id, cert_creation_data); if (strerror) dialog_error ((gchar *) strerror); else printf (_("Certificate signed.\n")); } else { printf (_("Operation cancelled.\n")); } return 0; } int ca_cli_callback_delete (int argc, char **argv) { gchar *errmsg = NULL; guint64 id = atoll (argv[1]); if (! ca_file_check_if_is_csr_id (id)) { dialog_error (_("The given CSR id. is not valid")); return -1; } ca_cli_callback_showcsr (argc, argv); if (dialog_ask_for_confirmation (_("This Certificate Signing Request will be deleted."), _("This operation cannot be undone. Are you sure? Yes/[No] "), FALSE)) { errmsg = ca_file_remove_csr (id); if (errmsg) { dialog_error (_(errmsg)); } else { printf (_("Certificate Signing Request deleted.\n")); } } else { printf (_("Operation cancelled.\n")); } return 0; } int ca_cli_callback_crlgen (int argc, char **argv) { guint64 id_ca = atoll(argv[1]); gchar *filename = argv[2]; gchar *error = NULL; if (! ca_file_check_if_is_ca_id (id_ca)) { dialog_error (_("The given CA id. is not valid")); return -1; } error = crl_generate (id_ca, g_strdup(filename)); if (! error) { printf (_("CRL generated successfully into file '%s'\n"), filename); } else { dialog_error (error); return 1; } return 0; } int ca_cli_callback_dhgen (int argc, char **argv) { gint primebitlength = atoi (argv[1]); gchar *filename = argv[2]; gchar *error = NULL; if (primebitlength == 0 || primebitlength % 1024) { dialog_error (_("The bit-length of the prime number must be whole multiple of 1024")); return 1; } error = export_dh_param (primebitlength, filename); if (error) dialog_error (error); else printf (_("Diffie-Hellman parameters created and saved successfully in file '%s'\n"), filename); return 0; } int ca_cli_callback_changepassword (int argc, char **argv) { gchar *current_pwd = NULL; gchar *password = NULL; // First, we check the current status if (! ca_file_is_password_protected()) { if (dialog_ask_for_confirmation (_("Currently, the database is not password-protected."), _("Do you want to password protect it? [Yes]/No "), TRUE)) { password = dialog_get_password (_("OK. You need to supply a password for protecting the private keys in the\n" "database, so nobody else but authorized people can use them. This password\n" "will be asked any time gnoMint will make use of any private key in database."), _("Insert password:"), _("Insert password (confirm):"), _("The introduced passwords are distinct."), 0); if (! password) { printf (_("Operation cancelled.\n")); return 1; } if (! ca_file_password_protect (password)) { dialog_error (_("Error while establishing database password. The operation was cancelled.")); g_free (password); return 2; } else { printf (_("Password established successfully.\n")); g_free (password); return 0; } } else { printf (_("Nothing done.\n")); return 0; } } else { if (dialog_ask_for_confirmation (_("Currently, the database IS password-protected."), _("Do you want to remove this password protection? Yes/[No] "), FALSE)) { do { if (current_pwd) g_free (current_pwd); printf (_("For removing the password-protection, the current database password\nmust be supplied.\n")); current_pwd = dialog_ask_for_password (_("Please, insert the current database password (Empty to cancel): ")); if (! current_pwd) { printf (_("Operation cancelled.\n")); return 3; } if (! ca_file_check_password (current_pwd)) { dialog_error (_("The current password you have entered\ndoesn't match with the actual current database password.")); } } while (! ca_file_check_password(current_pwd)); if (! ca_file_password_unprotect (current_pwd)) { dialog_error (_("Error while removing database password. \n" "The operation was cancelled.")); g_free (current_pwd); return 4; } else { printf (_("Password removed successfully.\n")); g_free (current_pwd); g_free (password); return 0; } } else { do { if (current_pwd) g_free (current_pwd); printf (_("You must supply the current database password before changing the password.\n")); current_pwd = dialog_ask_for_password (_("Please, insert the current database password (Empty to cancel): ")); if (! current_pwd) { printf (_("Operation cancelled.\n")); return 3; } if (! ca_file_check_password (current_pwd)) { dialog_error (_("The current password you have entered\ndoesn't match with the actual current database password.")); } } while (! ca_file_check_password(current_pwd)); password = dialog_get_password (_("OK. Now you must supply a new password for protecting the private keys in the\n" "database, so nobody else but authorized people can use them. This password\n" "will be asked any time gnoMint will make use of any private key in database."), _("Insert new password:"), _("Insert new password (confirm):"), _("The introduced passwords are distinct."), 0); if (! password) { printf (_("Operation cancelled.\n")); g_free (current_pwd); return 4; } if (! ca_file_password_change (current_pwd, password)) { dialog_error (_("Error while changing database password. \n" "The operation was cancelled.")); g_free (current_pwd); g_free (password); return 5; } else { printf (_("Password changed successfully.\n")); g_free (current_pwd); g_free (password); return 0; } } } return 0; } int ca_cli_callback_importfile (int argc, char **argv) { gchar *filename = argv[1]; if (! import_single_file (filename, NULL, NULL)) { dialog_error (_("Problem when importing the given file.")); return 1; } else { printf (_("File imported successfully.\n")); } return 0; } int ca_cli_callback_importdir (int argc, char **argv) { gchar *filename = argv[1]; gchar *error = NULL; error = import_whole_dir (filename); if (error) { dialog_error (error); return 1; } else { printf (_("Directory imported successfully.\n")); } return 0; } int ca_cli_callback_showcert (int argc, char **argv) { guint64 cert_id = atoll(argv[1]); gchar * certificate_pem; TlsCert * cert = NULL; struct tm tim; gchar model_time_str[100]; gchar *aux; UInt160 *serial_number; gint i; if (! ca_file_check_if_is_cert_id (cert_id)) { dialog_error (_("The given certificate id. is not valid")); return -1; } certificate_pem = ca_file_get_public_pem_from_id(CA_FILE_ELEMENT_TYPE_CERT, cert_id); cert = tls_parse_cert_pem (certificate_pem); /* The dates parsed above come from GnuTLS's time_t getter, which caps at * 2038 on a 32-bit-time_t build. Prefer the authoritative 64-bit value * cached in the database (keeping showcert consistent with listcert). A * column may be NULL — meaning the date was not representable when stored; * in that case we keep the freshly re-parsed value (correct on a 64-bit * host) and flag it as uncertain on a 32-bit one. */ gboolean have_act = FALSE, have_exp = FALSE; gint64 db_act = 0, db_exp = 0; ca_file_get_stored_cert_dates (cert_id, &db_act, &have_act, &db_exp, &have_exp); if (have_act) cert->activation_time = db_act; if (have_exp) cert->expiration_time = db_exp; printf (_("Certificate:\n")); serial_number = &cert->serial_number; aux = uint160_strdup_printf (serial_number); printf (_("\tSerial number: %s\n"), aux); g_free (aux); printf (_("Subject:\n")); printf (_("\tDistinguished Name: %s\n"), (cert->dn ? cert->dn : _("None."))); printf (_("\tUnique ID: %s\n"), (cert->subject_key_id ? cert->subject_key_id : _("None."))); if (cert->subject_alt_name && cert->subject_alt_name[0]) printf (_("\tSubject Alternative Names: %s\n"), cert->subject_alt_name); printf (_("Issuer:\n")); printf (_("\tDistinguished Name: %s\n"), (cert->i_dn ? cert->i_dn : _("None."))); printf (_("\tUnique ID: %s\n"), (cert->issuer_key_id ? cert->issuer_key_id : _("None."))); printf (_("Validity:\n")); gnomint_gmtime (cert->activation_time, &tim); strftime (model_time_str, 100, _("%m/%d/%Y %H:%M GMT"), &tim); printf (_("\tActivated on: %s\n"), model_time_str); if (! have_act && gnomint_time_display_is_uncertain (cert->activation_time)) printf (_("\t (warning: this 32-bit build cannot tell a real post-2038 date " "from an overflow; this value may be inaccurate)\n")); gnomint_gmtime (cert->expiration_time, &tim); strftime (model_time_str, 100, _("%m/%d/%Y %H:%M GMT"), &tim); printf (_("\tExpires on: %s\n"), model_time_str); if (! have_exp && gnomint_time_display_is_uncertain (cert->expiration_time)) printf (_("\t (warning: this 32-bit build cannot tell a real post-2038 date " "from an overflow; this value may be inaccurate)\n")); printf (_("Fingerprints:\n")); printf (_("\tSHA1 fingerprint: %s\n"), cert->sha1); printf (_("\tMD5 fingerprint: %s\n"), cert->md5); printf (_("\tSHA256 fingerprint: %s\n"), cert->sha256); if (g_list_length (cert->uses)) { printf (_("Certificate uses:\n")); for (i = g_list_length(cert->uses) - 1; i >= 0; i--) { printf ("\t%s\n", (gchar *) g_list_nth_data (cert->uses, i)); } } tls_cert_free (cert); return 0; } int ca_cli_callback_showcsr (int argc, char **argv) { guint64 csr_id = atoll(argv[1]); gchar * csr_pem; TlsCsr * csr = NULL; if (! ca_file_check_if_is_csr_id (csr_id)) { dialog_error (_("The given CSR id. is not valid")); return -1; } csr_pem = ca_file_get_public_pem_from_id(CA_FILE_ELEMENT_TYPE_CSR, csr_id); csr = tls_parse_csr_pem (csr_pem); printf (_("Certificate Signing Request:\n")); printf (_("Subject:\n")); printf (_("\tDistinguished Name: %s\n"), csr->dn); if (csr->subject_alt_name && csr->subject_alt_name[0]) printf (_("\tSubject Alternative Names: %s\n"), csr->subject_alt_name); #ifdef ADVANCED_GNUTLS printf (_("\tUnique ID: %s\n"), csr->key_id); #endif tls_csr_free (csr); return 0; } typedef enum { CA_CLI_CALLBACK_POLICY_C_INHERIT = 0, CA_CLI_CALLBACK_POLICY_ST_INHERIT = 1, CA_CLI_CALLBACK_POLICY_L_INHERIT = 2, CA_CLI_CALLBACK_POLICY_O_INHERIT = 3, CA_CLI_CALLBACK_POLICY_OU_INHERIT = 4, CA_CLI_CALLBACK_POLICY_C_FORCE_SAME = 5, CA_CLI_CALLBACK_POLICY_ST_FORCE_SAME = 6, CA_CLI_CALLBACK_POLICY_L_FORCE_SAME = 7, CA_CLI_CALLBACK_POLICY_O_FORCE_SAME = 8, CA_CLI_CALLBACK_POLICY_OU_FORCE_SAME = 9, CA_CLI_CALLBACK_POLICY_HOURS_BETWEEN_CRL_UPDATES = 10, CA_CLI_CALLBACK_POLICY_CRL_DISTRIBUTION_POINT = 11, CA_CLI_CALLBACK_POLICY_MONTHS_TO_EXPIRE = 12, CA_CLI_CALLBACK_POLICY_CA = 13, CA_CLI_CALLBACK_POLICY_CRL_SIGN = 14, CA_CLI_CALLBACK_POLICY_NON_REPUTATION = 15, CA_CLI_CALLBACK_POLICY_DIGITAL_SIGNATURE = 16, CA_CLI_CALLBACK_POLICY_KEY_ENCIPHERMENT = 17, CA_CLI_CALLBACK_POLICY_KEY_AGREEMENT = 18, CA_CLI_CALLBACK_POLICY_DATA_ENCIPHERMENT = 19, CA_CLI_CALLBACK_POLICY_TLS_WEB_SERVER = 20, CA_CLI_CALLBACK_POLICY_TLS_WEB_CLIENT = 21, CA_CLI_CALLBACK_POLICY_TIME_STAMPING = 22, CA_CLI_CALLBACK_POLICY_CODE_SIGNING = 23, CA_CLI_CALLBACK_POLICY_EMAIL_PROTECTION = 24, CA_CLI_CALLBACK_POLICY_OCSP_SIGNING = 25, CA_CLI_CALLBACK_POLICY_ANY_PURPOSE = 26, CA_CLI_CALLBACK_POLICY_NUMBER = 27 } CaCallbackPolicy; static gchar *CaCallbackPolicyName[CA_CLI_CALLBACK_POLICY_NUMBER] = { "C_INHERIT", "ST_INHERIT", "L_INHERIT", "O_INHERIT", "OU_INHERIT", "C_FORCE_SAME", "ST_FORCE_SAME", "L_FORCE_SAME", "O_FORCE_SAME", "OU_FORCE_SAME", "HOURS_BETWEEN_CRL_UPDATES", "CRL_DISTRIBUTION_POINT", "MONTHS_TO_EXPIRE", "CA", "CRL_SIGN", "NON_REPUDIATION", "DIGITAL_SIGNATURE", "KEY_ENCIPHERMENT", "KEY_AGREEMENT", "DATA_ENCIPHERMENT", "TLS_WEB_SERVER", "TLS_WEB_CLIENT", "TIME_STAMPING", "CODE_SIGNING", "EMAIL_PROTECTION", "OCSP_SIGNING", "ANY_PURPOSE" }; static gchar *CaCallbackPolicyDescriptions[CA_CLI_CALLBACK_POLICY_NUMBER] = { N_("Generated certs inherit Country from CA "), N_("Generated certs inherit State from CA "), N_("Generated certs inherit Locality from CA "), N_("Generated certs inherit Organization from CA "), N_("Generated certs inherit Organizational Unit from CA "), N_("Country in generated certs must be the same than in CA "), N_("State in generated certs must be the same than in CA "), N_("Locality in generated certs must be the same than in CA "), N_("Organization in generated certs must be the same than in CA "), N_("Organizational Unit in generated certs must be the same than in CA"), N_("Maximum number of hours between CRL updates "), N_("CRL distribution point (URL where CRL is published) "), N_("Maximum number of months before expiration of new certs "), N_("CA use enabled in generated certs "), N_("CRL Sign use enabled in generated certs "), N_("Non reputation use enabled in generated certs "), N_("Digital signature use enabled in generated certs "), N_("Key encipherment use enabled in generated certs "), N_("Key agreement use enabled in generated certs "), N_("Data encipherment use enabled in generated certs "), N_("TLS web server purpose enabled in generated certs "), N_("TLS web client purpose enabled in generated certs "), N_("Time stamping purpose enabled in generated certs "), N_("Code signing server purpose enabled in generated certs "), N_("Email protection purpose enabled in generated certs "), N_("OCSP signing purpose enabled in generated certs "), N_("Any purpose enabled in generated certs ")}; int ca_cli_callback_showpolicy (int argc, char **argv) { guint64 ca_id = atoll(argv[1]); gint i; if (! ca_file_check_if_is_ca_id (ca_id)) { dialog_error (_("The given CA id. is not valid")); return -1; } printf (_("Showing policies of the following certificate:\n")); ca_cli_callback_showcert (argc, argv); printf (_("\nPolicies:\n")); printf (_("Id.\tDescription\t\t\t\t\t\t\t\tValue\n")); for (i = 0; i < CA_CLI_CALLBACK_POLICY_NUMBER; i++) { printf ("%d\t%s\t%s\n", i, CaCallbackPolicyDescriptions[i], ca_file_policy_get(ca_id, CaCallbackPolicyName[i])); } return 0; } int ca_cli_callback_setpolicy (int argc, char **argv) { guint64 ca_id = atoll(argv[1]); gint policy_id = atoi (argv[2]); gchar *value = argv[3]; gchar *message = NULL; gchar *description = NULL; gint i; if (! ca_file_check_if_is_ca_id (ca_id)) { dialog_error (_("The given CA id. is not valid")); return -1; } if (policy_id < 0 || policy_id >= CA_CLI_CALLBACK_POLICY_NUMBER) { dialog_error (_("The given policy id is not valid")); return -2; } description = g_strdup (CaCallbackPolicyDescriptions[policy_id]); for (i=strlen (description) - 1; i>=0; i--) { if (description[i] != ' ') { description[i+1] = '\0'; break; } } message = g_strdup_printf (_("You are about to assign to the policy\n'%s' the new value '%s'."), description, value); g_free (description); if (dialog_ask_for_confirmation (message, _("Are you sure? Yes/[No] : "), FALSE)) { if (! ca_file_policy_set (ca_id, CaCallbackPolicyName[policy_id], value)) { g_free (message); return -1; } else printf (_("Policy set correctly to '%s'.\n"), value); } else { printf (_("Operation cancelled.\n")); } g_free (message); return 0; } int ca_cli_callback_showpreferences (int argc, char **argv) { printf (_("gnoMint-cli current preferences:\n")); printf (_("Id.\tName\t\t\tValue\n")); printf (_("0\tGnome keyring support\t%d\n"), preferences_get_gnome_keyring_export()); return 0; } int ca_cli_callback_setpreference (int argc, char **argv) { gint preference_id = atoi (argv[1]); gint value = atoi (argv[2]); gchar *message = NULL; if (preference_id != 0) { dialog_error (_("The given preference id is not valid")); return -1; } switch (preference_id) { case 0: message = g_strdup_printf (_("You are about to assign to the preference 'Gnome keyring support' the new value '%d'."), value); break; } if (dialog_ask_for_confirmation (message, _("Are you sure? Yes/[No] : "), FALSE)) { switch (preference_id) { case 0: preferences_set_gnome_keyring_export (value); break; } } else { printf (_("Operation cancelled.\n")); } g_free (message); return 0; } int ca_cli_callback_about (int argc, char **argv) { printf (_("%s version %s\n%s\n"), PACKAGE_NAME, PACKAGE_VERSION, PACKAGE_COPYRIGHT); printf (_("\nAuthors:\n%s\n\n"), PACKAGE_AUTHORS); if (strcmp ("translator-credits", _("translator-credits"))) printf (_("Translators:\n%s\n"), _("translator-credits")); return 0; } int ca_cli_callback_warranty (int argc, char **argv) { printf ("%s", _("THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY\n" "APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT\n" "HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY\n" "OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,\n" "THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n" "PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM\n" "IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF\n" "ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n\n" "For more information about warranty, see section 15 onwards of the GNU\n" "General Public License. You should have received a copy of the GNU General\n" "Public License along with this program. If not, see\n" ".\n\n")); return 0; } int ca_cli_callback_distribution (int argc, char **argv) { printf ("%s", _("This program is free software: you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation, either version 3 of the License, or\n" "(at your option) any later version.\n\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n\n" "You should have received a copy of the GNU General Public License\n" "along with this program. If not, see .\n\n")); return 0; } int ca_cli_callback_version (int argc, char **argv) { printf (_("%s version %s \"%s\"\n"), PACKAGE_NAME, PACKAGE_VERSION, PACKAGE_CODENAME); return 0; } int ca_cli_callback_help (int argc, char **argv) { gint i; printf ("\n"); printf (_("Available commands:\n")); printf (_("===================\n")); for (i=0; i < CA_COMMAND_NUMBER; i++) { printf ("* %s\n %s\n", _(ca_commands[i].syntax), _(ca_commands[i].help)); } return 0; } int ca_cli_callback_exit (int argc, char **argv) { printf (_("Exiting gnomint-cli...\n")); exit (0); return 0; } /* sqlite3-style callback consumed by ca_file_foreach_policy in * ca_cli_callback_addservercert. Policy rows arrive as * (ca_id, name, value); we store name -> value in the supplied GHashTable. */ static int __cli_addservercert_collect_policy_cb (void *pArg, int argc, char **argv, char **columnNames G_GNUC_UNUSED) { GHashTable *table = (GHashTable *) pArg; if (argc >= 3 && argv[1] && argv[2]) { g_hash_table_insert (table, g_strdup (argv[1]), g_strdup (argv[2])); } return 0; } int ca_cli_callback_addservercert (int argc, char **argv) { guint64 ca_id; gchar *cert_type_str; gchar *server_name; TlsCreationData *creation_data = NULL; TlsCertCreationData *cert_creation_data = NULL; gchar *private_key = NULL; gnutls_x509_privkey_t *csr_key = NULL; gchar *certificate_sign_request = NULL; gchar *error_message = NULL; TlsCsr *tlscsr = NULL; guint64 csr_id = 0; gboolean is_web_server = TRUE; // Parse parameters ca_id = atoll(argv[1]); cert_type_str = argv[2]; server_name = argv[3]; // Validate CA ID: must reference a non-revoked CA, not just any cert. if (!ca_file_check_if_is_ca_id(ca_id)) { dialog_error(_("The given CA id is not valid")); return -1; } // Validate certificate type if (g_ascii_strcasecmp(cert_type_str, "web") == 0 || g_ascii_strcasecmp(cert_type_str, "webserver") == 0) { is_web_server = TRUE; } else if (g_ascii_strcasecmp(cert_type_str, "email") == 0 || g_ascii_strcasecmp(cert_type_str, "emailserver") == 0) { is_web_server = FALSE; } else { dialog_error(_("Certificate type must be 'web' or 'email'")); return -1; } // Validate server name if (!server_name || strlen(server_name) == 0) { dialog_error(_("Server name cannot be empty")); return -1; } printf(_("Creating %s certificate for: %s\n"), is_web_server ? _("web server") : _("email server"), server_name); // Create CSR creation_data = g_new0(TlsCreationData, 1); creation_data->key_type = 0; // RSA creation_data->key_bitlength = 2048; creation_data->country = g_strdup(""); creation_data->state = g_strdup(""); creation_data->city = g_strdup(""); creation_data->org = g_strdup(""); creation_data->ou = g_strdup(""); creation_data->cn = g_strdup(server_name); creation_data->emailAddress = NULL; creation_data->parent_ca_id_str = g_strdup_printf("'%" G_GUINT64_FORMAT "'", ca_id); // Apply CA field inheritance GHashTable *policy_table = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free); ca_file_foreach_policy(__cli_addservercert_collect_policy_cb, ca_id, policy_table); // Get CA certificate fields for inheritance gchar *ca_pem = ca_file_get_public_pem_from_id(CA_FILE_ELEMENT_TYPE_CERT, ca_id); if (ca_pem) { TlsCert *ca_cert = tls_parse_cert_pem(ca_pem); g_free(ca_pem); if (ca_cert) { gchar *strvalue; gint inherit_value; // Apply inheritance for each field strvalue = (gchar *)g_hash_table_lookup(policy_table, "C_INHERIT"); inherit_value = strvalue ? atoi(strvalue) : 0; if (inherit_value && ca_cert->c) { g_free(creation_data->country); creation_data->country = g_strdup(ca_cert->c); } strvalue = (gchar *)g_hash_table_lookup(policy_table, "ST_INHERIT"); inherit_value = strvalue ? atoi(strvalue) : 0; if (inherit_value && ca_cert->st) { g_free(creation_data->state); creation_data->state = g_strdup(ca_cert->st); } strvalue = (gchar *)g_hash_table_lookup(policy_table, "L_INHERIT"); inherit_value = strvalue ? atoi(strvalue) : 0; if (inherit_value && ca_cert->l) { g_free(creation_data->city); creation_data->city = g_strdup(ca_cert->l); } strvalue = (gchar *)g_hash_table_lookup(policy_table, "O_INHERIT"); inherit_value = strvalue ? atoi(strvalue) : 0; if (inherit_value && ca_cert->o) { g_free(creation_data->org); creation_data->org = g_strdup(ca_cert->o); } strvalue = (gchar *)g_hash_table_lookup(policy_table, "OU_INHERIT"); inherit_value = strvalue ? atoi(strvalue) : 0; if (inherit_value && ca_cert->ou) { g_free(creation_data->ou); creation_data->ou = g_strdup(ca_cert->ou); } tls_cert_free(ca_cert); } } g_hash_table_destroy(policy_table); // Generate RSA key pair error_message = tls_generate_rsa_keys(creation_data, &private_key, &csr_key); if (error_message) { printf(_("Error: Key generation failed: %s\n"), error_message); tls_creation_data_free(creation_data); return -1; } // Generate CSR error_message = tls_generate_csr(creation_data, csr_key, &certificate_sign_request); if (error_message) { printf(_("Error: CSR generation failed: %s\n"), error_message); g_free(private_key); tls_creation_data_free(creation_data); return -1; } // Parse CSR tlscsr = tls_parse_csr_pem(certificate_sign_request); if (!tlscsr) { printf(_("Error: Failed to parse generated CSR\n")); g_free(private_key); g_free(certificate_sign_request); tls_creation_data_free(creation_data); return -1; } // Save CSR to database error_message = ca_file_insert_csr(private_key, certificate_sign_request, creation_data->parent_ca_id_str, &csr_id); if (error_message) { printf(_("Error: Failed to save CSR: %s\n"), error_message); g_free(error_message); tls_csr_free(tlscsr); g_free(private_key); g_free(certificate_sign_request); tls_creation_data_free(creation_data); return -1; } tls_csr_free(tlscsr); g_free(private_key); g_free(certificate_sign_request); tls_creation_data_free(creation_data); printf(_("CSR created with ID: %" G_GUINT64_FORMAT "\n"), csr_id); // Prepare certificate creation data cert_creation_data = g_new0(TlsCertCreationData, 1); cert_creation_data->key_months_before_expiration = 12; // 1 year default cert_creation_data->ca = FALSE; // Not a CA certificate cert_creation_data->crl_signing = FALSE; cert_creation_data->digital_signature = TRUE; cert_creation_data->key_encipherment = TRUE; // Set certificate usage based on type if (is_web_server) { cert_creation_data->web_server = TRUE; cert_creation_data->web_client = FALSE; cert_creation_data->email_protection = FALSE; } else { cert_creation_data->web_server = TRUE; cert_creation_data->web_client = TRUE; cert_creation_data->email_protection = TRUE; } // Sign the CSR error_message = (gchar *)new_cert_sign_csr(csr_id, ca_id, cert_creation_data); if (error_message) { printf(_("Error: Failed to sign certificate: %s\n"), error_message); g_free(cert_creation_data); return -1; } g_free(cert_creation_data); printf(_("Certificate generated successfully for: %s\n"), server_name); printf(_("Certificate type: %s\n"), is_web_server ? _("Web Server") : _("Email Server")); return 0; } /* ------------------------------------------------------------------ */ /* Renew, exportchain, revokemany, deletemany — CLI parity for the */ /* GUI features added in #49 / #50 / #52 / #54. */ /* ------------------------------------------------------------------ */ int ca_cli_callback_renew (int argc, char **argv) { if (argc < 2) { dialog_error (_("Usage: renewcert ")); return -1; } guint64 id = atoll (argv[1]); if (! ca_file_check_if_is_cert_id (id)) { dialog_error (_("The given certificate id is not valid")); return -1; } if (ca_file_check_if_is_ca_id (id)) { dialog_error (_("CA certificates cannot be renewed. A renewed CA " "would have a different key, so certificates " "previously signed by the old CA would no longer " "chain to it.")); return -1; } if (! dialog_ask_for_confirmation ( _("gnoMint will issue a new certificate with the same subject " "and SAN as this one, signed by the same CA, with a fresh " "keypair. The old certificate stays in place."), _("Renew? [Yes]/No "), TRUE)) { printf (_("Operation cancelled.\n")); return 0; } guint64 new_id = 0; gchar *err = cert_renewal_renew (id, &new_id); if (err) { dialog_error (err); g_free (err); return -1; } printf (_("Certificate renewed. New certificate id: %" G_GUINT64_FORMAT "\n"), new_id); return 0; } int ca_cli_callback_exportchain (int argc, char **argv) { if (argc < 3) { dialog_error (_("Usage: exportchain ")); return -1; } guint64 id = atoll (argv[1]); if (! ca_file_check_if_is_cert_id (id)) { dialog_error (_("The given certificate id is not valid")); return -1; } gchar *chain = ca_file_get_chain_pem_from_id (id); if (!chain || !*chain) { g_free (chain); dialog_error (_("Cannot build chain PEM for that certificate.")); return -1; } GError *gerr = NULL; if (! g_file_set_contents (argv[2], chain, -1, &gerr)) { dialog_error (gerr ? gerr->message : _("Cannot write chain file.")); g_clear_error (&gerr); g_free (chain); return -1; } g_free (chain); printf (_("Full chain (leaf → root) written to %s\n"), argv[2]); return 0; } int ca_cli_callback_revokemany (int argc, char **argv) { if (argc < 2) { dialog_error (_("Usage: revokemany [cert-id ...]")); return -1; } GSList *ids = NULL; for (int i = 1; i < argc; i++) { guint64 id = atoll (argv[i]); if (id != 0) ids = g_slist_prepend (ids, GUINT_TO_POINTER ((guint) id)); } gchar *err = NULL; gint done = ca_bulk_revoke_ids (ids, &err); g_slist_free (ids); if (err) { dialog_error (err); g_free (err); } printf (ngettext ("%d certificate revoked.\n", "%d certificates revoked.\n", done), done); return 0; } int ca_cli_callback_deletemany (int argc, char **argv) { if (argc < 2) { dialog_error (_("Usage: deletemany [csr-id ...]")); return -1; } GSList *ids = NULL; for (int i = 1; i < argc; i++) { guint64 id = atoll (argv[i]); if (id != 0) ids = g_slist_prepend (ids, GUINT_TO_POINTER ((guint) id)); } gchar *err = NULL; gint done = ca_bulk_delete_csr_ids (ids, &err); g_slist_free (ids); if (err) { dialog_error (err); g_free (err); } printf (ngettext ("%d CSR deleted.\n", "%d CSRs deleted.\n", done), done); return 0; } /* ------------------------------------------------------------------ */ /* search — list certs/CSRs whose subject or serial matches (#53) */ /* ------------------------------------------------------------------ */ typedef struct { gchar *needle_lower; gint matches; } CliSearchCtx; static int __ca_cli_search_cert (void *pArg, int argc, char **argv, char **columnNames) { CliSearchCtx *ctx = (CliSearchCtx *) pArg; if (argc <= CA_FILE_CERT_COLUMN_SERIAL) return 0; const gchar *subj = argv[CA_FILE_CERT_COLUMN_SUBJECT]; const gchar *ser = argv[CA_FILE_CERT_COLUMN_SERIAL]; gboolean hit = FALSE; if (subj) { gchar *low = g_utf8_strdown (subj, -1); if (strstr (low, ctx->needle_lower)) hit = TRUE; g_free (low); } if (!hit && ser && strstr (ser, ctx->needle_lower)) hit = TRUE; if (hit) { printf ("%s\t%s\t%s\n", argv[CA_FILE_CERT_COLUMN_ID] ? argv[CA_FILE_CERT_COLUMN_ID] : "", argv[CA_FILE_CERT_COLUMN_SERIAL] ? argv[CA_FILE_CERT_COLUMN_SERIAL] : "", argv[CA_FILE_CERT_COLUMN_SUBJECT] ? argv[CA_FILE_CERT_COLUMN_SUBJECT] : ""); ctx->matches++; } return 0; } static int __ca_cli_search_csr (void *pArg, int argc, char **argv, char **columnNames) { CliSearchCtx *ctx = (CliSearchCtx *) pArg; if (argc <= CA_FILE_CSR_COLUMN_SUBJECT) return 0; const gchar *subj = argv[CA_FILE_CSR_COLUMN_SUBJECT]; if (!subj) return 0; gchar *low = g_utf8_strdown (subj, -1); if (strstr (low, ctx->needle_lower)) { printf ("CSR\t%s\t%s\n", argv[CA_FILE_CSR_COLUMN_ID] ? argv[CA_FILE_CSR_COLUMN_ID] : "", subj); ctx->matches++; } g_free (low); return 0; } int ca_cli_callback_search (int argc, char **argv) { if (argc < 2 || !argv[1] || !*argv[1]) { dialog_error (_("Usage: search ")); return -1; } CliSearchCtx ctx; ctx.needle_lower = g_utf8_strdown (argv[1], -1); ctx.matches = 0; printf (_("Matches (id\tserial\tsubject):\n")); ca_file_foreach_crt (__ca_cli_search_cert, FALSE, &ctx); ca_file_foreach_csr (__ca_cli_search_csr, &ctx); printf (ngettext ("%d match.\n", "%d matches.\n", ctx.matches), ctx.matches); g_free (ctx.needle_lower); return 0; } /* ------------------------------------------------------------------ */ /* diff — side-by-side comparison of two certificates (#55) */ /* ------------------------------------------------------------------ */ #include "cert_diff.h" static gchar * __cli_load_pem_from_arg (const gchar *arg, gchar **err_out) { /* If `arg` is a numeric id, look up in DB. Otherwise treat as a * filesystem path to a PEM file. */ gchar *end = NULL; guint64 id = g_ascii_strtoull (arg, &end, 10); if (end && *end == '\0' && id > 0) { if (! ca_file_check_if_is_cert_id (id)) { *err_out = g_strdup_printf ( _("'%s' is not a certificate id in this database."), arg); return NULL; } gchar *pem = ca_file_get_public_pem_from_id ( CA_FILE_ELEMENT_TYPE_CERT, id); if (!pem) *err_out = g_strdup_printf ( _("Cannot read PEM for cert id %s."), arg); return pem; } gchar *contents = NULL; GError *gerr = NULL; if (! g_file_get_contents (arg, &contents, NULL, &gerr)) { *err_out = g_strdup (gerr ? gerr->message : _("Cannot read file.")); g_clear_error (&gerr); return NULL; } return contents; } int ca_cli_callback_diff (int argc, char **argv) { if (argc < 3) { dialog_error (_("Usage: diff ")); return -1; } gchar *err = NULL; gchar *left = __cli_load_pem_from_arg (argv[1], &err); if (!left) { dialog_error (err); g_free (err); return -1; } gchar *right = __cli_load_pem_from_arg (argv[2], &err); if (!right) { dialog_error (err); g_free (err); g_free (left); return -1; } CertDiff *d = cert_diff_new (left, right); g_free (left); g_free (right); gint width = 30; printf ("%-*s %-40s %-40s\n", width, _("Field"), argv[1], argv[2]); printf ("%-*s %-40s %-40s\n", width, "-----", "----", "-----"); for (GList *l = d->fields; l; l = l->next) { CertDiffField *f = (CertDiffField *) l->data; const gchar *marker = f->differs ? "*" : " "; printf ("%s %-*s %-40s %-40s\n", marker, width - 2, f->field_name, f->left ? f->left : "—", f->right ? f->right : "—"); } gint n = cert_diff_count_differences (d); printf (ngettext ("\n%d field differs.\n", "\n%d fields differ.\n", n), n); cert_diff_free (d); return 0; } gnomint-1.6.4/src/country_table.c0000644000000000000000000005361015212761266015555 0ustar00rootroot// gnoMint: a graphical interface for managing a certification authority // Copyright (C) 2006-2009 David Marín Carreño // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #include #include #include #include #include #include #include #define D_(x) dgettext ("iso_3166", x) typedef struct { char * name; char * code; } CountryItem; #define NUMBER_OF_COUNTRIES 244 CountryItem country_table[NUMBER_OF_COUNTRIES]; static int country_table_comp_countries(const void *m1, const void *m2) { CountryItem *mi1 = (CountryItem *) m1; CountryItem *mi2 = (CountryItem *) m2; return g_ascii_strcasecmp (mi1->name, mi2->name); } void country_table_populate() { int i = 0; country_table[i].name = D_("Afghanistan"); country_table[i++].code = "AF"; country_table[i].name = D_("Åland Islands"); country_table[i++].code = "AX"; country_table[i].name = D_("Albania"); country_table[i++].code = "AL"; country_table[i].name = D_("Algeria"); country_table[i++].code = "DZ"; country_table[i].name = D_("American Samoa"); country_table[i++].code = "AS"; country_table[i].name = D_("Andorra"); country_table[i++].code = "AD"; country_table[i].name = D_("Angola"); country_table[i++].code = "AO"; country_table[i].name = D_("Anguilla"); country_table[i++].code = "AI"; country_table[i].name = D_("Antarctica"); country_table[i++].code = "AQ"; country_table[i].name = D_("Antigua and Barbuda"); country_table[i++].code = "AG"; country_table[i].name = D_("Argentina"); country_table[i++].code = "AR"; country_table[i].name = D_("Armenia"); country_table[i++].code = "AM"; country_table[i].name = D_("Aruba"); country_table[i++].code = "AW"; country_table[i].name = D_("Australia"); country_table[i++].code = "AU"; country_table[i].name = D_("Austria"); country_table[i++].code = "AT"; country_table[i].name = D_("Azerbaijan"); country_table[i++].code = "AZ"; country_table[i].name = D_("Bahamas"); country_table[i++].code = "BS"; country_table[i].name = D_("Bahrain"); country_table[i++].code = "BH"; country_table[i].name = D_("Bangladesh"); country_table[i++].code = "BD"; country_table[i].name = D_("Barbados"); country_table[i++].code = "BB"; country_table[i].name = D_("Belarus"); country_table[i++].code = "BY"; country_table[i].name = D_("Belgium"); country_table[i++].code = "BE"; country_table[i].name = D_("Belize"); country_table[i++].code = "BZ"; country_table[i].name = D_("Benin"); country_table[i++].code = "BJ"; country_table[i].name = D_("Bermuda"); country_table[i++].code = "BM"; country_table[i].name = D_("Bhutan"); country_table[i++].code = "BT"; country_table[i].name = D_("Bolivia"); country_table[i++].code = "BO"; country_table[i].name = D_("Bosnia and Herzegovina"); country_table[i++].code = "BA"; country_table[i].name = D_("Botswana"); country_table[i++].code = "BW"; country_table[i].name = D_("Bouvet Island"); country_table[i++].code = "BV"; country_table[i].name = D_("Brazil"); country_table[i++].code = "BR"; country_table[i].name = D_("British Indian Ocean Territory"); country_table[i++].code = "IO"; country_table[i].name = D_("Brunei Darussalam"); country_table[i++].code = "BN"; country_table[i].name = D_("Bulgaria"); country_table[i++].code = "BG"; country_table[i].name = D_("Burkina Faso"); country_table[i++].code = "BF"; country_table[i].name = D_("Burundi"); country_table[i++].code = "BI"; country_table[i].name = D_("Cambodia"); country_table[i++].code = "KH"; country_table[i].name = D_("Cameroon"); country_table[i++].code = "CM"; country_table[i].name = D_("Canada"); country_table[i++].code = "CA"; country_table[i].name = D_("Cape Verde"); country_table[i++].code = "CV"; country_table[i].name = D_("Cayman Islands"); country_table[i++].code = "KY"; country_table[i].name = D_("Central African Republic"); country_table[i++].code = "CF"; country_table[i].name = D_("Chad"); country_table[i++].code = "TD"; country_table[i].name = D_("Chile"); country_table[i++].code = "CL"; country_table[i].name = D_("China"); country_table[i++].code = "CN"; country_table[i].name = D_("Christmas Island"); country_table[i++].code = "CX"; country_table[i].name = D_("Cocos (Keeling) Islands"); country_table[i++].code = "CC"; country_table[i].name = D_("Colombia"); country_table[i++].code = "CO"; country_table[i].name = D_("Comoros"); country_table[i++].code = "KM"; country_table[i].name = D_("Congo"); country_table[i++].code = "CG"; country_table[i].name = D_("Congo, The Democratic Republic of the"); country_table[i++].code = "CD"; country_table[i].name = D_("Cook Islands"); country_table[i++].code = "CK"; country_table[i].name = D_("Costa Rica"); country_table[i++].code = "CR"; country_table[i].name = D_("Côte d\'Ivoire"); country_table[i++].code = "CI"; country_table[i].name = D_("Croatia"); country_table[i++].code = "HR"; country_table[i].name = D_("Cuba"); country_table[i++].code = "CU"; country_table[i].name = D_("Cyprus"); country_table[i++].code = "CY"; country_table[i].name = D_("Czech Republic"); country_table[i++].code = "CZ"; country_table[i].name = D_("Denmark"); country_table[i++].code = "DK"; country_table[i].name = D_("Djibouti"); country_table[i++].code = "DJ"; country_table[i].name = D_("Dominica"); country_table[i++].code = "DM"; country_table[i].name = D_("Dominican Republic"); country_table[i++].code = "DO"; country_table[i].name = D_("Ecuador"); country_table[i++].code = "EC"; country_table[i].name = D_("Egypt"); country_table[i++].code = "EG"; country_table[i].name = D_("El Salvador"); country_table[i++].code = "SV"; country_table[i].name = D_("Equatorial Guinea"); country_table[i++].code = "GQ"; country_table[i].name = D_("Eritrea"); country_table[i++].code = "ER"; country_table[i].name = D_("Estonia"); country_table[i++].code = "EE"; country_table[i].name = D_("Ethiopia"); country_table[i++].code = "ET"; country_table[i].name = D_("Falkland Islands (Malvinas)"); country_table[i++].code = "FK"; country_table[i].name = D_("Faroe Islands"); country_table[i++].code = "FO"; country_table[i].name = D_("Fiji"); country_table[i++].code = "FJ"; country_table[i].name = D_("Finland"); country_table[i++].code = "FI"; country_table[i].name = D_("France"); country_table[i++].code = "FR"; country_table[i].name = D_("French Guiana"); country_table[i++].code = "GF"; country_table[i].name = D_("French Polynesia"); country_table[i++].code = "PF"; country_table[i].name = D_("French Southern Territories"); country_table[i++].code = "TF"; country_table[i].name = D_("Gabon"); country_table[i++].code = "GA"; country_table[i].name = D_("Gambia"); country_table[i++].code = "GM"; country_table[i].name = D_("Georgia"); country_table[i++].code = "GE"; country_table[i].name = D_("Germany"); country_table[i++].code = "DE"; country_table[i].name = D_("Ghana"); country_table[i++].code = "GH"; country_table[i].name = D_("Gibraltar"); country_table[i++].code = "GI"; country_table[i].name = D_("Greece"); country_table[i++].code = "GR"; country_table[i].name = D_("Greenland"); country_table[i++].code = "GL"; country_table[i].name = D_("Grenada"); country_table[i++].code = "GD"; country_table[i].name = D_("Guadeloupe"); country_table[i++].code = "GP"; country_table[i].name = D_("Guam"); country_table[i++].code = "GU"; country_table[i].name = D_("Guatemala"); country_table[i++].code = "GT"; country_table[i].name = D_("Guernsey"); country_table[i++].code = "GG"; country_table[i].name = D_("Guinea"); country_table[i++].code = "GN"; country_table[i].name = D_("Guinea-Bissau"); country_table[i++].code = "GW"; country_table[i].name = D_("Guyana"); country_table[i++].code = "GY"; country_table[i].name = D_("Haiti"); country_table[i++].code = "HT"; country_table[i].name = D_("Heard Island and Mcdonald Islands"); country_table[i++].code = "HM"; country_table[i].name = D_("Holy See (Vatican City State)"); country_table[i++].code = "VA"; country_table[i].name = D_("Honduras"); country_table[i++].code = "HN"; country_table[i].name = D_("Hong Kong"); country_table[i++].code = "HK"; country_table[i].name = D_("Hungary"); country_table[i++].code = "HU"; country_table[i].name = D_("Iceland"); country_table[i++].code = "IS"; country_table[i].name = D_("India"); country_table[i++].code = "IN"; country_table[i].name = D_("Indonesia"); country_table[i++].code = "ID"; country_table[i].name = D_("Iran, Islamic Republic of"); country_table[i++].code = "IR"; country_table[i].name = D_("Iraq"); country_table[i++].code = "IQ"; country_table[i].name = D_("Ireland"); country_table[i++].code = "IE"; country_table[i].name = D_("Isle of Man"); country_table[i++].code = "IM"; country_table[i].name = D_("Israel"); country_table[i++].code = "IL"; country_table[i].name = D_("Italy"); country_table[i++].code = "IT"; country_table[i].name = D_("Jamaica"); country_table[i++].code = "JM"; country_table[i].name = D_("Japan"); country_table[i++].code = "JP"; country_table[i].name = D_("Jersey"); country_table[i++].code = "JE"; country_table[i].name = D_("Jordan"); country_table[i++].code = "JO"; country_table[i].name = D_("Kazakhstan"); country_table[i++].code = "KZ"; country_table[i].name = D_("Kenya"); country_table[i++].code = "KE"; country_table[i].name = D_("Kiribati"); country_table[i++].code = "KI"; country_table[i].name = D_("Korea, Democratic People\'s Republic of"); country_table[i++].code = "KP"; country_table[i].name = D_("Korea, Republic of"); country_table[i++].code = "KR"; country_table[i].name = D_("Kuwait"); country_table[i++].code = "KW"; country_table[i].name = D_("Kyrgyzstan"); country_table[i++].code = "KG"; country_table[i].name = D_("Lao People\'s Democratic Republic"); country_table[i++].code = "LA"; country_table[i].name = D_("Latvia"); country_table[i++].code = "LV"; country_table[i].name = D_("Lebanon"); country_table[i++].code = "LB"; country_table[i].name = D_("Lesotho"); country_table[i++].code = "LS"; country_table[i].name = D_("Liberia"); country_table[i++].code = "LR"; country_table[i].name = D_("Libyan Arab Jamahiriya"); country_table[i++].code = "LY"; country_table[i].name = D_("Liechtenstein"); country_table[i++].code = "LI"; country_table[i].name = D_("Lithuania"); country_table[i++].code = "LT"; country_table[i].name = D_("Luxembourg"); country_table[i++].code = "LU"; country_table[i].name = D_("Macao"); country_table[i++].code = "MO"; country_table[i].name = D_("Macedonia, Republic of"); country_table[i++].code = "MK"; country_table[i].name = D_("Madagascar"); country_table[i++].code = "MG"; country_table[i].name = D_("Malawi"); country_table[i++].code = "MW"; country_table[i].name = D_("Malaysia"); country_table[i++].code = "MY"; country_table[i].name = D_("Maldives"); country_table[i++].code = "MV"; country_table[i].name = D_("Mali"); country_table[i++].code = "ML"; country_table[i].name = D_("Malta"); country_table[i++].code = "MT"; country_table[i].name = D_("Marshall Islands"); country_table[i++].code = "MH"; country_table[i].name = D_("Martinique"); country_table[i++].code = "MQ"; country_table[i].name = D_("Mauritania"); country_table[i++].code = "MR"; country_table[i].name = D_("Mauritius"); country_table[i++].code = "MU"; country_table[i].name = D_("Mayotte"); country_table[i++].code = "YT"; country_table[i].name = D_("Mexico"); country_table[i++].code = "MX"; country_table[i].name = D_("Micronesia, Federated States of"); country_table[i++].code = "FM"; country_table[i].name = D_("Moldova, Republic of"); country_table[i++].code = "MD"; country_table[i].name = D_("Monaco"); country_table[i++].code = "MC"; country_table[i].name = D_("Mongolia"); country_table[i++].code = "MN"; country_table[i].name = D_("Montenegro"); country_table[i++].code = "ME"; country_table[i].name = D_("Montserrat"); country_table[i++].code = "MS"; country_table[i].name = D_("Morocco"); country_table[i++].code = "MA"; country_table[i].name = D_("Mozambique"); country_table[i++].code = "MZ"; country_table[i].name = D_("Myanmar"); country_table[i++].code = "MM"; country_table[i].name = D_("Namibia"); country_table[i++].code = "NA"; country_table[i].name = D_("Nauru"); country_table[i++].code = "NR"; country_table[i].name = D_("Nepal"); country_table[i++].code = "NP"; country_table[i].name = D_("Netherlands"); country_table[i++].code = "NL"; country_table[i].name = D_("Netherlands Antilles"); country_table[i++].code = "AN"; country_table[i].name = D_("New Caledonia"); country_table[i++].code = "NC"; country_table[i].name = D_("New Zealand"); country_table[i++].code = "NZ"; country_table[i].name = D_("Nicaragua"); country_table[i++].code = "NI"; country_table[i].name = D_("Niger"); country_table[i++].code = "NE"; country_table[i].name = D_("Nigeria"); country_table[i++].code = "NG"; country_table[i].name = D_("Niue"); country_table[i++].code = "NU"; country_table[i].name = D_("Norfolk Island"); country_table[i++].code = "NF"; country_table[i].name = D_("Northern Mariana Islands"); country_table[i++].code = "MP"; country_table[i].name = D_("Norway"); country_table[i++].code = "NO"; country_table[i].name = D_("Oman"); country_table[i++].code = "OM"; country_table[i].name = D_("Pakistan"); country_table[i++].code = "PK"; country_table[i].name = D_("Palau"); country_table[i++].code = "PW"; country_table[i].name = D_("Palestinian Territory, Occupied"); country_table[i++].code = "PS"; country_table[i].name = D_("Panama"); country_table[i++].code = "PA"; country_table[i].name = D_("Papua New Guinea"); country_table[i++].code = "PG"; country_table[i].name = D_("Paraguay"); country_table[i++].code = "PY"; country_table[i].name = D_("Peru"); country_table[i++].code = "PE"; country_table[i].name = D_("Philippines"); country_table[i++].code = "PH"; country_table[i].name = D_("Pitcairn"); country_table[i++].code = "PN"; country_table[i].name = D_("Poland"); country_table[i++].code = "PL"; country_table[i].name = D_("Portugal"); country_table[i++].code = "PT"; country_table[i].name = D_("Puerto Rico"); country_table[i++].code = "PR"; country_table[i].name = D_("Qatar"); country_table[i++].code = "QA"; country_table[i].name = D_("Reunion"); country_table[i++].code = "RE"; country_table[i].name = D_("Romania"); country_table[i++].code = "RO"; country_table[i].name = D_("Russian Federation"); country_table[i++].code = "RU"; country_table[i].name = D_("Rwanda"); country_table[i++].code = "RW"; country_table[i].name = D_("Saint Helena"); country_table[i++].code = "SH"; country_table[i].name = D_("Saint Kitts and Nevis"); country_table[i++].code = "KN"; country_table[i].name = D_("Saint Lucia"); country_table[i++].code = "LC"; country_table[i].name = D_("Saint Pierre and Miquelon"); country_table[i++].code = "PM"; country_table[i].name = D_("Saint Vincent and the Grenadines"); country_table[i++].code = "VC"; country_table[i].name = D_("Samoa"); country_table[i++].code = "WS"; country_table[i].name = D_("San Marino"); country_table[i++].code = "SM"; country_table[i].name = D_("Sao Tome and Principe"); country_table[i++].code = "ST"; country_table[i].name = D_("Saudi Arabia"); country_table[i++].code = "SA"; country_table[i].name = D_("Senegal"); country_table[i++].code = "SN"; country_table[i].name = D_("Serbia"); country_table[i++].code = "RS"; country_table[i].name = D_("Seychelles"); country_table[i++].code = "SC"; country_table[i].name = D_("Sierra Leone"); country_table[i++].code = "SL"; country_table[i].name = D_("Singapore"); country_table[i++].code = "SG"; country_table[i].name = D_("Slovakia"); country_table[i++].code = "SK"; country_table[i].name = D_("Slovenia"); country_table[i++].code = "SI"; country_table[i].name = D_("Solomon Islands"); country_table[i++].code = "SB"; country_table[i].name = D_("Somalia"); country_table[i++].code = "SO"; country_table[i].name = D_("South Africa"); country_table[i++].code = "ZA"; country_table[i].name = D_("South Georgia and the South Sandwich Islands"); country_table[i++].code = "GS"; country_table[i].name = D_("Spain"); country_table[i++].code = "ES"; country_table[i].name = D_("Sri Lanka"); country_table[i++].code = "LK"; country_table[i].name = D_("Sudan"); country_table[i++].code = "SD"; country_table[i].name = D_("Suriname"); country_table[i++].code = "SR"; country_table[i].name = D_("Svalbard and Jan Mayen"); country_table[i++].code = "SJ"; country_table[i].name = D_("Swaziland"); country_table[i++].code = "SZ"; country_table[i].name = D_("Sweden"); country_table[i++].code = "SE"; country_table[i].name = D_("Switzerland"); country_table[i++].code = "CH"; country_table[i].name = D_("Syrian Arab Republic"); country_table[i++].code = "SY"; country_table[i].name = D_("Taiwan"); country_table[i++].code = "TW"; country_table[i].name = D_("Tajikistan"); country_table[i++].code = "TJ"; country_table[i].name = D_("Tanzania, United Republic of"); country_table[i++].code = "TZ"; country_table[i].name = D_("Thailand"); country_table[i++].code = "TH"; country_table[i].name = D_("Timor-Leste"); country_table[i++].code = "TL"; country_table[i].name = D_("Togo"); country_table[i++].code = "TG"; country_table[i].name = D_("Tokelau"); country_table[i++].code = "TK"; country_table[i].name = D_("Tonga"); country_table[i++].code = "TO"; country_table[i].name = D_("Trinidad and Tobago"); country_table[i++].code = "TT"; country_table[i].name = D_("Tunisia"); country_table[i++].code = "TN"; country_table[i].name = D_("Turkey"); country_table[i++].code = "TR"; country_table[i].name = D_("Turkmenistan"); country_table[i++].code = "TM"; country_table[i].name = D_("Turks and Caicos Islands"); country_table[i++].code = "TC"; country_table[i].name = D_("Tuvalu"); country_table[i++].code = "TV"; country_table[i].name = D_("Uganda"); country_table[i++].code = "UG"; country_table[i].name = D_("Ukraine"); country_table[i++].code = "UA"; country_table[i].name = D_("United Arab Emirates"); country_table[i++].code = "AE"; country_table[i].name = D_("United Kingdom"); country_table[i++].code = "GB"; country_table[i].name = D_("United States"); country_table[i++].code = "US"; country_table[i].name = D_("United States Minor Outlying Islands"); country_table[i++].code = "UM"; country_table[i].name = D_("Uruguay"); country_table[i++].code = "UY"; country_table[i].name = D_("Uzbekistan"); country_table[i++].code = "UZ"; country_table[i].name = D_("Vanuatu"); country_table[i++].code = "VU"; country_table[i].name = D_("Venezuela"); country_table[i++].code = "VE"; country_table[i].name = D_("Vietnam"); country_table[i++].code = "VN"; country_table[i].name = D_("Virgin Islands, British"); country_table[i++].code = "VG"; country_table[i].name = D_("Virgin Islands, U.S."); country_table[i++].code = "VI"; country_table[i].name = D_("Wallis and Futuna"); country_table[i++].code = "WF"; country_table[i].name = D_("Western Sahara"); country_table[i++].code = "EH"; country_table[i].name = D_("Yemen"); country_table[i++].code = "YE"; country_table[i].name = D_("Zambia"); country_table[i++].code = "ZM"; country_table[i].name = D_("Zimbabwe"); country_table[i++].code = "ZW"; qsort (country_table, NUMBER_OF_COUNTRIES, sizeof(CountryItem), country_table_comp_countries); } void country_table_populate_dropdown(GtkDropDown *dropdown) { int i = 0; GtkStringList *string_list; const gchar * const empty_strv[] = { NULL }; country_table_populate(); string_list = gtk_string_list_new (empty_strv); for (i = 0; i < NUMBER_OF_COUNTRIES; i++) { gchar *display = g_strdup_printf ("%s (%s)", country_table[i].name, country_table[i].code); gtk_string_list_append (string_list, display); g_free (display); } gtk_drop_down_set_model (dropdown, G_LIST_MODEL (string_list)); gtk_drop_down_set_selected (dropdown, GTK_INVALID_LIST_POSITION); GtkExpression *expr = gtk_property_expression_new ( GTK_TYPE_STRING_OBJECT, NULL, "string"); gtk_drop_down_set_expression (dropdown, expr); gtk_expression_unref (expr); g_object_unref (string_list); } const gchar * country_table_get_code(GtkDropDown *dropdown) { guint selected = gtk_drop_down_get_selected (dropdown); GtkStringObject *obj; const gchar *str; gsize len; if (selected == GTK_INVALID_LIST_POSITION) return NULL; obj = GTK_STRING_OBJECT (gtk_drop_down_get_selected_item (dropdown)); if (!obj) return NULL; str = gtk_string_object_get_string (obj); len = strlen (str); /* Display format is "Country Name (CC)" -- code is the 2 chars before ')' */ if (len >= 4 && str[len - 1] == ')') return str + len - 3; return NULL; } guint country_table_find_code(GtkDropDown *dropdown, const gchar *code) { GListModel *model = gtk_drop_down_get_model (dropdown); guint n, i; if (!model || !code) return GTK_INVALID_LIST_POSITION; n = g_list_model_get_n_items (model); for (i = 0; i < n; i++) { GtkStringObject *obj = GTK_STRING_OBJECT (g_list_model_get_item (model, i)); const gchar *str = gtk_string_object_get_string (obj); gsize len = strlen (str); /* Match the 2-letter code inside trailing parens */ if (len >= 4 && str[len - 1] == ')' && str[len - 4] == '(' && str[len - 3] == code[0] && str[len - 2] == code[1]) { g_object_unref (obj); return i; } g_object_unref (obj); } return GTK_INVALID_LIST_POSITION; } gnomint-1.6.4/src/uint160.h0000644000000000000000000000354515212761266014120 0ustar00rootroot// gnoMint: a graphical interface for managing a certification authority // Copyright (C) 2006-2009 David Marín Carreño // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #ifndef _UINT160_H_ #define _UINT160_H_ #include typedef struct _UInt160 { guint64 value0; guint64 value1; guint32 value2; } UInt160; UInt160 * uint160_new(void); void uint160_assign (UInt160 *var, guint64 new_value); gboolean uint160_assign_hexstr (UInt160 *var, const gchar *new_value); void uint160_add (UInt160 *var, guint64 new_value); void uint160_inc (UInt160 *var); void uint160_dec (UInt160 *var); void uint160_shift (UInt160 *var, guint positions); gboolean uint160_write (const UInt160 *var, guchar *buffer, gsize * max_size); gboolean uint160_read (UInt160 *var, guchar *buffer, gsize size); gboolean uint160_write_escaped (const UInt160 *var, gchar *buffer, gsize * max_size); gboolean uint160_read_escaped (UInt160 *var, gchar *buffer, gsize size); gboolean uint160_read_escaped_old_format (UInt160 *var, gchar *buffer, gsize size); gchar * uint160_strdup_printf (const UInt160 *var); void uint160_free (UInt160 *var); #endif gnomint-1.6.4/src/new_req_window.c0000644000000000000000000005474515212761266015744 0ustar00rootroot// gnoMint: a graphical interface for managing a certification authority // Copyright (C) 2006-2009 David Marín Carreño // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #include #include #include #include #include #include #include #include "creation_process_window.h" #include "ca_file.h" #include "country_table.h" #include "tls.h" #include "pkey_manage.h" #include "new_req_window.h" #include "san_manager.h" #include "ca_selector.h" #include #include "dialog.h" GtkBuilder * new_req_window_gtkb = NULL; static GtkSingleSelection *new_req_ca_selection = NULL; static GListStore *new_req_ca_root_store = NULL; gboolean new_req_ca_id_valid = FALSE; guint64 new_req_ca_id; GtkWidget *san_manager_widget1 = NULL; /* (CA tree population and GtkColumnView setup is handled by * ca_selector_populate() and ca_selector_setup() in ca_selector.c.) */ G_MODULE_EXPORT void new_req_inherit_fields_toggled (GtkCheckButton *button, gpointer user_data) { GtkWidget *colview = GTK_WIDGET(gtk_builder_get_object(new_req_window_gtkb, "new_req_ca_treeview")); if (gtk_check_button_get_active (GTK_CHECK_BUTTON(gtk_builder_get_object(new_req_window_gtkb, "inherit_radiobutton")))) { /* Inherit -- enable the column view and select the first row. */ gtk_widget_set_sensitive (colview, TRUE); gtk_single_selection_set_can_unselect (new_req_ca_selection, FALSE); gtk_single_selection_set_selected (new_req_ca_selection, 0); } else { /* Don't inherit -- disable the column view and clear selection. */ gtk_widget_set_sensitive (colview, FALSE); gtk_single_selection_set_can_unselect (new_req_ca_selection, TRUE); gtk_single_selection_set_selected (new_req_ca_selection, GTK_INVALID_LIST_POSITION); } } G_MODULE_EXPORT void on_new_req_privkey_type_toggle (GtkCheckButton *button, gpointer user_data); void new_req_window_display() { GtkBuilder *san_builder; GtkWidget *alignment; gchar *ui_file; new_req_window_gtkb = gtk_builder_new(); ui_file = g_build_filename (PACKAGE_DATA_DIR, "gnomint", "new_req_window.ui", NULL); gtk_builder_add_from_file (new_req_window_gtkb, ui_file, NULL); g_free(ui_file); country_table_populate_dropdown(GTK_DROP_DOWN(gtk_builder_get_object(new_req_window_gtkb, "country_combobox1"))); /* Populate and set up CA selector (GtkColumnView). */ new_req_ca_root_store = ca_selector_populate (); new_req_ca_selection = ca_selector_setup ( GTK_COLUMN_VIEW (gtk_builder_get_object (new_req_window_gtkb, "new_req_ca_treeview")), new_req_ca_root_store, NULL); /* Process pending events so the GtkTreeListModel expands before * we try to select row 0 in the inherit toggled handler. */ while (g_main_context_pending (NULL)) g_main_context_iteration (NULL, FALSE); new_req_inherit_fields_toggled (GTK_CHECK_BUTTON(gtk_builder_get_object(new_req_window_gtkb, "inherit_radiobutton")), NULL); gtk_check_button_set_active (GTK_CHECK_BUTTON(gtk_builder_get_object(new_req_window_gtkb, "rsa_radiobutton1")), TRUE); gtk_spin_button_set_value (GTK_SPIN_BUTTON(gtk_builder_get_object(new_req_window_gtkb, "keylength_spinbutton1")), 2048); // Initialize SAN manager widget san_builder = gtk_builder_new(); ui_file = g_build_filename(PACKAGE_DATA_DIR, "gnomint", "san_manager_widget.ui", NULL); gtk_builder_add_from_file(san_builder, ui_file, NULL); g_free(ui_file); san_manager_widget1 = san_manager_create(san_builder, "san_manager_vbox"); if (san_manager_widget1) { alignment = GTK_WIDGET(gtk_builder_get_object(new_req_window_gtkb, "san_alignment1")); gtk_box_append(GTK_BOX(alignment), san_manager_widget1); gtk_widget_set_visible(san_manager_widget1, TRUE); } /* Connect signals explicitly (gtk_builder_connect_signals removed in GTK 4) */ GtkWidget *w; w = GTK_WIDGET(gtk_builder_get_object(new_req_window_gtkb, "rsa_radiobutton1")); if (w) g_signal_connect(w, "notify::active", G_CALLBACK(on_new_req_privkey_type_toggle), NULL); w = GTK_WIDGET(gtk_builder_get_object(new_req_window_gtkb, "dsa_radiobutton1")); if (w) g_signal_connect(w, "notify::active", G_CALLBACK(on_new_req_privkey_type_toggle), NULL); w = GTK_WIDGET(gtk_builder_get_object(new_req_window_gtkb, "ecdsa_radiobutton1")); if (w) g_signal_connect(w, "notify::active", G_CALLBACK(on_new_req_privkey_type_toggle), NULL); w = GTK_WIDGET(gtk_builder_get_object(new_req_window_gtkb, "eddsa_radiobutton1")); if (w) g_signal_connect(w, "notify::active", G_CALLBACK(on_new_req_privkey_type_toggle), NULL); w = GTK_WIDGET(gtk_builder_get_object(new_req_window_gtkb, "inherit_radiobutton")); if (w) g_signal_connect(w, "toggled", G_CALLBACK(new_req_inherit_fields_toggled), NULL); w = GTK_WIDGET(gtk_builder_get_object(new_req_window_gtkb, "manual_radiobutton")); if (w) g_signal_connect(w, "toggled", G_CALLBACK(new_req_inherit_fields_toggled), NULL); w = GTK_WIDGET(gtk_builder_get_object(new_req_window_gtkb, "cn_entry1")); if (w) g_signal_connect(w, "changed", G_CALLBACK(on_new_req_cn_entry_changed), NULL); w = GTK_WIDGET(gtk_builder_get_object(new_req_window_gtkb, "new_req_next1")); if (w) g_signal_connect(w, "clicked", G_CALLBACK(on_new_req_next1_clicked), NULL); w = GTK_WIDGET(gtk_builder_get_object(new_req_window_gtkb, "new_req_previous2")); if (w) g_signal_connect(w, "clicked", G_CALLBACK(on_new_req_previous2_clicked), NULL); w = GTK_WIDGET(gtk_builder_get_object(new_req_window_gtkb, "new_req_next2")); if (w) g_signal_connect(w, "clicked", G_CALLBACK(on_new_req_next2_clicked), NULL); w = GTK_WIDGET(gtk_builder_get_object(new_req_window_gtkb, "new_req_previous3")); if (w) g_signal_connect(w, "clicked", G_CALLBACK(on_new_req_previous3_clicked), NULL); w = GTK_WIDGET(gtk_builder_get_object(new_req_window_gtkb, "new_req_ca_commit2")); if (w) g_signal_connect(w, "clicked", G_CALLBACK(on_new_req_commit_clicked), NULL); w = GTK_WIDGET(gtk_builder_get_object(new_req_window_gtkb, "new_req_cancel1")); if (w) g_signal_connect(w, "clicked", G_CALLBACK(on_new_req_cancel_clicked), NULL); w = GTK_WIDGET(gtk_builder_get_object(new_req_window_gtkb, "new_req_cancel2")); if (w) g_signal_connect(w, "clicked", G_CALLBACK(on_new_req_cancel_clicked), NULL); w = GTK_WIDGET(gtk_builder_get_object(new_req_window_gtkb, "new_req_cancel3")); if (w) g_signal_connect(w, "clicked", G_CALLBACK(on_new_req_cancel_clicked), NULL); on_new_req_privkey_type_toggle (NULL, NULL); { static const char *bbox_ids[] = { "hbuttonbox13", "hbuttonbox10", "hbuttonbox11", NULL }; dialog_notebook_fix_tab_focus ( GTK_NOTEBOOK (gtk_builder_get_object (new_req_window_gtkb, "new_req_notebook")), bbox_ids, new_req_window_gtkb); } gtk_widget_set_visible ( GTK_WIDGET (gtk_builder_get_object (new_req_window_gtkb, "new_req_window")), TRUE); gtk_window_set_transient_for (GTK_WINDOW (gtk_builder_get_object (new_req_window_gtkb, "new_req_window")), dialog_get_main_window ()); gtk_window_present (GTK_WINDOW (gtk_builder_get_object (new_req_window_gtkb, "new_req_window"))); } void new_req_tab_activate (int tab_number) { GtkNotebook *notebook = GTK_NOTEBOOK(gtk_builder_get_object (new_req_window_gtkb, "new_req_notebook")); gtk_notebook_set_current_page (notebook, tab_number); } G_MODULE_EXPORT void on_new_req_privkey_type_toggle (GtkCheckButton *button, gpointer user_data) { GtkCheckButton *rsatoggle = GTK_CHECK_BUTTON(gtk_builder_get_object(new_req_window_gtkb, "rsa_radiobutton1")); GtkCheckButton *dsatoggle = GTK_CHECK_BUTTON(gtk_builder_get_object(new_req_window_gtkb, "dsa_radiobutton1")); GtkCheckButton *ecdsatoggle = GTK_CHECK_BUTTON(gtk_builder_get_object(new_req_window_gtkb, "ecdsa_radiobutton1")); GtkCheckButton *eddsatoggle = GTK_CHECK_BUTTON(gtk_builder_get_object(new_req_window_gtkb, "eddsa_radiobutton1")); GtkAdjustment *adj = GTK_ADJUSTMENT (gtk_builder_get_object (new_req_window_gtkb, "AdjustmentKeyLengthSpinButton1")); GtkWidget *spin = GTK_WIDGET (gtk_builder_get_object (new_req_window_gtkb, "keylength_spinbutton1")); GtkWidget *combo = GTK_WIDGET (gtk_builder_get_object (new_req_window_gtkb, "ecdsa_curve_combo1")); GtkLabel *label = GTK_LABEL (gtk_builder_get_object (new_req_window_gtkb, "label99")); gdouble value = gtk_spin_button_get_value (GTK_SPIN_BUTTON (spin)); if (rsatoggle && gtk_check_button_get_active(rsatoggle)) { gtk_adjustment_set_upper (adj, 10240); gtk_widget_set_visible(spin, TRUE); if (combo) gtk_widget_set_visible(combo, FALSE); if (label) { gtk_label_set_text (label, _("Private key bit length:")); gtk_widget_set_visible(GTK_WIDGET(label), TRUE); } } else if (dsatoggle && gtk_check_button_get_active(dsatoggle)) { gtk_adjustment_set_upper (adj, 3072); if (value > 3072) gtk_spin_button_set_value (GTK_SPIN_BUTTON (spin), 3072); gtk_widget_set_visible(spin, TRUE); if (combo) gtk_widget_set_visible(combo, FALSE); if (label) { gtk_label_set_text (label, _("Private key bit length:")); gtk_widget_set_visible(GTK_WIDGET(label), TRUE); } } else if (ecdsatoggle && gtk_check_button_get_active(ecdsatoggle)) { gtk_widget_set_visible(spin, FALSE); if (combo) { gtk_widget_set_visible(combo, TRUE); if (gtk_drop_down_get_selected (GTK_DROP_DOWN (combo)) == GTK_INVALID_LIST_POSITION) gtk_drop_down_set_selected (GTK_DROP_DOWN (combo), 0); } if (label) { gtk_label_set_text (label, _("ECDSA curve:")); gtk_widget_set_visible(GTK_WIDGET(label), TRUE); } } else if (eddsatoggle && gtk_check_button_get_active(eddsatoggle)) { gtk_widget_set_visible(spin, FALSE); if (combo) gtk_widget_set_visible(combo, FALSE); if (label) gtk_widget_set_visible(GTK_WIDGET(label), FALSE); } } G_MODULE_EXPORT void on_new_req_cn_entry_changed (GtkEditable *editable, gpointer user_data) { GtkButton *button = GTK_BUTTON(gtk_builder_get_object (new_req_window_gtkb, "new_req_next2")); if (strlen (gtk_editable_get_text(GTK_EDITABLE(editable)))) gtk_widget_set_sensitive (GTK_WIDGET(button), TRUE); else gtk_widget_set_sensitive (GTK_WIDGET(button), FALSE); } G_MODULE_EXPORT void on_new_req_next1_clicked (GtkButton *button, gpointer user_data) { TlsCert * tlscert; GtkWidget * widget; const gchar *pem; gboolean inherit_fields; inherit_fields = gtk_check_button_get_active (GTK_CHECK_BUTTON(gtk_builder_get_object(new_req_window_gtkb, "inherit_radiobutton"))); { guint sel = gtk_single_selection_get_selected (new_req_ca_selection); guint n = g_list_model_get_n_items ( gtk_single_selection_get_model (new_req_ca_selection)); fprintf (stderr, "CSR next1: inherit=%d selected=%u n_items=%u\n", inherit_fields, sel, n); if (inherit_fields && sel == GTK_INVALID_LIST_POSITION && n > 0) gtk_single_selection_set_selected (new_req_ca_selection, 0); } GnomintCertRow *sel_row = ca_selector_get_selected_row (new_req_ca_selection); fprintf (stderr, "CSR next1: sel_row=%p\n", (void*)sel_row); if (inherit_fields && sel_row) { pem = gnomint_cert_row_get_pem (sel_row); g_assert (pem); tlscert = tls_parse_cert_pem (pem); new_req_ca_id_valid = TRUE; new_req_ca_id = gnomint_cert_row_get_id (sel_row); g_object_unref (sel_row); widget = GTK_WIDGET(gtk_builder_get_object(new_req_window_gtkb,"country_combobox1")); if (ca_file_policy_get_int (new_req_ca_id, "C_INHERIT")) { gtk_widget_set_sensitive (widget, ! ca_file_policy_get_int (new_req_ca_id, "C_FORCE_SAME")); { GtkDropDown *dd = GTK_DROP_DOWN (widget); guint idx = country_table_find_code (dd, tlscert->c); gtk_drop_down_set_selected (dd, idx); } } else { gtk_widget_set_sensitive (widget, TRUE); gtk_drop_down_set_selected (GTK_DROP_DOWN(widget), GTK_INVALID_LIST_POSITION); } widget = GTK_WIDGET(gtk_builder_get_object(new_req_window_gtkb,"st_entry1")); if (ca_file_policy_get_int (new_req_ca_id, "ST_INHERIT")) { gtk_widget_set_sensitive (widget, ! ca_file_policy_get_int (new_req_ca_id, "ST_FORCE_SAME")); gtk_editable_set_text(GTK_EDITABLE(widget), tlscert->st); } else { gtk_widget_set_sensitive (widget, TRUE); gtk_editable_set_text(GTK_EDITABLE(widget), ""); } widget = GTK_WIDGET(gtk_builder_get_object(new_req_window_gtkb,"city_entry1")); if (ca_file_policy_get_int (new_req_ca_id, "L_INHERIT")) { gtk_widget_set_sensitive (widget, ! ca_file_policy_get_int (new_req_ca_id, "L_FORCE_SAME")); gtk_editable_set_text(GTK_EDITABLE(widget), tlscert->l); } else { gtk_widget_set_sensitive (widget, TRUE); gtk_editable_set_text(GTK_EDITABLE(widget), ""); } widget = GTK_WIDGET(gtk_builder_get_object(new_req_window_gtkb,"o_entry1")); if (ca_file_policy_get_int (new_req_ca_id, "O_INHERIT")) { gtk_widget_set_sensitive (widget, ! ca_file_policy_get_int (new_req_ca_id, "O_FORCE_SAME")); gtk_editable_set_text(GTK_EDITABLE(widget), tlscert->o); } else { gtk_widget_set_sensitive (widget, TRUE); gtk_editable_set_text(GTK_EDITABLE(widget), ""); } widget = GTK_WIDGET(gtk_builder_get_object(new_req_window_gtkb,"ou_entry1")); if (ca_file_policy_get_int (new_req_ca_id, "OU_INHERIT")) { gtk_widget_set_sensitive (widget, ! ca_file_policy_get_int (new_req_ca_id, "OU_FORCE_SAME")); gtk_editable_set_text(GTK_EDITABLE(widget), tlscert->ou); } else { gtk_widget_set_sensitive (widget, TRUE); gtk_editable_set_text(GTK_EDITABLE(widget), ""); } widget = GTK_WIDGET(gtk_builder_get_object(new_req_window_gtkb,"cn_entry1")); if (ca_file_policy_get_int (new_req_ca_id, "CN_INHERIT")) { gtk_widget_set_sensitive (widget, ! ca_file_policy_get_int (new_req_ca_id, "CN_FORCE_SAME")); gtk_editable_set_text(GTK_EDITABLE(widget), tlscert->cn ? tlscert->cn : ""); } else { gtk_widget_set_sensitive (widget, TRUE); } tls_cert_free (tlscert); } else { if (sel_row) g_object_unref (sel_row); new_req_ca_id_valid = FALSE; widget = GTK_WIDGET(gtk_builder_get_object(new_req_window_gtkb,"country_combobox1")); gtk_widget_set_sensitive (widget, TRUE); gtk_drop_down_set_selected (GTK_DROP_DOWN(widget), GTK_INVALID_LIST_POSITION); widget = GTK_WIDGET(gtk_builder_get_object(new_req_window_gtkb,"st_entry1")); gtk_widget_set_sensitive (widget, TRUE); gtk_editable_set_text(GTK_EDITABLE(widget), ""); widget = GTK_WIDGET(gtk_builder_get_object(new_req_window_gtkb,"city_entry1")); gtk_widget_set_sensitive (widget, TRUE); gtk_editable_set_text(GTK_EDITABLE(widget), ""); widget = GTK_WIDGET(gtk_builder_get_object(new_req_window_gtkb,"o_entry1")); gtk_widget_set_sensitive (widget, TRUE); gtk_editable_set_text(GTK_EDITABLE(widget), ""); widget = GTK_WIDGET(gtk_builder_get_object(new_req_window_gtkb,"ou_entry1")); gtk_widget_set_sensitive (widget, TRUE); gtk_editable_set_text(GTK_EDITABLE(widget), ""); } new_req_tab_activate (1); } G_MODULE_EXPORT void on_new_req_previous2_clicked (GtkButton *widget, gpointer user_data) { new_req_tab_activate (0); } G_MODULE_EXPORT void on_new_req_next2_clicked (GtkButton *widget, gpointer user_data) { GtkEditable *cn = GTK_EDITABLE(gtk_builder_get_object (new_req_window_gtkb, "cn_entry1")); const gchar *cn_text = gtk_editable_get_text (cn); if (!cn_text || !strlen (cn_text)) { dialog_error (_("Please enter a Common Name (CN) for the certificate request.")); return; } /* Re-check the Next button sensitivity in case the CN was set * programmatically (e.g. via AT-SPI) without firing 'changed'. */ GtkWidget *next_btn = GTK_WIDGET(gtk_builder_get_object ( new_req_window_gtkb, "new_req_next2")); if (next_btn) gtk_widget_set_sensitive (next_btn, TRUE); new_req_tab_activate (2); } G_MODULE_EXPORT void on_new_req_previous3_clicked (GtkButton *widget, gpointer user_data) { new_req_tab_activate (1); } G_MODULE_EXPORT void on_new_req_cancel_clicked (GtkButton *widget, gpointer user_data) { GtkWindow *window = GTK_WINDOW(gtk_builder_get_object (new_req_window_gtkb, "new_req_window")); gtk_window_destroy(GTK_WINDOW(GTK_WIDGET(window))); } static void __new_req_commit_password_cb (gchar *password, gpointer user_data) { TlsCreationData *csr_creation_data = (TlsCreationData *) user_data; GtkWindow *window; if (!password) { /* The user hasn't provided a valid password */ tls_creation_data_free (csr_creation_data); return; } csr_creation_data->password = password; window = GTK_WINDOW(gtk_builder_get_object (new_req_window_gtkb, "new_req_window")); gtk_window_destroy(GTK_WINDOW(GTK_WIDGET(window))); creation_process_window_csr_display (csr_creation_data); } G_MODULE_EXPORT void on_new_req_commit_clicked (GtkButton *widg, gpointer user_data) { TlsCreationData *csr_creation_data = NULL; GtkWidget *widget = NULL; GtkWindow *window = NULL; gint active = -1; gchar *text = NULL; csr_creation_data = g_new0 (TlsCreationData, 1); if (new_req_ca_id_valid) csr_creation_data->parent_ca_id_str = g_strdup_printf ("'%"G_GUINT64_FORMAT"'", new_req_ca_id); { GtkDropDown *country_dd = GTK_DROP_DOWN(gtk_builder_get_object (new_req_window_gtkb, "country_combobox1")); const gchar *code = country_table_get_code (country_dd); if (code) csr_creation_data->country = g_strndup (code, 2); else csr_creation_data->country = NULL; } widget = GTK_WIDGET(gtk_builder_get_object (new_req_window_gtkb, "st_entry1")); text = (gchar *) gtk_editable_get_text(GTK_EDITABLE(widget)); if (strlen (text)) csr_creation_data->state = g_strdup (text); else csr_creation_data->state = NULL; widget = GTK_WIDGET(gtk_builder_get_object (new_req_window_gtkb, "city_entry1")); text = (gchar *) gtk_editable_get_text(GTK_EDITABLE(widget)); if (strlen (text)) csr_creation_data->city = g_strdup (text); else csr_creation_data->city = NULL; widget = GTK_WIDGET(gtk_builder_get_object (new_req_window_gtkb, "o_entry1")); text = (gchar *) gtk_editable_get_text(GTK_EDITABLE(widget)); if (strlen (text)) csr_creation_data->org = g_strdup (text); else csr_creation_data->org = NULL; widget = GTK_WIDGET(gtk_builder_get_object (new_req_window_gtkb, "ou_entry1")); text = (gchar *) gtk_editable_get_text(GTK_EDITABLE(widget)); if (strlen (text)) csr_creation_data->ou = g_strdup (text); else csr_creation_data->ou = NULL; widget = GTK_WIDGET(gtk_builder_get_object (new_req_window_gtkb, "cn_entry1")); text = (gchar *) gtk_editable_get_text(GTK_EDITABLE(widget)); if (strlen (text)) csr_creation_data->cn = g_strdup (text); else csr_creation_data->cn = NULL; widget = GTK_WIDGET(gtk_builder_get_object (new_req_window_gtkb, "email_entry1")); text = (gchar *) gtk_editable_get_text(GTK_EDITABLE(widget)); if (strlen (text)) csr_creation_data->emailAddress = g_strdup (text); else csr_creation_data->emailAddress = NULL; // Get SANs from SAN manager widget if (san_manager_widget1) { gchar *san_string = san_manager_get_string(san_manager_widget1); if (san_string && san_string[0]) csr_creation_data->subject_alt_name = san_string; else { g_free(san_string); csr_creation_data->subject_alt_name = NULL; } } else { csr_creation_data->subject_alt_name = NULL; } { GtkWidget *eddsa = GTK_WIDGET ( gtk_builder_get_object (new_req_window_gtkb, "eddsa_radiobutton1")); GtkWidget *ecdsa = GTK_WIDGET ( gtk_builder_get_object (new_req_window_gtkb, "ecdsa_radiobutton1")); GtkWidget *dsa = GTK_WIDGET ( gtk_builder_get_object (new_req_window_gtkb, "dsa_radiobutton1")); if (eddsa && gtk_check_button_get_active (GTK_CHECK_BUTTON (eddsa))) csr_creation_data->key_type = 3; /* EdDSA */ else if (ecdsa && gtk_check_button_get_active (GTK_CHECK_BUTTON (ecdsa))) csr_creation_data->key_type = 2; /* ECDSA */ else if (dsa && gtk_check_button_get_active (GTK_CHECK_BUTTON (dsa))) csr_creation_data->key_type = 1; /* DSA */ else csr_creation_data->key_type = 0; /* RSA */ } if (csr_creation_data->key_type == 2 /* ECDSA */) { static const int ecdsa_bitlengths[] = { 256, 384, 521 }; GtkDropDown *curve_dd = GTK_DROP_DOWN ( gtk_builder_get_object (new_req_window_gtkb, "ecdsa_curve_combo1")); guint sel = curve_dd ? gtk_drop_down_get_selected (curve_dd) : GTK_INVALID_LIST_POSITION; csr_creation_data->key_bitlength = (sel < G_N_ELEMENTS (ecdsa_bitlengths)) ? ecdsa_bitlengths[sel] : 256; } else if (csr_creation_data->key_type == 3 /* EdDSA */) { csr_creation_data->key_bitlength = 0; } else { widget = GTK_WIDGET (gtk_builder_get_object (new_req_window_gtkb, "keylength_spinbutton1")); active = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (widget)); csr_creation_data->key_bitlength = active; } if (ca_file_is_password_protected()) { pkey_manage_ask_password (__new_req_commit_password_cb, csr_creation_data); return; } window = GTK_WINDOW(gtk_builder_get_object (new_req_window_gtkb, "new_req_window")); gtk_window_destroy(GTK_WINDOW(GTK_WIDGET(window))); creation_process_window_csr_display (csr_creation_data); } gnomint-1.6.4/src/main.c0000644000000000000000000007235015212761266013631 0ustar00rootroot// gnoMint: a graphical interface for managing a certification authority // Copyright (C) 2006-2009 David Marín Carreño // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #include #include #include #include #include #include #include #include "main.h" #include "ca.h" #include "dialog.h" #include "tls.h" #include "ca_file.h" #include "preferences-gui.h" #define GNOMINT_MIME_TYPE "application/x-gnomint" GtkBuilder * main_window_gtkb = NULL; GtkBuilder * csr_popup_menu_gtkb = NULL; GtkBuilder * cert_popup_menu_gtkb = NULL; gchar * gnomint_current_opened_file = NULL; static GtkRecentManager *recent_manager; void __recent_add_utf8_filename (const gchar *utf8_filename); void __disable_widget (gchar *widget_name); void __enable_widget (gchar *widget_name); void __recent_add_utf8_filename (const gchar *utf8_filename); /* Extern declarations for handlers defined in other files */ extern void on_add_self_signed_ca_activate (gpointer sender, gpointer user_data); extern void on_add_csr_activate (gpointer sender, gpointer user_data); extern void on_wizard_web_activate (gpointer sender, gpointer user_data); extern void on_wizard_email_activate (gpointer sender, gpointer user_data); extern void on_import1_activate (gpointer sender, gpointer user_data); extern void on_properties1_activate (gpointer sender, gpointer user_data); extern void on_preferences1_activate (gpointer sender, gpointer user_data); extern void ca_on_search_changed (GtkSearchEntry *entry, gpointer user_data); extern void ca_treeview_popup_handler (GtkGestureClick *gesture, int n_press, double x, double y, gpointer user_data); extern gboolean ca_on_key_pressed (GtkEventControllerKey *controller, guint keyval, guint keycode, GdkModifierType state, gpointer user_data); void __disable_widget (gchar *widget_name) { GtkWidget * widget = NULL; widget = GTK_WIDGET(gtk_builder_get_object (main_window_gtkb, widget_name)); gtk_widget_set_sensitive (widget, FALSE); } void __enable_widget (gchar *widget_name) { GtkWidget * widget = NULL; widget = GTK_WIDGET(gtk_builder_get_object (main_window_gtkb, widget_name)); gtk_widget_set_sensitive (widget, TRUE); } /* ------------------------------------------------------------------ */ /* GAction wrappers for window actions */ /* ------------------------------------------------------------------ */ static void action_new_db (GSimpleAction *a, GVariant *p, gpointer d) { on_new1_activate(NULL, NULL); } static void action_open_db (GSimpleAction *a, GVariant *p, gpointer d) { on_open1_activate(NULL, NULL); } static void action_open_recents(GSimpleAction *a, GVariant *p, gpointer d) { /* no-op for now */ } static void action_save_as (GSimpleAction *a, GVariant *p, gpointer d) { on_save_as1_activate(NULL, NULL); } static void action_add_ca (GSimpleAction *a, GVariant *p, gpointer d) { on_add_self_signed_ca_activate(NULL, NULL); } static void action_add_csr (GSimpleAction *a, GVariant *p, gpointer d) { on_add_csr_activate(NULL, NULL); } static void action_wizard_web (GSimpleAction *a, GVariant *p, gpointer d) { on_wizard_web_activate(NULL, NULL); } static void action_wizard_email(GSimpleAction *a, GVariant *p, gpointer d) { on_wizard_email_activate(NULL, NULL); } static void action_extract_pkey(GSimpleAction *a, GVariant *p, gpointer d) { ca_on_extractprivatekey1_activate(NULL, NULL); } static void action_renew (GSimpleAction *a, GVariant *p, gpointer d) { ca_on_renew_activate(NULL, NULL); } static void action_revoke (GSimpleAction *a, GVariant *p, gpointer d) { ca_on_revoke_activate(NULL, NULL); } static void action_sign (GSimpleAction *a, GVariant *p, gpointer d) { ca_on_sign1_activate(NULL, NULL); } static void action_delete (GSimpleAction *a, GVariant *p, gpointer d) { ca_on_delete2_activate(NULL, NULL); } static void action_generate_crl(GSimpleAction *a, GVariant *p, gpointer d) { ca_generate_crl(NULL, NULL); } static void action_generate_dh (GSimpleAction *a, GVariant *p, gpointer d) { ca_generate_dh_param_show(NULL, NULL); } static void action_change_pwd (GSimpleAction *a, GVariant *p, gpointer d) { ca_on_change_pwd_menuitem_activate(NULL, NULL); } static void action_import (GSimpleAction *a, GVariant *p, gpointer d) { on_import1_activate(NULL, NULL); } static void action_export (GSimpleAction *a, GVariant *p, gpointer d) { ca_on_export1_activate(NULL, NULL); } static void action_export_chain(GSimpleAction *a, GVariant *p, gpointer d) { ca_on_export_chain_activate(NULL, NULL); } static void action_bulk_revoke (GSimpleAction *a, GVariant *p, gpointer d) { ca_on_bulk_revoke_activate(NULL, NULL); } static void action_bulk_delete_csrs(GSimpleAction *a, GVariant *p, gpointer d) { ca_on_bulk_delete_csrs_activate(NULL, NULL); } static void action_properties (GSimpleAction *a, GVariant *p, gpointer d) { on_properties1_activate(NULL, NULL); } static void action_preferences (GSimpleAction *a, GVariant *p, gpointer d) { on_preferences1_activate(NULL, NULL); } static void action_compare_pem (GSimpleAction *a, GVariant *p, gpointer d) { ca_on_compare_with_activate(NULL, NULL); } static void action_toggle_view_csrs(GSimpleAction *action, GVariant *param, gpointer data) { GVariant *state = g_action_get_state(G_ACTION(action)); gboolean val = !g_variant_get_boolean(state); g_simple_action_set_state(action, g_variant_new_boolean(val)); ca_update_csr_view(val, TRUE); preferences_set_crq_visible(val); g_variant_unref(state); } static void action_toggle_view_revoked(GSimpleAction *action, GVariant *param, gpointer data) { GVariant *state = g_action_get_state(G_ACTION(action)); gboolean val = !g_variant_get_boolean(state); g_simple_action_set_state(action, g_variant_new_boolean(val)); ca_update_revoked_view(val, TRUE); preferences_set_revoked_visible(val); g_variant_unref(state); } static void action_toggle_view_expired(GSimpleAction *action, GVariant *param, gpointer data) { GVariant *state = g_action_get_state(G_ACTION(action)); gboolean val = !g_variant_get_boolean(state); g_simple_action_set_state(action, g_variant_new_boolean(val)); ca_update_expired_view(val, TRUE); preferences_set_expired_visible(val); g_variant_unref(state); } /* ------------------------------------------------------------------ */ /* GAction wrappers for app actions */ /* ------------------------------------------------------------------ */ static void action_quit (GSimpleAction *a, GVariant *p, gpointer d) { on_quit1_activate(NULL, NULL); } static void action_about (GSimpleAction *a, GVariant *p, gpointer d) { on_about1_activate(NULL, NULL); } /* ------------------------------------------------------------------ */ /* gnomint_register_actions */ /* ------------------------------------------------------------------ */ void gnomint_register_actions(GtkWindow *window, GtkApplication *app) { /* Regular window actions */ const GActionEntry win_entries[] = { { "new-db", action_new_db, NULL, NULL, NULL }, { "open-db", action_open_db, NULL, NULL, NULL }, { "open-recents", action_open_recents, NULL, NULL, NULL }, { "save-as", action_save_as, NULL, NULL, NULL }, { "add-ca", action_add_ca, NULL, NULL, NULL }, { "add-csr", action_add_csr, NULL, NULL, NULL }, { "wizard-web", action_wizard_web, NULL, NULL, NULL }, { "wizard-email", action_wizard_email, NULL, NULL, NULL }, { "extract-pkey", action_extract_pkey, NULL, NULL, NULL }, { "renew", action_renew, NULL, NULL, NULL }, { "revoke", action_revoke, NULL, NULL, NULL }, { "sign", action_sign, NULL, NULL, NULL }, { "delete", action_delete, NULL, NULL, NULL }, { "generate-crl", action_generate_crl, NULL, NULL, NULL }, { "generate-dh", action_generate_dh, NULL, NULL, NULL }, { "change-password", action_change_pwd, NULL, NULL, NULL }, { "import", action_import, NULL, NULL, NULL }, { "export", action_export, NULL, NULL, NULL }, { "export-chain", action_export_chain, NULL, NULL, NULL }, { "bulk-revoke", action_bulk_revoke, NULL, NULL, NULL }, { "bulk-delete-csrs", action_bulk_delete_csrs, NULL, NULL, NULL }, { "properties", action_properties, NULL, NULL, NULL }, { "preferences", action_preferences, NULL, NULL, NULL }, { "compare-pem", action_compare_pem, NULL, NULL, NULL }, }; g_action_map_add_action_entries(G_ACTION_MAP(window), win_entries, G_N_ELEMENTS(win_entries), window); /* Stateful toggle actions for window */ GSimpleAction *act; act = g_simple_action_new_stateful("view-csrs", NULL, g_variant_new_boolean(preferences_get_crq_visible())); g_signal_connect(act, "activate", G_CALLBACK(action_toggle_view_csrs), NULL); g_action_map_add_action(G_ACTION_MAP(window), G_ACTION(act)); g_object_unref(act); act = g_simple_action_new_stateful("view-revoked", NULL, g_variant_new_boolean(preferences_get_revoked_visible())); g_signal_connect(act, "activate", G_CALLBACK(action_toggle_view_revoked), NULL); g_action_map_add_action(G_ACTION_MAP(window), G_ACTION(act)); g_object_unref(act); act = g_simple_action_new_stateful("view-expired", NULL, g_variant_new_boolean(preferences_get_expired_visible())); g_signal_connect(act, "activate", G_CALLBACK(action_toggle_view_expired), NULL); g_action_map_add_action(G_ACTION_MAP(window), G_ACTION(act)); g_object_unref(act); /* Disable open-recents for now (GtkRecentChooserMenu is gone) */ GAction *recents_action = g_action_map_lookup_action(G_ACTION_MAP(window), "open-recents"); if (recents_action) g_simple_action_set_enabled(G_SIMPLE_ACTION(recents_action), FALSE); /* App actions */ const GActionEntry app_entries[] = { { "quit", action_quit, NULL, NULL, NULL }, { "about", action_about, NULL, NULL, NULL }, }; g_action_map_add_action_entries(G_ACTION_MAP(app), app_entries, G_N_ELEMENTS(app_entries), NULL); } /* ------------------------------------------------------------------ */ /* Shared UI setup, called by both activate and open handlers. * If open_file is non-NULL, that file is opened instead of the default. */ static void gnomint_setup_and_open(GtkApplication *app, const gchar *open_file); static void gnomint_activate(GtkApplication *app, gpointer user_data) { gnomint_setup_and_open (app, NULL); } static void gnomint_open(GtkApplication *app, GFile **files, gint n_files, const gchar *hint, gpointer user_data) { gchar *path = (n_files > 0) ? g_file_get_path (files[0]) : NULL; gnomint_setup_and_open (app, path); g_free (path); } static void gnomint_setup_and_open(GtkApplication *app, const gchar *open_file) { gchar *defaultfile = NULL; gchar * size_str = NULL; preferences_gui_set_csr_visible_callback (ca_update_csr_view); preferences_gui_set_revoked_visible_callback (ca_update_revoked_view); preferences_gui_set_expired_visible_callback (ca_update_expired_view); preferences_init (0, NULL); main_window_gtkb = gtk_builder_new(); gtk_builder_set_translation_domain (main_window_gtkb, GETTEXT_PACKAGE); gtk_builder_add_from_file (main_window_gtkb, g_build_filename (PACKAGE_DATA_DIR, "gnomint", "main_window.ui", NULL), NULL); csr_popup_menu_gtkb = gtk_builder_new(); gtk_builder_set_translation_domain (csr_popup_menu_gtkb, GETTEXT_PACKAGE); gtk_builder_add_from_file (csr_popup_menu_gtkb, g_build_filename (PACKAGE_DATA_DIR, "gnomint", "csr_popup_menu.ui", NULL), NULL); cert_popup_menu_gtkb = gtk_builder_new(); gtk_builder_set_translation_domain (cert_popup_menu_gtkb, GETTEXT_PACKAGE); gtk_builder_add_from_file (cert_popup_menu_gtkb, g_build_filename (PACKAGE_DATA_DIR, "gnomint", "certificate_popup_menu.ui", NULL), NULL); size_str = preferences_get_size (); if (size_str) { gchar ** result = NULL; guint width, height; result = g_strsplit_set (size_str, "(,)", -1); if (result[0] && result[1]) { width = atoi (result[1]); if (result[2]) { height = atoi (result[2]); gtk_window_set_default_size (GTK_WINDOW(gtk_builder_get_object(main_window_gtkb, "main_window1")), width, height); } } g_free (size_str); g_strfreev (result); } ca_update_revoked_view (preferences_get_revoked_visible(), FALSE); ca_update_csr_view (preferences_get_crq_visible(), FALSE); ca_update_expired_view (preferences_get_expired_visible(), FALSE); /* Fix toolbar icon paths: GtkImage file= in .ui uses bare * filenames; in GTK 4 these must be absolute paths. */ static const char *icon_widgets[] = { "addcaimg", "addcsrimg", "extractpkeyimg", "signimg", "wizardwebimg", "wizardemailimg", NULL }; static const char *icon_files[] = { "addca.png", "addcsr.png", "extractpkey.png", "sign.png", "wizard-webserver.png", "wizard-email.png", NULL }; for (int i = 0; icon_widgets[i]; i++) { GtkImage *img = GTK_IMAGE(gtk_builder_get_object(main_window_gtkb, icon_widgets[i])); if (img) { gchar *path = g_build_filename(PACKAGE_DATA_DIR, "gnomint", icon_files[i], NULL); gtk_image_set_from_file(img, path); g_free(path); } } /* GTK 4: signal auto-connection is no longer available via * gtk_builder_connect_signals(). Toolbar button handlers are * connected explicitly below; menu items use GActions instead. */ GtkWidget *w; w = GTK_WIDGET(gtk_builder_get_object(main_window_gtkb, "toolbutton1")); if (w) g_signal_connect(w, "clicked", G_CALLBACK(on_new1_activate), NULL); w = GTK_WIDGET(gtk_builder_get_object(main_window_gtkb, "toolbutton2")); if (w) g_signal_connect(w, "clicked", G_CALLBACK(on_open1_activate), NULL); w = GTK_WIDGET(gtk_builder_get_object(main_window_gtkb, "addca_toolbutton")); if (w) g_signal_connect(w, "clicked", G_CALLBACK(on_add_self_signed_ca_activate), NULL); w = GTK_WIDGET(gtk_builder_get_object(main_window_gtkb, "addcsr_toolbutton")); if (w) g_signal_connect(w, "clicked", G_CALLBACK(on_add_csr_activate), NULL); w = GTK_WIDGET(gtk_builder_get_object(main_window_gtkb, "extractpkey_toolbutton")); if (w) g_signal_connect(w, "clicked", G_CALLBACK(ca_on_extractprivatekey1_activate), NULL); w = GTK_WIDGET(gtk_builder_get_object(main_window_gtkb, "revoke_toolbutton")); if (w) g_signal_connect(w, "clicked", G_CALLBACK(ca_on_revoke_activate), NULL); w = GTK_WIDGET(gtk_builder_get_object(main_window_gtkb, "sign_toolbutton")); if (w) g_signal_connect(w, "clicked", G_CALLBACK(ca_on_sign1_activate), NULL); w = GTK_WIDGET(gtk_builder_get_object(main_window_gtkb, "delete_toolbutton")); if (w) g_signal_connect(w, "clicked", G_CALLBACK(ca_on_delete2_activate), NULL); w = GTK_WIDGET(gtk_builder_get_object(main_window_gtkb, "wizard_web_toolbutton")); if (w) g_signal_connect(w, "clicked", G_CALLBACK(on_wizard_web_activate), NULL); w = GTK_WIDGET(gtk_builder_get_object(main_window_gtkb, "wizard_email_toolbutton")); if (w) g_signal_connect(w, "clicked", G_CALLBACK(on_wizard_email_activate), NULL); /* Search and tree view signals */ w = GTK_WIDGET(gtk_builder_get_object(main_window_gtkb, "search_entry")); if (w) g_signal_connect(w, "search-changed", G_CALLBACK(ca_on_search_changed), NULL); /* Selection-changed and activate signals are connected by * ca_refresh_model_callback when the GtkColumnView columns are * set up for the first time. Only the right-click popup * handler is wired here. */ w = GTK_WIDGET(gtk_builder_get_object(main_window_gtkb, "ca_treeview")); if (w) { /* Right-click context menu via GtkGestureClick (GTK 4) */ GtkGesture *click = gtk_gesture_click_new(); gtk_gesture_single_set_button(GTK_GESTURE_SINGLE(click), 3); g_signal_connect(click, "pressed", G_CALLBACK(ca_treeview_popup_handler), w); gtk_widget_add_controller(w, GTK_EVENT_CONTROLLER(click)); } /* close-request on main window */ w = GTK_WIDGET(gtk_builder_get_object(main_window_gtkb, "main_window1")); if (w) { g_signal_connect(w, "close-request", G_CALLBACK(on_main_window1_delete), NULL); /* Ctrl+F key handler via GtkEventControllerKey (GTK 4) */ GtkEventController *key_ctrl = gtk_event_controller_key_new(); g_signal_connect(key_ctrl, "key-pressed", G_CALLBACK(ca_on_key_pressed), NULL); gtk_widget_add_controller(w, key_ctrl); } recent_manager = gtk_recent_manager_get_default (); /* Recent menu setup skipped — GtkRecentChooserMenu is gone in GTK 4 */ dialog_establish_refresh_function (ca_refresh_model_callback); /* Associate the window with the GtkApplication */ GtkWindow *main_win = GTK_WINDOW(gtk_builder_get_object(main_window_gtkb, "main_window1")); gtk_window_set_application(main_win, app); /* Register GActions */ gnomint_register_actions(main_win, app); if (open_file) { gboolean create; defaultfile = g_strdup (open_file); create = !g_file_test (defaultfile, G_FILE_TEST_EXISTS); __recent_add_utf8_filename (defaultfile); ca_open (defaultfile, create); } else { const gchar *data_dir = g_get_user_data_dir(); gchar *gnomint_data_dir = g_build_filename (data_dir, "gnomint", NULL); g_mkdir_with_parents (gnomint_data_dir, 0700); defaultfile = g_build_filename (gnomint_data_dir, "default.gnomint", NULL); g_free (gnomint_data_dir); if (!g_file_test(defaultfile, G_FILE_TEST_EXISTS)) { gchar *old_defaultfile = g_build_filename (g_get_home_dir(), ".gnomint", "default.gnomint", NULL); if (g_file_test(old_defaultfile, G_FILE_TEST_EXISTS)) { GFile *old_file = g_file_new_for_path(old_defaultfile); GFile *new_file = g_file_new_for_path(defaultfile); GError *error = NULL; if (!g_file_copy(old_file, new_file, G_FILE_COPY_NONE, NULL, NULL, NULL, &error)) { g_warning("Failed to migrate database from %s to %s: %s", old_defaultfile, defaultfile, error ? error->message : "unknown error"); if (error) { g_error_free(error); } } g_object_unref(old_file); g_object_unref(new_file); } g_free (old_defaultfile); } __recent_add_utf8_filename (defaultfile); ca_open (defaultfile, TRUE); } gtk_window_present (main_win); } #ifndef GNOMINT_UI_TEST int main (int argc, char *argv[]) { GtkApplication *app; int status; #ifdef ENABLE_NLS bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); textdomain (GETTEXT_PACKAGE); #endif g_set_application_name (PACKAGE); g_set_prgname (PACKAGE); gtk_window_set_default_icon_name ("gnomint"); tls_init (); app = gtk_application_new ("org.gnome.gnomint", G_APPLICATION_DEFAULT_FLAGS | G_APPLICATION_HANDLES_OPEN); g_signal_connect (app, "activate", G_CALLBACK (gnomint_activate), NULL); g_signal_connect (app, "open", G_CALLBACK (gnomint_open), NULL); status = g_application_run (G_APPLICATION (app), argc, argv); g_object_unref (app); return status; } #endif /* GNOMINT_UI_TEST */ G_MODULE_EXPORT gboolean on_main_window1_delete (GtkWindow *window) { int width, height; gchar *new_size_value; gtk_window_get_default_size (window, &width, &height); new_size_value = g_strdup_printf ("(%d,%d)", width, height); preferences_set_size (new_size_value); g_free (new_size_value); preferences_deinit(); return FALSE; /* allow close */ } void __recent_add_utf8_filename (const gchar *utf8_filename) { GtkRecentData *recent_data; gchar *filename; gchar *uri; gchar *pwd; static gchar *groups[2] = { "gnomint", NULL }; recent_data = g_new (GtkRecentData, 1); recent_data->display_name = NULL; recent_data->description = NULL; recent_data->mime_type = GNOMINT_MIME_TYPE; recent_data->app_name = (gchar *) g_get_application_name (); recent_data->app_exec = g_strjoin (" ", g_get_prgname (), "%f", NULL); recent_data->groups = groups; recent_data->is_private = FALSE; filename = g_filename_from_utf8 (utf8_filename, -1, NULL, NULL, NULL); if ( filename != NULL ) { if (! g_path_is_absolute (filename)) { gchar *absolute_filename; pwd = g_get_current_dir (); absolute_filename = g_build_filename (pwd, filename, NULL); g_free (pwd); g_free (filename); filename = absolute_filename; } uri = g_filename_to_uri (filename, NULL, NULL); if ( uri != NULL ) { gtk_recent_manager_add_full (recent_manager, uri, recent_data); g_free (uri); } g_free (filename); } g_free (recent_data->app_exec); g_free (recent_data); } static void __on_new1_save_cb (GObject *source, GAsyncResult *result, gpointer user_data) { GtkFileDialog *fd = GTK_FILE_DIALOG (source); GError *err = NULL; GFile *file = gtk_file_dialog_save_finish (fd, result, &err); (void) user_data; if (!file) { g_clear_error (&err); return; } gchar *filename = g_file_get_path (file); g_object_unref (file); GtkWidget *widget = GTK_WIDGET(gtk_builder_get_object (main_window_gtkb, "main_window1")); if (g_file_test(filename, G_FILE_TEST_EXISTS)) { gchar *backup_filename = g_strdup_printf ("%s~", filename); if (g_file_test (backup_filename, G_FILE_TEST_EXISTS)) { g_remove (backup_filename); } g_rename (filename, backup_filename); g_free (backup_filename); } gchar *error = ca_file_create (filename); if (error) { GtkAlertDialog *alert = gtk_alert_dialog_new ( _("Problem when creating '%s' CA database:\n%s"), filename, error); gtk_alert_dialog_show (alert, GTK_WINDOW (widget)); g_object_unref (alert); g_free (filename); return; } if (! ca_open (filename, FALSE)) { GtkAlertDialog *alert = gtk_alert_dialog_new ( _("Problem when opening new '%s' CA database"), filename); gtk_alert_dialog_show (alert, GTK_WINDOW (widget)); g_object_unref (alert); } else { __recent_add_utf8_filename (filename); } g_free (filename); } G_MODULE_EXPORT void on_new1_activate (gpointer sender, gpointer user_data) { GtkWindow *parent = GTK_WINDOW(gtk_builder_get_object (main_window_gtkb, "main_window1")); GtkFileDialog *fd = gtk_file_dialog_new (); gtk_file_dialog_set_title (fd, _("Create new CA database")); gtk_file_dialog_save (fd, parent, NULL, __on_new1_save_cb, NULL); g_object_unref (fd); } static void __on_open1_open_cb (GObject *source, GAsyncResult *result, gpointer user_data) { GtkFileDialog *fd = GTK_FILE_DIALOG (source); GError *err = NULL; GFile *file = gtk_file_dialog_open_finish (fd, result, &err); (void) user_data; if (!file) { g_clear_error (&err); return; } gchar *filename = g_file_get_path (file); g_object_unref (file); GtkWidget *widget = GTK_WIDGET(gtk_builder_get_object (main_window_gtkb, "main_window1")); if (! ca_open (filename, FALSE)) { GtkAlertDialog *alert = gtk_alert_dialog_new ( _("Problem when opening '%s' CA database"), filename); gtk_alert_dialog_show (alert, GTK_WINDOW (widget)); g_object_unref (alert); } else { __recent_add_utf8_filename (filename); } g_free (filename); } G_MODULE_EXPORT void on_open1_activate (gpointer sender, gpointer user_data) { GtkWindow *parent = GTK_WINDOW(gtk_builder_get_object (main_window_gtkb, "main_window1")); GtkFileDialog *fd = gtk_file_dialog_new (); gtk_file_dialog_set_title (fd, _("Open CA database")); gtk_file_dialog_open (fd, parent, NULL, __on_open1_open_cb, NULL); g_object_unref (fd); } static void __on_save_as1_save_cb (GObject *source, GAsyncResult *result, gpointer user_data) { GtkFileDialog *fd = GTK_FILE_DIALOG (source); GError *err = NULL; GFile *file = gtk_file_dialog_save_finish (fd, result, &err); (void) user_data; if (!file) { g_clear_error (&err); return; } gchar *filename = g_file_get_path (file); g_object_unref (file); if (ca_file_save_as (filename)) __recent_add_utf8_filename (filename); g_free (filename); } G_MODULE_EXPORT void on_save_as1_activate (gpointer sender, gpointer user_data) { GtkWindow *parent = GTK_WINDOW(gtk_builder_get_object (main_window_gtkb, "main_window1")); GtkFileDialog *fd = gtk_file_dialog_new (); gtk_file_dialog_set_title (fd, _("Save CA database as...")); gtk_file_dialog_save (fd, parent, NULL, __on_save_as1_save_cb, NULL); g_object_unref (fd); } G_MODULE_EXPORT void on_quit1_activate (gpointer sender, gpointer user_data) { GtkWindow *window = GTK_WINDOW(gtk_builder_get_object(main_window_gtkb, "main_window1")); on_main_window1_delete(window); GApplication *app = G_APPLICATION(gtk_window_get_application(window)); if (app) g_application_quit(app); } /* * * HELP MENU CALLBACKS * */ G_MODULE_EXPORT void on_about1_activate (gpointer sender, gpointer user_data) { GtkWidget *widget; widget = GTK_WIDGET(gtk_builder_get_object (main_window_gtkb, "main_window1")); const gchar *authors[] = { "David Marín Carreño ", NULL }; const gchar *collaborators[] = { "Ahmed Baizid ", "Jaroslav Imrich ", "Staněk Luboš ", NULL }; GtkAboutDialog *dlg = GTK_ABOUT_DIALOG (gtk_about_dialog_new ()); gtk_window_set_transient_for (GTK_WINDOW (dlg), GTK_WINDOW (widget)); gtk_window_set_modal (GTK_WINDOW (dlg), TRUE); gchar *logo_path = g_build_filename (PACKAGE_DATA_DIR, "gnomint", "gnomint192x192.png", NULL); GdkTexture *logo = gdk_texture_new_from_filename (logo_path, NULL); if (logo) { gtk_about_dialog_set_logo (dlg, GDK_PAINTABLE (logo)); g_object_unref (logo); } g_free (logo_path); gtk_about_dialog_set_program_name (dlg, "gnoMint"); gtk_about_dialog_set_version (dlg, PACKAGE_VERSION " \"" PACKAGE_CODENAME "\""); gtk_about_dialog_set_copyright (dlg, PACKAGE_COPYRIGHT); gtk_about_dialog_set_comments (dlg, _("gnoMint is a program for creating and managing " "Certification Authorities, and their certificates")); gtk_about_dialog_set_license (dlg, _("This program is free software; you can redistribute it " "and/or modify it under the terms of the GNU General Public " "License as published by the Free Software Foundation; either " "version 3 of the License, or (at your option) any later " "version.\n\nThis program is distributed in the hope that it " "will be useful, but WITHOUT ANY WARRANTY; without even the " "implied warranty of MERCHANTABILITY or FITNESS FOR A " "PARTICULAR PURPOSE. See the GNU General Public License for " "more details.\n\nYou should have received a copy of the GNU " "General Public License along with this program; if not, " "write to the Free Software Foundation, Inc., 51 Franklin " "Street, Fifth Floor, Boston, MA 02110-1301, USA.")); gtk_about_dialog_set_wrap_license (dlg, TRUE); gtk_about_dialog_set_website (dlg, PACKAGE_WEBSITE); gtk_about_dialog_set_authors (dlg, authors); gtk_about_dialog_add_credit_section (dlg, _("Code collaborators"), collaborators); gtk_about_dialog_set_translator_credits (dlg, _("translator-credits")); gtk_window_present (GTK_WINDOW (dlg)); } gnomint-1.6.4/src/gnomint_time.h0000644000000000000000000000761415212761266015404 0ustar00rootroot// gnoMint: a graphical interface for managing a certification authority // Copyright (C) 2006-2026 David Marín Carreño // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #ifndef _GNOMINT_TIME_H_ #define _GNOMINT_TIME_H_ #include #include // The latest instant representable in this platform's time_t. // // Where time_t is 64-bit (amd64, win64, and 32-bit ports built with // _TIME_BITS=64 such as armhf) this is effectively unlimited. Where time_t is // 32-bit (notably i386, kept on 32-bit time_t for ABI compatibility by every // major distribution) this is the Year-2038 limit: 2038-01-19 03:14:07 UTC. // On those platforms the limit is not just gnoMint's — the system GnuTLS is // built with the same 32-bit time_t and its X.509 validity API // (gnutls_x509_crt_set_expiration_time(), which takes a time_t) cannot encode // a later date either. See the note in configure.ac and issue #86. time_t gnomint_time_max (void); // mktime() wrapper that reports overflow instead of returning a silent garbage // value. On a 32-bit-time_t platform, asking for a certificate that expires // after 2038 makes mktime() fail (returns (time_t)-1, errno EOVERFLOW); the // historical code stored that -1 and produced a wrong expiration date with no // warning. This wrapper detects that case, clamps the result to // gnomint_time_max(), and sets *overflowed (when non-NULL) to TRUE so the // caller can warn the user. On success *overflowed is set to FALSE. time_t gnomint_mktime_checked (struct tm *tm, gboolean *overflowed); // 64-bit-safe replacement for gmtime_r(). Converts a Unix timestamp (seconds // since 1970-01-01 UTC, carried as a gint64) into a broken-down UTC time. // // Unlike gmtime()/gmtime_r(), which take a time_t and therefore truncate at // 2038 on 32-bit-time_t platforms (i386), this works for any year because it // computes the calendar fields directly from the 64-bit value. gnoMint stores // certificate dates as 64-bit integers in its database, so on i386 a date past // 2038 read straight from the database can still be displayed correctly even // though it could not have been produced through GnuTLS's time_t-based API on // that platform. The result pointer is returned for convenience; it always // succeeds (no errno). tm_isdst is set to 0 (UTC has no DST). struct tm *gnomint_gmtime (gint64 unixtime, struct tm *result); // Returns TRUE when a date obtained from a time_t source (e.g. GnuTLS's // gnutls_x509_crt_get_expiration_time()) cannot be trusted on this build. // // This is gated on the C library's time_t size, NOT on long/atol() — those are // hardened unconditionally elsewhere. Where time_t is 64-bit the answer is // always FALSE. Where time_t is 32-bit, any value near or beyond the 2038 // ceiling (or wrapped negative) might be a genuine date OR a later date that // the time_t API silently capped/overflowed, and the two are indistinguishable // on this hardware — so callers should flag such a value to the user. Dates // read straight from gnoMint's own 64-bit database are authoritative and should // NOT be passed here. When time_t grows to 64-bit, this stops firing on its own. gboolean gnomint_time_display_is_uncertain (gint64 unixtime); #endif // _GNOMINT_TIME_H_ gnomint-1.6.4/src/crl.c0000644000000000000000000002533115212761266013462 0ustar00rootroot// gnoMint: a graphical interface for managing a certification authority // Copyright (C) 2006-2009 David Marín Carreño // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #include #include #include #include #include #ifndef GNOMINTCLI #include #include #endif #include "crl.h" #include "ca_file.h" #include "pkey_manage.h" #include "dialog.h" #include "tls.h" #ifndef GNOMINTCLI #include "ca_selector.h" #endif void __crl_gfree_gfunc (gpointer data, gpointer user_data); #ifndef GNOMINTCLI GtkBuilder *crl_window_gtkb = NULL; static GtkSingleSelection *crl_ca_selection = NULL; static GListStore *crl_ca_root_store = NULL; static void __crl_selection_changed (GObject *sel, GParamSpec *pspec G_GNUC_UNUSED, gpointer user_data G_GNUC_UNUSED) { guint pos = gtk_single_selection_get_selected (GTK_SINGLE_SELECTION (sel)); gboolean has_sel = (pos != GTK_INVALID_LIST_POSITION); gtk_widget_set_sensitive ( GTK_WIDGET (gtk_builder_get_object (crl_window_gtkb, "crl_ok_button")), has_sel); } void crl_window_display (void) { GtkWidget * widget = NULL; crl_window_gtkb = gtk_builder_new(); gtk_builder_add_from_file (crl_window_gtkb, g_build_filename (PACKAGE_DATA_DIR, "gnomint", "new_crl_dialog.ui", NULL), NULL); widget = GTK_WIDGET(gtk_builder_get_object (crl_window_gtkb, "new_crl_dialog")); gtk_window_set_transient_for (GTK_WINDOW (widget), dialog_get_main_window ()); gtk_widget_set_visible(widget, TRUE); /* Populate and set up CA selector (GtkColumnView). */ crl_ca_root_store = ca_selector_populate (); crl_ca_selection = ca_selector_setup ( GTK_COLUMN_VIEW (gtk_builder_get_object (crl_window_gtkb, "crl_ca_treeview")), crl_ca_root_store, NULL); g_signal_connect (crl_ca_selection, "notify::selected", G_CALLBACK (__crl_selection_changed), NULL); } G_MODULE_EXPORT void crl_cancel_clicked_cb (GtkButton *button, gpointer userdata) { GtkWidget * window = GTK_WIDGET(gtk_builder_get_object (crl_window_gtkb, "new_crl_dialog")); gtk_window_destroy(GTK_WINDOW(GTK_WIDGET(window))); } static void __crl_generate_done_cb (gchar *error, gpointer user_data) { (void) user_data; if (error) { dialog_error (error); g_free (error); } else { dialog_info (_("CRL generated successfully")); } } typedef struct { guint64 ca_id; } _CrlOkCtx; static void __crl_ok_save_cb (GObject *source, GAsyncResult *result, gpointer user_data) { _CrlOkCtx *ctx = (_CrlOkCtx *) user_data; GtkFileDialog *fd = GTK_FILE_DIALOG (source); GError *err = NULL; GFile *gfile = gtk_file_dialog_save_finish (fd, result, &err); if (!gfile) { g_clear_error (&err); g_free (ctx); return; } gchar *filename = g_file_get_path (gfile); g_object_unref (gfile); crl_generate (ctx->ca_id, filename, __crl_generate_done_cb, NULL); GtkDialog *crl_dlg = GTK_DIALOG(gtk_builder_get_object (crl_window_gtkb, "new_crl_dialog")); gtk_window_destroy(GTK_WINDOW(GTK_WIDGET(crl_dlg))); g_free (ctx); } G_MODULE_EXPORT void crl_ok_clicked_cb (GtkButton *button, gpointer userdata) { guint64 ca_id = ca_selector_get_selected_id (crl_ca_selection); if (ca_id == 0) return; GtkWindow *parent = GTK_WINDOW(gtk_builder_get_object (crl_window_gtkb, "new_crl_dialog")); _CrlOkCtx *ctx = g_new0 (_CrlOkCtx, 1); ctx->ca_id = ca_id; GtkFileDialog *fd = gtk_file_dialog_new (); gtk_file_dialog_set_title (fd, _("Export Certificate Revocation List")); gtk_file_dialog_save (fd, parent, NULL, __crl_ok_save_cb, ctx); g_object_unref (fd); } #endif /*GNOMINTCLI*/ /* Shared helper: given a decrypted private key, generate the CRL and write it. */ static gchar * __crl_generate_with_pkey (guint64 ca_id, GIOChannel *file, gchar *ca_pem, gchar *dn, PkeyManageData *crypted_pkey, gchar *private_key, GList *revoked_certs, gint crl_version, time_t timestamp) { gchar *pem = NULL; GError *error = NULL; pem = tls_generate_crl (revoked_certs, (guchar *) ca_pem, (guchar *) private_key, crl_version, timestamp, timestamp + (3600 * ca_file_policy_get_int (ca_id, "HOURS_BETWEEN_CRL_UPDATES"))); g_free (ca_pem); pkey_manage_data_free (crypted_pkey); g_free (dn); if (!pem) { g_list_foreach (revoked_certs, __crl_gfree_gfunc, NULL); g_list_free (revoked_certs); ca_file_rollback_new_crl_transaction (); return g_strdup (_("There was an error while generating CRL.")); } g_io_channel_write_chars (file, pem, strlen(pem), NULL, &error); if (error) { g_free (pem); g_list_foreach (revoked_certs, __crl_gfree_gfunc, NULL); g_list_free (revoked_certs); ca_file_rollback_new_crl_transaction (); return g_strdup (_("There was an error while writing CRL.")); } g_free (pem); ca_file_commit_new_crl_transaction (ca_id, revoked_certs); g_list_foreach (revoked_certs, __crl_gfree_gfunc, NULL); g_list_free (revoked_certs); g_io_channel_shutdown (file, TRUE, &error); if (error) { g_io_channel_unref (file); return g_strdup (_("There was an error while exporting CRL.")); } g_io_channel_unref (file); return NULL; } #ifdef GNOMINTCLI gchar * crl_generate (guint64 ca_id, gchar *filename) { time_t timestamp; gint crl_version = 0; gchar * dn = NULL; gchar * ca_pem = NULL; gchar * private_key = NULL; PkeyManageData * crypted_pkey = NULL; GList * revoked_certs = NULL; GIOChannel * file = NULL; GError * error = NULL; gchar *strerror = NULL; file = g_io_channel_new_file (filename, "w", &error); g_free (filename); if (error) { return (_("There was an error while exporting CRL.")); } ca_pem = ca_file_get_public_pem_from_id (CA_FILE_ELEMENT_TYPE_CERT, ca_id); crypted_pkey = pkey_manage_get_certificate_pkey (ca_id); dn = ca_file_get_dn_from_id (CA_FILE_ELEMENT_TYPE_CERT, ca_id); timestamp = time (NULL); revoked_certs = ca_file_get_revoked_certs (ca_id, &strerror); if (strerror) { return (_("There was an error while getting revoked certificates.")); } crl_version = ca_file_begin_new_crl_transaction (1, timestamp); if (ca_id && ca_pem && crypted_pkey && dn) { private_key = pkey_manage_uncrypt (crypted_pkey, dn); if (!private_key) { g_free (ca_pem); pkey_manage_data_free (crypted_pkey); g_free (dn); g_list_foreach (revoked_certs, __crl_gfree_gfunc, NULL); g_list_free (revoked_certs); ca_file_rollback_new_crl_transaction (); return (_("There was an error while generating CRL.")); } { gchar *result = __crl_generate_with_pkey ( ca_id, file, ca_pem, dn, crypted_pkey, private_key, revoked_certs, crl_version, timestamp); g_free (private_key); return result; } } else { g_list_foreach (revoked_certs, __crl_gfree_gfunc, NULL); g_list_free (revoked_certs); ca_file_rollback_new_crl_transaction (); return (_("There was an error while exporting CRL.")); } } #else /* GUI async crl_generate */ typedef struct { guint64 ca_id; GIOChannel *file; gchar *ca_pem; gchar *dn; PkeyManageData *crypted_pkey; GList *revoked_certs; gint crl_version; time_t timestamp; CrlGenerateCallback cb; gpointer cb_user_data; } _CrlGenerateCtx; static void _crl_generate_uncrypt_cb (gchar *private_key, gpointer data) { _CrlGenerateCtx *ctx = (_CrlGenerateCtx *) data; if (!private_key) { g_free (ctx->ca_pem); pkey_manage_data_free (ctx->crypted_pkey); g_free (ctx->dn); g_list_foreach (ctx->revoked_certs, __crl_gfree_gfunc, NULL); g_list_free (ctx->revoked_certs); ca_file_rollback_new_crl_transaction (); ctx->cb (g_strdup (_("There was an error while generating CRL.")), ctx->cb_user_data); g_free (ctx); return; } { gchar *result = __crl_generate_with_pkey ( ctx->ca_id, ctx->file, ctx->ca_pem, ctx->dn, ctx->crypted_pkey, private_key, ctx->revoked_certs, ctx->crl_version, ctx->timestamp); g_free (private_key); ctx->cb (result, ctx->cb_user_data); g_free (ctx); } } static void _crl_generate_got_pkey_cb (PkeyManageData *crypted_pkey, gpointer data) { _CrlGenerateCtx *ctx = (_CrlGenerateCtx *) data; ctx->crypted_pkey = crypted_pkey; if (!ctx->ca_pem || !crypted_pkey || !ctx->dn) { g_free (ctx->ca_pem); pkey_manage_data_free (crypted_pkey); g_free (ctx->dn); g_list_foreach (ctx->revoked_certs, __crl_gfree_gfunc, NULL); g_list_free (ctx->revoked_certs); ca_file_rollback_new_crl_transaction (); ctx->cb (g_strdup (_("There was an error while exporting CRL.")), ctx->cb_user_data); g_free (ctx); return; } pkey_manage_uncrypt (crypted_pkey, ctx->dn, _crl_generate_uncrypt_cb, ctx); } void crl_generate (guint64 ca_id, gchar *filename, CrlGenerateCallback cb, gpointer user_data) { GIOChannel * file = NULL; GError * error = NULL; gchar *strerror = NULL; _CrlGenerateCtx *ctx; file = g_io_channel_new_file (filename, "w", &error); g_free (filename); if (error) { cb (g_strdup (_("There was an error while exporting CRL.")), user_data); return; } ctx = g_new0 (_CrlGenerateCtx, 1); ctx->ca_id = ca_id; ctx->file = file; ctx->ca_pem = ca_file_get_public_pem_from_id (CA_FILE_ELEMENT_TYPE_CERT, ca_id); ctx->dn = ca_file_get_dn_from_id (CA_FILE_ELEMENT_TYPE_CERT, ca_id); ctx->timestamp = time (NULL); ctx->revoked_certs = ca_file_get_revoked_certs (ca_id, &strerror); ctx->cb = cb; ctx->cb_user_data = user_data; if (strerror) { g_free (ctx->ca_pem); g_free (ctx->dn); g_free (ctx); cb (g_strdup (_("There was an error while getting revoked certificates.")), user_data); return; } ctx->crl_version = ca_file_begin_new_crl_transaction (1, ctx->timestamp); pkey_manage_get_certificate_pkey (ca_id, _crl_generate_got_pkey_cb, ctx); } #endif /* GNOMINTCLI */ void __crl_gfree_gfunc (gpointer data, gpointer user_data) { g_free (data); } gnomint-1.6.4/src/main.h0000644000000000000000000000356215212761266013635 0ustar00rootroot// gnoMint: a graphical interface for managing a certification authority // Copyright (C) 2006-2009 David Marín Carreño // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #ifndef __MAIN_H_ #define __MAIN_H_ #include #include #include gboolean on_main_window1_delete (GtkWindow *window); void on_add_self_signed_ca_activate (gpointer sender, gpointer user_data); void on_add_csr_activate (gpointer sender, gpointer user_data); void on_new1_activate (gpointer sender, gpointer user_data); void on_open1_activate (gpointer sender, gpointer user_data); void on_save_as1_activate (gpointer sender, gpointer user_data); void on_import1_activate (gpointer sender, gpointer user_data); void on_quit1_activate (gpointer sender, gpointer user_data); void on_clear1_activate (gpointer sender, gpointer user_data); void on_properties1_activate (gpointer sender, gpointer user_data); void on_preferences1_activate (gpointer sender, gpointer user_data); void on_about1_activate (gpointer sender, gpointer user_data); void gnomint_register_actions(GtkWindow *window, GtkApplication *app); #endif gnomint-1.6.4/src/ca_creation.c0000644000000000000000000001521515212761266015151 0ustar00rootroot// gnoMint: a graphical interface for managing a certification authority // Copyright (C) 2006-2009 David Marín Carreño // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #include #include "ca_creation.h" #include "ca_file.h" #include "tls.h" #include "pkey_manage.h" #include #include #include gint ca_creation_is_launched = -1; static GMutex ca_creation_thread_status_mutex; gint ca_creation_thread_status = 0; gchar * ca_creation_message = ""; gchar * ca_creation_database_save (TlsCreationData * creation_data, gchar * private_key, gchar * root_certificate); gpointer ca_creation_thread (gpointer data) { TlsCreationData *creation_data = (TlsCreationData *) data; gchar * private_key = NULL; gnutls_x509_privkey_t * ca_key = NULL; gchar * root_certificate = NULL; gchar * error_message = NULL; switch (creation_data->key_type){ case 0: /* RSA */ g_mutex_lock(&ca_creation_thread_status_mutex); ca_creation_message = _("Generating new RSA key pair"); g_mutex_unlock (&ca_creation_thread_status_mutex); error_message = tls_generate_rsa_keys (creation_data, &private_key, &ca_key); if (error_message) { printf ("%s\n\n", error_message); g_mutex_lock(&ca_creation_thread_status_mutex); ca_creation_message = g_strdup_printf ("%s:\n%s",_("Key generation failed"), error_message); ca_creation_thread_status = -1; g_mutex_unlock (&ca_creation_thread_status_mutex); tls_creation_data_free (creation_data); return ca_creation_message; // return error_message; } break; case 1: /* DSA */ g_mutex_lock(&ca_creation_thread_status_mutex); ca_creation_message = _("Generating new DSA key pair"); g_mutex_unlock (&ca_creation_thread_status_mutex); error_message = tls_generate_dsa_keys (creation_data, &private_key, &ca_key); if (error_message) { printf ("%s\n\n", error_message); g_mutex_lock(&ca_creation_thread_status_mutex); ca_creation_message = g_strdup_printf ("%s:\n%s",_("Key generation failed"), error_message); ca_creation_thread_status = -1; g_mutex_unlock (&ca_creation_thread_status_mutex); tls_creation_data_free (creation_data); return ca_creation_message; } break; case 2: /* ECDSA */ g_mutex_lock(&ca_creation_thread_status_mutex); ca_creation_message = _("Generating new ECDSA key pair"); g_mutex_unlock (&ca_creation_thread_status_mutex); error_message = tls_generate_ecdsa_keys (creation_data, &private_key, &ca_key); if (error_message) { printf ("%s\n\n", error_message); g_mutex_lock(&ca_creation_thread_status_mutex); ca_creation_message = g_strdup_printf ("%s:\n%s",_("Key generation failed"), error_message); ca_creation_thread_status = -1; g_mutex_unlock (&ca_creation_thread_status_mutex); tls_creation_data_free (creation_data); return ca_creation_message; } break; case 3: /* EdDSA */ g_mutex_lock(&ca_creation_thread_status_mutex); ca_creation_message = _("Generating new Ed25519 key pair"); g_mutex_unlock (&ca_creation_thread_status_mutex); error_message = tls_generate_eddsa_keys (creation_data, &private_key, &ca_key); if (error_message) { printf ("%s\n\n", error_message); g_mutex_lock(&ca_creation_thread_status_mutex); ca_creation_message = g_strdup_printf ("%s:\n%s",_("Key generation failed"), error_message); ca_creation_thread_status = -1; g_mutex_unlock (&ca_creation_thread_status_mutex); tls_creation_data_free (creation_data); return ca_creation_message; } break; } g_mutex_lock(&ca_creation_thread_status_mutex); ca_creation_message = _("Generating self-signed CA-Root cert"); g_mutex_unlock (&ca_creation_thread_status_mutex); error_message = tls_generate_self_signed_certificate (creation_data, ca_key, &root_certificate); if (error_message) { printf ("%s\n\n", error_message); g_mutex_lock(&ca_creation_thread_status_mutex); ca_creation_message = g_strdup_printf ("%s:\n%s",_("Certificate generation failed"), error_message); ca_creation_thread_status = -1; g_mutex_unlock (&ca_creation_thread_status_mutex); g_free (error_message); //return error_message; tls_creation_data_free (creation_data); return ca_creation_message; } g_mutex_lock(&ca_creation_thread_status_mutex); ca_creation_message = _("Creating CA database"); g_mutex_unlock (&ca_creation_thread_status_mutex); pkey_manage_crypt_auto (creation_data->password, &private_key, root_certificate); error_message = ca_creation_database_save (creation_data, private_key, root_certificate); if (error_message) { g_mutex_lock(&ca_creation_thread_status_mutex); ca_creation_message = g_strdup_printf ("%s:\n%s",_("CA database creation failed"), error_message); ca_creation_thread_status = -1; g_mutex_unlock (&ca_creation_thread_status_mutex); g_free (error_message); tls_creation_data_free (creation_data); return ca_creation_message; } g_mutex_lock(&ca_creation_thread_status_mutex); ca_creation_message = _("CA generated successfully"); ca_creation_thread_status = 1; g_mutex_unlock (&ca_creation_thread_status_mutex); if (ca_key) { gnutls_x509_privkey_deinit ((* ca_key)); g_free (ca_key); } tls_creation_data_free (creation_data); g_free (private_key); return NULL; } GThread * ca_creation_launch_thread (TlsCreationData *creation_data) { return g_thread_new("ca_creation", ca_creation_thread, creation_data); } void ca_creation_lock_status_mutex () { g_mutex_lock(&ca_creation_thread_status_mutex); } void ca_creation_unlock_status_mutex () { g_mutex_unlock (&ca_creation_thread_status_mutex); } gint ca_creation_get_thread_status () { return ca_creation_thread_status; } gchar * ca_creation_get_thread_message() { return ca_creation_message; } gchar * ca_creation_database_save (TlsCreationData * creation_data, gchar * private_key, gchar * root_certificate) { return ca_file_insert_self_signed_ca (private_key, root_certificate); } gnomint-1.6.4/src/wizard_window.h0000644000000000000000000000221215212761266015567 0ustar00rootroot// gnoMint: a graphical interface for managing a certification authority // Copyright (C) 2006-2009 David Marín Carreño // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #ifndef _WIZARD_WINDOW_H_ #define _WIZARD_WINDOW_H_ #ifndef GNOMINTCLI typedef enum { WIZARD_CERT_TYPE_WEB_SERVER = 0, WIZARD_CERT_TYPE_EMAIL_SERVER = 1 } WizardCertType; void wizard_window_display (WizardCertType cert_type); #endif #endif gnomint-1.6.4/src/pkey_manage.h0000644000000000000000000000540015212761266015162 0ustar00rootroot// gnoMint: a graphical interface for managing a certification authority // Copyright (C) 2006-2009 David Marín Carreño // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #ifndef _PKEY_MANAGE_H_ #define _PKEY_MANAGE_H_ #include /* FUNCTIONS RELATED WITH PRIVATE KEY BEING SAVED IN EXTERNAL FILES */ typedef struct { gchar *pkey_data; gboolean is_in_db; gboolean is_ciphered_with_db_pwd; gchar *external_file; } PkeyManageData; typedef void (*PkeyManageGetPkeyCallback)(PkeyManageData *result, gpointer user_data); #ifdef GNOMINTCLI PkeyManageData * pkey_manage_get_certificate_pkey (guint64 id); #else void pkey_manage_get_certificate_pkey (guint64 id, PkeyManageGetPkeyCallback cb, gpointer user_data); #endif PkeyManageData * pkey_manage_get_csr_pkey (guint64 id); void pkey_manage_data_free (PkeyManageData *pkeydata); /* PRIVATE KEY PASSWORD PROTECTION RELATED FUNCTIONS */ void pkey_manage_crypt_auto (gchar *password, gchar **pem_private_key, const gchar *pem_root_certificate); gboolean pkey_manage_check_password (const gchar *checking_password, const gchar *hashed_password); #ifdef GNOMINTCLI gchar * pkey_manage_ask_password (void); gchar * pkey_manage_uncrypt (PkeyManageData *pkey, const gchar *dn); #else typedef void (*PkeyManagePasswordCallback)(gchar *password, gpointer user_data); typedef void (*PkeyManageUncryptCallback)(gchar *clear_pem, gpointer user_data); void pkey_manage_ask_password (PkeyManagePasswordCallback cb, gpointer user_data); void pkey_manage_uncrypt (PkeyManageData *pkey, const gchar *dn, PkeyManageUncryptCallback cb, gpointer user_data); #endif gchar * pkey_manage_crypt (const gchar *pem_private_key, const gchar *dn); gchar * pkey_manage_crypt_w_pwd (const gchar *pem_private_key, const gchar *dn, const gchar *pwd); gchar * pkey_manage_uncrypt_w_pwd (PkeyManageData *pkey, const gchar *dn, const gchar *pwd); gchar * pkey_manage_encrypt_password (const gchar *pwd); #endif gnomint-1.6.4/src/export.h0000644000000000000000000000370615212761266014232 0ustar00rootroot// gnoMint: a graphical interface for managing a certification authority // Copyright (C) 2006-2009 David Marín Carreño // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #ifndef _EXPORT_H_ #define _EXPORT_H_ #include #include gchar *export_dh_param (guint dh_size, gchar *filename); #ifdef GNOMINTCLI gchar * export_private_pem (guint64 id, gint type, gchar *filename); #else typedef void (*ExportPrivatePemCallback)(const gchar *error_msg, gpointer user_data); void export_private_pem (guint64 id, gint type, gchar *filename, ExportPrivatePemCallback cb, gpointer user_data); #endif #ifdef GNOMINTCLI gchar * export_private_pkcs8 (guint64 id, gint type, gchar *filename); gchar * export_pkcs12 (guint64 id, gint type, gchar *filename); #else typedef void (*ExportPkcs8Callback)(const gchar *error_msg, gpointer user_data); typedef void (*ExportPkcs12Callback)(const gchar *error_msg, gpointer user_data); void export_private_pkcs8 (guint64 id, gint type, gchar *filename, ExportPkcs8Callback cb, gpointer user_data); void export_pkcs12 (guint64 id, gint type, gchar *filename, ExportPkcs12Callback cb, gpointer user_data); #endif #endif gnomint-1.6.4/src/uint160.c0000644000000000000000000003211315212761266014104 0ustar00rootroot// gnoMint: a graphical interface for managing a certification authority // Copyright (C) 2006-2009 David Marín Carreño // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #include #include "uint160.h" #include #include UInt160 * uint160_new() { UInt160 *res = g_new0(UInt160, 1); res->value0=0; res->value1=0; res->value2=0; /* fprintf (stderr, "Creado nuevo Uint160: %u:%"G_GUINT64_FORMAT":%"G_GUINT64_FORMAT"\n", */ /* res->value2, res->value1, res->value0); */ return res; } void uint160_assign (UInt160 *var, guint64 new_value) { /* fprintf (stderr, "Antes de asignar Uint160: %u:%"G_GUINT64_FORMAT":%"G_GUINT64_FORMAT"\n", */ /* var->value2, var->value1, var->value0); */ memset (var, 0, sizeof(UInt160)); var->value0=new_value; var->value1=0; var->value2=0; /* fprintf (stderr, "Asignado valor %"G_GUINT64_FORMAT" Uint160: %u:%"G_GUINT64_FORMAT":%"G_GUINT64_FORMAT"\n", */ /* new_value, var->value2, var->value1, var->value0); */ return; } gboolean uint160_assign_hexstr (UInt160 *var, const gchar *new_value_hex) { guint i; gchar c; gchar * orig_stripped_value = g_strdup (new_value_hex); gchar * stripped_value = g_strstrip (orig_stripped_value); /* fprintf (stderr, "Antes de asignar Uint160=%s: %u:%"G_GUINT64_FORMAT":%"G_GUINT64_FORMAT"\n", */ /* stripped_value, var->value2, var->value1, var->value0); */ memset (var, 0, sizeof(UInt160)); for (i=0; i < strlen(stripped_value); i++) { c = g_ascii_tolower(stripped_value[i]); // Check if the character is valid if (!((c >= '0' && c <= '9') || (c >= 'a' && c <= 'f'))) { memset (var, 0, sizeof(UInt160)); fprintf (stderr, "Error al asignar valor %s Uint160: caracter «%c» encontrado.\n", stripped_value, c); g_free (orig_stripped_value); return FALSE; } uint160_shift (var, 4); switch(c) { case '0': break; case '1': uint160_add (var, 1); break; case '2': uint160_add (var, 2); break; case '3': uint160_add (var, 3); break; case '4': uint160_add (var, 4); break; case '5': uint160_add (var, 5); break; case '6': uint160_add (var, 6); break; case '7': uint160_add (var, 7); break; case '8': uint160_add (var, 8); break; case '9': uint160_add (var, 9); break; case 'a': uint160_add (var, 10); break; case 'b': uint160_add (var, 11); break; case 'c': uint160_add (var, 12); break; case 'd': uint160_add (var, 13); break; case 'e': uint160_add (var, 14); break; case 'f': uint160_add (var, 15); break; } } /* fprintf (stderr, "Asignado valor %s Uint160: %u:%"G_GUINT64_FORMAT":%"G_GUINT64_FORMAT"\n", */ /* stripped_value, var->value2, var->value1, var->value0); */ g_free (orig_stripped_value); return TRUE; } void uint160_add (UInt160 *var, guint64 new_value) { guint64 value0_backup = var->value0; guint64 value1_backup = var->value1; /* fprintf (stderr, "Sumando %"G_GUINT64_FORMAT" a Uint160: %u:%"G_GUINT64_FORMAT":%"G_GUINT64_FORMAT"\n", */ /* new_value, var->value2, var->value1, var->value0); */ var->value0 = var->value0 + new_value; if (var->value0 < value0_backup) { var->value1++; if (var->value1 < value1_backup) var->value2++; } /* fprintf (stderr, "Resultado: %u:%"G_GUINT64_FORMAT":%"G_GUINT64_FORMAT"\n", */ /* var->value2, var->value1, var->value0); */ return; } void uint160_inc (UInt160 *var) { uint160_add (var, 1); return; } void uint160_dec (UInt160 *var) { guint64 value0_backup = var->value0; guint64 value1_backup = var->value1; var->value0 --; if (var->value0 > value0_backup) { var->value1 --; if (var->value1 > value1_backup) var->value2--; } return; } void uint160_shift (UInt160 *var, guint positions) { /* fprintf (stderr, "Shifting %u a Uint160: %u:%"G_GUINT64_FORMAT":%"G_GUINT64_FORMAT"\n", */ /* positions, var->value2, var->value1, var->value0); */ guint64 carry0_to_1; guint64 carry1_to_2; if (positions > 0) { carry0_to_1 = (var->value0 & G_GUINT64_CONSTANT(0x8000000000000000)); carry1_to_2 = (var->value1 & G_GUINT64_CONSTANT(0x8000000000000000)); var->value0 = var->value0 * 2; var->value1 = (var->value1 * 2) + (carry0_to_1 ? 1 : 0); var->value2 = (var->value2 * 2) + (carry1_to_2 ? 1 : 0); uint160_shift (var, positions - 1); } return; } gboolean uint160_write (const UInt160 *var, guchar *buffer, gsize * max_size) { if (*max_size < 20) { *max_size = 20; return FALSE; } buffer[0] = ((var->value2 & 0xFF000000) >> 24); buffer[1] = ((var->value2 & 0x00FF0000) >> 16); buffer[2] = ((var->value2 & 0x0000FF00) >> 8); buffer[3] = ((var->value2 & 0x000000FF)); buffer[4] = ((var->value1 & G_GUINT64_CONSTANT(0xFF00000000000000)) >> 56); buffer[5] = ((var->value1 & G_GUINT64_CONSTANT(0x00FF000000000000)) >> 48); buffer[6] = ((var->value1 & G_GUINT64_CONSTANT(0x0000FF0000000000)) >> 40); buffer[7] = ((var->value1 & G_GUINT64_CONSTANT(0x000000FF00000000)) >> 32); buffer[8] = ((var->value1 & G_GUINT64_CONSTANT(0x00000000FF000000)) >> 24); buffer[9] = ((var->value1 & G_GUINT64_CONSTANT(0x0000000000FF0000)) >> 16); buffer[10] = ((var->value1 & G_GUINT64_CONSTANT(0x000000000000FF00)) >> 8); buffer[11] = ((var->value1 & G_GUINT64_CONSTANT(0x00000000000000FF))); buffer[12] = ((var->value0 & G_GUINT64_CONSTANT(0xFF00000000000000)) >> 56); buffer[13] = ((var->value0 & G_GUINT64_CONSTANT(0x00FF000000000000)) >> 48); buffer[14] = ((var->value0 & G_GUINT64_CONSTANT(0x0000FF0000000000)) >> 40); buffer[15] = ((var->value0 & G_GUINT64_CONSTANT(0x000000FF00000000)) >> 32); buffer[16] = ((var->value0 & G_GUINT64_CONSTANT(0x00000000FF000000)) >> 24); buffer[17] = ((var->value0 & G_GUINT64_CONSTANT(0x0000000000FF0000)) >> 16); buffer[18] = ((var->value0 & G_GUINT64_CONSTANT(0x000000000000FF00)) >> 8); buffer[19] = ((var->value0 & G_GUINT64_CONSTANT(0x00000000000000FF))); *max_size = 20; return TRUE; } gboolean uint160_read (UInt160 *var, guchar *buffer, gsize buffer_size) { gint start, i; guchar c; memset (var, 0, sizeof(UInt160)); var->value0=0; var->value1=0; var->value2=0; start = 0; while (start < buffer_size && buffer[start] == 0) start++; for (i=start; i < buffer_size; i++) { c = buffer[i]; uint160_shift (var, 8); uint160_add (var, c); } return TRUE; } gboolean uint160_write_escaped (const UInt160 *var, gchar *buffer, gsize * max_size) { gsize size = 0; guint32 value = 0; gsize pos = 0; if (var->value2 > 0) size = 16 + 16 + 8 + 1; else if (var->value1 > 0) size = 16 + 16 + 1; else size = 16 + 1; if (size > *max_size) { *max_size = size; return FALSE; } memset (buffer, 0, size); if (var->value2 > 0) { value = var->value2; sprintf (&buffer[pos], "%08" G_GINT32_MODIFIER "x", value); pos = pos + 8; } if (var->value2 > 0 || var->value1 > 0) { value = (var->value1 / G_GUINT64_CONSTANT(0x100000000)); sprintf (&buffer[pos], "%08" G_GINT32_MODIFIER "x", value); pos = pos + 8; value = (var->value1 % G_GUINT64_CONSTANT(0x100000000)); sprintf (&buffer[pos], "%08" G_GINT32_MODIFIER "x", value); pos = pos + 8; } value = (var->value0 / G_GUINT64_CONSTANT(0x100000000)); sprintf (&buffer[pos], "%08" G_GINT32_MODIFIER "x", value); pos = pos + 8; value = (var->value0 % G_GUINT64_CONSTANT(0x100000000)); sprintf (&buffer[pos], "%08" G_GINT32_MODIFIER "x", value); pos = pos + 8; return TRUE; } gboolean uint160_read_escaped (UInt160 *var, gchar *buffer, gsize buffer_size) { gchar aux[2]; guint i; guint num; gboolean res = TRUE; /* fprintf (stderr, "Uint160_read_escaped <%s>\n", buffer); */ memset (var, 0, sizeof (UInt160)); memset (aux, 0, 2); for (i=0; i = : %u:%"G_GUINT64_FORMAT":%"G_GUINT64_FORMAT"\n", */ /* buffer, var->value2, var->value1, var->value0); */ return res; } gboolean uint160_read_escaped_old_format (UInt160 *var, gchar *buffer, gsize buffer_size) { gint i; guint num_chars; guchar c; guchar buffer_c[buffer_size]; memset (var, 0, sizeof (UInt160)); var->value0=0; var->value1=0; var->value2=0; num_chars = 0; for (i=0; i < buffer_size; i++) { c = buffer[i]; if (c < 33) { i++; c = buffer[i] - 0x20; } buffer_c[num_chars] = c; num_chars++; } for (i=num_chars - 1; i>=0; i--) { c = buffer_c[i]; uint160_shift (var, 8); uint160_add (var, c); } return TRUE; } gchar * uint160_strdup_printf (const UInt160 *var) { GString *string = g_string_new(""); guint64 val; gsize size = 0; guchar * pointer; int i; /* First, we calculate how many bytes are filled */ if (var->value2 != 0) { size = 16; val = var->value2; while (val != 0) { val = val >> 8; size++; } } else if (var->value1 != 0) { size = 8; val = var->value1; while (val != 0) { val = val >> 8; size ++; } } else if (var->value0 != 0) { val = var->value0; while (val != 0) { val = val >> 8; size ++; } } for (i=size-1; i>=0; i--) { if (i < 8) { pointer = (guchar *) &(var->value0); g_string_append_printf (string, "%s%02X", (i==(size-1)?"":":"), pointer[i]); } else if (i < 16) { pointer = (guchar *) &(var->value1); g_string_append_printf (string, "%s%02X", (i==(size-1)?"":":"), pointer[i-8]); } else { pointer = (guchar *) &(var->value2); g_string_append_printf (string, "%s%02X", (i==(size-1)?"":":"), pointer[i-16]); } } return g_string_free (string, FALSE); } void uint160_free (UInt160 *var) { g_free (var); } gnomint-1.6.4/src/wizard_window.c0000644000000000000000000004120015212761266015562 0ustar00rootroot// gnoMint: a graphical interface for managing a certification authority // Copyright (C) 2006-2009 David Marín Carreño // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #include #include #include #include #include #include #include #include "wizard_window.h" #include "ca_file.h" #include "ca.h" #include "tls.h" #include "pkey_manage.h" #include "dialog.h" #include "gnomint_time.h" #include "new_cert.h" #include GtkBuilder * wizard_window_gtkb = NULL; static WizardCertType current_wizard_type = WIZARD_CERT_TYPE_WEB_SERVER; static GArray *ca_ids = NULL; /* parallel array of guint64 CA IDs for signing_ca_combo */ typedef struct { guint64 ca_id; gchar *subject; gint64 expiration; } CAInfo; /* sqlite3 callback used by ca_file_foreach_ca (signature dictated by * CaFileCallbackFunc). Collects each row into the GList passed via * user_data. ca_file_foreach_ca already filters is_ca=1 AND * revocation IS NULL — see src/ca_file.c. */ static int __wizard_collect_ca_cb (void *pArg, int argc, char **argv, char **columnNames G_GNUC_UNUSED) { GList **list = (GList **) pArg; if (argc > CA_FILE_CA_COLUMN_EXPIRATION && argv[CA_FILE_CA_COLUMN_ID] && argv[CA_FILE_CA_COLUMN_SUBJECT]) { CAInfo *ca = g_new0 (CAInfo, 1); ca->ca_id = g_ascii_strtoull (argv[CA_FILE_CA_COLUMN_ID], NULL, 10); ca->subject = g_strdup (argv[CA_FILE_CA_COLUMN_SUBJECT]); ca->expiration = argv[CA_FILE_CA_COLUMN_EXPIRATION] ? g_ascii_strtoll (argv[CA_FILE_CA_COLUMN_EXPIRATION], NULL, 10) : 0; *list = g_list_append (*list, ca); } return 0; } /* sqlite3 callback used by ca_file_foreach_policy. The policy rows * are (ca_id, name, value); name/value are argv[1] and argv[2]. */ static int __wizard_collect_policy_cb (void *pArg, int argc, char **argv, char **columnNames G_GNUC_UNUSED) { GHashTable *table = (GHashTable *) pArg; if (argc >= 3 && argv[1] && argv[2]) { g_hash_table_insert (table, g_strdup (argv[1]), g_strdup (argv[2])); } return 0; } // Helper function to get CA list (CAs are returned in the same // hierarchical order ca_file_foreach_ca uses everywhere else in gnoMint). static GList * __wizard_get_ca_list (void) { GList *ca_list = NULL; ca_file_foreach_ca (__wizard_collect_ca_cb, &ca_list); return ca_list; } // Helper function to get selected CA from main window or first non-expired static guint64 __wizard_get_default_ca_id (void) { GList *cas = __wizard_get_ca_list (); guint64 selected_ca = ca_get_selected_row_id (); guint64 result = 0; time_t now = time (NULL); /* If the user has a non-revoked CA selected in the main view, prefer that. */ if (selected_ca > 0) { for (GList *l = cas; l; l = l->next) { CAInfo *ca = l->data; if (ca->ca_id == selected_ca) { result = selected_ca; break; } } } /* Otherwise pick the first non-expired CA; if all are expired, the * first CA in the list (which is sorted hierarchically). */ if (result == 0) { for (GList *l = cas; l; l = l->next) { CAInfo *ca = l->data; if (ca->expiration > now) { result = ca->ca_id; break; } } } if (result == 0 && cas) { CAInfo *first = cas->data; result = first->ca_id; } for (GList *l = cas; l; l = l->next) { CAInfo *ca = l->data; g_free (ca->subject); g_free (ca); } g_list_free (cas); return result; } // Helper function to get CA fields for inheritance static void __wizard_get_ca_fields (guint64 ca_id, TlsCreationData *creation_data) { // Get CA policy settings GHashTable *policy_table = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); ca_file_foreach_policy (__wizard_collect_policy_cb, ca_id, policy_table); // Get CA certificate fields gchar *ca_pem = ca_file_get_public_pem_from_id (CA_FILE_ELEMENT_TYPE_CERT, ca_id); if (!ca_pem) { g_hash_table_destroy (policy_table); return; } TlsCert *ca_cert = tls_parse_cert_pem (ca_pem); g_free (ca_pem); if (!ca_cert) { g_hash_table_destroy (policy_table); return; } // Check and apply inheritance for each field gchar *strvalue; gint inherit_value; // Country (C) strvalue = (gchar *)g_hash_table_lookup (policy_table, "C_INHERIT"); inherit_value = strvalue ? atoi(strvalue) : 0; if (inherit_value && ca_cert->c) { g_free (creation_data->country); creation_data->country = g_strdup (ca_cert->c); } // State (ST) strvalue = (gchar *)g_hash_table_lookup (policy_table, "ST_INHERIT"); inherit_value = strvalue ? atoi(strvalue) : 0; if (inherit_value && ca_cert->st) { g_free (creation_data->state); creation_data->state = g_strdup (ca_cert->st); } // Locality (L) strvalue = (gchar *)g_hash_table_lookup (policy_table, "L_INHERIT"); inherit_value = strvalue ? atoi(strvalue) : 0; if (inherit_value && ca_cert->l) { g_free (creation_data->city); creation_data->city = g_strdup (ca_cert->l); } // Organization (O) strvalue = (gchar *)g_hash_table_lookup (policy_table, "O_INHERIT"); inherit_value = strvalue ? atoi(strvalue) : 0; if (inherit_value && ca_cert->o) { g_free (creation_data->org); creation_data->org = g_strdup (ca_cert->o); } // Organizational Unit (OU) strvalue = (gchar *)g_hash_table_lookup (policy_table, "OU_INHERIT"); inherit_value = strvalue ? atoi(strvalue) : 0; if (inherit_value && ca_cert->ou) { g_free (creation_data->ou); creation_data->ou = g_strdup (ca_cert->ou); } tls_cert_free (ca_cert); g_hash_table_destroy (policy_table); } // Helper function to create CSR with default settings static guint64 __wizard_create_csr (const gchar *server_name, WizardCertType cert_type, guint64 ca_id) { TlsCreationData *creation_data = g_new0 (TlsCreationData, 1); gchar *private_key = NULL; gnutls_x509_privkey_t *csr_key = NULL; gchar *certificate_sign_request = NULL; gchar *error_message = NULL; TlsCsr *tlscsr = NULL; guint64 csr_id = 0; // Set default values creation_data->key_type = 0; // RSA creation_data->key_bitlength = 2048; // Default key size creation_data->country = g_strdup(""); // Empty country creation_data->state = g_strdup(""); // Empty state creation_data->city = g_strdup(""); // Empty locality creation_data->org = g_strdup(""); // Empty organization creation_data->ou = g_strdup(""); // Empty organizational unit creation_data->cn = g_strdup(server_name); // Server name as CN creation_data->emailAddress = NULL; // wizard doesn't ask for an email creation_data->parent_ca_id_str = g_strdup_printf("'%" G_GUINT64_FORMAT "'", ca_id); // Apply CA field inheritance based on CA policy __wizard_get_ca_fields (ca_id, creation_data); // Generate RSA key pair error_message = tls_generate_rsa_keys (creation_data, &private_key, &csr_key); if (error_message) { dialog_error (g_strdup_printf (_("Key generation failed:\n%s"), error_message)); g_free (error_message); tls_creation_data_free(creation_data); return 0; } // Generate CSR error_message = tls_generate_csr (creation_data, csr_key, &certificate_sign_request); if (error_message) { dialog_error (g_strdup_printf (_("CSR generation failed:\n%s"), error_message)); g_free (error_message); g_free(private_key); tls_creation_data_free(creation_data); return 0; } // Parse CSR to get DN tlscsr = tls_parse_csr_pem (certificate_sign_request); if (!tlscsr) { dialog_error (_("Failed to parse generated CSR.")); g_free(private_key); g_free(certificate_sign_request); tls_creation_data_free(creation_data); return 0; } // Save CSR to database error_message = ca_file_insert_csr (private_key, certificate_sign_request, NULL, &csr_id); if (error_message) { dialog_error (g_strdup_printf (_("Failed to save CSR:\n%s"), error_message)); g_free (error_message); tls_csr_free(tlscsr); g_free(private_key); g_free(certificate_sign_request); tls_creation_data_free(creation_data); return 0; } // Cleanup tls_csr_free(tlscsr); g_free(private_key); g_free(certificate_sign_request); tls_creation_data_free(creation_data); return csr_id; } static void __wizard_sign_csr_done_cb (const gchar *error, gpointer user_data) { (void) user_data; if (error) { dialog_error (g_strdup_printf (_("Failed to sign certificate:\n%s"), error)); return; } dialog_info (_("Certificate generated successfully!")); dialog_refresh_list(); } // Button click handlers static void on_wizard_generate_button_clicked (GtkButton *button, gpointer user_data) { GtkWidget *dialog = GTK_WIDGET(user_data); GtkWidget *server_name_entry = GTK_WIDGET(gtk_builder_get_object (wizard_window_gtkb, "server_name_entry")); GtkWidget *signing_ca_combo = GTK_WIDGET(gtk_builder_get_object (wizard_window_gtkb, "signing_ca_combo")); const gchar *server_name = gtk_editable_get_text(GTK_EDITABLE(server_name_entry)); // Validate server name if (!server_name || strlen(server_name) == 0) { dialog_error (_("Please enter a server name.")); return; } // Get selected CA from GtkDropDown + parallel ca_ids array guint selected = gtk_drop_down_get_selected (GTK_DROP_DOWN(signing_ca_combo)); if (selected == GTK_INVALID_LIST_POSITION || !ca_ids || selected >= ca_ids->len) { dialog_error (_("Please select a Certificate Authority.")); return; } guint64 ca_id = g_array_index (ca_ids, guint64, selected); if (ca_id == 0) { dialog_error (_("Invalid Certificate Authority selected.")); return; } // Create CSR guint64 csr_id = __wizard_create_csr (server_name, current_wizard_type, ca_id); if (csr_id == 0) { return; // Error already shown } // Prepare certificate creation data TlsCertCreationData *cert_creation_data = g_new0 (TlsCertCreationData, 1); cert_creation_data->key_months_before_expiration = 12; // 1 year default // Generated certificates should NOT be CA certificates cert_creation_data->ca = FALSE; cert_creation_data->crl_signing = FALSE; // Set certificate usage based on type if (current_wizard_type == WIZARD_CERT_TYPE_WEB_SERVER) { cert_creation_data->web_server = TRUE; cert_creation_data->web_client = FALSE; cert_creation_data->digital_signature = TRUE; cert_creation_data->key_encipherment = TRUE; } else { cert_creation_data->web_server = TRUE; cert_creation_data->web_client = TRUE; cert_creation_data->email_protection = TRUE; cert_creation_data->digital_signature = TRUE; cert_creation_data->key_encipherment = TRUE; } // Close dialog before async sign gtk_window_destroy(GTK_WINDOW(dialog)); // Sign the CSR (async in GUI) new_cert_sign_csr (csr_id, ca_id, cert_creation_data, __wizard_sign_csr_done_cb, NULL); } static void on_wizard_cancel_button_clicked (GtkButton *button, gpointer user_data) { GtkWidget *dialog = GTK_WIDGET(user_data); gtk_window_destroy(GTK_WINDOW(dialog)); } void wizard_window_display (WizardCertType cert_type) { GtkWidget *dialog; GtkWidget *generate_button; GtkWidget *cancel_button; GtkWidget *cert_type_combo; GtkWidget *signing_ca_combo; GtkStringList *ca_string_list; GError *error = NULL; current_wizard_type = cert_type; // Load the UI file wizard_window_gtkb = gtk_builder_new (); if (!gtk_builder_add_from_file (wizard_window_gtkb, g_build_filename (PACKAGE_DATA_DIR, "gnomint", "wizard_window.ui", NULL), &error)) { g_warning ("Couldn't load builder file: %s", error ? error->message : "Unknown error"); g_clear_error (&error); return; } // Get dialog widget dialog = GTK_WIDGET(gtk_builder_get_object (wizard_window_gtkb, "wizard_dialog")); if (!dialog) { g_warning ("Couldn't find wizard_dialog in UI file"); g_object_unref (wizard_window_gtkb); return; } // Get widgets generate_button = GTK_WIDGET(gtk_builder_get_object (wizard_window_gtkb, "generate_button")); cancel_button = GTK_WIDGET(gtk_builder_get_object (wizard_window_gtkb, "cancel_button")); cert_type_combo = GTK_WIDGET(gtk_builder_get_object (wizard_window_gtkb, "cert_type_combo")); signing_ca_combo = GTK_WIDGET(gtk_builder_get_object (wizard_window_gtkb, "signing_ca_combo")); // Populate CA list using GtkStringList + parallel GArray of ca_ids GList *ca_list = __wizard_get_ca_list(); if (!ca_list) { dialog_error (_("No Certificate Authority found. Please create a CA first.")); g_object_unref (wizard_window_gtkb); return; } /* Create fresh GtkStringList and parallel ca_ids array */ const gchar * const empty_strv[] = { NULL }; ca_string_list = gtk_string_list_new (empty_strv); if (ca_ids) { g_array_unref (ca_ids); } ca_ids = g_array_new (FALSE, FALSE, sizeof (guint64)); guint64 default_ca_id = __wizard_get_default_ca_id(); guint default_index = 0; guint current_index = 0; time_t now = time(NULL); for (GList *l = ca_list; l != NULL; l = l->next) { CAInfo *ca = (CAInfo *)l->data; gchar *display_text; // Format display text with expiration date to distinguish CAs with same name if (ca->expiration > 0) { struct tm exp_tm; gnomint_gmtime(ca->expiration, &exp_tm); gchar exp_date[20]; strftime(exp_date, sizeof(exp_date), "%Y-%m-%d", &exp_tm); if (ca->expiration < now) { display_text = g_strdup_printf("%s (exp: %s, expired)", ca->subject, exp_date); } else { display_text = g_strdup_printf("%s (exp: %s)", ca->subject, exp_date); } } else { display_text = g_strdup(ca->subject); } gtk_string_list_append (ca_string_list, display_text); g_array_append_val (ca_ids, ca->ca_id); g_free(display_text); if (ca->ca_id == default_ca_id) { default_index = current_index; } current_index++; g_free(ca->subject); g_free(ca); } g_list_free(ca_list); // Set the model on the signing CA dropdown and select default gtk_drop_down_set_model (GTK_DROP_DOWN(signing_ca_combo), G_LIST_MODEL(ca_string_list)); g_object_unref (ca_string_list); gtk_drop_down_set_selected (GTK_DROP_DOWN(signing_ca_combo), default_index); // Set certificate type dropdown gtk_drop_down_set_selected (GTK_DROP_DOWN(cert_type_combo), cert_type); // Connect signals - builder will be unreferenced when dialog is destroyed g_object_add_weak_pointer (G_OBJECT(wizard_window_gtkb), (gpointer *)&wizard_window_gtkb); g_signal_connect_swapped (dialog, "destroy", G_CALLBACK(g_object_unref), wizard_window_gtkb); g_signal_connect (generate_button, "clicked", G_CALLBACK(on_wizard_generate_button_clicked), dialog); g_signal_connect (cancel_button, "clicked", G_CALLBACK(on_wizard_cancel_button_clicked), dialog); // Show dialog gtk_window_set_transient_for (GTK_WINDOW (dialog), dialog_get_main_window ()); gtk_widget_set_visible(dialog, TRUE); } gnomint-1.6.4/src/preferences.c0000644000000000000000000000344715212761266015207 0ustar00rootroot// gnoMint: a graphical interface for managing a certification authority // Copyright (C) 2006-2009 David Marín Carreño // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #include #include #include #include #include "preferences.h" static GSettings * preferences_settings; void preferences_init (int argc, char **argv) { preferences_settings = g_settings_new ("org.gnome.gnomint"); } gboolean preferences_get_gnome_keyring_export () { return g_settings_get_boolean (preferences_settings, "gnome-keyring-export"); } void preferences_set_gnome_keyring_export (gboolean new_value) { g_settings_set_boolean (preferences_settings, "gnome-keyring-export", new_value); } gint preferences_get_expire_warning_days (void) { if (!preferences_settings) return 30; /* default if uninitialised */ return g_settings_get_int (preferences_settings, "expire-warning-days"); } void preferences_deinit () { g_object_unref (preferences_settings); preferences_settings = NULL; } gnomint-1.6.4/src/import.h0000644000000000000000000000404015212761266014213 0ustar00rootroot// gnoMint: a graphical interface for managing a certification authority // Copyright (C) 2006-2009 David Marín Carreño // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #ifndef _IMPORT_H_ #define _IMPORT_H_ #include #include // All these functions return 0 if the file is not recognized as the given format // 1 if the file is correctly recognized and imported // <0 if the file is recognized, but it is not imported gint import_csr (guchar *file_contents, gsize file_contents_size, gchar **csr_dn, guint64 *id); gint import_certlist (guchar *file_contents, gsize file_contents_size, gchar **cert_dn, guint64 *id); gint import_pkey_wo_passwd (guchar *file_contents, gsize file_contents_size); gint import_crl (guchar *file_contents, gsize file_contents_size); /* PKCS#7 importing was removed in libgnutls 2.6.0 */ /* gint import_pkcs7 (guchar *file_contents, gsize file_contents_size); */ gint import_pkcs8 (guchar *file_contents, gsize file_contents_size); gint import_pkcs12 (guchar *file_contents, gsize file_contents_size); gint import_openssl_private_key (const gchar *filename, gchar **last_password, gchar *file_description); gboolean import_single_file (gchar *filename, gchar **dn, guint64 *id); gchar * import_whole_dir (gchar *dirname); #endif gnomint-1.6.4/src/preferences-window.h0000644000000000000000000000227215212761266016514 0ustar00rootroot// gnoMint: a graphical interface for managing a certification authority // Copyright (C) 2006-2009 David Marín Carreño // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #ifndef _PREFERENCES_WINDOW_H_ #define _PREFERENCES_WINDOW_H_ void preferences_window_display (void); void preferences_window_gnomekeyring_export_toggled (GtkCheckButton *togglebutton, gpointer user_data); void preferences_window_ok_button_clicked_cb (GtkButton *button, gpointer user_data); #endif gnomint-1.6.4/src/ca_bulk.h0000644000000000000000000000136715212761266014312 0ustar00rootroot/* Bulk certificate / CSR operations. * Pure DB-layer helpers shared by the GUI (ca.c) and the CLI * (ca-cli-callbacks.c). No GTK / readline dependencies. */ #ifndef _CA_BULK_H_ #define _CA_BULK_H_ #include /* Revoke every certificate whose id is in `cert_ids`. Skips entries * that aren't certs or are already revoked. Returns the count of * actually-revoked entries. If `error_out` is non-NULL, the first * underlying error is stored there (caller frees with g_free). */ gint ca_bulk_revoke_ids (GSList *cert_ids, gchar **error_out); /* Delete every CSR whose id is in `csr_ids`. Skips entries that aren't * CSRs. Returns the count of actually-deleted entries. */ gint ca_bulk_delete_csr_ids (GSList *csr_ids, gchar **error_out); #endif gnomint-1.6.4/src/gnomint-upgrade-db0000755000000000000000000000234615212761266016150 0ustar00rootroot#!/bin/sh if [ $# -ne 1 ] then echo echo "gnoMint database converter" echo "by David Marin " echo " " echo " Sintax: $0 ( -h | --help | gnoMint-db.filename ) " echo " " echo " `basename $0` converts an old (pre 0.1.4 version) gnoMint " echo " database (based in sqlite2) into a new database compatible with " echo " gnoMint 0.1.4 and newer, based in sqlite3" echo fi if [ ! `which sqlite` ] then echo "Sorry, but sqlite program (version 2) is required for make the " echo "conversion. Please install it." exit fi if [ ! `which sqlite3` ] then echo "Sorry, but sqlite3 program is required for make the conversion. Please" echo "install it." exit fi if [ ! -e $1 ] then echo "Sorry, the given file '$1' doesn't exist." exit fi if [ \( ! -r $1 \) -o \( ! -w $1 \) ] then echo "Sorry. You don't have enough permissions for reading and/or writing" echo "the given file." exit fi TMPFILE=`mktemp` echo .dump | sqlite $1 > $TMPFILE || (echo "There was a problem while extracting data from file."; echo "Conversion process cancelled"; exit) mv $1 $1.bak cat $TMPFILE | sqlite3 $1 && rm $TMPFILE echo "File converted successfully." gnomint-1.6.4/src/cert_row.h0000644000000000000000000000575215212761266014540 0ustar00rootroot#ifndef CERT_ROW_H #define CERT_ROW_H #include #include #include G_BEGIN_DECLS #define GNOMINT_TYPE_CERT_ROW (gnomint_cert_row_get_type()) G_DECLARE_FINAL_TYPE (GnomintCertRow, gnomint_cert_row, GNOMINT, CERT_ROW, GObject) enum { GNOMINT_ROW_TYPE_CA = 0, GNOMINT_ROW_TYPE_CERT = 1, GNOMINT_ROW_TYPE_CSR = 2, }; GnomintCertRow *gnomint_cert_row_new (void); void gnomint_cert_row_set_id (GnomintCertRow *self, guint64 id); guint64 gnomint_cert_row_get_id (GnomintCertRow *self); void gnomint_cert_row_set_is_ca (GnomintCertRow *self, gboolean is_ca); gboolean gnomint_cert_row_get_is_ca (GnomintCertRow *self); void gnomint_cert_row_set_serial (GnomintCertRow *self, const gchar *serial); const gchar *gnomint_cert_row_get_serial (GnomintCertRow *self); void gnomint_cert_row_set_subject (GnomintCertRow *self, const gchar *subject); const gchar *gnomint_cert_row_get_subject (GnomintCertRow *self); void gnomint_cert_row_set_activation (GnomintCertRow *self, const gchar *activation); const gchar *gnomint_cert_row_get_activation (GnomintCertRow *self); void gnomint_cert_row_set_expiration (GnomintCertRow *self, const gchar *expiration); const gchar *gnomint_cert_row_get_expiration (GnomintCertRow *self); void gnomint_cert_row_set_revocation (GnomintCertRow *self, gboolean revoked); gboolean gnomint_cert_row_get_revocation (GnomintCertRow *self); void gnomint_cert_row_set_pkey_in_db (GnomintCertRow *self, gboolean in_db); gboolean gnomint_cert_row_get_pkey_in_db (GnomintCertRow *self); void gnomint_cert_row_set_pem (GnomintCertRow *self, const gchar *pem); const gchar *gnomint_cert_row_get_pem (GnomintCertRow *self); void gnomint_cert_row_set_dn (GnomintCertRow *self, const gchar *dn); const gchar *gnomint_cert_row_get_dn (GnomintCertRow *self); void gnomint_cert_row_set_parent_dn (GnomintCertRow *self, const gchar *dn); const gchar *gnomint_cert_row_get_parent_dn (GnomintCertRow *self); void gnomint_cert_row_set_parent_route (GnomintCertRow *self, const gchar *route); const gchar *gnomint_cert_row_get_parent_route (GnomintCertRow *self); void gnomint_cert_row_set_item_type (GnomintCertRow *self, gint type); gint gnomint_cert_row_get_item_type (GnomintCertRow *self); void gnomint_cert_row_set_parent_id (GnomintCertRow *self, guint64 parent_id); guint64 gnomint_cert_row_get_parent_id (GnomintCertRow *self); void gnomint_cert_row_set_foreground (GnomintCertRow *self, const gchar *color); const gchar *gnomint_cert_row_get_foreground (GnomintCertRow *self); void gnomint_cert_row_set_effective_expiration (GnomintCertRow *self, time_t exp); time_t gnomint_cert_row_get_effective_expiration (GnomintCertRow *self); GListStore *gnomint_cert_row_get_children (GnomintCertRow *self); G_END_DECLS #endif /* CERT_ROW_H */ gnomint-1.6.4/src/Makefile.in0000644000000000000000000041656015212761274014612 0ustar00rootroot# Makefile.in generated by automake 1.18.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2025 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) am__rm_f = rm -f $(am__rm_f_notfound) am__rm_rf = rm -rf $(am__rm_f_notfound) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ bin_PROGRAMS = gnomint$(EXEEXT) gnomint-cli$(EXEEXT) subdir = src ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)" PROGRAMS = $(bin_PROGRAMS) am_gnomint_OBJECTS = gnomint-main.$(OBJEXT) gnomint-cert_row.$(OBJEXT) \ gnomint-prop_node.$(OBJEXT) gnomint-ca_selector.$(OBJEXT) \ gnomint-country_table.$(OBJEXT) \ gnomint-new_ca_window.$(OBJEXT) \ gnomint-new_req_window.$(OBJEXT) gnomint-new_cert.$(OBJEXT) \ gnomint-cert_renewal.$(OBJEXT) gnomint-cert_diff.$(OBJEXT) \ gnomint-ca_bulk.$(OBJEXT) \ gnomint-creation_process_window.$(OBJEXT) \ gnomint-dialog.$(OBJEXT) gnomint-gnomint_time.$(OBJEXT) \ gnomint-ca.$(OBJEXT) gnomint-ca_creation.$(OBJEXT) \ gnomint-tls.$(OBJEXT) gnomint-ca_file.$(OBJEXT) \ gnomint-certificate_properties.$(OBJEXT) \ gnomint-ca_policy.$(OBJEXT) gnomint-csr_creation.$(OBJEXT) \ gnomint-csr_properties.$(OBJEXT) gnomint-pkey_manage.$(OBJEXT) \ gnomint-preferences-gui.$(OBJEXT) \ gnomint-preferences-window.$(OBJEXT) gnomint-crl.$(OBJEXT) \ gnomint-uint160.$(OBJEXT) gnomint-import.$(OBJEXT) \ gnomint-export.$(OBJEXT) gnomint-san_entry.$(OBJEXT) \ gnomint-san_manager.$(OBJEXT) gnomint-wizard_window.$(OBJEXT) gnomint_OBJECTS = $(am_gnomint_OBJECTS) am__DEPENDENCIES_1 = gnomint_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = gnomint_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(gnomint_CFLAGS) \ $(CFLAGS) $(gnomint_LDFLAGS) $(LDFLAGS) -o $@ am_gnomint_cli_OBJECTS = gnomint_cli-dialog.$(OBJEXT) \ gnomint_cli-gnomint_time.$(OBJEXT) \ gnomint_cli-gnomint-cli.$(OBJEXT) gnomint_cli-export.$(OBJEXT) \ gnomint_cli-ca-cli.$(OBJEXT) \ gnomint_cli-ca-cli-callbacks.$(OBJEXT) \ gnomint_cli-ca_creation.$(OBJEXT) \ gnomint_cli-ca_file.$(OBJEXT) gnomint_cli-ca_policy.$(OBJEXT) \ gnomint_cli-ca_bulk.$(OBJEXT) \ gnomint_cli-cert_renewal.$(OBJEXT) \ gnomint_cli-cert_diff.$(OBJEXT) gnomint_cli-crl.$(OBJEXT) \ gnomint_cli-csr_creation.$(OBJEXT) \ gnomint_cli-import.$(OBJEXT) gnomint_cli-new_cert.$(OBJEXT) \ gnomint_cli-preferences.$(OBJEXT) \ gnomint_cli-pkey_manage.$(OBJEXT) gnomint_cli-tls.$(OBJEXT) \ gnomint_cli-uint160.$(OBJEXT) gnomint_cli_OBJECTS = $(am_gnomint_cli_OBJECTS) gnomint_cli_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) gnomint_cli_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(gnomint_cli_CFLAGS) \ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && echo $$files | $(am__xargs_n) 40 $(am__rm_f); }; \ } SCRIPTS = $(bin_SCRIPTS) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/gnomint-ca.Po \ ./$(DEPDIR)/gnomint-ca_bulk.Po \ ./$(DEPDIR)/gnomint-ca_creation.Po \ ./$(DEPDIR)/gnomint-ca_file.Po \ ./$(DEPDIR)/gnomint-ca_policy.Po \ ./$(DEPDIR)/gnomint-ca_selector.Po \ ./$(DEPDIR)/gnomint-cert_diff.Po \ ./$(DEPDIR)/gnomint-cert_renewal.Po \ ./$(DEPDIR)/gnomint-cert_row.Po \ ./$(DEPDIR)/gnomint-certificate_properties.Po \ ./$(DEPDIR)/gnomint-country_table.Po \ ./$(DEPDIR)/gnomint-creation_process_window.Po \ ./$(DEPDIR)/gnomint-crl.Po ./$(DEPDIR)/gnomint-csr_creation.Po \ ./$(DEPDIR)/gnomint-csr_properties.Po \ ./$(DEPDIR)/gnomint-dialog.Po ./$(DEPDIR)/gnomint-export.Po \ ./$(DEPDIR)/gnomint-gnomint_time.Po \ ./$(DEPDIR)/gnomint-import.Po ./$(DEPDIR)/gnomint-main.Po \ ./$(DEPDIR)/gnomint-new_ca_window.Po \ ./$(DEPDIR)/gnomint-new_cert.Po \ ./$(DEPDIR)/gnomint-new_req_window.Po \ ./$(DEPDIR)/gnomint-pkey_manage.Po \ ./$(DEPDIR)/gnomint-preferences-gui.Po \ ./$(DEPDIR)/gnomint-preferences-window.Po \ ./$(DEPDIR)/gnomint-prop_node.Po \ ./$(DEPDIR)/gnomint-san_entry.Po \ ./$(DEPDIR)/gnomint-san_manager.Po ./$(DEPDIR)/gnomint-tls.Po \ ./$(DEPDIR)/gnomint-uint160.Po \ ./$(DEPDIR)/gnomint-wizard_window.Po \ ./$(DEPDIR)/gnomint_cli-ca-cli-callbacks.Po \ ./$(DEPDIR)/gnomint_cli-ca-cli.Po \ ./$(DEPDIR)/gnomint_cli-ca_bulk.Po \ ./$(DEPDIR)/gnomint_cli-ca_creation.Po \ ./$(DEPDIR)/gnomint_cli-ca_file.Po \ ./$(DEPDIR)/gnomint_cli-ca_policy.Po \ ./$(DEPDIR)/gnomint_cli-cert_diff.Po \ ./$(DEPDIR)/gnomint_cli-cert_renewal.Po \ ./$(DEPDIR)/gnomint_cli-crl.Po \ ./$(DEPDIR)/gnomint_cli-csr_creation.Po \ ./$(DEPDIR)/gnomint_cli-dialog.Po \ ./$(DEPDIR)/gnomint_cli-export.Po \ ./$(DEPDIR)/gnomint_cli-gnomint-cli.Po \ ./$(DEPDIR)/gnomint_cli-gnomint_time.Po \ ./$(DEPDIR)/gnomint_cli-import.Po \ ./$(DEPDIR)/gnomint_cli-new_cert.Po \ ./$(DEPDIR)/gnomint_cli-pkey_manage.Po \ ./$(DEPDIR)/gnomint_cli-preferences.Po \ ./$(DEPDIR)/gnomint_cli-tls.Po \ ./$(DEPDIR)/gnomint_cli-uint160.Po am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(gnomint_SOURCES) $(gnomint_cli_SOURCES) DIST_SOURCES = $(gnomint_SOURCES) $(gnomint_cli_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GNOMINTCLI_CFLAGS = @GNOMINTCLI_CFLAGS@ GNOMINTCLI_LIBS = @GNOMINTCLI_LIBS@ GNOMINT_CFLAGS = @GNOMINT_CFLAGS@ GNOMINT_LIBS = @GNOMINT_LIBS@ GPGRT_CONFIG = @GPGRT_CONFIG@ GREP = @GREP@ GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBGCRYPT_CFLAGS = @LIBGCRYPT_CFLAGS@ LIBGCRYPT_CONFIG = @LIBGCRYPT_CONFIG@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ READLINE_LIBS = @READLINE_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SQLITE_CFLAGS = @SQLITE_CFLAGS@ SQLITE_LIBS = @SQLITE_LIBS@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ WINSOCK_LIBS = @WINSOCK_LIBS@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__rm_f_notfound = @am__rm_f_notfound@ am__tar = @am__tar@ am__untar = @am__untar@ am__xargs_n = @am__xargs_n@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ gsettingsschemadir = @gsettingsschemadir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ bin_SCRIPTS = gnomint-upgrade-db gnomint_CFLAGS = \ -I$(top_srcdir) \ -I$(top_builddir) \ $(GNOMINT_CFLAGS) \ $(LIBGNUTLS_CFLAGS) \ $(LIBGCRYPT_CFLAGS) \ $(SQLITE_CFLAGS) \ -DPACKAGE_DATA_DIR=\""$(datadir)"\" \ -DCOMPILATION_DATE=`date +%s` \ -DHAVE_CONFIG_H \ -DGDK_VERSION_MIN_REQUIRED=GDK_VERSION_4_10 \ -Wall -Werror gnomint_SOURCES = \ main.c \ cert_row.c \ cert_row.h \ prop_node.c \ prop_node.h \ ca_selector.c \ ca_selector.h \ country_table.c \ new_ca_window.c \ new_req_window.c \ new_cert.c \ cert_renewal.c \ cert_diff.c \ ca_bulk.c \ creation_process_window.c \ dialog.c \ gnomint_time.c \ gnomint_time.h \ ca.c \ ca_creation.c \ tls.c \ ca_file.c \ certificate_properties.c \ ca_policy.c \ csr_creation.c \ csr_properties.c \ pkey_manage.c \ preferences-gui.c \ preferences-window.c \ crl.c \ uint160.c \ import.c \ export.c \ san_entry.c \ san_entry.h \ san_manager.c \ san_manager.h \ wizard_window.c gnomint_LDADD = \ $(GNOMINT_LIBS) \ $(LIBGCRYPT_LIBS) \ $(LIBGNUTLS_LIBS) \ $(SQLITE_LIBS) \ $(WINSOCK_LIBS) \ $(LTLIBINTL) gnomint_LDFLAGS = \ -export-dynamic gnomint_cli_CFLAGS = \ -I$(top_srcdir) \ -I$(top_builddir) \ $(GNOMINTCLI_CFLAGS) \ $(LIBGCRYPT_CFLAGS) \ $(LIBGNUTLS_CFLAGS) \ $(SQLITE_CFLAGS) \ -DPACKAGE_DATA_DIR=\""$(datadir)"\" \ -DCOMPILATION_DATE=`date +%s` \ -DHAVE_CONFIG_H -DGNOMINTCLI \ -Wall -Werror gnomint_cli_SOURCES = \ dialog.c \ gnomint_time.c \ gnomint_time.h \ gnomint-cli.c \ export.c \ ca-cli.c \ ca-cli-callbacks.c \ ca_creation.c \ ca_file.c \ ca_policy.c \ ca_bulk.c \ cert_renewal.c \ cert_diff.c \ crl.c \ csr_creation.c \ import.c \ new_cert.c \ preferences.c \ pkey_manage.c \ tls.c \ uint160.c gnomint_cli_LDADD = \ $(GNOMINTCLI_LIBS) \ $(LIBGCRYPT_LIBS) \ $(LIBGNUTLS_LIBS) \ $(SQLITE_LIBS) \ $(READLINE_LIBS) \ $(WINSOCK_LIBS) \ $(LTLIBINTL) EXTRA_DIST = \ gnomint-upgrade-db \ ca_creation.h \ ca_file.h \ ca.h \ ca_selector.h \ ca_policy.h \ certificate_properties.h \ country_table.h \ csr_creation.h \ csr_properties.h \ prop_node.h \ dialog.h \ export.h \ main.h \ creation_process_window.h \ new_ca_window.h \ new_req_window.h \ new_cert.h \ cert_renewal.h \ cert_diff.h \ ca_bulk.h \ tls.h\ pkey_manage.h \ preferences.h \ preferences-gui.h \ preferences-window.h \ crl.h \ uint160.h \ import.h \ ca-cli.h \ ca-cli-callbacks.h \ time64_check.h \ wizard_window.h all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign src/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p \ || test -f $$p1 \ ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' \ -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' \ `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && $(am__rm_f) $$files clean-binPROGRAMS: $(am__rm_f) $(bin_PROGRAMS) test -z "$(EXEEXT)" || $(am__rm_f) $(bin_PROGRAMS:$(EXEEXT)=) gnomint$(EXEEXT): $(gnomint_OBJECTS) $(gnomint_DEPENDENCIES) $(EXTRA_gnomint_DEPENDENCIES) @rm -f gnomint$(EXEEXT) $(AM_V_CCLD)$(gnomint_LINK) $(gnomint_OBJECTS) $(gnomint_LDADD) $(LIBS) gnomint-cli$(EXEEXT): $(gnomint_cli_OBJECTS) $(gnomint_cli_DEPENDENCIES) $(EXTRA_gnomint_cli_DEPENDENCIES) @rm -f gnomint-cli$(EXEEXT) $(AM_V_CCLD)$(gnomint_cli_LINK) $(gnomint_cli_OBJECTS) $(gnomint_cli_LDADD) $(LIBS) install-binSCRIPTS: $(bin_SCRIPTS) @$(NORMAL_INSTALL) @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnomint-ca.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnomint-ca_bulk.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnomint-ca_creation.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnomint-ca_file.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnomint-ca_policy.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnomint-ca_selector.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnomint-cert_diff.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnomint-cert_renewal.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnomint-cert_row.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnomint-certificate_properties.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnomint-country_table.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnomint-creation_process_window.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnomint-crl.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnomint-csr_creation.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnomint-csr_properties.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnomint-dialog.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnomint-export.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnomint-gnomint_time.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnomint-import.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnomint-main.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnomint-new_ca_window.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnomint-new_cert.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnomint-new_req_window.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnomint-pkey_manage.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnomint-preferences-gui.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnomint-preferences-window.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnomint-prop_node.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnomint-san_entry.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnomint-san_manager.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnomint-tls.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnomint-uint160.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnomint-wizard_window.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnomint_cli-ca-cli-callbacks.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnomint_cli-ca-cli.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnomint_cli-ca_bulk.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnomint_cli-ca_creation.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnomint_cli-ca_file.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnomint_cli-ca_policy.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnomint_cli-cert_diff.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnomint_cli-cert_renewal.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnomint_cli-crl.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnomint_cli-csr_creation.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnomint_cli-dialog.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnomint_cli-export.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnomint_cli-gnomint-cli.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnomint_cli-gnomint_time.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnomint_cli-import.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnomint_cli-new_cert.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnomint_cli-pkey_manage.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnomint_cli-preferences.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnomint_cli-tls.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnomint_cli-uint160.Po@am__quote@ # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @: >>$@ am--depfiles: $(am__depfiles_remade) .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< gnomint-main.o: main.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-main.o -MD -MP -MF $(DEPDIR)/gnomint-main.Tpo -c -o gnomint-main.o `test -f 'main.c' || echo '$(srcdir)/'`main.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-main.Tpo $(DEPDIR)/gnomint-main.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='main.c' object='gnomint-main.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-main.o `test -f 'main.c' || echo '$(srcdir)/'`main.c gnomint-main.obj: main.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-main.obj -MD -MP -MF $(DEPDIR)/gnomint-main.Tpo -c -o gnomint-main.obj `if test -f 'main.c'; then $(CYGPATH_W) 'main.c'; else $(CYGPATH_W) '$(srcdir)/main.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-main.Tpo $(DEPDIR)/gnomint-main.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='main.c' object='gnomint-main.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-main.obj `if test -f 'main.c'; then $(CYGPATH_W) 'main.c'; else $(CYGPATH_W) '$(srcdir)/main.c'; fi` gnomint-cert_row.o: cert_row.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-cert_row.o -MD -MP -MF $(DEPDIR)/gnomint-cert_row.Tpo -c -o gnomint-cert_row.o `test -f 'cert_row.c' || echo '$(srcdir)/'`cert_row.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-cert_row.Tpo $(DEPDIR)/gnomint-cert_row.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='cert_row.c' object='gnomint-cert_row.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-cert_row.o `test -f 'cert_row.c' || echo '$(srcdir)/'`cert_row.c gnomint-cert_row.obj: cert_row.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-cert_row.obj -MD -MP -MF $(DEPDIR)/gnomint-cert_row.Tpo -c -o gnomint-cert_row.obj `if test -f 'cert_row.c'; then $(CYGPATH_W) 'cert_row.c'; else $(CYGPATH_W) '$(srcdir)/cert_row.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-cert_row.Tpo $(DEPDIR)/gnomint-cert_row.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='cert_row.c' object='gnomint-cert_row.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-cert_row.obj `if test -f 'cert_row.c'; then $(CYGPATH_W) 'cert_row.c'; else $(CYGPATH_W) '$(srcdir)/cert_row.c'; fi` gnomint-prop_node.o: prop_node.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-prop_node.o -MD -MP -MF $(DEPDIR)/gnomint-prop_node.Tpo -c -o gnomint-prop_node.o `test -f 'prop_node.c' || echo '$(srcdir)/'`prop_node.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-prop_node.Tpo $(DEPDIR)/gnomint-prop_node.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='prop_node.c' object='gnomint-prop_node.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-prop_node.o `test -f 'prop_node.c' || echo '$(srcdir)/'`prop_node.c gnomint-prop_node.obj: prop_node.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-prop_node.obj -MD -MP -MF $(DEPDIR)/gnomint-prop_node.Tpo -c -o gnomint-prop_node.obj `if test -f 'prop_node.c'; then $(CYGPATH_W) 'prop_node.c'; else $(CYGPATH_W) '$(srcdir)/prop_node.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-prop_node.Tpo $(DEPDIR)/gnomint-prop_node.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='prop_node.c' object='gnomint-prop_node.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-prop_node.obj `if test -f 'prop_node.c'; then $(CYGPATH_W) 'prop_node.c'; else $(CYGPATH_W) '$(srcdir)/prop_node.c'; fi` gnomint-ca_selector.o: ca_selector.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-ca_selector.o -MD -MP -MF $(DEPDIR)/gnomint-ca_selector.Tpo -c -o gnomint-ca_selector.o `test -f 'ca_selector.c' || echo '$(srcdir)/'`ca_selector.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-ca_selector.Tpo $(DEPDIR)/gnomint-ca_selector.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ca_selector.c' object='gnomint-ca_selector.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-ca_selector.o `test -f 'ca_selector.c' || echo '$(srcdir)/'`ca_selector.c gnomint-ca_selector.obj: ca_selector.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-ca_selector.obj -MD -MP -MF $(DEPDIR)/gnomint-ca_selector.Tpo -c -o gnomint-ca_selector.obj `if test -f 'ca_selector.c'; then $(CYGPATH_W) 'ca_selector.c'; else $(CYGPATH_W) '$(srcdir)/ca_selector.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-ca_selector.Tpo $(DEPDIR)/gnomint-ca_selector.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ca_selector.c' object='gnomint-ca_selector.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-ca_selector.obj `if test -f 'ca_selector.c'; then $(CYGPATH_W) 'ca_selector.c'; else $(CYGPATH_W) '$(srcdir)/ca_selector.c'; fi` gnomint-country_table.o: country_table.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-country_table.o -MD -MP -MF $(DEPDIR)/gnomint-country_table.Tpo -c -o gnomint-country_table.o `test -f 'country_table.c' || echo '$(srcdir)/'`country_table.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-country_table.Tpo $(DEPDIR)/gnomint-country_table.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='country_table.c' object='gnomint-country_table.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-country_table.o `test -f 'country_table.c' || echo '$(srcdir)/'`country_table.c gnomint-country_table.obj: country_table.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-country_table.obj -MD -MP -MF $(DEPDIR)/gnomint-country_table.Tpo -c -o gnomint-country_table.obj `if test -f 'country_table.c'; then $(CYGPATH_W) 'country_table.c'; else $(CYGPATH_W) '$(srcdir)/country_table.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-country_table.Tpo $(DEPDIR)/gnomint-country_table.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='country_table.c' object='gnomint-country_table.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-country_table.obj `if test -f 'country_table.c'; then $(CYGPATH_W) 'country_table.c'; else $(CYGPATH_W) '$(srcdir)/country_table.c'; fi` gnomint-new_ca_window.o: new_ca_window.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-new_ca_window.o -MD -MP -MF $(DEPDIR)/gnomint-new_ca_window.Tpo -c -o gnomint-new_ca_window.o `test -f 'new_ca_window.c' || echo '$(srcdir)/'`new_ca_window.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-new_ca_window.Tpo $(DEPDIR)/gnomint-new_ca_window.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='new_ca_window.c' object='gnomint-new_ca_window.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-new_ca_window.o `test -f 'new_ca_window.c' || echo '$(srcdir)/'`new_ca_window.c gnomint-new_ca_window.obj: new_ca_window.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-new_ca_window.obj -MD -MP -MF $(DEPDIR)/gnomint-new_ca_window.Tpo -c -o gnomint-new_ca_window.obj `if test -f 'new_ca_window.c'; then $(CYGPATH_W) 'new_ca_window.c'; else $(CYGPATH_W) '$(srcdir)/new_ca_window.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-new_ca_window.Tpo $(DEPDIR)/gnomint-new_ca_window.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='new_ca_window.c' object='gnomint-new_ca_window.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-new_ca_window.obj `if test -f 'new_ca_window.c'; then $(CYGPATH_W) 'new_ca_window.c'; else $(CYGPATH_W) '$(srcdir)/new_ca_window.c'; fi` gnomint-new_req_window.o: new_req_window.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-new_req_window.o -MD -MP -MF $(DEPDIR)/gnomint-new_req_window.Tpo -c -o gnomint-new_req_window.o `test -f 'new_req_window.c' || echo '$(srcdir)/'`new_req_window.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-new_req_window.Tpo $(DEPDIR)/gnomint-new_req_window.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='new_req_window.c' object='gnomint-new_req_window.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-new_req_window.o `test -f 'new_req_window.c' || echo '$(srcdir)/'`new_req_window.c gnomint-new_req_window.obj: new_req_window.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-new_req_window.obj -MD -MP -MF $(DEPDIR)/gnomint-new_req_window.Tpo -c -o gnomint-new_req_window.obj `if test -f 'new_req_window.c'; then $(CYGPATH_W) 'new_req_window.c'; else $(CYGPATH_W) '$(srcdir)/new_req_window.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-new_req_window.Tpo $(DEPDIR)/gnomint-new_req_window.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='new_req_window.c' object='gnomint-new_req_window.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-new_req_window.obj `if test -f 'new_req_window.c'; then $(CYGPATH_W) 'new_req_window.c'; else $(CYGPATH_W) '$(srcdir)/new_req_window.c'; fi` gnomint-new_cert.o: new_cert.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-new_cert.o -MD -MP -MF $(DEPDIR)/gnomint-new_cert.Tpo -c -o gnomint-new_cert.o `test -f 'new_cert.c' || echo '$(srcdir)/'`new_cert.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-new_cert.Tpo $(DEPDIR)/gnomint-new_cert.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='new_cert.c' object='gnomint-new_cert.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-new_cert.o `test -f 'new_cert.c' || echo '$(srcdir)/'`new_cert.c gnomint-new_cert.obj: new_cert.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-new_cert.obj -MD -MP -MF $(DEPDIR)/gnomint-new_cert.Tpo -c -o gnomint-new_cert.obj `if test -f 'new_cert.c'; then $(CYGPATH_W) 'new_cert.c'; else $(CYGPATH_W) '$(srcdir)/new_cert.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-new_cert.Tpo $(DEPDIR)/gnomint-new_cert.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='new_cert.c' object='gnomint-new_cert.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-new_cert.obj `if test -f 'new_cert.c'; then $(CYGPATH_W) 'new_cert.c'; else $(CYGPATH_W) '$(srcdir)/new_cert.c'; fi` gnomint-cert_renewal.o: cert_renewal.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-cert_renewal.o -MD -MP -MF $(DEPDIR)/gnomint-cert_renewal.Tpo -c -o gnomint-cert_renewal.o `test -f 'cert_renewal.c' || echo '$(srcdir)/'`cert_renewal.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-cert_renewal.Tpo $(DEPDIR)/gnomint-cert_renewal.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='cert_renewal.c' object='gnomint-cert_renewal.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-cert_renewal.o `test -f 'cert_renewal.c' || echo '$(srcdir)/'`cert_renewal.c gnomint-cert_renewal.obj: cert_renewal.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-cert_renewal.obj -MD -MP -MF $(DEPDIR)/gnomint-cert_renewal.Tpo -c -o gnomint-cert_renewal.obj `if test -f 'cert_renewal.c'; then $(CYGPATH_W) 'cert_renewal.c'; else $(CYGPATH_W) '$(srcdir)/cert_renewal.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-cert_renewal.Tpo $(DEPDIR)/gnomint-cert_renewal.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='cert_renewal.c' object='gnomint-cert_renewal.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-cert_renewal.obj `if test -f 'cert_renewal.c'; then $(CYGPATH_W) 'cert_renewal.c'; else $(CYGPATH_W) '$(srcdir)/cert_renewal.c'; fi` gnomint-cert_diff.o: cert_diff.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-cert_diff.o -MD -MP -MF $(DEPDIR)/gnomint-cert_diff.Tpo -c -o gnomint-cert_diff.o `test -f 'cert_diff.c' || echo '$(srcdir)/'`cert_diff.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-cert_diff.Tpo $(DEPDIR)/gnomint-cert_diff.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='cert_diff.c' object='gnomint-cert_diff.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-cert_diff.o `test -f 'cert_diff.c' || echo '$(srcdir)/'`cert_diff.c gnomint-cert_diff.obj: cert_diff.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-cert_diff.obj -MD -MP -MF $(DEPDIR)/gnomint-cert_diff.Tpo -c -o gnomint-cert_diff.obj `if test -f 'cert_diff.c'; then $(CYGPATH_W) 'cert_diff.c'; else $(CYGPATH_W) '$(srcdir)/cert_diff.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-cert_diff.Tpo $(DEPDIR)/gnomint-cert_diff.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='cert_diff.c' object='gnomint-cert_diff.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-cert_diff.obj `if test -f 'cert_diff.c'; then $(CYGPATH_W) 'cert_diff.c'; else $(CYGPATH_W) '$(srcdir)/cert_diff.c'; fi` gnomint-ca_bulk.o: ca_bulk.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-ca_bulk.o -MD -MP -MF $(DEPDIR)/gnomint-ca_bulk.Tpo -c -o gnomint-ca_bulk.o `test -f 'ca_bulk.c' || echo '$(srcdir)/'`ca_bulk.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-ca_bulk.Tpo $(DEPDIR)/gnomint-ca_bulk.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ca_bulk.c' object='gnomint-ca_bulk.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-ca_bulk.o `test -f 'ca_bulk.c' || echo '$(srcdir)/'`ca_bulk.c gnomint-ca_bulk.obj: ca_bulk.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-ca_bulk.obj -MD -MP -MF $(DEPDIR)/gnomint-ca_bulk.Tpo -c -o gnomint-ca_bulk.obj `if test -f 'ca_bulk.c'; then $(CYGPATH_W) 'ca_bulk.c'; else $(CYGPATH_W) '$(srcdir)/ca_bulk.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-ca_bulk.Tpo $(DEPDIR)/gnomint-ca_bulk.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ca_bulk.c' object='gnomint-ca_bulk.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-ca_bulk.obj `if test -f 'ca_bulk.c'; then $(CYGPATH_W) 'ca_bulk.c'; else $(CYGPATH_W) '$(srcdir)/ca_bulk.c'; fi` gnomint-creation_process_window.o: creation_process_window.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-creation_process_window.o -MD -MP -MF $(DEPDIR)/gnomint-creation_process_window.Tpo -c -o gnomint-creation_process_window.o `test -f 'creation_process_window.c' || echo '$(srcdir)/'`creation_process_window.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-creation_process_window.Tpo $(DEPDIR)/gnomint-creation_process_window.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='creation_process_window.c' object='gnomint-creation_process_window.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-creation_process_window.o `test -f 'creation_process_window.c' || echo '$(srcdir)/'`creation_process_window.c gnomint-creation_process_window.obj: creation_process_window.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-creation_process_window.obj -MD -MP -MF $(DEPDIR)/gnomint-creation_process_window.Tpo -c -o gnomint-creation_process_window.obj `if test -f 'creation_process_window.c'; then $(CYGPATH_W) 'creation_process_window.c'; else $(CYGPATH_W) '$(srcdir)/creation_process_window.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-creation_process_window.Tpo $(DEPDIR)/gnomint-creation_process_window.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='creation_process_window.c' object='gnomint-creation_process_window.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-creation_process_window.obj `if test -f 'creation_process_window.c'; then $(CYGPATH_W) 'creation_process_window.c'; else $(CYGPATH_W) '$(srcdir)/creation_process_window.c'; fi` gnomint-dialog.o: dialog.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-dialog.o -MD -MP -MF $(DEPDIR)/gnomint-dialog.Tpo -c -o gnomint-dialog.o `test -f 'dialog.c' || echo '$(srcdir)/'`dialog.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-dialog.Tpo $(DEPDIR)/gnomint-dialog.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dialog.c' object='gnomint-dialog.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-dialog.o `test -f 'dialog.c' || echo '$(srcdir)/'`dialog.c gnomint-dialog.obj: dialog.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-dialog.obj -MD -MP -MF $(DEPDIR)/gnomint-dialog.Tpo -c -o gnomint-dialog.obj `if test -f 'dialog.c'; then $(CYGPATH_W) 'dialog.c'; else $(CYGPATH_W) '$(srcdir)/dialog.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-dialog.Tpo $(DEPDIR)/gnomint-dialog.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dialog.c' object='gnomint-dialog.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-dialog.obj `if test -f 'dialog.c'; then $(CYGPATH_W) 'dialog.c'; else $(CYGPATH_W) '$(srcdir)/dialog.c'; fi` gnomint-gnomint_time.o: gnomint_time.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-gnomint_time.o -MD -MP -MF $(DEPDIR)/gnomint-gnomint_time.Tpo -c -o gnomint-gnomint_time.o `test -f 'gnomint_time.c' || echo '$(srcdir)/'`gnomint_time.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-gnomint_time.Tpo $(DEPDIR)/gnomint-gnomint_time.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gnomint_time.c' object='gnomint-gnomint_time.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-gnomint_time.o `test -f 'gnomint_time.c' || echo '$(srcdir)/'`gnomint_time.c gnomint-gnomint_time.obj: gnomint_time.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-gnomint_time.obj -MD -MP -MF $(DEPDIR)/gnomint-gnomint_time.Tpo -c -o gnomint-gnomint_time.obj `if test -f 'gnomint_time.c'; then $(CYGPATH_W) 'gnomint_time.c'; else $(CYGPATH_W) '$(srcdir)/gnomint_time.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-gnomint_time.Tpo $(DEPDIR)/gnomint-gnomint_time.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gnomint_time.c' object='gnomint-gnomint_time.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-gnomint_time.obj `if test -f 'gnomint_time.c'; then $(CYGPATH_W) 'gnomint_time.c'; else $(CYGPATH_W) '$(srcdir)/gnomint_time.c'; fi` gnomint-ca.o: ca.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-ca.o -MD -MP -MF $(DEPDIR)/gnomint-ca.Tpo -c -o gnomint-ca.o `test -f 'ca.c' || echo '$(srcdir)/'`ca.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-ca.Tpo $(DEPDIR)/gnomint-ca.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ca.c' object='gnomint-ca.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-ca.o `test -f 'ca.c' || echo '$(srcdir)/'`ca.c gnomint-ca.obj: ca.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-ca.obj -MD -MP -MF $(DEPDIR)/gnomint-ca.Tpo -c -o gnomint-ca.obj `if test -f 'ca.c'; then $(CYGPATH_W) 'ca.c'; else $(CYGPATH_W) '$(srcdir)/ca.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-ca.Tpo $(DEPDIR)/gnomint-ca.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ca.c' object='gnomint-ca.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-ca.obj `if test -f 'ca.c'; then $(CYGPATH_W) 'ca.c'; else $(CYGPATH_W) '$(srcdir)/ca.c'; fi` gnomint-ca_creation.o: ca_creation.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-ca_creation.o -MD -MP -MF $(DEPDIR)/gnomint-ca_creation.Tpo -c -o gnomint-ca_creation.o `test -f 'ca_creation.c' || echo '$(srcdir)/'`ca_creation.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-ca_creation.Tpo $(DEPDIR)/gnomint-ca_creation.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ca_creation.c' object='gnomint-ca_creation.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-ca_creation.o `test -f 'ca_creation.c' || echo '$(srcdir)/'`ca_creation.c gnomint-ca_creation.obj: ca_creation.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-ca_creation.obj -MD -MP -MF $(DEPDIR)/gnomint-ca_creation.Tpo -c -o gnomint-ca_creation.obj `if test -f 'ca_creation.c'; then $(CYGPATH_W) 'ca_creation.c'; else $(CYGPATH_W) '$(srcdir)/ca_creation.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-ca_creation.Tpo $(DEPDIR)/gnomint-ca_creation.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ca_creation.c' object='gnomint-ca_creation.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-ca_creation.obj `if test -f 'ca_creation.c'; then $(CYGPATH_W) 'ca_creation.c'; else $(CYGPATH_W) '$(srcdir)/ca_creation.c'; fi` gnomint-tls.o: tls.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-tls.o -MD -MP -MF $(DEPDIR)/gnomint-tls.Tpo -c -o gnomint-tls.o `test -f 'tls.c' || echo '$(srcdir)/'`tls.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-tls.Tpo $(DEPDIR)/gnomint-tls.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tls.c' object='gnomint-tls.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-tls.o `test -f 'tls.c' || echo '$(srcdir)/'`tls.c gnomint-tls.obj: tls.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-tls.obj -MD -MP -MF $(DEPDIR)/gnomint-tls.Tpo -c -o gnomint-tls.obj `if test -f 'tls.c'; then $(CYGPATH_W) 'tls.c'; else $(CYGPATH_W) '$(srcdir)/tls.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-tls.Tpo $(DEPDIR)/gnomint-tls.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tls.c' object='gnomint-tls.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-tls.obj `if test -f 'tls.c'; then $(CYGPATH_W) 'tls.c'; else $(CYGPATH_W) '$(srcdir)/tls.c'; fi` gnomint-ca_file.o: ca_file.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-ca_file.o -MD -MP -MF $(DEPDIR)/gnomint-ca_file.Tpo -c -o gnomint-ca_file.o `test -f 'ca_file.c' || echo '$(srcdir)/'`ca_file.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-ca_file.Tpo $(DEPDIR)/gnomint-ca_file.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ca_file.c' object='gnomint-ca_file.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-ca_file.o `test -f 'ca_file.c' || echo '$(srcdir)/'`ca_file.c gnomint-ca_file.obj: ca_file.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-ca_file.obj -MD -MP -MF $(DEPDIR)/gnomint-ca_file.Tpo -c -o gnomint-ca_file.obj `if test -f 'ca_file.c'; then $(CYGPATH_W) 'ca_file.c'; else $(CYGPATH_W) '$(srcdir)/ca_file.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-ca_file.Tpo $(DEPDIR)/gnomint-ca_file.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ca_file.c' object='gnomint-ca_file.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-ca_file.obj `if test -f 'ca_file.c'; then $(CYGPATH_W) 'ca_file.c'; else $(CYGPATH_W) '$(srcdir)/ca_file.c'; fi` gnomint-certificate_properties.o: certificate_properties.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-certificate_properties.o -MD -MP -MF $(DEPDIR)/gnomint-certificate_properties.Tpo -c -o gnomint-certificate_properties.o `test -f 'certificate_properties.c' || echo '$(srcdir)/'`certificate_properties.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-certificate_properties.Tpo $(DEPDIR)/gnomint-certificate_properties.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='certificate_properties.c' object='gnomint-certificate_properties.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-certificate_properties.o `test -f 'certificate_properties.c' || echo '$(srcdir)/'`certificate_properties.c gnomint-certificate_properties.obj: certificate_properties.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-certificate_properties.obj -MD -MP -MF $(DEPDIR)/gnomint-certificate_properties.Tpo -c -o gnomint-certificate_properties.obj `if test -f 'certificate_properties.c'; then $(CYGPATH_W) 'certificate_properties.c'; else $(CYGPATH_W) '$(srcdir)/certificate_properties.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-certificate_properties.Tpo $(DEPDIR)/gnomint-certificate_properties.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='certificate_properties.c' object='gnomint-certificate_properties.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-certificate_properties.obj `if test -f 'certificate_properties.c'; then $(CYGPATH_W) 'certificate_properties.c'; else $(CYGPATH_W) '$(srcdir)/certificate_properties.c'; fi` gnomint-ca_policy.o: ca_policy.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-ca_policy.o -MD -MP -MF $(DEPDIR)/gnomint-ca_policy.Tpo -c -o gnomint-ca_policy.o `test -f 'ca_policy.c' || echo '$(srcdir)/'`ca_policy.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-ca_policy.Tpo $(DEPDIR)/gnomint-ca_policy.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ca_policy.c' object='gnomint-ca_policy.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-ca_policy.o `test -f 'ca_policy.c' || echo '$(srcdir)/'`ca_policy.c gnomint-ca_policy.obj: ca_policy.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-ca_policy.obj -MD -MP -MF $(DEPDIR)/gnomint-ca_policy.Tpo -c -o gnomint-ca_policy.obj `if test -f 'ca_policy.c'; then $(CYGPATH_W) 'ca_policy.c'; else $(CYGPATH_W) '$(srcdir)/ca_policy.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-ca_policy.Tpo $(DEPDIR)/gnomint-ca_policy.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ca_policy.c' object='gnomint-ca_policy.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-ca_policy.obj `if test -f 'ca_policy.c'; then $(CYGPATH_W) 'ca_policy.c'; else $(CYGPATH_W) '$(srcdir)/ca_policy.c'; fi` gnomint-csr_creation.o: csr_creation.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-csr_creation.o -MD -MP -MF $(DEPDIR)/gnomint-csr_creation.Tpo -c -o gnomint-csr_creation.o `test -f 'csr_creation.c' || echo '$(srcdir)/'`csr_creation.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-csr_creation.Tpo $(DEPDIR)/gnomint-csr_creation.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='csr_creation.c' object='gnomint-csr_creation.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-csr_creation.o `test -f 'csr_creation.c' || echo '$(srcdir)/'`csr_creation.c gnomint-csr_creation.obj: csr_creation.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-csr_creation.obj -MD -MP -MF $(DEPDIR)/gnomint-csr_creation.Tpo -c -o gnomint-csr_creation.obj `if test -f 'csr_creation.c'; then $(CYGPATH_W) 'csr_creation.c'; else $(CYGPATH_W) '$(srcdir)/csr_creation.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-csr_creation.Tpo $(DEPDIR)/gnomint-csr_creation.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='csr_creation.c' object='gnomint-csr_creation.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-csr_creation.obj `if test -f 'csr_creation.c'; then $(CYGPATH_W) 'csr_creation.c'; else $(CYGPATH_W) '$(srcdir)/csr_creation.c'; fi` gnomint-csr_properties.o: csr_properties.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-csr_properties.o -MD -MP -MF $(DEPDIR)/gnomint-csr_properties.Tpo -c -o gnomint-csr_properties.o `test -f 'csr_properties.c' || echo '$(srcdir)/'`csr_properties.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-csr_properties.Tpo $(DEPDIR)/gnomint-csr_properties.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='csr_properties.c' object='gnomint-csr_properties.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-csr_properties.o `test -f 'csr_properties.c' || echo '$(srcdir)/'`csr_properties.c gnomint-csr_properties.obj: csr_properties.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-csr_properties.obj -MD -MP -MF $(DEPDIR)/gnomint-csr_properties.Tpo -c -o gnomint-csr_properties.obj `if test -f 'csr_properties.c'; then $(CYGPATH_W) 'csr_properties.c'; else $(CYGPATH_W) '$(srcdir)/csr_properties.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-csr_properties.Tpo $(DEPDIR)/gnomint-csr_properties.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='csr_properties.c' object='gnomint-csr_properties.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-csr_properties.obj `if test -f 'csr_properties.c'; then $(CYGPATH_W) 'csr_properties.c'; else $(CYGPATH_W) '$(srcdir)/csr_properties.c'; fi` gnomint-pkey_manage.o: pkey_manage.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-pkey_manage.o -MD -MP -MF $(DEPDIR)/gnomint-pkey_manage.Tpo -c -o gnomint-pkey_manage.o `test -f 'pkey_manage.c' || echo '$(srcdir)/'`pkey_manage.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-pkey_manage.Tpo $(DEPDIR)/gnomint-pkey_manage.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pkey_manage.c' object='gnomint-pkey_manage.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-pkey_manage.o `test -f 'pkey_manage.c' || echo '$(srcdir)/'`pkey_manage.c gnomint-pkey_manage.obj: pkey_manage.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-pkey_manage.obj -MD -MP -MF $(DEPDIR)/gnomint-pkey_manage.Tpo -c -o gnomint-pkey_manage.obj `if test -f 'pkey_manage.c'; then $(CYGPATH_W) 'pkey_manage.c'; else $(CYGPATH_W) '$(srcdir)/pkey_manage.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-pkey_manage.Tpo $(DEPDIR)/gnomint-pkey_manage.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pkey_manage.c' object='gnomint-pkey_manage.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-pkey_manage.obj `if test -f 'pkey_manage.c'; then $(CYGPATH_W) 'pkey_manage.c'; else $(CYGPATH_W) '$(srcdir)/pkey_manage.c'; fi` gnomint-preferences-gui.o: preferences-gui.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-preferences-gui.o -MD -MP -MF $(DEPDIR)/gnomint-preferences-gui.Tpo -c -o gnomint-preferences-gui.o `test -f 'preferences-gui.c' || echo '$(srcdir)/'`preferences-gui.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-preferences-gui.Tpo $(DEPDIR)/gnomint-preferences-gui.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='preferences-gui.c' object='gnomint-preferences-gui.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-preferences-gui.o `test -f 'preferences-gui.c' || echo '$(srcdir)/'`preferences-gui.c gnomint-preferences-gui.obj: preferences-gui.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-preferences-gui.obj -MD -MP -MF $(DEPDIR)/gnomint-preferences-gui.Tpo -c -o gnomint-preferences-gui.obj `if test -f 'preferences-gui.c'; then $(CYGPATH_W) 'preferences-gui.c'; else $(CYGPATH_W) '$(srcdir)/preferences-gui.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-preferences-gui.Tpo $(DEPDIR)/gnomint-preferences-gui.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='preferences-gui.c' object='gnomint-preferences-gui.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-preferences-gui.obj `if test -f 'preferences-gui.c'; then $(CYGPATH_W) 'preferences-gui.c'; else $(CYGPATH_W) '$(srcdir)/preferences-gui.c'; fi` gnomint-preferences-window.o: preferences-window.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-preferences-window.o -MD -MP -MF $(DEPDIR)/gnomint-preferences-window.Tpo -c -o gnomint-preferences-window.o `test -f 'preferences-window.c' || echo '$(srcdir)/'`preferences-window.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-preferences-window.Tpo $(DEPDIR)/gnomint-preferences-window.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='preferences-window.c' object='gnomint-preferences-window.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-preferences-window.o `test -f 'preferences-window.c' || echo '$(srcdir)/'`preferences-window.c gnomint-preferences-window.obj: preferences-window.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-preferences-window.obj -MD -MP -MF $(DEPDIR)/gnomint-preferences-window.Tpo -c -o gnomint-preferences-window.obj `if test -f 'preferences-window.c'; then $(CYGPATH_W) 'preferences-window.c'; else $(CYGPATH_W) '$(srcdir)/preferences-window.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-preferences-window.Tpo $(DEPDIR)/gnomint-preferences-window.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='preferences-window.c' object='gnomint-preferences-window.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-preferences-window.obj `if test -f 'preferences-window.c'; then $(CYGPATH_W) 'preferences-window.c'; else $(CYGPATH_W) '$(srcdir)/preferences-window.c'; fi` gnomint-crl.o: crl.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-crl.o -MD -MP -MF $(DEPDIR)/gnomint-crl.Tpo -c -o gnomint-crl.o `test -f 'crl.c' || echo '$(srcdir)/'`crl.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-crl.Tpo $(DEPDIR)/gnomint-crl.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crl.c' object='gnomint-crl.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-crl.o `test -f 'crl.c' || echo '$(srcdir)/'`crl.c gnomint-crl.obj: crl.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-crl.obj -MD -MP -MF $(DEPDIR)/gnomint-crl.Tpo -c -o gnomint-crl.obj `if test -f 'crl.c'; then $(CYGPATH_W) 'crl.c'; else $(CYGPATH_W) '$(srcdir)/crl.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-crl.Tpo $(DEPDIR)/gnomint-crl.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crl.c' object='gnomint-crl.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-crl.obj `if test -f 'crl.c'; then $(CYGPATH_W) 'crl.c'; else $(CYGPATH_W) '$(srcdir)/crl.c'; fi` gnomint-uint160.o: uint160.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-uint160.o -MD -MP -MF $(DEPDIR)/gnomint-uint160.Tpo -c -o gnomint-uint160.o `test -f 'uint160.c' || echo '$(srcdir)/'`uint160.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-uint160.Tpo $(DEPDIR)/gnomint-uint160.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='uint160.c' object='gnomint-uint160.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-uint160.o `test -f 'uint160.c' || echo '$(srcdir)/'`uint160.c gnomint-uint160.obj: uint160.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-uint160.obj -MD -MP -MF $(DEPDIR)/gnomint-uint160.Tpo -c -o gnomint-uint160.obj `if test -f 'uint160.c'; then $(CYGPATH_W) 'uint160.c'; else $(CYGPATH_W) '$(srcdir)/uint160.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-uint160.Tpo $(DEPDIR)/gnomint-uint160.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='uint160.c' object='gnomint-uint160.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-uint160.obj `if test -f 'uint160.c'; then $(CYGPATH_W) 'uint160.c'; else $(CYGPATH_W) '$(srcdir)/uint160.c'; fi` gnomint-import.o: import.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-import.o -MD -MP -MF $(DEPDIR)/gnomint-import.Tpo -c -o gnomint-import.o `test -f 'import.c' || echo '$(srcdir)/'`import.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-import.Tpo $(DEPDIR)/gnomint-import.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='import.c' object='gnomint-import.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-import.o `test -f 'import.c' || echo '$(srcdir)/'`import.c gnomint-import.obj: import.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-import.obj -MD -MP -MF $(DEPDIR)/gnomint-import.Tpo -c -o gnomint-import.obj `if test -f 'import.c'; then $(CYGPATH_W) 'import.c'; else $(CYGPATH_W) '$(srcdir)/import.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-import.Tpo $(DEPDIR)/gnomint-import.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='import.c' object='gnomint-import.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-import.obj `if test -f 'import.c'; then $(CYGPATH_W) 'import.c'; else $(CYGPATH_W) '$(srcdir)/import.c'; fi` gnomint-export.o: export.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-export.o -MD -MP -MF $(DEPDIR)/gnomint-export.Tpo -c -o gnomint-export.o `test -f 'export.c' || echo '$(srcdir)/'`export.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-export.Tpo $(DEPDIR)/gnomint-export.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='export.c' object='gnomint-export.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-export.o `test -f 'export.c' || echo '$(srcdir)/'`export.c gnomint-export.obj: export.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-export.obj -MD -MP -MF $(DEPDIR)/gnomint-export.Tpo -c -o gnomint-export.obj `if test -f 'export.c'; then $(CYGPATH_W) 'export.c'; else $(CYGPATH_W) '$(srcdir)/export.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-export.Tpo $(DEPDIR)/gnomint-export.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='export.c' object='gnomint-export.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-export.obj `if test -f 'export.c'; then $(CYGPATH_W) 'export.c'; else $(CYGPATH_W) '$(srcdir)/export.c'; fi` gnomint-san_entry.o: san_entry.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-san_entry.o -MD -MP -MF $(DEPDIR)/gnomint-san_entry.Tpo -c -o gnomint-san_entry.o `test -f 'san_entry.c' || echo '$(srcdir)/'`san_entry.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-san_entry.Tpo $(DEPDIR)/gnomint-san_entry.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='san_entry.c' object='gnomint-san_entry.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-san_entry.o `test -f 'san_entry.c' || echo '$(srcdir)/'`san_entry.c gnomint-san_entry.obj: san_entry.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-san_entry.obj -MD -MP -MF $(DEPDIR)/gnomint-san_entry.Tpo -c -o gnomint-san_entry.obj `if test -f 'san_entry.c'; then $(CYGPATH_W) 'san_entry.c'; else $(CYGPATH_W) '$(srcdir)/san_entry.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-san_entry.Tpo $(DEPDIR)/gnomint-san_entry.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='san_entry.c' object='gnomint-san_entry.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-san_entry.obj `if test -f 'san_entry.c'; then $(CYGPATH_W) 'san_entry.c'; else $(CYGPATH_W) '$(srcdir)/san_entry.c'; fi` gnomint-san_manager.o: san_manager.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-san_manager.o -MD -MP -MF $(DEPDIR)/gnomint-san_manager.Tpo -c -o gnomint-san_manager.o `test -f 'san_manager.c' || echo '$(srcdir)/'`san_manager.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-san_manager.Tpo $(DEPDIR)/gnomint-san_manager.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='san_manager.c' object='gnomint-san_manager.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-san_manager.o `test -f 'san_manager.c' || echo '$(srcdir)/'`san_manager.c gnomint-san_manager.obj: san_manager.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-san_manager.obj -MD -MP -MF $(DEPDIR)/gnomint-san_manager.Tpo -c -o gnomint-san_manager.obj `if test -f 'san_manager.c'; then $(CYGPATH_W) 'san_manager.c'; else $(CYGPATH_W) '$(srcdir)/san_manager.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-san_manager.Tpo $(DEPDIR)/gnomint-san_manager.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='san_manager.c' object='gnomint-san_manager.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-san_manager.obj `if test -f 'san_manager.c'; then $(CYGPATH_W) 'san_manager.c'; else $(CYGPATH_W) '$(srcdir)/san_manager.c'; fi` gnomint-wizard_window.o: wizard_window.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-wizard_window.o -MD -MP -MF $(DEPDIR)/gnomint-wizard_window.Tpo -c -o gnomint-wizard_window.o `test -f 'wizard_window.c' || echo '$(srcdir)/'`wizard_window.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-wizard_window.Tpo $(DEPDIR)/gnomint-wizard_window.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='wizard_window.c' object='gnomint-wizard_window.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-wizard_window.o `test -f 'wizard_window.c' || echo '$(srcdir)/'`wizard_window.c gnomint-wizard_window.obj: wizard_window.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -MT gnomint-wizard_window.obj -MD -MP -MF $(DEPDIR)/gnomint-wizard_window.Tpo -c -o gnomint-wizard_window.obj `if test -f 'wizard_window.c'; then $(CYGPATH_W) 'wizard_window.c'; else $(CYGPATH_W) '$(srcdir)/wizard_window.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint-wizard_window.Tpo $(DEPDIR)/gnomint-wizard_window.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='wizard_window.c' object='gnomint-wizard_window.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_CFLAGS) $(CFLAGS) -c -o gnomint-wizard_window.obj `if test -f 'wizard_window.c'; then $(CYGPATH_W) 'wizard_window.c'; else $(CYGPATH_W) '$(srcdir)/wizard_window.c'; fi` gnomint_cli-dialog.o: dialog.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -MT gnomint_cli-dialog.o -MD -MP -MF $(DEPDIR)/gnomint_cli-dialog.Tpo -c -o gnomint_cli-dialog.o `test -f 'dialog.c' || echo '$(srcdir)/'`dialog.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint_cli-dialog.Tpo $(DEPDIR)/gnomint_cli-dialog.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dialog.c' object='gnomint_cli-dialog.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -c -o gnomint_cli-dialog.o `test -f 'dialog.c' || echo '$(srcdir)/'`dialog.c gnomint_cli-dialog.obj: dialog.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -MT gnomint_cli-dialog.obj -MD -MP -MF $(DEPDIR)/gnomint_cli-dialog.Tpo -c -o gnomint_cli-dialog.obj `if test -f 'dialog.c'; then $(CYGPATH_W) 'dialog.c'; else $(CYGPATH_W) '$(srcdir)/dialog.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint_cli-dialog.Tpo $(DEPDIR)/gnomint_cli-dialog.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dialog.c' object='gnomint_cli-dialog.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -c -o gnomint_cli-dialog.obj `if test -f 'dialog.c'; then $(CYGPATH_W) 'dialog.c'; else $(CYGPATH_W) '$(srcdir)/dialog.c'; fi` gnomint_cli-gnomint_time.o: gnomint_time.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -MT gnomint_cli-gnomint_time.o -MD -MP -MF $(DEPDIR)/gnomint_cli-gnomint_time.Tpo -c -o gnomint_cli-gnomint_time.o `test -f 'gnomint_time.c' || echo '$(srcdir)/'`gnomint_time.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint_cli-gnomint_time.Tpo $(DEPDIR)/gnomint_cli-gnomint_time.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gnomint_time.c' object='gnomint_cli-gnomint_time.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -c -o gnomint_cli-gnomint_time.o `test -f 'gnomint_time.c' || echo '$(srcdir)/'`gnomint_time.c gnomint_cli-gnomint_time.obj: gnomint_time.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -MT gnomint_cli-gnomint_time.obj -MD -MP -MF $(DEPDIR)/gnomint_cli-gnomint_time.Tpo -c -o gnomint_cli-gnomint_time.obj `if test -f 'gnomint_time.c'; then $(CYGPATH_W) 'gnomint_time.c'; else $(CYGPATH_W) '$(srcdir)/gnomint_time.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint_cli-gnomint_time.Tpo $(DEPDIR)/gnomint_cli-gnomint_time.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gnomint_time.c' object='gnomint_cli-gnomint_time.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -c -o gnomint_cli-gnomint_time.obj `if test -f 'gnomint_time.c'; then $(CYGPATH_W) 'gnomint_time.c'; else $(CYGPATH_W) '$(srcdir)/gnomint_time.c'; fi` gnomint_cli-gnomint-cli.o: gnomint-cli.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -MT gnomint_cli-gnomint-cli.o -MD -MP -MF $(DEPDIR)/gnomint_cli-gnomint-cli.Tpo -c -o gnomint_cli-gnomint-cli.o `test -f 'gnomint-cli.c' || echo '$(srcdir)/'`gnomint-cli.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint_cli-gnomint-cli.Tpo $(DEPDIR)/gnomint_cli-gnomint-cli.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gnomint-cli.c' object='gnomint_cli-gnomint-cli.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -c -o gnomint_cli-gnomint-cli.o `test -f 'gnomint-cli.c' || echo '$(srcdir)/'`gnomint-cli.c gnomint_cli-gnomint-cli.obj: gnomint-cli.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -MT gnomint_cli-gnomint-cli.obj -MD -MP -MF $(DEPDIR)/gnomint_cli-gnomint-cli.Tpo -c -o gnomint_cli-gnomint-cli.obj `if test -f 'gnomint-cli.c'; then $(CYGPATH_W) 'gnomint-cli.c'; else $(CYGPATH_W) '$(srcdir)/gnomint-cli.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint_cli-gnomint-cli.Tpo $(DEPDIR)/gnomint_cli-gnomint-cli.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gnomint-cli.c' object='gnomint_cli-gnomint-cli.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -c -o gnomint_cli-gnomint-cli.obj `if test -f 'gnomint-cli.c'; then $(CYGPATH_W) 'gnomint-cli.c'; else $(CYGPATH_W) '$(srcdir)/gnomint-cli.c'; fi` gnomint_cli-export.o: export.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -MT gnomint_cli-export.o -MD -MP -MF $(DEPDIR)/gnomint_cli-export.Tpo -c -o gnomint_cli-export.o `test -f 'export.c' || echo '$(srcdir)/'`export.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint_cli-export.Tpo $(DEPDIR)/gnomint_cli-export.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='export.c' object='gnomint_cli-export.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -c -o gnomint_cli-export.o `test -f 'export.c' || echo '$(srcdir)/'`export.c gnomint_cli-export.obj: export.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -MT gnomint_cli-export.obj -MD -MP -MF $(DEPDIR)/gnomint_cli-export.Tpo -c -o gnomint_cli-export.obj `if test -f 'export.c'; then $(CYGPATH_W) 'export.c'; else $(CYGPATH_W) '$(srcdir)/export.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint_cli-export.Tpo $(DEPDIR)/gnomint_cli-export.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='export.c' object='gnomint_cli-export.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -c -o gnomint_cli-export.obj `if test -f 'export.c'; then $(CYGPATH_W) 'export.c'; else $(CYGPATH_W) '$(srcdir)/export.c'; fi` gnomint_cli-ca-cli.o: ca-cli.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -MT gnomint_cli-ca-cli.o -MD -MP -MF $(DEPDIR)/gnomint_cli-ca-cli.Tpo -c -o gnomint_cli-ca-cli.o `test -f 'ca-cli.c' || echo '$(srcdir)/'`ca-cli.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint_cli-ca-cli.Tpo $(DEPDIR)/gnomint_cli-ca-cli.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ca-cli.c' object='gnomint_cli-ca-cli.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -c -o gnomint_cli-ca-cli.o `test -f 'ca-cli.c' || echo '$(srcdir)/'`ca-cli.c gnomint_cli-ca-cli.obj: ca-cli.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -MT gnomint_cli-ca-cli.obj -MD -MP -MF $(DEPDIR)/gnomint_cli-ca-cli.Tpo -c -o gnomint_cli-ca-cli.obj `if test -f 'ca-cli.c'; then $(CYGPATH_W) 'ca-cli.c'; else $(CYGPATH_W) '$(srcdir)/ca-cli.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint_cli-ca-cli.Tpo $(DEPDIR)/gnomint_cli-ca-cli.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ca-cli.c' object='gnomint_cli-ca-cli.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -c -o gnomint_cli-ca-cli.obj `if test -f 'ca-cli.c'; then $(CYGPATH_W) 'ca-cli.c'; else $(CYGPATH_W) '$(srcdir)/ca-cli.c'; fi` gnomint_cli-ca-cli-callbacks.o: ca-cli-callbacks.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -MT gnomint_cli-ca-cli-callbacks.o -MD -MP -MF $(DEPDIR)/gnomint_cli-ca-cli-callbacks.Tpo -c -o gnomint_cli-ca-cli-callbacks.o `test -f 'ca-cli-callbacks.c' || echo '$(srcdir)/'`ca-cli-callbacks.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint_cli-ca-cli-callbacks.Tpo $(DEPDIR)/gnomint_cli-ca-cli-callbacks.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ca-cli-callbacks.c' object='gnomint_cli-ca-cli-callbacks.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -c -o gnomint_cli-ca-cli-callbacks.o `test -f 'ca-cli-callbacks.c' || echo '$(srcdir)/'`ca-cli-callbacks.c gnomint_cli-ca-cli-callbacks.obj: ca-cli-callbacks.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -MT gnomint_cli-ca-cli-callbacks.obj -MD -MP -MF $(DEPDIR)/gnomint_cli-ca-cli-callbacks.Tpo -c -o gnomint_cli-ca-cli-callbacks.obj `if test -f 'ca-cli-callbacks.c'; then $(CYGPATH_W) 'ca-cli-callbacks.c'; else $(CYGPATH_W) '$(srcdir)/ca-cli-callbacks.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint_cli-ca-cli-callbacks.Tpo $(DEPDIR)/gnomint_cli-ca-cli-callbacks.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ca-cli-callbacks.c' object='gnomint_cli-ca-cli-callbacks.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -c -o gnomint_cli-ca-cli-callbacks.obj `if test -f 'ca-cli-callbacks.c'; then $(CYGPATH_W) 'ca-cli-callbacks.c'; else $(CYGPATH_W) '$(srcdir)/ca-cli-callbacks.c'; fi` gnomint_cli-ca_creation.o: ca_creation.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -MT gnomint_cli-ca_creation.o -MD -MP -MF $(DEPDIR)/gnomint_cli-ca_creation.Tpo -c -o gnomint_cli-ca_creation.o `test -f 'ca_creation.c' || echo '$(srcdir)/'`ca_creation.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint_cli-ca_creation.Tpo $(DEPDIR)/gnomint_cli-ca_creation.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ca_creation.c' object='gnomint_cli-ca_creation.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -c -o gnomint_cli-ca_creation.o `test -f 'ca_creation.c' || echo '$(srcdir)/'`ca_creation.c gnomint_cli-ca_creation.obj: ca_creation.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -MT gnomint_cli-ca_creation.obj -MD -MP -MF $(DEPDIR)/gnomint_cli-ca_creation.Tpo -c -o gnomint_cli-ca_creation.obj `if test -f 'ca_creation.c'; then $(CYGPATH_W) 'ca_creation.c'; else $(CYGPATH_W) '$(srcdir)/ca_creation.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint_cli-ca_creation.Tpo $(DEPDIR)/gnomint_cli-ca_creation.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ca_creation.c' object='gnomint_cli-ca_creation.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -c -o gnomint_cli-ca_creation.obj `if test -f 'ca_creation.c'; then $(CYGPATH_W) 'ca_creation.c'; else $(CYGPATH_W) '$(srcdir)/ca_creation.c'; fi` gnomint_cli-ca_file.o: ca_file.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -MT gnomint_cli-ca_file.o -MD -MP -MF $(DEPDIR)/gnomint_cli-ca_file.Tpo -c -o gnomint_cli-ca_file.o `test -f 'ca_file.c' || echo '$(srcdir)/'`ca_file.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint_cli-ca_file.Tpo $(DEPDIR)/gnomint_cli-ca_file.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ca_file.c' object='gnomint_cli-ca_file.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -c -o gnomint_cli-ca_file.o `test -f 'ca_file.c' || echo '$(srcdir)/'`ca_file.c gnomint_cli-ca_file.obj: ca_file.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -MT gnomint_cli-ca_file.obj -MD -MP -MF $(DEPDIR)/gnomint_cli-ca_file.Tpo -c -o gnomint_cli-ca_file.obj `if test -f 'ca_file.c'; then $(CYGPATH_W) 'ca_file.c'; else $(CYGPATH_W) '$(srcdir)/ca_file.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint_cli-ca_file.Tpo $(DEPDIR)/gnomint_cli-ca_file.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ca_file.c' object='gnomint_cli-ca_file.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -c -o gnomint_cli-ca_file.obj `if test -f 'ca_file.c'; then $(CYGPATH_W) 'ca_file.c'; else $(CYGPATH_W) '$(srcdir)/ca_file.c'; fi` gnomint_cli-ca_policy.o: ca_policy.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -MT gnomint_cli-ca_policy.o -MD -MP -MF $(DEPDIR)/gnomint_cli-ca_policy.Tpo -c -o gnomint_cli-ca_policy.o `test -f 'ca_policy.c' || echo '$(srcdir)/'`ca_policy.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint_cli-ca_policy.Tpo $(DEPDIR)/gnomint_cli-ca_policy.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ca_policy.c' object='gnomint_cli-ca_policy.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -c -o gnomint_cli-ca_policy.o `test -f 'ca_policy.c' || echo '$(srcdir)/'`ca_policy.c gnomint_cli-ca_policy.obj: ca_policy.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -MT gnomint_cli-ca_policy.obj -MD -MP -MF $(DEPDIR)/gnomint_cli-ca_policy.Tpo -c -o gnomint_cli-ca_policy.obj `if test -f 'ca_policy.c'; then $(CYGPATH_W) 'ca_policy.c'; else $(CYGPATH_W) '$(srcdir)/ca_policy.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint_cli-ca_policy.Tpo $(DEPDIR)/gnomint_cli-ca_policy.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ca_policy.c' object='gnomint_cli-ca_policy.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -c -o gnomint_cli-ca_policy.obj `if test -f 'ca_policy.c'; then $(CYGPATH_W) 'ca_policy.c'; else $(CYGPATH_W) '$(srcdir)/ca_policy.c'; fi` gnomint_cli-ca_bulk.o: ca_bulk.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -MT gnomint_cli-ca_bulk.o -MD -MP -MF $(DEPDIR)/gnomint_cli-ca_bulk.Tpo -c -o gnomint_cli-ca_bulk.o `test -f 'ca_bulk.c' || echo '$(srcdir)/'`ca_bulk.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint_cli-ca_bulk.Tpo $(DEPDIR)/gnomint_cli-ca_bulk.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ca_bulk.c' object='gnomint_cli-ca_bulk.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -c -o gnomint_cli-ca_bulk.o `test -f 'ca_bulk.c' || echo '$(srcdir)/'`ca_bulk.c gnomint_cli-ca_bulk.obj: ca_bulk.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -MT gnomint_cli-ca_bulk.obj -MD -MP -MF $(DEPDIR)/gnomint_cli-ca_bulk.Tpo -c -o gnomint_cli-ca_bulk.obj `if test -f 'ca_bulk.c'; then $(CYGPATH_W) 'ca_bulk.c'; else $(CYGPATH_W) '$(srcdir)/ca_bulk.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint_cli-ca_bulk.Tpo $(DEPDIR)/gnomint_cli-ca_bulk.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ca_bulk.c' object='gnomint_cli-ca_bulk.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -c -o gnomint_cli-ca_bulk.obj `if test -f 'ca_bulk.c'; then $(CYGPATH_W) 'ca_bulk.c'; else $(CYGPATH_W) '$(srcdir)/ca_bulk.c'; fi` gnomint_cli-cert_renewal.o: cert_renewal.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -MT gnomint_cli-cert_renewal.o -MD -MP -MF $(DEPDIR)/gnomint_cli-cert_renewal.Tpo -c -o gnomint_cli-cert_renewal.o `test -f 'cert_renewal.c' || echo '$(srcdir)/'`cert_renewal.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint_cli-cert_renewal.Tpo $(DEPDIR)/gnomint_cli-cert_renewal.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='cert_renewal.c' object='gnomint_cli-cert_renewal.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -c -o gnomint_cli-cert_renewal.o `test -f 'cert_renewal.c' || echo '$(srcdir)/'`cert_renewal.c gnomint_cli-cert_renewal.obj: cert_renewal.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -MT gnomint_cli-cert_renewal.obj -MD -MP -MF $(DEPDIR)/gnomint_cli-cert_renewal.Tpo -c -o gnomint_cli-cert_renewal.obj `if test -f 'cert_renewal.c'; then $(CYGPATH_W) 'cert_renewal.c'; else $(CYGPATH_W) '$(srcdir)/cert_renewal.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint_cli-cert_renewal.Tpo $(DEPDIR)/gnomint_cli-cert_renewal.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='cert_renewal.c' object='gnomint_cli-cert_renewal.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -c -o gnomint_cli-cert_renewal.obj `if test -f 'cert_renewal.c'; then $(CYGPATH_W) 'cert_renewal.c'; else $(CYGPATH_W) '$(srcdir)/cert_renewal.c'; fi` gnomint_cli-cert_diff.o: cert_diff.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -MT gnomint_cli-cert_diff.o -MD -MP -MF $(DEPDIR)/gnomint_cli-cert_diff.Tpo -c -o gnomint_cli-cert_diff.o `test -f 'cert_diff.c' || echo '$(srcdir)/'`cert_diff.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint_cli-cert_diff.Tpo $(DEPDIR)/gnomint_cli-cert_diff.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='cert_diff.c' object='gnomint_cli-cert_diff.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -c -o gnomint_cli-cert_diff.o `test -f 'cert_diff.c' || echo '$(srcdir)/'`cert_diff.c gnomint_cli-cert_diff.obj: cert_diff.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -MT gnomint_cli-cert_diff.obj -MD -MP -MF $(DEPDIR)/gnomint_cli-cert_diff.Tpo -c -o gnomint_cli-cert_diff.obj `if test -f 'cert_diff.c'; then $(CYGPATH_W) 'cert_diff.c'; else $(CYGPATH_W) '$(srcdir)/cert_diff.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint_cli-cert_diff.Tpo $(DEPDIR)/gnomint_cli-cert_diff.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='cert_diff.c' object='gnomint_cli-cert_diff.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -c -o gnomint_cli-cert_diff.obj `if test -f 'cert_diff.c'; then $(CYGPATH_W) 'cert_diff.c'; else $(CYGPATH_W) '$(srcdir)/cert_diff.c'; fi` gnomint_cli-crl.o: crl.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -MT gnomint_cli-crl.o -MD -MP -MF $(DEPDIR)/gnomint_cli-crl.Tpo -c -o gnomint_cli-crl.o `test -f 'crl.c' || echo '$(srcdir)/'`crl.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint_cli-crl.Tpo $(DEPDIR)/gnomint_cli-crl.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crl.c' object='gnomint_cli-crl.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -c -o gnomint_cli-crl.o `test -f 'crl.c' || echo '$(srcdir)/'`crl.c gnomint_cli-crl.obj: crl.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -MT gnomint_cli-crl.obj -MD -MP -MF $(DEPDIR)/gnomint_cli-crl.Tpo -c -o gnomint_cli-crl.obj `if test -f 'crl.c'; then $(CYGPATH_W) 'crl.c'; else $(CYGPATH_W) '$(srcdir)/crl.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint_cli-crl.Tpo $(DEPDIR)/gnomint_cli-crl.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crl.c' object='gnomint_cli-crl.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -c -o gnomint_cli-crl.obj `if test -f 'crl.c'; then $(CYGPATH_W) 'crl.c'; else $(CYGPATH_W) '$(srcdir)/crl.c'; fi` gnomint_cli-csr_creation.o: csr_creation.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -MT gnomint_cli-csr_creation.o -MD -MP -MF $(DEPDIR)/gnomint_cli-csr_creation.Tpo -c -o gnomint_cli-csr_creation.o `test -f 'csr_creation.c' || echo '$(srcdir)/'`csr_creation.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint_cli-csr_creation.Tpo $(DEPDIR)/gnomint_cli-csr_creation.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='csr_creation.c' object='gnomint_cli-csr_creation.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -c -o gnomint_cli-csr_creation.o `test -f 'csr_creation.c' || echo '$(srcdir)/'`csr_creation.c gnomint_cli-csr_creation.obj: csr_creation.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -MT gnomint_cli-csr_creation.obj -MD -MP -MF $(DEPDIR)/gnomint_cli-csr_creation.Tpo -c -o gnomint_cli-csr_creation.obj `if test -f 'csr_creation.c'; then $(CYGPATH_W) 'csr_creation.c'; else $(CYGPATH_W) '$(srcdir)/csr_creation.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint_cli-csr_creation.Tpo $(DEPDIR)/gnomint_cli-csr_creation.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='csr_creation.c' object='gnomint_cli-csr_creation.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -c -o gnomint_cli-csr_creation.obj `if test -f 'csr_creation.c'; then $(CYGPATH_W) 'csr_creation.c'; else $(CYGPATH_W) '$(srcdir)/csr_creation.c'; fi` gnomint_cli-import.o: import.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -MT gnomint_cli-import.o -MD -MP -MF $(DEPDIR)/gnomint_cli-import.Tpo -c -o gnomint_cli-import.o `test -f 'import.c' || echo '$(srcdir)/'`import.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint_cli-import.Tpo $(DEPDIR)/gnomint_cli-import.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='import.c' object='gnomint_cli-import.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -c -o gnomint_cli-import.o `test -f 'import.c' || echo '$(srcdir)/'`import.c gnomint_cli-import.obj: import.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -MT gnomint_cli-import.obj -MD -MP -MF $(DEPDIR)/gnomint_cli-import.Tpo -c -o gnomint_cli-import.obj `if test -f 'import.c'; then $(CYGPATH_W) 'import.c'; else $(CYGPATH_W) '$(srcdir)/import.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint_cli-import.Tpo $(DEPDIR)/gnomint_cli-import.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='import.c' object='gnomint_cli-import.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -c -o gnomint_cli-import.obj `if test -f 'import.c'; then $(CYGPATH_W) 'import.c'; else $(CYGPATH_W) '$(srcdir)/import.c'; fi` gnomint_cli-new_cert.o: new_cert.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -MT gnomint_cli-new_cert.o -MD -MP -MF $(DEPDIR)/gnomint_cli-new_cert.Tpo -c -o gnomint_cli-new_cert.o `test -f 'new_cert.c' || echo '$(srcdir)/'`new_cert.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint_cli-new_cert.Tpo $(DEPDIR)/gnomint_cli-new_cert.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='new_cert.c' object='gnomint_cli-new_cert.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -c -o gnomint_cli-new_cert.o `test -f 'new_cert.c' || echo '$(srcdir)/'`new_cert.c gnomint_cli-new_cert.obj: new_cert.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -MT gnomint_cli-new_cert.obj -MD -MP -MF $(DEPDIR)/gnomint_cli-new_cert.Tpo -c -o gnomint_cli-new_cert.obj `if test -f 'new_cert.c'; then $(CYGPATH_W) 'new_cert.c'; else $(CYGPATH_W) '$(srcdir)/new_cert.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint_cli-new_cert.Tpo $(DEPDIR)/gnomint_cli-new_cert.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='new_cert.c' object='gnomint_cli-new_cert.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -c -o gnomint_cli-new_cert.obj `if test -f 'new_cert.c'; then $(CYGPATH_W) 'new_cert.c'; else $(CYGPATH_W) '$(srcdir)/new_cert.c'; fi` gnomint_cli-preferences.o: preferences.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -MT gnomint_cli-preferences.o -MD -MP -MF $(DEPDIR)/gnomint_cli-preferences.Tpo -c -o gnomint_cli-preferences.o `test -f 'preferences.c' || echo '$(srcdir)/'`preferences.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint_cli-preferences.Tpo $(DEPDIR)/gnomint_cli-preferences.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='preferences.c' object='gnomint_cli-preferences.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -c -o gnomint_cli-preferences.o `test -f 'preferences.c' || echo '$(srcdir)/'`preferences.c gnomint_cli-preferences.obj: preferences.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -MT gnomint_cli-preferences.obj -MD -MP -MF $(DEPDIR)/gnomint_cli-preferences.Tpo -c -o gnomint_cli-preferences.obj `if test -f 'preferences.c'; then $(CYGPATH_W) 'preferences.c'; else $(CYGPATH_W) '$(srcdir)/preferences.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint_cli-preferences.Tpo $(DEPDIR)/gnomint_cli-preferences.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='preferences.c' object='gnomint_cli-preferences.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -c -o gnomint_cli-preferences.obj `if test -f 'preferences.c'; then $(CYGPATH_W) 'preferences.c'; else $(CYGPATH_W) '$(srcdir)/preferences.c'; fi` gnomint_cli-pkey_manage.o: pkey_manage.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -MT gnomint_cli-pkey_manage.o -MD -MP -MF $(DEPDIR)/gnomint_cli-pkey_manage.Tpo -c -o gnomint_cli-pkey_manage.o `test -f 'pkey_manage.c' || echo '$(srcdir)/'`pkey_manage.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint_cli-pkey_manage.Tpo $(DEPDIR)/gnomint_cli-pkey_manage.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pkey_manage.c' object='gnomint_cli-pkey_manage.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -c -o gnomint_cli-pkey_manage.o `test -f 'pkey_manage.c' || echo '$(srcdir)/'`pkey_manage.c gnomint_cli-pkey_manage.obj: pkey_manage.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -MT gnomint_cli-pkey_manage.obj -MD -MP -MF $(DEPDIR)/gnomint_cli-pkey_manage.Tpo -c -o gnomint_cli-pkey_manage.obj `if test -f 'pkey_manage.c'; then $(CYGPATH_W) 'pkey_manage.c'; else $(CYGPATH_W) '$(srcdir)/pkey_manage.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint_cli-pkey_manage.Tpo $(DEPDIR)/gnomint_cli-pkey_manage.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pkey_manage.c' object='gnomint_cli-pkey_manage.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -c -o gnomint_cli-pkey_manage.obj `if test -f 'pkey_manage.c'; then $(CYGPATH_W) 'pkey_manage.c'; else $(CYGPATH_W) '$(srcdir)/pkey_manage.c'; fi` gnomint_cli-tls.o: tls.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -MT gnomint_cli-tls.o -MD -MP -MF $(DEPDIR)/gnomint_cli-tls.Tpo -c -o gnomint_cli-tls.o `test -f 'tls.c' || echo '$(srcdir)/'`tls.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint_cli-tls.Tpo $(DEPDIR)/gnomint_cli-tls.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tls.c' object='gnomint_cli-tls.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -c -o gnomint_cli-tls.o `test -f 'tls.c' || echo '$(srcdir)/'`tls.c gnomint_cli-tls.obj: tls.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -MT gnomint_cli-tls.obj -MD -MP -MF $(DEPDIR)/gnomint_cli-tls.Tpo -c -o gnomint_cli-tls.obj `if test -f 'tls.c'; then $(CYGPATH_W) 'tls.c'; else $(CYGPATH_W) '$(srcdir)/tls.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint_cli-tls.Tpo $(DEPDIR)/gnomint_cli-tls.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tls.c' object='gnomint_cli-tls.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -c -o gnomint_cli-tls.obj `if test -f 'tls.c'; then $(CYGPATH_W) 'tls.c'; else $(CYGPATH_W) '$(srcdir)/tls.c'; fi` gnomint_cli-uint160.o: uint160.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -MT gnomint_cli-uint160.o -MD -MP -MF $(DEPDIR)/gnomint_cli-uint160.Tpo -c -o gnomint_cli-uint160.o `test -f 'uint160.c' || echo '$(srcdir)/'`uint160.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint_cli-uint160.Tpo $(DEPDIR)/gnomint_cli-uint160.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='uint160.c' object='gnomint_cli-uint160.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -c -o gnomint_cli-uint160.o `test -f 'uint160.c' || echo '$(srcdir)/'`uint160.c gnomint_cli-uint160.obj: uint160.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -MT gnomint_cli-uint160.obj -MD -MP -MF $(DEPDIR)/gnomint_cli-uint160.Tpo -c -o gnomint_cli-uint160.obj `if test -f 'uint160.c'; then $(CYGPATH_W) 'uint160.c'; else $(CYGPATH_W) '$(srcdir)/uint160.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gnomint_cli-uint160.Tpo $(DEPDIR)/gnomint_cli-uint160.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='uint160.c' object='gnomint_cli-uint160.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gnomint_cli_CFLAGS) $(CFLAGS) -c -o gnomint_cli-uint160.obj `if test -f 'uint160.c'; then $(CYGPATH_W) 'uint160.c'; else $(CYGPATH_W) '$(srcdir)/uint160.c'; fi` mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -$(am__rm_f) $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f ./$(DEPDIR)/gnomint-ca.Po -rm -f ./$(DEPDIR)/gnomint-ca_bulk.Po -rm -f ./$(DEPDIR)/gnomint-ca_creation.Po -rm -f ./$(DEPDIR)/gnomint-ca_file.Po -rm -f ./$(DEPDIR)/gnomint-ca_policy.Po -rm -f ./$(DEPDIR)/gnomint-ca_selector.Po -rm -f ./$(DEPDIR)/gnomint-cert_diff.Po -rm -f ./$(DEPDIR)/gnomint-cert_renewal.Po -rm -f ./$(DEPDIR)/gnomint-cert_row.Po -rm -f ./$(DEPDIR)/gnomint-certificate_properties.Po -rm -f ./$(DEPDIR)/gnomint-country_table.Po -rm -f ./$(DEPDIR)/gnomint-creation_process_window.Po -rm -f ./$(DEPDIR)/gnomint-crl.Po -rm -f ./$(DEPDIR)/gnomint-csr_creation.Po -rm -f ./$(DEPDIR)/gnomint-csr_properties.Po -rm -f ./$(DEPDIR)/gnomint-dialog.Po -rm -f ./$(DEPDIR)/gnomint-export.Po -rm -f ./$(DEPDIR)/gnomint-gnomint_time.Po -rm -f ./$(DEPDIR)/gnomint-import.Po -rm -f ./$(DEPDIR)/gnomint-main.Po -rm -f ./$(DEPDIR)/gnomint-new_ca_window.Po -rm -f ./$(DEPDIR)/gnomint-new_cert.Po -rm -f ./$(DEPDIR)/gnomint-new_req_window.Po -rm -f ./$(DEPDIR)/gnomint-pkey_manage.Po -rm -f ./$(DEPDIR)/gnomint-preferences-gui.Po -rm -f ./$(DEPDIR)/gnomint-preferences-window.Po -rm -f ./$(DEPDIR)/gnomint-prop_node.Po -rm -f ./$(DEPDIR)/gnomint-san_entry.Po -rm -f ./$(DEPDIR)/gnomint-san_manager.Po -rm -f ./$(DEPDIR)/gnomint-tls.Po -rm -f ./$(DEPDIR)/gnomint-uint160.Po -rm -f ./$(DEPDIR)/gnomint-wizard_window.Po -rm -f ./$(DEPDIR)/gnomint_cli-ca-cli-callbacks.Po -rm -f ./$(DEPDIR)/gnomint_cli-ca-cli.Po -rm -f ./$(DEPDIR)/gnomint_cli-ca_bulk.Po -rm -f ./$(DEPDIR)/gnomint_cli-ca_creation.Po -rm -f ./$(DEPDIR)/gnomint_cli-ca_file.Po -rm -f ./$(DEPDIR)/gnomint_cli-ca_policy.Po -rm -f ./$(DEPDIR)/gnomint_cli-cert_diff.Po -rm -f ./$(DEPDIR)/gnomint_cli-cert_renewal.Po -rm -f ./$(DEPDIR)/gnomint_cli-crl.Po -rm -f ./$(DEPDIR)/gnomint_cli-csr_creation.Po -rm -f ./$(DEPDIR)/gnomint_cli-dialog.Po -rm -f ./$(DEPDIR)/gnomint_cli-export.Po -rm -f ./$(DEPDIR)/gnomint_cli-gnomint-cli.Po -rm -f ./$(DEPDIR)/gnomint_cli-gnomint_time.Po -rm -f ./$(DEPDIR)/gnomint_cli-import.Po -rm -f ./$(DEPDIR)/gnomint_cli-new_cert.Po -rm -f ./$(DEPDIR)/gnomint_cli-pkey_manage.Po -rm -f ./$(DEPDIR)/gnomint_cli-preferences.Po -rm -f ./$(DEPDIR)/gnomint_cli-tls.Po -rm -f ./$(DEPDIR)/gnomint_cli-uint160.Po -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binPROGRAMS install-binSCRIPTS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f ./$(DEPDIR)/gnomint-ca.Po -rm -f ./$(DEPDIR)/gnomint-ca_bulk.Po -rm -f ./$(DEPDIR)/gnomint-ca_creation.Po -rm -f ./$(DEPDIR)/gnomint-ca_file.Po -rm -f ./$(DEPDIR)/gnomint-ca_policy.Po -rm -f ./$(DEPDIR)/gnomint-ca_selector.Po -rm -f ./$(DEPDIR)/gnomint-cert_diff.Po -rm -f ./$(DEPDIR)/gnomint-cert_renewal.Po -rm -f ./$(DEPDIR)/gnomint-cert_row.Po -rm -f ./$(DEPDIR)/gnomint-certificate_properties.Po -rm -f ./$(DEPDIR)/gnomint-country_table.Po -rm -f ./$(DEPDIR)/gnomint-creation_process_window.Po -rm -f ./$(DEPDIR)/gnomint-crl.Po -rm -f ./$(DEPDIR)/gnomint-csr_creation.Po -rm -f ./$(DEPDIR)/gnomint-csr_properties.Po -rm -f ./$(DEPDIR)/gnomint-dialog.Po -rm -f ./$(DEPDIR)/gnomint-export.Po -rm -f ./$(DEPDIR)/gnomint-gnomint_time.Po -rm -f ./$(DEPDIR)/gnomint-import.Po -rm -f ./$(DEPDIR)/gnomint-main.Po -rm -f ./$(DEPDIR)/gnomint-new_ca_window.Po -rm -f ./$(DEPDIR)/gnomint-new_cert.Po -rm -f ./$(DEPDIR)/gnomint-new_req_window.Po -rm -f ./$(DEPDIR)/gnomint-pkey_manage.Po -rm -f ./$(DEPDIR)/gnomint-preferences-gui.Po -rm -f ./$(DEPDIR)/gnomint-preferences-window.Po -rm -f ./$(DEPDIR)/gnomint-prop_node.Po -rm -f ./$(DEPDIR)/gnomint-san_entry.Po -rm -f ./$(DEPDIR)/gnomint-san_manager.Po -rm -f ./$(DEPDIR)/gnomint-tls.Po -rm -f ./$(DEPDIR)/gnomint-uint160.Po -rm -f ./$(DEPDIR)/gnomint-wizard_window.Po -rm -f ./$(DEPDIR)/gnomint_cli-ca-cli-callbacks.Po -rm -f ./$(DEPDIR)/gnomint_cli-ca-cli.Po -rm -f ./$(DEPDIR)/gnomint_cli-ca_bulk.Po -rm -f ./$(DEPDIR)/gnomint_cli-ca_creation.Po -rm -f ./$(DEPDIR)/gnomint_cli-ca_file.Po -rm -f ./$(DEPDIR)/gnomint_cli-ca_policy.Po -rm -f ./$(DEPDIR)/gnomint_cli-cert_diff.Po -rm -f ./$(DEPDIR)/gnomint_cli-cert_renewal.Po -rm -f ./$(DEPDIR)/gnomint_cli-crl.Po -rm -f ./$(DEPDIR)/gnomint_cli-csr_creation.Po -rm -f ./$(DEPDIR)/gnomint_cli-dialog.Po -rm -f ./$(DEPDIR)/gnomint_cli-export.Po -rm -f ./$(DEPDIR)/gnomint_cli-gnomint-cli.Po -rm -f ./$(DEPDIR)/gnomint_cli-gnomint_time.Po -rm -f ./$(DEPDIR)/gnomint_cli-import.Po -rm -f ./$(DEPDIR)/gnomint_cli-new_cert.Po -rm -f ./$(DEPDIR)/gnomint_cli-pkey_manage.Po -rm -f ./$(DEPDIR)/gnomint_cli-preferences.Po -rm -f ./$(DEPDIR)/gnomint_cli-tls.Po -rm -f ./$(DEPDIR)/gnomint_cli-uint160.Po -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS uninstall-binSCRIPTS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ clean-binPROGRAMS clean-generic clean-libtool cscopelist-am \ ctags ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-binPROGRAMS \ install-binSCRIPTS install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ uninstall-binPROGRAMS uninstall-binSCRIPTS .PRECIOUS: Makefile # 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. .NOEXPORT: # Tell GNU make to disable its built-in pattern rules. %:: %,v %:: RCS/%,v %:: RCS/% %:: s.% %:: SCCS/s.% gnomint-1.6.4/src/gnomint-cli.c0000644000000000000000000001001215212761266015110 0ustar00rootroot// gnoMint: a graphical interface for managing a certification authority // Copyright (C) 2006-2009 David Marín Carreño // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #include #include #include #include #include #include "tls.h" #include "ca_file.h" #include "ca-cli.h" #include "preferences.h" gchar * gnomint_current_opened_file = NULL; int main (int argc, char **argv) { gchar *defaultfile = NULL; GOptionContext *ctx; GError *err = NULL; GOptionEntry entries[] = { { NULL } }; #ifdef ENABLE_NLS #include setlocale (LC_ALL, ""); bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); textdomain (GETTEXT_PACKAGE); #endif g_set_application_name (PACKAGE); g_set_prgname (PACKAGE); tls_init (); preferences_init (argc, argv); ctx = g_option_context_new (_("- A Certification Authority manager")); g_option_context_add_main_entries (ctx, entries, GETTEXT_PACKAGE); if (!g_option_context_parse (ctx, &argc, &argv, &err)) { g_print (_("Failed to initialize: %s\n"), err->message); g_error_free (err); return 1; } if (argc >= 2 && ca_open (g_strdup(argv[1]), TRUE)) { } else { /* No arguments, or failure when opening file */ const gchar *data_dir = g_get_user_data_dir(); gchar *gnomint_data_dir = g_build_filename (data_dir, "gnomint", NULL); /* Ensure the directory exists */ g_mkdir_with_parents (gnomint_data_dir, 0700); defaultfile = g_build_filename (gnomint_data_dir, "default.gnomint", NULL); g_free (gnomint_data_dir); /* Check if we need to migrate from old location */ if (!g_file_test(defaultfile, G_FILE_TEST_EXISTS)) { gchar *old_defaultfile = g_build_filename (g_get_home_dir(), ".gnomint", "default.gnomint", NULL); if (g_file_test(old_defaultfile, G_FILE_TEST_EXISTS)) { /* Copy the old file to the new location */ GFile *old_file = g_file_new_for_path(old_defaultfile); GFile *new_file = g_file_new_for_path(defaultfile); GError *error = NULL; if (!g_file_copy(old_file, new_file, G_FILE_COPY_NONE, NULL, NULL, NULL, &error)) { g_warning("Failed to migrate database from %s to %s: %s", old_defaultfile, defaultfile, error ? error->message : "unknown error"); if (error) { g_error_free(error); } } g_object_unref(old_file); g_object_unref(new_file); } g_free (old_defaultfile); } ca_open (defaultfile, TRUE); } ca_command_line (); return 0; } gnomint-1.6.4/src/ca-cli.h0000644000000000000000000000256115212761266014037 0ustar00rootroot// gnoMint: a graphical interface for managing a certification authority // Copyright (C) 2006-2009 David Marín Carreño // // This file is part of gnoMint. // // gnoMint is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #ifndef _CA_CLI_H_ #define _CA_CLI_H_ #include #include typedef int (* CaCommandCallback) (int argc, char **argv); typedef struct _CaCommand { const gchar *command; guint mandatory_params; guint optional_params; gchar *syntax; gchar *help; CaCommandCallback callback; } CaCommand; gboolean ca_refresh_model (void); gboolean ca_open (gchar *filename, gboolean create); void ca_command_line (); #endif gnomint-1.6.4/gconf/0000755000000000000000000000000015212761360013032 5ustar00rootrootgnomint-1.6.4/gconf/org.gnome.gnomint.gschema.xml0000644000000000000000000000420415212761266020534 0ustar00rootroot '(500,400)' Window size The (width,length) size gnoMint should take when started. This cannot be smaller than (320,200). false Revoked certificates visibility Whether the revoked certificates should be visible. true Expired certificates visibility Whether already-expired certificates should be visible in the certificates tree. CAs are always visible regardless of this setting so that any still-valid certificates they signed remain reachable. 30 Days before expiration to highlight certificates in amber Certificates whose effective validity ends within this many days are shown in amber in the certificates tree, as a heads-up that they should be renewed soon. Setting this to 0 disables the amber highlight (certificates appear either normally or in gray for already-expired). true Certificate requests visibility Whether the certificate requests should be visible. true Automatic exporting of certificates for gnome-keyring Whether the created or imported certificates are automatically exported to gnome-keyring certificate-store. gnomint-1.6.4/gconf/Makefile.am0000644000000000000000000000023015212761266015066 0ustar00rootrootgsettings_SCHEMAS = org.gnome.gnomint.gschema.xml @GSETTINGS_RULES@ EXTRA_DIST = $(gsettings_SCHEMAS) CLEANFILES = $(gsettings_SCHEMAS:.xml=.valid) gnomint-1.6.4/gconf/Makefile.in0000644000000000000000000003326015212761274015107 0ustar00rootroot# Makefile.in generated by automake 1.18.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2025 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) am__rm_f = rm -f $(am__rm_f_notfound) am__rm_rf = rm -rf $(am__rm_f_notfound) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = gconf ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GNOMINTCLI_CFLAGS = @GNOMINTCLI_CFLAGS@ GNOMINTCLI_LIBS = @GNOMINTCLI_LIBS@ GNOMINT_CFLAGS = @GNOMINT_CFLAGS@ GNOMINT_LIBS = @GNOMINT_LIBS@ GPGRT_CONFIG = @GPGRT_CONFIG@ GREP = @GREP@ GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBGCRYPT_CFLAGS = @LIBGCRYPT_CFLAGS@ LIBGCRYPT_CONFIG = @LIBGCRYPT_CONFIG@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ READLINE_LIBS = @READLINE_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SQLITE_CFLAGS = @SQLITE_CFLAGS@ SQLITE_LIBS = @SQLITE_LIBS@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ WINSOCK_LIBS = @WINSOCK_LIBS@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__rm_f_notfound = @am__rm_f_notfound@ am__tar = @am__tar@ am__untar = @am__untar@ am__xargs_n = @am__xargs_n@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ gsettingsschemadir = @gsettingsschemadir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ gsettings_SCHEMAS = org.gnome.gnomint.gschema.xml EXTRA_DIST = $(gsettings_SCHEMAS) CLEANFILES = $(gsettings_SCHEMAS:.xml=.valid) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign gconf/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign gconf/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -$(am__rm_f) $(CLEANFILES) distclean-generic: -$(am__rm_f) $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ cscopelist-am ctags-am distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags-am uninstall uninstall-am .PRECIOUS: Makefile @GSETTINGS_RULES@ # 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. .NOEXPORT: # Tell GNU make to disable its built-in pattern rules. %:: %,v %:: RCS/%,v %:: RCS/% %:: s.% %:: SCCS/s.% gnomint-1.6.4/install-sh0000755000000000000000000003612215212761274013752 0ustar00rootroot#!/bin/sh # install - install a program, script, or datafile scriptversion=2025-06-18.21; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # 'make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. tab=' ' nl=' ' IFS=" $tab$nl" # Set DOITPROG to "echo" to test this script. doit=${DOITPROG-} doit_exec=${doit:-exec} # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_mkdir= # Desired mode of installed file. mode=0755 # Create dirs (including intermediate dirs) using mode 755. # This is like GNU 'install' as of coreutils 8.32 (2020). mkdir_umask=22 backupsuffix= chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false is_target_a_directory=possibly usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -p pass -p to $cpprog. -s $stripprog installed files. -S SUFFIX attempt to back up existing files, with suffix SUFFIX. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG By default, rm is invoked with -f; when overridden with RMPROG, it's up to you to specify -f if you want it. If -S is not specified, no backups are attempted. Report bugs to . GNU Automake home page: . General help using GNU software: ." while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -p) cpprog="$cpprog -p";; -s) stripcmd=$stripprog;; -S) backupsuffix="$2" shift;; -t) is_target_a_directory=always dst_arg=$2 # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac shift;; -T) is_target_a_directory=never;; --version) echo "$0 (GNU Automake) $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done # We allow the use of options -d and -T together, by making -d # take the precedence; this is for compatibility with GNU install. if test -n "$dir_arg"; then if test -n "$dst_arg"; then echo "$0: target directory not allowed when installing a directory." >&2 exit 1 fi fi if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call 'install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then if test $# -gt 1 || test "$is_target_a_directory" = always; then if test ! -d "$dst_arg"; then echo "$0: $dst_arg: Is not a directory." >&2 exit 1 fi fi fi if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 trap "ret=141; $do_exit" 13 trap "ret=143; $do_exit" 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names problematic for 'test' and other utilities. case $src in -* | [=\(\)!]) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? # Don't chown directories that already exist. if test $dstdir_status = 0; then chowncmd="" fi else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # If destination is a directory, append the input filename. if test -d "$dst"; then if test "$is_target_a_directory" = never; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dstbase=`basename "$src"` case $dst in */) dst=$dst$dstbase;; *) dst=$dst/$dstbase;; esac dstdir_status=0 else dstdir=`dirname "$dst"` test -d "$dstdir" dstdir_status=$? fi fi case $dstdir in */) dstdirslash=$dstdir;; *) dstdirslash=$dstdir/;; esac obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false # The $RANDOM variable is not portable (e.g., dash). Use it # here however when possible just to lower collision chance. tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap ' ret=$? rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null exit $ret ' 0 # Because "mkdir -p" follows existing symlinks and we likely work # directly in world-writable /tmp, make sure that the '$tmpdir' # directory is successfully created first before we actually test # 'mkdir -p'. if (umask $mkdir_umask && $mkdirprog $mkdir_mode "$tmpdir" && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibility with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. test_tmpdir="$tmpdir/a" ls_ld_tmpdir=`ls -ld "$test_tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null fi trap '' 0;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; [-=\(\)!]*) prefix='./';; *) prefix='';; esac oIFS=$IFS IFS=/ set -f set fnord $dstdir shift set +f IFS=$oIFS prefixes= for d do test X"$d" = X && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=${dstdirslash}_inst.$$_ rmtmp=${dstdirslash}_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && { test -z "$stripcmd" || { # Create $dsttmp read-write so that cp doesn't create it read-only, # which would cause strip to fail. if test -z "$doit"; then : >"$dsttmp" # No need to fork-exec 'touch'. else $doit touch "$dsttmp" fi } } && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # If $backupsuffix is set, and the file being installed # already exists, attempt a backup. Don't worry if it fails, # e.g., if mv doesn't support -f. if test -n "$backupsuffix" && test -f "$dst"; then $doit $mvcmd -f "$dst" "$dst$backupsuffix" 2>/dev/null fi # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'before-save-hook 'time-stamp nil t) # time-stamp-start: "scriptversion=" # time-stamp-format: "%Y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: gnomint-1.6.4/po/0000755000000000000000000000000015212761360012354 5ustar00rootrootgnomint-1.6.4/po/ru.gmo0000644000000000000000000024206115212761320013507 0ustar00rootrootV|%1 112(2A2R2f2|22 222 212333 3 23!<3^3w3%33313( 4'I4*q4!4 4+4! 5+-5"Y5!|5.5%5$56/86)h6'666*6!"7 D7)e7 77*7!7 8,>8#k8"8,8#8"9+&9"R9!u9#9999c9`:Np::#];; ; ;;;%;; < (<H2< {<B<A<1 =>=V=p==5=== = > >&>>>R>o>> >B>>>>?B?_?*z? ????@@!/@Q@d@w@ ~@@@"@%@@A!3AUAsA AAAAA B1!BSB fBtBBBB(BC"C @CaC@fC8CC DB DPD4aDRDJD)4E;^EEBEEEFF$0FUFoFFF.F2FGG G)GB;G&~G&G/GGHF!H,hHHBHH!HDI)`I-I2I9I@%JfJnJBJ&J'J*K#UG*VCrVBVBVBdBQd ddBdde -e8eLeje!e#eeee f)fO@fOf$f"g(gVAggg&g@gV=hhhhhh!h2iLi_i*qi i&i%i& j)1j*[j=jj j j2j!k )k4k1;kmkkkkk/kl0lJlel ll zl lllllm m(s^s_s?t31uweu3uKv.]vMvv_w}w&wwexDy=cyKyQy ?z$`z(z&zJzm {s{r|yu|t|dd}X}B"~7e~5~6~: 4E0z''//+3[(8-6\V9:0(%Y'*1҂sKxHă! z/8Me1 B# !2?C 33 U#LyLƉALUoA Uciow ƌ4"!(Jd"t$"ߍ`!a ώ %%Dj}3Ϗs w)*̑*B_ } ɒݒ]OQag~H6ޓ6]LKLpCWU \bJJ lUZ—jXXa:OO7<ltfnH\\jqZܜZ7~5~X3DDџ\JsJ\ JfJbP_P<&>e$X}  (CXv5SԦ2(G[v+?pǨO8#$#ѩ<Y2#'تE(H3q0֫ -٬wDܭ/4T&t@.0*[bw'3F943n>;'1E-w>%' %2aX+$#"*F'qI1'1= otzbJRCs^ҶwYHѷ_ z "%?eH&˹.!-8IfM   !-O.:"Y]L iC{߽!8ܾ>]KgQP|/LVf4[hd`RbVV \cB-]1*JU%:{R% E/FuC]`^4mXbEEHGpcYeJ7 OBcvZmGulsgq'ZI%A/gHG(FD<3(:i 922N+*f hxq}}h|t55<^ry?K -UCt(+I-Ow2(D'U&H|94@%+#Qu7!0Y3, 12IZwU \^ip9'@h)6<87pKSgw+@ADH ,T 0*w"#.K2"-;(*;*f,02")>*h *k:=<0zAk>^wK'[)E7CHK#%="6`O99!D[Ek4R \ $/Y@D:(14ZK35,b~G9$87]C64GE17SK]^Ee11"T6g482 I?B ":`aoWXmR~FY|>/:Bj'h>vV<4F79qe !!"#u#c,$N$O$S/%M%e%<7&Et&X&^'Xr'<'X(aa(h(,)a)`-*\*8*5$+3Z+Y++,uy-/-.f.b/j/!Z5|5_6s66#6 6l6 E7f7x77 7K7Q7G8]8s8rV9{9jE::s<34>h>~>> >->>1>,??C?]???!?@9@"I@$l@"@@!@@/}AAA AA*B&-B*TBBB.B%B%BC1CBCUCopCPC>:2Cf 24A|CEE\"UbWB7*Q?~-<-db[8NM9$l UL?:'I8sOogj39e(/G9BK6 r{SJ*iw^ =S;U1EX}drw0z6YF"&l}QTIxV7tiD`.BVTJc^057om; #!A`0>NH @ t &k3_ PW@MK (%zh@ /?R,:+yaC>Op!M_FO=vLI)DH6%4gq[.Je2x,V.3p;P#T<uqn$k'5\*!811vyR mn)HQ" ]S  GK=aGX%h' F#&D(NA|~,fR{/Y-ZL$j+u5s]4 P) c+<Z Revocation Activated on: %s Distinguished Name: Distinguished Name: %s Expires on: %s Key bitlength: %d MD5 fingerprint: %s SHA1 fingerprint: %s Serial number: %s Type: %s Unique ID: %s Authors: %s Policies: The password must have, at least, %d characters Error. OK. %s version %s %s (unknown)* Any purpose disabled by policy * Any purpose disabled. * Any purpose enabled. * CRL signing use disabled by policy * CRL signing use disabled. * CRL signing use enabled. * Certification Authority use disabled by policy * Certification Authority use disabled. * Certification Authority use enabled. * Code Signing purpose disabled by policy * Code Signing purpose disabled. * Code Signing purpose enabled. * Data Encipherment use disabled by policy * Data Encipherment use enabled. * Digital Signature use disabled by policy * Digital Signature use disabled. * Digital Signature use enabled. * Email Protection purpose disabled by policy * Email Protection purpose disabled. * Email Protection purpose enabled. * Enable CRL Signing? [Yes]/No * Enable Certification Authority use? [Yes]/No * Enable Digital Signature use? [Yes]/No * Key Agreement use disabled by policy * Key Agreement use disabled. * Key Agreement use enabled. * Key Encipherment use disabled by policy * Key Encipherment use disabled. * Key Encipherment use enabled. * Non Repudiation use disabled by policy * Non Repudiation use disabled. * Non Repudiation use enabled. * OCSP Signing purpose disabled by policy * OCSP Signing purpose disabled. * OCSP Signing purpose enabled. * TLS Web Client purpose disabled by policy * TLS Web Client purpose disabled. * TLS Web Client purpose enabled. * TLS Web Server purpose disabled by policy * TLS Web Server purpose disabled. * TLS Web Server purpose enabled. * Time Stamping purpose disabled by policy * Time Stamping purpose disabled. * Time Stamping purpose enabled. - A Certification Authority manager0 Gnome keyring support %d CSR subjectEmmited byThis Certificate Signing Request has its corresponding private key saved in a external file.ValidityExport the Certificate Signing Request to a public file, in PEM format.Export the saved private key to a PKCS#8 password-protected file. This file should only be accessed by the subject of the Certificate Signing Request.#Description#=================== Activated onActivationAdd CSRAdd _Certificate RequestAdd a new Certificate Signing RequestAdd an autosigned CAAdd autosigned CA certificateAlgorithmAll the mandatory data for the certificate generation has been gathered.Any purposeAny purpose enabled in generated certs Are you sure you want to delete this Certificate Signing Request?Are you sure you want to revoke this certificate?Are you sure? Yes/[No] Are you sure? Yes/[No] : Are you sure? [Yes]/No Authority Key IdentifierAutomatic exporting of certificates for gnome-keyringAvailable commands: Basic ConstraintsBoth parts.CACA PolicyCA Root Certificate Common Name (CN):CA Root certificateCA creation process finishedCA database creation failedCA generated successfullyCA propertiesCA use enabled in generated certs CACNCAOCAOUCRL Distribution PointsCRL Sign use enabled in generated certs CRL generated successfullyCRL generated successfully into file '%s' CRL signingCSR couldn't be savedCSR creation process finishedCSR generated successfullyCSR generation failedCSR properties - gnoMintCannot find parent CA in databaseCertActivationDateCertExpirationDateCertSNCertificateCertificate DNCertificate PoliciesCertificate Requests in Database: Certificate Signing Request deleted. Certificate Signing Request: Certificate _Signing RequestsCertificate exported successfullyCertificate generation failedCertificate propertiesCertificate properties - gnoMintCertificate purposes: Certificate requests visibilityCertificate revoked. Certificate signed. Certificate signingCertificate signing request exported successfullyCertificate uses: Certificate: Certificates in Database: Certification AuthorityChange CA password - gnoMintChange database pass_wordChange password for the current databaseChange the given CA policyChoose CA for signing the CSRChoose private key file. gnoMintCityClose current file and create a new database with given filenameClose current file and open the file with given filenameClose database and exit programCode signingCode signing server purpose enabled in generated certs Common Name (CN)Couldn't find any supported format in the given fileCouldn't import the certificate request. The database returned this error: '%s'Couldn't import the certificate. The database returned this error: '%s'Couldn't open %s file. Check permissions.Couldn't recognize the file %s as a RSA or DSA private key.CountryCountry in generated certs must be the same than in CA Country:Create a new databaseCreate new CA databaseCreating CA databaseCreating Certificate Signing RequestCreating new CA - gnoMintCreation process cancelledCriticalCurrent opened file: %s Currently, the database IS password-protected.Currently, the database is not password-protected.DNS NameDSADSA PublicKeyData enciphermentData encipherment use enabled in generated certs Database password protection - gnoMintDelete the given CSR from the databaseDelete the selected Certificate Signing RequestDelta CRL Distribution PointDetailsDiffie-Hellman parameters created and saved successfully in file '%s' Diffie-Hellman parameters saved successfullyDigital signatureDigital signature use enabled in generated certs Directory NameDirectory imported successfully. Do you want to change any property of the new certificate? Yes/[No] Do you want to change anything? Yes/[No] Do you want to password protect it? [Yes]/No Do you want to proceed with the signing? [Yes]/No Do you want to remove this password protection? Yes/[No] Don't inherit any fields from existing Certification AuthoritiesE_xportEmail protectionEmail protection purpose enabled in generated certs Enable Code Signing purpose? [Yes]/No Enable Data Encipherment use? [Yes]/No Enable Email Protection purpose? [Yes]/No Enable Key Agreement use? [Yes]/No Enable Key Encipherment use? [Yes]/No Enable Non Repudiation use? [Yes]/No Enable OCSP Signing purpose? [Yes]/No Enable TLS Web Client purpose? [Yes]/No Enable TLS Web Server purpose? [Yes]/No Enable Time Stamping purpose? [Yes]/No Enable any purpose? [Yes]/No Encrypted PKCS#12 bagEnter bitlength for the key (it must be a whole multiple of 1024)Enter common name (CN)Enter country (C)Enter locality or city (L)Enter new password again for confirmation:Enter organization (O)Enter organizational unit (OU)Enter password - gnoMintEnter state or province (ST)Error creating private key: %dError exporting CSR to PEM structure.Error exporting private key to PEM structure.Error initializing private key structure.Error opening filename '%s'Error when copying data from CSR to certificate structureError when initializing certificate structureError when initializing crt structureError when initializing csr structureError when setting activation timeError when setting authority key identifier extensionError when setting basicConstraint extensionError when setting certificate serial numberError when setting certificate versionError when setting csr versionError when setting expiration timeError when setting keyUsage extensionError when setting subject key identifier extensionError when signing self-signed certificateError when signing self-signed csrError while changing database password. The operation was cancelled.Error while changing database password. The operation was cancelled.Error while establishing database password. The operation was cancelled.Error while removing database password. The operation was cancelled.Error while removing database password. The operation was cancelled.Error while signing CSR.Exiting gnomint-cli... ExpirationExpires onExport CSR - gnoMintExport Certificate Revocation ListExport certificateExport certificate - gnoMintExport certificate signing requestExport crypted private keyExport optionsExport whole certificate in PKCS#12 packageExtended Key UsageExtensionsExtrac_t private keyExtract Private KeyExtract the private key of the CSR with the given internal id and saves it into the given fileExtract the private key of the certificate with the given internal id and saves it into the given fileExtract the private key of the selected item into a external fileFALSEFailed to initialize: %s File '%s' opened File imported successfully. Files in the directory don't belong to any supported CA format.Fingerprints: For removing the password-protection, the current database password must be supplied. GeneralGeneral Preferences - gnoMintGenerate D_H parameters...Generate _CRLGenerate a certificate signing the given CSR with the given CAGenerate a new CRL for the given CA, saving it into the file Generate a new DH-parameter set, saving it into the file Generated certs inherit Country from CA Generated certs inherit Locality from CA Generated certs inherit Organization from CA Generated certs inherit Organizational Unit from CA Generated certs inherit State from CA Generating CSRGenerating new DSA key pairGenerating new RSA key pairGenerating self-signed CA-Root certGet current status (opened file, no. of certificates, etc...)Hours between CRL updates:IPIP AddressId. Description Value Id. Is CA? Certificate Subject Key in DB? Activation ExpirationId. Name Value Id. Parent Id. CSR Subject Key in DB? Import a single file.Import a whole directory.Import selection - gnoMintImport the file with the given name Import the given directory, as a OpenSSL-CA directoryIncorrect number of parameters. Inherit fields according to selected Certification Authority and its policy.Inhibit Any-PolicyInsert new password (confirm):Insert new password:Insert passphrase (8 characters or more):Insert passphrase (confirm):Insert password (confirm):Insert password:Introduce number of months before expiration of the new certificate (0 to cancel)Introduce number of months before expiration of the new certification authorityInvalid command. Try 'help' for getting a list of recognized commands. IssuerIssuer Unique IDIssuer: Key UsageKey agreementKey agreement use enabled in generated certs Key decipher onlyKey decipherment onlyKey encipher onlyKey enciphermentKey encipherment onlyKey encipherment use enabled in generated certs Key generation failedKey pair List the CSRs in databaseList the certificates in database. With option --see-revoked, lists also the revoked onesLocality in generated certs must be the same than in CA MD5 fingerprintMD5FINGERPRINTManage X.509 certificates and CAs, easily and graphicallyMaximum number of hours between CRL updates Maximum number of months before expiration of new certs ModulusMonths before certificate expiration:Months before root certificate expiration:NameName ConstraintsNew CA - gnoMintNew CRL - gnoMintNew Certificate - gnoMintNew Diffie-Hellman parameters - gnoMintNew certificate Common Name (CN):New certificate request - gnoMintNon repudiationNon reputation use enabled in generated certs None.Not AfterNot BeforeNothing done. Number of CSRs in file: %d Number of certificates in file: %d OCSP signingOCSP signing purpose enabled in generated certs OK. Now you must supply a new password for protecting the private keys in the database, so nobody else but authorized people can use them. This password will be asked any time gnoMint will make use of any private key in database.OK. You need to supply a password for protecting the private keys in the database, so nobody else but authorized people can use them. This password will be asked any time gnoMint will make use of any private key in database.Only the private key (crypted).Only the private key (uncrypted).Only the pu_blic part.Open CA databaseOpen _recentsOpen an existing databaseOpenSSL has returned the following error while trying to decypher the private key: %sOpening database %s...Operation cancelled.Operation cancelled. OrganizationOrganization (O)Organization Unit:Organization in generated certs must be the same than in CA Organization:Organizational Unit (OU)Organizational Unit in generated certs must be the same than in CAOrganizational unitPKCS#8 crypted private keyParametersPassword (confirm):Password changed successfullyPassword changed successfully. Password established successfullyPassword established successfully. Password protectPassword removed successfullyPassword removed successfully. Password:Path Length ConstraintPlease enter data corresponding to subject of the Certificate Signing Request: Please enter data corresponding to subject of the new Certification Authority: Please insert the database password:Please introduce password for `%s'Please, choose the file:Please, choose which part of the saved Certificate Signing Request you want to export:Please, enter current password:Please, enter new password:Please, enter the prime size, in bits:Please, insert the current database password (Empty to cancel): Please, select the CA for which a Certificate Revocation List is going to be created:Policy ConstraintsPolicy MappingsPrivate Key Usage PeriodPrivate key %sPrivate key bit length:Private key exported successfullyPrivate key extracted successfully into file '%s' Private key for %sPrivate key type:Problem when creating '%s' CA database: %sProblem when importing '%s' fileProblem when importing the given file.Problem when opening '%s' CA databaseProblem when opening '%s' CA database Problem when opening new '%s' CA databaseProblem when opening new '%s' CA database Problem while calling to openssl for decyphering private key.Public ExponentRFC822 NameRSA PublicKeyRemember this password during this gnoMint sessionRevo_keRevocationRevokeRevoke the certificate with the given internal IDRevoked certificates visibilityRoot certificate propSHA1FINGERPRINTSave CA database as...Save Diffie-Hellman parametersSave the current file with a different filenameSaving CSR in databaseSelect PEM file to importSelect directory to importSerialSerial NumberSerial numberSet the given program preferenceShow (this) help messageShow CA policyShow about messageShow distribution informationShow program preferencesShow properties of the given CSRShow properties of the given certificateShow version informationShow warranty informationShowing policies of the following certificate: SignSign the selected Certificate Signing RequestSignatureSignature AlgorithmStart a new CSR creation processStart a new self-signed CA creation processState in generated certs must be the same than in CA State or Province nameSubjectSubject Alternative NameSubject Directory AttributesSubject Key IdentifierSubject Public KeySubject Public Key InfoSubject Unique IDSubject: Syntax: %s THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. For more information about warranty, see section 15 onwards of the GNU General Public License. You should have received a copy of the GNU General Public License along with this program. If not, see . TLS WWW ClientTLS WWW Client.TLS WWW ServerTLS Web clientTLS web client purpose enabled in generated certs TLS web server purpose enabled in generated certs TRUEThe bit-length of the prime number must be whole multiple of 1024The current password you have entered doesn't match with the actual current database password.The current password you have entered doesn't match with the actual current database password.The expiration date of the new certificate is after the expiration date of the CA certificate. According to the current standards, this is not allowed. The new certificate will be created with the same expiration date as the CA certificate.The file already exists, so it will be overwritten.The file designated in database contains a private key, but it is not the private key corresponding to the certificate.The file designated in database couldn't be opened.The file designated in database doesn't contain any recognized private key.The file designated in database doesn't exist.The file that holds private key for certificate '%s' is password-protected. The file that holds private key for certificate '%s' is password-protected. Please, insert the password corresponding to this file.The given CA id. is not validThe given CSR id. is not validThe given certificate id. is not validThe given file contains a valid private key. However, it has not been imported to the database because it doesn't match any key-less certificate in the database.The given file contains a valid private key. However, it has not been imported to the database because it doesn't match any key-less certificate or certificate request in the database.The given password doesn't match the one used for crypting this partThe given password doesn't match the one used in the databaseThe given password doesn't match with the one used while crypting the file.The given password doesn't match with the password used for encrypting this part.The given policy id is not validThe given preference id is not validThe introduced passphrases are distinct.The introduced passwords are distinct.The new certificate will be created with the following uses and purposes: The policy of this CA obligue the country field of the certificates to be the same as the one in the CA cert.The policy of this CA obligue the locality/city field of the certificates to be the same as the one in the CA cert.The policy of this CA obligue the organization field of the certificates to be the same as the one in the CA cert.The policy of this CA obligue the organizational unit field of the certificates to be the same as the one in the CA cert.The policy of this CA obligue the state/province field of the certificates to be the same as the one in the CA cert.The selected database has been created with a newer version of gnoMint than the currently installed.There was a problem while importing the private key corresponding to CA root certificateThere was a problem while importing the public CA root certificateThere was a problem while opening the directory certs/.There was a problem while opening the directory crl/.There was a problem while opening the directory keys/.There was a problem while opening the directory newcerts/.There was a problem while opening the directory req.There was an error while decrypting private key.There was an error while exporting CRL.There was an error while exporting CSR.There was an error while exporting certificate.There was an error while exporting private key.There was an error while exporting the certificate.There was an error while generating CRL.There was an error while generating the PKCS#12 package.There was an error while getting private key.There was an error while getting revoked certificates.There was an error while getting the certificate and private key from the internal database.There was an error while password-protecting private key.There was an error while saving Diffie-Hellman parameters.There was an error while uncrypting private key.There was an error while writing CRL.These are the provided CSR properties: These are the provided new CA properties: This Certificate Signing Request will be deleted.This action requires using one or more private keys saved in the CA database. Please insert the database password.This action requires using one or more private keys saved in the database. This certificate already exists in the database: cannot insert it twice.This certificate will be revoked.This is free software, and you are welcome to redistribute it under certain conditions; type 'distribution' for details. This operation cannot be undone. Are you sure? Yes/[No] This program comes with ABSOLUTELY NO WARRANTY; for details type 'warranty'. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Time stampingTime stamping purpose enabled in generated certs To do. Feature not implemented yet.Translators: %s URIUnexpected errorUnpaired quotes Unsupported operation: you cannot generate a PKCS#12 for a CSR.ValidityValidity Validity: ValueVersionWhether the certificate requests should be visible.Whether the revoked certificates should be visible.Window sizeYou are about to assign to the preference 'Gnome keyring support' the new value '%d'.You are about to create a Certificate Signing Request with these properties.You are about to create a new Certification Authority with these properties.You are about to sign the following Certificate Signing Request: You must supply the current database password before changing the password. You need to supply a passphrase for protecting the exported certificate, so nobody else but authorized people can use it. This passphrase will be asked by any application that will import the certificate.You need to supply a passphrase for protecting the exported private key, so nobody else but authorized people can use it. This passphrase will be asked by any application that will make use of the private key._Add self-signed CA_Certificates_Edit_Help_Import_New certificate database_No_Open certificate database_Revoked Certificates_Save certificate database as..._Save filename in the database for automatic loading_Sign_Viewaddcsr [ca-id-for-inherit-fields]crlgen delete dhgen extractcertpkey extractcsrpkey gnoMintgnoMint X.509 CA ManagergnoMint is a program for creating and managing Certification Authorities, and their certificatesgnoMint-cli current preferences: importdir importfile labelmay differmust be the samenewdb opendb page 3revoke savedbas setpolicy setpreference showcert showcsr showpolicy sign translator-creditswith the certificate corresponding to the next CA: Project-Id-Version: gnomint Report-Msgid-Bugs-To: davefx@gmail.com PO-Revision-Date: 2009-10-12 03:55+0000 Last-Translator: David Marín Language-Team: Russian Language: ru MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2010-08-11 09:00+0000 X-Generator: Launchpad (build Unknown) Отзыв Активирован: %s Отличительное Имя (DN): Определяющее Имя (DN): %s Срок истекает: %s Битовая длина ключа: %d MD5 отпечаток: %s SHA1 отпечаток: %s Серийный номер:%s Тип: %s Уникальный ID: %s Авторы: %s Политики: Пароль должен содержать по крайне мере %d символов Ошибка. OK. %s версия %s %s (неизвестно)* Любое назначение запрещено политикой * Любое назначение запрещено. * Любое назначение разрешено. * Использование для подписи CRL запрещено политикой * Использование для подписи CRL отключено. * Использование подписывания CRL включено. * Использование для Центра Сертификации запрещено политикой * Использование Центра Сертификации отключено. * Использование Центра Сертификации включено. * Назначения для Подписи Кода запрещено политикой * Назначение для подписи кода запрещено. * Назначение для подписи кода разрешено. * Использование для Шифрования Данных запрещено политикой * Использование для шифрования данных разрешено. * Использование для Цифровой Подписи запрещено политикой * Использование для цифровой подписи запрещено. * Использование для цифровой подписи разрешено. * Назначение для Защиты Эл.Почты запрещено политикой * Назначение для защиты эл.почты запрещено. * Назначение для защиты эл.почты разрешено. * Разрешить подпись CRL? [Да]/Нет * Разрешить использование для Центра Сертификации? [Да]/Нет * Разрешить использование для Цифровой Подписи? [Да]/Нет * Использование для Согласования Ключа запрещено политикой Использование для согласования ключей запрещено. Использование для согласования ключей разрешено. * Использование как Ключа Шифрования запрещено политикой * Использование для шифрования ключей запрещено. * Использование для шифрования ключей разрешено. * Использование для удостоверения в невозможности отказа (Non-Repudiation) запрещено политикой * Использование для удостоверения в невозможности отказа запрещено. * Использование для удостоверения в невозможности отказа разрешено. * Назначение для подписи OCSP запрещено политикой Назначение для подписи OCSP запрещено. Назначение для подписи OCSP разрешено. * Назначение как TLS веб клиент запрещено политикой * Назначение как TLS Веб клиент запрещено. * Назначение как TLS Веб клиент разрешено. * Назначение как TLS веб сервер запрещено политикой * Назначение как TLS Веб сервер запрещено. * Назначение как TLS Веб сервер разрешено. * Назначение для Временных Меток запрещено политикой * Назначение для отметки времени запрещено. * Назначение для отметки времени разрешено. - управление Центром Авторизации0 Поддержка Gnome keyring %d Заголовок CSRВыданЭтот Запрос на Подпись Сертификата имеет соответствующий закрытый ключ, сохранённый во внешнем файле.Период действияЭкспорт Запроса на Подпись Сертификата в незашифрованный файл PEM формата.Экспрорт сохранённого закрытого ключа в PKCS#8 файл защищённый паролем. Этот файл должен быть доступен владельцу Запроса на Подпись Сертификата.#Описание#=================== Активировано наАктивацияДобавить CSRДобавить запрос _СертификатаДобавить новый Запрос на Подпись СертификатаДобавить самоподписанный CAДобавить самоподписанный CA сертификатАлгоритмВсе обязательные данные для генерации сертификата были собраны.Любая цельЛюбое назначение рарешено в сгенерированных сертификатах Вы уверены, что хотите улалить Запрос на Подпись Сертификата?Вы уверены, что хотите отозвать сертификат?Вы уверены? Да/[Нет] Вы уверены? Да/[Нет]: Вы уверены? [Да]/Нет Идентификатор Ключа АвторизацииАвтоматический экспорт сертификатов для gnome-keyringДоступные команды: Основные ограниченияОбе части.CAПолитика CAКорневой сертификат CA Обычное Имя (CN):Корневой сертификат CAПроцесс создания CA завершёнСоздание базы CA не удалосьCA успешно созданСвойства CAИспользование для CA разрешено в сгенерированных сертификатах CACNCAOCAOUТочки распространения CRLИспользование для Подписи CRL разрешено в сгенерированных сертификатах CRL создан успешноГенерация CRL в файл '%s' прошла успешно Подпись CRLCSR не может быть сохраненоПроцесс создания CSR завершёнCSR успешно созданОздание CSR не удалосьСвойства CSR - gnoMintНе могу найти родительский CA в базеДатаАктвацииСертификатаДатаПросрочкиСертификатаCertSNСертификатDN сертификатаПолитики СертификатаЗапросы сертификата в Базе: Запрос на Подпись Сертификата удалён. Запрос на Подпись Сертификата: Запрос _Подписи сертификатаСертификат успешно экспортированСоздание сертификата не удалосьСвойства сертификатаСвойства сертификата - gnoMintНазначение сертификата: Отображение запросов сертификатаСертификат отозван. Сертификат подписан. Подпись сертификатаЗапрос на подпись сертификата успешно экспортированСертификат использует: Сертификат: Сертификаты в базе: Центр сертификацииИзменить CA пароль - gnoMintИзменить па_роль базыИзменить пароль для текущей базы данныхИзменить данную политику CAВыбор CA для подписи CSRВыбор закрытого ключа. gnoMintГородЗакрыть текущий файл и создать новую базу с данным именем файлаЗакрыть текущий файл и открыть файл с заданным именемЗакрыть базу данных и выйти из программыПодпись кодаНазначение для подписи кода разрешено в сгенерированных сертификатах Обычное Имя (CN)Не могу найти какой-либо поддерживаемый формат в данному файлеНе могу импортировать запрос сертификата. База вернула такую ошибку: '%s'Не могу импортировать сертификат. База вернула такую ошибку: '%s'Не могу открыть файл %s. Проверьте права.Не могу распознать файл %s как RSA или DSA закрытый ключ.СтранаСтрана в сгенерированных сертификатах должны быть такой же как в CA Страна:Создать новую базуСоздать новую базу CAСоздание базы CAСодание Запроса на Подпись СертификатаСоздать новый CA - gnoMintПроцесс создания отменёнКритическийТекущий открытый файл: %s На данный момент, база защищена паролем.На данный момент база не защищена паролем.Имя DNSDSAПубличный ключ DSAШифрование данныхИспользование для шифрования данных разрешено в сгенерированных сертификатах Защита базы паролем - gnoMintУдалить данный CSR из базы данныхУдалить выбранный Запрос на Подпись СертификатаТочка распространения дополнительного CRLДеталиПараметры Diffie-Hellman созданы и успешно сохранены в файле '%s' Параметры Diffie-Hellman сохранены успешноЦифровая подписьИспользование для цифровой подписи разрешено в сгенерированных сертификатах Название каталогаКаталог импортирован успешно. Хотите ли вы изменить какое-либо свойство нового сертификата? Да/[Нет] Хотите ли вы изменить всё? Да/[Нет] Хотите ли вы защитить её паролем? [Да]/Нет Хотите ли вы продолжить процедуру подписывания? [Да]/Нет Хотите ли вы удалить защиту паролем? Да/[Нет] Не наследовать ни одного поля из существующего Центра СертификацииЭ_кспортЗащита эл.почтыНазначение для защита почты разрешено в сгенерированных сертификатах Разрешить назначение для Подписи Кода? [Да]/Нет Разрешить использование для Шифрования Данных? [Да]/Нет Разрешить назначение для Защиты Эл.Почты? [Да]/Нет Разрешить использование для Согласования Ключа? [Да]/Нет Разрешить использование как Ключа Шифрования? [Да]/Нет Разрешить использование для удостоверения в невозможности отказа (Non-Repudiation)? [Да]/Нет Разрешить назначение для подписи OCSP? [Да]/Нет Разрешить назначение как TLS веб клиент? [Да]/Нет Разрешить назначение как TLS Веб сервер? [Да]/Нет Разрешить назначения для Временных Меток? [Да]/Нет Разрешить любое назначение? [Да]/Нет Зашифрованный пакет PKCS#12Введите битовую длину ключа (должно быть кратно 1024)Введите обычное имя (СN)Введите страну (C)Введите название местности или города (L)Введите новый пароль снова для подтверждения:Введите название организации (O)Введите название организационной единицы (OU)Введите пароль - gnoMintВведите название штата или области (ST)Ошибка при создании закрытого ключа: %dОшибка при экспорте CSR в PEM структуру.Ошибка при экспорте закрытого ключа в PEM структуру.Ошибка при инициализации структуры закрытого ключа.Ошибка при открытии файла '%s'Ошибка при копировании данных из CSR в структуру сертификатаОшибка при инициализации структуры сертификатаОшибка при инициализации crt структурыошибка при инициализации csr структурыОшибка при установке времени активацииОшибка при установке расширения идентификатора центра ключаОшибка при установке расширения основных ограниченийОшибка при задании серийного номера сертификатаОшибка при установке версии сертификатаОшибка при установке версии csrОшибка при задании времени истечения срокаОшибка при установке расширения использования ключейОшибка при установке расширения заголовка идентификатора ключаошибка при подписи самоподписанного сертификатаОшибка при подписи самоподписанного csrПроизошла ошибка во время смены пароля. Операция была отменена.Произошла ошибка при смене пароля базы. Операция отменена.Произошла ошибка при установке пароля базы. Операция отменена.Произошла ошибка во время снятия пароля базы. Операция была отменена.Произошла ошибка при удалении пароля базы. Операция отменена.Ошибка при подписи CSR.Выход из gnomint-cli... Срок истеченияСрок истеченияЭкспорт CSR - gnoMintЭкспорт списка отозванных сертификатовЭкспорт сертификатаЭкспорт сертификата - gnoMintЭкспорт запроса на подпись сертификатаЭкспорт зашифрованного закрытого ключОпции экспортаЭкспорт всего сертификата в PKCS#12 пакетРасширенное использование ключаРасширенияИзвлечени_е закрытого ключаИзвлечь Закрытый КлючИзвлечь закрытый ключ CSR с данным внутренним номером и сохранить его в заданный файлИзвлечь закрытый ключ сертификата с данным внутренним номером и сохранить его в заданный файлИзвлечь закрытый ключ выбранного объекта во внешний файлЛОЖНОНе удалось инициализировать: %s Открыт файл '%s' Файл импортирован успешно. Файлы в каталоге не принадлежат какому-либо поддерживаемому формату CA.Отпечатки: Для удаления парольной защиты необходимо ввести текущий пароль базы. ОсновноеОсновные свойства - gnoMintОсновные D_H параметры...Генерировать _CRLГенерировать сертификат подписывая данный CSR с данным CAСоздать новый CRL для данного CA, сохранив его в файле Генерировать новый набор DH-параметров, сохраняя его в файле <имяфайла>Сгенерированные сертификаты наследуют Страну от CA Сгенерированные сертификаты наследуют Местность от CA Сгенерированные сертификаты наследуют Организацию от CA Сгенерированные сертификаты наследуют Организационную Единицу от CA Сгенерированные сертификаты наследуют Область от CA Создание CSRСоздание новой пары ключей DSAСоздание новой пары ключей RSAСоздание самоподписанного корневого сертификата CAПолучить текущий статус (открытый файл, номер сертификатов, т.д. ...)Кол-во часов между обновлениями CRL:IPIP адресId. Описание Значение Id. является CA? Заголовок Сертификата Ключ в базе? Активация Истечение срокаId. Имя Значение Id. Id предка. CSR Заголовок Ключ в базе? Импорт один файл.Импорт всего каталогаИмпорт выбранного - gnoMintИмпорт файла с заданым именем <имяфайла>Импорт данного каталога как OpenSSL-CA каталогаНеверное число параметров. Наследовать поля в соответствии с выбранным Центром Авторизации и его политикой.Запрет любой политикиВведите новый пароль (подтверждение):Введите новый пароль:Введите парольную фразу (8 символов или больше)Введите парольную фразу (подтвердение):Введите пароль (подтверждение):Введите пароль:Введите количество месяцев до истечения нового сертификата (0 для безсрочного)Введите количество месяцев до истечения срока нового центра авторизацииНеверная команда. Попробуйте 'help' для получения списка распознаваемых команд. ИздательУникальный идентификатор издателяПоставщик: Использование ключаСогласование ключаИспользование для согласования ключей разрешено в сгенерированных сертификатах Только для ключа дешифрованияТолько дешифрование ключаТолько для ключа шифрованияШифрование ключаТолько шифрование ключаИспользование для шифрования ключей разрешено в сгенерированных сертификатах Создание ключей не удалосьПара ключей Список CSR в базеСписок сертификатов в базе.Район в сгенерированных сертификатах должен быть таким же как в CA MD5 отпечатокMD5ОТПЕЧАТОКУправлять сертификатами X.509 и CA легко и визуальноМаксимальное количество часов между обновлениями CRL Максимальное количество месяцев до истечения срока новых сертификатов МодульКоличество месяцев до истечения срока сертификата:Количество месяцев до истечения срока корневого сертификатаИмяНазвание ограниченийНовый CA - gnoMintНовый CRL - gnoMintНовый Сертификат - gnoMintНовые параметры Diffie-Hellman - gnoMintНовый сертификат Обычное имя (CN):Новый запрос сертификата - gnoMintнерасторгаемыйИспользование для заверения невозможности отказа разрешено сгенерированных сертификатах Нет.Не позднееНе ранееНечего делать. Количество CSR в файле: %d Количество сертификатов в файле: %d OCSP подписьНазначение для подписи OCSP разрешено в сгенерированных сертификатах Хорошо. Сейчас вы должны ввести пароль для защиты закрытых ключей в базе, чтобы никто кроме авторизованных лиц не мог использовать их. Пароль будет запрашиваться каждый раз, когда gnoMint будет использовать закрытый ключ в базе.Хорошо. Вы должны ввести пароль для защиты закрытых ключей в базе, чтобы никто кроме авторизованных лиц не мог использовать их. Пароль будет запрошен в то время, когда gnoMint будет использовать закрытый ключ в базе.Только закрытый ключ (зашифрованный).Только закрытый ключ (незашифрованный).Только пу_бличную часть.Открыть базу CAОткрыть _недавниеОткрыть существующую базуOpenSSL вернул следующую ошибку при попытке дешифирования закрытого ключа: %sОткрыть базу данных %s...Операция отменена.Действие отменено. ОрганизацияОрганизация (О)Организационная единица:Организация в сгенерированных сертификатах должна быть такой же как в CA Организация:Организационная единица (OU)Организационная Единица в сгенерированных сертификатах должна быть такой же как в CAОрганизационная единицаЗашифрованный закрытый ключ PKCS#8ПараметрыПароль (подтверждение):Пароль изменён успешноПароль успешно изменён. Пароль установлен успешноПароль успешно установлен. Защита паролемПароль удалён успешно.Пароль успешно удалён. Пароль:Ограничение длины путиПожалуйста введите данные соответствующие заголовку Запроса на Подпись Сертификата: Пожалуйста введите данные соответствующие заголовку нового Центра Авторизации: Пожалуйста введите пароль базы:Пожалуйста, введите пароль для `%s'Пожалуйста, выберите файл:Пожалуйста, выберите какую часть сохранённого Запроса на Подпись Сертификата вы хотите экспортировать:Пожалуйста, введите текущий пароль:Пожалуйста, введите новый пароль:Пожалуйста, введите первоначальный размер, в битах:Пожалуйста, введите текущий пароль базы (Пустой ввод для отмены): Пожалуйста, выберите CA, для которого будет создан Список Отозванных Сертификатов:Ограничения ПолитикиСоответствия политикиПериод использования Закрытого КлючаЗакрытый ключ %sДлина в битах закрытого ключа:Закрытый ключ успешно экспортированЗакрытый ключ извлечён успешно в файл '%s' Закрытый ключ для %sТип закрытого ключа:Проблема при создании базы CA '%s': %sПроблема при импорте файла '%s'Проблема при импортировании данного файла.Проблема при открытии базы CA '%s'Проблема с открытием базы CA '%s ' Проблема при открытии новой '%s' базы CAПроблема при открытии новой базы CA '%s' Проблема при вызове openssl для дешифрования закрытого ключа.Открытый показатель степениИмя RFC822Публичный ключ RSAЗапомнить этот пароль на время текущей сессии gnoMintОтоз_ватьОтзывОтозватьОтозвать сертификат с данным внутренним номеромОтображение отозванных сертификатовСвойства корневого сертификатаSHA1ОТПЕЧАТОКСохранить базу CA как...Сохранить Diffie-Hellman параметрыСохранить текущий файл под другим именемЗапись CSR в базуВыберите PEM файл для импортаВыберите каталог для импортаСерийный номерСерийный номерСерийный номерУстановить данную настройку программыПоказать (это) сообщение помощиПоказать политики CAПоказать сведения о программеПоказать сведения о распространенииПоказать настройки программыПоказать свойства данного CSRПоказать свойства данного сертификатаПоказать сведения о версииПоказать сведения о гарантияхОтображение политик следующего сертификата: ПодписатьПодписать выбранный Запрос на Подпись СертификатаПодписьАлгоритм подписиСтартовать процесс создания нового CSRСтартовать процесс создания нового самоподписанного CAОбласть в сгенерированных сертификатах должна быть такой же как в CA Название штата или областиЗаголовокЗаголовок Альтернативное ИмяЗаголовок Атрибуты КаталогаЗаголовок Идентификатор КлючаЗаголовок Публичного КлючаИнформация заголовока публичного ключаУникальный идентификатор заголовкаЗаголовок: Синтакс: %s ГАРАНТИИ НА ПРОГРАММУ НЕ ПРЕДОСТАВЛЯЮТСЯ В ТОЙ СТЕПЕНИ, В КАКОЙ ЭТО ДОПУСКАЕТСЯ ПРИМЕНИМЫМ ПРАВОМ. НАСТОЯЩАЯ ПРОГРАММА ПОСТАВЛЯЕТСЯ НА УСЛОВИЯХ "КАК ЕСТЬ". ЕСЛИ ИНОЕ НЕ УКАЗАНО В ПИСЬМЕННОЙ ФОРМЕ, АВТОР И/ИЛИ ИНОЙ ПРАВООБЛАДАТЕЛЬ НЕ ПРИНИМАЕТ НА СЕБЯ НИКАКИХ ГАРАНТИЙНЫХ ОБЯЗАТЕЛЬСТВ, КАК ЯВНО ВЫРАЖЕННЫХ, ТАК И ПОДРАЗУМЕВАЕМЫХ, В ОТНОШЕНИИ ПРОГРАММЫ, В ТОМ ЧИСЛЕ ПОДРАЗУМЕВАЕМУЮ ГАРАНТИЮ ТОВАРНОГО СОСТОЯНИЯ ПРИ ПРОДАЖЕ И ПРИГОДНОСТИ ДЛЯ ИСПОЛЬЗОВАНИЯ В КОНКРЕТНЫХ ЦЕЛЯХ, А ТАКЖЕ ЛЮБЫЕ ИНЫЕ ГАРАНТИИ. ВСЕ РИСКИ, СВЯЗАННЫЕ С КАЧЕСТВОМ И ПРОИЗВОДИТЕЛЬНОСТЬЮ ПРОГРАММЫ, НЕСЕТ ЛИЦЕНЗИАТ. В СЛУЧАЕ ЕСЛИ В ПРОГРАММЕ БУДУТ ОБНАРУЖЕНЫ НЕДОСТАТКИ, ВСЕ РАСХОДЫ, СВЯЗАННЫЕ С ТЕХНИЧЕСКИМ ОБСЛУЖИВАНИЕМ, РЕМОНТОМ ИЛИ ИСПРАВЛЕНИЕМ ПРОГРАММЫ, НЕСЕТ ЛИЦЕНЗИАТ. Для подробной информации о гарантии смотрите секцию 15 Стандартной Общественной Лицензией GNU. Вы должны были получить копию Стандартной Общественной Лицензией GNU с этой программой. Если нет, смотрите . TLS WWW КлиентTLS WWW Клиент.TLS WWW СерверTLS Веб клиентНазначение как TLS веб-клиент разрешено в сгенерированных сертификатах Назначение как TLS веб-сервер разрешено в сгенерированных сертификатах ИСТИННОБитовая длинна основного числа должна быть кратна 1024Текущий пароль который вы ввели не совпадает с фактическим паролем базы.Текущий пароль, который вы ввели, не совпадает с текущим актуальным паролем базы.Срок истечения нового сертификата превышает срок истечения CA сертификата. В соответствии с текущими стандартами, это не допускается. Новый сертификат будет создан с тем же сроком истечения, что и CA сертификат.Файл уже существует, поэтому он будет переписан.Выделенный файл в базе содержит закрытый ключ, но это не закрытый ключ соответствующий сертификату.Назначенный файл в базе не может быть открыт.Выделенный файл в базе не содержит какой-либо распознанный закрытый ключ.Назначенный файл в базе не существует.Файл, содержащий закрытый ключ для сертификата '%s' защищён паролем. Файл, содержащий закрытый ключ сертификата '%s' защищён паролем. Пожалуйста, введите пароль, соответствующий этому файлу.Заданный идентификатор CA не веренЗаданный номер CSR не веренЗаданный номер сертификата не веренДанный файл содержит действительный закрытый ключ. Однако, он не был импортирован в базу, поскольку он не соответствует какому-либо сертификату без ключа в базе.Данный файл содержит действительный закрытый ключ. Однако, он не был импортирован в базу, поскольку он не соответствует какому-либо сертификату или запросу на подпись сертификата без ключа в базе.Данный пароль не соответствует тому, который был использован для шифрования этой частиДанный пароль не совпадает с тем, который был использован в базе.Данный пароль не совпадает с тем, который был использован при шифровании файла.Данный пароль не соответствует паролю, использованному для шифрования этой части.Данная политика недействительнаЗаданный id свойств не верныйВведённые парольные фразы отличаются.Введённые пароли различаются.Новый сертификат будет сгенерирован для следующего использования и назначения: Политика данного CA требует, чтобы поле страны сертификата было таким же как в сертификате CA.Политика данного CA требует, чтобы поле района/города сертификата было таким же как в сертификате CA.Политика данного CA требует, чтобы поле организация сертификата было таким же как в сертификате CA.Политика данного CA требует, чтобы поле организационная единица сертификата было таким же как в сертификате CA.Политика данного CA требует, чтобы поле области сертификата было таким же как в сертификате CA.Выбранная база была создана в более новой версии gnoMint, чем установленная.Произошла ошибка при импорте закрытого ключа, соответствующего корневому сертификату CAПроизошла ошибка при импорте открытого корневого сертификата CAПроизошла ошибка при открытии каталога сертификатов/.Произошла ошибка при открытии каталога crl/.Произошла ошибка при открытии каталога keys/.Произошла ошибка при открытии каталога newcerts/.Произошла ошибка при открытии каталога req.Произошла ошибка во время расшифровки закрытого ключа.Произошла ошибка при экспорте CRL.Произошла ошибка во время экспорта CSR.Произошла ошибка во время экспорта сертификата.Произошла ошибка во время экспорта закрытого ключаПроизошла ошибка во время экспорта сертификата.Произошла ошибка при создании CRL.Произошла ошибка во время генерации PKCS#12 пакета.Произошла ошибка во время получения закрытого ключа.Произошла ошибка при получении отозванных сертификатов.Произошла ошибка во время получения сертификата и закрытого ключа из внутренней базы.Произошла ошибка при защите паролем закрытого ключа.Произошла ошибка при сохранении параметров Diffie-Hellman.Произошла ошибка при расшифровке закрытого ключа.Произошла ошибка при записи CRL.Предоставленные свойства CSR: Заданные свойства нового CA: Этот Запрос на Подпись Сертификата будет удалён.Это действие требует использования одного или нескольких закрытых ключей, сохранённых в базе CA. Пожалуйста введите пароль базы.Это действие требует использование одного или более закрытых ключей, сохранённых в базе. Сертификат уже существует в базе: не могу вставить его повторно.Сертификат будет отозван.Это свободная программа и приветствуется её распространение при определённых условиях; наберите 'distribution' для деталей. Эта операция не может быть отменена. Вы уверены? Да/[Нет] Эта программа идёт АБСОЛЮТНО БЕЗ ГАРАНТИЙ; для подробностей наберите 'warranty'. Данная программа является свободным программным обеспечением. Вы вправе распространять ее и/или модифицировать в соответствии с условиями версии 3 либо по вашему выбору с условиями более поздней версии Стандартной Общественной Лицензии GNU, опубликованной Free Software Foundation. Мы распространяем данную программу в надежде на то, что она будет вам полезной, однако НЕ ПРЕДОСТАВЛЯЕМ НА НЕЕ НИКАКИХ ГАРАНТИЙ, в том числе ГАРАНТИИ ТОВАРНОГО СОСТОЯНИЯ ПРИ ПРОДАЖЕ и ПРИГОДНОСТИ ДЛЯ ИСПОЛЬЗОВАНИЯ В КОНКРЕТНЫХ ЦЕЛЯХ. Для получения более подробной информации ознакомьтесь со Стандартной Общественной Лицензией GNU. Вместе с данной программой вы должны были получить экземпляр Стандартной Общественной Лицензии GNU. Если вы его не получили, смотрите . Временная отметкаНазначение для временных меток разрешено сгенерированных сертификатах Предстоит сделать. Возможность пока не реализована.Переводчики: %s URIНеожиданная ошибкаНепарные кавычки Неподдерживаемая операция: вы не можете создать PKCS#12 для CSR.ДействительностьГодность Годность: ЗначениеВерсияДолжны ли запросы сертификата быть видныДолжны ли отозванные сертификаты быть видныРазмер окнаВы собираетесь назначить свойству 'Поддержка Gnome keyring' новое значение '%d'.Вы создаёте Запрос на Подпись Сертификата с такими свойствами.Вы создаёте новый Центр Авторизации со следующими свойствами.Вы собираетесь подписать следующий Запрос на подпись Сертификата: Вы должны ввести текущий пароль базы перед сменой пароля. Вы должны задать парольную фразу для защиты экспортированного сертификата, чтобы никто другой, а только авторизованные люди могли использовать его. Эта парольный фраза будет запрошены любым приложением, которое будет импортировать сертификат.Вы должны указать парольную фразу для защиты экспортируемого закрытого ключа, чтобы никто, кроме авторизованных лиц, не мог использовать его. Эта парольная фраза будет запрашиваться любым приложением, которое будет использовать закрытый ключ._Добавить самоподписанный CA_Сертификат_Изменить_Справка_Импорт_Новая база сертификатов_Нет_Открыть базу сертификатов_Отозванные Сертификаты_Сохранить базу сертификатов как..._Сохранить файл в базе для автоматической загрузки_Подписать_Видaddcsr [ca-id-for-inherit-fields]crlgen delete dhgen extractcertpkey extractcsrpkey gnoMintgnoMint менеджер X.509 CAgnoMint это программа для создания и управления Центром Сертификации и его сертификатамиgnoMint-cli текущие настройки: importdir importfile меткамогут отличатьсямогут быть одинаковыминовая база <имяфайла>открыть базу <имяфайла>страница 3revoke сохранить базу <имяфайла>setpolicy setpreference showcert showcsr showpolicy sign Launchpad Contributions: David Marín https://launchpad.net/~davefx aquanaut https://launchpad.net/~thecruxс сертификатом, относящимся к следующему CA: gnomint-1.6.4/po/fr.po0000644000000000000000000041220215212761320013320 0ustar00rootroot# French translations for gnomint package. # Copyright (C) 2007 THE gnomint'S COPYRIGHT HOLDER # This file is distributed under the same license as the gnomint package. # Ahmed , 2007. # msgid "" msgstr "" "Project-Id-Version: gnomint 0.4.0\n" "Report-Msgid-Bugs-To: davefx@gmail.com\n" "POT-Creation-Date: 2026-06-12 10:43+0000\n" "PO-Revision-Date: 2010-06-01 20:04+0000\n" "Last-Translator: David Marín \n" "Language-Team: French\n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-08-11 09:00+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: gconf/org.gnome.gnomint.gschema.xml:7 msgid "Window size" msgstr "Taille de fenêtre" #: gconf/org.gnome.gnomint.gschema.xml:8 #, fuzzy msgid "" "The (width,length) size gnoMint should take when started. This cannot be " "smaller than (320,200)." msgstr "" "La taille (largeur,hauteur) que gnoMint doit avoir au démarrage. Ne peut pas " "être inférieure à (320,200)." #: gconf/org.gnome.gnomint.gschema.xml:16 msgid "Revoked certificates visibility" msgstr "Affichage des certificats révoqués" #: gconf/org.gnome.gnomint.gschema.xml:17 msgid "Whether the revoked certificates should be visible." msgstr "Si les certificats révoqués doivent être affichés." #: gconf/org.gnome.gnomint.gschema.xml:24 #, fuzzy msgid "Expired certificates visibility" msgstr "Affichage des certificats révoqués" #: gconf/org.gnome.gnomint.gschema.xml:25 msgid "" "Whether already-expired certificates should be visible in the certificates " "tree. CAs are always visible regardless of this setting so that any still-" "valid certificates they signed remain reachable." msgstr "" #: gconf/org.gnome.gnomint.gschema.xml:35 msgid "Days before expiration to highlight certificates in amber" msgstr "" #: gconf/org.gnome.gnomint.gschema.xml:36 msgid "" "Certificates whose effective validity ends within this many days are shown " "in amber in the certificates tree, as a heads-up that they should be renewed " "soon. Setting this to 0 disables the amber highlight (certificates appear " "either normally or in gray for already-expired)." msgstr "" #: gconf/org.gnome.gnomint.gschema.xml:47 msgid "Certificate requests visibility" msgstr "Affichage des Requêtes de Signature de Certificat" #: gconf/org.gnome.gnomint.gschema.xml:48 msgid "Whether the certificate requests should be visible." msgstr "Si les Requêtes de Signature de Certificat doivent être affichées." #: gconf/org.gnome.gnomint.gschema.xml:55 msgid "Automatic exporting of certificates for gnome-keyring" msgstr "Exportation automatique des certificats à partir de gnome-keyring" #: gconf/org.gnome.gnomint.gschema.xml:56 #, fuzzy msgid "" "Whether the created or imported certificates are automatically exported to " "gnome-keyring certificate-store." msgstr "" "Si le certificats créés ou importés sont exportés automatiquement vers la " "base de données de certificats de gnome-keyring." #: gui/certificate_popup_menu.ui:7 gui/csr_popup_menu.ui:7 #: gui/main_window.ui:45 #, fuzzy msgid "Properties" msgstr "Proptiétés de l'Autorité de Certification" #: gui/certificate_popup_menu.ui:13 gui/main_window.ui:35 #, fuzzy msgid "Export full c_hain..." msgstr "Exporter un certificat" #: gui/certificate_popup_menu.ui:17 gui/csr_popup_menu.ui:13 #: gui/main_window.ui:34 msgid "E_xport" msgstr "E_xporter" #: gui/certificate_popup_menu.ui:21 gui/csr_popup_menu.ui:17 #: gui/main_window.ui:23 msgid "Extrac_t private key" msgstr "Ex_traire la clé privée" #: gui/certificate_popup_menu.ui:27 gui/main_window.ui:24 msgid "Re_new with fresh key" msgstr "" #: gui/certificate_popup_menu.ui:31 msgid "_Compare with PEM file…" msgstr "" #: gui/certificate_popup_menu.ui:35 gui/main_window.ui:25 msgid "Revo_ke" msgstr "Révo_quer" #: gui/certificate_popup_menu.ui:41 gui/main_window.ui:21 #, fuzzy msgid "Add _Web Server Certificate (wizard)" msgstr "Certificat" #: gui/certificate_popup_menu.ui:45 gui/main_window.ui:22 #, fuzzy msgid "Add _Email Server Certificate (wizard)" msgstr "Serveur Web TLS" #: gui/certificate_properties_dialog.ui:19 msgid "Certificate properties - gnoMint" msgstr "Propriétés du certificat - gnoMint" #: gui/certificate_properties_dialog.ui:54 #, fuzzy msgid "This certificate has been verified for the following uses:" msgstr "Ce certificat a été vérifié pour les utilisations suivantes :" #: gui/certificate_properties_dialog.ui:77 msgid "MD5FINGERPRINT" msgstr "MD5FINGERPRINT" #: gui/certificate_properties_dialog.ui:88 msgid "SHA1FINGERPRINT" msgstr "SHA1FINGERPRINT" #: gui/certificate_properties_dialog.ui:99 #: gui/certificate_properties_dialog.ui:132 #: gui/certificate_properties_dialog.ui:176 #: gui/certificate_properties_dialog.ui:231 gui/creation_process_window.ui:15 #: gui/creation_process_window.ui:61 gui/csr_properties_dialog.ui:109 #: gui/new_ca_window.ui:56 gui/new_ca_window.ui:306 gui/new_ca_window.ui:521 #: gui/new_req_window.ui:46 gui/new_req_window.ui:157 gui/new_req_window.ui:413 msgid " " msgstr " " #: gui/certificate_properties_dialog.ui:110 msgid "CertExpirationDate" msgstr "CertExpirationDate" #: gui/certificate_properties_dialog.ui:121 msgid "CertActivationDate" msgstr "CertActivationDate" #: gui/certificate_properties_dialog.ui:143 msgid "CAOU" msgstr "CAOU" #: gui/certificate_properties_dialog.ui:154 msgid "CAO" msgstr "CAO" #: gui/certificate_properties_dialog.ui:165 msgid "CACN" msgstr "CACN" #: gui/certificate_properties_dialog.ui:187 msgid "CertSN" msgstr "CertSN" #: gui/certificate_properties_dialog.ui:198 gui/csr_properties_dialog.ui:63 #, fuzzy msgid "SubjectOU" msgstr "SubjectOU" #: gui/certificate_properties_dialog.ui:209 gui/csr_properties_dialog.ui:87 #, fuzzy msgid "SubjectO" msgstr "SubjectO" #: gui/certificate_properties_dialog.ui:220 gui/csr_properties_dialog.ui:98 #, fuzzy msgid "SubjectCN" msgstr "SubjectCN" #: gui/certificate_properties_dialog.ui:242 msgid "MD5 fingerprint" msgstr "Empreinte numérique MD5" #: gui/certificate_properties_dialog.ui:253 #, fuzzy msgid "SHA1 fingerprint" msgstr "Empreinte numérique SHA1" #: gui/certificate_properties_dialog.ui:264 #, fuzzy msgid "Fingerprints" msgstr "Certificats" #: gui/certificate_properties_dialog.ui:276 msgid "Expires on" msgstr "Expire le" #: gui/certificate_properties_dialog.ui:287 msgid "Activated on" msgstr "Émis le" #: gui/certificate_properties_dialog.ui:298 msgid "Validity" msgstr "Validité" #: gui/certificate_properties_dialog.ui:310 #: gui/certificate_properties_dialog.ui:389 gui/csr_properties_dialog.ui:120 msgid "Organizational Unit (OU)" msgstr "Unité d'organisation (OU)" #: gui/certificate_properties_dialog.ui:321 #: gui/certificate_properties_dialog.ui:400 gui/csr_properties_dialog.ui:142 msgid "Organization (O)" msgstr "Organisation (O)" #: gui/certificate_properties_dialog.ui:332 #: gui/certificate_properties_dialog.ui:411 gui/csr_properties_dialog.ui:153 msgid "Common Name (CN)" msgstr "Nom commun (CN)" #: gui/certificate_properties_dialog.ui:343 msgid "Emmited by" msgstr "Émis par" #: gui/certificate_properties_dialog.ui:355 #, fuzzy msgid "Subject Alternative Names" msgstr "Nom alternatif du titulaire" #: gui/certificate_properties_dialog.ui:378 msgid "Serial number" msgstr "Numéro de série" #: gui/certificate_properties_dialog.ui:422 #, fuzzy msgid "Certificate subject" msgstr "Certificats" #: gui/certificate_properties_dialog.ui:434 #, fuzzy msgid "SHA256FINGERPRINT" msgstr "SHA1FINGERPRINT" #: gui/certificate_properties_dialog.ui:449 #, fuzzy msgid "SHA256 fingerprint" msgstr "Empreinte numérique SHA1" #: gui/certificate_properties_dialog.ui:460 #, fuzzy msgid "SHA512FINGERPRINT" msgstr "SHA1FINGERPRINT" #: gui/certificate_properties_dialog.ui:475 #, fuzzy msgid "SHA512 fingerprint" msgstr "Empreinte numérique SHA1" #: gui/certificate_properties_dialog.ui:486 #: gui/certificate_properties_dialog.ui:509 gui/csr_properties_dialog.ui:176 #, fuzzy msgid "Email address" msgstr "Adresse IP" #: gui/certificate_properties_dialog.ui:536 gui/csr_properties_dialog.ui:203 msgid "General" msgstr "Général" #: gui/certificate_properties_dialog.ui:557 #, fuzzy msgid "Certificate hierarchy" msgstr "Certificats" #: gui/certificate_properties_dialog.ui:582 #, fuzzy msgid "Certificate fields" msgstr "Certificats" #: gui/certificate_properties_dialog.ui:605 msgid "Details" msgstr "Détails" #: gui/certificate_properties_dialog.ui:623 #, fuzzy msgid "" "\n" "It is recommended that all the certificates generated by a CA\n" "share the same properties.\n" "If you want to generate certificates with different properties, you\n" "should create a hierarchy of CAs, each one with its own policy for\n" "certificate generation.\n" "\n" "Please, define the maximum set of properties for the\n" "certificates that this CA will be able to generate:\n" msgstr "" "\n" "Il est recommandé que tous les certificats générés par une Autorité de " "Certification partagent les mêmes propriétés.\n" "Si vous souhaitez générer des certificats avec des propriétés différentes, " "vous devriez créer une hiérarchie d'Autorités de Certifications, chacune " "avec sa propre stratégie de génération de certificats.\n" "\n" "Veuillez définir l'ensemble de propriétés maximum pour les certificats que " "cette Autorité de Certification pourra générer :\n" #: gui/certificate_properties_dialog.ui:649 #, fuzzy msgid "" "Maximum number of months before\n" "expiration of the new generated certificates:" msgstr "" "Nombre maximum de mois avant l'expiration des nouveaux certificat générés :" #: gui/certificate_properties_dialog.ui:686 msgid "Hours between CRL updates:" msgstr "" "Nombre d'heures entre les mises à jour de la Liste de Révocation de " "Certificats :" #: gui/certificate_properties_dialog.ui:711 #, fuzzy msgid "CRL distribution URL:" msgstr "Points de distribution de Liste de Révocation de Certificats" #: gui/certificate_properties_dialog.ui:727 #, fuzzy msgid "CRL Properties" msgstr "Certificats" #: gui/certificate_properties_dialog.ui:750 msgid "Country" msgstr "Pays" #: gui/certificate_properties_dialog.ui:761 msgid "State or Province name" msgstr "État ou province" #: gui/certificate_properties_dialog.ui:778 #: gui/certificate_properties_dialog.ui:802 #: gui/certificate_properties_dialog.ui:859 #: gui/certificate_properties_dialog.ui:883 #: gui/certificate_properties_dialog.ui:907 msgid "must be the same" msgstr "doit être identique" #: gui/certificate_properties_dialog.ui:786 #: gui/certificate_properties_dialog.ui:810 #: gui/certificate_properties_dialog.ui:867 #: gui/certificate_properties_dialog.ui:891 #: gui/certificate_properties_dialog.ui:915 msgid "may differ" msgstr "peut varier" #: gui/certificate_properties_dialog.ui:820 msgid "City" msgstr "Ville" #: gui/certificate_properties_dialog.ui:831 msgid "Organization" msgstr "Organisation" #: gui/certificate_properties_dialog.ui:842 msgid "Organizational unit" msgstr "Unité d'organisation" #: gui/certificate_properties_dialog.ui:927 #, fuzzy msgid "Inherited fields from CA subject" msgstr "Champs hérités du titulaire de l'Autorité de Certification" #: gui/certificate_properties_dialog.ui:952 gui/new_cert_window.ui:464 #: src/tls.c:1463 msgid "Certification Authority" msgstr "Autorité de Certification" #: gui/certificate_properties_dialog.ui:963 gui/new_cert_window.ui:487 #: src/certificate_properties.c:445 src/tls.c:1470 msgid "Non repudiation" msgstr "Non-répudiation" #: gui/certificate_properties_dialog.ui:974 gui/new_cert_window.ui:440 #: src/certificate_properties.c:447 src/tls.c:1472 msgid "Key encipherment" msgstr "Chiffrement de clé" #: gui/certificate_properties_dialog.ui:986 gui/new_cert_window.ui:428 #: src/certificate_properties.c:449 src/tls.c:1474 msgid "Data encipherment" msgstr "Chiffrement de données" #: gui/certificate_properties_dialog.ui:998 gui/new_cert_window.ui:475 #: src/certificate_properties.c:451 src/tls.c:1476 msgid "Key agreement" msgstr "Agrément de clé" #: gui/certificate_properties_dialog.ui:1010 gui/new_cert_window.ui:452 #: src/certificate_properties.c:443 src/tls.c:1468 msgid "Digital signature" msgstr "Signature numérique" #: gui/certificate_properties_dialog.ui:1022 gui/new_cert_window.ui:498 #: src/certificate_properties.c:455 src/tls.c:1480 msgid "CRL signing" msgstr "Signature de Liste de Révocation de Certificats" #: gui/certificate_properties_dialog.ui:1043 #, fuzzy msgid "Uses of new generated certificates" msgstr "Utilisations des nouveaux certificats générés" #: gui/certificate_properties_dialog.ui:1067 gui/new_cert_window.ui:621 #: src/certificate_properties.c:1480 src/tls.c:1500 msgid "Email protection" msgstr "Protection de courriel" #: gui/certificate_properties_dialog.ui:1079 gui/new_cert_window.ui:610 #: src/certificate_properties.c:1479 src/tls.c:1498 msgid "Code signing" msgstr "Signature de code" #: gui/certificate_properties_dialog.ui:1090 gui/new_cert_window.ui:598 msgid "TLS Web client" msgstr "Client Web TLS" #: gui/certificate_properties_dialog.ui:1102 gui/new_cert_window.ui:586 #, fuzzy msgid "TLS Web server" msgstr "Serveur WWW TLS" #: gui/certificate_properties_dialog.ui:1114 gui/new_cert_window.ui:575 #: src/certificate_properties.c:1481 src/tls.c:1502 msgid "Time stamping" msgstr "Horodotage" #: gui/certificate_properties_dialog.ui:1125 gui/new_cert_window.ui:564 #: src/certificate_properties.c:1483 src/tls.c:1506 msgid "Any purpose" msgstr "Toute application" #: gui/certificate_properties_dialog.ui:1136 gui/new_cert_window.ui:553 #: src/certificate_properties.c:1482 src/tls.c:1504 msgid "OCSP signing" msgstr "Signature OCSP" #: gui/certificate_properties_dialog.ui:1159 #, fuzzy msgid "Purposes of new generated certificates" msgstr "Applications des nouveaux certificats générés" #: gui/certificate_properties_dialog.ui:1171 msgid "CA Policy" msgstr "Stratégie de l'Autorité de Certification" #: gui/certificate_properties_dialog.ui:1189 gui/csr_properties_dialog.ui:221 #: src/ca.c:2199 msgid "_Close" msgstr "" #: gui/change_password_dialog.ui:9 msgid "Database password protection - gnoMint" msgstr "Protection de la base de données par mot de passe - gnoMint" #: gui/change_password_dialog.ui:34 msgid "_Yes" msgstr "" #: gui/change_password_dialog.ui:43 msgid "_No" msgstr "_Non" #: gui/change_password_dialog.ui:53 msgid "" "Enter new password again \n" "for confirmation:" msgstr "" "Entrez encore une fois le nouveau \n" "mot de passe (pour confirmation) :" #: gui/change_password_dialog.ui:86 msgid "" "Please, enter new \n" "password:" msgstr "" "Veuillez entrer le nouveau \n" "mot de passe :" #: gui/change_password_dialog.ui:98 msgid "" "Please, enter current\n" "password:" msgstr "" "Veuillez entrer le \n" "mot de passe actuel :" #: gui/change_password_dialog.ui:121 #, fuzzy msgid "" "Protect CA database private\n" "keys with password:" msgstr "" "Protéger les clés privées de la base\n" "de données de l'Autorité de Certification\n" "par un mot de passe :" #: gui/change_password_dialog.ui:143 gui/export_certificate_dialog.ui:149 #: gui/get_db_password_dialog.ui:74 gui/get_pkey_dialog.ui:78 #: gui/import_file_or_directory_dialog.ui:94 gui/import_password_dialog.ui:90 #: gui/new_crl_dialog.ui:53 gui/san_editor_dialog.ui:93 #, fuzzy msgid "Cancel" msgstr "gtk-cancel" #: gui/change_password_dialog.ui:149 gui/get_db_password_dialog.ui:80 #: gui/get_pkey_dialog.ui:84 gui/import_password_dialog.ui:96 #: gui/new_crl_dialog.ui:59 gui/san_editor_dialog.ui:99 msgid "OK" msgstr "" #: gui/creation_process_window.ui:6 msgid "Creating new CA - gnoMint" msgstr "Création du nouveau CA - gnoMint" #: gui/creation_process_window.ui:31 #, fuzzy msgid "Creating CA Root Certificate" msgstr "Certificat Racine de l'Autorité de Certification" #: gui/creation_process_window.ui:51 gui/get_password_dialog.ui:90 #: gui/new_ca_window.ui:257 gui/new_ca_window.ui:464 gui/new_ca_window.ui:576 #: gui/new_cert_window.ui:257 gui/new_cert_window.ui:339 #: gui/new_cert_window.ui:661 gui/new_req_window.ui:107 #: gui/new_req_window.ui:357 gui/new_req_window.ui:548 gui/wizard_window.ui:117 msgid "_Cancel" msgstr "" #: gui/csr_popup_menu.ui:23 gui/main_window.ui:26 msgid "_Sign" msgstr "_Signer" #: gui/csr_popup_menu.ui:27 gui/main_window.ui:27 msgid "Delete" msgstr "" #: gui/csr_properties_dialog.ui:5 msgid "CSR properties - gnoMint" msgstr "Propriétés de la CSR - gnoMint" #: gui/csr_properties_dialog.ui:41 #, fuzzy msgid "" "This Certificate Signing Request has its corresponding private key saved " "in the internal database." msgstr "" "La clé privée associée à cette Requête de Signature de Certificat est " "sauvegardée dans la base de données interne." #: gui/csr_properties_dialog.ui:74 gui/new_cert_window.ui:230 #: src/csr_properties.c:86 src/new_cert.c:105 msgid "None" msgstr "" #: gui/csr_properties_dialog.ui:131 #, fuzzy msgid "Subject Alternative Name (SAN)" msgstr "Nom alternatif du titulaire" #: gui/csr_properties_dialog.ui:164 msgid "CSR subject" msgstr "Titulaire de la Requête de Signature de Certificat" #: gui/dh_parameters_dialog.ui:16 msgid "New Diffie-Hellman parameters - gnoMint" msgstr "Nouveau paramètres Diffie-Hellman - gnoMint" #: gui/dh_parameters_dialog.ui:27 #, fuzzy msgid "" "You are about to create and export a set of\n" "Diffie·Hellman parameters into a PKCS#3 structure file." msgstr "" "Vous êtes sur le point de créer et d'exporter un jeu de paramètres " "Diffie·Hellman vers un fichier au format PKCS#3." #: gui/dh_parameters_dialog.ui:38 #, fuzzy msgid "" "PKCS#3 files containing Diffie·Hellman parameters are used by some " "cryptographic\n" "applications for a secure interchange of their keys over insecure channels." msgstr "" "Les fichiers au format PKCS#3 contenant des paramètres " "Diffie·Hellman sont utilisés par \n" "des applications de cryptographie pour sécuriser les échanges de clés via " "des canaux non sécurisés." #: gui/dh_parameters_dialog.ui:48 msgid "Please, enter the prime size, in bits:" msgstr "Veuillez entrer la taille en bits du nombre premier :" #: gui/dh_parameters_dialog.ui:71 msgid "Close" msgstr "" #: gui/dh_parameters_dialog.ui:77 #, fuzzy msgid "Generate" msgstr "Général" #: gui/export_certificate_dialog.ui:5 msgid "Export certificate - gnoMint" msgstr "Exporter le certificat - gnoMint" #: gui/export_certificate_dialog.ui:22 #, fuzzy msgid "" "Please, choose which part of the\n" "saved certificate you want to export:" msgstr "" "Veuillez choisir la partie du certificat sauvegardé vous souhaitez exporter :" #: gui/export_certificate_dialog.ui:36 msgid "Only the pu_blic part." msgstr "Seulement la partie pu_blique." #: gui/export_certificate_dialog.ui:49 #, fuzzy msgid "Export only the certificate to a public file, in PEM format." msgstr "" "Exporter seulement le certificat vers un fichier public au format PEM." #: gui/export_certificate_dialog.ui:60 msgid "Only the private key (crypted)." msgstr "Seulement la clé privée (chiffrée)." #: gui/export_certificate_dialog.ui:74 #, fuzzy msgid "" "Export the saved private key to a PKCS#8 password-\n" "protected file. This file should only be accessed by the\n" "subject of the certificate." msgstr "" "Exporter la clé privée au format PKCS#8 vers un fichier protégé par mot " "de passe. Ce fichier ne doit être accessible que par le titulaire du " "certificat." #: gui/export_certificate_dialog.ui:87 msgid "Only the private key (uncrypted)." msgstr "Seulement la clé privée (non-chiffrée)." #: gui/export_certificate_dialog.ui:100 #, fuzzy msgid "" "Export the saved private key to a PEM file. This option\n" "should only be used for exporting certificates that will be\n" "used in unattended servers." msgstr "" "Exporter la clé privée vers un fichier au format PEM. Cette option ne " "doit pas être utilisée que pour exporter les certificats utilisés par des " "serveurs autonomes." #: gui/export_certificate_dialog.ui:113 msgid "Both parts." msgstr "Les deux parties." #: gui/export_certificate_dialog.ui:126 #, fuzzy msgid "" "Export both (private and public) parts to a password-\n" "protected PKCS#12 file. This kind of file can be imported\n" "by other common programs, such as web or mail clients." msgstr "" "Exporter et la partie privée et la partie publique vers un fichier " "protégé par mot de passe au format PKCS#12. Ce type de fichier peut être " "importé par d'autres programmes courants, comme les lecteurs de courrier et " "les navigateurs web." #: gui/export_certificate_dialog.ui:155 #, fuzzy msgid "Export" msgstr "E_xporter" #: gui/get_db_password_dialog.ui:5 gui/get_password_dialog.ui:5 #: gui/import_password_dialog.ui:5 msgid "Enter password - gnoMint" msgstr "Entrez le mot de passe - gnoMint" #: gui/get_db_password_dialog.ui:20 msgid "" "This action requires using one or more private keys saved in the CA " "database.\n" "\n" "Please insert the database password." msgstr "" #: gui/get_db_password_dialog.ui:41 gui/get_password_dialog.ui:68 #: gui/import_password_dialog.ui:65 msgid "Password:" msgstr "Mot de passe :" #: gui/get_db_password_dialog.ui:58 msgid "Remember this password during this gnoMint session" msgstr "Se souvenir du mot de passe pendant la session gnoMint" #: gui/get_password_dialog.ui:19 #, fuzzy msgid "Please, enter password" msgstr "Veuillez entrer le mot de passe :" #: gui/get_password_dialog.ui:56 msgid "Password (confirm):" msgstr "Mot de passe (pour confirmation) :" #: gui/get_password_dialog.ui:97 gui/new_ca_window.ui:592 #: gui/new_cert_window.ui:676 gui/new_req_window.ui:564 #: gui/preferences_dialog.ui:51 msgid "_OK" msgstr "" #: gui/get_pkey_dialog.ui:9 msgid "Choose private key file. gnoMint" msgstr "Choisir un fichier de clé privée - gnoMint" #: gui/get_pkey_dialog.ui:22 #, fuzzy msgid "" "Choose private key file\n" "\n" "For doing the selected operation, you must provide the\n" "file where resides the private key corresponding to the\n" "certificate:" msgstr "" "Sélectionnez le fichier de la clé privée\n" "\n" "Pour effectuer l'opération sélectionnée, vous devez fournir le fichier qui " "contient la clé privée correspondant au certificat :" #: gui/get_pkey_dialog.ui:37 msgid "Certificate DN" msgstr "DN du certificat" #: gui/get_pkey_dialog.ui:43 msgid "Please, choose the file:" msgstr "Veuillez choisir le fichier :" #: gui/get_pkey_dialog.ui:62 msgid "_Save filename in the database for automatic loading" msgstr "_Sauvegarder la clé privée dans la base de données" #: gui/org.gnome.gnomint.appdata.xml.in:7 gui/main_window.ui:62 msgid "gnoMint" msgstr "gnoMint" #: gui/org.gnome.gnomint.appdata.xml.in:8 #, fuzzy msgid "X.509 Certification Authority management tool" msgstr "* Utilisable pour une Autorité de Certification.\n" #: gui/org.gnome.gnomint.appdata.xml.in:11 msgid "" "gnoMint is a tool for easily creating and managing certification authorities " "(CAs). It provides fancy visualization of all your certificates, and their " "properties, as well as an easy management of the CA activities." msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:16 msgid "With gnoMint you can:" msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:20 #, fuzzy msgid "Create and manage your own Certification Authority (CA)" msgstr "Création de Requête de Signature de Certificat" #: gui/org.gnome.gnomint.appdata.xml.in:21 #, fuzzy msgid "Create and sign certificates for servers and users" msgstr "Création du certificat racine de l'Autorité de Certification" #: gui/org.gnome.gnomint.appdata.xml.in:22 #, fuzzy msgid "Create and manage Certificate Signing Requests (CSRs)" msgstr "Création de Requête de Signature de Certificat" #: gui/org.gnome.gnomint.appdata.xml.in:23 msgid "" "Export certificates and private keys in several formats (PEM, DER, PKCS#12)" msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:24 #, fuzzy msgid "Revoke certificates and generate Certificate Revocation Lists (CRLs)" msgstr "Génère la Liste de Révocation de Certificats actuels" #: gui/org.gnome.gnomint.appdata.xml.in:25 #, fuzzy msgid "Import existing certificates and CAs" msgstr "Erreur pendant l'enregistrement de la version du certificat" #: gui/org.gnome.gnomint.appdata.xml.in:27 msgid "" "gnoMint provides a simple and intuitive graphical interface based on GTK for " "all these operations, making certificate management accessible even for " "users without deep knowledge of X.509 standards and cryptography." msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:38 #, fuzzy msgid "Main window showing certificate list" msgstr "Erreur pendant la signature du certificat" #: gui/org.gnome.gnomint.desktop.in:2 gui/org.gnome.gnomint.desktop.in:3 msgid "gnoMint X.509 CA Manager" msgstr "Gestionnaire d'Autorité de Certification X.509 gnoMint" #: gui/org.gnome.gnomint.desktop.in:4 msgid "Manage X.509 certificates and CAs, easily and graphically" msgstr "Gérer des certificats et des CA X.509, facilement et graphiquement" #: gui/org.gnome.gnomint.desktop.in:5 msgid "certificate;x.509;encryption;" msgstr "" #: gui/import_file_or_directory_dialog.ui:9 msgid "Import selection - gnoMint" msgstr "Importer la sélection - gnoMint" #: gui/import_file_or_directory_dialog.ui:24 #, fuzzy msgid "" "Please, choose the more suitable option for\n" "what you want to import:" msgstr "" "Veuillez sélectionner l'option la mieux adaptée à ce que vous souhaitez " "exporter :" #: gui/import_file_or_directory_dialog.ui:36 msgid "Import a single file." msgstr "Importer un seul fichier." #: gui/import_file_or_directory_dialog.ui:48 #, fuzzy msgid "" "Import a single file, encoded in DER or PEM format, containing\n" "certificates, private keys (encrypted or plain), signing\n" "requests (CSRs), revocation lists (CRLs) or PKCS#12\n" "packages." msgstr "" "Importer un seul fichier, encodé au format DER ou PEM, contenant des " "certificats, des clés privées (chiffrées ou en clair), des Requêtes de " "Signature de Certificats, des Listes de Révocation de Certificats ou des " "paquets au format PKCS#12." #: gui/import_file_or_directory_dialog.ui:60 msgid "Import a whole directory." msgstr "Importer l'intégralité d'un répertoire." #: gui/import_file_or_directory_dialog.ui:72 #, fuzzy msgid "" "Import a directory containing the structure of\n" "a whole CA made with OpenSSL ." msgstr "" "Importer un répertoire contenant la structure de l'intégralité\n" "d'une Autorité de Certification faite avec OpenSSL." #: gui/import_file_or_directory_dialog.ui:100 #, fuzzy msgid "Import" msgstr "_Importer" #: gui/import_password_dialog.ui:20 #, fuzzy msgid "" "The whole selected file, or some of its elements, seems to\n" "be cyphered using a password or passphrase.\n" "\n" "For importing the file into gnoMint database, you must\n" "provide an appropiate password." msgstr "" "Le fichier sélectionné, ou certains de ses éléments, semble être crypté à " "l'aide d'un mot de passe.\n" "\n" "Pour importer le fichier dans gnoMint database, vous devez fournir un mot de " "passe approprié." #: gui/import_password_dialog.ui:37 #, fuzzy msgid "" "The part that is being imported has the description:" msgstr "La partie qui est importée a la description :" #: gui/import_password_dialog.ui:48 msgid "#Description#" msgstr "#Description#" #: gui/main_window.ui:6 msgid "_Certificates" msgstr "_Certificats" #: gui/main_window.ui:8 msgid "_New certificate database" msgstr "_Nouvelle base de données de certificats" #: gui/main_window.ui:9 msgid "_Open certificate database" msgstr "_Ouvrir une base de données de certificats" #: gui/main_window.ui:10 msgid "Open _recents" msgstr "Ouvrir les certificats utilisés _récemment" #: gui/main_window.ui:11 msgid "_Save certificate database as..." msgstr "_Sauvegarder la base de données de certificats sous..." #: gui/main_window.ui:15 #, fuzzy msgid "Add" msgstr "Ajouter une CSR" #: gui/main_window.ui:17 msgid "_Add self-signed CA" msgstr "_Ajouter une Autorité de Certification auto-signée" #: gui/main_window.ui:18 msgid "Add _Certificate Request" msgstr "Ajouter une Requête de Signature de _Certificat" #: gui/main_window.ui:29 msgid "Generate _CRL" msgstr "Générer une Liste de Révocation de _Certificats" #: gui/main_window.ui:30 msgid "Generate D_H parameters..." msgstr "Générer les paramètres DH..." #: gui/main_window.ui:31 msgid "Change database pass_word" msgstr "Modifier le mot de passe de la base de données" #: gui/main_window.ui:33 msgid "_Import" msgstr "_Importer" #: gui/main_window.ui:38 msgid "Revoke _all selected..." msgstr "" #: gui/main_window.ui:39 msgid "Delete all selected _CSRs..." msgstr "" #: gui/main_window.ui:41 msgid "_Quit" msgstr "" #: gui/main_window.ui:44 gui/san_manager_widget.ui:34 msgid "_Edit" msgstr "_Éditer" #: gui/main_window.ui:46 msgid "Preferences" msgstr "" #: gui/main_window.ui:49 msgid "_View" msgstr "_Vue" #: gui/main_window.ui:51 msgid "Certificate _Signing Requests" msgstr "Requêtes de _Signature de Certificat" #: gui/main_window.ui:52 msgid "_Revoked Certificates" msgstr "Certificats _révoqués" #: gui/main_window.ui:53 #, fuzzy msgid "E_xpired Certificates" msgstr "Exporter un certificat" #: gui/main_window.ui:57 gui/new_ca_window.ui:249 gui/new_ca_window.ui:456 #: gui/new_ca_window.ui:568 gui/new_cert_window.ui:249 #: gui/new_cert_window.ui:331 gui/new_cert_window.ui:653 #: gui/new_req_window.ui:99 gui/new_req_window.ui:349 gui/new_req_window.ui:540 msgid "_Help" msgstr "_Aide" #: gui/main_window.ui:58 msgid "About" msgstr "" #: gui/main_window.ui:80 msgid "Create a new database" msgstr "Création d'une nouvelle base de données" #: gui/main_window.ui:87 msgid "Open an existing database" msgstr "Ouvrir une base de données existante" #: gui/main_window.ui:99 msgid "Add an autosigned CA" msgstr "Ajouter une Autorité de Certification auto-signée" #: gui/main_window.ui:100 msgid "Add autosigned CA certificate" msgstr "Ajouter un certificat d'Autorité de Certification auto-signée" #: gui/main_window.ui:111 msgid "Add a new Certificate Signing Request" msgstr "Ajouter une nouvelle Requête de Signature de Certificat" #: gui/main_window.ui:112 msgid "Add CSR" msgstr "Ajouter une CSR" #: gui/main_window.ui:129 msgid "Extract the private key of the selected item into a external file" msgstr "" "Extraire la clé privée de l'élément sélectionné dans un fichier externe" #: gui/main_window.ui:130 msgid "Extract Private Key" msgstr "Extraire la clé privée" #: gui/main_window.ui:142 #, fuzzy msgid "Revoke the selected certificate" msgstr "Révoquer le certificat sélectionné" #: gui/main_window.ui:143 msgid "Revoke" msgstr "Révoquer" #: gui/main_window.ui:151 msgid "Sign the selected Certificate Signing Request" msgstr "Signer la CSR sélectionnée" #: gui/main_window.ui:152 msgid "Sign" msgstr "Signer" #: gui/main_window.ui:164 msgid "Delete the selected Certificate Signing Request" msgstr "Supprimer le CSR sélectionné" #: gui/main_window.ui:176 #, fuzzy msgid "Quick certificate generation for web server" msgstr "La génération du certificat a échoué" #: gui/main_window.ui:177 #, fuzzy msgid "Web Server Wizard" msgstr "Serveur Web TLS" #: gui/main_window.ui:188 #, fuzzy msgid "Quick certificate generation for email server" msgstr "La génération du certificat a échoué" #: gui/main_window.ui:189 #, fuzzy msgid "Email Server Wizard" msgstr "Serveur Web TLS" #: gui/main_window.ui:225 msgid "_Show them" msgstr "" #: gui/main_window.ui:243 msgid "Filter certificates by subject or serial..." msgstr "" #: gui/new_ca_window.ui:20 msgid "New CA - gnoMint" msgstr "Nouvelle Requête de Signature de Certificat - gnoMint" #: gui/new_ca_window.ui:46 #, fuzzy msgid "CA Subject Properties\n" msgstr "Propriétés du nouveau certificat\n" #: gui/new_ca_window.ui:72 gui/new_cert_window.ui:130 gui/new_req_window.ui:303 msgid "Organization:" msgstr "Organisation :" #: gui/new_ca_window.ui:83 gui/new_cert_window.ui:141 gui/new_req_window.ui:292 msgid "Organization Unit:" msgstr "Unité d'organisation :" #: gui/new_ca_window.ui:94 gui/new_cert_window.ui:152 gui/new_req_window.ui:281 msgid "Country:" msgstr "Pays :" #: gui/new_ca_window.ui:106 gui/new_cert_window.ui:163 #: gui/new_req_window.ui:270 #, fuzzy msgid "State or Province name: " msgstr "État ou province : " #: gui/new_ca_window.ui:117 gui/new_cert_window.ui:174 #: gui/new_req_window.ui:259 #, fuzzy msgid "City: " msgstr "Ville : " #: gui/new_ca_window.ui:164 msgid "" "CA Root Certificate \n" "Common Name (CN):" msgstr "" "Nom commun (CN) du certificat racine \n" "de l'Autorité de Certification :" #: gui/new_ca_window.ui:185 gui/new_cert_window.ui:219 #: gui/new_req_window.ui:203 #, fuzzy msgid "Email address:" msgstr "Adresse IP" #: gui/new_ca_window.ui:227 gui/new_req_window.ui:326 #, fuzzy msgid "Subject Alternative Names (SAN)" msgstr "Nom alternatif du titulaire" #: gui/new_ca_window.ui:265 gui/new_ca_window.ui:480 gui/new_req_window.ui:115 #: gui/new_req_window.ui:373 msgid "_Next" msgstr "" #: gui/new_ca_window.ui:277 gui/new_cert_window.ui:276 #: gui/new_req_window.ui:127 msgid "CA properties" msgstr "Proptiétés de l'Autorité de Certification" #: gui/new_ca_window.ui:296 #, fuzzy msgid "CA Root certificate properties\n" msgstr "Propriétés du nouveau certificat\n" #: gui/new_ca_window.ui:337 msgid "Months before root certificate expiration:" msgstr "Nombre de mois avant l'expiration du certificat racine :" #: gui/new_ca_window.ui:370 gui/new_req_window.ui:453 msgid "P-256 (256 bits)" msgstr "" #: gui/new_ca_window.ui:371 gui/new_req_window.ui:454 msgid "P-384 (384 bits)" msgstr "" #: gui/new_ca_window.ui:372 gui/new_req_window.ui:455 msgid "P-521 (521 bits)" msgstr "" #: gui/new_ca_window.ui:391 gui/new_req_window.ui:474 #, fuzzy msgid "RSA" msgstr "RSA" #: gui/new_ca_window.ui:400 gui/new_req_window.ui:484 msgid "DSA" msgstr "DSA" #: gui/new_ca_window.ui:409 gui/new_req_window.ui:493 msgid "ECDSA" msgstr "" #: gui/new_ca_window.ui:418 gui/new_req_window.ui:502 msgid "Ed25519" msgstr "" #: gui/new_ca_window.ui:428 gui/new_req_window.ui:512 src/new_ca_window.c:170 #: src/new_ca_window.c:180 src/new_req_window.c:201 src/new_req_window.c:211 msgid "Private key bit length:" msgstr "Taille en bits de la clé privée :" #: gui/new_ca_window.ui:439 gui/new_req_window.ui:523 msgid "Private key type:" msgstr "Type de clé privée :" #: gui/new_ca_window.ui:472 gui/new_ca_window.ui:584 gui/new_req_window.ui:365 #: gui/new_req_window.ui:556 msgid "_Previous" msgstr "" #: gui/new_ca_window.ui:492 gui/new_req_window.ui:385 msgid "Root certificate prop" msgstr "Propriétés du certificat racine" #: gui/new_ca_window.ui:511 #, fuzzy msgid "CA properties\n" msgstr "Propriétés du nouveau certificat\n" #: gui/new_ca_window.ui:535 #, fuzzy msgid "CRL Distribution Point:" msgstr "Points de distribution de Liste de Révocation de Certificats" #: gui/new_ca_window.ui:542 msgid "" "Please, in this field enter an URL where the CRL for this CA will be " "available. \n" "You can leave it blank. In this case, no CRL Distribution Point will be set " "in the CA \n" "Certificate, and you will be able to set it as a new CA property. \n" "This value will be copied into the certificates generated by this CA.\n" "" msgstr "" #: gui/new_ca_window.ui:604 msgid "Password protect" msgstr "Protection par mot de passe" #: gui/new_cert_window.ui:13 msgid "New Certificate - gnoMint" msgstr "Nouveau certificat - gnoMint" #: gui/new_cert_window.ui:36 gui/new_cert_window.ui:293 #: gui/new_cert_window.ui:382 #, fuzzy msgid "New Certificate Properties\n" msgstr "Propriétés du nouveau certificat\n" #: gui/new_cert_window.ui:45 #, fuzzy msgid "" "You are about to sign a Certificate Signing Request,\n" "and this way, creating a new certificate. Please\n" "check the certificate properties." msgstr "" "Vous êtes sur le point de signer une Requête de Signature de Certificat, et " "ainsi, de créer un nouveau certificat. Veuillez vérifier les propriétés du " "certificat." #: gui/new_cert_window.ui:64 gui/new_cert_window.ui:75 #: gui/new_cert_window.ui:86 gui/new_cert_window.ui:97 #: gui/new_cert_window.ui:108 gui/new_cert_window.ui:119 msgid "label" msgstr "étiquette" #: gui/new_cert_window.ui:185 msgid "" "New certificate \n" "Common Name (CN):" msgstr "" "Nom commun \n" "du nouveau certificat (CN) :" #: gui/new_cert_window.ui:197 #, fuzzy msgid "Subject Alternative Names:" msgstr "Nom alternatif du titulaire" #: gui/new_cert_window.ui:302 #, fuzzy msgid "" "You are about to sign a Certificate Signing Request.\n" "Please, choose the Certification Authority you are\n" "going to use for signing it." msgstr "" "Vous êtes sur le point de signer une Requête de Signature de Certificat. " "Veuillez choisir l'Autorité de Certification que vous allez utiliser pour la " "signer." #: gui/new_cert_window.ui:366 msgid "Choose CA for signing the CSR" msgstr "Sélectionner la CA pour la signature de la CSR" #: gui/new_cert_window.ui:397 msgid "Months before certificate expiration:" msgstr "Nombre de mois avant l'expiration du certificat :" #: gui/new_cert_window.ui:519 #, fuzzy msgid "Certificate uses" msgstr "Certificats" #: gui/new_cert_window.ui:635 #, fuzzy msgid "Certificate purposes" msgstr "Certificats" #: gui/new_cert_window.ui:688 msgid "Certificate properties" msgstr "Propriétés du certificat" #: gui/new_crl_dialog.ui:5 msgid "New CRL - gnoMint" msgstr "Nouvelle Liste de Révocation de Certificats - gnoMint" #: gui/new_crl_dialog.ui:17 #, fuzzy msgid "New Certificate Revocation List" msgstr "Propriétés du nouveau certificat\n" #: gui/new_crl_dialog.ui:26 msgid "" "Please, select the CA for which a Certificate \n" "Revocation List is going to be created:" msgstr "" "Veuillez sélectionner l'Autorité de Certification pour laquelle \n" "une Liste de Révocation de Certificats va être crée :" #: gui/new_req_window.ui:12 msgid "New certificate request - gnoMint" msgstr "Nouvelle demande de certificat - gnoMint" #: gui/new_req_window.ui:36 gui/new_req_window.ui:147 gui/new_req_window.ui:403 #, fuzzy msgid "Certificate Request Properties\n" msgstr "Propriétés du nouveau certificat\n" #: gui/new_req_window.ui:55 msgid "" "The subject of the new certificate request can inherit information\n" "from one of the existing Certification Authorities. This is a must if the\n" "policy of the CA you are going to use is defined to force some fields\n" "of a certificate subject to be the same as the ones in the CA cert\n" "subject." msgstr "" #: gui/new_req_window.ui:67 msgid "Don't inherit any fields from existing Certification Authorities" msgstr "" "N'hériter d'aucun champ provenant d'Autorités de Certification existantes" #: gui/new_req_window.ui:74 msgid "" "Inherit fields according to selected Certification Authority and its policy." msgstr "" "Hériter des champs en fonction de l'Autorité de Certification sélectionnée " "et de sa stratégie" #: gui/new_req_window.ui:191 #, fuzzy msgid "" "Certificate\n" " Common Name (CN):" msgstr "" "Nom commun \n" "du certificat (CN) :" #: gui/new_req_window.ui:576 msgid "page 3" msgstr "page 3" #: gui/preferences_dialog.ui:9 msgid "General Preferences - gnoMint" msgstr "Préférences générales - gnoMint" #: gui/preferences_dialog.ui:26 #, fuzzy msgid "" "Automatically export created certificates to\n" "Gnome-keyring certificate store" msgstr "" "Exporter automatiquement les certificats créés\n" "vers la base de données de gnome-keyring" #: gui/preferences_dialog.ui:36 msgid "Export options" msgstr "Options d'exportation" #: gui/san_editor_dialog.ui:5 src/certificate_properties.c:1488 msgid "Subject Alternative Name" msgstr "Nom alternatif du titulaire" #: gui/san_editor_dialog.ui:23 #, fuzzy msgid "Type:" msgstr "\tType : %s\n" #: gui/san_editor_dialog.ui:35 #, fuzzy msgid "DNS" msgstr "DSA" #: gui/san_editor_dialog.ui:36 src/certificate_properties.c:900 #: src/certificate_properties.c:914 src/certificate_properties.c:1040 msgid "IP Address" msgstr "Adresse IP" #: gui/san_editor_dialog.ui:37 msgid "Email" msgstr "" #: gui/san_editor_dialog.ui:38 src/certificate_properties.c:889 #: src/certificate_properties.c:1032 msgid "URI" msgstr "URI" #: gui/san_editor_dialog.ui:51 #, fuzzy msgid "Value:" msgstr "Valeur" #: gui/san_editor_dialog.ui:74 msgid "" "Examples:\n" "DNS: example.com, *.example.com\n" "IP: 192.168.1.1, 2001:db8::1\n" "EMAIL: admin@example.com\n" "URI: https://example.com" msgstr "" #: gui/san_manager_widget.ui:26 msgid "_Add" msgstr "" #: gui/san_manager_widget.ui:43 msgid "_Remove" msgstr "" #: gui/wizard_window.ui:9 #, fuzzy msgid "Certificate Wizard" msgstr "Certificat" #: gui/wizard_window.ui:28 #, fuzzy msgid "Quick Certificate Generation" msgstr "Certificats" #: gui/wizard_window.ui:35 msgid "" "This wizard will create a certificate for your server with default " "settings.\n" "Enter the server name (e.g., my.server.dns.name) and select the CA to sign " "it." msgstr "" #: gui/wizard_window.ui:48 #, fuzzy msgid "Server Name:" msgstr "Nom de répertoire" #: gui/wizard_window.ui:59 msgid "Enter the server DNS name (e.g., my.server.dns.name)" msgstr "" #: gui/wizard_window.ui:69 #, fuzzy msgid "Signing CA:" msgstr "Signature OCSP" #: gui/wizard_window.ui:88 #, fuzzy msgid "Certificate Type:" msgstr "Utilisations du certificat :\n" #: gui/wizard_window.ui:124 #, fuzzy msgid "_Generate Certificate" msgstr "Certificats _révoqués" #: gui/wizard_window.ui:140 #, fuzzy msgid "Web Server (TLS)" msgstr "Serveur Web TLS" #: gui/wizard_window.ui:141 #, fuzzy msgid "Email Server (TLS)" msgstr "Serveur Web TLS" #: src/ca.c:192 #, c-format msgid "Bulk revoke completed with errors. First error: %s" msgstr "" #: src/ca.c:199 #, fuzzy, c-format msgid "%d certificate revoked." msgid_plural "%d certificates revoked." msgstr[0] "Certificat révoqué.\n" msgstr[1] "Certificat révoqué.\n" #: src/ca.c:225 #, c-format msgid "Bulk delete completed with errors. First error: %s" msgstr "" #: src/ca.c:240 msgid "" "Certificate renewed. A new certificate with a fresh keypair has been added " "to the database alongside the original." msgstr "" #: src/ca.c:606 src/ca-cli-callbacks.c:167 src/ca-cli-callbacks.c:221 #: src/ca-cli-callbacks.c:733 src/ca-cli-callbacks.c:737 #: src/ca-cli-callbacks.c:1362 src/ca-cli-callbacks.c:1369 #: src/certificate_properties.c:246 src/certificate_properties.c:252 #, fuzzy msgid "%m/%d/%Y %H:%M GMT" msgstr "%d/%m/%Y %R GMT" #: src/ca.c:806 src/ca.c:1927 src/ca.c:1958 src/ca.c:2093 src/ca.c:2322 #: src/ca.c:2350 #, fuzzy msgid "Yes" msgstr "_Oui" #: src/ca.c:930 src/certificate_properties.c:653 msgid "Subject" msgstr "Titulaire" #: src/ca.c:965 src/cert_diff.c:122 msgid "Serial" msgstr "Numéro" #: src/ca.c:978 src/cert_diff.c:123 msgid "Activation" msgstr "Activation" #: src/ca.c:991 src/cert_diff.c:124 msgid "Expiration" msgstr "Expiration" #: src/ca.c:1004 msgid "Revocation" msgstr "Révocation" #: src/ca.c:1047 #, c-format msgid "" "Showing only the %d certificate expiring in the next %d days. Close " "this banner to show everything again." msgid_plural "" "Showing only the %d certificates expiring in the next %d days. Close " "this banner to show everything again." msgstr[0] "" msgstr[1] "" #: src/ca.c:1058 #, c-format msgid "" "%d certificate expires in the next %d days. Right-click it to renew " "with a fresh key." msgid_plural "" "%d certificates expire in the next %d days. Right-click each one to " "renew with a fresh key." msgstr[0] "" msgstr[1] "" #: src/ca.c:1369 src/ca.c:1404 src/ca.c:1416 src/export.c:560 src/export.c:639 msgid "There was an error while exporting certificate." msgstr "Erreur pendant l'exportation du certificat." #: src/ca.c:1371 src/ca.c:1406 src/ca.c:1418 msgid "There was an error while exporting CSR." msgstr "Erreur pendant l'exportation de la Requête de Signature de Certificat." #: src/ca.c:1426 src/ca.c:1590 msgid "Certificate exported successfully" msgstr "Certificat exporté avec succès." #: src/ca.c:1427 msgid "Certificate signing request exported successfully" msgstr "CSR exporté avec succès." #: src/ca.c:1445 msgid "Export certificate" msgstr "Exporter un certificat" #: src/ca.c:1447 msgid "Export certificate signing request" msgstr "Exporter une CSR" #: src/ca.c:1461 src/ca.c:1523 src/ca.c:1981 msgid "Private key exported successfully" msgstr "Clé privée exportée avec succès" #: src/ca.c:1509 src/ca.c:2057 msgid "Export crypted private key" msgstr "Exporter la clé privée chiffrée" #: src/ca.c:1568 #, fuzzy msgid "Export unencrypted private key" msgstr "Exporter la clé privée non chiffrée" #: src/ca.c:1633 msgid "Export whole certificate in PKCS#12 package" msgstr "Exporter l'intégralité du certificat vers un paquet au format PKCS#12" #: src/ca.c:1676 msgid "Unexpected error" msgstr "Erreur inattendue" #: src/ca.c:1712 msgid "Export CSR - gnoMint" msgstr "Exportation de Requête de Signature de Certificat - gnoMint" #: src/ca.c:1717 msgid "" "Please, choose which part of the saved Certificate Signing Request you want " "to export:" msgstr "" "Veuillez choisir la partie de la Requête de Signature de Certificat " "sauvegardée que vous souhaitez exporter :" #: src/ca.c:1722 msgid "" "Export the Certificate Signing Request to a public file, in PEM format." msgstr "Exporter la CSR vers un fichier public, au format PEM." #: src/ca.c:1727 msgid "" "Export the saved private key to a PKCS#8 password-protected file. This " "file should only be accessed by the subject of the Certificate Signing " "Request." msgstr "" "Exporter la clé privée sauvegardée vers un fichier protégé par mot de " "passe, au format PKCS#8. Ce fichier ne devrait être accessible que par le " "titulaire de la CSR." #: src/ca.c:1774 #, fuzzy msgid "Could not build certificate chain." msgstr "Certificat Racine de l'Autorité de Certification" #: src/ca.c:1781 #, fuzzy, c-format msgid "Failed to write chain: %s" msgstr "L'initialisation a échoué : %s\n" #: src/ca.c:1786 #, fuzzy msgid "Certificate chain exported successfully." msgstr "Certificat exporté avec succès." #: src/ca.c:1807 #, fuzzy msgid "Please select a certificate to export its chain." msgstr "Autorité de Certification" #: src/ca.c:1831 #, fuzzy msgid "Export certificate chain" msgstr "Exporter un certificat" #: src/ca.c:1911 #, fuzzy msgid "Please select one or more certificates to revoke." msgstr "Autorité de Certification" #: src/ca.c:1916 #, fuzzy, c-format msgid "Are you sure you want to revoke %d certificate?" msgid_plural "Are you sure you want to revoke %d certificates?" msgstr[0] "Êtes-vous sûr de vouloir révoquer ce certificat ?" msgstr[1] "Êtes-vous sûr de vouloir révoquer ce certificat ?" #: src/ca.c:1920 msgid "" "Revoking a certificate will include it in the next CRL, marking it as " "invalid. CSRs in the selection (if any) are not affected; use \"Delete " "selected CSRs\" for those." msgstr "" #: src/ca.c:1927 src/ca.c:1958 src/ca.c:2093 src/ca.c:2322 src/ca.c:2350 #, fuzzy msgid "No" msgstr "_Non" #: src/ca.c:1948 msgid "Please select one or more CSRs to delete." msgstr "" #: src/ca.c:1953 #, fuzzy, c-format msgid "Are you sure you want to delete %d Certificate Signing Request?" msgid_plural "Are you sure you want to delete %d Certificate Signing Requests?" msgstr[0] "" "Êtes-vous sûr de vouloir supprimer cette Requête de Signature de Certificat ?" msgstr[1] "" "Êtes-vous sûr de vouloir supprimer cette Requête de Signature de Certificat ?" #: src/ca.c:2076 src/ca-cli-callbacks.c:1934 msgid "" "CA certificates cannot be renewed. A renewed CA would have a different key, " "so certificates previously signed by the old CA would no longer chain to it." msgstr "" #: src/ca.c:2087 msgid "" "Renew this certificate?\n" "\n" "gnoMint will issue a new certificate with the same subject and SAN as the " "selected one, signed by the same CA, with a freshly-generated keypair. The " "old certificate will remain in the database — revoke it manually after you " "have deployed the new one." msgstr "" #: src/ca.c:2118 #, c-format msgid "Certificate diff — %d difference" msgid_plural "Certificate diff — %d differences" msgstr[0] "" msgstr[1] "" #: src/ca.c:2147 msgid "Left" msgstr "" #: src/ca.c:2151 msgid "Right" msgstr "" #: src/ca.c:2241 src/ca-cli-callbacks.c:2141 #, fuzzy msgid "Cannot read file." msgstr "L'initialisation a échoué : %s\n" #: src/ca.c:2252 msgid "Selected" msgstr "" #: src/ca.c:2278 #, fuzzy msgid "Cannot read PEM of the selected certificate." msgstr "Révoquer le certificat sélectionné" #: src/ca.c:2290 msgid "Compare with PEM file…" msgstr "" #: src/ca.c:2312 msgid "Are you sure you want to revoke this certificate?" msgstr "Êtes-vous sûr de vouloir révoquer ce certificat ?" #: src/ca.c:2313 msgid "" "Revoking a certificate will include it in the next CRL, marking it as " "invalid. This way, any future use of the certificate will be denied (as long " "as the CRL is checked)." msgstr "" #: src/ca.c:2316 #, fuzzy msgid "Are you sure you want to revoke this CA certificate?" msgstr "Êtes-vous sûr de vouloir révoquer ce certificat ?" #: src/ca.c:2317 msgid "" "Revoking a certificate will include it in the next CRL, marking it as " "invalid. This way, any future use of the certificate will be denied (as long " "as the CRL is checked). \n" "\n" "Moreover, revoking a CA certificate can invalidate all the certificates " "generated with it, so all them should be regenerated with a new CA " "certificate." msgstr "" #: src/ca.c:2349 msgid "Are you sure you want to delete this Certificate Signing Request?" msgstr "" "Êtes-vous sûr de vouloir supprimer cette Requête de Signature de Certificat ?" #: src/ca.c:2572 msgid "" "The current password you have entered doesn't match with the actual current " "database password." msgstr "" "Le mot de passe que vous venez d'entrer ne correspond pas au mot de passe " "actuel de la base de données." #: src/ca.c:2588 msgid "Error while changing database password. The operation was cancelled." msgstr "" "Erreur pendant la modification du mot de passe de la base de données. " "L'opération a été annulée." #: src/ca.c:2593 msgid "Password changed successfully" msgstr "Mot de passe modifié avec succès." #: src/ca.c:2601 src/ca-cli-callbacks.c:1186 msgid "" "Error while establishing database password. The operation was cancelled." msgstr "" "Erreur pendant l'affectationdu mot de passe de la base de données. " "L'opération a été annulée." #: src/ca.c:2606 msgid "Password established successfully" msgstr "Mot de passe mis en place avec succès." #: src/ca.c:2616 msgid "Error while removing database password. The operation was cancelled." msgstr "" "Erreur pendant la suppression du mot de passe de la base de données. " "L'opération a été annulée." #: src/ca.c:2621 msgid "Password removed successfully" msgstr "Mot de passe supprimé avec succès." #: src/ca.c:2708 msgid "Change CA password - gnoMint" msgstr "Modifier le mot de passe de l'Autorité de Certification - gnoMint" #: src/ca.c:2840 msgid "Diffie-Hellman parameters saved successfully" msgstr "Les paramètres Diffie-Hellman ont été sauvegardés avec succès" #: src/ca.c:2872 msgid "Save Diffie-Hellman parameters" msgstr "Sauvegarder les paramètres Diffie-Hellman" #: src/ca.c:2951 #, c-format msgid "Problem when importing '%s' file" msgstr "Problème pendant l'importation du fichier '%s'" #: src/ca.c:3012 msgid "Select PEM file to import" msgstr "Choisir le fichier PEM à importer" #: src/ca.c:3018 msgid "Select directory to import" msgstr "Sélectionner le répertoire à importer" #: src/cert_diff.c:70 #, fuzzy msgid "Cannot parse left certificate" msgstr "Révoquer le certificat sélectionné" #: src/cert_diff.c:72 #, fuzzy msgid "Cannot parse right certificate" msgstr "Révoquer le certificat sélectionné" #: src/cert_diff.c:113 #, fuzzy msgid "Subject CN" msgstr "SubjectCN" #: src/cert_diff.c:114 #, fuzzy msgid "Subject O" msgstr "SubjectO" #: src/cert_diff.c:115 #, fuzzy msgid "Subject OU" msgstr "SubjectOU" #: src/cert_diff.c:116 #, fuzzy msgid "Subject Country" msgstr "SubjectCN" #: src/cert_diff.c:117 #, fuzzy msgid "Subject State" msgstr "Titulaire" #: src/cert_diff.c:118 #, fuzzy msgid "Subject Locality" msgstr "Clé publique du titulaire" #: src/cert_diff.c:119 #, fuzzy msgid "Subject email" msgstr "Titulaire" #: src/cert_diff.c:120 #, fuzzy msgid "Subject DN" msgstr "SubjectCN" #: src/cert_diff.c:121 #, fuzzy msgid "Issuer DN" msgstr "Émetteur" #: src/cert_diff.c:125 #, fuzzy msgid "SAN" msgstr "RSA" #: src/cert_diff.c:126 #, fuzzy msgid "Key usage / EKU" msgstr "Utilisation de la clé" #: src/cert_diff.c:127 #, fuzzy msgid "Subject Key ID" msgstr "Identifiant unique de titulaire" #: src/cert_diff.c:128 #, fuzzy msgid "Authority Key ID" msgstr "Identifiant de la clé de l'autorité" #: src/cert_diff.c:129 #, fuzzy msgid "CRL distribution" msgstr "Points de distribution de Liste de Révocation de Certificats" #: src/cert_diff.c:130 #, fuzzy msgid "SHA-1 fingerprint" msgstr "Empreinte numérique SHA1" #: src/cert_diff.c:131 #, fuzzy msgid "SHA-256 fingerprint" msgstr "Empreinte numérique SHA1" #: src/cert_renewal.c:111 msgid "Cannot parse generated CSR." msgstr "" #: src/cert_renewal.c:125 #, fuzzy msgid "Cannot encrypt new private key." msgstr "Exporter la clé privée non chiffrée" #: src/cert_renewal.c:181 src/cert_renewal.c:341 #, fuzzy msgid "Cannot read certificate PEM from database." msgstr "_Ouvrir une base de données de certificats" #: src/cert_renewal.c:186 src/cert_renewal.c:347 #, fuzzy msgid "Cannot parse certificate." msgstr "Certificat Racine de l'Autorité de Certification" #: src/cert_renewal.c:193 src/cert_renewal.c:354 #, c-format msgid "Cannot find issuer CA in this database (issuer DN: %s)." msgstr "" #: src/cert_renewal.c:204 src/cert_renewal.c:315 msgid "Cannot load parent CA material from database." msgstr "" #: src/cert_renewal.c:212 src/cert_renewal.c:221 src/cert_renewal.c:265 #: src/cert_renewal.c:280 #, fuzzy msgid "Cannot decrypt parent CA's private key." msgstr "Exporter la clé privée chiffrée" #: src/ca-cli.c:42 msgid "newdb " msgstr "newdb " #: src/ca-cli.c:42 msgid "Close current file and create a new database with given filename" msgstr "" "Fermer le fichier et créer une nouvelle base de donnée avec le nom de " "fichier spécifié" #: src/ca-cli.c:43 msgid "opendb " msgstr "opendb " #: src/ca-cli.c:43 msgid "Close current file and open the file with given filename" msgstr "Fermer le fichier et ouvrir le fichier avec le nom de fichier spécifié" #: src/ca-cli.c:44 msgid "savedbas " msgstr "savedbas " #: src/ca-cli.c:44 msgid "Save the current file with a different filename" msgstr "Sauvegarder le fichier actuel avec un nom différent" #: src/ca-cli.c:45 msgid "Get current status (opened file, no. of certificates, etc...)" msgstr "" #: src/ca-cli.c:46 msgid "" "List the certificates in database. With option --see-revoked, lists also the " "revoked ones" msgstr "" #: src/ca-cli.c:48 msgid "List the CSRs in database" msgstr "" "Lister les Requêtes de Signature de Certificats dans la base de données" #: src/ca-cli.c:49 msgid "addcsr [ca-id-for-inherit-fields]" msgstr "" "addcsr [identifiant d'Autorité de Certification pour hériter de champs]" #: src/ca-cli.c:49 msgid "Start a new CSR creation process" msgstr "" #: src/ca-cli.c:50 msgid "Start a new self-signed CA creation process" msgstr "" #: src/ca-cli.c:51 msgid "extractcertpkey " msgstr "extractcertpkey " #: src/ca-cli.c:51 msgid "" "Extract the private key of the certificate with the given internal id and " "saves it into the given file" msgstr "" #: src/ca-cli.c:54 msgid "extractcsrpkey " msgstr "" "extractcsrpkey " #: src/ca-cli.c:54 msgid "" "Extract the private key of the CSR with the given internal id and saves it " "into the given file" msgstr "" #: src/ca-cli.c:57 msgid "revoke " msgstr "revoke " #: src/ca-cli.c:57 msgid "Revoke the certificate with the given internal ID" msgstr "" #: src/ca-cli.c:58 msgid "sign " msgstr "" "sign " #: src/ca-cli.c:58 msgid "Generate a certificate signing the given CSR with the given CA" msgstr "" #: src/ca-cli.c:59 msgid "delete " msgstr "delete " #: src/ca-cli.c:59 msgid "Delete the given CSR from the database" msgstr "" #: src/ca-cli.c:60 msgid "crlgen " msgstr "" #: src/ca-cli.c:60 msgid "Generate a new CRL for the given CA, saving it into the file " msgstr "" #: src/ca-cli.c:61 msgid "dhgen " msgstr "dhgen " #: src/ca-cli.c:61 msgid "Generate a new DH-parameter set, saving it into the file " msgstr "" "Générer un nouveau jeu de paramètres DH, et le sauvegarder dans le fichier " "" #: src/ca-cli.c:62 msgid "Change password for the current database" msgstr "Modifier le mot de passe de la base de données actuelle" #: src/ca-cli.c:63 msgid "importfile " msgstr "importfile " #: src/ca-cli.c:63 msgid "Import the file with the given name " msgstr "Importer le fichier nommé " #: src/ca-cli.c:64 msgid "importdir " msgstr "importdir " #: src/ca-cli.c:64 msgid "Import the given directory, as a OpenSSL-CA directory" msgstr "" #: src/ca-cli.c:65 msgid "showcert " msgstr "showcert " #: src/ca-cli.c:65 msgid "Show properties of the given certificate" msgstr "Afficher les propriétés d'un certificat donné" #: src/ca-cli.c:66 msgid "showcsr " msgstr "showcsr " #: src/ca-cli.c:66 msgid "Show properties of the given CSR" msgstr "" "Afficher les propriétés d'une Requête de Signature de Certificat donnée" #: src/ca-cli.c:67 msgid "showpolicy " msgstr "showpolicy " #: src/ca-cli.c:67 msgid "Show CA policy" msgstr "Afficher la stratégie de l'Autorité de Certification" #: src/ca-cli.c:68 msgid "setpolicy " msgstr "" "setpolicy " #: src/ca-cli.c:68 msgid "Change the given CA policy" msgstr "" #: src/ca-cli.c:69 msgid "Show program preferences" msgstr "" #: src/ca-cli.c:70 msgid "setpreference " msgstr "setpreference " #: src/ca-cli.c:70 msgid "Set the given program preference" msgstr "" #: src/ca-cli.c:71 msgid "addservercert " msgstr "" #: src/ca-cli.c:71 msgid "Quick server certificate generation (cert-type: 'web' or 'email')" msgstr "" #: src/ca-cli.c:72 #, fuzzy msgid "renewcert " msgstr "showcert " #: src/ca-cli.c:72 msgid "" "Reissue a non-CA certificate with the same subject + SAN and a fresh " "keypair. The old certificate remains in the database. CA certificates cannot " "be renewed." msgstr "" #: src/ca-cli.c:73 #, fuzzy msgid "exportchain " msgstr "extractcertpkey " #: src/ca-cli.c:73 msgid "" "Export the full certificate chain (leaf → root) for the given certificate as " "a PEM bundle." msgstr "" #: src/ca-cli.c:74 #, fuzzy msgid "revokemany [cert-id ...]" msgstr "revoke " #: src/ca-cli.c:74 msgid "Revoke many certificates at once. Non-cert ids are silently skipped." msgstr "" #: src/ca-cli.c:75 #, fuzzy msgid "deletemany [csr-id ...]" msgstr "delete " #: src/ca-cli.c:75 msgid "Delete many CSRs at once. Non-CSR ids are silently skipped." msgstr "" #: src/ca-cli.c:76 msgid "search " msgstr "" #: src/ca-cli.c:76 msgid "" "List certificates and CSRs whose subject or serial contains (case-" "insensitive)." msgstr "" #: src/ca-cli.c:77 msgid "diff " msgstr "" #: src/ca-cli.c:77 msgid "" "Side-by-side diff of two certificates. Each argument is either a numeric DB " "id or a path to a PEM file." msgstr "" #: src/ca-cli.c:78 msgid "Show about message" msgstr "Afficher le message « À propos »" #: src/ca-cli.c:79 msgid "Show warranty information" msgstr "Afficher les informations de garantie" #: src/ca-cli.c:80 msgid "Show distribution information" msgstr "Afficher les informations de distribution" #: src/ca-cli.c:81 msgid "Show version information" msgstr "Afficher les informations de version" #: src/ca-cli.c:82 msgid "Show (this) help message" msgstr "Afficher ce message d'aide" #: src/ca-cli.c:83 src/ca-cli.c:84 src/ca-cli.c:85 msgid "Close database and exit program" msgstr "Fermer la base de données et quitter le programme" #: src/ca-cli.c:132 #, c-format msgid "Opening database %s..." msgstr "Ouverture de la base de données %s..." #: src/ca-cli.c:136 #, c-format msgid " OK.\n" msgstr " OK.\n" #: src/ca-cli.c:138 #, c-format msgid " Error.\n" msgstr " Erreur.\n" #: src/ca-cli.c:153 #, c-format msgid "" "Notice: %d certificate expires within the next %d days. Use `renewcert ` " "to reissue.\n" msgid_plural "" "Notice: %d certificates expire within the next %d days. Use `renewcert ` " "to reissue.\n" msgstr[0] "" msgstr[1] "" #: src/ca-cli.c:187 #, fuzzy, c-format msgid "" "\n" "\n" "%s version %s \"%s\"\n" "%s\n" "\n" msgstr "" "\n" "\n" "%s version %s\n" "%s\n" "\n" #: src/ca-cli.c:188 #, c-format msgid "" "This program comes with ABSOLUTELY NO WARRANTY;\n" "for details type 'warranty'.\n" msgstr "" #: src/ca-cli.c:189 #, c-format msgid "" "This is free software, and you are welcome to redistribute it\n" "under certain conditions; type 'distribution' for details.\n" "\n" msgstr "" #: src/ca-cli.c:231 #, c-format msgid "Unpaired quotes\n" msgstr "Guillemet manquant\n" #: src/ca-cli.c:309 #, c-format msgid "" "Invalid command. Try 'help' for getting a list of recognized commands.\n" msgstr "" #: src/ca-cli.c:313 #, c-format msgid "Incorrect number of parameters.\n" msgstr "Nombre de paramètres incorrect.\n" #: src/ca-cli.c:314 #, c-format msgid "Syntax: %s\n" msgstr "Syntaxe : %s\n" #: src/ca-cli-callbacks.c:62 src/ca-cli-callbacks.c:111 msgid "The file already exists, so it will be overwritten." msgstr "Le fichier existe déjà, il va être remplacé." #: src/ca-cli-callbacks.c:62 src/ca-cli-callbacks.c:111 #: src/ca-cli-callbacks.c:824 msgid "Are you sure? Yes/[No] " msgstr "Êtes-vous sûr ? Oui/[Non] " #: src/ca-cli-callbacks.c:84 #, c-format msgid "Problem when opening new '%s' CA database\n" msgstr "" #: src/ca-cli-callbacks.c:88 #, c-format msgid "File '%s' opened\n" msgstr "Fichier '%s' ouvert\n" #: src/ca-cli-callbacks.c:98 #, c-format msgid "Problem when opening '%s' CA database\n" msgstr "" #: src/ca-cli-callbacks.c:132 #, c-format msgid "Current opened file: %s\n" msgstr "Fichier actuellement ouvert : %s\n" #: src/ca-cli-callbacks.c:133 #, c-format msgid "Number of certificates in file: %d\n" msgstr "Nombre de certificats dans le fichier : %d\n" #: src/ca-cli-callbacks.c:134 #, c-format msgid "Number of CSRs in file: %d\n" msgstr "" #: src/ca-cli-callbacks.c:169 msgid " (after 2038?)" msgstr "" #: src/ca-cli-callbacks.c:239 #, c-format msgid "Certificates in Database:\n" msgstr "Certificats dans la base de données :\n" #: src/ca-cli-callbacks.c:240 #, c-format msgid "Id.\tIs CA?\tCertificate Subject\tKey in DB?\tActivation\t\tExpiration" msgstr "" #: src/ca-cli-callbacks.c:243 #, c-format msgid "\t\tRevocation\n" msgstr "\t\tRévocation\n" #: src/ca-cli-callbacks.c:278 #, c-format msgid "Certificate Requests in Database:\n" msgstr "" #: src/ca-cli-callbacks.c:279 #, c-format msgid "Id.\tParent Id.\tCSR Subject\t\tKey in DB?\n" msgstr "" #: src/ca-cli-callbacks.c:309 src/ca-cli-callbacks.c:1129 #: src/ca-cli-callbacks.c:1522 src/ca-cli-callbacks.c:1551 msgid "The given CA id. is not valid" msgstr "" #: src/ca-cli-callbacks.c:362 #, c-format msgid "" "Please enter data corresponding to subject of the Certificate Signing " "Request:\n" msgstr "Titulaire de la Requête de Signature de Certificat :\n" #: src/ca-cli-callbacks.c:365 src/ca-cli-callbacks.c:567 msgid "Enter country (C)" msgstr "Entrez la pays (C)" #: src/ca-cli-callbacks.c:373 src/ca-cli-callbacks.c:573 msgid "Enter state or province (ST)" msgstr "Entrez l'état ou la province (ST)" #: src/ca-cli-callbacks.c:382 src/ca-cli-callbacks.c:579 msgid "Enter locality or city (L)" msgstr "Entrez la localité ou la ville (L)" #: src/ca-cli-callbacks.c:390 src/ca-cli-callbacks.c:585 msgid "Enter organization (O)" msgstr "Entrez l'organisation (O)" #: src/ca-cli-callbacks.c:398 src/ca-cli-callbacks.c:591 msgid "Enter organizational unit (OU)" msgstr "Entrez l'unité d'organisation (OU)" #: src/ca-cli-callbacks.c:405 src/ca-cli-callbacks.c:597 msgid "Enter common name (CN)" msgstr "Entrez le nom commun (CN)" #: src/ca-cli-callbacks.c:411 src/ca-cli-callbacks.c:603 msgid "Enter email address (leave blank for none)" msgstr "" #: src/ca-cli-callbacks.c:422 src/ca-cli-callbacks.c:614 msgid "" "Enter Subject Alternative Names (SAN) [format: " "DNS:example.com,IP:192.168.1.1]" msgstr "" #: src/ca-cli-callbacks.c:433 src/ca-cli-callbacks.c:625 #, fuzzy msgid "Enter type of key you are going to create (RSA/DSA/ECDSA/Ed25519)" msgstr "Entrez le type de clé que vous allez créer (RSA/DSA)" #: src/ca-cli-callbacks.c:472 src/ca-cli-callbacks.c:656 msgid "Enter curve size for ECDSA (256, 384, or 521)" msgstr "" #: src/ca-cli-callbacks.c:482 src/ca-cli-callbacks.c:667 msgid "Enter bitlength for the key (it must be a whole multiple of 1024)" msgstr "Entrez la taille en bits de la clé (ce doit être un multiple de 1024)" #: src/ca-cli-callbacks.c:487 #, c-format msgid "These are the provided CSR properties:\n" msgstr "" "Voici les propriétés de la Requête de Signature de Certificat fournie :\n" #: src/ca-cli-callbacks.c:489 src/ca-cli-callbacks.c:704 #: src/ca-cli-callbacks.c:1350 src/ca-cli-callbacks.c:1411 #, c-format msgid "Subject:\n" msgstr "Titulaire\n" #: src/ca-cli-callbacks.c:490 src/ca-cli-callbacks.c:705 #, c-format msgid "\tDistinguished Name: " msgstr "\tNom distinct : " #: src/ca-cli-callbacks.c:505 src/ca-cli-callbacks.c:720 #: src/ca-cli-callbacks.c:1354 src/ca-cli-callbacks.c:1414 #, fuzzy, c-format msgid "\tSubject Alternative Names: %s\n" msgstr "Nom alternatif du titulaire" #: src/ca-cli-callbacks.c:506 src/ca-cli-callbacks.c:721 #, c-format msgid "Key pair\n" msgstr "Paire de clés\n" #: src/ca-cli-callbacks.c:512 src/ca-cli-callbacks.c:727 #, c-format msgid "\tType: %s\n" msgstr "\tType : %s\n" #: src/ca-cli-callbacks.c:514 #, c-format msgid "\tKey size: fixed (Ed25519)\n" msgstr "" #: src/ca-cli-callbacks.c:516 #, c-format msgid "\tCurve: P-%d\n" msgstr "" #: src/ca-cli-callbacks.c:518 src/ca-cli-callbacks.c:729 #, c-format msgid "\tKey bitlength: %d\n" msgstr "\tTaille en bits de la clé : %d\n" #: src/ca-cli-callbacks.c:521 src/ca-cli-callbacks.c:740 msgid "Do you want to change anything? Yes/[No] " msgstr "Souhaitez vous modifier quelque chose ? Oui/[Non] " #: src/ca-cli-callbacks.c:525 msgid "" "You are about to create a Certificate Signing Request with these properties." msgstr "" "Vous êtes sur le point de créer une Requête de Signature de Certificat avec " "ces propriétés :" #: src/ca-cli-callbacks.c:526 src/ca-cli-callbacks.c:745 msgid "Are you sure? [Yes]/No " msgstr "Êtes-vous sur ? [Oui]/Non " #: src/ca-cli-callbacks.c:531 src/ca-cli-callbacks.c:750 #: src/ca-cli-callbacks.c:834 src/ca-cli-callbacks.c:965 #: src/ca-cli-callbacks.c:1086 src/ca-cli-callbacks.c:1115 #: src/ca-cli-callbacks.c:1181 src/ca-cli-callbacks.c:1208 #: src/ca-cli-callbacks.c:1236 src/ca-cli-callbacks.c:1251 #: src/ca-cli-callbacks.c:1581 src/ca-cli-callbacks.c:1624 #: src/ca-cli-callbacks.c:1945 #, c-format msgid "Operation cancelled.\n" msgstr "Opération annulée.\n" #: src/ca-cli-callbacks.c:565 #, c-format msgid "" "Please enter data corresponding to subject of the new Certification " "Authority:\n" msgstr "Titulaire de la nouvelle Autorité de Certification :\n" #: src/ca-cli-callbacks.c:673 msgid "" "Introduce number of months before expiration of the new certification " "authority" msgstr "" "Entrez le nombre de mois avant l'expiration de la nouvelle Autorité de " "Certification" #: src/ca-cli-callbacks.c:693 src/new_ca_window.c:457 msgid "" "This system uses a 32-bit time_t and cannot represent dates after " "2038-01-19. The new CA's expiration date has been clamped to that limit. To " "issue longer-lived CAs, run gnoMint on a 64-bit platform." msgstr "" #: src/ca-cli-callbacks.c:702 #, c-format msgid "These are the provided new CA properties:\n" msgstr "" "Voici les propriétés de la nouvelle Autorité de Certification fournie :\n" #: src/ca-cli-callbacks.c:730 #, c-format msgid "Validity\n" msgstr "Validité\n" #: src/ca-cli-callbacks.c:731 src/ca-cli-callbacks.c:1360 #, c-format msgid "Validity:\n" msgstr "Validité :\n" #: src/ca-cli-callbacks.c:734 src/ca-cli-callbacks.c:1363 #, c-format msgid "\tActivated on: %s\n" msgstr "\tActivé le : %s\n" #: src/ca-cli-callbacks.c:738 src/ca-cli-callbacks.c:1370 #, c-format msgid "\tExpires on: %s\n" msgstr "\tExpire le : %s\n" #: src/ca-cli-callbacks.c:744 msgid "" "You are about to create a new Certification Authority with these properties." msgstr "" "Vous êtes sur le point de créer une nouvelle Autorité de Certification avec " "ces propriétés." #: src/ca-cli-callbacks.c:770 src/ca-cli-callbacks.c:818 #: src/ca-cli-callbacks.c:1321 msgid "The given certificate id. is not valid" msgstr "L'identifiant de certificat fourni est incorrect" #: src/ca-cli-callbacks.c:777 src/ca-cli-callbacks.c:801 #, c-format msgid "Private key extracted successfully into file '%s'\n" msgstr "Clé privée extraite avec succès dans le fichier '%s'\n" #: src/ca-cli-callbacks.c:794 src/ca-cli-callbacks.c:946 #: src/ca-cli-callbacks.c:1099 src/ca-cli-callbacks.c:1400 msgid "The given CSR id. is not valid" msgstr "" "L'identifiant de Requête de Signature de Certificat fourni est incorrect" #: src/ca-cli-callbacks.c:824 msgid "This certificate will be revoked." msgstr "Ce certificat sera révoqué." #: src/ca-cli-callbacks.c:830 #, c-format msgid "Certificate revoked.\n" msgstr "Certificat révoqué.\n" #: src/ca-cli-callbacks.c:844 src/ca-cli-callbacks.c:1381 #, c-format msgid "Certificate uses:\n" msgstr "Utilisations du certificat :\n" #: src/ca-cli-callbacks.c:847 #, c-format msgid "* Certification Authority use enabled.\n" msgstr "* Utilisable pour une Autorité de Certification.\n" #: src/ca-cli-callbacks.c:849 #, c-format msgid "* Certification Authority use disabled.\n" msgstr "* Inutilisable pour une Autorité de Certification.\n" #: src/ca-cli-callbacks.c:853 #, c-format msgid "* CRL signing use enabled.\n" msgstr "" "* Utilisable pour la signature de Liste de Révocation de Certificats.\n" #: src/ca-cli-callbacks.c:855 #, c-format msgid "* CRL signing use disabled.\n" msgstr "" "* Inutilisable pour la signature de Liste de Révocation de Certificats.\n" #: src/ca-cli-callbacks.c:859 #, c-format msgid "* Digital Signature use enabled.\n" msgstr "* Utilisable pour la signature numérique.\n" #: src/ca-cli-callbacks.c:861 #, c-format msgid "* Digital Signature use disabled.\n" msgstr "* Inutilisable pour la signature numérique.\n" #: src/ca-cli-callbacks.c:865 src/ca-cli-callbacks.c:867 #, c-format msgid "* Data Encipherment use enabled.\n" msgstr "* Utilisable pour le chiffrement de données.\n" #: src/ca-cli-callbacks.c:871 #, c-format msgid "* Key Encipherment use enabled.\n" msgstr "* Utilisable pour le chiffrement de clé.\n" #: src/ca-cli-callbacks.c:873 #, c-format msgid "* Key Encipherment use disabled.\n" msgstr "* Inutilisable pour le chiffrement de clé.\n" #: src/ca-cli-callbacks.c:877 #, c-format msgid "* Non Repudiation use enabled.\n" msgstr "* Utilisable pour la non-répudiation.\n" #: src/ca-cli-callbacks.c:879 #, c-format msgid "* Non Repudiation use disabled.\n" msgstr "* Inutilisable pour la non-répudiation.\n" #: src/ca-cli-callbacks.c:883 #, c-format msgid "* Key Agreement use enabled.\n" msgstr "* Utilisable pour l'agrément de clé.\n" #: src/ca-cli-callbacks.c:885 #, c-format msgid "* Key Agreement use disabled.\n" msgstr "* Inutilisable pour l'agrément de clé.\n" #: src/ca-cli-callbacks.c:888 #, c-format msgid "Certificate purposes:\n" msgstr "Applications du certificat :\n" #: src/ca-cli-callbacks.c:891 #, c-format msgid "* Email Protection purpose enabled.\n" msgstr "* Applicable à la protection de courriel.\n" #: src/ca-cli-callbacks.c:893 #, c-format msgid "* Email Protection purpose disabled.\n" msgstr "* Inapplicable à la protection de courriel.\n" #: src/ca-cli-callbacks.c:897 #, c-format msgid "* Code Signing purpose enabled.\n" msgstr "* Applicable à la signature de code.\n" #: src/ca-cli-callbacks.c:899 #, c-format msgid "* Code Signing purpose disabled.\n" msgstr "* Inapplicable à la signature de code.\n" #: src/ca-cli-callbacks.c:903 #, c-format msgid "* TLS Web Client purpose enabled.\n" msgstr "* Applicable aux clients Web TLS.\n" #: src/ca-cli-callbacks.c:905 #, c-format msgid "* TLS Web Client purpose disabled.\n" msgstr "* Inapplicable aux clients Web TLS.\n" #: src/ca-cli-callbacks.c:909 #, c-format msgid "* TLS Web Server purpose enabled.\n" msgstr "* Applicable aux serveurs Web TLS.\n" #: src/ca-cli-callbacks.c:911 #, c-format msgid "* TLS Web Server purpose disabled.\n" msgstr "* Inapplicable aux serveurs Web TLS.\n" #: src/ca-cli-callbacks.c:915 #, c-format msgid "* Time Stamping purpose enabled.\n" msgstr "* Applicable à l'horodatage.\n" #: src/ca-cli-callbacks.c:917 #, c-format msgid "* Time Stamping purpose disabled.\n" msgstr "* Inapplicable à l'horodatage.\n" #: src/ca-cli-callbacks.c:921 #, c-format msgid "* OCSP Signing purpose enabled.\n" msgstr "* Applicable à la signature OCSP.\n" #: src/ca-cli-callbacks.c:923 #, c-format msgid "* OCSP Signing purpose disabled.\n" msgstr "* Inapplicable à la signature OCSP.\n" #: src/ca-cli-callbacks.c:927 #, c-format msgid "* Any purpose enabled.\n" msgstr "* Applicable à tout.\n" #: src/ca-cli-callbacks.c:929 #, c-format msgid "* Any purpose disabled.\n" msgstr "* Applicable à rien.\n" #: src/ca-cli-callbacks.c:953 #, c-format msgid "You are about to sign the following Certificate Signing Request:\n" msgstr "" "Vous êtes sur le point de signer la Requête de Signature de Certificat " "suivante :\n" #: src/ca-cli-callbacks.c:955 #, c-format msgid "with the certificate corresponding to the next CA:\n" msgstr "" #: src/ca-cli-callbacks.c:958 msgid "" "Introduce number of months before expiration of the new certificate (0 to " "cancel)" msgstr "" "Donner le nombre de mois avant l'expiration du nouveau certificat (0 pour " "annuler)" #: src/ca-cli-callbacks.c:984 src/ca-cli-callbacks.c:1072 #, c-format msgid "" "The new certificate will be created with the following uses and purposes:\n" msgstr "" "Le nouveau certificat sera créé avec les utilisations et applications " "suivants :\n" #: src/ca-cli-callbacks.c:987 msgid "Do you want to change any property of the new certificate? Yes/[No] " msgstr "" "Souhaitez-vous modifier une propriété du nouveau Certificat ? Yes/[Non] " #: src/ca-cli-callbacks.c:990 msgid "* Enable Certification Authority use? [Yes]/No " msgstr "* Utilisable pour une Autorité de Certification ? [Oui]/Non " #: src/ca-cli-callbacks.c:992 #, c-format msgid "* Certification Authority use disabled by policy\n" msgstr "* Inutilisable pour une Autorité de Certification, par stratégie\n" #: src/ca-cli-callbacks.c:996 msgid "* Enable CRL Signing? [Yes]/No " msgstr "" "* Utilisable pour la signature de Liste de Révocation de Certificats ? [Oui]/" "Non " #: src/ca-cli-callbacks.c:998 #, c-format msgid "* CRL signing use disabled by policy\n" msgstr "" "* Inutilisable pour la signature de Liste de Révocation de Certificats, par " "stratégie\n" #: src/ca-cli-callbacks.c:1002 msgid "* Enable Digital Signature use? [Yes]/No " msgstr "* Utilisable pour la signature numérique ? [Oui]/Non " #: src/ca-cli-callbacks.c:1004 #, c-format msgid "* Digital Signature use disabled by policy\n" msgstr "* Inutilisable pour la signature numérique, par stratégie\n" #: src/ca-cli-callbacks.c:1008 msgid "Enable Data Encipherment use? [Yes]/No " msgstr "Utilisable pour le chiffrement de données ? [Oui]/Non " #: src/ca-cli-callbacks.c:1010 #, c-format msgid "* Data Encipherment use disabled by policy\n" msgstr "* Inutilisable pour le chiffrement de données, par stratégie\n" #: src/ca-cli-callbacks.c:1014 msgid "Enable Key Encipherment use? [Yes]/No " msgstr "Utilisable pour le chiffrement de clé ? [Oui]/Non " #: src/ca-cli-callbacks.c:1016 #, c-format msgid "* Key Encipherment use disabled by policy\n" msgstr "* Inutilisable pour le chiffrement de clé, par stratégie\n" #: src/ca-cli-callbacks.c:1020 msgid "Enable Non Repudiation use? [Yes]/No " msgstr "Utilisable pour la non-répudiation ? [Oui]/Non " #: src/ca-cli-callbacks.c:1022 #, c-format msgid "* Non Repudiation use disabled by policy\n" msgstr "* Inutilisable pour la non-répudiation, par stratégie\n" #: src/ca-cli-callbacks.c:1026 msgid "Enable Key Agreement use? [Yes]/No " msgstr "Utilisable pour l'agrément de clé ? [Oui]/Non " #: src/ca-cli-callbacks.c:1028 #, c-format msgid "* Key Agreement use disabled by policy\n" msgstr "* Inutilisable pour l'agrément de clé, par stratégie\n" #: src/ca-cli-callbacks.c:1032 msgid "Enable Email Protection purpose? [Yes]/No " msgstr "Applicable à la protection de courriel ? [Oui]/Non " #: src/ca-cli-callbacks.c:1034 #, c-format msgid "* Email Protection purpose disabled by policy\n" msgstr "* Inapplicable à la protection de courriel, par stratégie\n" #: src/ca-cli-callbacks.c:1038 msgid "Enable Code Signing purpose? [Yes]/No " msgstr "Applicable à la signature de code ? [Oui]/Non " #: src/ca-cli-callbacks.c:1040 #, c-format msgid "* Code Signing purpose disabled by policy\n" msgstr "* Inapplicable à la signature de code, par stratégie\n" #: src/ca-cli-callbacks.c:1044 msgid "Enable TLS Web Client purpose? [Yes]/No " msgstr "Applicable aux clients Web TLS ? [Oui]/Non " #: src/ca-cli-callbacks.c:1046 #, c-format msgid "* TLS Web Client purpose disabled by policy\n" msgstr "* Inapplicable aux clients Web TLS, par stratégie\n" #: src/ca-cli-callbacks.c:1050 msgid "Enable TLS Web Server purpose? [Yes]/No " msgstr "Applicable aux serveurs Web TLS ? [Oui]/Non " #: src/ca-cli-callbacks.c:1052 #, c-format msgid "* TLS Web Server purpose disabled by policy\n" msgstr "* Inapplicable aux serveurs Web TLS, par stratégie\n" #: src/ca-cli-callbacks.c:1056 msgid "Enable Time Stamping purpose? [Yes]/No " msgstr "Applicable à l'horodatage ? [Oui]/Non " #: src/ca-cli-callbacks.c:1058 #, c-format msgid "* Time Stamping purpose disabled by policy\n" msgstr "* Inapplicable à l'horodatage, par stratégie\n" #: src/ca-cli-callbacks.c:1062 msgid "Enable OCSP Signing purpose? [Yes]/No " msgstr "Applicable à la signature OCSP ? [Oui]/Non " #: src/ca-cli-callbacks.c:1063 #, c-format msgid "* OCSP Signing purpose disabled by policy\n" msgstr "* Inapplicable à la signature OCSP, par stratégie\n" #: src/ca-cli-callbacks.c:1067 msgid "Enable any purpose? [Yes]/No " msgstr "Applicable à tout ? [Oui]/Non " #: src/ca-cli-callbacks.c:1069 #, c-format msgid "* Any purpose disabled by policy\n" msgstr "* Applicable à tout, par stratégie\n" #: src/ca-cli-callbacks.c:1077 msgid "" "All the mandatory data for the certificate generation has been gathered." msgstr "" #: src/ca-cli-callbacks.c:1077 msgid "Do you want to proceed with the signing? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1083 #, c-format msgid "Certificate signed.\n" msgstr "Certificat signé.\n" #: src/ca-cli-callbacks.c:1105 msgid "This Certificate Signing Request will be deleted." msgstr "" #: src/ca-cli-callbacks.c:1105 msgid "This operation cannot be undone. Are you sure? Yes/[No] " msgstr "" #: src/ca-cli-callbacks.c:1111 #, c-format msgid "Certificate Signing Request deleted.\n" msgstr "" #: src/ca-cli-callbacks.c:1136 #, c-format msgid "CRL generated successfully into file '%s'\n" msgstr "" "La Liste de Révocation de Certificats a été générée avec succès dans le " "fichier '%s'\n" #: src/ca-cli-callbacks.c:1153 msgid "The bit-length of the prime number must be whole multiple of 1024" msgstr "La taille en bits du nombre premier doit être un multiple de 1024" #: src/ca-cli-callbacks.c:1162 #, c-format msgid "Diffie-Hellman parameters created and saved successfully in file '%s'\n" msgstr "" #: src/ca-cli-callbacks.c:1174 msgid "Currently, the database is not password-protected." msgstr "" #: src/ca-cli-callbacks.c:1174 msgid "Do you want to password protect it? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1175 msgid "" "OK. You need to supply a password for protecting the private keys in the\n" "database, so nobody else but authorized people can use them. This password\n" "will be asked any time gnoMint will make use of any private key in database." msgstr "" #: src/ca-cli-callbacks.c:1178 msgid "Insert password:" msgstr "" #: src/ca-cli-callbacks.c:1178 msgid "Insert password (confirm):" msgstr "" #: src/ca-cli-callbacks.c:1179 src/ca-cli-callbacks.c:1249 msgid "The introduced passwords are distinct." msgstr "" #: src/ca-cli-callbacks.c:1190 #, c-format msgid "Password established successfully.\n" msgstr "" #: src/ca-cli-callbacks.c:1197 #, c-format msgid "Nothing done.\n" msgstr "" #: src/ca-cli-callbacks.c:1201 msgid "Currently, the database IS password-protected." msgstr "" #: src/ca-cli-callbacks.c:1201 msgid "Do you want to remove this password protection? Yes/[No] " msgstr "" #: src/ca-cli-callbacks.c:1205 #, c-format msgid "" "For removing the password-protection, the current database password\n" "must be supplied.\n" msgstr "" #: src/ca-cli-callbacks.c:1206 src/ca-cli-callbacks.c:1234 msgid "Please, insert the current database password (Empty to cancel): " msgstr "" "Veuillez entrer le mot de passe actuel de la base de données (ne rien mettre " "pour annuler) : " #: src/ca-cli-callbacks.c:1213 src/ca-cli-callbacks.c:1241 msgid "" "The current password you have entered\n" "doesn't match with the actual current database password." msgstr "" #: src/ca-cli-callbacks.c:1218 msgid "" "Error while removing database password. \n" "The operation was cancelled." msgstr "" "Erreur pendant la suppression du mot de passe de la base de données. \n" "L'opération a été annulée." #: src/ca-cli-callbacks.c:1223 #, c-format msgid "Password removed successfully.\n" msgstr "" #: src/ca-cli-callbacks.c:1233 #, c-format msgid "" "You must supply the current database password before changing the password.\n" msgstr "" #: src/ca-cli-callbacks.c:1245 msgid "" "OK. Now you must supply a new password for protecting the private keys in " "the\n" "database, so nobody else but authorized people can use them. This password\n" "will be asked any time gnoMint will make use of any private key in database." msgstr "" #: src/ca-cli-callbacks.c:1248 msgid "Insert new password:" msgstr "" #: src/ca-cli-callbacks.c:1248 msgid "Insert new password (confirm):" msgstr "" #: src/ca-cli-callbacks.c:1257 msgid "" "Error while changing database password. \n" "The operation was cancelled." msgstr "" "Erreur pendant la modification du mot de passe de la base de données. \n" "L'opération a été annulée." #: src/ca-cli-callbacks.c:1263 #, c-format msgid "Password changed successfully.\n" msgstr "" #: src/ca-cli-callbacks.c:1281 msgid "Problem when importing the given file." msgstr "" #: src/ca-cli-callbacks.c:1284 #, c-format msgid "File imported successfully.\n" msgstr "" #: src/ca-cli-callbacks.c:1300 #, c-format msgid "Directory imported successfully.\n" msgstr "" #: src/ca-cli-callbacks.c:1343 #, c-format msgid "Certificate:\n" msgstr "" #: src/ca-cli-callbacks.c:1347 #, c-format msgid "\tSerial number: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1351 src/ca-cli-callbacks.c:1357 #: src/ca-cli-callbacks.c:1412 #, c-format msgid "\tDistinguished Name: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1351 src/ca-cli-callbacks.c:1352 #: src/ca-cli-callbacks.c:1357 src/ca-cli-callbacks.c:1358 msgid "None." msgstr "" #: src/ca-cli-callbacks.c:1352 src/ca-cli-callbacks.c:1358 #: src/ca-cli-callbacks.c:1416 #, c-format msgid "\tUnique ID: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1356 #, c-format msgid "Issuer:\n" msgstr "" #: src/ca-cli-callbacks.c:1365 src/ca-cli-callbacks.c:1372 #, c-format msgid "" "\t (warning: this 32-bit build cannot tell a real post-2038 date from an " "overflow; this value may be inaccurate)\n" msgstr "" #: src/ca-cli-callbacks.c:1375 #, c-format msgid "Fingerprints:\n" msgstr "" #: src/ca-cli-callbacks.c:1376 #, c-format msgid "\tSHA1 fingerprint: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1377 #, c-format msgid "\tMD5 fingerprint: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1378 #, fuzzy, c-format msgid "\tSHA256 fingerprint: %s\n" msgstr "Empreinte numérique SHA1" #: src/ca-cli-callbacks.c:1409 #, c-format msgid "Certificate Signing Request:\n" msgstr "" #: src/ca-cli-callbacks.c:1486 msgid "Generated certs inherit Country from CA " msgstr "" #: src/ca-cli-callbacks.c:1487 msgid "Generated certs inherit State from CA " msgstr "" #: src/ca-cli-callbacks.c:1488 msgid "Generated certs inherit Locality from CA " msgstr "" #: src/ca-cli-callbacks.c:1489 msgid "Generated certs inherit Organization from CA " msgstr "" #: src/ca-cli-callbacks.c:1490 msgid "Generated certs inherit Organizational Unit from CA " msgstr "" #: src/ca-cli-callbacks.c:1491 msgid "Country in generated certs must be the same than in CA " msgstr "" #: src/ca-cli-callbacks.c:1492 msgid "State in generated certs must be the same than in CA " msgstr "" #: src/ca-cli-callbacks.c:1493 msgid "Locality in generated certs must be the same than in CA " msgstr "" #: src/ca-cli-callbacks.c:1494 msgid "Organization in generated certs must be the same than in CA " msgstr "" #: src/ca-cli-callbacks.c:1495 msgid "Organizational Unit in generated certs must be the same than in CA" msgstr "" #: src/ca-cli-callbacks.c:1496 msgid "Maximum number of hours between CRL updates " msgstr "" "Nombre d'heures maximum entre les mises à jours de Liste de Révocation de " "Certificats " #: src/ca-cli-callbacks.c:1497 msgid "CRL distribution point (URL where CRL is published) " msgstr "" #: src/ca-cli-callbacks.c:1498 msgid "Maximum number of months before expiration of new certs " msgstr "" #: src/ca-cli-callbacks.c:1499 msgid "CA use enabled in generated certs " msgstr "" "Utilisable pour une Autorité de Certification dans les certificats " "générés " #: src/ca-cli-callbacks.c:1500 msgid "CRL Sign use enabled in generated certs " msgstr "" "Utilisable pour la signature de Liste de Révocation de Certificats dans les " "certificats générés " #: src/ca-cli-callbacks.c:1501 msgid "Non reputation use enabled in generated certs " msgstr "" "Utilisable pour la non-répudiation dans les certificats " "générés " #: src/ca-cli-callbacks.c:1502 msgid "Digital signature use enabled in generated certs " msgstr "" "Utilisable pour la signature numérique dans les certificats " "générés " #: src/ca-cli-callbacks.c:1503 msgid "Key encipherment use enabled in generated certs " msgstr "" "Utilisable pour le chiffrement de clé dans les certificats " "générés " #: src/ca-cli-callbacks.c:1504 msgid "Key agreement use enabled in generated certs " msgstr "" "Utilisable pour l'agrément de clé dans les certificats " "générés " #: src/ca-cli-callbacks.c:1505 msgid "Data encipherment use enabled in generated certs " msgstr "" "Utilisable pour le chiffrement de données dans les certificats " "générés " #: src/ca-cli-callbacks.c:1506 msgid "TLS web server purpose enabled in generated certs " msgstr "" "Applicable aux serveurs Web TLS dans les certificats générés " #: src/ca-cli-callbacks.c:1507 msgid "TLS web client purpose enabled in generated certs " msgstr "" "Applicable aux clients Web TLS dans les certificats générés " #: src/ca-cli-callbacks.c:1508 msgid "Time stamping purpose enabled in generated certs " msgstr "" "Application pour l'horodatage activée dans les certificats " "générés " #: src/ca-cli-callbacks.c:1509 msgid "Code signing server purpose enabled in generated certs " msgstr "" "Application pour serveur de signature de code activée dans les certificats " "générés " #: src/ca-cli-callbacks.c:1510 msgid "Email protection purpose enabled in generated certs " msgstr "" "Application pour protection de courriel activée dans les certificats " "générés " #: src/ca-cli-callbacks.c:1511 msgid "OCSP signing purpose enabled in generated certs " msgstr "" "Application pour la signature OCSP activée dans les certificats " "générés " #: src/ca-cli-callbacks.c:1512 msgid "Any purpose enabled in generated certs " msgstr "" "Toute application activée dans les certificats " "générés " #: src/ca-cli-callbacks.c:1526 #, c-format msgid "Showing policies of the following certificate:\n" msgstr "Affichage des stratégies du certificat suivant :\n" #: src/ca-cli-callbacks.c:1528 #, c-format msgid "" "\n" "Policies:\n" msgstr "" "\n" "Stratégies :\n" #: src/ca-cli-callbacks.c:1530 #, c-format msgid "Id.\tDescription\t\t\t\t\t\t\t\tValue\n" msgstr "Identifiant\tDescription\t\t\t\t\t\t\t\tValeur\n" #: src/ca-cli-callbacks.c:1556 msgid "The given policy id is not valid" msgstr "L'identifiant de stratégie fourni est incorrect" #: src/ca-cli-callbacks.c:1568 #, fuzzy, c-format msgid "" "You are about to assign to the policy\n" "'%s' the new value '%s'." msgstr "" "Vous êtes sur le point d'assigner à la stratégie '%s'\n" "la nouvelle valeur '%d' ." #: src/ca-cli-callbacks.c:1572 src/ca-cli-callbacks.c:1616 msgid "Are you sure? Yes/[No] : " msgstr "" #: src/ca-cli-callbacks.c:1577 #, c-format msgid "Policy set correctly to '%s'.\n" msgstr "" #: src/ca-cli-callbacks.c:1591 #, c-format msgid "gnoMint-cli current preferences:\n" msgstr "" #: src/ca-cli-callbacks.c:1593 #, c-format msgid "Id.\tName\t\t\tValue\n" msgstr "" #: src/ca-cli-callbacks.c:1594 #, c-format msgid "0\tGnome keyring support\t%d\n" msgstr "" #: src/ca-cli-callbacks.c:1606 msgid "The given preference id is not valid" msgstr "" #: src/ca-cli-callbacks.c:1612 #, c-format msgid "" "You are about to assign to the preference 'Gnome keyring support' the new " "value '%d'." msgstr "" "Vous êtes sur le point d'assigner la nouvelle valeur '%d' à la préférence " "'Prise en charge de gnome-keyring'." #: src/ca-cli-callbacks.c:1634 #, c-format msgid "" "%s version %s\n" "%s\n" msgstr "" #: src/ca-cli-callbacks.c:1635 #, c-format msgid "" "\n" "Authors:\n" "%s\n" "\n" msgstr "" #: src/ca-cli-callbacks.c:1636 src/ca-cli-callbacks.c:1637 src/main.c:742 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Ahmed https://launchpad.net/~ahmed-baizid\n" " Bernard Opic https://launchpad.net/~cpio\n" " David Marín https://launchpad.net/~davefx\n" " gnuckx https://launchpad.net/~gnuckx\n" " loquehumaine https://launchpad.net/~loquehumaine" #: src/ca-cli-callbacks.c:1637 #, c-format msgid "" "Translators:\n" "%s\n" msgstr "" #: src/ca-cli-callbacks.c:1644 msgid "" "THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY\n" "APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT\n" "HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY\n" "OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,\n" "THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n" "PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM\n" "IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF\n" "ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n" "\n" "For more information about warranty, see section 15 onwards of the GNU\n" "General Public License. You should have received a copy of the GNU General\n" "Public License along with this program. If not, see\n" ".\n" "\n" msgstr "" #: src/ca-cli-callbacks.c:1662 msgid "" "This program is free software: you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation, either version 3 of the License, or\n" "(at your option) any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program. If not, see .\n" "\n" msgstr "" #: src/ca-cli-callbacks.c:1677 #, fuzzy, c-format msgid "%s version %s \"%s\"\n" msgstr "" "\n" "\n" "%s version %s\n" "%s\n" "\n" #: src/ca-cli-callbacks.c:1686 #, c-format msgid "Available commands:\n" msgstr "Commandes disponibles :\n" #: src/ca-cli-callbacks.c:1687 #, c-format msgid "===================\n" msgstr "===================\n" #: src/ca-cli-callbacks.c:1697 #, c-format msgid "Exiting gnomint-cli...\n" msgstr "" #: src/ca-cli-callbacks.c:1738 #, fuzzy msgid "The given CA id is not valid" msgstr "" "L'identifiant de Requête de Signature de Certificat fourni est incorrect" #: src/ca-cli-callbacks.c:1750 msgid "Certificate type must be 'web' or 'email'" msgstr "" #: src/ca-cli-callbacks.c:1756 msgid "Server name cannot be empty" msgstr "" #: src/ca-cli-callbacks.c:1760 #, fuzzy, c-format msgid "Creating %s certificate for: %s\n" msgstr "Création du certificat racine de l'Autorité de Certification" #: src/ca-cli-callbacks.c:1761 #, fuzzy msgid "web server" msgstr "Serveur Web TLS" #: src/ca-cli-callbacks.c:1761 #, fuzzy msgid "email server" msgstr "Serveur Web TLS" #: src/ca-cli-callbacks.c:1837 #, fuzzy, c-format msgid "Error: Key generation failed: %s\n" msgstr "La génération de la clé a échoué" #: src/ca-cli-callbacks.c:1845 #, fuzzy, c-format msgid "Error: CSR generation failed: %s\n" msgstr "La génération de la Requête de Signature de Certificat a échouée" #: src/ca-cli-callbacks.c:1854 #, c-format msgid "Error: Failed to parse generated CSR\n" msgstr "" #: src/ca-cli-callbacks.c:1865 #, fuzzy, c-format msgid "Error: Failed to save CSR: %s\n" msgstr "L'initialisation a échoué : %s\n" #: src/ca-cli-callbacks.c:1879 msgid "CSR created with ID: %" msgstr "" #: src/ca-cli-callbacks.c:1903 #, fuzzy, c-format msgid "Error: Failed to sign certificate: %s\n" msgstr "Erreur pendant la signature du certificat" #: src/ca-cli-callbacks.c:1910 #, fuzzy, c-format msgid "Certificate generated successfully for: %s\n" msgstr "Certificat exporté avec succès." #: src/ca-cli-callbacks.c:1911 #, fuzzy, c-format msgid "Certificate type: %s\n" msgstr "Utilisations du certificat :\n" #: src/ca-cli-callbacks.c:1911 #, fuzzy msgid "Web Server" msgstr "Serveur Web TLS" #: src/ca-cli-callbacks.c:1911 msgid "Email Server" msgstr "" #: src/ca-cli-callbacks.c:1925 #, fuzzy msgid "Usage: renewcert " msgstr "showcert " #: src/ca-cli-callbacks.c:1930 src/ca-cli-callbacks.c:1968 #, fuzzy msgid "The given certificate id is not valid" msgstr "L'identifiant de certificat fourni est incorrect" #: src/ca-cli-callbacks.c:1941 msgid "" "gnoMint will issue a new certificate with the same subject and SAN as this " "one, signed by the same CA, with a fresh keypair. The old certificate stays " "in place." msgstr "" #: src/ca-cli-callbacks.c:1944 #, fuzzy msgid "Renew? [Yes]/No " msgstr "Êtes-vous sur ? [Oui]/Non " #: src/ca-cli-callbacks.c:1955 #, fuzzy msgid "Certificate renewed. New certificate id: %" msgstr "La génération du certificat a échoué" #: src/ca-cli-callbacks.c:1963 #, fuzzy msgid "Usage: exportchain " msgstr "extractcertpkey " #: src/ca-cli-callbacks.c:1974 msgid "Cannot build chain PEM for that certificate." msgstr "" #: src/ca-cli-callbacks.c:1979 #, fuzzy msgid "Cannot write chain file." msgstr "L'initialisation a échoué : %s\n" #: src/ca-cli-callbacks.c:1985 #, c-format msgid "Full chain (leaf → root) written to %s\n" msgstr "" #: src/ca-cli-callbacks.c:1992 msgid "Usage: revokemany [cert-id ...]" msgstr "" #: src/ca-cli-callbacks.c:2008 #, fuzzy, c-format msgid "%d certificate revoked.\n" msgid_plural "%d certificates revoked.\n" msgstr[0] "Certificat révoqué.\n" msgstr[1] "Certificat révoqué.\n" #: src/ca-cli-callbacks.c:2016 msgid "Usage: deletemany [csr-id ...]" msgstr "" #: src/ca-cli-callbacks.c:2032 #, c-format msgid "%d CSR deleted.\n" msgid_plural "%d CSRs deleted.\n" msgstr[0] "" msgstr[1] "" #: src/ca-cli-callbacks.c:2092 msgid "Usage: search " msgstr "" #: src/ca-cli-callbacks.c:2099 #, c-format msgid "Matches (id\tserial\tsubject):\n" msgstr "" #: src/ca-cli-callbacks.c:2102 #, c-format msgid "%d match.\n" msgid_plural "%d matches.\n" msgstr[0] "" msgstr[1] "" #: src/ca-cli-callbacks.c:2126 #, fuzzy, c-format msgid "'%s' is not a certificate id in this database." msgstr "_Ouvrir une base de données de certificats" #: src/ca-cli-callbacks.c:2134 #, c-format msgid "Cannot read PEM for cert id %s." msgstr "" #: src/ca-cli-callbacks.c:2152 msgid "Usage: diff " msgstr "" #: src/ca-cli-callbacks.c:2168 msgid "Field" msgstr "" #: src/ca-cli-callbacks.c:2181 #, c-format msgid "" "\n" "%d field differs.\n" msgid_plural "" "\n" "%d fields differ.\n" msgstr[0] "" msgstr[1] "" #: src/ca_creation.c:55 src/csr_creation.c:57 msgid "Generating new RSA key pair" msgstr "Génération d'une nouvelle paire de clés RSA" #: src/ca_creation.c:64 src/ca_creation.c:88 src/ca_creation.c:109 #: src/ca_creation.c:128 src/csr_creation.c:66 src/csr_creation.c:87 #: src/csr_creation.c:104 src/csr_creation.c:121 msgid "Key generation failed" msgstr "La génération de la clé a échoué" #: src/ca_creation.c:78 src/csr_creation.c:79 msgid "Generating new DSA key pair" msgstr "Génération d'une nouvelle paire de clés DSA" #: src/ca_creation.c:101 src/csr_creation.c:97 #, fuzzy msgid "Generating new ECDSA key pair" msgstr "Génération d'une nouvelle paire de clés DSA" #: src/ca_creation.c:120 src/csr_creation.c:114 #, fuzzy msgid "Generating new Ed25519 key pair" msgstr "Génération d'une nouvelle paire de clés RSA" #: src/ca_creation.c:139 msgid "Generating self-signed CA-Root cert" msgstr "Génération d'un certificat racine auto-signé" #: src/ca_creation.c:147 msgid "Certificate generation failed" msgstr "La génération du certificat a échoué" #: src/ca_creation.c:159 msgid "Creating CA database" msgstr "Création de la base de données de l'Autorité de Certification" #: src/ca_creation.c:168 msgid "CA database creation failed" msgstr "" "La création de la base de données de l'Autorité de Certification a échouée" #: src/ca_creation.c:180 msgid "CA generated successfully" msgstr "CA créé avec succès." #: src/ca_file.c:207 #, c-format msgid "Error opening filename '%s'" msgstr "Erreur pendant l'ouverture du fichier '%s'" #: src/ca_file.c:310 msgid "" "The selected database has been created with a newer version of gnoMint than " "the currently installed." msgstr "" #: src/ca_file.c:1221 msgid "Cannot find last assigned serial number" msgstr "" #: src/ca_file.c:1410 msgid "Cannot find parent CA in database" msgstr "" #: src/ca_file.c:1600 msgid "" "This certificate already exists in the database: cannot insert it twice." msgstr "" #: src/ca_file.c:2044 msgid "" "The given file contains a valid private key. However, it has not been " "imported to the database because it doesn't match any key-less certificate " "or certificate request in the database." msgstr "" #: src/ca_file.c:2047 msgid "" "The given file contains a valid private key. However, it has not been " "imported to the database because it doesn't match any key-less certificate " "in the database." msgstr "" #: src/certificate_properties.c:151 msgid "" "This 32-bit build cannot represent dates after 2038-01-19, so it cannot " "distinguish a genuine date from a later one that overflowed. This value may " "be inaccurate." msgstr "" #: src/certificate_properties.c:383 #, fuzzy msgid "Unknown" msgstr "" #: src/certificate_properties.c:453 src/tls.c:1478 msgid "Certificate signing" msgstr "Signature de certificat" #: src/certificate_properties.c:457 msgid "Key encipherment only" msgstr "Chiffrer uniquement la clé" #: src/certificate_properties.c:459 msgid "Key decipherment only" msgstr "Déchiffrer uniquement la clé" #: src/certificate_properties.c:472 msgid "Version" msgstr "Version" #: src/certificate_properties.c:507 msgid "Serial Number" msgstr "Numéro de série" #: src/certificate_properties.c:522 src/certificate_properties.c:1262 msgid "Signature" msgstr "Signature" #: src/certificate_properties.c:525 src/certificate_properties.c:676 #: src/certificate_properties.c:679 src/certificate_properties.c:1228 msgid "Algorithm" msgstr "Algorithme" #: src/certificate_properties.c:529 src/certificate_properties.c:686 #: src/certificate_properties.c:726 src/certificate_properties.c:763 #: src/certificate_properties.c:1232 msgid "Parameters" msgstr "Paramètres" #: src/certificate_properties.c:529 src/certificate_properties.c:686 #: src/certificate_properties.c:763 src/certificate_properties.c:767 #: src/certificate_properties.c:781 src/certificate_properties.c:790 #: src/certificate_properties.c:1232 msgid "(unknown)" msgstr "" #: src/certificate_properties.c:563 msgid "Issuer" msgstr "Émetteur" #: src/certificate_properties.c:598 msgid "Validity" msgstr "Validité" #: src/certificate_properties.c:603 msgid "Not Before" msgstr "Pas avant" #: src/certificate_properties.c:610 msgid "Not After" msgstr "Pas après" #: src/certificate_properties.c:616 msgid "Note" msgstr "" #: src/certificate_properties.c:617 msgid "" "This 32-bit build cannot represent dates after 2038-01-19, so a value marked " "⚠ may be a later date that overflowed and is inaccurate." msgstr "" #: src/certificate_properties.c:673 msgid "Subject Public Key Info" msgstr "Informations sur la clé publique du titulaire" #: src/certificate_properties.c:690 msgid "RSA PublicKey" msgstr "Clé publique RSA" #: src/certificate_properties.c:702 msgid "Modulus" msgstr "Module" #: src/certificate_properties.c:710 msgid "Public Exponent" msgstr "Exposant public" #: src/certificate_properties.c:755 msgid "DSA PublicKey" msgstr "Clé publique DSA" #: src/certificate_properties.c:767 msgid "Subject Public Key" msgstr "Clé publique du titulaire" #: src/certificate_properties.c:781 msgid "Issuer Unique ID" msgstr "Identifiant unique d'émetteur" #: src/certificate_properties.c:790 msgid "Subject Unique ID" msgstr "Identifiant unique de titulaire" #: src/certificate_properties.c:813 src/certificate_properties.c:836 #: src/certificate_properties.c:945 src/certificate_properties.c:1058 #: src/certificate_properties.c:1085 src/certificate_properties.c:1124 #: src/certificate_properties.c:1182 src/certificate_properties.c:1457 #: src/san_manager.c:399 msgid "Value" msgstr "Valeur" #: src/certificate_properties.c:875 src/certificate_properties.c:1018 msgid "DNS Name" msgstr "Nom DNS" #: src/certificate_properties.c:882 src/certificate_properties.c:1025 msgid "RFC822 Name" msgstr "Nom RFC822" #: src/certificate_properties.c:905 src/certificate_properties.c:919 #: src/certificate_properties.c:927 msgid "IP" msgstr "IP" #: src/certificate_properties.c:936 src/certificate_properties.c:1049 msgid "Directory Name" msgstr "Nom de répertoire" #: src/certificate_properties.c:973 src/certificate_properties.c:1164 msgid "TRUE" msgstr "VRAI" #: src/certificate_properties.c:973 src/certificate_properties.c:1164 msgid "FALSE" msgstr "FAUX" #: src/certificate_properties.c:977 msgid "CA" msgstr "Autorité de Certification" #: src/certificate_properties.c:981 msgid "Path Length Constraint" msgstr "Contrainte de taille du chemin" #: src/certificate_properties.c:1154 msgid "Extensions" msgstr "Extentions" #: src/certificate_properties.c:1166 msgid "Critical" msgstr "Critique" #: src/certificate_properties.c:1199 msgid "Certificate" msgstr "Certificat" #: src/certificate_properties.c:1225 msgid "Signature Algorithm" msgstr "Algorithme de signature" #: src/certificate_properties.c:1446 msgid "Name" msgstr "Nom" #: src/certificate_properties.c:1477 src/tls.c:1494 msgid "TLS WWW Server" msgstr "Serveur WWW TLS" #: src/certificate_properties.c:1478 msgid "TLS WWW Client" msgstr "Client WWW TLS" #: src/certificate_properties.c:1484 msgid "Subject Directory Attributes" msgstr "Attributs de répertoire du titulaire" #: src/certificate_properties.c:1485 msgid "Subject Key Identifier" msgstr "Identifiant de la clé du titulaire" #: src/certificate_properties.c:1486 msgid "Key Usage" msgstr "Utilisation de la clé" #: src/certificate_properties.c:1487 msgid "Private Key Usage Period" msgstr "Période d'utilisation de la clé privée" #: src/certificate_properties.c:1489 msgid "Basic Constraints" msgstr "Contraintes de base" #: src/certificate_properties.c:1490 msgid "Name Constraints" msgstr "Contraintes de nom" #: src/certificate_properties.c:1491 msgid "CRL Distribution Points" msgstr "Points de distribution de Liste de Révocation de Certificats" #: src/certificate_properties.c:1492 msgid "Certificate Policies" msgstr "Stratégies de Certificat" #: src/certificate_properties.c:1493 msgid "Policy Mappings" msgstr "Correspondances de Stratégie" #: src/certificate_properties.c:1494 msgid "Authority Key Identifier" msgstr "Identifiant de la clé de l'autorité" #: src/certificate_properties.c:1495 msgid "Policy Constraints" msgstr "Contraintes de stratégie" #: src/certificate_properties.c:1496 msgid "Extended Key Usage" msgstr "Utilisation étendue de clé" #: src/certificate_properties.c:1497 msgid "Delta CRL Distribution Point" msgstr "Point de distribution de delta de Liste de Révocation de Certificats" #: src/certificate_properties.c:1498 msgid "Inhibit Any-Policy" msgstr "Inhiber toute stratégie" #: src/creation_process_window.c:69 msgid "CA creation process finished" msgstr "Le processus de création de l'Autorité de Certification est terminé" #: src/creation_process_window.c:193 msgid "Creation process cancelled" msgstr "La procédure de création a été annulée" #: src/creation_process_window.c:215 msgid "CSR creation process finished" msgstr "La création de la Requête de Signature de Certificat est terminée." #: src/creation_process_window.c:288 msgid "Creating Certificate Signing Request" msgstr "Création de Requête de Signature de Certificat" #: src/crl.c:101 msgid "CRL generated successfully" msgstr "La Liste de Révocation de Certificats a été générée avec succès" #: src/crl.c:146 msgid "Export Certificate Revocation List" msgstr "Exporter la liste des certificats révoqués" #: src/crl.c:180 src/crl.c:253 src/crl.c:299 msgid "There was an error while generating CRL." msgstr "Erreur pendant la génération de la Liste de Révocation de Certificats." #: src/crl.c:189 msgid "There was an error while writing CRL." msgstr "Erreur pendant l'écriture de la Liste de Révocation de Certificats." #: src/crl.c:201 src/crl.c:227 src/crl.c:268 src/crl.c:330 src/crl.c:351 msgid "There was an error while exporting CRL." msgstr "Erreur pendant l'exportation de la Liste de Révocation de Certificats." #: src/crl.c:238 src/crl.c:369 msgid "There was an error while getting revoked certificates." msgstr "Erreur pendant la récupération des certificats révoqués." #: src/csr_creation.c:131 msgid "Generating CSR" msgstr "Génération d'une Requête de Signature de Certificat" #: src/csr_creation.c:140 msgid "CSR generation failed" msgstr "La génération de la Requête de Signature de Certificat a échouée" #: src/csr_creation.c:151 msgid "Saving CSR in database" msgstr "" "Sauvegarde de la Requête de Signature de Certificat dans la base de données" #: src/csr_creation.c:169 msgid "CSR couldn't be saved" msgstr "La CSR n'a pu être sauvegardée" #: src/csr_creation.c:180 msgid "CSR generated successfully" msgstr "CSR générée avec succès." #: src/csr_properties.c:91 msgid "" "This Certificate Signing Request has its corresponding private key saved " "in a external file." msgstr "" #: src/dialog.c:123 #, c-format msgid "" "\n" "The password must have, at least, %d characters\n" msgstr "" #: src/dialog.c:581 msgid "To do. Feature not implemented yet." msgstr "A faire. Fonctionnalité non implémentée encore." #: src/export.c:43 src/export.c:48 src/export.c:53 msgid "There was an error while saving Diffie-Hellman parameters." msgstr "" #: src/export.c:79 src/export.c:138 src/export.c:146 src/export.c:200 #: src/export.c:210 src/export.c:304 src/export.c:341 src/export.c:376 #: src/export.c:384 src/export.c:424 src/export.c:433 src/export.c:474 msgid "There was an error while exporting private key." msgstr "Erreur pendant l'exportation de la clé privée." #: src/export.c:99 src/export.c:284 src/export.c:357 src/export.c:455 msgid "There was an error while getting private key." msgstr "Erreur pendant la récupération de la clé privée." #: src/export.c:110 src/export.c:248 msgid "There was an error while uncrypting private key." msgstr "" #: src/export.c:113 src/export.c:264 msgid "" "You need to supply a passphrase for protecting the exported private key, so " "nobody else but authorized people can use it. This passphrase will be asked " "by any application that will make use of the private key." msgstr "" "Vous devez fournir une phrase secrète pour protéger la clé privée exportée, " "de sorte que seules les personnes autorisées puissent l'utiliser. La phrase " "secrète sera demandée par toute application qui utilisera la clé privée." #: src/export.c:116 src/export.c:267 src/export.c:536 src/export.c:715 msgid "Insert passphrase (8 characters or more):" msgstr "Entrez la phrase secrète (au moins 8 caractères) :" #: src/export.c:116 src/export.c:267 src/export.c:536 src/export.c:715 msgid "Insert passphrase (confirm):" msgstr "Entrez la phrase secrète (pour confirmation) :" #: src/export.c:117 src/export.c:268 src/export.c:537 src/export.c:716 msgid "The introduced passphrases are distinct." msgstr "Les phrases secrètes saisies sont différentes." #: src/export.c:120 src/export.c:178 msgid "Operation cancelled." msgstr "" #: src/export.c:130 src/export.c:190 msgid "There was an error while password-protecting private key." msgstr "Erreur pendant la protection par mot de passe de la clé privée." #: src/export.c:368 src/export.c:415 msgid "There was an error while decrypting private key." msgstr "Erreur pendant le déchiffrage de la clé privée." #: src/export.c:513 src/export.c:747 msgid "Unsupported operation: you cannot generate a PKCS#12 for a CSR." msgstr "" #: src/export.c:521 src/export.c:530 src/export.c:695 src/export.c:731 msgid "" "There was an error while getting the certificate and private key from the " "internal database." msgstr "" "Erreur pendant la récupération du certificat et de la clé privée à partir de " "la base de données interne." #: src/export.c:533 src/export.c:712 msgid "" "You need to supply a passphrase for protecting the exported certificate, so " "nobody else but authorized people can use it. This passphrase will be asked " "by any application that will import the certificate." msgstr "" "Vous devez fournir une phrase secrète pour protéger le certificat exporté, " "de sorte que seules les personnes autorisées puissent l'utiliser. La phrase " "secrète sera demandée par toute application qui importera le certificat." #: src/export.c:555 src/export.c:629 msgid "There was an error while generating the PKCS#12 package." msgstr "Erreur pendant la génération du paquet au format PKCS#12." #: src/export.c:569 src/export.c:578 src/export.c:652 src/export.c:663 msgid "There was an error while exporting the certificate." msgstr "Erreur pendant l'exportation du certificat." #: src/gnomint-cli.c:59 msgid "- A Certification Authority manager" msgstr "" #: src/gnomint-cli.c:62 #, c-format msgid "Failed to initialize: %s\n" msgstr "L'initialisation a échoué : %s\n" #: src/import.c:171 #, fuzzy, c-format msgid "" "The whole selected file, or some of its elements, seems to\n" "be cyphered using a password or passphrase. For importing\n" "the file into gnoMint database, you must provide an \n" "appropriate password.\n" msgstr "" "Le fichier sélectionné, ou certains de ses éléments, semble être crypté à " "l'aide d'un mot de passe.\n" "\n" "Pour importer le fichier dans gnoMint database, vous devez fournir un mot de " "passe approprié." #: src/import.c:176 #, c-format msgid "Please introduce password for `%s'" msgstr "Veuillez indiquer le mot de passe pour '%s'" #: src/import.c:218 #, c-format msgid "" "Couldn't import the certificate request. \n" "The database returned this error: \n" "\n" "'%s'" msgstr "" "Erreur pendant l'importation de la Requête de Signature de Certificat. \n" "La base de données a retourné cette erreur : \n" "\n" "'%s'" #: src/import.c:298 msgid "" "The imported certificate expires after 2038-01-19, a date this 32-bit build " "cannot represent. Its stored expiration has been capped and may be " "inaccurate. The certificate itself is unchanged; open it on a 64-bit system " "to see the exact date." msgstr "" #: src/import.c:310 #, c-format msgid "" "Couldn't import the certificate. \n" "The database returned this error: \n" "\n" "'%s'" msgstr "" #: src/import.c:666 src/import.c:852 msgid "PKCS#8 crypted private key" msgstr "Clé privée chiffrée au format PKCS#8" #: src/import.c:677 src/import.c:862 msgid "The given password doesn't match the one used for crypting this part" msgstr "" #: src/import.c:771 msgid "Encrypted PKCS#12 bag" msgstr "Paquet chiffré au format PKCS#12" #: src/import.c:788 msgid "" "The given password doesn't match with the password used for encrypting this " "part." msgstr "" #: src/import.c:999 msgid "Couldn't find any supported format in the given file" msgstr "Le fichier donnée n'a pas aucun des formats supportés." #: src/import.c:1012 src/import.c:1363 #, c-format msgid "Couldn't open %s file. Check permissions." msgstr "" #: src/import.c:1039 #, c-format msgid "Couldn't recognize the file %s as a RSA or DSA private key." msgstr "" #: src/import.c:1055 #, c-format msgid "Private key for %s" msgstr "Clé privée pour %s" #: src/import.c:1057 #, c-format msgid "Private key %s" msgstr "Clé privée %s" #: src/import.c:1092 msgid "Problem while calling to openssl for decyphering private key." msgstr "" #: src/import.c:1100 #, c-format msgid "" "OpenSSL has returned the following error while trying to decypher the " "private key:\n" "\n" "%s" msgstr "" #: src/import.c:1211 msgid "There was a problem while importing the public CA root certificate" msgstr "" #: src/import.c:1225 msgid "CA Root certificate" msgstr "Certificat Racine de l'Autorité de Certification" #: src/import.c:1227 msgid "" "There was a problem while importing the private key corresponding to CA root " "certificate" msgstr "" #: src/import.c:1237 msgid "There was a problem while opening the directory certs/." msgstr "" #: src/import.c:1261 msgid "There was a problem while opening the directory newcerts/." msgstr "Erreur pendant l'ouverture du répertoire newcerts/." #: src/import.c:1288 msgid "There was a problem while opening the directory req." msgstr "Erreur pendant l'ouverture du répertoire req/." #: src/import.c:1314 msgid "There was a problem while opening the directory crl/." msgstr "Erreur pendant l'ouverture du répertoire crl/." #: src/import.c:1336 msgid "There was a problem while opening the directory keys/." msgstr "Erreur pendant l'ouverture du répertoire keys/." #: src/import.c:1394 msgid "Files in the directory don't belong to any supported CA format." msgstr "" #: src/main.c:567 #, c-format msgid "" "Problem when creating '%s' CA database:\n" "%s" msgstr "" #: src/main.c:577 #, c-format msgid "Problem when opening new '%s' CA database" msgstr "" #: src/main.c:591 msgid "Create new CA database" msgstr "Créer une nouvelle base de données d'Autorité de Certification" #: src/main.c:616 #, c-format msgid "Problem when opening '%s' CA database" msgstr "" "Problème pendant l'ouverture de la base de données de l'Autorité de " "Certification '%s'" #: src/main.c:630 msgid "Open CA database" msgstr "Ouvrir une base de données d'Autorité de Certification" #: src/main.c:662 msgid "Save CA database as..." msgstr "Sauvegarder la base de données de l'Autorité de Certification sous..." #: src/main.c:722 msgid "" "gnoMint is a program for creating and managing Certification Authorities, " "and their certificates" msgstr "" "gnoMint est un programme permettant de créer et de gérer des Autorités de " "Certification, et leurs certificats." #: src/main.c:725 msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU General Public License as published by the Free " "Software Foundation; either version 3 of the License, or (at your option) " "any later version.\n" "\n" "This program is distributed in the hope that it will be useful, but WITHOUT " "ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or " "FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for " "more details.\n" "\n" "You should have received a copy of the GNU General Public License along with " "this program; if not, write to the Free Software Foundation, Inc., 51 " "Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA." msgstr "" #: src/main.c:741 msgid "Code collaborators" msgstr "" #: src/new_ca_window.c:191 src/new_req_window.c:222 msgid "ECDSA curve:" msgstr "" #: src/new_ca_window.c:219 msgid "Please enter a Common Name (CN) for the CA." msgstr "" #: src/new_cert.c:197 msgid "" "The policy of this CA obligue the country field of the certificates to be " "the same as the one in the CA cert." msgstr "" #: src/new_cert.c:203 msgid "" "The policy of this CA obligue the state/province field of the certificates " "to be the same as the one in the CA cert." msgstr "" #: src/new_cert.c:209 msgid "" "The policy of this CA obligue the locality/city field of the certificates to " "be the same as the one in the CA cert." msgstr "" #: src/new_cert.c:215 msgid "" "The policy of this CA obligue the organization field of the certificates to " "be the same as the one in the CA cert." msgstr "" #: src/new_cert.c:221 msgid "" "The policy of this CA obligue the organizational unit field of the " "certificates to be the same as the one in the CA cert." msgstr "" #: src/new_cert.c:659 msgid "" "The expiration date of the new certificate is after the expiration date of " "the CA certificate.\n" "\n" "According to the current standards, this is not allowed. The new certificate " "will be created with the same expiration date as the CA certificate." msgstr "" #: src/new_cert.c:734 msgid "" "This system uses a 32-bit time_t and cannot represent dates after " "2038-01-19. The new certificate's expiration date has been clamped to that " "limit. To issue longer-lived certificates, run gnoMint on a 64-bit platform." msgstr "" #: src/new_cert.c:770 src/new_cert.c:809 src/new_cert.c:838 msgid "Error while signing CSR." msgstr "Erreur pendant la signature de la Requête de Signature de Certificat" #: src/new_req_window.c:374 #, fuzzy msgid "Please enter a Common Name (CN) for the certificate request." msgstr "Autorité de Certification" #: src/pkey_manage.c:124 #, c-format msgid "" "The file that holds private key for certificate '%s' is password-protected.\n" "\n" "Please, insert the password corresponding to this file." msgstr "" #: src/pkey_manage.c:163 #, c-format msgid "" "The file that holds private key for certificate\n" "'%s' is password-protected.\n" "\n" msgstr "" #: src/pkey_manage.c:211 src/pkey_manage.c:303 msgid "" "The given password doesn't match with the one used while crypting the file." msgstr "" #: src/pkey_manage.c:226 src/pkey_manage.c:315 src/pkey_manage.c:476 msgid "" "The file designated in database contains a private key, but it is not the " "private key corresponding to the certificate." msgstr "" #: src/pkey_manage.c:229 src/pkey_manage.c:318 src/pkey_manage.c:479 msgid "" "The file designated in database doesn't contain any recognized private key." msgstr "" #: src/pkey_manage.c:233 src/pkey_manage.c:500 msgid "The file designated in database couldn't be opened." msgstr "" #: src/pkey_manage.c:236 src/pkey_manage.c:503 msgid "The file designated in database doesn't exist." msgstr "" #: src/pkey_manage.c:360 #, fuzzy msgid "Select private key file" msgstr "Choisir un fichier de clé privée - gnoMint" #: src/pkey_manage.c:1069 src/pkey_manage.c:1164 msgid "The given password doesn't match the one used in the database" msgstr "" #: src/pkey_manage.c:1151 #, c-format msgid "" "This action requires using one or more private keys saved in the database.\n" msgstr "" #: src/pkey_manage.c:1152 msgid "Please insert the database password:" msgstr "Mot de passe de la base de données :" #: src/san_manager.c:71 msgid "Value cannot be empty" msgstr "" #: src/san_manager.c:82 msgid "Invalid DNS name. Use format: example.com or *.example.com" msgstr "" #: src/san_manager.c:93 msgid "Invalid IP address. Use IPv4 (e.g., 192.168.1.1) or IPv6 format" msgstr "" #: src/san_manager.c:103 msgid "Invalid email address. Use format: user@example.com" msgstr "" #: src/san_manager.c:113 msgid "Invalid URI. Must start with http://, https://, ftp://, or ldap://" msgstr "" #: src/san_manager.c:389 #, fuzzy msgid "Type" msgstr "\tType : %s\n" #: src/tls.c:198 src/tls.c:231 src/tls.c:276 src/tls.c:307 #, c-format msgid "Error initializing private key structure." msgstr "Erreur pendant l'initialisation de la clé privée." #: src/tls.c:204 src/tls.c:237 src/tls.c:281 src/tls.c:311 #, c-format msgid "Error creating private key: %d" msgstr "Erreur pendant la création de la clé privée : %d" #: src/tls.c:215 src/tls.c:248 src/tls.c:289 src/tls.c:321 src/tls.c:794 #: src/tls.c:1204 #, c-format msgid "Error exporting private key to PEM structure." msgstr "Erreur pendant l'exportation au format PEM de la clé privée." #: src/tls.c:656 #, c-format msgid "Error when initializing certificate structure" msgstr "Erreur pendant l'initialisation du certificat" #: src/tls.c:662 src/tls.c:956 #, c-format msgid "Error when setting certificate version" msgstr "Erreur pendant l'enregistrement de la version du certificat" #: src/tls.c:672 src/tls.c:969 #, c-format msgid "Error when setting certificate serial number" msgstr "Erreur pendant l'enregistrement du numéro de série du certificat" #: src/tls.c:681 src/tls.c:978 #, c-format msgid "Error when setting activation time" msgstr "Erreur pendant l'enregistrement de la date d'activation" #: src/tls.c:686 src/tls.c:986 #, c-format msgid "Error when setting expiration time" msgstr "Erreur pendant l'enregistrement de la date d'expiration" #: src/tls.c:740 src/tls.c:1040 #, c-format msgid "Error when setting basicConstraint extension" msgstr "Erreur pendant l'enregistrement de l'extension basicConstraint" #: src/tls.c:745 src/tls.c:1082 #, c-format msgid "Error when setting keyUsage extension" msgstr "Erreur pendant l'enregistrement de l'extension keyUsage" #: src/tls.c:756 src/tls.c:864 src/tls.c:1120 #, fuzzy, c-format msgid "Error when setting Subject Alternative Name extension" msgstr "Erreur pendant l'enregistrement de l'extension subjectKeyIdentifier" #: src/tls.c:768 src/tls.c:1056 #, c-format msgid "Error when setting subject key identifier extension" msgstr "Erreur pendant l'enregistrement de l'extension subjectKeyIdentifier" #: src/tls.c:772 src/tls.c:1030 #, c-format msgid "Error when setting authority key identifier extension" msgstr "" "Erreur pendant l'enregistrement de l'extension d'identifiant de la clé " "d'autorité" #: src/tls.c:782 #, c-format msgid "Error when signing self-signed certificate" msgstr "Erreur pendant la signature du certificat auto-signé" #: src/tls.c:813 #, fuzzy, c-format msgid "Error when initializing privkey structure" msgstr "" "Erreur pendant l'initialisation de la Requête de Signature de Certificat" #: src/tls.c:817 #, fuzzy, c-format msgid "Error when importing private key into privkey structure" msgstr "Erreur pendant l'exportation au format PEM de la clé privée." #: src/tls.c:821 #, c-format msgid "Error when initializing csr structure" msgstr "" "Erreur pendant l'initialisation de la Requête de Signature de Certificat" #: src/tls.c:825 #, c-format msgid "Error when setting csr version" msgstr "" "Erreur pendant l'enregistrement de la version de la Requête de Signature de " "Certificat" #: src/tls.c:869 #, c-format msgid "Error when signing self-signed csr" msgstr "" "Erreur pendant la signature de la Requête de Signature de Certificat auto-" "signée" #: src/tls.c:880 #, c-format msgid "Error exporting CSR to PEM structure." msgstr "" "Erreur pendant l'exportation au format PEM de la Requête de Signature de " "Certificat." #: src/tls.c:933 #, fuzzy, c-format msgid "Error when importing CA private key" msgstr "Erreur à la création de la clé privée!" #: src/tls.c:940 #, c-format msgid "Error when initializing crt structure" msgstr "Erreur pendant l'initialisation du certificat" #: src/tls.c:948 #, c-format msgid "Error when copying data from CSR to certificate structure" msgstr "" "Erreur pendant la copie des données de la Requête de Signature de Certificat " "dans le certificat" #: src/tls.c:1182 #, fuzzy, c-format msgid "Error when signing certificate: %s" msgstr "Erreur pendant la signature du certificat" #: src/tls.c:1482 msgid "Key encipher only" msgstr "Chiffrer uniquement la clé" #: src/tls.c:1484 msgid "Key decipher only" msgstr "Déchiffrer uniquement la clé" #: src/tls.c:1496 msgid "TLS WWW Client." msgstr "Client WWW TLS." #: src/wizard_window.c:239 #, fuzzy, c-format msgid "" "Key generation failed:\n" "%s" msgstr "La génération de la clé a échoué" #: src/wizard_window.c:249 #, fuzzy, c-format msgid "" "CSR generation failed:\n" "%s" msgstr "La génération de la Requête de Signature de Certificat a échouée" #: src/wizard_window.c:260 msgid "Failed to parse generated CSR." msgstr "" #: src/wizard_window.c:271 #, fuzzy, c-format msgid "" "Failed to save CSR:\n" "%s" msgstr "L'initialisation a échoué : %s\n" #: src/wizard_window.c:294 #, fuzzy, c-format msgid "" "Failed to sign certificate:\n" "%s" msgstr "L'initialisation a échoué : %s\n" #: src/wizard_window.c:297 #, fuzzy msgid "Certificate generated successfully!" msgstr "Certificat exporté avec succès." #: src/wizard_window.c:311 #, fuzzy msgid "Please enter a server name." msgstr "Veuillez entrer le mot de passe" #: src/wizard_window.c:318 #, fuzzy msgid "Please select a Certificate Authority." msgstr "Autorité de Certification" #: src/wizard_window.c:325 #, fuzzy msgid "Invalid Certificate Authority selected." msgstr "* Utilisable pour une Autorité de Certification.\n" #: src/wizard_window.c:412 #, fuzzy msgid "No Certificate Authority found. Please create a CA first." msgstr "* Utilisable pour une Autorité de Certification.\n" #~ msgid "%m/%d/%Y %R GMT" #~ msgstr "%d/%m/%Y %R GMT" #, c-format #~ msgid "CsrList ID|%s\t" #~ msgstr "CsrList ID|%s\t" #, c-format #~ msgid "CsrList ParentID|%s\t" #~ msgstr "CsrList ParentID|%s\t" #~ msgid "CsrList ParentID|\t" #~ msgstr "CsrList ParentID|\t" #, c-format #~ msgid "CsrList Subject|%-24s\t" #~ msgstr "CsrList Subject|%-24s\t" #~ msgid "CsrList PadIfSubject<16|\t" #~ msgstr "CsrList PadIfSubject<16|\t" #~ msgid "CsrList PadIfSubject<8|\t" #~ msgstr "CsrList PadIfSubject<8|\t" #~ msgid "CsrList PKeyInDB|Y\n" #~ msgstr "CsrList PKeyInDB|Y\n" #~ msgid "CsrList PKeyInDB|N\n" #~ msgstr "CsrList PKeyInDB|N\n" #~ msgid "Certificates" #~ msgstr "Certificats" #~ msgid "Certificate Signing Requests" #~ msgstr "Demandes en signature de certificat" #~ msgid "- A graphical Certification Authority manager" #~ msgstr "- Un gestionnaire graphique d'Autorité de Certification" #~ msgid "Shows the certificate properties window" #~ msgstr "Affiche les propriétés du certificat" #~ msgid "" #~ "Exports the certificate so it can be imported by any other application" #~ msgstr "" #~ "Exporte le certificat de sorte qu'il puisse être importé par d'autre " #~ "applications" #~ msgid "" #~ "Extracts the private key of the selected \n" #~ "certificate from the database to an \n" #~ "external file. This file must be provided \n" #~ "each time the certificate will be used" #~ msgstr "" #~ "Extrait la clé privée du certificat \n" #~ "sélectionné dans la base de donnée vers un \n" #~ "fichier externe. Ce fichier doit être fourni \n" #~ "chaque fois que le certificat est utilisé." #~ msgid "Shows the CSR properties window" #~ msgstr "Affiche les propriétés de la CSR" #~ msgid "Exports the CSR so it can be imported by any other application" #~ msgstr "" #~ "Exporte le CSR de sorte qu'il puisse être importé par d'autre applications" #~ msgid "" #~ "Extracts the private key of the selected \n" #~ "certificate from the database to an \n" #~ "external file. This file must be provided \n" #~ "each time the CSR will be used" #~ msgstr "" #~ "Extrait la clé privée du certificat \n" #~ "sélectionné dans la base de donnée vers un \n" #~ "fichier externe. Ce fichier doit être fourni \n" #~ "chaque fois que le CSR est utilisé." #~ msgid "Extract the saved private key to an external file or device" #~ msgstr "" #~ "Extraire la clé privée sauvegardée dans un fichier externe ou un " #~ "périphérique" #, fuzzy #~ msgid "Generate the current Certificate Revocation List" #~ msgstr "Exporter la liste des certificats révoqués" #, fuzzy #~ msgid "<b>Fingerprints</b>" #~ msgstr "Empreintes numériques" #, fuzzy #~ msgid "<b>Certificate subject</b>" #~ msgstr "Titulaire du certificat" #, fuzzy #~ msgid "<b>Certificate hierarchy</b>" #~ msgstr "Hiérarchie des certificats" #, fuzzy #~ msgid "<b>Certificate fields</b>" #~ msgstr "Champs du certificat" #, fuzzy #~ msgid "<b>Subject Alternative Names (SAN)</b>" #~ msgstr "Nom alternatif du titulaire" #, fuzzy #~ msgid "<big>CA Root certificate properties</big>" #~ msgstr "" #~ "Propriétés du certificat racine de l'Autorité de Certification\n" #, fuzzy #~ msgid "<big>CA properties</big>" #~ msgstr "Propriétés de l'Autorité de Certification\n" #, fuzzy #~ msgid "<big>New Certificate Properties</big>" #~ msgstr "Propriétés du nouveau certificat\n" #, fuzzy #~ msgid "<b>Certificate uses</b>" #~ msgstr "Utilisations du certificat" #, fuzzy #~ msgid "<b>Certificate purposes</b>" #~ msgstr "Applications du certificat" #, fuzzy #~ msgid "" #~ "<big><b>New Certificate Revocation List</b></big>" #~ msgstr "Nouvelle Liste de Révocation de Certificats" #, fuzzy #~ msgid "<big>Certificate Request Properties</big>" #~ msgstr "Propriétés de la Requête de Signature de Certificat\n" #~ msgid "Password protection\n" #~ msgstr "Protection par mot de passe\n" #~ msgid "Enter password again for confirmation:" #~ msgstr "Entrez encore une fois le mot de passe (pour confirmation) :" #~ msgid "" #~ "Protect CA database private keys\n" #~ "with password:" #~ msgstr "" #~ "Protéger les clés privées de la base\n" #~ "de données de l'Autorité de Certification\n" #~ "par un mot de passe :" #~ msgid "gtk-ok" #~ msgstr "gtk-ok" #, c-format #~ msgid "" #~ "The certificate will be generated with the following uses and purposes:\n" #~ msgstr "" #~ "Ce certificat sera généré avec les utilisations et applications " #~ "suivantes :\n" #~ msgid "" #~ "Please, insert the data corresponding to the subject of the new " #~ "certificate:\n" #~ msgstr "" #~ "Entrez les données qui correspondent au titulaire du nouveau certificat:\n" #~ msgid "" #~ "Please, select the Certification Authority that will create the new " #~ "certificate:" #~ msgstr "" #~ "Sélectionnez l'autorité de certification qui créera le nouveau certificat:" #~ msgid "Select the CA to sign this new certificate" #~ msgstr "Choisir le CA qui signera ce nouveau certificat" #~ msgid "Save CA database" #~ msgstr "Sauvegarder la base de données du CA" #~ msgid "Problem when saving new CA database" #~ msgstr "Erreur à la sauvegarde de la base de données du nouveau CA!" #~ msgid "_File" #~ msgstr "_Fichier" #~ msgid "_New CA" #~ msgstr "_Nouveau CA" #~ msgid "Field value" #~ msgstr "Valeur du champ" #~ msgid "Change Pass_word" #~ msgstr "Modifier le _mot de passe" gnomint-1.6.4/po/boldquot.sed0000644000000000000000000000033115212761270014677 0ustar00rootroots/"\([^"]*\)"/“\1”/g s/`\([^`']*\)'/‘\1’/g s/ '\([^`']*\)' / ‘\1’ /g s/ '\([^`']*\)'$/ ‘\1’/g s/^'\([^`']*\)' /‘\1’ /g s/“”/""/g s/“/“/g s/”/”/g s/‘/‘/g s/’/’/g gnomint-1.6.4/po/fr.gmo0000644000000000000000000013320115212761320013463 0ustar00rootrootwx' y''''' ' '''' '!()(B(%Z(((1(((')*<)!g) )+)!)+)"$*!G*.i*%*$**/+)3+']+++*+!+ ,)0, Z,{,*,!, ,, -#6-"Z-,}-#-"-+-".!@.b.u..N..#// / ///%/010 O0 Y0Be0A010141L15e111 11 1&12232O2 i2Bw22222B2#3*>3 i3u33333344 4,4;4P4!n444 444535H51\555555( 646 R6s6@x6866 7B7b74s7R778 8"898$N8s888888 88B8&:9/a999,99B98:DG:):@:::B;&S;'z;*;#;&;%<&><(e<(<'<<<A=U=l=~=+====>1>%P>-v>)>>9>-$?%R?%x?"?5?,?,$@&Q@x@"@%@3@*A"?AEbADAHAE6BD|BB B BB"C(C;C"XC{CC+CC CCDADZD`DzDDDD DCDE.EJE#fEEE EEEEF.F KFLlFF)FFQGOeGGG G GBG(H:HPHbHsHBHH HHII9%IB_II%I*IIJJ"J4J'NJ"vJ!JJBJ K K##K GKBTKK!KKK LL)L@L VLcLtL LLLL LLL!MRXRsR zR RRRRR R(S9SRS/lSS-S SSST T%TBTYTlTT T TTTTTBTB,UoUAtU_U3VJV&iV V(VJV5%W6[W:W4W0X'3X'[X/X/X3X(Y8@Y-yY6Y\Y9;Z%uZ'Z*Z!Z [B[#a[[[[[ [ [[[3[3 \ ?\UK\L\L\A;]}]J^_ 0_>_D_J_R_l_p__ _4___!`%`"5`$X`"}`````"a6aLa Ra]anaaaaa%a%a bb-b@b[blnbccc d d ?dKd[d ]dgd"md%dddXdI=eGeCe4f2Hf7{f(f&f?g.Cg<rg-g+g< h-Fh+thRh=h61i8hi)i'i;i,/j*\j8j)j'j4k%Gk#mk3k$k"k4 l%Bl#hl/l ll:l7mHm=Ymm#Inmnn nn0n8n3o?Do ooVoPo4Ip~pp%pBp q9qMq_q*zqGq1qFrOfrr,rorkspsts=ys~sF6t\}t0t uE,uruEu uu vv #v.v?v%Yv!v(vv$v w2(w[wrwwww'wwBx/]x8x/x,x#yZ)yHy2yzbzuz8z~z={B{)I{As{@{0{!'|+I|u|"~|||||\|<4}q}E}}B}"~Y7~~J~2~K" nx_/74W030,"+O,{'Ё!GZt#E# /"P3sU>3<*pa--+IY7Sۅ>/Bn;W7E7}C5R/febOedE} Ê Ί<؊,B Yz"Gċ )4NMg!܌ #2?^r6э..7/fS &*9 d+!bӏ64O/RU ]gY (GcwY%I#mCnٓH1O86є6?,\((ەX E P,Z^&*G8f,%̗& /<Met' ͘"٘#' H$d66%%+Kwo)*/5Z^{k)͜#ݜ#8%^s/Y $/6A x $!G*84cM"( 2:L^6y#)ԠK0J${%2ơ '? Q[%w#.ܢ + 6DScsOPң#B(hk0ԤI0O00S/60f4/̦2G/Gw+0+IH;4Ψ<n@AEK7KϪ X2Q ëЫ׫E߫6%\qoa`CT߮4ʯ   )%O+T75аI;]9<ӱTe7mq6 R ]i~"׳X4J$<5rP?oGN{ j=?|JI qfu%[pNY\ZrMF*~dy: nT9/QE@1&x!3C{+:R Y;,h-&r9|o60dp' + 3Kz4m>7c#iq)b}=^mBXV(T<LOJw%2DC^6WHt5O]K2fws,>_P_ ;8('G`IlsR!ncHBe\4kE1e.lg80SyA/D*-)QVaS"Zj$ z5 W$LUU.h7"# X k@[avgvxbAM~]} Fit<u` Revocation Activated on: %s Distinguished Name: Expires on: %s Key bitlength: %d Type: %s Policies: Error. OK. (unknown)* Any purpose disabled by policy * Any purpose disabled. * Any purpose enabled. * CRL signing use disabled by policy * CRL signing use disabled. * CRL signing use enabled. * Certification Authority use disabled by policy * Certification Authority use disabled. * Certification Authority use enabled. * Code Signing purpose disabled by policy * Code Signing purpose disabled. * Code Signing purpose enabled. * Data Encipherment use disabled by policy * Data Encipherment use enabled. * Digital Signature use disabled by policy * Digital Signature use disabled. * Digital Signature use enabled. * Email Protection purpose disabled by policy * Email Protection purpose disabled. * Email Protection purpose enabled. * Enable CRL Signing? [Yes]/No * Enable Certification Authority use? [Yes]/No * Enable Digital Signature use? [Yes]/No * Key Agreement use disabled by policy * Key Agreement use disabled. * Key Agreement use enabled. * Key Encipherment use disabled by policy * Key Encipherment use disabled. * Key Encipherment use enabled. * Non Repudiation use disabled by policy * Non Repudiation use disabled. * Non Repudiation use enabled. * OCSP Signing purpose disabled by policy * OCSP Signing purpose disabled. * OCSP Signing purpose enabled. * TLS Web Client purpose disabled by policy * TLS Web Client purpose disabled. * TLS Web Client purpose enabled. * TLS Web Server purpose disabled by policy * TLS Web Server purpose disabled. * TLS Web Server purpose enabled. * Time Stamping purpose disabled by policy * Time Stamping purpose disabled. * Time Stamping purpose enabled. CSR subjectEmmited byValidityExport the Certificate Signing Request to a public file, in PEM format.Export the saved private key to a PKCS#8 password-protected file. This file should only be accessed by the subject of the Certificate Signing Request.#Description#=================== Activated onActivationAdd CSRAdd _Certificate RequestAdd a new Certificate Signing RequestAdd an autosigned CAAdd autosigned CA certificateAlgorithmAny purposeAny purpose enabled in generated certs Are you sure you want to delete this Certificate Signing Request?Are you sure you want to revoke this certificate?Are you sure? Yes/[No] Are you sure? [Yes]/No Authority Key IdentifierAutomatic exporting of certificates for gnome-keyringAvailable commands: Basic ConstraintsBoth parts.CACA PolicyCA Root Certificate Common Name (CN):CA Root certificateCA creation process finishedCA database creation failedCA generated successfullyCA propertiesCA use enabled in generated certs CACNCAOCAOUCRL Distribution PointsCRL Sign use enabled in generated certs CRL generated successfullyCRL generated successfully into file '%s' CRL signingCSR couldn't be savedCSR creation process finishedCSR generated successfullyCSR generation failedCSR properties - gnoMintCertActivationDateCertExpirationDateCertSNCertificateCertificate DNCertificate PoliciesCertificate _Signing RequestsCertificate exported successfullyCertificate generation failedCertificate propertiesCertificate properties - gnoMintCertificate purposes: Certificate requests visibilityCertificate revoked. Certificate signed. Certificate signingCertificate signing request exported successfullyCertificate uses: Certificates in Database: Certification AuthorityChange CA password - gnoMintChange database pass_wordChange password for the current databaseChoose CA for signing the CSRChoose private key file. gnoMintCityClose current file and create a new database with given filenameClose current file and open the file with given filenameClose database and exit programCode signingCode signing server purpose enabled in generated certs Common Name (CN)Couldn't find any supported format in the given fileCouldn't import the certificate request. The database returned this error: '%s'CountryCountry:Create a new databaseCreate new CA databaseCreating CA databaseCreating Certificate Signing RequestCreating new CA - gnoMintCreation process cancelledCriticalCurrent opened file: %s DNS NameDSADSA PublicKeyData enciphermentData encipherment use enabled in generated certs Database password protection - gnoMintDelete the selected Certificate Signing RequestDelta CRL Distribution PointDetailsDiffie-Hellman parameters saved successfullyDigital signatureDigital signature use enabled in generated certs Directory NameDo you want to change any property of the new certificate? Yes/[No] Do you want to change anything? Yes/[No] Don't inherit any fields from existing Certification AuthoritiesE_xportEmail protectionEmail protection purpose enabled in generated certs Enable Code Signing purpose? [Yes]/No Enable Data Encipherment use? [Yes]/No Enable Email Protection purpose? [Yes]/No Enable Key Agreement use? [Yes]/No Enable Key Encipherment use? [Yes]/No Enable Non Repudiation use? [Yes]/No Enable OCSP Signing purpose? [Yes]/No Enable TLS Web Client purpose? [Yes]/No Enable TLS Web Server purpose? [Yes]/No Enable Time Stamping purpose? [Yes]/No Enable any purpose? [Yes]/No Encrypted PKCS#12 bagEnter bitlength for the key (it must be a whole multiple of 1024)Enter common name (CN)Enter country (C)Enter locality or city (L)Enter new password again for confirmation:Enter organization (O)Enter organizational unit (OU)Enter password - gnoMintEnter state or province (ST)Error creating private key: %dError exporting CSR to PEM structure.Error exporting private key to PEM structure.Error initializing private key structure.Error opening filename '%s'Error when copying data from CSR to certificate structureError when initializing certificate structureError when initializing crt structureError when initializing csr structureError when setting activation timeError when setting authority key identifier extensionError when setting basicConstraint extensionError when setting certificate serial numberError when setting certificate versionError when setting csr versionError when setting expiration timeError when setting keyUsage extensionError when setting subject key identifier extensionError when signing self-signed certificateError when signing self-signed csrError while changing database password. The operation was cancelled.Error while changing database password. The operation was cancelled.Error while establishing database password. The operation was cancelled.Error while removing database password. The operation was cancelled.Error while removing database password. The operation was cancelled.Error while signing CSR.ExpirationExpires onExport CSR - gnoMintExport Certificate Revocation ListExport certificateExport certificate - gnoMintExport certificate signing requestExport crypted private keyExport optionsExport whole certificate in PKCS#12 packageExtended Key UsageExtensionsExtrac_t private keyExtract Private KeyExtract the private key of the selected item into a external fileFALSEFailed to initialize: %s File '%s' opened GeneralGeneral Preferences - gnoMintGenerate D_H parameters...Generate _CRLGenerate a new DH-parameter set, saving it into the file Generating CSRGenerating new DSA key pairGenerating new RSA key pairGenerating self-signed CA-Root certHours between CRL updates:IPIP AddressId. Description Value Import a single file.Import a whole directory.Import selection - gnoMintImport the file with the given name Incorrect number of parameters. Inherit fields according to selected Certification Authority and its policy.Inhibit Any-PolicyInsert passphrase (8 characters or more):Insert passphrase (confirm):Introduce number of months before expiration of the new certificate (0 to cancel)Introduce number of months before expiration of the new certification authorityIssuerIssuer Unique IDKey UsageKey agreementKey agreement use enabled in generated certs Key decipher onlyKey decipherment onlyKey encipher onlyKey enciphermentKey encipherment onlyKey encipherment use enabled in generated certs Key generation failedKey pair List the CSRs in databaseMD5 fingerprintMD5FINGERPRINTManage X.509 certificates and CAs, easily and graphicallyMaximum number of hours between CRL updates ModulusMonths before certificate expiration:Months before root certificate expiration:NameName ConstraintsNew CA - gnoMintNew CRL - gnoMintNew Certificate - gnoMintNew Diffie-Hellman parameters - gnoMintNew certificate Common Name (CN):New certificate request - gnoMintNon repudiationNon reputation use enabled in generated certs Not AfterNot BeforeNumber of certificates in file: %d OCSP signingOCSP signing purpose enabled in generated certs Only the private key (crypted).Only the private key (uncrypted).Only the pu_blic part.Open CA databaseOpen _recentsOpen an existing databaseOpening database %s...Operation cancelled. OrganizationOrganization (O)Organization Unit:Organization:Organizational Unit (OU)Organizational unitPKCS#8 crypted private keyParametersPassword (confirm):Password changed successfullyPassword established successfullyPassword protectPassword removed successfullyPassword:Path Length ConstraintPlease enter data corresponding to subject of the Certificate Signing Request: Please enter data corresponding to subject of the new Certification Authority: Please insert the database password:Please introduce password for `%s'Please, choose the file:Please, choose which part of the saved Certificate Signing Request you want to export:Please, enter current password:Please, enter new password:Please, enter the prime size, in bits:Please, insert the current database password (Empty to cancel): Please, select the CA for which a Certificate Revocation List is going to be created:Policy ConstraintsPolicy MappingsPrivate Key Usage PeriodPrivate key %sPrivate key bit length:Private key exported successfullyPrivate key extracted successfully into file '%s' Private key for %sPrivate key type:Problem when importing '%s' fileProblem when opening '%s' CA databasePublic ExponentRFC822 NameRSA PublicKeyRemember this password during this gnoMint sessionRevo_keRevocationRevokeRevoked certificates visibilityRoot certificate propSHA1FINGERPRINTSave CA database as...Save Diffie-Hellman parametersSave the current file with a different filenameSaving CSR in databaseSelect PEM file to importSelect directory to importSerialSerial NumberSerial numberShow (this) help messageShow CA policyShow about messageShow distribution informationShow properties of the given CSRShow properties of the given certificateShow version informationShow warranty informationShowing policies of the following certificate: SignSign the selected Certificate Signing RequestSignatureSignature AlgorithmState or Province nameSubjectSubject Alternative NameSubject Directory AttributesSubject Key IdentifierSubject Public KeySubject Public Key InfoSubject Unique IDSubject: Syntax: %s TLS WWW ClientTLS WWW Client.TLS WWW ServerTLS Web clientTLS web client purpose enabled in generated certs TLS web server purpose enabled in generated certs TRUEThe bit-length of the prime number must be whole multiple of 1024The current password you have entered doesn't match with the actual current database password.The file already exists, so it will be overwritten.The given CSR id. is not validThe given certificate id. is not validThe given policy id is not validThe introduced passphrases are distinct.The new certificate will be created with the following uses and purposes: There was a problem while opening the directory crl/.There was a problem while opening the directory keys/.There was a problem while opening the directory newcerts/.There was a problem while opening the directory req.There was an error while decrypting private key.There was an error while exporting CRL.There was an error while exporting CSR.There was an error while exporting certificate.There was an error while exporting private key.There was an error while exporting the certificate.There was an error while generating CRL.There was an error while generating the PKCS#12 package.There was an error while getting private key.There was an error while getting revoked certificates.There was an error while getting the certificate and private key from the internal database.There was an error while password-protecting private key.There was an error while writing CRL.These are the provided CSR properties: These are the provided new CA properties: This certificate will be revoked.Time stampingTime stamping purpose enabled in generated certs To do. Feature not implemented yet.URIUnexpected errorUnpaired quotes ValidityValidity Validity: ValueVersionWhether the certificate requests should be visible.Whether the revoked certificates should be visible.Window sizeYou are about to assign to the preference 'Gnome keyring support' the new value '%d'.You are about to create a Certificate Signing Request with these properties.You are about to create a new Certification Authority with these properties.You are about to sign the following Certificate Signing Request: You need to supply a passphrase for protecting the exported certificate, so nobody else but authorized people can use it. This passphrase will be asked by any application that will import the certificate.You need to supply a passphrase for protecting the exported private key, so nobody else but authorized people can use it. This passphrase will be asked by any application that will make use of the private key._Add self-signed CA_Certificates_Edit_Help_Import_New certificate database_No_Open certificate database_Revoked Certificates_Save certificate database as..._Save filename in the database for automatic loading_Sign_Viewaddcsr [ca-id-for-inherit-fields]delete dhgen extractcertpkey extractcsrpkey gnoMintgnoMint X.509 CA ManagergnoMint is a program for creating and managing Certification Authorities, and their certificatesimportdir importfile labelmay differmust be the samenewdb opendb page 3revoke savedbas setpolicy setpreference showcert showcsr showpolicy sign translator-creditsProject-Id-Version: gnomint 0.4.0 Report-Msgid-Bugs-To: davefx@gmail.com PO-Revision-Date: 2010-06-01 20:04+0000 Last-Translator: David Marín Language-Team: French Language: fr MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2010-08-11 09:00+0000 X-Generator: Launchpad (build Unknown) Révocation Activé le : %s Nom distinct : Expire le : %s Taille en bits de la clé : %d Type : %s Stratégies : Erreur. OK. * Applicable à tout, par stratégie * Applicable à rien. * Applicable à tout. * Inutilisable pour la signature de Liste de Révocation de Certificats, par stratégie * Inutilisable pour la signature de Liste de Révocation de Certificats. * Utilisable pour la signature de Liste de Révocation de Certificats. * Inutilisable pour une Autorité de Certification, par stratégie * Inutilisable pour une Autorité de Certification. * Utilisable pour une Autorité de Certification. * Inapplicable à la signature de code, par stratégie * Inapplicable à la signature de code. * Applicable à la signature de code. * Inutilisable pour le chiffrement de données, par stratégie * Utilisable pour le chiffrement de données. * Inutilisable pour la signature numérique, par stratégie * Inutilisable pour la signature numérique. * Utilisable pour la signature numérique. * Inapplicable à la protection de courriel, par stratégie * Inapplicable à la protection de courriel. * Applicable à la protection de courriel. * Utilisable pour la signature de Liste de Révocation de Certificats ? [Oui]/Non * Utilisable pour une Autorité de Certification ? [Oui]/Non * Utilisable pour la signature numérique ? [Oui]/Non * Inutilisable pour l'agrément de clé, par stratégie * Inutilisable pour l'agrément de clé. * Utilisable pour l'agrément de clé. * Inutilisable pour le chiffrement de clé, par stratégie * Inutilisable pour le chiffrement de clé. * Utilisable pour le chiffrement de clé. * Inutilisable pour la non-répudiation, par stratégie * Inutilisable pour la non-répudiation. * Utilisable pour la non-répudiation. * Inapplicable à la signature OCSP, par stratégie * Inapplicable à la signature OCSP. * Applicable à la signature OCSP. * Inapplicable aux clients Web TLS, par stratégie * Inapplicable aux clients Web TLS. * Applicable aux clients Web TLS. * Inapplicable aux serveurs Web TLS, par stratégie * Inapplicable aux serveurs Web TLS. * Applicable aux serveurs Web TLS. * Inapplicable à l'horodatage, par stratégie * Inapplicable à l'horodatage. * Applicable à l'horodatage. Titulaire de la Requête de Signature de CertificatÉmis parValiditéExporter la CSR vers un fichier public, au format PEM.Exporter la clé privée sauvegardée vers un fichier protégé par mot de passe, au format PKCS#8. Ce fichier ne devrait être accessible que par le titulaire de la CSR.#Description#=================== Émis leActivationAjouter une CSRAjouter une Requête de Signature de _CertificatAjouter une nouvelle Requête de Signature de CertificatAjouter une Autorité de Certification auto-signéeAjouter un certificat d'Autorité de Certification auto-signéeAlgorithmeToute applicationToute application activée dans les certificats générés Êtes-vous sûr de vouloir supprimer cette Requête de Signature de Certificat ?Êtes-vous sûr de vouloir révoquer ce certificat ?Êtes-vous sûr ? Oui/[Non] Êtes-vous sur ? [Oui]/Non Identifiant de la clé de l'autoritéExportation automatique des certificats à partir de gnome-keyringCommandes disponibles : Contraintes de baseLes deux parties.Autorité de CertificationStratégie de l'Autorité de CertificationNom commun (CN) du certificat racine de l'Autorité de Certification :Certificat Racine de l'Autorité de CertificationLe processus de création de l'Autorité de Certification est terminéLa création de la base de données de l'Autorité de Certification a échouéeCA créé avec succès.Proptiétés de l'Autorité de CertificationUtilisable pour une Autorité de Certification dans les certificats générés CACNCAOCAOUPoints de distribution de Liste de Révocation de CertificatsUtilisable pour la signature de Liste de Révocation de Certificats dans les certificats générés La Liste de Révocation de Certificats a été générée avec succèsLa Liste de Révocation de Certificats a été générée avec succès dans le fichier '%s' Signature de Liste de Révocation de CertificatsLa CSR n'a pu être sauvegardéeLa création de la Requête de Signature de Certificat est terminée.CSR générée avec succès.La génération de la Requête de Signature de Certificat a échouéePropriétés de la CSR - gnoMintCertActivationDateCertExpirationDateCertSNCertificatDN du certificatStratégies de CertificatRequêtes de _Signature de CertificatCertificat exporté avec succès.La génération du certificat a échouéPropriétés du certificatPropriétés du certificat - gnoMintApplications du certificat : Affichage des Requêtes de Signature de CertificatCertificat révoqué. Certificat signé. Signature de certificatCSR exporté avec succès.Utilisations du certificat : Certificats dans la base de données : Autorité de CertificationModifier le mot de passe de l'Autorité de Certification - gnoMintModifier le mot de passe de la base de donnéesModifier le mot de passe de la base de données actuelleSélectionner la CA pour la signature de la CSRChoisir un fichier de clé privée - gnoMintVilleFermer le fichier et créer une nouvelle base de donnée avec le nom de fichier spécifiéFermer le fichier et ouvrir le fichier avec le nom de fichier spécifiéFermer la base de données et quitter le programmeSignature de codeApplication pour serveur de signature de code activée dans les certificats générés Nom commun (CN)Le fichier donnée n'a pas aucun des formats supportés.Erreur pendant l'importation de la Requête de Signature de Certificat. La base de données a retourné cette erreur : '%s'PaysPays :Création d'une nouvelle base de donnéesCréer une nouvelle base de données d'Autorité de CertificationCréation de la base de données de l'Autorité de CertificationCréation de Requête de Signature de CertificatCréation du nouveau CA - gnoMintLa procédure de création a été annuléeCritiqueFichier actuellement ouvert : %s Nom DNSDSAClé publique DSAChiffrement de donnéesUtilisable pour le chiffrement de données dans les certificats générés Protection de la base de données par mot de passe - gnoMintSupprimer le CSR sélectionnéPoint de distribution de delta de Liste de Révocation de CertificatsDétailsLes paramètres Diffie-Hellman ont été sauvegardés avec succèsSignature numériqueUtilisable pour la signature numérique dans les certificats générés Nom de répertoireSouhaitez-vous modifier une propriété du nouveau Certificat ? Yes/[Non] Souhaitez vous modifier quelque chose ? Oui/[Non] N'hériter d'aucun champ provenant d'Autorités de Certification existantesE_xporterProtection de courrielApplication pour protection de courriel activée dans les certificats générés Applicable à la signature de code ? [Oui]/Non Utilisable pour le chiffrement de données ? [Oui]/Non Applicable à la protection de courriel ? [Oui]/Non Utilisable pour l'agrément de clé ? [Oui]/Non Utilisable pour le chiffrement de clé ? [Oui]/Non Utilisable pour la non-répudiation ? [Oui]/Non Applicable à la signature OCSP ? [Oui]/Non Applicable aux clients Web TLS ? [Oui]/Non Applicable aux serveurs Web TLS ? [Oui]/Non Applicable à l'horodatage ? [Oui]/Non Applicable à tout ? [Oui]/Non Paquet chiffré au format PKCS#12Entrez la taille en bits de la clé (ce doit être un multiple de 1024)Entrez le nom commun (CN)Entrez la pays (C)Entrez la localité ou la ville (L)Entrez encore une fois le nouveau mot de passe (pour confirmation) :Entrez l'organisation (O)Entrez l'unité d'organisation (OU)Entrez le mot de passe - gnoMintEntrez l'état ou la province (ST)Erreur pendant la création de la clé privée : %dErreur pendant l'exportation au format PEM de la Requête de Signature de Certificat.Erreur pendant l'exportation au format PEM de la clé privée.Erreur pendant l'initialisation de la clé privée.Erreur pendant l'ouverture du fichier '%s'Erreur pendant la copie des données de la Requête de Signature de Certificat dans le certificatErreur pendant l'initialisation du certificatErreur pendant l'initialisation du certificatErreur pendant l'initialisation de la Requête de Signature de CertificatErreur pendant l'enregistrement de la date d'activationErreur pendant l'enregistrement de l'extension d'identifiant de la clé d'autoritéErreur pendant l'enregistrement de l'extension basicConstraintErreur pendant l'enregistrement du numéro de série du certificatErreur pendant l'enregistrement de la version du certificatErreur pendant l'enregistrement de la version de la Requête de Signature de CertificatErreur pendant l'enregistrement de la date d'expirationErreur pendant l'enregistrement de l'extension keyUsageErreur pendant l'enregistrement de l'extension subjectKeyIdentifierErreur pendant la signature du certificat auto-signéErreur pendant la signature de la Requête de Signature de Certificat auto-signéeErreur pendant la modification du mot de passe de la base de données. L'opération a été annulée.Erreur pendant la modification du mot de passe de la base de données. L'opération a été annulée.Erreur pendant l'affectationdu mot de passe de la base de données. L'opération a été annulée.Erreur pendant la suppression du mot de passe de la base de données. L'opération a été annulée.Erreur pendant la suppression du mot de passe de la base de données. L'opération a été annulée.Erreur pendant la signature de la Requête de Signature de CertificatExpirationExpire leExportation de Requête de Signature de Certificat - gnoMintExporter la liste des certificats révoquésExporter un certificatExporter le certificat - gnoMintExporter une CSRExporter la clé privée chiffréeOptions d'exportationExporter l'intégralité du certificat vers un paquet au format PKCS#12Utilisation étendue de cléExtentionsEx_traire la clé privéeExtraire la clé privéeExtraire la clé privée de l'élément sélectionné dans un fichier externeFAUXL'initialisation a échoué : %s Fichier '%s' ouvert GénéralPréférences générales - gnoMintGénérer les paramètres DH...Générer une Liste de Révocation de _CertificatsGénérer un nouveau jeu de paramètres DH, et le sauvegarder dans le fichier Génération d'une Requête de Signature de CertificatGénération d'une nouvelle paire de clés DSAGénération d'une nouvelle paire de clés RSAGénération d'un certificat racine auto-signéNombre d'heures entre les mises à jour de la Liste de Révocation de Certificats :IPAdresse IPIdentifiant Description Valeur Importer un seul fichier.Importer l'intégralité d'un répertoire.Importer la sélection - gnoMintImporter le fichier nommé Nombre de paramètres incorrect. Hériter des champs en fonction de l'Autorité de Certification sélectionnée et de sa stratégieInhiber toute stratégieEntrez la phrase secrète (au moins 8 caractères) :Entrez la phrase secrète (pour confirmation) :Donner le nombre de mois avant l'expiration du nouveau certificat (0 pour annuler)Entrez le nombre de mois avant l'expiration de la nouvelle Autorité de CertificationÉmetteurIdentifiant unique d'émetteurUtilisation de la cléAgrément de cléUtilisable pour l'agrément de clé dans les certificats générés Déchiffrer uniquement la cléDéchiffrer uniquement la cléChiffrer uniquement la cléChiffrement de cléChiffrer uniquement la cléUtilisable pour le chiffrement de clé dans les certificats générés La génération de la clé a échouéPaire de clés Lister les Requêtes de Signature de Certificats dans la base de donnéesEmpreinte numérique MD5MD5FINGERPRINTGérer des certificats et des CA X.509, facilement et graphiquementNombre d'heures maximum entre les mises à jours de Liste de Révocation de Certificats ModuleNombre de mois avant l'expiration du certificat :Nombre de mois avant l'expiration du certificat racine :NomContraintes de nomNouvelle Requête de Signature de Certificat - gnoMintNouvelle Liste de Révocation de Certificats - gnoMintNouveau certificat - gnoMintNouveau paramètres Diffie-Hellman - gnoMintNom commun du nouveau certificat (CN) :Nouvelle demande de certificat - gnoMintNon-répudiationUtilisable pour la non-répudiation dans les certificats générés Pas aprèsPas avantNombre de certificats dans le fichier : %d Signature OCSPApplication pour la signature OCSP activée dans les certificats générés Seulement la clé privée (chiffrée).Seulement la clé privée (non-chiffrée).Seulement la partie pu_blique.Ouvrir une base de données d'Autorité de CertificationOuvrir les certificats utilisés _récemmentOuvrir une base de données existanteOuverture de la base de données %s...Opération annulée. OrganisationOrganisation (O)Unité d'organisation :Organisation :Unité d'organisation (OU)Unité d'organisationClé privée chiffrée au format PKCS#8ParamètresMot de passe (pour confirmation) :Mot de passe modifié avec succès.Mot de passe mis en place avec succès.Protection par mot de passeMot de passe supprimé avec succès.Mot de passe :Contrainte de taille du cheminTitulaire de la Requête de Signature de Certificat : Titulaire de la nouvelle Autorité de Certification : Mot de passe de la base de données :Veuillez indiquer le mot de passe pour '%s'Veuillez choisir le fichier :Veuillez choisir la partie de la Requête de Signature de Certificat sauvegardée que vous souhaitez exporter :Veuillez entrer le mot de passe actuel :Veuillez entrer le nouveau mot de passe :Veuillez entrer la taille en bits du nombre premier :Veuillez entrer le mot de passe actuel de la base de données (ne rien mettre pour annuler) : Veuillez sélectionner l'Autorité de Certification pour laquelle une Liste de Révocation de Certificats va être crée :Contraintes de stratégieCorrespondances de StratégiePériode d'utilisation de la clé privéeClé privée %sTaille en bits de la clé privée :Clé privée exportée avec succèsClé privée extraite avec succès dans le fichier '%s' Clé privée pour %sType de clé privée :Problème pendant l'importation du fichier '%s'Problème pendant l'ouverture de la base de données de l'Autorité de Certification '%s'Exposant publicNom RFC822Clé publique RSASe souvenir du mot de passe pendant la session gnoMintRévo_querRévocationRévoquerAffichage des certificats révoquésPropriétés du certificat racineSHA1FINGERPRINTSauvegarder la base de données de l'Autorité de Certification sous...Sauvegarder les paramètres Diffie-HellmanSauvegarder le fichier actuel avec un nom différentSauvegarde de la Requête de Signature de Certificat dans la base de donnéesChoisir le fichier PEM à importerSélectionner le répertoire à importerNuméroNuméro de sérieNuméro de sérieAfficher ce message d'aideAfficher la stratégie de l'Autorité de CertificationAfficher le message « À propos »Afficher les informations de distributionAfficher les propriétés d'une Requête de Signature de Certificat donnéeAfficher les propriétés d'un certificat donnéAfficher les informations de versionAfficher les informations de garantieAffichage des stratégies du certificat suivant : SignerSigner la CSR sélectionnéeSignatureAlgorithme de signatureÉtat ou provinceTitulaireNom alternatif du titulaireAttributs de répertoire du titulaireIdentifiant de la clé du titulaireClé publique du titulaireInformations sur la clé publique du titulaireIdentifiant unique de titulaireTitulaire Syntaxe : %s Client WWW TLSClient WWW TLS.Serveur WWW TLSClient Web TLSApplicable aux clients Web TLS dans les certificats générés Applicable aux serveurs Web TLS dans les certificats générés VRAILa taille en bits du nombre premier doit être un multiple de 1024Le mot de passe que vous venez d'entrer ne correspond pas au mot de passe actuel de la base de données.Le fichier existe déjà, il va être remplacé.L'identifiant de Requête de Signature de Certificat fourni est incorrectL'identifiant de certificat fourni est incorrectL'identifiant de stratégie fourni est incorrectLes phrases secrètes saisies sont différentes.Le nouveau certificat sera créé avec les utilisations et applications suivants : Erreur pendant l'ouverture du répertoire crl/.Erreur pendant l'ouverture du répertoire keys/.Erreur pendant l'ouverture du répertoire newcerts/.Erreur pendant l'ouverture du répertoire req/.Erreur pendant le déchiffrage de la clé privée.Erreur pendant l'exportation de la Liste de Révocation de Certificats.Erreur pendant l'exportation de la Requête de Signature de Certificat.Erreur pendant l'exportation du certificat.Erreur pendant l'exportation de la clé privée.Erreur pendant l'exportation du certificat.Erreur pendant la génération de la Liste de Révocation de Certificats.Erreur pendant la génération du paquet au format PKCS#12.Erreur pendant la récupération de la clé privée.Erreur pendant la récupération des certificats révoqués.Erreur pendant la récupération du certificat et de la clé privée à partir de la base de données interne.Erreur pendant la protection par mot de passe de la clé privée.Erreur pendant l'écriture de la Liste de Révocation de Certificats.Voici les propriétés de la Requête de Signature de Certificat fournie : Voici les propriétés de la nouvelle Autorité de Certification fournie : Ce certificat sera révoqué.HorodotageApplication pour l'horodatage activée dans les certificats générés A faire. Fonctionnalité non implémentée encore.URIErreur inattendueGuillemet manquant ValiditéValidité Validité : ValeurVersionSi les Requêtes de Signature de Certificat doivent être affichées.Si les certificats révoqués doivent être affichés.Taille de fenêtreVous êtes sur le point d'assigner la nouvelle valeur '%d' à la préférence 'Prise en charge de gnome-keyring'.Vous êtes sur le point de créer une Requête de Signature de Certificat avec ces propriétés :Vous êtes sur le point de créer une nouvelle Autorité de Certification avec ces propriétés.Vous êtes sur le point de signer la Requête de Signature de Certificat suivante : Vous devez fournir une phrase secrète pour protéger le certificat exporté, de sorte que seules les personnes autorisées puissent l'utiliser. La phrase secrète sera demandée par toute application qui importera le certificat.Vous devez fournir une phrase secrète pour protéger la clé privée exportée, de sorte que seules les personnes autorisées puissent l'utiliser. La phrase secrète sera demandée par toute application qui utilisera la clé privée._Ajouter une Autorité de Certification auto-signée_Certificats_Éditer_Aide_Importer_Nouvelle base de données de certificats_Non_Ouvrir une base de données de certificatsCertificats _révoqués_Sauvegarder la base de données de certificats sous..._Sauvegarder la clé privée dans la base de données_Signer_Vueaddcsr [identifiant d'Autorité de Certification pour hériter de champs]delete dhgen extractcertpkey extractcsrpkey gnoMintGestionnaire d'Autorité de Certification X.509 gnoMintgnoMint est un programme permettant de créer et de gérer des Autorités de Certification, et leurs certificats.importdir importfile étiquettepeut varierdoit être identiquenewdb opendb page 3revoke savedbas setpolicy setpreference showcert showcsr showpolicy sign Launchpad Contributions: Ahmed https://launchpad.net/~ahmed-baizid Bernard Opic https://launchpad.net/~cpio David Marín https://launchpad.net/~davefx gnuckx https://launchpad.net/~gnuckx loquehumaine https://launchpad.net/~loquehumainegnomint-1.6.4/po/it.gmo0000644000000000000000000007050515212761320013477 0ustar00rootroot5 l 1EU dpr{ %(+!+:"f!)*!  BcvN#   A1Y5  &$Kg *    ") %L r  !   !&!=!]!s!1!! !!!"(("Q" o""@"8"# /#<#4M#)#;###$ $.9$2h$$$$&$&$/%8%F@%,%%!%)%@&S&'d&&&+&&&%'-=')k''9'-'%(%?("e(,(,(&( )"()%K)*q)")D)H*DM** ****"*+8++G+ s+~++^+A,H,N,`,},,, ,G,C-X-t--- ----..53. i.L... /&/O7/G/ ///00&0%50*[0000'0"0!101 @1 J1U1#q1 11!11 1 2V#2z22 222 2223.3B3!b3333 3O3$-4R4Vk444&4&555!M52o555&5&5*62@6 s6~6166666/7L7 f7t7777 7(7!8/;8-k8 8 88889 9$949C9AH9_9393:.R::D:=:Q#; u;$;&;X;';</c<*<1<s<Kd=!=z=MM> >>>> > >>3>3? J?LV?L?? @@,@G@ ]@4~@@%@@s@hBzB"BBB B BB BBB C7C6WC@C+C<C.8D+gD"D5DAD3.E0bEEEE^E(F#FG %G 1G">GaG |GGNG+GH*H?H8THHH H(H$HH I%I*I.I)3I ]IgIIIII'I-I)J(#(?6d  cs<Y Activated on: %s Expires on: %s Key bitlength: %d Serial number: %s Unique ID: %s Authors: %s Policies: Error. OK. %s version %s %s (unknown)* CRL signing use disabled by policy * Certification Authority use disabled. * Data Encipherment use disabled by policy * Data Encipherment use enabled. * Digital Signature use disabled by policy * Digital Signature use disabled. * Digital Signature use enabled. * Enable CRL Signing? [Yes]/No * Enable Digital Signature use? [Yes]/No * Key Encipherment use disabled by policy * Key Encipherment use disabled. * Key Encipherment use enabled. CSR subjectEmmited byValidityExport the Certificate Signing Request to a public file, in PEM format.Export the saved private key to a PKCS#8 password-protected file. This file should only be accessed by the subject of the Certificate Signing Request.#Description#=================== Activated onAdd CSRAdd _Certificate RequestAdd an autosigned CAAlgorithmAny purposeAre you sure you want to delete this Certificate Signing Request?Are you sure you want to revoke this certificate?Are you sure? Yes/[No] Are you sure? Yes/[No] : Are you sure? [Yes]/No Automatic exporting of certificates for gnome-keyringBoth parts.CACA PolicyCA Root Certificate Common Name (CN):CA database creation failedCA generated successfullyCA propertiesCACNCAOCAOUCRL generated successfully into file '%s' CRL signingCSR properties - gnoMintCertActivationDateCertExpirationDateCertSNCertificate DNCertificate Requests in Database: Certificate Signing Request deleted. Certificate Signing Request: Certificate _Signing RequestsCertificate exported successfullyCertificate generation failedCertificate propertiesCertificate properties - gnoMintCertificate purposes: Certificate requests visibilityCertificate revoked. Certificate signed. Certificate signing request exported successfullyCertificate uses: Certificate: Certificates in Database: Certification AuthorityChange database pass_wordChange password for the current databaseChoose CA for signing the CSRChoose private key file. gnoMintCityClose current file and create a new database with given filenameClose current file and open the file with given filenameClose database and exit programCode signingCommon Name (CN)Couldn't find any supported format in the given fileCouldn't open %s file. Check permissions.Couldn't recognize the file %s as a RSA or DSA private key.Country:Creating CA databaseCreating new CA - gnoMintCurrent opened file: %s Currently, the database IS password-protected.Currently, the database is not password-protected.DNS NameDSAData enciphermentDatabase password protection - gnoMintDelete the given CSR from the databaseDelete the selected Certificate Signing RequestDetailsDiffie-Hellman parameters created and saved successfully in file '%s' Diffie-Hellman parameters saved successfullyDigital signatureDirectory imported successfully. Do you want to change anything? Yes/[No] Don't inherit any fields from existing Certification AuthoritiesEmail protectionEnable Data Encipherment use? [Yes]/No Enable Key Encipherment use? [Yes]/No Enter new password again for confirmation:Enter password - gnoMintError creating private key: %dError exporting CSR to PEM structure.Error exporting private key to PEM structure.Error initializing private key structure.Error opening filename '%s'Error when copying data from CSR to certificate structureError when initializing certificate structureError when initializing crt structureError when initializing csr structureError when setting activation timeError when setting basicConstraint extensionError when setting certificate serial numberError when setting certificate versionError when setting csr versionError when setting expiration timeError when setting keyUsage extensionError when signing self-signed certificateError when signing self-signed csrError while changing database password. The operation was cancelled.Error while establishing database password. The operation was cancelled.Error while removing database password. The operation was cancelled.Exiting gnomint-cli... Expires onExport CSR - gnoMintExport certificateExport certificate - gnoMintExport certificate signing requestExport crypted private keyExport optionsExport whole certificate in PKCS#12 packageExtensionsExtrac_t private keyExtract Private KeyExtract the private key of the CSR with the given internal id and saves it into the given fileExtract the private key of the selected item into a external fileFALSEFile '%s' opened File imported successfully. GeneralGeneral Preferences - gnoMintGenerate D_H parameters...Generate _CRLGenerate a new CRL for the given CA, saving it into the file Generate a new DH-parameter set, saving it into the file Generating new DSA key pairGenerating new RSA key pairHours between CRL updates:IPIP AddressImport a single file.Import a whole directory.Import selection - gnoMintImport the file with the given name Import the given directory, as a OpenSSL-CA directoryIncorrect number of parameters. Inherit fields according to selected Certification Authority and its policy.Insert new password (confirm):Insert new password:Insert password (confirm):Insert password:Introduce number of months before expiration of the new certification authorityInvalid command. Try 'help' for getting a list of recognized commands. Key agreementKey decipher onlyKey enciphermentKey generation failedMD5 fingerprintMD5FINGERPRINTMonths before certificate expiration:Months before root certificate expiration:New CA - gnoMintNew CRL - gnoMintNew Certificate - gnoMintNew Diffie-Hellman parameters - gnoMintNew certificate Common Name (CN):New certificate request - gnoMintNon repudiationNot AfterNot BeforeNumber of CSRs in file: %d Number of certificates in file: %d OCSP signingOnly the private key (crypted).Only the private key (uncrypted).Only the pu_blic part.Open _recentsOpen an existing databaseOpenSSL has returned the following error while trying to decypher the private key: %sOpening database %s...Operation cancelled. OrganizationOrganization (O)Organization Unit:Organization:Organizational Unit (OU)Organizational unitPKCS#8 crypted private keyPassword (confirm):Password changed successfully. Password established successfullyPassword protectPassword removed successfullyPassword removed successfully. Password:Please enter data corresponding to subject of the new Certification Authority: Please insert the database password:Please, choose the file:Please, choose which part of the saved Certificate Signing Request you want to export:Please, enter current password:Please, enter new password:Please, enter the prime size, in bits:Private key %sPrivate key bit length:Private key exported successfullyPrivate key extracted successfully into file '%s' Private key for %sPrivate key type:Problem when importing the given file.Problem when opening '%s' CA database Problem when opening new '%s' CA database Remember this password during this gnoMint sessionRevocationRevokeRevoke the certificate with the given internal IDRevoked certificates visibilityRoot certificate propSHA1FINGERPRINTSave Diffie-Hellman parametersSave the current file with a different filenameSelect PEM file to importSerial numberShow (this) help messageShow about messageShow distribution informationShow program preferencesShow properties of the given CSRShow properties of the given certificateShow warranty informationShowing policies of the following certificate: Sign the selected Certificate Signing RequestSignatureStart a new CSR creation processState or Province nameSubject Public KeySubject Public Key InfoSubject Unique IDSyntax: %s TLS WWW Client.TLS Web clientTRUEThe bit-length of the prime number must be whole multiple of 1024The current password you have entered doesn't match with the actual current database password.The file already exists, so it will be overwritten.The file designated in database couldn't be opened.The file designated in database doesn't exist.The given CSR id. is not validThe given password doesn't match the one used for crypting this partThe given password doesn't match the one used in the databaseThe given password doesn't match with the password used for encrypting this part.The given policy id is not validThe given preference id is not validThe introduced passwords are distinct.There was a problem while importing the private key corresponding to CA root certificateThere was an error while exporting CSR.There was an error while exporting certificate.These are the provided new CA properties: This Certificate Signing Request will be deleted.This action requires using one or more private keys saved in the CA database. Please insert the database password.This action requires using one or more private keys saved in the database. This certificate will be revoked.This is free software, and you are welcome to redistribute it under certain conditions; type 'distribution' for details. This program comes with ABSOLUTELY NO WARRANTY; for details type 'warranty'. Time stampingTranslators: %s URIValidityValidity Validity: ValueWhether the certificate requests should be visible.Whether the revoked certificates should be visible.Window sizeYou are about to create a Certificate Signing Request with these properties.You are about to create a new Certification Authority with these properties._Add self-signed CA_Certificates_New certificate database_Open certificate database_Revoked Certificates_Save certificate database as..._Save filename in the database for automatic loadinggnoMintsetpreference translator-creditsProject-Id-Version: gnomint Report-Msgid-Bugs-To: davefx@gmail.com PO-Revision-Date: 2010-07-09 11:50+0000 Last-Translator: David Marín Language-Team: Italian Language: it MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2010-08-11 09:00+0000 X-Generator: Launchpad (build Unknown) Attivazione: %s Scadenza: %s Lungezza in bit della chiave: %d Numero di serie: %s ID unico: %s Autori: %s Politiche: Errore. OK. %s versione %s %s (sconosciuto)* Utilizzo della firma CRL disabilitato dalla politica * Utilizzo dell'autorità certificativa disabilitato. * Utilizzo della cifratura dei dati disabilitato dalla politica * Utilizzo della cifratura dati abilitato. * Utilizzo della firma digitale disabilitato dalla politica * Utilizzo della firma digitale disabilitato. * Utilizzo della firma digitale abilitato. * Abilitare la firma CRL? [Si]/No * Abilitare l'utilizzo della firma digitale? [Si]/No * Utilizzo della cifratura di chiave disabilitato dalla politica * Utilizzo della cifratura di chiave disabilitato. * Utilizzo della cifratura di chiave abilitato. Soggetto CSREmesso daValiditàEsporta la richiesta di firma di certificato (CSR) in un file pubblico, in formato PEM.Esporta la chiave privata salvata in un file PKCS#8 protetto da password. Questo file deve essere accessibile solamente da parte del soggetto della richiesta di firma di certificato (CSR).#Descrizione#=================== Attivato ilAggiungi CSRAggiungi Richiesta di _CertificatoAggiungi un CA autofirmatoAlgoritmoQualunque propositoConfermare la cancellazione di questa richiesta di firma di certificato (CSR)?Confermare la revoca di questo certificato?Confermare? Si/[No] Confermare? Si/[No] Confermare? [Si]/No Esportazione automatica di certificati per gnome-keyringEntrambe le parti.CAPolitica CACertificato radice CA Common Name (CN):Creazione del database di CA fallitaCA generato correttamenteProprietà CACACNCAOCAOUCRL generato correttamente nel file '%s' Firma CRLProprietà CSR - gnoMintCertActivationDateCertExpirationDateCertSNCertificato DNRichieste di certificato nel database: Richiesta di firma di certificato eliminata. Richiesta di firma di certificato (CSR): Richiesta di _firma di certificato (CSR)Certificato esportato correttamenteGenerazione del certificato fallitaPropietà dei CertificatiProprietà di certificato - gnoMintScopi del certificato: Visibilità de le richieste dei certificatiCertificato revocato. Certificato firmato. Richiesta di firma di certificato (CSR) esportata correttamenteIl certificato usa: Certificato: Certificati nel Database: Autorità di CertificazioneCambiare la pass_word del databaseCambiare la password per il database correnteScegliere CA per firmare il CSRScegliere un file con chiave privata. gnoMintLocalitàChiudere il file corrente e creare un nuovo database con il nome datoChiudere il file corrente ed aprire il file con il nome datoChiudi il database ed esci dal programmaFirmando CodiceNome comune (CN)Impossibile trovare un formato supportato nel file fornitoImpossibile aprire il file %s. Controllare i permessi.Impossibile riconoscere il file %s come una chiave privata RSA o DSA.Stato:Creazione del database di CACreazione di un nuovo CA - gnoMintFile aperto corrente: %s Attualmente il database IS è protetto da password.Attualmente il database non è protetto da passwordNome DNSDSACifratura dei datiProtezione password del database - gnoMintEliminare il CSR dato dal databaseCancellazione della richiesta di firma certificato (CSR) selezionataDettagliParametri Diffie-Hellman creati e salvati correttamente nel file '%s' Parametri Diffie-Hellman salvati correttamenteSignatura digitaleCartella importata correttamente. Apportare modifiche? Si/[No] Non ereditare nessun campo dalle esistenti autorità certificativeProtezione emailAbilitare l'utilizzo della cifratura dei dati? [Si]/No Abilitare l'utilizzo della cifratura di chiave? [Si]/No Inserire nuovamente la password per conferma:Inserire la password - gnoMintErrore nella creazione della chiave privata: %dErrore nell'esportazione del CSR nella struttura PEM.Errore nell'esportazione della chiave privata nella struttura PEM.Errore di inizializzazione della struttura di chiave privata.Errore nell'apertura del file '%s'Errore durante la copia dei dati dal CSR alla struttura del certificatoErrore durante l'inizializzazione della struttura del certificatoErrore durante l'inizializzazione della struttura del crtErrore nell'inizializzazione della struttura del csrErrore durante l'impostazione del tempo di attivazioneErrore durante l'impostazione dell'estensione basicConstraintErrore durante l'impostazione del numero di serie del certificatoErrore durante l'impostazione della versione del certificatoErrore nell'impostazione della versione del csrErrore durante l'impostazione del tempo di scadenzaErrore durante l'impostazione dell'estensione keyUsageErrore durante la firma del certificato autofirmatoErrore durante la firma del csr autofirmatoErrore durante la modifica della password del database. L'operazione è stata annullata.Errore nello stabilire la password del database. L'operazione è stata annullata.Errore durante la rimozione della password del database. L'operazione è stata annullata.In uscita da gnomint-cli... Scade ilEsporta CSR - gnoMintEsporta certificatoEsporta certificato - gnoMintEsporta la richiesta di firma di certificato (CSR)Esporta la chiave privata criptataEsporta le opzioniEsporta l'intero certificato nel pacchetto PKCS#12EstensioniEs_trarre chiave privataEstrai la chiave privataEstrarre la chiave privata del CSR con l'id interno dato e salvarlo nel file stabilitoEstrai la chiave privata dell'oggetto selezionato in un file esternoFALSOIl file '%s' è stato aperto File importato correttamente. GeneralePreferenze Generali - gnoMintGenera parametri D_H ...Genera _CRLGenera un nuovo CRL per il dato CA, salvandolo nel file Genera un nuovo insieme di parametri DH, salvandolo nel file Generazione di una nuova coppia di chiavi DSAGenerazione di una nuova coppia di chiavi RSAOre tra gli aggiornamenti CRL:IPIndirizzo IPImporta un singolo file.Importa una cartella completa.Importa la selezione - gnoMintImportare il file con il nome stabilito Importare la cartella stabilita, come una cartella OpenSSL-CANumero di parametri non corretto. Eredita i campi in accordo con l'autorità certificativa selezionata e la sua politica.Inserire la nuova password (conferma):Inserire la nuova password:Inserire la password (conferma):Inserire la password:Introdurre il numero di mesi mancanti alla scadenza della nuova autorità certificativaComando non valido. Digitare 'help' per ottenere una lista dei comandi riconosciuti. Accordo di chiaviSolo decifratura della chiaveCifratura chiaveGenerazione della chiave fallitaImpronta digitale MD5MD5FINGERPRINTMesi prima della scadenza del certificato:Mesi prima della scadenzza dei certificati di root:Nuovo CA - gnoMintNuovo CRL - gnoMintNuovo Certificato - gnoMintNuovo parametro Diffie-Hellman - gnoMintNuovo certificato Nome Comune (CN):Nuova richiesta di certificato - gnoMintNon rifiutatoNon dopoNon primaNumero di CSR nel file: %d Numero di certificati nel file: %d Firma OCSPSolo la chiave privata (criptata).Solo la chiave privata (non criptata).Solo la parte pu_bblica.Apri _recentiApri un database esistenteOpenSSL ha fornito il seguente errore mentre cercava di decifrare la chiave privata: %sDatabase %s in apertura...Operazione cancellata. OrganizzazioneOrganizzazione (O)Unità organizzativa:Organizzazione:Unità organizzativa (OU)Unità organizzativaChiave privata criptata PKCS#8Confermare la password:Password modificata correttamente. Password stabilita correttamentePassword protettaPassword rimossa correttamentePassword rimossa correttamente. Password:Si prega di inserire i dati corrispondenti al soggetto della nuova autorità certificativa: Si prega di inserire la password del database:Si prega di scegliere il file:Si prega di scegliere quale parte della richiesta di firma di certificato (CSR) salvata si vuole esportare:Si prega di inserire la password corrente:Si prega di inserire una nuova password:Si prega di inserire la dimensione primaria, in bit:Chiave privata %sLunghezza in bit della chiave privata:Chiave privata esportata correttamenteChiave privata estratta correttamente nel file '%s' Chiave privata per %sTipologia di chiave privata:Si è verificato un problema durante l'importazione del file fornito.Si è verificato un problema nell'apertura del database CA '%s' Si è verificato un problema nell'apertura del nuovo database CA '%s' Ricorda questa password durante la sessione gnoMintRevocaRevocaRevocare il certificato con l'ID interno datoVisibilità de i certificati revocatiSupporto di certificato rootSHA1FINGERPRINTSalva i parametri Diffie-HellmanSalvare il file corrente con un nome differenteSelezionare il file PEM da importareNumero di serieVisualizza (questo) messaggio di aiutoVisualizza il messaggio di AboutVisualizza le informazioni di distribuzioneVisualizza le preferenze di programmaVisualizza le proprietà del CSR stabilitoVisualizza le proprietà del certificato stabilitoVisualizza le informazioni di garanziaVisualizzazione delle politiche del seguente certificato: Firma la richiesta di firma del certificato selezionatoFirmaIniziare un nuovo processo di creazione CSRStato o ProvinciaChiave pubblica del soggettoInformazioni della chiave pubblica soggettoID univoco del soggettoSintassi: %s Client TLS WWWClient web TLSVEROLa lunghezza in bit del numero primo deve essere un multiplo intero di 1024La password attualmente inserita non corrisponde con la reale e corrente password del database.File già esistente, verrà quindi sovrascritto.Il file designato nel database non può essere aperto.Il file designato nel database non esiste.L'id. del CSR fornito non è validoLa password fornita non corrisponde a quella utilizzata per criptare questa parteLa password fornita non corrisponde a quella utilizzata nel databaseLa password fornita non corrisponde con la password utilizzata per criptare questa parte.La politica fornita non è validaLa preferenza fornita non è validaLe password introdotte sono diverse.Si è verificato un problema durante l'importazione della chiave privata corrispondente al certificato CA rootErrore durante l'esportazione del CSR.Errore durante l'esportazione del certificato.Queste sono le proprietà fornite dal nuovo CA: La richiesta di firma di certificato (CSR) sarà cancellata.Questa azione richiede l'utilizzo di una o più chiavi private salvate nel database di CA. Si prega di inserire la password del database.Questa azione richiede l'utilizzo di una o più chiavi private salvate nel database. Il certificato sarà revocato.Questo è software libero e siete invitati a ridistribuirlo rispettando determinate condizioni; digitare 'distribution' per i dettagli. Questo programma viene fornito SENZA ALCUNA GARANZIA; per informazioni digitare 'warranty'. Time stampingTraduttori: %s URIValiditàValidità Validità: ValoreSe le richieste dei certificati devono essere visibili.Se i certificati revocati dovrebbero essere visibili.Dimensione della finestraSi è in procinto di creare una richiesta di firma di certificato (CSR) con queste proprietà.Si è in procinto di creare una nuova autorità certificativa con queste proprietà._Aggiungi CA autofirmato_Certificati_Nuovo database di certificato_Apri il database di certificato_Certificati revocati_Salva il database di certificato come..._Salva il nome del file nel database per il caricamento automaticognoMintsetpreference Launchpad Contributions: David Marín https://launchpad.net/~davefx Federico Pontelli https://launchpad.net/~federico Jecko Development https://launchpad.net/~jecko Vincenzo Reale https://launchpad.net/~smart2128 gnuckx https://launchpad.net/~gnuckxgnomint-1.6.4/po/Rules-quot0000644000000000000000000000423315212761270014361 0ustar00rootroot# This file, Rules-quot, can be copied and used freely without restrictions. # Special Makefile rules for English message catalogs with quotation marks. DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot .SUFFIXES: .insert-header .po-update-en en@quot.po-create: $(MAKE) en@quot.po-update en@boldquot.po-create: $(MAKE) en@boldquot.po-update en@quot.po-update: en@quot.po-update-en en@boldquot.po-update: en@boldquot.po-update-en .insert-header.po-update-en: @lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \ if test "$(PACKAGE)" = "gettext-tools" && test "$(CROSS_COMPILING)" != "yes"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \ tmpdir=`pwd`; \ echo "$$lang:"; \ ll=`echo $$lang | sed -e 's/@.*//'`; \ LC_ALL=C; export LC_ALL; \ cd $(srcdir); \ if $(MSGINIT) $(MSGINIT_OPTIONS) -i $(DOMAIN).pot --no-translator -l $$lang -o - 2>/dev/null \ | $(SED) -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | \ { case `$(MSGFILTER) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-8] | 0.1[0-8].*) \ $(MSGFILTER) $(SED) -f `echo $$lang | sed -e 's/.*@//'`.sed \ ;; \ *) \ $(MSGFILTER) `echo $$lang | sed -e 's/.*@//'` \ ;; \ esac } 2>/dev/null > $$tmpdir/$$lang.new.po \ ; then \ if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ rm -f $$tmpdir/$$lang.new.po; \ else \ if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ :; \ else \ echo "creation of $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ exit 1; \ fi; \ fi; \ else \ echo "creation of $$lang.po failed!" 1>&2; \ rm -f $$tmpdir/$$lang.new.po; \ fi en@quot.insert-header: insert-header.sin sed -e '/^#/d' -e 's/HEADER/en@quot.header/g' $(srcdir)/insert-header.sin > en@quot.insert-header en@boldquot.insert-header: insert-header.sin sed -e '/^#/d' -e 's/HEADER/en@boldquot.header/g' $(srcdir)/insert-header.sin > en@boldquot.insert-header mostlyclean: mostlyclean-quot mostlyclean-quot: rm -f *.insert-header gnomint-1.6.4/po/it.po0000644000000000000000000036001315212761320013327 0ustar00rootroot# Italian translation for gnomint # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the gnomint package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: gnomint\n" "Report-Msgid-Bugs-To: davefx@gmail.com\n" "POT-Creation-Date: 2026-06-12 10:43+0000\n" "PO-Revision-Date: 2010-07-09 11:50+0000\n" "Last-Translator: David Marín \n" "Language-Team: Italian \n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-08-11 09:00+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: gconf/org.gnome.gnomint.gschema.xml:7 msgid "Window size" msgstr "Dimensione della finestra" #: gconf/org.gnome.gnomint.gschema.xml:8 #, fuzzy msgid "" "The (width,length) size gnoMint should take when started. This cannot be " "smaller than (320,200)." msgstr "" "La dimensione (width,length) che gnoMint dovrebbe avere all'avvio. Non può " "essere minore di (320,200)." #: gconf/org.gnome.gnomint.gschema.xml:16 msgid "Revoked certificates visibility" msgstr "Visibilità de i certificati revocati" #: gconf/org.gnome.gnomint.gschema.xml:17 msgid "Whether the revoked certificates should be visible." msgstr "Se i certificati revocati dovrebbero essere visibili." #: gconf/org.gnome.gnomint.gschema.xml:24 #, fuzzy msgid "Expired certificates visibility" msgstr "Visibilità de i certificati revocati" #: gconf/org.gnome.gnomint.gschema.xml:25 msgid "" "Whether already-expired certificates should be visible in the certificates " "tree. CAs are always visible regardless of this setting so that any still-" "valid certificates they signed remain reachable." msgstr "" #: gconf/org.gnome.gnomint.gschema.xml:35 msgid "Days before expiration to highlight certificates in amber" msgstr "" #: gconf/org.gnome.gnomint.gschema.xml:36 msgid "" "Certificates whose effective validity ends within this many days are shown " "in amber in the certificates tree, as a heads-up that they should be renewed " "soon. Setting this to 0 disables the amber highlight (certificates appear " "either normally or in gray for already-expired)." msgstr "" #: gconf/org.gnome.gnomint.gschema.xml:47 msgid "Certificate requests visibility" msgstr "Visibilità de le richieste dei certificati" #: gconf/org.gnome.gnomint.gschema.xml:48 msgid "Whether the certificate requests should be visible." msgstr "Se le richieste dei certificati devono essere visibili." #: gconf/org.gnome.gnomint.gschema.xml:55 msgid "Automatic exporting of certificates for gnome-keyring" msgstr "Esportazione automatica di certificati per gnome-keyring" #: gconf/org.gnome.gnomint.gschema.xml:56 #, fuzzy msgid "" "Whether the created or imported certificates are automatically exported to " "gnome-keyring certificate-store." msgstr "" "Se i certificati creati o importati sono automaticamente esportate a gnome-" "keyring certificate-store." #: gui/certificate_popup_menu.ui:7 gui/csr_popup_menu.ui:7 #: gui/main_window.ui:45 #, fuzzy msgid "Properties" msgstr "Proprietà CA" #: gui/certificate_popup_menu.ui:13 gui/main_window.ui:35 #, fuzzy msgid "Export full c_hain..." msgstr "Esporta certificato" #: gui/certificate_popup_menu.ui:17 gui/csr_popup_menu.ui:13 #: gui/main_window.ui:34 msgid "E_xport" msgstr "" #: gui/certificate_popup_menu.ui:21 gui/csr_popup_menu.ui:17 #: gui/main_window.ui:23 msgid "Extrac_t private key" msgstr "Es_trarre chiave privata" #: gui/certificate_popup_menu.ui:27 gui/main_window.ui:24 msgid "Re_new with fresh key" msgstr "" #: gui/certificate_popup_menu.ui:31 msgid "_Compare with PEM file…" msgstr "" #: gui/certificate_popup_menu.ui:35 gui/main_window.ui:25 #, fuzzy msgid "Revo_ke" msgstr "Revoca" #: gui/certificate_popup_menu.ui:41 gui/main_window.ui:21 #, fuzzy msgid "Add _Web Server Certificate (wizard)" msgstr "Certificato DN" #: gui/certificate_popup_menu.ui:45 gui/main_window.ui:22 #, fuzzy msgid "Add _Email Server Certificate (wizard)" msgstr "Server web TLS" #: gui/certificate_properties_dialog.ui:19 msgid "Certificate properties - gnoMint" msgstr "Proprietà di certificato - gnoMint" #: gui/certificate_properties_dialog.ui:54 #, fuzzy msgid "This certificate has been verified for the following uses:" msgstr "Questo certificato è stato verificato per gli usi seguenti:" #: gui/certificate_properties_dialog.ui:77 msgid "MD5FINGERPRINT" msgstr "MD5FINGERPRINT" #: gui/certificate_properties_dialog.ui:88 msgid "SHA1FINGERPRINT" msgstr "SHA1FINGERPRINT" #: gui/certificate_properties_dialog.ui:99 #: gui/certificate_properties_dialog.ui:132 #: gui/certificate_properties_dialog.ui:176 #: gui/certificate_properties_dialog.ui:231 gui/creation_process_window.ui:15 #: gui/creation_process_window.ui:61 gui/csr_properties_dialog.ui:109 #: gui/new_ca_window.ui:56 gui/new_ca_window.ui:306 gui/new_ca_window.ui:521 #: gui/new_req_window.ui:46 gui/new_req_window.ui:157 gui/new_req_window.ui:413 msgid " " msgstr " " #: gui/certificate_properties_dialog.ui:110 msgid "CertExpirationDate" msgstr "CertExpirationDate" #: gui/certificate_properties_dialog.ui:121 msgid "CertActivationDate" msgstr "CertActivationDate" #: gui/certificate_properties_dialog.ui:143 msgid "CAOU" msgstr "CAOU" #: gui/certificate_properties_dialog.ui:154 msgid "CAO" msgstr "CAO" #: gui/certificate_properties_dialog.ui:165 msgid "CACN" msgstr "CACN" #: gui/certificate_properties_dialog.ui:187 msgid "CertSN" msgstr "CertSN" #: gui/certificate_properties_dialog.ui:198 gui/csr_properties_dialog.ui:63 #, fuzzy msgid "SubjectOU" msgstr "ID univoco del soggetto" #: gui/certificate_properties_dialog.ui:209 gui/csr_properties_dialog.ui:87 #, fuzzy msgid "SubjectO" msgstr "ID univoco del soggetto" #: gui/certificate_properties_dialog.ui:220 gui/csr_properties_dialog.ui:98 #, fuzzy msgid "SubjectCN" msgstr "ID univoco del soggetto" #: gui/certificate_properties_dialog.ui:242 msgid "MD5 fingerprint" msgstr "Impronta digitale MD5" #: gui/certificate_properties_dialog.ui:253 #, fuzzy msgid "SHA1 fingerprint" msgstr "Impronta digitale MD5" #: gui/certificate_properties_dialog.ui:264 #, fuzzy msgid "Fingerprints" msgstr "Certificati" #: gui/certificate_properties_dialog.ui:276 msgid "Expires on" msgstr "Scade il" #: gui/certificate_properties_dialog.ui:287 msgid "Activated on" msgstr "Attivato il" #: gui/certificate_properties_dialog.ui:298 msgid "Validity" msgstr "Validità" #: gui/certificate_properties_dialog.ui:310 #: gui/certificate_properties_dialog.ui:389 gui/csr_properties_dialog.ui:120 msgid "Organizational Unit (OU)" msgstr "Unità organizzativa (OU)" #: gui/certificate_properties_dialog.ui:321 #: gui/certificate_properties_dialog.ui:400 gui/csr_properties_dialog.ui:142 msgid "Organization (O)" msgstr "Organizzazione (O)" #: gui/certificate_properties_dialog.ui:332 #: gui/certificate_properties_dialog.ui:411 gui/csr_properties_dialog.ui:153 msgid "Common Name (CN)" msgstr "Nome comune (CN)" #: gui/certificate_properties_dialog.ui:343 msgid "Emmited by" msgstr "Emesso da" #: gui/certificate_properties_dialog.ui:355 #, fuzzy msgid "Subject Alternative Names" msgstr "Errore durante l'impostazione dell'estensione basicConstraint" #: gui/certificate_properties_dialog.ui:378 msgid "Serial number" msgstr "Numero di serie" #: gui/certificate_properties_dialog.ui:422 #, fuzzy msgid "Certificate subject" msgstr "Certificati" #: gui/certificate_properties_dialog.ui:434 #, fuzzy msgid "SHA256FINGERPRINT" msgstr "SHA1FINGERPRINT" #: gui/certificate_properties_dialog.ui:449 #, fuzzy msgid "SHA256 fingerprint" msgstr "Impronta digitale MD5" #: gui/certificate_properties_dialog.ui:460 #, fuzzy msgid "SHA512FINGERPRINT" msgstr "SHA1FINGERPRINT" #: gui/certificate_properties_dialog.ui:475 #, fuzzy msgid "SHA512 fingerprint" msgstr "Impronta digitale MD5" #: gui/certificate_properties_dialog.ui:486 #: gui/certificate_properties_dialog.ui:509 gui/csr_properties_dialog.ui:176 #, fuzzy msgid "Email address" msgstr "Indirizzo IP" #: gui/certificate_properties_dialog.ui:536 gui/csr_properties_dialog.ui:203 msgid "General" msgstr "Generale" #: gui/certificate_properties_dialog.ui:557 #, fuzzy msgid "Certificate hierarchy" msgstr "Certificati" #: gui/certificate_properties_dialog.ui:582 #, fuzzy msgid "Certificate fields" msgstr "Certificati" #: gui/certificate_properties_dialog.ui:605 msgid "Details" msgstr "Dettagli" #: gui/certificate_properties_dialog.ui:623 #, fuzzy msgid "" "\n" "It is recommended that all the certificates generated by a CA\n" "share the same properties.\n" "If you want to generate certificates with different properties, you\n" "should create a hierarchy of CAs, each one with its own policy for\n" "certificate generation.\n" "\n" "Please, define the maximum set of properties for the\n" "certificates that this CA will be able to generate:\n" msgstr "" "\n" "Si raccomanda che tutti i certificati generati da CA condividano le medesime " "proprietà.\n" "Se si desidera generare certificati con proprietà diverse, si dovrebbe " "creare una gerarchia di CA differenti tra loro, ognuno con la propria " "politica per la generazione del certificato.\n" "\n" "Si prega di definire il massimo insieme di proprietà per i certificati che " "questo CA sarà in grado di generare:\n" #: gui/certificate_properties_dialog.ui:649 #, fuzzy msgid "" "Maximum number of months before\n" "expiration of the new generated certificates:" msgstr "" "Massimo numero di mesi prima della scadenzza dei nuovi certificati generati:" #: gui/certificate_properties_dialog.ui:686 msgid "Hours between CRL updates:" msgstr "Ore tra gli aggiornamenti CRL:" #: gui/certificate_properties_dialog.ui:711 #, fuzzy msgid "CRL distribution URL:" msgstr "Visualizza le informazioni di distribuzione" #: gui/certificate_properties_dialog.ui:727 #, fuzzy msgid "CRL Properties" msgstr "Certificati" #: gui/certificate_properties_dialog.ui:750 #, fuzzy msgid "Country" msgstr "Stato:" #: gui/certificate_properties_dialog.ui:761 msgid "State or Province name" msgstr "Stato o Provincia" #: gui/certificate_properties_dialog.ui:778 #: gui/certificate_properties_dialog.ui:802 #: gui/certificate_properties_dialog.ui:859 #: gui/certificate_properties_dialog.ui:883 #: gui/certificate_properties_dialog.ui:907 msgid "must be the same" msgstr "" #: gui/certificate_properties_dialog.ui:786 #: gui/certificate_properties_dialog.ui:810 #: gui/certificate_properties_dialog.ui:867 #: gui/certificate_properties_dialog.ui:891 #: gui/certificate_properties_dialog.ui:915 msgid "may differ" msgstr "" #: gui/certificate_properties_dialog.ui:820 msgid "City" msgstr "Località" #: gui/certificate_properties_dialog.ui:831 msgid "Organization" msgstr "Organizzazione" #: gui/certificate_properties_dialog.ui:842 msgid "Organizational unit" msgstr "Unità organizzativa" #: gui/certificate_properties_dialog.ui:927 #, fuzzy msgid "Inherited fields from CA subject" msgstr "Campi ereditati dal soggetto CA" #: gui/certificate_properties_dialog.ui:952 gui/new_cert_window.ui:464 #: src/tls.c:1463 msgid "Certification Authority" msgstr "Autorità di Certificazione" #: gui/certificate_properties_dialog.ui:963 gui/new_cert_window.ui:487 #: src/certificate_properties.c:445 src/tls.c:1470 msgid "Non repudiation" msgstr "Non rifiutato" #: gui/certificate_properties_dialog.ui:974 gui/new_cert_window.ui:440 #: src/certificate_properties.c:447 src/tls.c:1472 msgid "Key encipherment" msgstr "Cifratura chiave" #: gui/certificate_properties_dialog.ui:986 gui/new_cert_window.ui:428 #: src/certificate_properties.c:449 src/tls.c:1474 msgid "Data encipherment" msgstr "Cifratura dei dati" #: gui/certificate_properties_dialog.ui:998 gui/new_cert_window.ui:475 #: src/certificate_properties.c:451 src/tls.c:1476 msgid "Key agreement" msgstr "Accordo di chiavi" #: gui/certificate_properties_dialog.ui:1010 gui/new_cert_window.ui:452 #: src/certificate_properties.c:443 src/tls.c:1468 msgid "Digital signature" msgstr "Signatura digitale" #: gui/certificate_properties_dialog.ui:1022 gui/new_cert_window.ui:498 #: src/certificate_properties.c:455 src/tls.c:1480 msgid "CRL signing" msgstr "Firma CRL" #: gui/certificate_properties_dialog.ui:1043 #, fuzzy msgid "Uses of new generated certificates" msgstr "Uso di nuovi certificati generati" #: gui/certificate_properties_dialog.ui:1067 gui/new_cert_window.ui:621 #: src/certificate_properties.c:1480 src/tls.c:1500 msgid "Email protection" msgstr "Protezione email" #: gui/certificate_properties_dialog.ui:1079 gui/new_cert_window.ui:610 #: src/certificate_properties.c:1479 src/tls.c:1498 msgid "Code signing" msgstr "Firmando Codice" #: gui/certificate_properties_dialog.ui:1090 gui/new_cert_window.ui:598 msgid "TLS Web client" msgstr "Client web TLS" #: gui/certificate_properties_dialog.ui:1102 gui/new_cert_window.ui:586 #, fuzzy msgid "TLS Web server" msgstr "Server web TLS" #: gui/certificate_properties_dialog.ui:1114 gui/new_cert_window.ui:575 #: src/certificate_properties.c:1481 src/tls.c:1502 msgid "Time stamping" msgstr "Time stamping" #: gui/certificate_properties_dialog.ui:1125 gui/new_cert_window.ui:564 #: src/certificate_properties.c:1483 src/tls.c:1506 msgid "Any purpose" msgstr "Qualunque proposito" #: gui/certificate_properties_dialog.ui:1136 gui/new_cert_window.ui:553 #: src/certificate_properties.c:1482 src/tls.c:1504 msgid "OCSP signing" msgstr "Firma OCSP" #: gui/certificate_properties_dialog.ui:1159 #, fuzzy msgid "Purposes of new generated certificates" msgstr "Scopi dei nuovi certificati generati" #: gui/certificate_properties_dialog.ui:1171 msgid "CA Policy" msgstr "Politica CA" #: gui/certificate_properties_dialog.ui:1189 gui/csr_properties_dialog.ui:221 #: src/ca.c:2199 msgid "_Close" msgstr "" #: gui/change_password_dialog.ui:9 msgid "Database password protection - gnoMint" msgstr "Protezione password del database - gnoMint" #: gui/change_password_dialog.ui:34 msgid "_Yes" msgstr "" #: gui/change_password_dialog.ui:43 msgid "_No" msgstr "" #: gui/change_password_dialog.ui:53 msgid "" "Enter new password again \n" "for confirmation:" msgstr "" "Inserire nuovamente la password \n" "per conferma:" #: gui/change_password_dialog.ui:86 msgid "" "Please, enter new \n" "password:" msgstr "" "Si prega di inserire una nuova \n" "password:" #: gui/change_password_dialog.ui:98 msgid "" "Please, enter current\n" "password:" msgstr "" "Si prega di inserire\n" "la password corrente:" #: gui/change_password_dialog.ui:121 msgid "" "Protect CA database private\n" "keys with password:" msgstr "" #: gui/change_password_dialog.ui:143 gui/export_certificate_dialog.ui:149 #: gui/get_db_password_dialog.ui:74 gui/get_pkey_dialog.ui:78 #: gui/import_file_or_directory_dialog.ui:94 gui/import_password_dialog.ui:90 #: gui/new_crl_dialog.ui:53 gui/san_editor_dialog.ui:93 msgid "Cancel" msgstr "" #: gui/change_password_dialog.ui:149 gui/get_db_password_dialog.ui:80 #: gui/get_pkey_dialog.ui:84 gui/import_password_dialog.ui:96 #: gui/new_crl_dialog.ui:59 gui/san_editor_dialog.ui:99 msgid "OK" msgstr "" #: gui/creation_process_window.ui:6 msgid "Creating new CA - gnoMint" msgstr "Creazione di un nuovo CA - gnoMint" #: gui/creation_process_window.ui:31 #, fuzzy msgid "Creating CA Root Certificate" msgstr "Creando Certificato CA di Root" #: gui/creation_process_window.ui:51 gui/get_password_dialog.ui:90 #: gui/new_ca_window.ui:257 gui/new_ca_window.ui:464 gui/new_ca_window.ui:576 #: gui/new_cert_window.ui:257 gui/new_cert_window.ui:339 #: gui/new_cert_window.ui:661 gui/new_req_window.ui:107 #: gui/new_req_window.ui:357 gui/new_req_window.ui:548 gui/wizard_window.ui:117 msgid "_Cancel" msgstr "" #: gui/csr_popup_menu.ui:23 gui/main_window.ui:26 #, fuzzy msgid "_Sign" msgstr "Firma" #: gui/csr_popup_menu.ui:27 gui/main_window.ui:27 msgid "Delete" msgstr "" #: gui/csr_properties_dialog.ui:5 msgid "CSR properties - gnoMint" msgstr "Proprietà CSR - gnoMint" #: gui/csr_properties_dialog.ui:41 #, fuzzy msgid "" "This Certificate Signing Request has its corresponding private key saved " "in the internal database." msgstr "" "Questa richiesta di firma di certificato (CSR) ha la corrispondente " "chiave privata salvata nel database interno." #: gui/csr_properties_dialog.ui:74 gui/new_cert_window.ui:230 #: src/csr_properties.c:86 src/new_cert.c:105 msgid "None" msgstr "" #: gui/csr_properties_dialog.ui:131 #, fuzzy msgid "Subject Alternative Name (SAN)" msgstr "Errore durante l'impostazione dell'estensione basicConstraint" #: gui/csr_properties_dialog.ui:164 msgid "CSR subject" msgstr "Soggetto CSR" #: gui/dh_parameters_dialog.ui:16 msgid "New Diffie-Hellman parameters - gnoMint" msgstr "Nuovo parametro Diffie-Hellman - gnoMint" #: gui/dh_parameters_dialog.ui:27 #, fuzzy msgid "" "You are about to create and export a set of\n" "Diffie·Hellman parameters into a PKCS#3 structure file." msgstr "" "Si è in procinto di creare ed esportare un insieme di parametri " "Diffie·Hellman in un file di struttura PKCS#3." #: gui/dh_parameters_dialog.ui:38 #, fuzzy msgid "" "PKCS#3 files containing Diffie·Hellman parameters are used by some " "cryptographic\n" "applications for a secure interchange of their keys over insecure channels." msgstr "" "I file PKCS#3 contenenti parametri Diffie·Hellman vengono " "utilizzati da alcune applicazioni \n" "crittografiche per uno scambio sicuro delle chiavi su canali insicuri." #: gui/dh_parameters_dialog.ui:48 msgid "Please, enter the prime size, in bits:" msgstr "Si prega di inserire la dimensione primaria, in bit:" #: gui/dh_parameters_dialog.ui:71 msgid "Close" msgstr "" #: gui/dh_parameters_dialog.ui:77 #, fuzzy msgid "Generate" msgstr "Generale" #: gui/export_certificate_dialog.ui:5 msgid "Export certificate - gnoMint" msgstr "Esporta certificato - gnoMint" #: gui/export_certificate_dialog.ui:22 #, fuzzy msgid "" "Please, choose which part of the\n" "saved certificate you want to export:" msgstr "" "Si prega di scegliere la parte del certificato salvato che si vuole " "esportare:" #: gui/export_certificate_dialog.ui:36 msgid "Only the pu_blic part." msgstr "Solo la parte pu_bblica." #: gui/export_certificate_dialog.ui:49 #, fuzzy msgid "Export only the certificate to a public file, in PEM format." msgstr "" "Esporta solo il certificato in un file pubblico, in formato PEM." #: gui/export_certificate_dialog.ui:60 msgid "Only the private key (crypted)." msgstr "Solo la chiave privata (criptata)." #: gui/export_certificate_dialog.ui:74 #, fuzzy msgid "" "Export the saved private key to a PKCS#8 password-\n" "protected file. This file should only be accessed by the\n" "subject of the certificate." msgstr "" "Esporta la chiave privata salvata in un file PKCS#8 protetto da password. " "Questo file può essere aperto solo dal soggetto del certificato." #: gui/export_certificate_dialog.ui:87 msgid "Only the private key (uncrypted)." msgstr "Solo la chiave privata (non criptata)." #: gui/export_certificate_dialog.ui:100 #, fuzzy msgid "" "Export the saved private key to a PEM file. This option\n" "should only be used for exporting certificates that will be\n" "used in unattended servers." msgstr "" "Esporta la chiave privata salvata in un file PEM. Quest'opzione dovrebbe " "essere utilizzata solo per esportare certificati che saranno utilizzati in " "server inutilizzati." #: gui/export_certificate_dialog.ui:113 msgid "Both parts." msgstr "Entrambe le parti." #: gui/export_certificate_dialog.ui:126 #, fuzzy msgid "" "Export both (private and public) parts to a password-\n" "protected PKCS#12 file. This kind of file can be imported\n" "by other common programs, such as web or mail clients." msgstr "" "Esporta entrambe le parti (privata e pubblica) in un file PKCS#12 " "protetto da password. Questo tipo di file può essere importato da altri " "programmi comuni, come client web o mail." #: gui/export_certificate_dialog.ui:155 #, fuzzy msgid "Export" msgstr "Esporta le opzioni" #: gui/get_db_password_dialog.ui:5 gui/get_password_dialog.ui:5 #: gui/import_password_dialog.ui:5 msgid "Enter password - gnoMint" msgstr "Inserire la password - gnoMint" #: gui/get_db_password_dialog.ui:20 msgid "" "This action requires using one or more private keys saved in the CA " "database.\n" "\n" "Please insert the database password." msgstr "" "Questa azione richiede l'utilizzo di una o più chiavi private salvate nel " "database di CA.\n" "\n" "Si prega di inserire la password del database." #: gui/get_db_password_dialog.ui:41 gui/get_password_dialog.ui:68 #: gui/import_password_dialog.ui:65 msgid "Password:" msgstr "Password:" #: gui/get_db_password_dialog.ui:58 msgid "Remember this password during this gnoMint session" msgstr "Ricorda questa password durante la sessione gnoMint" #: gui/get_password_dialog.ui:19 #, fuzzy msgid "Please, enter password" msgstr "Si prega di inserire la password:" #: gui/get_password_dialog.ui:56 msgid "Password (confirm):" msgstr "Confermare la password:" #: gui/get_password_dialog.ui:97 gui/new_ca_window.ui:592 #: gui/new_cert_window.ui:676 gui/new_req_window.ui:564 #: gui/preferences_dialog.ui:51 msgid "_OK" msgstr "" #: gui/get_pkey_dialog.ui:9 msgid "Choose private key file. gnoMint" msgstr "Scegliere un file con chiave privata. gnoMint" #: gui/get_pkey_dialog.ui:22 #, fuzzy msgid "" "Choose private key file\n" "\n" "For doing the selected operation, you must provide the\n" "file where resides the private key corresponding to the\n" "certificate:" msgstr "" "Scegli il file della chiave privata\n" "\n" "Per eseguire l'operazione, devi fornire il file dove risiede la chiave " "privata corrispondente al certificato:" #: gui/get_pkey_dialog.ui:37 msgid "Certificate DN" msgstr "Certificato DN" #: gui/get_pkey_dialog.ui:43 msgid "Please, choose the file:" msgstr "Si prega di scegliere il file:" #: gui/get_pkey_dialog.ui:62 msgid "_Save filename in the database for automatic loading" msgstr "_Salva il nome del file nel database per il caricamento automatico" #: gui/org.gnome.gnomint.appdata.xml.in:7 gui/main_window.ui:62 msgid "gnoMint" msgstr "gnoMint" #: gui/org.gnome.gnomint.appdata.xml.in:8 #, fuzzy msgid "X.509 Certification Authority management tool" msgstr "Autorità di Certificazione" #: gui/org.gnome.gnomint.appdata.xml.in:11 msgid "" "gnoMint is a tool for easily creating and managing certification authorities " "(CAs). It provides fancy visualization of all your certificates, and their " "properties, as well as an easy management of the CA activities." msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:16 msgid "With gnoMint you can:" msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:20 #, fuzzy msgid "Create and manage your own Certification Authority (CA)" msgstr "Aggiungi una nuova richiesta di firma certificato (CSR)" #: gui/org.gnome.gnomint.appdata.xml.in:21 #, fuzzy msgid "Create and sign certificates for servers and users" msgstr "Creando Certificato CA di Root" #: gui/org.gnome.gnomint.appdata.xml.in:22 #, fuzzy msgid "Create and manage Certificate Signing Requests (CSRs)" msgstr "Aggiungi una nuova richiesta di firma certificato (CSR)" #: gui/org.gnome.gnomint.appdata.xml.in:23 msgid "" "Export certificates and private keys in several formats (PEM, DER, PKCS#12)" msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:24 #, fuzzy msgid "Revoke certificates and generate Certificate Revocation Lists (CRLs)" msgstr "Genera l'attuale lista di revoca certificati" #: gui/org.gnome.gnomint.appdata.xml.in:25 #, fuzzy msgid "Import existing certificates and CAs" msgstr "Errore durante l'impostazione della versione del certificato" #: gui/org.gnome.gnomint.appdata.xml.in:27 msgid "" "gnoMint provides a simple and intuitive graphical interface based on GTK for " "all these operations, making certificate management accessible even for " "users without deep knowledge of X.509 standards and cryptography." msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:38 #, fuzzy msgid "Main window showing certificate list" msgstr "Errore durante la firma del certificato" #: gui/org.gnome.gnomint.desktop.in:2 gui/org.gnome.gnomint.desktop.in:3 msgid "gnoMint X.509 CA Manager" msgstr "" #: gui/org.gnome.gnomint.desktop.in:4 msgid "Manage X.509 certificates and CAs, easily and graphically" msgstr "" #: gui/org.gnome.gnomint.desktop.in:5 msgid "certificate;x.509;encryption;" msgstr "" #: gui/import_file_or_directory_dialog.ui:9 msgid "Import selection - gnoMint" msgstr "Importa la selezione - gnoMint" #: gui/import_file_or_directory_dialog.ui:24 #, fuzzy msgid "" "Please, choose the more suitable option for\n" "what you want to import:" msgstr "" "Si prega di scegliere l'opzione più adatta per ciò che si vuole importare:" #: gui/import_file_or_directory_dialog.ui:36 msgid "Import a single file." msgstr "Importa un singolo file." #: gui/import_file_or_directory_dialog.ui:48 #, fuzzy msgid "" "Import a single file, encoded in DER or PEM format, containing\n" "certificates, private keys (encrypted or plain), signing\n" "requests (CSRs), revocation lists (CRLs) or PKCS#12\n" "packages." msgstr "" "importa un singolo file, codificato in formato DER o PEM, contenente " "certificati, chiavi private (crittografate o libere), richieste di firma " "(CSRs), liste di revoca (CRLs) o pacchetti PKCS#12." #: gui/import_file_or_directory_dialog.ui:60 msgid "Import a whole directory." msgstr "Importa una cartella completa." #: gui/import_file_or_directory_dialog.ui:72 #, fuzzy msgid "" "Import a directory containing the structure of\n" "a whole CA made with OpenSSL ." msgstr "" "Importa una cartella contenete la struttura di\n" "un CA intatto fatto con OpenSSL." #: gui/import_file_or_directory_dialog.ui:100 msgid "Import" msgstr "" #: gui/import_password_dialog.ui:20 #, fuzzy msgid "" "The whole selected file, or some of its elements, seems to\n" "be cyphered using a password or passphrase.\n" "\n" "For importing the file into gnoMint database, you must\n" "provide an appropiate password." msgstr "" "L'intero file selezionato, o alcuni dei suoi elementi, sembra essere cifrato " "utilizzando una password o una passphrase.\n" "\n" "Per importare il file in database gnoMint, è necessario fornire una password " "appropriata." #: gui/import_password_dialog.ui:37 #, fuzzy msgid "" "The part that is being imported has the description:" msgstr "La parte che viene importata ha descrizione:" #: gui/import_password_dialog.ui:48 msgid "#Description#" msgstr "#Descrizione#" #: gui/main_window.ui:6 msgid "_Certificates" msgstr "_Certificati" #: gui/main_window.ui:8 msgid "_New certificate database" msgstr "_Nuovo database di certificato" #: gui/main_window.ui:9 msgid "_Open certificate database" msgstr "_Apri il database di certificato" #: gui/main_window.ui:10 msgid "Open _recents" msgstr "Apri _recenti" #: gui/main_window.ui:11 msgid "_Save certificate database as..." msgstr "_Salva il database di certificato come..." #: gui/main_window.ui:15 #, fuzzy msgid "Add" msgstr "Aggiungi CSR" #: gui/main_window.ui:17 msgid "_Add self-signed CA" msgstr "_Aggiungi CA autofirmato" #: gui/main_window.ui:18 msgid "Add _Certificate Request" msgstr "Aggiungi Richiesta di _Certificato" #: gui/main_window.ui:29 msgid "Generate _CRL" msgstr "Genera _CRL" #: gui/main_window.ui:30 msgid "Generate D_H parameters..." msgstr "Genera parametri D_H ..." #: gui/main_window.ui:31 msgid "Change database pass_word" msgstr "Cambiare la pass_word del database" #: gui/main_window.ui:33 msgid "_Import" msgstr "" #: gui/main_window.ui:38 msgid "Revoke _all selected..." msgstr "" #: gui/main_window.ui:39 msgid "Delete all selected _CSRs..." msgstr "" #: gui/main_window.ui:41 msgid "_Quit" msgstr "" #: gui/main_window.ui:44 gui/san_manager_widget.ui:34 msgid "_Edit" msgstr "" #: gui/main_window.ui:46 msgid "Preferences" msgstr "" #: gui/main_window.ui:49 msgid "_View" msgstr "" #: gui/main_window.ui:51 msgid "Certificate _Signing Requests" msgstr "Richiesta di _firma di certificato (CSR)" #: gui/main_window.ui:52 msgid "_Revoked Certificates" msgstr "_Certificati revocati" #: gui/main_window.ui:53 #, fuzzy msgid "E_xpired Certificates" msgstr "Esporta certificato" #: gui/main_window.ui:57 gui/new_ca_window.ui:249 gui/new_ca_window.ui:456 #: gui/new_ca_window.ui:568 gui/new_cert_window.ui:249 #: gui/new_cert_window.ui:331 gui/new_cert_window.ui:653 #: gui/new_req_window.ui:99 gui/new_req_window.ui:349 gui/new_req_window.ui:540 msgid "_Help" msgstr "" #: gui/main_window.ui:58 msgid "About" msgstr "" #: gui/main_window.ui:80 #, fuzzy msgid "Create a new database" msgstr "Creazione del database di CA" #: gui/main_window.ui:87 msgid "Open an existing database" msgstr "Apri un database esistente" #: gui/main_window.ui:99 msgid "Add an autosigned CA" msgstr "Aggiungi un CA autofirmato" #: gui/main_window.ui:100 #, fuzzy msgid "Add autosigned CA certificate" msgstr "Aggiungi un CA autofirmato" #: gui/main_window.ui:111 #, fuzzy msgid "Add a new Certificate Signing Request" msgstr "Richiesta di firma di certificato (CSR):\n" #: gui/main_window.ui:112 msgid "Add CSR" msgstr "Aggiungi CSR" #: gui/main_window.ui:129 msgid "Extract the private key of the selected item into a external file" msgstr "Estrai la chiave privata dell'oggetto selezionato in un file esterno" #: gui/main_window.ui:130 msgid "Extract Private Key" msgstr "Estrai la chiave privata" #: gui/main_window.ui:142 #, fuzzy msgid "Revoke the selected certificate" msgstr "Revoca il certificato selezionato" #: gui/main_window.ui:143 msgid "Revoke" msgstr "Revoca" #: gui/main_window.ui:151 msgid "Sign the selected Certificate Signing Request" msgstr "Firma la richiesta di firma del certificato selezionato" #: gui/main_window.ui:152 #, fuzzy msgid "Sign" msgstr "Firma" #: gui/main_window.ui:164 msgid "Delete the selected Certificate Signing Request" msgstr "Cancellazione della richiesta di firma certificato (CSR) selezionata" #: gui/main_window.ui:176 #, fuzzy msgid "Quick certificate generation for web server" msgstr "Generazione del certificato fallita" #: gui/main_window.ui:177 #, fuzzy msgid "Web Server Wizard" msgstr "Server web TLS" #: gui/main_window.ui:188 #, fuzzy msgid "Quick certificate generation for email server" msgstr "Generazione del certificato fallita" #: gui/main_window.ui:189 #, fuzzy msgid "Email Server Wizard" msgstr "Server web TLS" #: gui/main_window.ui:225 msgid "_Show them" msgstr "" #: gui/main_window.ui:243 msgid "Filter certificates by subject or serial..." msgstr "" #: gui/new_ca_window.ui:20 msgid "New CA - gnoMint" msgstr "Nuovo CA - gnoMint" #: gui/new_ca_window.ui:46 #, fuzzy msgid "CA Subject Properties\n" msgstr "Proprietà CA" #: gui/new_ca_window.ui:72 gui/new_cert_window.ui:130 gui/new_req_window.ui:303 msgid "Organization:" msgstr "Organizzazione:" #: gui/new_ca_window.ui:83 gui/new_cert_window.ui:141 gui/new_req_window.ui:292 msgid "Organization Unit:" msgstr "Unità organizzativa:" #: gui/new_ca_window.ui:94 gui/new_cert_window.ui:152 gui/new_req_window.ui:281 msgid "Country:" msgstr "Stato:" #: gui/new_ca_window.ui:106 gui/new_cert_window.ui:163 #: gui/new_req_window.ui:270 #, fuzzy msgid "State or Province name: " msgstr "Stato o Provincia: " #: gui/new_ca_window.ui:117 gui/new_cert_window.ui:174 #: gui/new_req_window.ui:259 #, fuzzy msgid "City: " msgstr "Città: " #: gui/new_ca_window.ui:164 msgid "" "CA Root Certificate \n" "Common Name (CN):" msgstr "" "Certificato radice CA \n" "Common Name (CN):" #: gui/new_ca_window.ui:185 gui/new_cert_window.ui:219 #: gui/new_req_window.ui:203 #, fuzzy msgid "Email address:" msgstr "Indirizzo IP" #: gui/new_ca_window.ui:227 gui/new_req_window.ui:326 #, fuzzy msgid "Subject Alternative Names (SAN)" msgstr "Errore durante l'impostazione dell'estensione basicConstraint" #: gui/new_ca_window.ui:265 gui/new_ca_window.ui:480 gui/new_req_window.ui:115 #: gui/new_req_window.ui:373 msgid "_Next" msgstr "" #: gui/new_ca_window.ui:277 gui/new_cert_window.ui:276 #: gui/new_req_window.ui:127 msgid "CA properties" msgstr "Proprietà CA" #: gui/new_ca_window.ui:296 #, fuzzy msgid "CA Root certificate properties\n" msgstr "Proprietà del certificato CA Root\n" #: gui/new_ca_window.ui:337 msgid "Months before root certificate expiration:" msgstr "Mesi prima della scadenzza dei certificati di root:" #: gui/new_ca_window.ui:370 gui/new_req_window.ui:453 msgid "P-256 (256 bits)" msgstr "" #: gui/new_ca_window.ui:371 gui/new_req_window.ui:454 msgid "P-384 (384 bits)" msgstr "" #: gui/new_ca_window.ui:372 gui/new_req_window.ui:455 msgid "P-521 (521 bits)" msgstr "" #: gui/new_ca_window.ui:391 gui/new_req_window.ui:474 #, fuzzy msgid "RSA" msgstr "RSA" #: gui/new_ca_window.ui:400 gui/new_req_window.ui:484 msgid "DSA" msgstr "DSA" #: gui/new_ca_window.ui:409 gui/new_req_window.ui:493 msgid "ECDSA" msgstr "" #: gui/new_ca_window.ui:418 gui/new_req_window.ui:502 msgid "Ed25519" msgstr "" #: gui/new_ca_window.ui:428 gui/new_req_window.ui:512 src/new_ca_window.c:170 #: src/new_ca_window.c:180 src/new_req_window.c:201 src/new_req_window.c:211 msgid "Private key bit length:" msgstr "Lunghezza in bit della chiave privata:" #: gui/new_ca_window.ui:439 gui/new_req_window.ui:523 msgid "Private key type:" msgstr "Tipologia di chiave privata:" #: gui/new_ca_window.ui:472 gui/new_ca_window.ui:584 gui/new_req_window.ui:365 #: gui/new_req_window.ui:556 msgid "_Previous" msgstr "" #: gui/new_ca_window.ui:492 gui/new_req_window.ui:385 msgid "Root certificate prop" msgstr "Supporto di certificato root" #: gui/new_ca_window.ui:511 #, fuzzy msgid "CA properties\n" msgstr "Proprietà CA" #: gui/new_ca_window.ui:535 #, fuzzy msgid "CRL Distribution Point:" msgstr "Visualizza le informazioni di distribuzione" #: gui/new_ca_window.ui:542 msgid "" "Please, in this field enter an URL where the CRL for this CA will be " "available. \n" "You can leave it blank. In this case, no CRL Distribution Point will be set " "in the CA \n" "Certificate, and you will be able to set it as a new CA property. \n" "This value will be copied into the certificates generated by this CA.\n" "" msgstr "" #: gui/new_ca_window.ui:604 msgid "Password protect" msgstr "Password protetta" #: gui/new_cert_window.ui:13 msgid "New Certificate - gnoMint" msgstr "Nuovo Certificato - gnoMint" #: gui/new_cert_window.ui:36 gui/new_cert_window.ui:293 #: gui/new_cert_window.ui:382 #, fuzzy msgid "New Certificate Properties\n" msgstr "Proprietà Nuovo Certificato\n" #: gui/new_cert_window.ui:45 #, fuzzy msgid "" "You are about to sign a Certificate Signing Request,\n" "and this way, creating a new certificate. Please\n" "check the certificate properties." msgstr "" "Si è in procinto di firmare una richiesta di firma di certificato (CSR) e, " "in questo modo, la creazione di un nuovo certificato. Si prega di verificare " "le proprietà del certificato." #: gui/new_cert_window.ui:64 gui/new_cert_window.ui:75 #: gui/new_cert_window.ui:86 gui/new_cert_window.ui:97 #: gui/new_cert_window.ui:108 gui/new_cert_window.ui:119 msgid "label" msgstr "" #: gui/new_cert_window.ui:185 msgid "" "New certificate \n" "Common Name (CN):" msgstr "" "Nuovo certificato \n" "Nome Comune (CN):" #: gui/new_cert_window.ui:197 #, fuzzy msgid "Subject Alternative Names:" msgstr "Errore durante l'impostazione dell'estensione basicConstraint" #: gui/new_cert_window.ui:302 #, fuzzy msgid "" "You are about to sign a Certificate Signing Request.\n" "Please, choose the Certification Authority you are\n" "going to use for signing it." msgstr "" "Si è in procinto di firmare una richiesta di firma di certificato (CSR). Si " "prega di scegliere l'autorità certificativa che si intende utilizzare per la " "firma dello stesso." #: gui/new_cert_window.ui:366 msgid "Choose CA for signing the CSR" msgstr "Scegliere CA per firmare il CSR" #: gui/new_cert_window.ui:397 msgid "Months before certificate expiration:" msgstr "Mesi prima della scadenza del certificato:" #: gui/new_cert_window.ui:519 #, fuzzy msgid "Certificate uses" msgstr "Certificati" #: gui/new_cert_window.ui:635 #, fuzzy msgid "Certificate purposes" msgstr "Certificati" #: gui/new_cert_window.ui:688 msgid "Certificate properties" msgstr "Propietà dei Certificati" #: gui/new_crl_dialog.ui:5 msgid "New CRL - gnoMint" msgstr "Nuovo CRL - gnoMint" #: gui/new_crl_dialog.ui:17 #, fuzzy msgid "New Certificate Revocation List" msgstr "Nuova Lista di Revoca Certificati" #: gui/new_crl_dialog.ui:26 msgid "" "Please, select the CA for which a Certificate \n" "Revocation List is going to be created:" msgstr "" #: gui/new_req_window.ui:12 msgid "New certificate request - gnoMint" msgstr "Nuova richiesta di certificato - gnoMint" #: gui/new_req_window.ui:36 gui/new_req_window.ui:147 gui/new_req_window.ui:403 #, fuzzy msgid "Certificate Request Properties\n" msgstr "Richiedi proprietà Certificato\n" #: gui/new_req_window.ui:55 #, fuzzy msgid "" "The subject of the new certificate request can inherit information\n" "from one of the existing Certification Authorities. This is a must if the\n" "policy of the CA you are going to use is defined to force some fields\n" "of a certificate subject to be the same as the ones in the CA cert\n" "subject." msgstr "" "L'oggetto della nuova richiesta di certificato può ereditare le " "informazioni da una delle autorità di certificazione esistenti. Questo è " "obbligatorio se la politica del CA, che si intende utilizzare, è definita " "per forzare alcuni campi di un soggetto certificato in modo da essere gli " "stessi di quelli del soggetto certificato CA." #: gui/new_req_window.ui:67 msgid "Don't inherit any fields from existing Certification Authorities" msgstr "Non ereditare nessun campo dalle esistenti autorità certificative" #: gui/new_req_window.ui:74 msgid "" "Inherit fields according to selected Certification Authority and its policy." msgstr "" "Eredita i campi in accordo con l'autorità certificativa selezionata e la sua " "politica." #: gui/new_req_window.ui:191 #, fuzzy msgid "" "Certificate\n" " Common Name (CN):" msgstr "" "Certificato \n" "Nome Comune (CN):" #: gui/new_req_window.ui:576 msgid "page 3" msgstr "" #: gui/preferences_dialog.ui:9 msgid "General Preferences - gnoMint" msgstr "Preferenze Generali - gnoMint" #: gui/preferences_dialog.ui:26 #, fuzzy msgid "" "Automatically export created certificates to\n" "Gnome-keyring certificate store" msgstr "" "Esporta automaticamente i certificati creati nello \n" "Gnome-keyring certificate store" #: gui/preferences_dialog.ui:36 msgid "Export options" msgstr "Esporta le opzioni" #: gui/san_editor_dialog.ui:5 src/certificate_properties.c:1488 msgid "Subject Alternative Name" msgstr "" #: gui/san_editor_dialog.ui:23 msgid "Type:" msgstr "" #: gui/san_editor_dialog.ui:35 #, fuzzy msgid "DNS" msgstr "DSA" #: gui/san_editor_dialog.ui:36 src/certificate_properties.c:900 #: src/certificate_properties.c:914 src/certificate_properties.c:1040 msgid "IP Address" msgstr "Indirizzo IP" #: gui/san_editor_dialog.ui:37 msgid "Email" msgstr "" #: gui/san_editor_dialog.ui:38 src/certificate_properties.c:889 #: src/certificate_properties.c:1032 msgid "URI" msgstr "URI" #: gui/san_editor_dialog.ui:51 #, fuzzy msgid "Value:" msgstr "Valore" #: gui/san_editor_dialog.ui:74 msgid "" "Examples:\n" "DNS: example.com, *.example.com\n" "IP: 192.168.1.1, 2001:db8::1\n" "EMAIL: admin@example.com\n" "URI: https://example.com" msgstr "" #: gui/san_manager_widget.ui:26 msgid "_Add" msgstr "" #: gui/san_manager_widget.ui:43 msgid "_Remove" msgstr "" #: gui/wizard_window.ui:9 #, fuzzy msgid "Certificate Wizard" msgstr "Certificato DN" #: gui/wizard_window.ui:28 #, fuzzy msgid "Quick Certificate Generation" msgstr "Certificati" #: gui/wizard_window.ui:35 msgid "" "This wizard will create a certificate for your server with default " "settings.\n" "Enter the server name (e.g., my.server.dns.name) and select the CA to sign " "it." msgstr "" #: gui/wizard_window.ui:48 #, fuzzy msgid "Server Name:" msgstr "Nome DNS" #: gui/wizard_window.ui:59 msgid "Enter the server DNS name (e.g., my.server.dns.name)" msgstr "" #: gui/wizard_window.ui:69 #, fuzzy msgid "Signing CA:" msgstr "Firma OCSP" #: gui/wizard_window.ui:88 #, fuzzy msgid "Certificate Type:" msgstr "Il certificato usa:\n" #: gui/wizard_window.ui:124 #, fuzzy msgid "_Generate Certificate" msgstr "_Certificati revocati" #: gui/wizard_window.ui:140 #, fuzzy msgid "Web Server (TLS)" msgstr "Server web TLS" #: gui/wizard_window.ui:141 #, fuzzy msgid "Email Server (TLS)" msgstr "Server web TLS" #: src/ca.c:192 #, c-format msgid "Bulk revoke completed with errors. First error: %s" msgstr "" #: src/ca.c:199 #, fuzzy, c-format msgid "%d certificate revoked." msgid_plural "%d certificates revoked." msgstr[0] "Certificato revocato.\n" msgstr[1] "Certificato revocato.\n" #: src/ca.c:225 #, c-format msgid "Bulk delete completed with errors. First error: %s" msgstr "" #: src/ca.c:240 msgid "" "Certificate renewed. A new certificate with a fresh keypair has been added " "to the database alongside the original." msgstr "" #: src/ca.c:606 src/ca-cli-callbacks.c:167 src/ca-cli-callbacks.c:221 #: src/ca-cli-callbacks.c:733 src/ca-cli-callbacks.c:737 #: src/ca-cli-callbacks.c:1362 src/ca-cli-callbacks.c:1369 #: src/certificate_properties.c:246 src/certificate_properties.c:252 msgid "%m/%d/%Y %H:%M GMT" msgstr "" #: src/ca.c:806 src/ca.c:1927 src/ca.c:1958 src/ca.c:2093 src/ca.c:2322 #: src/ca.c:2350 msgid "Yes" msgstr "" #: src/ca.c:930 src/certificate_properties.c:653 msgid "Subject" msgstr "" #: src/ca.c:965 src/cert_diff.c:122 msgid "Serial" msgstr "" #: src/ca.c:978 src/cert_diff.c:123 msgid "Activation" msgstr "" #: src/ca.c:991 src/cert_diff.c:124 msgid "Expiration" msgstr "" #: src/ca.c:1004 msgid "Revocation" msgstr "Revoca" #: src/ca.c:1047 #, c-format msgid "" "Showing only the %d certificate expiring in the next %d days. Close " "this banner to show everything again." msgid_plural "" "Showing only the %d certificates expiring in the next %d days. Close " "this banner to show everything again." msgstr[0] "" msgstr[1] "" #: src/ca.c:1058 #, c-format msgid "" "%d certificate expires in the next %d days. Right-click it to renew " "with a fresh key." msgid_plural "" "%d certificates expire in the next %d days. Right-click each one to " "renew with a fresh key." msgstr[0] "" msgstr[1] "" #: src/ca.c:1369 src/ca.c:1404 src/ca.c:1416 src/export.c:560 src/export.c:639 msgid "There was an error while exporting certificate." msgstr "Errore durante l'esportazione del certificato." #: src/ca.c:1371 src/ca.c:1406 src/ca.c:1418 msgid "There was an error while exporting CSR." msgstr "Errore durante l'esportazione del CSR." #: src/ca.c:1426 src/ca.c:1590 msgid "Certificate exported successfully" msgstr "Certificato esportato correttamente" #: src/ca.c:1427 msgid "Certificate signing request exported successfully" msgstr "Richiesta di firma di certificato (CSR) esportata correttamente" #: src/ca.c:1445 msgid "Export certificate" msgstr "Esporta certificato" #: src/ca.c:1447 msgid "Export certificate signing request" msgstr "Esporta la richiesta di firma di certificato (CSR)" #: src/ca.c:1461 src/ca.c:1523 src/ca.c:1981 msgid "Private key exported successfully" msgstr "Chiave privata esportata correttamente" #: src/ca.c:1509 src/ca.c:2057 msgid "Export crypted private key" msgstr "Esporta la chiave privata criptata" #: src/ca.c:1568 #, fuzzy msgid "Export unencrypted private key" msgstr "Esporta chiave privata non criptata" #: src/ca.c:1633 msgid "Export whole certificate in PKCS#12 package" msgstr "Esporta l'intero certificato nel pacchetto PKCS#12" #: src/ca.c:1676 msgid "Unexpected error" msgstr "" #: src/ca.c:1712 msgid "Export CSR - gnoMint" msgstr "Esporta CSR - gnoMint" #: src/ca.c:1717 msgid "" "Please, choose which part of the saved Certificate Signing Request you want " "to export:" msgstr "" "Si prega di scegliere quale parte della richiesta di firma di certificato " "(CSR) salvata si vuole esportare:" #: src/ca.c:1722 msgid "" "Export the Certificate Signing Request to a public file, in PEM format." msgstr "" "Esporta la richiesta di firma di certificato (CSR) in un file pubblico, " "in formato PEM." #: src/ca.c:1727 msgid "" "Export the saved private key to a PKCS#8 password-protected file. This " "file should only be accessed by the subject of the Certificate Signing " "Request." msgstr "" "Esporta la chiave privata salvata in un file PKCS#8 protetto da password. " "Questo file deve essere accessibile solamente da parte del soggetto della " "richiesta di firma di certificato (CSR)." #: src/ca.c:1774 msgid "Could not build certificate chain." msgstr "" #: src/ca.c:1781 #, fuzzy, c-format msgid "Failed to write chain: %s" msgstr "Aggiungi un certificato CA autofirmato" #: src/ca.c:1786 #, fuzzy msgid "Certificate chain exported successfully." msgstr "Certificato esportato correttamente" #: src/ca.c:1807 #, fuzzy msgid "Please select a certificate to export its chain." msgstr "Autorità di Certificazione" #: src/ca.c:1831 #, fuzzy msgid "Export certificate chain" msgstr "Esporta certificato" #: src/ca.c:1911 #, fuzzy msgid "Please select one or more certificates to revoke." msgstr "Autorità di Certificazione" #: src/ca.c:1916 #, fuzzy, c-format msgid "Are you sure you want to revoke %d certificate?" msgid_plural "Are you sure you want to revoke %d certificates?" msgstr[0] "Confermare la revoca di questo certificato?" msgstr[1] "Confermare la revoca di questo certificato?" #: src/ca.c:1920 msgid "" "Revoking a certificate will include it in the next CRL, marking it as " "invalid. CSRs in the selection (if any) are not affected; use \"Delete " "selected CSRs\" for those." msgstr "" #: src/ca.c:1927 src/ca.c:1958 src/ca.c:2093 src/ca.c:2322 src/ca.c:2350 msgid "No" msgstr "" #: src/ca.c:1948 msgid "Please select one or more CSRs to delete." msgstr "" #: src/ca.c:1953 #, fuzzy, c-format msgid "Are you sure you want to delete %d Certificate Signing Request?" msgid_plural "Are you sure you want to delete %d Certificate Signing Requests?" msgstr[0] "" "Confermare la cancellazione di questa richiesta di firma di certificato " "(CSR)?" msgstr[1] "" "Confermare la cancellazione di questa richiesta di firma di certificato " "(CSR)?" #: src/ca.c:2076 src/ca-cli-callbacks.c:1934 msgid "" "CA certificates cannot be renewed. A renewed CA would have a different key, " "so certificates previously signed by the old CA would no longer chain to it." msgstr "" #: src/ca.c:2087 msgid "" "Renew this certificate?\n" "\n" "gnoMint will issue a new certificate with the same subject and SAN as the " "selected one, signed by the same CA, with a freshly-generated keypair. The " "old certificate will remain in the database — revoke it manually after you " "have deployed the new one." msgstr "" #: src/ca.c:2118 #, c-format msgid "Certificate diff — %d difference" msgid_plural "Certificate diff — %d differences" msgstr[0] "" msgstr[1] "" #: src/ca.c:2147 msgid "Left" msgstr "" #: src/ca.c:2151 msgid "Right" msgstr "" #: src/ca.c:2241 src/ca-cli-callbacks.c:2141 #, fuzzy msgid "Cannot read file." msgstr "Aggiungi un certificato CA autofirmato" #: src/ca.c:2252 msgid "Selected" msgstr "" #: src/ca.c:2278 #, fuzzy msgid "Cannot read PEM of the selected certificate." msgstr "Revoca il certificato selezionato" #: src/ca.c:2290 msgid "Compare with PEM file…" msgstr "" #: src/ca.c:2312 msgid "Are you sure you want to revoke this certificate?" msgstr "Confermare la revoca di questo certificato?" #: src/ca.c:2313 msgid "" "Revoking a certificate will include it in the next CRL, marking it as " "invalid. This way, any future use of the certificate will be denied (as long " "as the CRL is checked)." msgstr "" #: src/ca.c:2316 #, fuzzy msgid "Are you sure you want to revoke this CA certificate?" msgstr "Confermare la revoca di questo certificato?" #: src/ca.c:2317 msgid "" "Revoking a certificate will include it in the next CRL, marking it as " "invalid. This way, any future use of the certificate will be denied (as long " "as the CRL is checked). \n" "\n" "Moreover, revoking a CA certificate can invalidate all the certificates " "generated with it, so all them should be regenerated with a new CA " "certificate." msgstr "" #: src/ca.c:2349 msgid "Are you sure you want to delete this Certificate Signing Request?" msgstr "" "Confermare la cancellazione di questa richiesta di firma di certificato " "(CSR)?" #: src/ca.c:2572 msgid "" "The current password you have entered doesn't match with the actual current " "database password." msgstr "" "La password attualmente inserita non corrisponde con la reale e corrente " "password del database." #: src/ca.c:2588 msgid "Error while changing database password. The operation was cancelled." msgstr "" "Errore durante la modifica della password del database. L'operazione è stata " "annullata." #: src/ca.c:2593 msgid "Password changed successfully" msgstr "" #: src/ca.c:2601 src/ca-cli-callbacks.c:1186 msgid "" "Error while establishing database password. The operation was cancelled." msgstr "" "Errore nello stabilire la password del database. L'operazione è stata " "annullata." #: src/ca.c:2606 msgid "Password established successfully" msgstr "Password stabilita correttamente" #: src/ca.c:2616 msgid "Error while removing database password. The operation was cancelled." msgstr "" "Errore durante la rimozione della password del database. L'operazione è " "stata annullata." #: src/ca.c:2621 msgid "Password removed successfully" msgstr "Password rimossa correttamente" #: src/ca.c:2708 msgid "Change CA password - gnoMint" msgstr "" #: src/ca.c:2840 msgid "Diffie-Hellman parameters saved successfully" msgstr "Parametri Diffie-Hellman salvati correttamente" #: src/ca.c:2872 msgid "Save Diffie-Hellman parameters" msgstr "Salva i parametri Diffie-Hellman" #: src/ca.c:2951 #, c-format msgid "Problem when importing '%s' file" msgstr "" #: src/ca.c:3012 msgid "Select PEM file to import" msgstr "Selezionare il file PEM da importare" #: src/ca.c:3018 msgid "Select directory to import" msgstr "" #: src/cert_diff.c:70 #, fuzzy msgid "Cannot parse left certificate" msgstr "Revoca il certificato selezionato" #: src/cert_diff.c:72 #, fuzzy msgid "Cannot parse right certificate" msgstr "Revoca il certificato selezionato" #: src/cert_diff.c:113 #, fuzzy msgid "Subject CN" msgstr "ID univoco del soggetto" #: src/cert_diff.c:114 #, fuzzy msgid "Subject O" msgstr "ID univoco del soggetto" #: src/cert_diff.c:115 #, fuzzy msgid "Subject OU" msgstr "ID univoco del soggetto" #: src/cert_diff.c:116 #, fuzzy msgid "Subject Country" msgstr "Stato" #: src/cert_diff.c:117 #, fuzzy msgid "Subject State" msgstr "ID univoco del soggetto" #: src/cert_diff.c:118 #, fuzzy msgid "Subject Locality" msgstr "Chiave pubblica del soggetto" #: src/cert_diff.c:119 #, fuzzy msgid "Subject email" msgstr "ID univoco del soggetto" #: src/cert_diff.c:120 #, fuzzy msgid "Subject DN" msgstr "ID univoco del soggetto" #: src/cert_diff.c:121 msgid "Issuer DN" msgstr "" #: src/cert_diff.c:125 #, fuzzy msgid "SAN" msgstr "RSA" #: src/cert_diff.c:126 msgid "Key usage / EKU" msgstr "" #: src/cert_diff.c:127 #, fuzzy msgid "Subject Key ID" msgstr "ID univoco del soggetto" #: src/cert_diff.c:128 msgid "Authority Key ID" msgstr "" #: src/cert_diff.c:129 #, fuzzy msgid "CRL distribution" msgstr "Visualizza le informazioni di distribuzione" #: src/cert_diff.c:130 #, fuzzy msgid "SHA-1 fingerprint" msgstr "Impronta digitale MD5" #: src/cert_diff.c:131 #, fuzzy msgid "SHA-256 fingerprint" msgstr "Impronta digitale MD5" #: src/cert_renewal.c:111 msgid "Cannot parse generated CSR." msgstr "" #: src/cert_renewal.c:125 #, fuzzy msgid "Cannot encrypt new private key." msgstr "Esporta chiave privata non criptata" #: src/cert_renewal.c:181 src/cert_renewal.c:341 #, fuzzy msgid "Cannot read certificate PEM from database." msgstr "_Apri il database di certificato" #: src/cert_renewal.c:186 src/cert_renewal.c:347 #, fuzzy msgid "Cannot parse certificate." msgstr "Revoca il certificato selezionato" #: src/cert_renewal.c:193 src/cert_renewal.c:354 #, c-format msgid "Cannot find issuer CA in this database (issuer DN: %s)." msgstr "" #: src/cert_renewal.c:204 src/cert_renewal.c:315 msgid "Cannot load parent CA material from database." msgstr "" #: src/cert_renewal.c:212 src/cert_renewal.c:221 src/cert_renewal.c:265 #: src/cert_renewal.c:280 #, fuzzy msgid "Cannot decrypt parent CA's private key." msgstr "Esporta la chiave privata criptata" #: src/ca-cli.c:42 msgid "newdb " msgstr "" #: src/ca-cli.c:42 msgid "Close current file and create a new database with given filename" msgstr "Chiudere il file corrente e creare un nuovo database con il nome dato" #: src/ca-cli.c:43 msgid "opendb " msgstr "" #: src/ca-cli.c:43 msgid "Close current file and open the file with given filename" msgstr "Chiudere il file corrente ed aprire il file con il nome dato" #: src/ca-cli.c:44 msgid "savedbas " msgstr "" #: src/ca-cli.c:44 msgid "Save the current file with a different filename" msgstr "Salvare il file corrente con un nome differente" #: src/ca-cli.c:45 msgid "Get current status (opened file, no. of certificates, etc...)" msgstr "" #: src/ca-cli.c:46 msgid "" "List the certificates in database. With option --see-revoked, lists also the " "revoked ones" msgstr "" #: src/ca-cli.c:48 msgid "List the CSRs in database" msgstr "" #: src/ca-cli.c:49 msgid "addcsr [ca-id-for-inherit-fields]" msgstr "" #: src/ca-cli.c:49 msgid "Start a new CSR creation process" msgstr "Iniziare un nuovo processo di creazione CSR" #: src/ca-cli.c:50 msgid "Start a new self-signed CA creation process" msgstr "" #: src/ca-cli.c:51 msgid "extractcertpkey " msgstr "" #: src/ca-cli.c:51 msgid "" "Extract the private key of the certificate with the given internal id and " "saves it into the given file" msgstr "" #: src/ca-cli.c:54 msgid "extractcsrpkey " msgstr "" #: src/ca-cli.c:54 msgid "" "Extract the private key of the CSR with the given internal id and saves it " "into the given file" msgstr "" "Estrarre la chiave privata del CSR con l'id interno dato e salvarlo nel file " "stabilito" #: src/ca-cli.c:57 msgid "revoke " msgstr "" #: src/ca-cli.c:57 msgid "Revoke the certificate with the given internal ID" msgstr "Revocare il certificato con l'ID interno dato" #: src/ca-cli.c:58 msgid "sign " msgstr "" #: src/ca-cli.c:58 msgid "Generate a certificate signing the given CSR with the given CA" msgstr "" #: src/ca-cli.c:59 msgid "delete " msgstr "" #: src/ca-cli.c:59 msgid "Delete the given CSR from the database" msgstr "Eliminare il CSR dato dal database" #: src/ca-cli.c:60 msgid "crlgen " msgstr "" #: src/ca-cli.c:60 msgid "Generate a new CRL for the given CA, saving it into the file " msgstr "Genera un nuovo CRL per il dato CA, salvandolo nel file " #: src/ca-cli.c:61 msgid "dhgen " msgstr "" #: src/ca-cli.c:61 msgid "Generate a new DH-parameter set, saving it into the file " msgstr "" "Genera un nuovo insieme di parametri DH, salvandolo nel file " #: src/ca-cli.c:62 msgid "Change password for the current database" msgstr "Cambiare la password per il database corrente" #: src/ca-cli.c:63 msgid "importfile " msgstr "" #: src/ca-cli.c:63 msgid "Import the file with the given name " msgstr "Importare il file con il nome stabilito " #: src/ca-cli.c:64 msgid "importdir " msgstr "" #: src/ca-cli.c:64 msgid "Import the given directory, as a OpenSSL-CA directory" msgstr "Importare la cartella stabilita, come una cartella OpenSSL-CA" #: src/ca-cli.c:65 msgid "showcert " msgstr "" #: src/ca-cli.c:65 msgid "Show properties of the given certificate" msgstr "Visualizza le proprietà del certificato stabilito" #: src/ca-cli.c:66 msgid "showcsr " msgstr "" #: src/ca-cli.c:66 msgid "Show properties of the given CSR" msgstr "Visualizza le proprietà del CSR stabilito" #: src/ca-cli.c:67 msgid "showpolicy " msgstr "" #: src/ca-cli.c:67 msgid "Show CA policy" msgstr "" #: src/ca-cli.c:68 msgid "setpolicy " msgstr "" #: src/ca-cli.c:68 msgid "Change the given CA policy" msgstr "" #: src/ca-cli.c:69 msgid "Show program preferences" msgstr "Visualizza le preferenze di programma" #: src/ca-cli.c:70 msgid "setpreference " msgstr "setpreference " #: src/ca-cli.c:70 msgid "Set the given program preference" msgstr "" #: src/ca-cli.c:71 msgid "addservercert " msgstr "" #: src/ca-cli.c:71 msgid "Quick server certificate generation (cert-type: 'web' or 'email')" msgstr "" #: src/ca-cli.c:72 msgid "renewcert " msgstr "" #: src/ca-cli.c:72 msgid "" "Reissue a non-CA certificate with the same subject + SAN and a fresh " "keypair. The old certificate remains in the database. CA certificates cannot " "be renewed." msgstr "" #: src/ca-cli.c:73 #, fuzzy msgid "exportchain " msgstr "Esporta certificato" #: src/ca-cli.c:73 msgid "" "Export the full certificate chain (leaf → root) for the given certificate as " "a PEM bundle." msgstr "" #: src/ca-cli.c:74 msgid "revokemany [cert-id ...]" msgstr "" #: src/ca-cli.c:74 msgid "Revoke many certificates at once. Non-cert ids are silently skipped." msgstr "" #: src/ca-cli.c:75 msgid "deletemany [csr-id ...]" msgstr "" #: src/ca-cli.c:75 msgid "Delete many CSRs at once. Non-CSR ids are silently skipped." msgstr "" #: src/ca-cli.c:76 msgid "search " msgstr "" #: src/ca-cli.c:76 msgid "" "List certificates and CSRs whose subject or serial contains (case-" "insensitive)." msgstr "" #: src/ca-cli.c:77 msgid "diff " msgstr "" #: src/ca-cli.c:77 msgid "" "Side-by-side diff of two certificates. Each argument is either a numeric DB " "id or a path to a PEM file." msgstr "" #: src/ca-cli.c:78 msgid "Show about message" msgstr "Visualizza il messaggio di About" #: src/ca-cli.c:79 msgid "Show warranty information" msgstr "Visualizza le informazioni di garanzia" #: src/ca-cli.c:80 msgid "Show distribution information" msgstr "Visualizza le informazioni di distribuzione" #: src/ca-cli.c:81 msgid "Show version information" msgstr "" #: src/ca-cli.c:82 msgid "Show (this) help message" msgstr "Visualizza (questo) messaggio di aiuto" #: src/ca-cli.c:83 src/ca-cli.c:84 src/ca-cli.c:85 msgid "Close database and exit program" msgstr "Chiudi il database ed esci dal programma" #: src/ca-cli.c:132 #, c-format msgid "Opening database %s..." msgstr "Database %s in apertura..." #: src/ca-cli.c:136 #, c-format msgid " OK.\n" msgstr " OK.\n" #: src/ca-cli.c:138 #, c-format msgid " Error.\n" msgstr " Errore.\n" #: src/ca-cli.c:153 #, c-format msgid "" "Notice: %d certificate expires within the next %d days. Use `renewcert ` " "to reissue.\n" msgid_plural "" "Notice: %d certificates expire within the next %d days. Use `renewcert ` " "to reissue.\n" msgstr[0] "" msgstr[1] "" #: src/ca-cli.c:187 #, fuzzy, c-format msgid "" "\n" "\n" "%s version %s \"%s\"\n" "%s\n" "\n" msgstr "" "\n" "\n" "%s versione %s\n" "%s\n" "\n" #: src/ca-cli.c:188 #, c-format msgid "" "This program comes with ABSOLUTELY NO WARRANTY;\n" "for details type 'warranty'.\n" msgstr "" "Questo programma viene fornito SENZA ALCUNA GARANZIA;\n" "per informazioni digitare 'warranty'.\n" #: src/ca-cli.c:189 #, c-format msgid "" "This is free software, and you are welcome to redistribute it\n" "under certain conditions; type 'distribution' for details.\n" "\n" msgstr "" "Questo è software libero e siete invitati a ridistribuirlo\n" "rispettando determinate condizioni; digitare 'distribution' per i dettagli.\n" "\n" #: src/ca-cli.c:231 #, c-format msgid "Unpaired quotes\n" msgstr "" #: src/ca-cli.c:309 #, c-format msgid "" "Invalid command. Try 'help' for getting a list of recognized commands.\n" msgstr "" "Comando non valido. Digitare 'help' per ottenere una lista dei comandi " "riconosciuti.\n" #: src/ca-cli.c:313 #, c-format msgid "Incorrect number of parameters.\n" msgstr "Numero di parametri non corretto.\n" #: src/ca-cli.c:314 #, c-format msgid "Syntax: %s\n" msgstr "Sintassi: %s\n" #: src/ca-cli-callbacks.c:62 src/ca-cli-callbacks.c:111 msgid "The file already exists, so it will be overwritten." msgstr "File già esistente, verrà quindi sovrascritto." #: src/ca-cli-callbacks.c:62 src/ca-cli-callbacks.c:111 #: src/ca-cli-callbacks.c:824 msgid "Are you sure? Yes/[No] " msgstr "Confermare? Si/[No] " #: src/ca-cli-callbacks.c:84 #, c-format msgid "Problem when opening new '%s' CA database\n" msgstr "Si è verificato un problema nell'apertura del nuovo database CA '%s'\n" #: src/ca-cli-callbacks.c:88 #, c-format msgid "File '%s' opened\n" msgstr "Il file '%s' è stato aperto\n" #: src/ca-cli-callbacks.c:98 #, c-format msgid "Problem when opening '%s' CA database\n" msgstr "Si è verificato un problema nell'apertura del database CA '%s'\n" #: src/ca-cli-callbacks.c:132 #, c-format msgid "Current opened file: %s\n" msgstr "File aperto corrente: %s\n" #: src/ca-cli-callbacks.c:133 #, c-format msgid "Number of certificates in file: %d\n" msgstr "Numero di certificati nel file: %d\n" #: src/ca-cli-callbacks.c:134 #, c-format msgid "Number of CSRs in file: %d\n" msgstr "Numero di CSR nel file: %d\n" #: src/ca-cli-callbacks.c:169 msgid " (after 2038?)" msgstr "" #: src/ca-cli-callbacks.c:239 #, c-format msgid "Certificates in Database:\n" msgstr "Certificati nel Database:\n" #: src/ca-cli-callbacks.c:240 #, c-format msgid "Id.\tIs CA?\tCertificate Subject\tKey in DB?\tActivation\t\tExpiration" msgstr "" #: src/ca-cli-callbacks.c:243 #, c-format msgid "\t\tRevocation\n" msgstr "" #: src/ca-cli-callbacks.c:278 #, c-format msgid "Certificate Requests in Database:\n" msgstr "Richieste di certificato nel database:\n" #: src/ca-cli-callbacks.c:279 #, c-format msgid "Id.\tParent Id.\tCSR Subject\t\tKey in DB?\n" msgstr "" #: src/ca-cli-callbacks.c:309 src/ca-cli-callbacks.c:1129 #: src/ca-cli-callbacks.c:1522 src/ca-cli-callbacks.c:1551 msgid "The given CA id. is not valid" msgstr "" #: src/ca-cli-callbacks.c:362 #, c-format msgid "" "Please enter data corresponding to subject of the Certificate Signing " "Request:\n" msgstr "" #: src/ca-cli-callbacks.c:365 src/ca-cli-callbacks.c:567 msgid "Enter country (C)" msgstr "" #: src/ca-cli-callbacks.c:373 src/ca-cli-callbacks.c:573 msgid "Enter state or province (ST)" msgstr "" #: src/ca-cli-callbacks.c:382 src/ca-cli-callbacks.c:579 msgid "Enter locality or city (L)" msgstr "" #: src/ca-cli-callbacks.c:390 src/ca-cli-callbacks.c:585 msgid "Enter organization (O)" msgstr "" #: src/ca-cli-callbacks.c:398 src/ca-cli-callbacks.c:591 msgid "Enter organizational unit (OU)" msgstr "" #: src/ca-cli-callbacks.c:405 src/ca-cli-callbacks.c:597 msgid "Enter common name (CN)" msgstr "" #: src/ca-cli-callbacks.c:411 src/ca-cli-callbacks.c:603 msgid "Enter email address (leave blank for none)" msgstr "" #: src/ca-cli-callbacks.c:422 src/ca-cli-callbacks.c:614 msgid "" "Enter Subject Alternative Names (SAN) [format: " "DNS:example.com,IP:192.168.1.1]" msgstr "" #: src/ca-cli-callbacks.c:433 src/ca-cli-callbacks.c:625 msgid "Enter type of key you are going to create (RSA/DSA/ECDSA/Ed25519)" msgstr "" #: src/ca-cli-callbacks.c:472 src/ca-cli-callbacks.c:656 msgid "Enter curve size for ECDSA (256, 384, or 521)" msgstr "" #: src/ca-cli-callbacks.c:482 src/ca-cli-callbacks.c:667 msgid "Enter bitlength for the key (it must be a whole multiple of 1024)" msgstr "" #: src/ca-cli-callbacks.c:487 #, c-format msgid "These are the provided CSR properties:\n" msgstr "" #: src/ca-cli-callbacks.c:489 src/ca-cli-callbacks.c:704 #: src/ca-cli-callbacks.c:1350 src/ca-cli-callbacks.c:1411 #, c-format msgid "Subject:\n" msgstr "" #: src/ca-cli-callbacks.c:490 src/ca-cli-callbacks.c:705 #, c-format msgid "\tDistinguished Name: " msgstr "" #: src/ca-cli-callbacks.c:505 src/ca-cli-callbacks.c:720 #: src/ca-cli-callbacks.c:1354 src/ca-cli-callbacks.c:1414 #, c-format msgid "\tSubject Alternative Names: %s\n" msgstr "" #: src/ca-cli-callbacks.c:506 src/ca-cli-callbacks.c:721 #, c-format msgid "Key pair\n" msgstr "" #: src/ca-cli-callbacks.c:512 src/ca-cli-callbacks.c:727 #, c-format msgid "\tType: %s\n" msgstr "" #: src/ca-cli-callbacks.c:514 #, c-format msgid "\tKey size: fixed (Ed25519)\n" msgstr "" #: src/ca-cli-callbacks.c:516 #, c-format msgid "\tCurve: P-%d\n" msgstr "" #: src/ca-cli-callbacks.c:518 src/ca-cli-callbacks.c:729 #, c-format msgid "\tKey bitlength: %d\n" msgstr "\tLungezza in bit della chiave: %d\n" #: src/ca-cli-callbacks.c:521 src/ca-cli-callbacks.c:740 msgid "Do you want to change anything? Yes/[No] " msgstr "Apportare modifiche? Si/[No] " #: src/ca-cli-callbacks.c:525 msgid "" "You are about to create a Certificate Signing Request with these properties." msgstr "" "Si è in procinto di creare una richiesta di firma di certificato (CSR) con " "queste proprietà." #: src/ca-cli-callbacks.c:526 src/ca-cli-callbacks.c:745 msgid "Are you sure? [Yes]/No " msgstr "Confermare? [Si]/No " #: src/ca-cli-callbacks.c:531 src/ca-cli-callbacks.c:750 #: src/ca-cli-callbacks.c:834 src/ca-cli-callbacks.c:965 #: src/ca-cli-callbacks.c:1086 src/ca-cli-callbacks.c:1115 #: src/ca-cli-callbacks.c:1181 src/ca-cli-callbacks.c:1208 #: src/ca-cli-callbacks.c:1236 src/ca-cli-callbacks.c:1251 #: src/ca-cli-callbacks.c:1581 src/ca-cli-callbacks.c:1624 #: src/ca-cli-callbacks.c:1945 #, c-format msgid "Operation cancelled.\n" msgstr "Operazione cancellata.\n" #: src/ca-cli-callbacks.c:565 #, c-format msgid "" "Please enter data corresponding to subject of the new Certification " "Authority:\n" msgstr "" "Si prega di inserire i dati corrispondenti al soggetto della nuova autorità " "certificativa:\n" #: src/ca-cli-callbacks.c:673 msgid "" "Introduce number of months before expiration of the new certification " "authority" msgstr "" "Introdurre il numero di mesi mancanti alla scadenza della nuova autorità " "certificativa" #: src/ca-cli-callbacks.c:693 src/new_ca_window.c:457 msgid "" "This system uses a 32-bit time_t and cannot represent dates after " "2038-01-19. The new CA's expiration date has been clamped to that limit. To " "issue longer-lived CAs, run gnoMint on a 64-bit platform." msgstr "" #: src/ca-cli-callbacks.c:702 #, c-format msgid "These are the provided new CA properties:\n" msgstr "Queste sono le proprietà fornite dal nuovo CA:\n" #: src/ca-cli-callbacks.c:730 #, c-format msgid "Validity\n" msgstr "Validità\n" #: src/ca-cli-callbacks.c:731 src/ca-cli-callbacks.c:1360 #, c-format msgid "Validity:\n" msgstr "Validità:\n" #: src/ca-cli-callbacks.c:734 src/ca-cli-callbacks.c:1363 #, c-format msgid "\tActivated on: %s\n" msgstr "\tAttivazione: %s\n" #: src/ca-cli-callbacks.c:738 src/ca-cli-callbacks.c:1370 #, c-format msgid "\tExpires on: %s\n" msgstr "\tScadenza: %s\n" #: src/ca-cli-callbacks.c:744 msgid "" "You are about to create a new Certification Authority with these properties." msgstr "" "Si è in procinto di creare una nuova autorità certificativa con queste " "proprietà." #: src/ca-cli-callbacks.c:770 src/ca-cli-callbacks.c:818 #: src/ca-cli-callbacks.c:1321 msgid "The given certificate id. is not valid" msgstr "" #: src/ca-cli-callbacks.c:777 src/ca-cli-callbacks.c:801 #, c-format msgid "Private key extracted successfully into file '%s'\n" msgstr "Chiave privata estratta correttamente nel file '%s'\n" #: src/ca-cli-callbacks.c:794 src/ca-cli-callbacks.c:946 #: src/ca-cli-callbacks.c:1099 src/ca-cli-callbacks.c:1400 msgid "The given CSR id. is not valid" msgstr "L'id. del CSR fornito non è valido" #: src/ca-cli-callbacks.c:824 msgid "This certificate will be revoked." msgstr "Il certificato sarà revocato." #: src/ca-cli-callbacks.c:830 #, c-format msgid "Certificate revoked.\n" msgstr "Certificato revocato.\n" #: src/ca-cli-callbacks.c:844 src/ca-cli-callbacks.c:1381 #, c-format msgid "Certificate uses:\n" msgstr "Il certificato usa:\n" #: src/ca-cli-callbacks.c:847 #, c-format msgid "* Certification Authority use enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:849 #, c-format msgid "* Certification Authority use disabled.\n" msgstr "* Utilizzo dell'autorità certificativa disabilitato.\n" #: src/ca-cli-callbacks.c:853 #, c-format msgid "* CRL signing use enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:855 #, c-format msgid "* CRL signing use disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:859 #, c-format msgid "* Digital Signature use enabled.\n" msgstr "* Utilizzo della firma digitale abilitato.\n" #: src/ca-cli-callbacks.c:861 #, c-format msgid "* Digital Signature use disabled.\n" msgstr "* Utilizzo della firma digitale disabilitato.\n" #: src/ca-cli-callbacks.c:865 src/ca-cli-callbacks.c:867 #, c-format msgid "* Data Encipherment use enabled.\n" msgstr "* Utilizzo della cifratura dati abilitato.\n" #: src/ca-cli-callbacks.c:871 #, c-format msgid "* Key Encipherment use enabled.\n" msgstr "* Utilizzo della cifratura di chiave abilitato.\n" #: src/ca-cli-callbacks.c:873 #, c-format msgid "* Key Encipherment use disabled.\n" msgstr "* Utilizzo della cifratura di chiave disabilitato.\n" #: src/ca-cli-callbacks.c:877 #, c-format msgid "* Non Repudiation use enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:879 #, c-format msgid "* Non Repudiation use disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:883 #, c-format msgid "* Key Agreement use enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:885 #, c-format msgid "* Key Agreement use disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:888 #, c-format msgid "Certificate purposes:\n" msgstr "Scopi del certificato:\n" #: src/ca-cli-callbacks.c:891 #, c-format msgid "* Email Protection purpose enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:893 #, c-format msgid "* Email Protection purpose disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:897 #, c-format msgid "* Code Signing purpose enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:899 #, c-format msgid "* Code Signing purpose disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:903 #, c-format msgid "* TLS Web Client purpose enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:905 #, c-format msgid "* TLS Web Client purpose disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:909 #, c-format msgid "* TLS Web Server purpose enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:911 #, c-format msgid "* TLS Web Server purpose disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:915 #, c-format msgid "* Time Stamping purpose enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:917 #, c-format msgid "* Time Stamping purpose disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:921 #, c-format msgid "* OCSP Signing purpose enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:923 #, c-format msgid "* OCSP Signing purpose disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:927 #, c-format msgid "* Any purpose enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:929 #, c-format msgid "* Any purpose disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:953 #, c-format msgid "You are about to sign the following Certificate Signing Request:\n" msgstr "" #: src/ca-cli-callbacks.c:955 #, c-format msgid "with the certificate corresponding to the next CA:\n" msgstr "" #: src/ca-cli-callbacks.c:958 msgid "" "Introduce number of months before expiration of the new certificate (0 to " "cancel)" msgstr "" #: src/ca-cli-callbacks.c:984 src/ca-cli-callbacks.c:1072 #, c-format msgid "" "The new certificate will be created with the following uses and purposes:\n" msgstr "" #: src/ca-cli-callbacks.c:987 msgid "Do you want to change any property of the new certificate? Yes/[No] " msgstr "" #: src/ca-cli-callbacks.c:990 msgid "* Enable Certification Authority use? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:992 #, c-format msgid "* Certification Authority use disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:996 msgid "* Enable CRL Signing? [Yes]/No " msgstr "* Abilitare la firma CRL? [Si]/No " #: src/ca-cli-callbacks.c:998 #, c-format msgid "* CRL signing use disabled by policy\n" msgstr "* Utilizzo della firma CRL disabilitato dalla politica\n" #: src/ca-cli-callbacks.c:1002 msgid "* Enable Digital Signature use? [Yes]/No " msgstr "* Abilitare l'utilizzo della firma digitale? [Si]/No " #: src/ca-cli-callbacks.c:1004 #, c-format msgid "* Digital Signature use disabled by policy\n" msgstr "* Utilizzo della firma digitale disabilitato dalla politica\n" #: src/ca-cli-callbacks.c:1008 msgid "Enable Data Encipherment use? [Yes]/No " msgstr "Abilitare l'utilizzo della cifratura dei dati? [Si]/No " #: src/ca-cli-callbacks.c:1010 #, c-format msgid "* Data Encipherment use disabled by policy\n" msgstr "* Utilizzo della cifratura dei dati disabilitato dalla politica\n" #: src/ca-cli-callbacks.c:1014 msgid "Enable Key Encipherment use? [Yes]/No " msgstr "Abilitare l'utilizzo della cifratura di chiave? [Si]/No " #: src/ca-cli-callbacks.c:1016 #, c-format msgid "* Key Encipherment use disabled by policy\n" msgstr "* Utilizzo della cifratura di chiave disabilitato dalla politica\n" #: src/ca-cli-callbacks.c:1020 msgid "Enable Non Repudiation use? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1022 #, c-format msgid "* Non Repudiation use disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1026 msgid "Enable Key Agreement use? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1028 #, c-format msgid "* Key Agreement use disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1032 msgid "Enable Email Protection purpose? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1034 #, c-format msgid "* Email Protection purpose disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1038 msgid "Enable Code Signing purpose? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1040 #, c-format msgid "* Code Signing purpose disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1044 msgid "Enable TLS Web Client purpose? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1046 #, c-format msgid "* TLS Web Client purpose disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1050 msgid "Enable TLS Web Server purpose? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1052 #, c-format msgid "* TLS Web Server purpose disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1056 msgid "Enable Time Stamping purpose? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1058 #, c-format msgid "* Time Stamping purpose disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1062 msgid "Enable OCSP Signing purpose? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1063 #, c-format msgid "* OCSP Signing purpose disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1067 msgid "Enable any purpose? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1069 #, c-format msgid "* Any purpose disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1077 msgid "" "All the mandatory data for the certificate generation has been gathered." msgstr "" #: src/ca-cli-callbacks.c:1077 msgid "Do you want to proceed with the signing? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1083 #, c-format msgid "Certificate signed.\n" msgstr "Certificato firmato.\n" #: src/ca-cli-callbacks.c:1105 msgid "This Certificate Signing Request will be deleted." msgstr "La richiesta di firma di certificato (CSR) sarà cancellata." #: src/ca-cli-callbacks.c:1105 msgid "This operation cannot be undone. Are you sure? Yes/[No] " msgstr "" #: src/ca-cli-callbacks.c:1111 #, c-format msgid "Certificate Signing Request deleted.\n" msgstr "Richiesta di firma di certificato eliminata.\n" #: src/ca-cli-callbacks.c:1136 #, c-format msgid "CRL generated successfully into file '%s'\n" msgstr "CRL generato correttamente nel file '%s'\n" #: src/ca-cli-callbacks.c:1153 msgid "The bit-length of the prime number must be whole multiple of 1024" msgstr "" "La lunghezza in bit del numero primo deve essere un multiplo intero di 1024" #: src/ca-cli-callbacks.c:1162 #, c-format msgid "Diffie-Hellman parameters created and saved successfully in file '%s'\n" msgstr "" "Parametri Diffie-Hellman creati e salvati correttamente nel file '%s'\n" #: src/ca-cli-callbacks.c:1174 msgid "Currently, the database is not password-protected." msgstr "Attualmente il database non è protetto da password" #: src/ca-cli-callbacks.c:1174 msgid "Do you want to password protect it? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1175 msgid "" "OK. You need to supply a password for protecting the private keys in the\n" "database, so nobody else but authorized people can use them. This password\n" "will be asked any time gnoMint will make use of any private key in database." msgstr "" #: src/ca-cli-callbacks.c:1178 msgid "Insert password:" msgstr "Inserire la password:" #: src/ca-cli-callbacks.c:1178 msgid "Insert password (confirm):" msgstr "Inserire la password (conferma):" #: src/ca-cli-callbacks.c:1179 src/ca-cli-callbacks.c:1249 msgid "The introduced passwords are distinct." msgstr "Le password introdotte sono diverse." #: src/ca-cli-callbacks.c:1190 #, c-format msgid "Password established successfully.\n" msgstr "" #: src/ca-cli-callbacks.c:1197 #, c-format msgid "Nothing done.\n" msgstr "" #: src/ca-cli-callbacks.c:1201 msgid "Currently, the database IS password-protected." msgstr "Attualmente il database IS è protetto da password." #: src/ca-cli-callbacks.c:1201 msgid "Do you want to remove this password protection? Yes/[No] " msgstr "" #: src/ca-cli-callbacks.c:1205 #, c-format msgid "" "For removing the password-protection, the current database password\n" "must be supplied.\n" msgstr "" #: src/ca-cli-callbacks.c:1206 src/ca-cli-callbacks.c:1234 msgid "Please, insert the current database password (Empty to cancel): " msgstr "" #: src/ca-cli-callbacks.c:1213 src/ca-cli-callbacks.c:1241 msgid "" "The current password you have entered\n" "doesn't match with the actual current database password." msgstr "" #: src/ca-cli-callbacks.c:1218 msgid "" "Error while removing database password. \n" "The operation was cancelled." msgstr "" #: src/ca-cli-callbacks.c:1223 #, c-format msgid "Password removed successfully.\n" msgstr "Password rimossa correttamente.\n" #: src/ca-cli-callbacks.c:1233 #, c-format msgid "" "You must supply the current database password before changing the password.\n" msgstr "" #: src/ca-cli-callbacks.c:1245 msgid "" "OK. Now you must supply a new password for protecting the private keys in " "the\n" "database, so nobody else but authorized people can use them. This password\n" "will be asked any time gnoMint will make use of any private key in database." msgstr "" #: src/ca-cli-callbacks.c:1248 msgid "Insert new password:" msgstr "Inserire la nuova password:" #: src/ca-cli-callbacks.c:1248 msgid "Insert new password (confirm):" msgstr "Inserire la nuova password (conferma):" #: src/ca-cli-callbacks.c:1257 msgid "" "Error while changing database password. \n" "The operation was cancelled." msgstr "" #: src/ca-cli-callbacks.c:1263 #, c-format msgid "Password changed successfully.\n" msgstr "Password modificata correttamente.\n" #: src/ca-cli-callbacks.c:1281 msgid "Problem when importing the given file." msgstr "Si è verificato un problema durante l'importazione del file fornito." #: src/ca-cli-callbacks.c:1284 #, c-format msgid "File imported successfully.\n" msgstr "File importato correttamente.\n" #: src/ca-cli-callbacks.c:1300 #, c-format msgid "Directory imported successfully.\n" msgstr "Cartella importata correttamente.\n" #: src/ca-cli-callbacks.c:1343 #, c-format msgid "Certificate:\n" msgstr "Certificato:\n" #: src/ca-cli-callbacks.c:1347 #, c-format msgid "\tSerial number: %s\n" msgstr "\tNumero di serie: %s\n" #: src/ca-cli-callbacks.c:1351 src/ca-cli-callbacks.c:1357 #: src/ca-cli-callbacks.c:1412 #, c-format msgid "\tDistinguished Name: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1351 src/ca-cli-callbacks.c:1352 #: src/ca-cli-callbacks.c:1357 src/ca-cli-callbacks.c:1358 msgid "None." msgstr "" #: src/ca-cli-callbacks.c:1352 src/ca-cli-callbacks.c:1358 #: src/ca-cli-callbacks.c:1416 #, c-format msgid "\tUnique ID: %s\n" msgstr "\tID unico: %s\n" #: src/ca-cli-callbacks.c:1356 #, c-format msgid "Issuer:\n" msgstr "" #: src/ca-cli-callbacks.c:1365 src/ca-cli-callbacks.c:1372 #, c-format msgid "" "\t (warning: this 32-bit build cannot tell a real post-2038 date from an " "overflow; this value may be inaccurate)\n" msgstr "" #: src/ca-cli-callbacks.c:1375 #, c-format msgid "Fingerprints:\n" msgstr "" #: src/ca-cli-callbacks.c:1376 #, c-format msgid "\tSHA1 fingerprint: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1377 #, c-format msgid "\tMD5 fingerprint: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1378 #, fuzzy, c-format msgid "\tSHA256 fingerprint: %s\n" msgstr "Impronta digitale MD5" #: src/ca-cli-callbacks.c:1409 #, c-format msgid "Certificate Signing Request:\n" msgstr "Richiesta di firma di certificato (CSR):\n" #: src/ca-cli-callbacks.c:1486 msgid "Generated certs inherit Country from CA " msgstr "" #: src/ca-cli-callbacks.c:1487 msgid "Generated certs inherit State from CA " msgstr "" #: src/ca-cli-callbacks.c:1488 msgid "Generated certs inherit Locality from CA " msgstr "" #: src/ca-cli-callbacks.c:1489 msgid "Generated certs inherit Organization from CA " msgstr "" #: src/ca-cli-callbacks.c:1490 msgid "Generated certs inherit Organizational Unit from CA " msgstr "" #: src/ca-cli-callbacks.c:1491 msgid "Country in generated certs must be the same than in CA " msgstr "" #: src/ca-cli-callbacks.c:1492 msgid "State in generated certs must be the same than in CA " msgstr "" #: src/ca-cli-callbacks.c:1493 msgid "Locality in generated certs must be the same than in CA " msgstr "" #: src/ca-cli-callbacks.c:1494 msgid "Organization in generated certs must be the same than in CA " msgstr "" #: src/ca-cli-callbacks.c:1495 msgid "Organizational Unit in generated certs must be the same than in CA" msgstr "" #: src/ca-cli-callbacks.c:1496 msgid "Maximum number of hours between CRL updates " msgstr "" #: src/ca-cli-callbacks.c:1497 msgid "CRL distribution point (URL where CRL is published) " msgstr "" #: src/ca-cli-callbacks.c:1498 msgid "Maximum number of months before expiration of new certs " msgstr "" #: src/ca-cli-callbacks.c:1499 msgid "CA use enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1500 msgid "CRL Sign use enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1501 msgid "Non reputation use enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1502 msgid "Digital signature use enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1503 msgid "Key encipherment use enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1504 msgid "Key agreement use enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1505 msgid "Data encipherment use enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1506 msgid "TLS web server purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1507 msgid "TLS web client purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1508 msgid "Time stamping purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1509 msgid "Code signing server purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1510 msgid "Email protection purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1511 msgid "OCSP signing purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1512 msgid "Any purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1526 #, c-format msgid "Showing policies of the following certificate:\n" msgstr "Visualizzazione delle politiche del seguente certificato:\n" #: src/ca-cli-callbacks.c:1528 #, c-format msgid "" "\n" "Policies:\n" msgstr "" "\n" "Politiche:\n" #: src/ca-cli-callbacks.c:1530 #, c-format msgid "Id.\tDescription\t\t\t\t\t\t\t\tValue\n" msgstr "" #: src/ca-cli-callbacks.c:1556 msgid "The given policy id is not valid" msgstr "La politica fornita non è valida" #: src/ca-cli-callbacks.c:1568 #, c-format msgid "" "You are about to assign to the policy\n" "'%s' the new value '%s'." msgstr "" #: src/ca-cli-callbacks.c:1572 src/ca-cli-callbacks.c:1616 msgid "Are you sure? Yes/[No] : " msgstr "Confermare? Si/[No] " #: src/ca-cli-callbacks.c:1577 #, c-format msgid "Policy set correctly to '%s'.\n" msgstr "" #: src/ca-cli-callbacks.c:1591 #, c-format msgid "gnoMint-cli current preferences:\n" msgstr "" #: src/ca-cli-callbacks.c:1593 #, c-format msgid "Id.\tName\t\t\tValue\n" msgstr "" #: src/ca-cli-callbacks.c:1594 #, c-format msgid "0\tGnome keyring support\t%d\n" msgstr "" #: src/ca-cli-callbacks.c:1606 msgid "The given preference id is not valid" msgstr "La preferenza fornita non è valida" #: src/ca-cli-callbacks.c:1612 #, c-format msgid "" "You are about to assign to the preference 'Gnome keyring support' the new " "value '%d'." msgstr "" #: src/ca-cli-callbacks.c:1634 #, c-format msgid "" "%s version %s\n" "%s\n" msgstr "" "%s versione %s\n" "%s\n" #: src/ca-cli-callbacks.c:1635 #, c-format msgid "" "\n" "Authors:\n" "%s\n" "\n" msgstr "" "\n" "Autori:\n" "%s\n" "\n" #: src/ca-cli-callbacks.c:1636 src/ca-cli-callbacks.c:1637 src/main.c:742 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " David Marín https://launchpad.net/~davefx\n" " Federico Pontelli https://launchpad.net/~federico\n" " Jecko Development https://launchpad.net/~jecko\n" " Vincenzo Reale https://launchpad.net/~smart2128\n" " gnuckx https://launchpad.net/~gnuckx" #: src/ca-cli-callbacks.c:1637 #, c-format msgid "" "Translators:\n" "%s\n" msgstr "" "Traduttori:\n" "%s\n" #: src/ca-cli-callbacks.c:1644 msgid "" "THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY\n" "APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT\n" "HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY\n" "OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,\n" "THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n" "PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM\n" "IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF\n" "ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n" "\n" "For more information about warranty, see section 15 onwards of the GNU\n" "General Public License. You should have received a copy of the GNU General\n" "Public License along with this program. If not, see\n" ".\n" "\n" msgstr "" #: src/ca-cli-callbacks.c:1662 msgid "" "This program is free software: you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation, either version 3 of the License, or\n" "(at your option) any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program. If not, see .\n" "\n" msgstr "" #: src/ca-cli-callbacks.c:1677 #, fuzzy, c-format msgid "%s version %s \"%s\"\n" msgstr "" "%s versione %s\n" "%s\n" #: src/ca-cli-callbacks.c:1686 #, c-format msgid "Available commands:\n" msgstr "" #: src/ca-cli-callbacks.c:1687 #, c-format msgid "===================\n" msgstr "===================\n" #: src/ca-cli-callbacks.c:1697 #, c-format msgid "Exiting gnomint-cli...\n" msgstr "In uscita da gnomint-cli...\n" #: src/ca-cli-callbacks.c:1738 #, fuzzy msgid "The given CA id is not valid" msgstr "L'id. del CSR fornito non è valido" #: src/ca-cli-callbacks.c:1750 msgid "Certificate type must be 'web' or 'email'" msgstr "" #: src/ca-cli-callbacks.c:1756 msgid "Server name cannot be empty" msgstr "" #: src/ca-cli-callbacks.c:1760 #, fuzzy, c-format msgid "Creating %s certificate for: %s\n" msgstr "Creando Certificato CA di Root" #: src/ca-cli-callbacks.c:1761 #, fuzzy msgid "web server" msgstr "Server web TLS" #: src/ca-cli-callbacks.c:1761 #, fuzzy msgid "email server" msgstr "Server web TLS" #: src/ca-cli-callbacks.c:1837 #, fuzzy, c-format msgid "Error: Key generation failed: %s\n" msgstr "Generazione della chiave fallita" #: src/ca-cli-callbacks.c:1845 #, fuzzy, c-format msgid "Error: CSR generation failed: %s\n" msgstr "Generazione della chiave fallita" #: src/ca-cli-callbacks.c:1854 #, c-format msgid "Error: Failed to parse generated CSR\n" msgstr "" #: src/ca-cli-callbacks.c:1865 #, c-format msgid "Error: Failed to save CSR: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1879 msgid "CSR created with ID: %" msgstr "" #: src/ca-cli-callbacks.c:1903 #, fuzzy, c-format msgid "Error: Failed to sign certificate: %s\n" msgstr "Errore durante la firma del certificato" #: src/ca-cli-callbacks.c:1910 #, fuzzy, c-format msgid "Certificate generated successfully for: %s\n" msgstr "Certificato esportato correttamente" #: src/ca-cli-callbacks.c:1911 #, fuzzy, c-format msgid "Certificate type: %s\n" msgstr "Il certificato usa:\n" #: src/ca-cli-callbacks.c:1911 #, fuzzy msgid "Web Server" msgstr "Server web TLS" #: src/ca-cli-callbacks.c:1911 msgid "Email Server" msgstr "" #: src/ca-cli-callbacks.c:1925 msgid "Usage: renewcert " msgstr "" #: src/ca-cli-callbacks.c:1930 src/ca-cli-callbacks.c:1968 #, fuzzy msgid "The given certificate id is not valid" msgstr "La preferenza fornita non è valida" #: src/ca-cli-callbacks.c:1941 msgid "" "gnoMint will issue a new certificate with the same subject and SAN as this " "one, signed by the same CA, with a fresh keypair. The old certificate stays " "in place." msgstr "" #: src/ca-cli-callbacks.c:1944 #, fuzzy msgid "Renew? [Yes]/No " msgstr "Confermare? [Si]/No " #: src/ca-cli-callbacks.c:1955 #, fuzzy msgid "Certificate renewed. New certificate id: %" msgstr "Generazione del certificato fallita" #: src/ca-cli-callbacks.c:1963 msgid "Usage: exportchain " msgstr "" #: src/ca-cli-callbacks.c:1974 msgid "Cannot build chain PEM for that certificate." msgstr "" #: src/ca-cli-callbacks.c:1979 #, fuzzy msgid "Cannot write chain file." msgstr "Aggiungi un certificato CA autofirmato" #: src/ca-cli-callbacks.c:1985 #, c-format msgid "Full chain (leaf → root) written to %s\n" msgstr "" #: src/ca-cli-callbacks.c:1992 msgid "Usage: revokemany [cert-id ...]" msgstr "" #: src/ca-cli-callbacks.c:2008 #, fuzzy, c-format msgid "%d certificate revoked.\n" msgid_plural "%d certificates revoked.\n" msgstr[0] "Certificato revocato.\n" msgstr[1] "Certificato revocato.\n" #: src/ca-cli-callbacks.c:2016 msgid "Usage: deletemany [csr-id ...]" msgstr "" #: src/ca-cli-callbacks.c:2032 #, c-format msgid "%d CSR deleted.\n" msgid_plural "%d CSRs deleted.\n" msgstr[0] "" msgstr[1] "" #: src/ca-cli-callbacks.c:2092 msgid "Usage: search " msgstr "" #: src/ca-cli-callbacks.c:2099 #, c-format msgid "Matches (id\tserial\tsubject):\n" msgstr "" #: src/ca-cli-callbacks.c:2102 #, c-format msgid "%d match.\n" msgid_plural "%d matches.\n" msgstr[0] "" msgstr[1] "" #: src/ca-cli-callbacks.c:2126 #, fuzzy, c-format msgid "'%s' is not a certificate id in this database." msgstr "_Apri il database di certificato" #: src/ca-cli-callbacks.c:2134 #, c-format msgid "Cannot read PEM for cert id %s." msgstr "" #: src/ca-cli-callbacks.c:2152 msgid "Usage: diff " msgstr "" #: src/ca-cli-callbacks.c:2168 msgid "Field" msgstr "" #: src/ca-cli-callbacks.c:2181 #, c-format msgid "" "\n" "%d field differs.\n" msgid_plural "" "\n" "%d fields differ.\n" msgstr[0] "" msgstr[1] "" #: src/ca_creation.c:55 src/csr_creation.c:57 msgid "Generating new RSA key pair" msgstr "Generazione di una nuova coppia di chiavi RSA" #: src/ca_creation.c:64 src/ca_creation.c:88 src/ca_creation.c:109 #: src/ca_creation.c:128 src/csr_creation.c:66 src/csr_creation.c:87 #: src/csr_creation.c:104 src/csr_creation.c:121 msgid "Key generation failed" msgstr "Generazione della chiave fallita" #: src/ca_creation.c:78 src/csr_creation.c:79 msgid "Generating new DSA key pair" msgstr "Generazione di una nuova coppia di chiavi DSA" #: src/ca_creation.c:101 src/csr_creation.c:97 #, fuzzy msgid "Generating new ECDSA key pair" msgstr "Generazione di una nuova coppia di chiavi DSA" #: src/ca_creation.c:120 src/csr_creation.c:114 #, fuzzy msgid "Generating new Ed25519 key pair" msgstr "Generazione di una nuova coppia di chiavi RSA" #: src/ca_creation.c:139 msgid "Generating self-signed CA-Root cert" msgstr "" #: src/ca_creation.c:147 msgid "Certificate generation failed" msgstr "Generazione del certificato fallita" #: src/ca_creation.c:159 msgid "Creating CA database" msgstr "Creazione del database di CA" #: src/ca_creation.c:168 msgid "CA database creation failed" msgstr "Creazione del database di CA fallita" #: src/ca_creation.c:180 msgid "CA generated successfully" msgstr "CA generato correttamente" #: src/ca_file.c:207 #, c-format msgid "Error opening filename '%s'" msgstr "Errore nell'apertura del file '%s'" #: src/ca_file.c:310 msgid "" "The selected database has been created with a newer version of gnoMint than " "the currently installed." msgstr "" #: src/ca_file.c:1221 msgid "Cannot find last assigned serial number" msgstr "" #: src/ca_file.c:1410 msgid "Cannot find parent CA in database" msgstr "" #: src/ca_file.c:1600 msgid "" "This certificate already exists in the database: cannot insert it twice." msgstr "" #: src/ca_file.c:2044 msgid "" "The given file contains a valid private key. However, it has not been " "imported to the database because it doesn't match any key-less certificate " "or certificate request in the database." msgstr "" #: src/ca_file.c:2047 msgid "" "The given file contains a valid private key. However, it has not been " "imported to the database because it doesn't match any key-less certificate " "in the database." msgstr "" #: src/certificate_properties.c:151 msgid "" "This 32-bit build cannot represent dates after 2038-01-19, so it cannot " "distinguish a genuine date from a later one that overflowed. This value may " "be inaccurate." msgstr "" #: src/certificate_properties.c:383 #, fuzzy msgid "Unknown" msgstr "(sconosciuto)" #: src/certificate_properties.c:453 src/tls.c:1478 msgid "Certificate signing" msgstr "" #: src/certificate_properties.c:457 msgid "Key encipherment only" msgstr "" #: src/certificate_properties.c:459 msgid "Key decipherment only" msgstr "" #: src/certificate_properties.c:472 msgid "Version" msgstr "" #: src/certificate_properties.c:507 msgid "Serial Number" msgstr "" #: src/certificate_properties.c:522 src/certificate_properties.c:1262 msgid "Signature" msgstr "Firma" #: src/certificate_properties.c:525 src/certificate_properties.c:676 #: src/certificate_properties.c:679 src/certificate_properties.c:1228 msgid "Algorithm" msgstr "Algoritmo" #: src/certificate_properties.c:529 src/certificate_properties.c:686 #: src/certificate_properties.c:726 src/certificate_properties.c:763 #: src/certificate_properties.c:1232 msgid "Parameters" msgstr "" #: src/certificate_properties.c:529 src/certificate_properties.c:686 #: src/certificate_properties.c:763 src/certificate_properties.c:767 #: src/certificate_properties.c:781 src/certificate_properties.c:790 #: src/certificate_properties.c:1232 msgid "(unknown)" msgstr "(sconosciuto)" #: src/certificate_properties.c:563 msgid "Issuer" msgstr "" #: src/certificate_properties.c:598 msgid "Validity" msgstr "Validità" #: src/certificate_properties.c:603 msgid "Not Before" msgstr "Non prima" #: src/certificate_properties.c:610 msgid "Not After" msgstr "Non dopo" #: src/certificate_properties.c:616 msgid "Note" msgstr "" #: src/certificate_properties.c:617 msgid "" "This 32-bit build cannot represent dates after 2038-01-19, so a value marked " "⚠ may be a later date that overflowed and is inaccurate." msgstr "" #: src/certificate_properties.c:673 msgid "Subject Public Key Info" msgstr "Informazioni della chiave pubblica soggetto" #: src/certificate_properties.c:690 msgid "RSA PublicKey" msgstr "" #: src/certificate_properties.c:702 msgid "Modulus" msgstr "" #: src/certificate_properties.c:710 msgid "Public Exponent" msgstr "" #: src/certificate_properties.c:755 msgid "DSA PublicKey" msgstr "" #: src/certificate_properties.c:767 msgid "Subject Public Key" msgstr "Chiave pubblica del soggetto" #: src/certificate_properties.c:781 msgid "Issuer Unique ID" msgstr "" #: src/certificate_properties.c:790 msgid "Subject Unique ID" msgstr "ID univoco del soggetto" #: src/certificate_properties.c:813 src/certificate_properties.c:836 #: src/certificate_properties.c:945 src/certificate_properties.c:1058 #: src/certificate_properties.c:1085 src/certificate_properties.c:1124 #: src/certificate_properties.c:1182 src/certificate_properties.c:1457 #: src/san_manager.c:399 msgid "Value" msgstr "Valore" #: src/certificate_properties.c:875 src/certificate_properties.c:1018 msgid "DNS Name" msgstr "Nome DNS" #: src/certificate_properties.c:882 src/certificate_properties.c:1025 msgid "RFC822 Name" msgstr "" #: src/certificate_properties.c:905 src/certificate_properties.c:919 #: src/certificate_properties.c:927 msgid "IP" msgstr "IP" #: src/certificate_properties.c:936 src/certificate_properties.c:1049 msgid "Directory Name" msgstr "" #: src/certificate_properties.c:973 src/certificate_properties.c:1164 msgid "TRUE" msgstr "VERO" #: src/certificate_properties.c:973 src/certificate_properties.c:1164 msgid "FALSE" msgstr "FALSO" #: src/certificate_properties.c:977 msgid "CA" msgstr "CA" #: src/certificate_properties.c:981 msgid "Path Length Constraint" msgstr "" #: src/certificate_properties.c:1154 msgid "Extensions" msgstr "Estensioni" #: src/certificate_properties.c:1166 msgid "Critical" msgstr "" #: src/certificate_properties.c:1199 msgid "Certificate" msgstr "" #: src/certificate_properties.c:1225 msgid "Signature Algorithm" msgstr "" #: src/certificate_properties.c:1446 msgid "Name" msgstr "" #: src/certificate_properties.c:1477 src/tls.c:1494 msgid "TLS WWW Server" msgstr "" #: src/certificate_properties.c:1478 msgid "TLS WWW Client" msgstr "" #: src/certificate_properties.c:1484 msgid "Subject Directory Attributes" msgstr "" #: src/certificate_properties.c:1485 msgid "Subject Key Identifier" msgstr "" #: src/certificate_properties.c:1486 msgid "Key Usage" msgstr "" #: src/certificate_properties.c:1487 msgid "Private Key Usage Period" msgstr "" #: src/certificate_properties.c:1489 msgid "Basic Constraints" msgstr "" #: src/certificate_properties.c:1490 msgid "Name Constraints" msgstr "" #: src/certificate_properties.c:1491 msgid "CRL Distribution Points" msgstr "" #: src/certificate_properties.c:1492 msgid "Certificate Policies" msgstr "" #: src/certificate_properties.c:1493 msgid "Policy Mappings" msgstr "" #: src/certificate_properties.c:1494 msgid "Authority Key Identifier" msgstr "" #: src/certificate_properties.c:1495 msgid "Policy Constraints" msgstr "" #: src/certificate_properties.c:1496 msgid "Extended Key Usage" msgstr "" #: src/certificate_properties.c:1497 msgid "Delta CRL Distribution Point" msgstr "" #: src/certificate_properties.c:1498 msgid "Inhibit Any-Policy" msgstr "" #: src/creation_process_window.c:69 msgid "CA creation process finished" msgstr "" #: src/creation_process_window.c:193 msgid "Creation process cancelled" msgstr "" #: src/creation_process_window.c:215 msgid "CSR creation process finished" msgstr "" #: src/creation_process_window.c:288 msgid "Creating Certificate Signing Request" msgstr "" #: src/crl.c:101 msgid "CRL generated successfully" msgstr "" #: src/crl.c:146 msgid "Export Certificate Revocation List" msgstr "" #: src/crl.c:180 src/crl.c:253 src/crl.c:299 msgid "There was an error while generating CRL." msgstr "" #: src/crl.c:189 msgid "There was an error while writing CRL." msgstr "" #: src/crl.c:201 src/crl.c:227 src/crl.c:268 src/crl.c:330 src/crl.c:351 msgid "There was an error while exporting CRL." msgstr "" #: src/crl.c:238 src/crl.c:369 msgid "There was an error while getting revoked certificates." msgstr "" #: src/csr_creation.c:131 msgid "Generating CSR" msgstr "" #: src/csr_creation.c:140 msgid "CSR generation failed" msgstr "" #: src/csr_creation.c:151 msgid "Saving CSR in database" msgstr "" #: src/csr_creation.c:169 msgid "CSR couldn't be saved" msgstr "" #: src/csr_creation.c:180 msgid "CSR generated successfully" msgstr "" #: src/csr_properties.c:91 msgid "" "This Certificate Signing Request has its corresponding private key saved " "in a external file." msgstr "" #: src/dialog.c:123 #, c-format msgid "" "\n" "The password must have, at least, %d characters\n" msgstr "" #: src/dialog.c:581 msgid "To do. Feature not implemented yet." msgstr "" #: src/export.c:43 src/export.c:48 src/export.c:53 msgid "There was an error while saving Diffie-Hellman parameters." msgstr "" #: src/export.c:79 src/export.c:138 src/export.c:146 src/export.c:200 #: src/export.c:210 src/export.c:304 src/export.c:341 src/export.c:376 #: src/export.c:384 src/export.c:424 src/export.c:433 src/export.c:474 msgid "There was an error while exporting private key." msgstr "" #: src/export.c:99 src/export.c:284 src/export.c:357 src/export.c:455 msgid "There was an error while getting private key." msgstr "" #: src/export.c:110 src/export.c:248 msgid "There was an error while uncrypting private key." msgstr "" #: src/export.c:113 src/export.c:264 msgid "" "You need to supply a passphrase for protecting the exported private key, so " "nobody else but authorized people can use it. This passphrase will be asked " "by any application that will make use of the private key." msgstr "" #: src/export.c:116 src/export.c:267 src/export.c:536 src/export.c:715 msgid "Insert passphrase (8 characters or more):" msgstr "" #: src/export.c:116 src/export.c:267 src/export.c:536 src/export.c:715 msgid "Insert passphrase (confirm):" msgstr "" #: src/export.c:117 src/export.c:268 src/export.c:537 src/export.c:716 msgid "The introduced passphrases are distinct." msgstr "" #: src/export.c:120 src/export.c:178 msgid "Operation cancelled." msgstr "" #: src/export.c:130 src/export.c:190 msgid "There was an error while password-protecting private key." msgstr "" #: src/export.c:368 src/export.c:415 msgid "There was an error while decrypting private key." msgstr "" #: src/export.c:513 src/export.c:747 msgid "Unsupported operation: you cannot generate a PKCS#12 for a CSR." msgstr "" #: src/export.c:521 src/export.c:530 src/export.c:695 src/export.c:731 msgid "" "There was an error while getting the certificate and private key from the " "internal database." msgstr "" #: src/export.c:533 src/export.c:712 msgid "" "You need to supply a passphrase for protecting the exported certificate, so " "nobody else but authorized people can use it. This passphrase will be asked " "by any application that will import the certificate." msgstr "" #: src/export.c:555 src/export.c:629 msgid "There was an error while generating the PKCS#12 package." msgstr "" #: src/export.c:569 src/export.c:578 src/export.c:652 src/export.c:663 msgid "There was an error while exporting the certificate." msgstr "" #: src/gnomint-cli.c:59 msgid "- A Certification Authority manager" msgstr "" #: src/gnomint-cli.c:62 #, c-format msgid "Failed to initialize: %s\n" msgstr "" #: src/import.c:171 #, fuzzy, c-format msgid "" "The whole selected file, or some of its elements, seems to\n" "be cyphered using a password or passphrase. For importing\n" "the file into gnoMint database, you must provide an \n" "appropriate password.\n" msgstr "" "L'intero file selezionato, o alcuni dei suoi elementi, sembra essere cifrato " "utilizzando una password o una passphrase.\n" "\n" "Per importare il file in database gnoMint, è necessario fornire una password " "appropriata." #: src/import.c:176 #, c-format msgid "Please introduce password for `%s'" msgstr "" #: src/import.c:218 #, c-format msgid "" "Couldn't import the certificate request. \n" "The database returned this error: \n" "\n" "'%s'" msgstr "" #: src/import.c:298 msgid "" "The imported certificate expires after 2038-01-19, a date this 32-bit build " "cannot represent. Its stored expiration has been capped and may be " "inaccurate. The certificate itself is unchanged; open it on a 64-bit system " "to see the exact date." msgstr "" #: src/import.c:310 #, c-format msgid "" "Couldn't import the certificate. \n" "The database returned this error: \n" "\n" "'%s'" msgstr "" #: src/import.c:666 src/import.c:852 msgid "PKCS#8 crypted private key" msgstr "Chiave privata criptata PKCS#8" #: src/import.c:677 src/import.c:862 msgid "The given password doesn't match the one used for crypting this part" msgstr "" "La password fornita non corrisponde a quella utilizzata per criptare questa " "parte" #: src/import.c:771 msgid "Encrypted PKCS#12 bag" msgstr "" #: src/import.c:788 msgid "" "The given password doesn't match with the password used for encrypting this " "part." msgstr "" "La password fornita non corrisponde con la password utilizzata per criptare " "questa parte." #: src/import.c:999 msgid "Couldn't find any supported format in the given file" msgstr "Impossibile trovare un formato supportato nel file fornito" #: src/import.c:1012 src/import.c:1363 #, c-format msgid "Couldn't open %s file. Check permissions." msgstr "Impossibile aprire il file %s. Controllare i permessi." #: src/import.c:1039 #, c-format msgid "Couldn't recognize the file %s as a RSA or DSA private key." msgstr "Impossibile riconoscere il file %s come una chiave privata RSA o DSA." #: src/import.c:1055 #, c-format msgid "Private key for %s" msgstr "Chiave privata per %s" #: src/import.c:1057 #, c-format msgid "Private key %s" msgstr "Chiave privata %s" #: src/import.c:1092 msgid "Problem while calling to openssl for decyphering private key." msgstr "" #: src/import.c:1100 #, c-format msgid "" "OpenSSL has returned the following error while trying to decypher the " "private key:\n" "\n" "%s" msgstr "" "OpenSSL ha fornito il seguente errore mentre cercava di decifrare la chiave " "privata:\n" "\n" "%s" #: src/import.c:1211 msgid "There was a problem while importing the public CA root certificate" msgstr "" #: src/import.c:1225 msgid "CA Root certificate" msgstr "" #: src/import.c:1227 msgid "" "There was a problem while importing the private key corresponding to CA root " "certificate" msgstr "" "Si è verificato un problema durante l'importazione della chiave privata " "corrispondente al certificato CA root" #: src/import.c:1237 msgid "There was a problem while opening the directory certs/." msgstr "" #: src/import.c:1261 msgid "There was a problem while opening the directory newcerts/." msgstr "" #: src/import.c:1288 msgid "There was a problem while opening the directory req." msgstr "" #: src/import.c:1314 msgid "There was a problem while opening the directory crl/." msgstr "" #: src/import.c:1336 msgid "There was a problem while opening the directory keys/." msgstr "" #: src/import.c:1394 msgid "Files in the directory don't belong to any supported CA format." msgstr "" #: src/main.c:567 #, c-format msgid "" "Problem when creating '%s' CA database:\n" "%s" msgstr "" #: src/main.c:577 #, c-format msgid "Problem when opening new '%s' CA database" msgstr "" #: src/main.c:591 msgid "Create new CA database" msgstr "" #: src/main.c:616 #, c-format msgid "Problem when opening '%s' CA database" msgstr "" #: src/main.c:630 msgid "Open CA database" msgstr "" #: src/main.c:662 msgid "Save CA database as..." msgstr "" #: src/main.c:722 msgid "" "gnoMint is a program for creating and managing Certification Authorities, " "and their certificates" msgstr "" #: src/main.c:725 msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU General Public License as published by the Free " "Software Foundation; either version 3 of the License, or (at your option) " "any later version.\n" "\n" "This program is distributed in the hope that it will be useful, but WITHOUT " "ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or " "FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for " "more details.\n" "\n" "You should have received a copy of the GNU General Public License along with " "this program; if not, write to the Free Software Foundation, Inc., 51 " "Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA." msgstr "" #: src/main.c:741 msgid "Code collaborators" msgstr "" #: src/new_ca_window.c:191 src/new_req_window.c:222 msgid "ECDSA curve:" msgstr "" #: src/new_ca_window.c:219 msgid "Please enter a Common Name (CN) for the CA." msgstr "" #: src/new_cert.c:197 msgid "" "The policy of this CA obligue the country field of the certificates to be " "the same as the one in the CA cert." msgstr "" #: src/new_cert.c:203 msgid "" "The policy of this CA obligue the state/province field of the certificates " "to be the same as the one in the CA cert." msgstr "" #: src/new_cert.c:209 msgid "" "The policy of this CA obligue the locality/city field of the certificates to " "be the same as the one in the CA cert." msgstr "" #: src/new_cert.c:215 msgid "" "The policy of this CA obligue the organization field of the certificates to " "be the same as the one in the CA cert." msgstr "" #: src/new_cert.c:221 msgid "" "The policy of this CA obligue the organizational unit field of the " "certificates to be the same as the one in the CA cert." msgstr "" #: src/new_cert.c:659 msgid "" "The expiration date of the new certificate is after the expiration date of " "the CA certificate.\n" "\n" "According to the current standards, this is not allowed. The new certificate " "will be created with the same expiration date as the CA certificate." msgstr "" #: src/new_cert.c:734 msgid "" "This system uses a 32-bit time_t and cannot represent dates after " "2038-01-19. The new certificate's expiration date has been clamped to that " "limit. To issue longer-lived certificates, run gnoMint on a 64-bit platform." msgstr "" #: src/new_cert.c:770 src/new_cert.c:809 src/new_cert.c:838 msgid "Error while signing CSR." msgstr "" #: src/new_req_window.c:374 #, fuzzy msgid "Please enter a Common Name (CN) for the certificate request." msgstr "Autorità di Certificazione" #: src/pkey_manage.c:124 #, c-format msgid "" "The file that holds private key for certificate '%s' is password-protected.\n" "\n" "Please, insert the password corresponding to this file." msgstr "" #: src/pkey_manage.c:163 #, c-format msgid "" "The file that holds private key for certificate\n" "'%s' is password-protected.\n" "\n" msgstr "" #: src/pkey_manage.c:211 src/pkey_manage.c:303 msgid "" "The given password doesn't match with the one used while crypting the file." msgstr "" #: src/pkey_manage.c:226 src/pkey_manage.c:315 src/pkey_manage.c:476 msgid "" "The file designated in database contains a private key, but it is not the " "private key corresponding to the certificate." msgstr "" #: src/pkey_manage.c:229 src/pkey_manage.c:318 src/pkey_manage.c:479 msgid "" "The file designated in database doesn't contain any recognized private key." msgstr "" #: src/pkey_manage.c:233 src/pkey_manage.c:500 msgid "The file designated in database couldn't be opened." msgstr "Il file designato nel database non può essere aperto." #: src/pkey_manage.c:236 src/pkey_manage.c:503 msgid "The file designated in database doesn't exist." msgstr "Il file designato nel database non esiste." #: src/pkey_manage.c:360 #, fuzzy msgid "Select private key file" msgstr "Scegliere un file con chiave privata. gnoMint" #: src/pkey_manage.c:1069 src/pkey_manage.c:1164 msgid "The given password doesn't match the one used in the database" msgstr "La password fornita non corrisponde a quella utilizzata nel database" #: src/pkey_manage.c:1151 #, c-format msgid "" "This action requires using one or more private keys saved in the database.\n" msgstr "" "Questa azione richiede l'utilizzo di una o più chiavi private salvate nel " "database.\n" #: src/pkey_manage.c:1152 msgid "Please insert the database password:" msgstr "Si prega di inserire la password del database:" #: src/san_manager.c:71 msgid "Value cannot be empty" msgstr "" #: src/san_manager.c:82 msgid "Invalid DNS name. Use format: example.com or *.example.com" msgstr "" #: src/san_manager.c:93 msgid "Invalid IP address. Use IPv4 (e.g., 192.168.1.1) or IPv6 format" msgstr "" #: src/san_manager.c:103 msgid "Invalid email address. Use format: user@example.com" msgstr "" #: src/san_manager.c:113 msgid "Invalid URI. Must start with http://, https://, ftp://, or ldap://" msgstr "" #: src/san_manager.c:389 msgid "Type" msgstr "" #: src/tls.c:198 src/tls.c:231 src/tls.c:276 src/tls.c:307 #, c-format msgid "Error initializing private key structure." msgstr "Errore di inizializzazione della struttura di chiave privata." #: src/tls.c:204 src/tls.c:237 src/tls.c:281 src/tls.c:311 #, c-format msgid "Error creating private key: %d" msgstr "Errore nella creazione della chiave privata: %d" #: src/tls.c:215 src/tls.c:248 src/tls.c:289 src/tls.c:321 src/tls.c:794 #: src/tls.c:1204 #, c-format msgid "Error exporting private key to PEM structure." msgstr "Errore nell'esportazione della chiave privata nella struttura PEM." #: src/tls.c:656 #, c-format msgid "Error when initializing certificate structure" msgstr "Errore durante l'inizializzazione della struttura del certificato" #: src/tls.c:662 src/tls.c:956 #, c-format msgid "Error when setting certificate version" msgstr "Errore durante l'impostazione della versione del certificato" #: src/tls.c:672 src/tls.c:969 #, c-format msgid "Error when setting certificate serial number" msgstr "Errore durante l'impostazione del numero di serie del certificato" #: src/tls.c:681 src/tls.c:978 #, c-format msgid "Error when setting activation time" msgstr "Errore durante l'impostazione del tempo di attivazione" #: src/tls.c:686 src/tls.c:986 #, c-format msgid "Error when setting expiration time" msgstr "Errore durante l'impostazione del tempo di scadenza" #: src/tls.c:740 src/tls.c:1040 #, c-format msgid "Error when setting basicConstraint extension" msgstr "Errore durante l'impostazione dell'estensione basicConstraint" #: src/tls.c:745 src/tls.c:1082 #, c-format msgid "Error when setting keyUsage extension" msgstr "Errore durante l'impostazione dell'estensione keyUsage" #: src/tls.c:756 src/tls.c:864 src/tls.c:1120 #, fuzzy, c-format msgid "Error when setting Subject Alternative Name extension" msgstr "Errore durante l'impostazione dell'estensione basicConstraint" #: src/tls.c:768 src/tls.c:1056 #, c-format msgid "Error when setting subject key identifier extension" msgstr "" #: src/tls.c:772 src/tls.c:1030 #, c-format msgid "Error when setting authority key identifier extension" msgstr "" #: src/tls.c:782 #, c-format msgid "Error when signing self-signed certificate" msgstr "Errore durante la firma del certificato autofirmato" #: src/tls.c:813 #, fuzzy, c-format msgid "Error when initializing privkey structure" msgstr "Errore nell'inizializzazione della struttura del csr" #: src/tls.c:817 #, fuzzy, c-format msgid "Error when importing private key into privkey structure" msgstr "Errore nell'esportazione della chiave privata nella struttura PEM." #: src/tls.c:821 #, c-format msgid "Error when initializing csr structure" msgstr "Errore nell'inizializzazione della struttura del csr" #: src/tls.c:825 #, c-format msgid "Error when setting csr version" msgstr "Errore nell'impostazione della versione del csr" #: src/tls.c:869 #, c-format msgid "Error when signing self-signed csr" msgstr "Errore durante la firma del csr autofirmato" #: src/tls.c:880 #, c-format msgid "Error exporting CSR to PEM structure." msgstr "Errore nell'esportazione del CSR nella struttura PEM." #: src/tls.c:933 #, fuzzy, c-format msgid "Error when importing CA private key" msgstr "Errore nell'esportazione della chiave privata nella struttura PEM." #: src/tls.c:940 #, c-format msgid "Error when initializing crt structure" msgstr "Errore durante l'inizializzazione della struttura del crt" #: src/tls.c:948 #, c-format msgid "Error when copying data from CSR to certificate structure" msgstr "" "Errore durante la copia dei dati dal CSR alla struttura del certificato" #: src/tls.c:1182 #, fuzzy, c-format msgid "Error when signing certificate: %s" msgstr "Errore durante la firma del certificato" #: src/tls.c:1482 msgid "Key encipher only" msgstr "" #: src/tls.c:1484 msgid "Key decipher only" msgstr "Solo decifratura della chiave" #: src/tls.c:1496 msgid "TLS WWW Client." msgstr "Client TLS WWW" #: src/wizard_window.c:239 #, fuzzy, c-format msgid "" "Key generation failed:\n" "%s" msgstr "Generazione della chiave fallita" #: src/wizard_window.c:249 #, fuzzy, c-format msgid "" "CSR generation failed:\n" "%s" msgstr "Generazione della chiave fallita" #: src/wizard_window.c:260 msgid "Failed to parse generated CSR." msgstr "" #: src/wizard_window.c:271 #, c-format msgid "" "Failed to save CSR:\n" "%s" msgstr "" #: src/wizard_window.c:294 #, fuzzy, c-format msgid "" "Failed to sign certificate:\n" "%s" msgstr "Aggiungi un certificato CA autofirmato" #: src/wizard_window.c:297 #, fuzzy msgid "Certificate generated successfully!" msgstr "Certificato esportato correttamente" #: src/wizard_window.c:311 #, fuzzy msgid "Please enter a server name." msgstr "Si prega di inserire la password" #: src/wizard_window.c:318 #, fuzzy msgid "Please select a Certificate Authority." msgstr "Autorità di Certificazione" #: src/wizard_window.c:325 #, fuzzy msgid "Invalid Certificate Authority selected." msgstr "* Utilizzo dell'autorità certificativa disabilitato.\n" #: src/wizard_window.c:412 msgid "No Certificate Authority found. Please create a CA first." msgstr "" #~ msgid "Certificates" #~ msgstr "Certificati" #~ msgid "Certificate Signing Requests" #~ msgstr "Richieste di firma di certificato (CSR)" #~ msgid "Shows the certificate properties window" #~ msgstr "Visualizza la finestra delle proprietà del certificato" #~ msgid "" #~ "Exports the certificate so it can be imported by any other application" #~ msgstr "" #~ "Esporta il certificato per poterlo importare con qualsiasi altra " #~ "applicazione" #~ msgid "" #~ "Extracts the private key of the selected \n" #~ "certificate from the database to an \n" #~ "external file. This file must be provided \n" #~ "each time the certificate will be used" #~ msgstr "" #~ "Estrae la chiave privata del certificato\n" #~ "selezionato dal database ad un\n" #~ "file esterno. Questo file deve essere fornito\n" #~ "ogni volta che il certificato verrà utilizzato" #~ msgid "Shows the CSR properties window" #~ msgstr "Visualizza la finestra delle proprietà del CSR" #~ msgid "Exports the CSR so it can be imported by any other application" #~ msgstr "" #~ "Esporta il CSR per poterlo importare con qualsiasi altra applicazione" #~ msgid "" #~ "Extracts the private key of the selected \n" #~ "certificate from the database to an \n" #~ "external file. This file must be provided \n" #~ "each time the CSR will be used" #~ msgstr "" #~ "Estrae la chiave privata del certificato\n" #~ "selezionato dal database ad un\n" #~ "file esterno. Questo file deve essere fornito\n" #~ "ogni volta che il CSR verrà utilizzato" #~ msgid "Extract the saved private key to an external file or device" #~ msgstr "Estrarre la chiave privata salvata ad un file esterno o periferico" #, fuzzy #~ msgid "Generate the current Certificate Revocation List" #~ msgstr "Genera l'attuale lista di revoca certificati" #, fuzzy #~ msgid "<b>Fingerprints</b>" #~ msgstr "Impronte digitali" #, fuzzy #~ msgid "<b>Certificate subject</b>" #~ msgstr "Soggetto del certificato" #, fuzzy #~ msgid "<b>Certificate hierarchy</b>" #~ msgstr "Gerarchia dei certificati" #, fuzzy #~ msgid "<b>Certificate fields</b>" #~ msgstr "Campi dei certificati" #, fuzzy #~ msgid "<big>CA properties</big>" #~ msgstr "Proprietà CA\n" #, fuzzy #~ msgid "<b>Certificate uses</b>" #~ msgstr "Utilizzi del certificato" #, fuzzy #~ msgid "<b>Certificate purposes</b>" #~ msgstr "Proposito dei certificati" #~ msgid "Password protection\n" #~ msgstr "Protezione Password\n" #~ msgid "Enter password again for confirmation:" #~ msgstr "Inserire nuovamente la password per conferma:" gnomint-1.6.4/po/Makevars0000644000000000000000000000100215212761266014046 0ustar00rootroot# Makevars -- variables for po/Makefile (GNU gettext) DOMAIN = $(PACKAGE) subdir = po top_builddir = .. XGETTEXT_OPTIONS = \ --from-code=UTF-8 \ --keyword=_ --keyword=N_ --keyword=C_:1c,2 --keyword=NC_:1c,2 \ --flag=g_strdup_printf:1:c-format \ --flag=g_string_printf:2:c-format COPYRIGHT_HOLDER = David Marín Carreño MSGID_BUGS_ADDRESS = davefx@gmail.com EXTRA_LOCALE_CATEGORIES = USE_MSGCTXT = no MSGMERGE_OPTIONS = MSGINIT_OPTIONS = PO_DEPENDS_ON_POT = yes DIST_DEPENDS_ON_UPDATE_PO = yes gnomint-1.6.4/po/fi.po0000644000000000000000000031131315212761320013310 0ustar00rootroot# Finnish translation for gnomint # Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 # This file is distributed under the same license as the gnomint package. # FIRST AUTHOR , 2009. # msgid "" msgstr "" "Project-Id-Version: gnomint\n" "Report-Msgid-Bugs-To: davefx@gmail.com\n" "POT-Creation-Date: 2026-06-12 10:43+0000\n" "PO-Revision-Date: 2009-06-03 22:28+0000\n" "Last-Translator: Ilkka Tuohela \n" "Language-Team: Finnish \n" "Language: fi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-08-11 09:00+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: gconf/org.gnome.gnomint.gschema.xml:7 msgid "Window size" msgstr "Ikkunan koko" #: gconf/org.gnome.gnomint.gschema.xml:8 msgid "" "The (width,length) size gnoMint should take when started. This cannot be " "smaller than (320,200)." msgstr "" #: gconf/org.gnome.gnomint.gschema.xml:16 #, fuzzy msgid "Revoked certificates visibility" msgstr "Peruttujen varmenteiden näkyvyys" #: gconf/org.gnome.gnomint.gschema.xml:17 msgid "Whether the revoked certificates should be visible." msgstr "Näytetäänkö perutut varmenteet." #: gconf/org.gnome.gnomint.gschema.xml:24 #, fuzzy msgid "Expired certificates visibility" msgstr "Peruttujen varmenteiden näkyvyys" #: gconf/org.gnome.gnomint.gschema.xml:25 msgid "" "Whether already-expired certificates should be visible in the certificates " "tree. CAs are always visible regardless of this setting so that any still-" "valid certificates they signed remain reachable." msgstr "" #: gconf/org.gnome.gnomint.gschema.xml:35 msgid "Days before expiration to highlight certificates in amber" msgstr "" #: gconf/org.gnome.gnomint.gschema.xml:36 msgid "" "Certificates whose effective validity ends within this many days are shown " "in amber in the certificates tree, as a heads-up that they should be renewed " "soon. Setting this to 0 disables the amber highlight (certificates appear " "either normally or in gray for already-expired)." msgstr "" #: gconf/org.gnome.gnomint.gschema.xml:47 #, fuzzy msgid "Certificate requests visibility" msgstr "Varmennuspyyntöjen näkyvyys" #: gconf/org.gnome.gnomint.gschema.xml:48 #, fuzzy msgid "Whether the certificate requests should be visible." msgstr "Näytetäänkö perutut varmenteet." #: gconf/org.gnome.gnomint.gschema.xml:55 #, fuzzy msgid "Automatic exporting of certificates for gnome-keyring" msgstr "Varmenteiden automaattinen vienti gnome-keyring -avainnippuun" #: gconf/org.gnome.gnomint.gschema.xml:56 #, fuzzy msgid "" "Whether the created or imported certificates are automatically exported to " "gnome-keyring certificate-store." msgstr "Varmenteiden automaattinen vienti gnome-keyring -avainnippuun" #: gui/certificate_popup_menu.ui:7 gui/csr_popup_menu.ui:7 #: gui/main_window.ui:45 #, fuzzy msgid "Properties" msgstr "CSR-aihe" #: gui/certificate_popup_menu.ui:13 gui/main_window.ui:35 #, fuzzy msgid "Export full c_hain..." msgstr "Peruttujen varmenteiden näkyvyys" #: gui/certificate_popup_menu.ui:17 gui/csr_popup_menu.ui:13 #: gui/main_window.ui:34 msgid "E_xport" msgstr "" #: gui/certificate_popup_menu.ui:21 gui/csr_popup_menu.ui:17 #: gui/main_window.ui:23 msgid "Extrac_t private key" msgstr "" #: gui/certificate_popup_menu.ui:27 gui/main_window.ui:24 msgid "Re_new with fresh key" msgstr "" #: gui/certificate_popup_menu.ui:31 msgid "_Compare with PEM file…" msgstr "" #: gui/certificate_popup_menu.ui:35 gui/main_window.ui:25 msgid "Revo_ke" msgstr "" #: gui/certificate_popup_menu.ui:41 gui/main_window.ui:21 msgid "Add _Web Server Certificate (wizard)" msgstr "" #: gui/certificate_popup_menu.ui:45 gui/main_window.ui:22 msgid "Add _Email Server Certificate (wizard)" msgstr "" #: gui/certificate_properties_dialog.ui:19 #, fuzzy msgid "Certificate properties - gnoMint" msgstr "Varmennuspyyntöjen näkyvyys" #: gui/certificate_properties_dialog.ui:54 #, fuzzy msgid "This certificate has been verified for the following uses:" msgstr "Tämä varmenne on vahvistettu seuraavia käyttökohteita varten:" #: gui/certificate_properties_dialog.ui:77 msgid "MD5FINGERPRINT" msgstr "" #: gui/certificate_properties_dialog.ui:88 msgid "SHA1FINGERPRINT" msgstr "" #: gui/certificate_properties_dialog.ui:99 #: gui/certificate_properties_dialog.ui:132 #: gui/certificate_properties_dialog.ui:176 #: gui/certificate_properties_dialog.ui:231 gui/creation_process_window.ui:15 #: gui/creation_process_window.ui:61 gui/csr_properties_dialog.ui:109 #: gui/new_ca_window.ui:56 gui/new_ca_window.ui:306 gui/new_ca_window.ui:521 #: gui/new_req_window.ui:46 gui/new_req_window.ui:157 gui/new_req_window.ui:413 msgid " " msgstr " " #: gui/certificate_properties_dialog.ui:110 msgid "CertExpirationDate" msgstr "" #: gui/certificate_properties_dialog.ui:121 msgid "CertActivationDate" msgstr "" #: gui/certificate_properties_dialog.ui:143 msgid "CAOU" msgstr "" #: gui/certificate_properties_dialog.ui:154 msgid "CAO" msgstr "" #: gui/certificate_properties_dialog.ui:165 msgid "CACN" msgstr "" #: gui/certificate_properties_dialog.ui:187 msgid "CertSN" msgstr "" #: gui/certificate_properties_dialog.ui:198 gui/csr_properties_dialog.ui:63 #, fuzzy msgid "SubjectOU" msgstr "Virhe asetettaessa CSR-versiota" #: gui/certificate_properties_dialog.ui:209 gui/csr_properties_dialog.ui:87 #, fuzzy msgid "SubjectO" msgstr "Virhe asetettaessa CSR-versiota" #: gui/certificate_properties_dialog.ui:220 gui/csr_properties_dialog.ui:98 #, fuzzy msgid "SubjectCN" msgstr "Virhe asetettaessa CSR-versiota" #: gui/certificate_properties_dialog.ui:242 msgid "MD5 fingerprint" msgstr "" #: gui/certificate_properties_dialog.ui:253 msgid "SHA1 fingerprint" msgstr "" #: gui/certificate_properties_dialog.ui:264 #, fuzzy msgid "Fingerprints" msgstr "Sormenjäljet" #: gui/certificate_properties_dialog.ui:276 msgid "Expires on" msgstr "" #: gui/certificate_properties_dialog.ui:287 msgid "Activated on" msgstr "" #: gui/certificate_properties_dialog.ui:298 msgid "Validity" msgstr "Kelpoisuus" #: gui/certificate_properties_dialog.ui:310 #: gui/certificate_properties_dialog.ui:389 gui/csr_properties_dialog.ui:120 msgid "Organizational Unit (OU)" msgstr "" #: gui/certificate_properties_dialog.ui:321 #: gui/certificate_properties_dialog.ui:400 gui/csr_properties_dialog.ui:142 msgid "Organization (O)" msgstr "" #: gui/certificate_properties_dialog.ui:332 #: gui/certificate_properties_dialog.ui:411 gui/csr_properties_dialog.ui:153 msgid "Common Name (CN)" msgstr "" #: gui/certificate_properties_dialog.ui:343 #, fuzzy msgid "Emmited by" msgstr "Kelpoisuus" #: gui/certificate_properties_dialog.ui:355 #, fuzzy msgid "Subject Alternative Names" msgstr "Virhe asetettaessa CSR-versiota" #: gui/certificate_properties_dialog.ui:378 msgid "Serial number" msgstr "" #: gui/certificate_properties_dialog.ui:422 #, fuzzy msgid "Certificate subject" msgstr "CSR-aihe" #: gui/certificate_properties_dialog.ui:434 msgid "SHA256FINGERPRINT" msgstr "" #: gui/certificate_properties_dialog.ui:449 msgid "SHA256 fingerprint" msgstr "" #: gui/certificate_properties_dialog.ui:460 msgid "SHA512FINGERPRINT" msgstr "" #: gui/certificate_properties_dialog.ui:475 msgid "SHA512 fingerprint" msgstr "" #: gui/certificate_properties_dialog.ui:486 #: gui/certificate_properties_dialog.ui:509 gui/csr_properties_dialog.ui:176 msgid "Email address" msgstr "" #: gui/certificate_properties_dialog.ui:536 gui/csr_properties_dialog.ui:203 msgid "General" msgstr "" #: gui/certificate_properties_dialog.ui:557 #, fuzzy msgid "Certificate hierarchy" msgstr "Varmennehiararkia" #: gui/certificate_properties_dialog.ui:582 #, fuzzy msgid "Certificate fields" msgstr "Varmenteen kentät" #: gui/certificate_properties_dialog.ui:605 msgid "Details" msgstr "" #: gui/certificate_properties_dialog.ui:623 msgid "" "\n" "It is recommended that all the certificates generated by a CA\n" "share the same properties.\n" "If you want to generate certificates with different properties, you\n" "should create a hierarchy of CAs, each one with its own policy for\n" "certificate generation.\n" "\n" "Please, define the maximum set of properties for the\n" "certificates that this CA will be able to generate:\n" msgstr "" #: gui/certificate_properties_dialog.ui:649 msgid "" "Maximum number of months before\n" "expiration of the new generated certificates:" msgstr "" #: gui/certificate_properties_dialog.ui:686 msgid "Hours between CRL updates:" msgstr "" #: gui/certificate_properties_dialog.ui:711 msgid "CRL distribution URL:" msgstr "" #: gui/certificate_properties_dialog.ui:727 #, fuzzy msgid "CRL Properties" msgstr "CSR-aihe" #: gui/certificate_properties_dialog.ui:750 msgid "Country" msgstr "" #: gui/certificate_properties_dialog.ui:761 msgid "State or Province name" msgstr "" #: gui/certificate_properties_dialog.ui:778 #: gui/certificate_properties_dialog.ui:802 #: gui/certificate_properties_dialog.ui:859 #: gui/certificate_properties_dialog.ui:883 #: gui/certificate_properties_dialog.ui:907 msgid "must be the same" msgstr "" #: gui/certificate_properties_dialog.ui:786 #: gui/certificate_properties_dialog.ui:810 #: gui/certificate_properties_dialog.ui:867 #: gui/certificate_properties_dialog.ui:891 #: gui/certificate_properties_dialog.ui:915 msgid "may differ" msgstr "" #: gui/certificate_properties_dialog.ui:820 msgid "City" msgstr "" #: gui/certificate_properties_dialog.ui:831 msgid "Organization" msgstr "" #: gui/certificate_properties_dialog.ui:842 msgid "Organizational unit" msgstr "" #: gui/certificate_properties_dialog.ui:927 #, fuzzy msgid "Inherited fields from CA subject" msgstr "CA-aiheesta perityt kentät" #: gui/certificate_properties_dialog.ui:952 gui/new_cert_window.ui:464 #: src/tls.c:1463 msgid "Certification Authority" msgstr "" #: gui/certificate_properties_dialog.ui:963 gui/new_cert_window.ui:487 #: src/certificate_properties.c:445 src/tls.c:1470 msgid "Non repudiation" msgstr "" #: gui/certificate_properties_dialog.ui:974 gui/new_cert_window.ui:440 #: src/certificate_properties.c:447 src/tls.c:1472 msgid "Key encipherment" msgstr "" #: gui/certificate_properties_dialog.ui:986 gui/new_cert_window.ui:428 #: src/certificate_properties.c:449 src/tls.c:1474 msgid "Data encipherment" msgstr "" #: gui/certificate_properties_dialog.ui:998 gui/new_cert_window.ui:475 #: src/certificate_properties.c:451 src/tls.c:1476 msgid "Key agreement" msgstr "" #: gui/certificate_properties_dialog.ui:1010 gui/new_cert_window.ui:452 #: src/certificate_properties.c:443 src/tls.c:1468 msgid "Digital signature" msgstr "" #: gui/certificate_properties_dialog.ui:1022 gui/new_cert_window.ui:498 #: src/certificate_properties.c:455 src/tls.c:1480 msgid "CRL signing" msgstr "" #: gui/certificate_properties_dialog.ui:1043 #, fuzzy msgid "Uses of new generated certificates" msgstr "Uusien luotujen varmenteiden käyttökohteet" #: gui/certificate_properties_dialog.ui:1067 gui/new_cert_window.ui:621 #: src/certificate_properties.c:1480 src/tls.c:1500 msgid "Email protection" msgstr "" #: gui/certificate_properties_dialog.ui:1079 gui/new_cert_window.ui:610 #: src/certificate_properties.c:1479 src/tls.c:1498 msgid "Code signing" msgstr "" #: gui/certificate_properties_dialog.ui:1090 gui/new_cert_window.ui:598 #, fuzzy msgid "TLS Web client" msgstr "TLS WWW-asiakas" #: gui/certificate_properties_dialog.ui:1102 gui/new_cert_window.ui:586 #, fuzzy msgid "TLS Web server" msgstr "TLS WWW-asiakas" #: gui/certificate_properties_dialog.ui:1114 gui/new_cert_window.ui:575 #: src/certificate_properties.c:1481 src/tls.c:1502 msgid "Time stamping" msgstr "" #: gui/certificate_properties_dialog.ui:1125 gui/new_cert_window.ui:564 #: src/certificate_properties.c:1483 src/tls.c:1506 msgid "Any purpose" msgstr "" #: gui/certificate_properties_dialog.ui:1136 gui/new_cert_window.ui:553 #: src/certificate_properties.c:1482 src/tls.c:1504 msgid "OCSP signing" msgstr "" #: gui/certificate_properties_dialog.ui:1159 #, fuzzy msgid "Purposes of new generated certificates" msgstr "Uusien luotujen varmenteiden käyttökohteet" #: gui/certificate_properties_dialog.ui:1171 msgid "CA Policy" msgstr "" #: gui/certificate_properties_dialog.ui:1189 gui/csr_properties_dialog.ui:221 #: src/ca.c:2199 msgid "_Close" msgstr "" #: gui/change_password_dialog.ui:9 msgid "Database password protection - gnoMint" msgstr "" #: gui/change_password_dialog.ui:34 msgid "_Yes" msgstr "" #: gui/change_password_dialog.ui:43 msgid "_No" msgstr "" #: gui/change_password_dialog.ui:53 msgid "" "Enter new password again \n" "for confirmation:" msgstr "" #: gui/change_password_dialog.ui:86 msgid "" "Please, enter new \n" "password:" msgstr "" #: gui/change_password_dialog.ui:98 msgid "" "Please, enter current\n" "password:" msgstr "" #: gui/change_password_dialog.ui:121 msgid "" "Protect CA database private\n" "keys with password:" msgstr "" #: gui/change_password_dialog.ui:143 gui/export_certificate_dialog.ui:149 #: gui/get_db_password_dialog.ui:74 gui/get_pkey_dialog.ui:78 #: gui/import_file_or_directory_dialog.ui:94 gui/import_password_dialog.ui:90 #: gui/new_crl_dialog.ui:53 gui/san_editor_dialog.ui:93 msgid "Cancel" msgstr "" #: gui/change_password_dialog.ui:149 gui/get_db_password_dialog.ui:80 #: gui/get_pkey_dialog.ui:84 gui/import_password_dialog.ui:96 #: gui/new_crl_dialog.ui:59 gui/san_editor_dialog.ui:99 msgid "OK" msgstr "" #: gui/creation_process_window.ui:6 msgid "Creating new CA - gnoMint" msgstr "" #: gui/creation_process_window.ui:31 #, fuzzy msgid "Creating CA Root Certificate" msgstr "Virhe allekirjoitettaessa varmennetta" #: gui/creation_process_window.ui:51 gui/get_password_dialog.ui:90 #: gui/new_ca_window.ui:257 gui/new_ca_window.ui:464 gui/new_ca_window.ui:576 #: gui/new_cert_window.ui:257 gui/new_cert_window.ui:339 #: gui/new_cert_window.ui:661 gui/new_req_window.ui:107 #: gui/new_req_window.ui:357 gui/new_req_window.ui:548 gui/wizard_window.ui:117 msgid "_Cancel" msgstr "" #: gui/csr_popup_menu.ui:23 gui/main_window.ui:26 msgid "_Sign" msgstr "" #: gui/csr_popup_menu.ui:27 gui/main_window.ui:27 msgid "Delete" msgstr "" #: gui/csr_properties_dialog.ui:5 #, fuzzy msgid "CSR properties - gnoMint" msgstr "Varmennuspyyntöjen näkyvyys" #: gui/csr_properties_dialog.ui:41 #, fuzzy msgid "" "This Certificate Signing Request has its corresponding private key saved " "in the internal database." msgstr "" "Tälle varmennuspyynnölle on tallennettu pyyntöön liittyvä salainen avain " "sisäiseen tietokantaan." #: gui/csr_properties_dialog.ui:74 gui/new_cert_window.ui:230 #: src/csr_properties.c:86 src/new_cert.c:105 msgid "None" msgstr "" #: gui/csr_properties_dialog.ui:131 #, fuzzy msgid "Subject Alternative Name (SAN)" msgstr "Virhe asetettaessa CSR-versiota" #: gui/csr_properties_dialog.ui:164 msgid "CSR subject" msgstr "CSR-aihe" #: gui/dh_parameters_dialog.ui:16 #, fuzzy msgid "New Diffie-Hellman parameters - gnoMint" msgstr "Varmennuspyyntöjen näkyvyys" #: gui/dh_parameters_dialog.ui:27 msgid "" "You are about to create and export a set of\n" "Diffie·Hellman parameters into a PKCS#3 structure file." msgstr "" #: gui/dh_parameters_dialog.ui:38 msgid "" "PKCS#3 files containing Diffie·Hellman parameters are used by some " "cryptographic\n" "applications for a secure interchange of their keys over insecure channels." msgstr "" #: gui/dh_parameters_dialog.ui:48 msgid "Please, enter the prime size, in bits:" msgstr "" #: gui/dh_parameters_dialog.ui:71 msgid "Close" msgstr "" #: gui/dh_parameters_dialog.ui:77 msgid "Generate" msgstr "" #: gui/export_certificate_dialog.ui:5 #, fuzzy msgid "Export certificate - gnoMint" msgstr "Peruttujen varmenteiden näkyvyys" #: gui/export_certificate_dialog.ui:22 msgid "" "Please, choose which part of the\n" "saved certificate you want to export:" msgstr "" #: gui/export_certificate_dialog.ui:36 msgid "Only the pu_blic part." msgstr "" #: gui/export_certificate_dialog.ui:49 msgid "Export only the certificate to a public file, in PEM format." msgstr "" #: gui/export_certificate_dialog.ui:60 msgid "Only the private key (crypted)." msgstr "" #: gui/export_certificate_dialog.ui:74 msgid "" "Export the saved private key to a PKCS#8 password-\n" "protected file. This file should only be accessed by the\n" "subject of the certificate." msgstr "" #: gui/export_certificate_dialog.ui:87 msgid "Only the private key (uncrypted)." msgstr "" #: gui/export_certificate_dialog.ui:100 msgid "" "Export the saved private key to a PEM file. This option\n" "should only be used for exporting certificates that will be\n" "used in unattended servers." msgstr "" #: gui/export_certificate_dialog.ui:113 msgid "Both parts." msgstr "" #: gui/export_certificate_dialog.ui:126 msgid "" "Export both (private and public) parts to a password-\n" "protected PKCS#12 file. This kind of file can be imported\n" "by other common programs, such as web or mail clients." msgstr "" #: gui/export_certificate_dialog.ui:155 msgid "Export" msgstr "" #: gui/get_db_password_dialog.ui:5 gui/get_password_dialog.ui:5 #: gui/import_password_dialog.ui:5 msgid "Enter password - gnoMint" msgstr "" #: gui/get_db_password_dialog.ui:20 msgid "" "This action requires using one or more private keys saved in the CA " "database.\n" "\n" "Please insert the database password." msgstr "" #: gui/get_db_password_dialog.ui:41 gui/get_password_dialog.ui:68 #: gui/import_password_dialog.ui:65 #, fuzzy msgid "Password:" msgstr "Salasanasuojaus\n" #: gui/get_db_password_dialog.ui:58 msgid "Remember this password during this gnoMint session" msgstr "" #: gui/get_password_dialog.ui:19 msgid "Please, enter password" msgstr "" #: gui/get_password_dialog.ui:56 msgid "Password (confirm):" msgstr "" #: gui/get_password_dialog.ui:97 gui/new_ca_window.ui:592 #: gui/new_cert_window.ui:676 gui/new_req_window.ui:564 #: gui/preferences_dialog.ui:51 msgid "_OK" msgstr "" #: gui/get_pkey_dialog.ui:9 msgid "Choose private key file. gnoMint" msgstr "" #: gui/get_pkey_dialog.ui:22 msgid "" "Choose private key file\n" "\n" "For doing the selected operation, you must provide the\n" "file where resides the private key corresponding to the\n" "certificate:" msgstr "" #: gui/get_pkey_dialog.ui:37 #, fuzzy msgid "Certificate DN" msgstr "Varmennuspyyntöjen näkyvyys" #: gui/get_pkey_dialog.ui:43 msgid "Please, choose the file:" msgstr "" #: gui/get_pkey_dialog.ui:62 msgid "_Save filename in the database for automatic loading" msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:7 gui/main_window.ui:62 msgid "gnoMint" msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:8 msgid "X.509 Certification Authority management tool" msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:11 msgid "" "gnoMint is a tool for easily creating and managing certification authorities " "(CAs). It provides fancy visualization of all your certificates, and their " "properties, as well as an easy management of the CA activities." msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:16 msgid "With gnoMint you can:" msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:20 msgid "Create and manage your own Certification Authority (CA)" msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:21 msgid "Create and sign certificates for servers and users" msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:22 #, fuzzy msgid "Create and manage Certificate Signing Requests (CSRs)" msgstr "Varmennuspyyntöjen näkyvyys" #: gui/org.gnome.gnomint.appdata.xml.in:23 msgid "" "Export certificates and private keys in several formats (PEM, DER, PKCS#12)" msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:24 msgid "Revoke certificates and generate Certificate Revocation Lists (CRLs)" msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:25 #, fuzzy msgid "Import existing certificates and CAs" msgstr "Virhe allekirjoitettaessa varmennetta" #: gui/org.gnome.gnomint.appdata.xml.in:27 msgid "" "gnoMint provides a simple and intuitive graphical interface based on GTK for " "all these operations, making certificate management accessible even for " "users without deep knowledge of X.509 standards and cryptography." msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:38 #, fuzzy msgid "Main window showing certificate list" msgstr "Virhe allekirjoitettaessa varmennetta" #: gui/org.gnome.gnomint.desktop.in:2 gui/org.gnome.gnomint.desktop.in:3 msgid "gnoMint X.509 CA Manager" msgstr "" #: gui/org.gnome.gnomint.desktop.in:4 msgid "Manage X.509 certificates and CAs, easily and graphically" msgstr "" #: gui/org.gnome.gnomint.desktop.in:5 msgid "certificate;x.509;encryption;" msgstr "" #: gui/import_file_or_directory_dialog.ui:9 msgid "Import selection - gnoMint" msgstr "" #: gui/import_file_or_directory_dialog.ui:24 msgid "" "Please, choose the more suitable option for\n" "what you want to import:" msgstr "" #: gui/import_file_or_directory_dialog.ui:36 msgid "Import a single file." msgstr "" #: gui/import_file_or_directory_dialog.ui:48 msgid "" "Import a single file, encoded in DER or PEM format, containing\n" "certificates, private keys (encrypted or plain), signing\n" "requests (CSRs), revocation lists (CRLs) or PKCS#12\n" "packages." msgstr "" #: gui/import_file_or_directory_dialog.ui:60 msgid "Import a whole directory." msgstr "" #: gui/import_file_or_directory_dialog.ui:72 msgid "" "Import a directory containing the structure of\n" "a whole CA made with OpenSSL ." msgstr "" #: gui/import_file_or_directory_dialog.ui:100 msgid "Import" msgstr "" #: gui/import_password_dialog.ui:20 msgid "" "The whole selected file, or some of its elements, seems to\n" "be cyphered using a password or passphrase.\n" "\n" "For importing the file into gnoMint database, you must\n" "provide an appropiate password." msgstr "" #: gui/import_password_dialog.ui:37 msgid "" "The part that is being imported has the description:" msgstr "" #: gui/import_password_dialog.ui:48 msgid "#Description#" msgstr "" #: gui/main_window.ui:6 #, fuzzy msgid "_Certificates" msgstr "Peruttujen varmenteiden näkyvyys" #: gui/main_window.ui:8 #, fuzzy msgid "_New certificate database" msgstr "Peruttujen varmenteiden näkyvyys" #: gui/main_window.ui:9 #, fuzzy msgid "_Open certificate database" msgstr "Peruttujen varmenteiden näkyvyys" #: gui/main_window.ui:10 msgid "Open _recents" msgstr "" #: gui/main_window.ui:11 msgid "_Save certificate database as..." msgstr "" #: gui/main_window.ui:15 msgid "Add" msgstr "" #: gui/main_window.ui:17 msgid "_Add self-signed CA" msgstr "" #: gui/main_window.ui:18 #, fuzzy msgid "Add _Certificate Request" msgstr "Varmennuspyyntöjen näkyvyys" #: gui/main_window.ui:29 msgid "Generate _CRL" msgstr "" #: gui/main_window.ui:30 msgid "Generate D_H parameters..." msgstr "" #: gui/main_window.ui:31 msgid "Change database pass_word" msgstr "" #: gui/main_window.ui:33 msgid "_Import" msgstr "" #: gui/main_window.ui:38 msgid "Revoke _all selected..." msgstr "" #: gui/main_window.ui:39 msgid "Delete all selected _CSRs..." msgstr "" #: gui/main_window.ui:41 msgid "_Quit" msgstr "" #: gui/main_window.ui:44 gui/san_manager_widget.ui:34 msgid "_Edit" msgstr "" #: gui/main_window.ui:46 msgid "Preferences" msgstr "" #: gui/main_window.ui:49 msgid "_View" msgstr "" #: gui/main_window.ui:51 #, fuzzy msgid "Certificate _Signing Requests" msgstr "Varmennuspyyntöjen näkyvyys" #: gui/main_window.ui:52 #, fuzzy msgid "_Revoked Certificates" msgstr "Peruttujen varmenteiden näkyvyys" #: gui/main_window.ui:53 #, fuzzy msgid "E_xpired Certificates" msgstr "Peruttujen varmenteiden näkyvyys" #: gui/main_window.ui:57 gui/new_ca_window.ui:249 gui/new_ca_window.ui:456 #: gui/new_ca_window.ui:568 gui/new_cert_window.ui:249 #: gui/new_cert_window.ui:331 gui/new_cert_window.ui:653 #: gui/new_req_window.ui:99 gui/new_req_window.ui:349 gui/new_req_window.ui:540 msgid "_Help" msgstr "" #: gui/main_window.ui:58 msgid "About" msgstr "" #: gui/main_window.ui:80 msgid "Create a new database" msgstr "" #: gui/main_window.ui:87 msgid "Open an existing database" msgstr "" #: gui/main_window.ui:99 #, fuzzy msgid "Add an autosigned CA" msgstr "Virhe allekirjoitettaessa varmennetta" #: gui/main_window.ui:100 #, fuzzy msgid "Add autosigned CA certificate" msgstr "Virhe allekirjoitettaessa varmennetta" #: gui/main_window.ui:111 #, fuzzy msgid "Add a new Certificate Signing Request" msgstr "Varmennuspyyntöjen näkyvyys" #: gui/main_window.ui:112 msgid "Add CSR" msgstr "" #: gui/main_window.ui:129 msgid "Extract the private key of the selected item into a external file" msgstr "" #: gui/main_window.ui:130 msgid "Extract Private Key" msgstr "" #: gui/main_window.ui:142 #, fuzzy msgid "Revoke the selected certificate" msgstr "Peruttujen varmenteiden näkyvyys" #: gui/main_window.ui:143 msgid "Revoke" msgstr "" #: gui/main_window.ui:151 #, fuzzy msgid "Sign the selected Certificate Signing Request" msgstr "Varmennuspyyntöjen näkyvyys" #: gui/main_window.ui:152 msgid "Sign" msgstr "" #: gui/main_window.ui:164 #, fuzzy msgid "Delete the selected Certificate Signing Request" msgstr "Varmennuspyyntöjen näkyvyys" #: gui/main_window.ui:176 msgid "Quick certificate generation for web server" msgstr "" #: gui/main_window.ui:177 msgid "Web Server Wizard" msgstr "" #: gui/main_window.ui:188 msgid "Quick certificate generation for email server" msgstr "" #: gui/main_window.ui:189 msgid "Email Server Wizard" msgstr "" #: gui/main_window.ui:225 msgid "_Show them" msgstr "" #: gui/main_window.ui:243 msgid "Filter certificates by subject or serial..." msgstr "" #: gui/new_ca_window.ui:20 msgid "New CA - gnoMint" msgstr "" #: gui/new_ca_window.ui:46 #, fuzzy msgid "CA Subject Properties\n" msgstr "Salasanasuojaus\n" #: gui/new_ca_window.ui:72 gui/new_cert_window.ui:130 gui/new_req_window.ui:303 msgid "Organization:" msgstr "" #: gui/new_ca_window.ui:83 gui/new_cert_window.ui:141 gui/new_req_window.ui:292 msgid "Organization Unit:" msgstr "" #: gui/new_ca_window.ui:94 gui/new_cert_window.ui:152 gui/new_req_window.ui:281 msgid "Country:" msgstr "" #: gui/new_ca_window.ui:106 gui/new_cert_window.ui:163 #: gui/new_req_window.ui:270 msgid "State or Province name: " msgstr "" #: gui/new_ca_window.ui:117 gui/new_cert_window.ui:174 #: gui/new_req_window.ui:259 msgid "City: " msgstr "" #: gui/new_ca_window.ui:164 msgid "" "CA Root Certificate \n" "Common Name (CN):" msgstr "" #: gui/new_ca_window.ui:185 gui/new_cert_window.ui:219 #: gui/new_req_window.ui:203 msgid "Email address:" msgstr "" #: gui/new_ca_window.ui:227 gui/new_req_window.ui:326 #, fuzzy msgid "Subject Alternative Names (SAN)" msgstr "Virhe asetettaessa CSR-versiota" #: gui/new_ca_window.ui:265 gui/new_ca_window.ui:480 gui/new_req_window.ui:115 #: gui/new_req_window.ui:373 msgid "_Next" msgstr "" #: gui/new_ca_window.ui:277 gui/new_cert_window.ui:276 #: gui/new_req_window.ui:127 #, fuzzy msgid "CA properties" msgstr "Varmennuspyyntöjen näkyvyys" #: gui/new_ca_window.ui:296 #, fuzzy msgid "CA Root certificate properties\n" msgstr "Varmentajan juurivarmenteen ominaisuudet\n" #: gui/new_ca_window.ui:337 msgid "Months before root certificate expiration:" msgstr "" #: gui/new_ca_window.ui:370 gui/new_req_window.ui:453 msgid "P-256 (256 bits)" msgstr "" #: gui/new_ca_window.ui:371 gui/new_req_window.ui:454 msgid "P-384 (384 bits)" msgstr "" #: gui/new_ca_window.ui:372 gui/new_req_window.ui:455 msgid "P-521 (521 bits)" msgstr "" #: gui/new_ca_window.ui:391 gui/new_req_window.ui:474 msgid "RSA" msgstr "" #: gui/new_ca_window.ui:400 gui/new_req_window.ui:484 msgid "DSA" msgstr "" #: gui/new_ca_window.ui:409 gui/new_req_window.ui:493 msgid "ECDSA" msgstr "" #: gui/new_ca_window.ui:418 gui/new_req_window.ui:502 msgid "Ed25519" msgstr "" #: gui/new_ca_window.ui:428 gui/new_req_window.ui:512 src/new_ca_window.c:170 #: src/new_ca_window.c:180 src/new_req_window.c:201 src/new_req_window.c:211 msgid "Private key bit length:" msgstr "" #: gui/new_ca_window.ui:439 gui/new_req_window.ui:523 msgid "Private key type:" msgstr "" #: gui/new_ca_window.ui:472 gui/new_ca_window.ui:584 gui/new_req_window.ui:365 #: gui/new_req_window.ui:556 msgid "_Previous" msgstr "" #: gui/new_ca_window.ui:492 gui/new_req_window.ui:385 #, fuzzy msgid "Root certificate prop" msgstr "Varmennuspyyntöjen näkyvyys" #: gui/new_ca_window.ui:511 #, fuzzy msgid "CA properties\n" msgstr "Salasanasuojaus\n" #: gui/new_ca_window.ui:535 msgid "CRL Distribution Point:" msgstr "" #: gui/new_ca_window.ui:542 msgid "" "Please, in this field enter an URL where the CRL for this CA will be " "available. \n" "You can leave it blank. In this case, no CRL Distribution Point will be set " "in the CA \n" "Certificate, and you will be able to set it as a new CA property. \n" "This value will be copied into the certificates generated by this CA.\n" "" msgstr "" #: gui/new_ca_window.ui:604 #, fuzzy msgid "Password protect" msgstr "Salasanasuojaus\n" #: gui/new_cert_window.ui:13 #, fuzzy msgid "New Certificate - gnoMint" msgstr "Varmennuspyyntöjen näkyvyys" #: gui/new_cert_window.ui:36 gui/new_cert_window.ui:293 #: gui/new_cert_window.ui:382 #, fuzzy msgid "New Certificate Properties\n" msgstr "Uuden varmenteen ominaisuudet\n" #: gui/new_cert_window.ui:45 msgid "" "You are about to sign a Certificate Signing Request,\n" "and this way, creating a new certificate. Please\n" "check the certificate properties." msgstr "" #: gui/new_cert_window.ui:64 gui/new_cert_window.ui:75 #: gui/new_cert_window.ui:86 gui/new_cert_window.ui:97 #: gui/new_cert_window.ui:108 gui/new_cert_window.ui:119 msgid "label" msgstr "" #: gui/new_cert_window.ui:185 msgid "" "New certificate \n" "Common Name (CN):" msgstr "" #: gui/new_cert_window.ui:197 #, fuzzy msgid "Subject Alternative Names:" msgstr "Virhe asetettaessa CSR-versiota" #: gui/new_cert_window.ui:302 msgid "" "You are about to sign a Certificate Signing Request.\n" "Please, choose the Certification Authority you are\n" "going to use for signing it." msgstr "" #: gui/new_cert_window.ui:366 msgid "Choose CA for signing the CSR" msgstr "" #: gui/new_cert_window.ui:397 msgid "Months before certificate expiration:" msgstr "" #: gui/new_cert_window.ui:519 #, fuzzy msgid "Certificate uses" msgstr "Varmenteen käyttö" #: gui/new_cert_window.ui:635 #, fuzzy msgid "Certificate purposes" msgstr "Varmenteen käyttötarkoitus" #: gui/new_cert_window.ui:688 #, fuzzy msgid "Certificate properties" msgstr "Varmennuspyyntöjen näkyvyys" #: gui/new_crl_dialog.ui:5 msgid "New CRL - gnoMint" msgstr "" #: gui/new_crl_dialog.ui:17 #, fuzzy msgid "New Certificate Revocation List" msgstr "Uusi varmenteiden estolista" #: gui/new_crl_dialog.ui:26 msgid "" "Please, select the CA for which a Certificate \n" "Revocation List is going to be created:" msgstr "" #: gui/new_req_window.ui:12 #, fuzzy msgid "New certificate request - gnoMint" msgstr "Varmennuspyyntöjen näkyvyys" #: gui/new_req_window.ui:36 gui/new_req_window.ui:147 gui/new_req_window.ui:403 #, fuzzy msgid "Certificate Request Properties\n" msgstr "Varmennepyynnön ominaisuudet\n" #: gui/new_req_window.ui:55 msgid "" "The subject of the new certificate request can inherit information\n" "from one of the existing Certification Authorities. This is a must if the\n" "policy of the CA you are going to use is defined to force some fields\n" "of a certificate subject to be the same as the ones in the CA cert\n" "subject." msgstr "" #: gui/new_req_window.ui:67 msgid "Don't inherit any fields from existing Certification Authorities" msgstr "" #: gui/new_req_window.ui:74 msgid "" "Inherit fields according to selected Certification Authority and its policy." msgstr "" #: gui/new_req_window.ui:191 msgid "" "Certificate\n" " Common Name (CN):" msgstr "" #: gui/new_req_window.ui:576 msgid "page 3" msgstr "" #: gui/preferences_dialog.ui:9 #, fuzzy msgid "General Preferences - gnoMint" msgstr "Varmennuspyyntöjen näkyvyys" #: gui/preferences_dialog.ui:26 #, fuzzy msgid "" "Automatically export created certificates to\n" "Gnome-keyring certificate store" msgstr "Varmenteiden automaattinen vienti gnome-keyring -avainnippuun" #: gui/preferences_dialog.ui:36 msgid "Export options" msgstr "" #: gui/san_editor_dialog.ui:5 src/certificate_properties.c:1488 msgid "Subject Alternative Name" msgstr "" #: gui/san_editor_dialog.ui:23 msgid "Type:" msgstr "" #: gui/san_editor_dialog.ui:35 msgid "DNS" msgstr "" #: gui/san_editor_dialog.ui:36 src/certificate_properties.c:900 #: src/certificate_properties.c:914 src/certificate_properties.c:1040 msgid "IP Address" msgstr "" #: gui/san_editor_dialog.ui:37 msgid "Email" msgstr "" #: gui/san_editor_dialog.ui:38 src/certificate_properties.c:889 #: src/certificate_properties.c:1032 msgid "URI" msgstr "" #: gui/san_editor_dialog.ui:51 msgid "Value:" msgstr "" #: gui/san_editor_dialog.ui:74 msgid "" "Examples:\n" "DNS: example.com, *.example.com\n" "IP: 192.168.1.1, 2001:db8::1\n" "EMAIL: admin@example.com\n" "URI: https://example.com" msgstr "" #: gui/san_manager_widget.ui:26 msgid "_Add" msgstr "" #: gui/san_manager_widget.ui:43 msgid "_Remove" msgstr "" #: gui/wizard_window.ui:9 #, fuzzy msgid "Certificate Wizard" msgstr "Varmennehiararkia" #: gui/wizard_window.ui:28 #, fuzzy msgid "Quick Certificate Generation" msgstr "Varmennehiararkia" #: gui/wizard_window.ui:35 msgid "" "This wizard will create a certificate for your server with default " "settings.\n" "Enter the server name (e.g., my.server.dns.name) and select the CA to sign " "it." msgstr "" #: gui/wizard_window.ui:48 msgid "Server Name:" msgstr "" #: gui/wizard_window.ui:59 msgid "Enter the server DNS name (e.g., my.server.dns.name)" msgstr "" #: gui/wizard_window.ui:69 msgid "Signing CA:" msgstr "" #: gui/wizard_window.ui:88 #, fuzzy msgid "Certificate Type:" msgstr "Varmennuspyyntöjen näkyvyys" #: gui/wizard_window.ui:124 #, fuzzy msgid "_Generate Certificate" msgstr "Peruttujen varmenteiden näkyvyys" #: gui/wizard_window.ui:140 msgid "Web Server (TLS)" msgstr "" #: gui/wizard_window.ui:141 msgid "Email Server (TLS)" msgstr "" #: src/ca.c:192 #, c-format msgid "Bulk revoke completed with errors. First error: %s" msgstr "" #: src/ca.c:199 #, fuzzy, c-format msgid "%d certificate revoked." msgid_plural "%d certificates revoked." msgstr[0] "Varmennuspyyntöjen näkyvyys" msgstr[1] "Varmennuspyyntöjen näkyvyys" #: src/ca.c:225 #, c-format msgid "Bulk delete completed with errors. First error: %s" msgstr "" #: src/ca.c:240 msgid "" "Certificate renewed. A new certificate with a fresh keypair has been added " "to the database alongside the original." msgstr "" #: src/ca.c:606 src/ca-cli-callbacks.c:167 src/ca-cli-callbacks.c:221 #: src/ca-cli-callbacks.c:733 src/ca-cli-callbacks.c:737 #: src/ca-cli-callbacks.c:1362 src/ca-cli-callbacks.c:1369 #: src/certificate_properties.c:246 src/certificate_properties.c:252 msgid "%m/%d/%Y %H:%M GMT" msgstr "" #: src/ca.c:806 src/ca.c:1927 src/ca.c:1958 src/ca.c:2093 src/ca.c:2322 #: src/ca.c:2350 msgid "Yes" msgstr "" #: src/ca.c:930 src/certificate_properties.c:653 msgid "Subject" msgstr "" #: src/ca.c:965 src/cert_diff.c:122 msgid "Serial" msgstr "" #: src/ca.c:978 src/cert_diff.c:123 msgid "Activation" msgstr "" #: src/ca.c:991 src/cert_diff.c:124 msgid "Expiration" msgstr "" #: src/ca.c:1004 msgid "Revocation" msgstr "" #: src/ca.c:1047 #, c-format msgid "" "Showing only the %d certificate expiring in the next %d days. Close " "this banner to show everything again." msgid_plural "" "Showing only the %d certificates expiring in the next %d days. Close " "this banner to show everything again." msgstr[0] "" msgstr[1] "" #: src/ca.c:1058 #, c-format msgid "" "%d certificate expires in the next %d days. Right-click it to renew " "with a fresh key." msgid_plural "" "%d certificates expire in the next %d days. Right-click each one to " "renew with a fresh key." msgstr[0] "" msgstr[1] "" #: src/ca.c:1369 src/ca.c:1404 src/ca.c:1416 src/export.c:560 src/export.c:639 msgid "There was an error while exporting certificate." msgstr "" #: src/ca.c:1371 src/ca.c:1406 src/ca.c:1418 msgid "There was an error while exporting CSR." msgstr "" #: src/ca.c:1426 src/ca.c:1590 msgid "Certificate exported successfully" msgstr "" #: src/ca.c:1427 msgid "Certificate signing request exported successfully" msgstr "" #: src/ca.c:1445 msgid "Export certificate" msgstr "" #: src/ca.c:1447 msgid "Export certificate signing request" msgstr "" #: src/ca.c:1461 src/ca.c:1523 src/ca.c:1981 msgid "Private key exported successfully" msgstr "" #: src/ca.c:1509 src/ca.c:2057 msgid "Export crypted private key" msgstr "" #: src/ca.c:1568 msgid "Export unencrypted private key" msgstr "" #: src/ca.c:1633 msgid "Export whole certificate in PKCS#12 package" msgstr "" #: src/ca.c:1676 msgid "Unexpected error" msgstr "" #: src/ca.c:1712 msgid "Export CSR - gnoMint" msgstr "" #: src/ca.c:1717 msgid "" "Please, choose which part of the saved Certificate Signing Request you want " "to export:" msgstr "" #: src/ca.c:1722 msgid "" "Export the Certificate Signing Request to a public file, in PEM format." msgstr "" #: src/ca.c:1727 msgid "" "Export the saved private key to a PKCS#8 password-protected file. This " "file should only be accessed by the subject of the Certificate Signing " "Request." msgstr "" #: src/ca.c:1774 msgid "Could not build certificate chain." msgstr "" #: src/ca.c:1781 #, fuzzy, c-format msgid "Failed to write chain: %s" msgstr "Virhe allekirjoitettaessa varmennetta" #: src/ca.c:1786 #, fuzzy msgid "Certificate chain exported successfully." msgstr "Varmennuspyyntöjen näkyvyys" #: src/ca.c:1807 msgid "Please select a certificate to export its chain." msgstr "" #: src/ca.c:1831 #, fuzzy msgid "Export certificate chain" msgstr "Peruttujen varmenteiden näkyvyys" #: src/ca.c:1911 msgid "Please select one or more certificates to revoke." msgstr "" #: src/ca.c:1916 #, c-format msgid "Are you sure you want to revoke %d certificate?" msgid_plural "Are you sure you want to revoke %d certificates?" msgstr[0] "" msgstr[1] "" #: src/ca.c:1920 msgid "" "Revoking a certificate will include it in the next CRL, marking it as " "invalid. CSRs in the selection (if any) are not affected; use \"Delete " "selected CSRs\" for those." msgstr "" #: src/ca.c:1927 src/ca.c:1958 src/ca.c:2093 src/ca.c:2322 src/ca.c:2350 msgid "No" msgstr "" #: src/ca.c:1948 msgid "Please select one or more CSRs to delete." msgstr "" #: src/ca.c:1953 #, c-format msgid "Are you sure you want to delete %d Certificate Signing Request?" msgid_plural "Are you sure you want to delete %d Certificate Signing Requests?" msgstr[0] "" msgstr[1] "" #: src/ca.c:2076 src/ca-cli-callbacks.c:1934 msgid "" "CA certificates cannot be renewed. A renewed CA would have a different key, " "so certificates previously signed by the old CA would no longer chain to it." msgstr "" #: src/ca.c:2087 msgid "" "Renew this certificate?\n" "\n" "gnoMint will issue a new certificate with the same subject and SAN as the " "selected one, signed by the same CA, with a freshly-generated keypair. The " "old certificate will remain in the database — revoke it manually after you " "have deployed the new one." msgstr "" #: src/ca.c:2118 #, c-format msgid "Certificate diff — %d difference" msgid_plural "Certificate diff — %d differences" msgstr[0] "" msgstr[1] "" #: src/ca.c:2147 msgid "Left" msgstr "" #: src/ca.c:2151 msgid "Right" msgstr "" #: src/ca.c:2241 src/ca-cli-callbacks.c:2141 #, fuzzy msgid "Cannot read file." msgstr "Virhe allekirjoitettaessa varmennetta" #: src/ca.c:2252 msgid "Selected" msgstr "" #: src/ca.c:2278 #, fuzzy msgid "Cannot read PEM of the selected certificate." msgstr "Peruttujen varmenteiden näkyvyys" #: src/ca.c:2290 msgid "Compare with PEM file…" msgstr "" #: src/ca.c:2312 msgid "Are you sure you want to revoke this certificate?" msgstr "" #: src/ca.c:2313 msgid "" "Revoking a certificate will include it in the next CRL, marking it as " "invalid. This way, any future use of the certificate will be denied (as long " "as the CRL is checked)." msgstr "" #: src/ca.c:2316 msgid "Are you sure you want to revoke this CA certificate?" msgstr "" #: src/ca.c:2317 msgid "" "Revoking a certificate will include it in the next CRL, marking it as " "invalid. This way, any future use of the certificate will be denied (as long " "as the CRL is checked). \n" "\n" "Moreover, revoking a CA certificate can invalidate all the certificates " "generated with it, so all them should be regenerated with a new CA " "certificate." msgstr "" #: src/ca.c:2349 msgid "Are you sure you want to delete this Certificate Signing Request?" msgstr "" #: src/ca.c:2572 msgid "" "The current password you have entered doesn't match with the actual current " "database password." msgstr "" #: src/ca.c:2588 msgid "Error while changing database password. The operation was cancelled." msgstr "" #: src/ca.c:2593 msgid "Password changed successfully" msgstr "" #: src/ca.c:2601 src/ca-cli-callbacks.c:1186 msgid "" "Error while establishing database password. The operation was cancelled." msgstr "" #: src/ca.c:2606 msgid "Password established successfully" msgstr "" #: src/ca.c:2616 msgid "Error while removing database password. The operation was cancelled." msgstr "" #: src/ca.c:2621 msgid "Password removed successfully" msgstr "" #: src/ca.c:2708 msgid "Change CA password - gnoMint" msgstr "" #: src/ca.c:2840 msgid "Diffie-Hellman parameters saved successfully" msgstr "" #: src/ca.c:2872 msgid "Save Diffie-Hellman parameters" msgstr "" #: src/ca.c:2951 #, c-format msgid "Problem when importing '%s' file" msgstr "" #: src/ca.c:3012 msgid "Select PEM file to import" msgstr "" #: src/ca.c:3018 msgid "Select directory to import" msgstr "" #: src/cert_diff.c:70 #, fuzzy msgid "Cannot parse left certificate" msgstr "Peruttujen varmenteiden näkyvyys" #: src/cert_diff.c:72 #, fuzzy msgid "Cannot parse right certificate" msgstr "Peruttujen varmenteiden näkyvyys" #: src/cert_diff.c:113 msgid "Subject CN" msgstr "" #: src/cert_diff.c:114 msgid "Subject O" msgstr "" #: src/cert_diff.c:115 msgid "Subject OU" msgstr "" #: src/cert_diff.c:116 msgid "Subject Country" msgstr "" #: src/cert_diff.c:117 #, fuzzy msgid "Subject State" msgstr "Virhe asetettaessa CSR-versiota" #: src/cert_diff.c:118 msgid "Subject Locality" msgstr "" #: src/cert_diff.c:119 msgid "Subject email" msgstr "" #: src/cert_diff.c:120 msgid "Subject DN" msgstr "" #: src/cert_diff.c:121 msgid "Issuer DN" msgstr "" #: src/cert_diff.c:125 msgid "SAN" msgstr "" #: src/cert_diff.c:126 msgid "Key usage / EKU" msgstr "" #: src/cert_diff.c:127 msgid "Subject Key ID" msgstr "" #: src/cert_diff.c:128 msgid "Authority Key ID" msgstr "" #: src/cert_diff.c:129 msgid "CRL distribution" msgstr "" #: src/cert_diff.c:130 msgid "SHA-1 fingerprint" msgstr "" #: src/cert_diff.c:131 msgid "SHA-256 fingerprint" msgstr "" #: src/cert_renewal.c:111 msgid "Cannot parse generated CSR." msgstr "" #: src/cert_renewal.c:125 msgid "Cannot encrypt new private key." msgstr "" #: src/cert_renewal.c:181 src/cert_renewal.c:341 msgid "Cannot read certificate PEM from database." msgstr "" #: src/cert_renewal.c:186 src/cert_renewal.c:347 #, fuzzy msgid "Cannot parse certificate." msgstr "Peruttujen varmenteiden näkyvyys" #: src/cert_renewal.c:193 src/cert_renewal.c:354 #, c-format msgid "Cannot find issuer CA in this database (issuer DN: %s)." msgstr "" #: src/cert_renewal.c:204 src/cert_renewal.c:315 msgid "Cannot load parent CA material from database." msgstr "" #: src/cert_renewal.c:212 src/cert_renewal.c:221 src/cert_renewal.c:265 #: src/cert_renewal.c:280 msgid "Cannot decrypt parent CA's private key." msgstr "" #: src/ca-cli.c:42 msgid "newdb " msgstr "" #: src/ca-cli.c:42 msgid "Close current file and create a new database with given filename" msgstr "" #: src/ca-cli.c:43 msgid "opendb " msgstr "" #: src/ca-cli.c:43 msgid "Close current file and open the file with given filename" msgstr "" #: src/ca-cli.c:44 msgid "savedbas " msgstr "" #: src/ca-cli.c:44 msgid "Save the current file with a different filename" msgstr "" #: src/ca-cli.c:45 msgid "Get current status (opened file, no. of certificates, etc...)" msgstr "" #: src/ca-cli.c:46 msgid "" "List the certificates in database. With option --see-revoked, lists also the " "revoked ones" msgstr "" #: src/ca-cli.c:48 msgid "List the CSRs in database" msgstr "" #: src/ca-cli.c:49 msgid "addcsr [ca-id-for-inherit-fields]" msgstr "" #: src/ca-cli.c:49 msgid "Start a new CSR creation process" msgstr "" #: src/ca-cli.c:50 msgid "Start a new self-signed CA creation process" msgstr "" #: src/ca-cli.c:51 msgid "extractcertpkey " msgstr "" #: src/ca-cli.c:51 msgid "" "Extract the private key of the certificate with the given internal id and " "saves it into the given file" msgstr "" #: src/ca-cli.c:54 msgid "extractcsrpkey " msgstr "" #: src/ca-cli.c:54 msgid "" "Extract the private key of the CSR with the given internal id and saves it " "into the given file" msgstr "" #: src/ca-cli.c:57 msgid "revoke " msgstr "" #: src/ca-cli.c:57 msgid "Revoke the certificate with the given internal ID" msgstr "" #: src/ca-cli.c:58 msgid "sign " msgstr "" #: src/ca-cli.c:58 msgid "Generate a certificate signing the given CSR with the given CA" msgstr "" #: src/ca-cli.c:59 msgid "delete " msgstr "" #: src/ca-cli.c:59 msgid "Delete the given CSR from the database" msgstr "" #: src/ca-cli.c:60 msgid "crlgen " msgstr "" #: src/ca-cli.c:60 msgid "Generate a new CRL for the given CA, saving it into the file " msgstr "" #: src/ca-cli.c:61 msgid "dhgen " msgstr "" #: src/ca-cli.c:61 msgid "Generate a new DH-parameter set, saving it into the file " msgstr "" #: src/ca-cli.c:62 msgid "Change password for the current database" msgstr "" #: src/ca-cli.c:63 msgid "importfile " msgstr "" #: src/ca-cli.c:63 msgid "Import the file with the given name " msgstr "" #: src/ca-cli.c:64 msgid "importdir " msgstr "" #: src/ca-cli.c:64 msgid "Import the given directory, as a OpenSSL-CA directory" msgstr "" #: src/ca-cli.c:65 msgid "showcert " msgstr "" #: src/ca-cli.c:65 msgid "Show properties of the given certificate" msgstr "" #: src/ca-cli.c:66 msgid "showcsr " msgstr "" #: src/ca-cli.c:66 msgid "Show properties of the given CSR" msgstr "" #: src/ca-cli.c:67 msgid "showpolicy " msgstr "" #: src/ca-cli.c:67 msgid "Show CA policy" msgstr "" #: src/ca-cli.c:68 msgid "setpolicy " msgstr "" #: src/ca-cli.c:68 msgid "Change the given CA policy" msgstr "" #: src/ca-cli.c:69 msgid "Show program preferences" msgstr "" #: src/ca-cli.c:70 msgid "setpreference " msgstr "" #: src/ca-cli.c:70 msgid "Set the given program preference" msgstr "" #: src/ca-cli.c:71 msgid "addservercert " msgstr "" #: src/ca-cli.c:71 msgid "Quick server certificate generation (cert-type: 'web' or 'email')" msgstr "" #: src/ca-cli.c:72 msgid "renewcert " msgstr "" #: src/ca-cli.c:72 msgid "" "Reissue a non-CA certificate with the same subject + SAN and a fresh " "keypair. The old certificate remains in the database. CA certificates cannot " "be renewed." msgstr "" #: src/ca-cli.c:73 msgid "exportchain " msgstr "" #: src/ca-cli.c:73 msgid "" "Export the full certificate chain (leaf → root) for the given certificate as " "a PEM bundle." msgstr "" #: src/ca-cli.c:74 msgid "revokemany [cert-id ...]" msgstr "" #: src/ca-cli.c:74 msgid "Revoke many certificates at once. Non-cert ids are silently skipped." msgstr "" #: src/ca-cli.c:75 msgid "deletemany [csr-id ...]" msgstr "" #: src/ca-cli.c:75 msgid "Delete many CSRs at once. Non-CSR ids are silently skipped." msgstr "" #: src/ca-cli.c:76 msgid "search " msgstr "" #: src/ca-cli.c:76 msgid "" "List certificates and CSRs whose subject or serial contains (case-" "insensitive)." msgstr "" #: src/ca-cli.c:77 msgid "diff " msgstr "" #: src/ca-cli.c:77 msgid "" "Side-by-side diff of two certificates. Each argument is either a numeric DB " "id or a path to a PEM file." msgstr "" #: src/ca-cli.c:78 msgid "Show about message" msgstr "" #: src/ca-cli.c:79 msgid "Show warranty information" msgstr "" #: src/ca-cli.c:80 msgid "Show distribution information" msgstr "" #: src/ca-cli.c:81 msgid "Show version information" msgstr "" #: src/ca-cli.c:82 msgid "Show (this) help message" msgstr "" #: src/ca-cli.c:83 src/ca-cli.c:84 src/ca-cli.c:85 msgid "Close database and exit program" msgstr "" #: src/ca-cli.c:132 #, c-format msgid "Opening database %s..." msgstr "" #: src/ca-cli.c:136 #, c-format msgid " OK.\n" msgstr "" #: src/ca-cli.c:138 #, c-format msgid " Error.\n" msgstr "" #: src/ca-cli.c:153 #, c-format msgid "" "Notice: %d certificate expires within the next %d days. Use `renewcert ` " "to reissue.\n" msgid_plural "" "Notice: %d certificates expire within the next %d days. Use `renewcert ` " "to reissue.\n" msgstr[0] "" msgstr[1] "" #: src/ca-cli.c:187 #, c-format msgid "" "\n" "\n" "%s version %s \"%s\"\n" "%s\n" "\n" msgstr "" #: src/ca-cli.c:188 #, c-format msgid "" "This program comes with ABSOLUTELY NO WARRANTY;\n" "for details type 'warranty'.\n" msgstr "" #: src/ca-cli.c:189 #, c-format msgid "" "This is free software, and you are welcome to redistribute it\n" "under certain conditions; type 'distribution' for details.\n" "\n" msgstr "" #: src/ca-cli.c:231 #, c-format msgid "Unpaired quotes\n" msgstr "" #: src/ca-cli.c:309 #, c-format msgid "" "Invalid command. Try 'help' for getting a list of recognized commands.\n" msgstr "" #: src/ca-cli.c:313 #, c-format msgid "Incorrect number of parameters.\n" msgstr "" #: src/ca-cli.c:314 #, c-format msgid "Syntax: %s\n" msgstr "" #: src/ca-cli-callbacks.c:62 src/ca-cli-callbacks.c:111 msgid "The file already exists, so it will be overwritten." msgstr "" #: src/ca-cli-callbacks.c:62 src/ca-cli-callbacks.c:111 #: src/ca-cli-callbacks.c:824 msgid "Are you sure? Yes/[No] " msgstr "" #: src/ca-cli-callbacks.c:84 #, c-format msgid "Problem when opening new '%s' CA database\n" msgstr "" #: src/ca-cli-callbacks.c:88 #, c-format msgid "File '%s' opened\n" msgstr "" #: src/ca-cli-callbacks.c:98 #, c-format msgid "Problem when opening '%s' CA database\n" msgstr "" #: src/ca-cli-callbacks.c:132 #, c-format msgid "Current opened file: %s\n" msgstr "" #: src/ca-cli-callbacks.c:133 #, c-format msgid "Number of certificates in file: %d\n" msgstr "" #: src/ca-cli-callbacks.c:134 #, c-format msgid "Number of CSRs in file: %d\n" msgstr "" #: src/ca-cli-callbacks.c:169 msgid " (after 2038?)" msgstr "" #: src/ca-cli-callbacks.c:239 #, c-format msgid "Certificates in Database:\n" msgstr "" #: src/ca-cli-callbacks.c:240 #, c-format msgid "Id.\tIs CA?\tCertificate Subject\tKey in DB?\tActivation\t\tExpiration" msgstr "" #: src/ca-cli-callbacks.c:243 #, c-format msgid "\t\tRevocation\n" msgstr "" #: src/ca-cli-callbacks.c:278 #, c-format msgid "Certificate Requests in Database:\n" msgstr "" #: src/ca-cli-callbacks.c:279 #, c-format msgid "Id.\tParent Id.\tCSR Subject\t\tKey in DB?\n" msgstr "" #: src/ca-cli-callbacks.c:309 src/ca-cli-callbacks.c:1129 #: src/ca-cli-callbacks.c:1522 src/ca-cli-callbacks.c:1551 msgid "The given CA id. is not valid" msgstr "" #: src/ca-cli-callbacks.c:362 #, c-format msgid "" "Please enter data corresponding to subject of the Certificate Signing " "Request:\n" msgstr "" #: src/ca-cli-callbacks.c:365 src/ca-cli-callbacks.c:567 msgid "Enter country (C)" msgstr "" #: src/ca-cli-callbacks.c:373 src/ca-cli-callbacks.c:573 msgid "Enter state or province (ST)" msgstr "" #: src/ca-cli-callbacks.c:382 src/ca-cli-callbacks.c:579 msgid "Enter locality or city (L)" msgstr "" #: src/ca-cli-callbacks.c:390 src/ca-cli-callbacks.c:585 msgid "Enter organization (O)" msgstr "" #: src/ca-cli-callbacks.c:398 src/ca-cli-callbacks.c:591 msgid "Enter organizational unit (OU)" msgstr "" #: src/ca-cli-callbacks.c:405 src/ca-cli-callbacks.c:597 msgid "Enter common name (CN)" msgstr "" #: src/ca-cli-callbacks.c:411 src/ca-cli-callbacks.c:603 msgid "Enter email address (leave blank for none)" msgstr "" #: src/ca-cli-callbacks.c:422 src/ca-cli-callbacks.c:614 msgid "" "Enter Subject Alternative Names (SAN) [format: " "DNS:example.com,IP:192.168.1.1]" msgstr "" #: src/ca-cli-callbacks.c:433 src/ca-cli-callbacks.c:625 msgid "Enter type of key you are going to create (RSA/DSA/ECDSA/Ed25519)" msgstr "" #: src/ca-cli-callbacks.c:472 src/ca-cli-callbacks.c:656 msgid "Enter curve size for ECDSA (256, 384, or 521)" msgstr "" #: src/ca-cli-callbacks.c:482 src/ca-cli-callbacks.c:667 msgid "Enter bitlength for the key (it must be a whole multiple of 1024)" msgstr "" #: src/ca-cli-callbacks.c:487 #, c-format msgid "These are the provided CSR properties:\n" msgstr "" #: src/ca-cli-callbacks.c:489 src/ca-cli-callbacks.c:704 #: src/ca-cli-callbacks.c:1350 src/ca-cli-callbacks.c:1411 #, c-format msgid "Subject:\n" msgstr "" #: src/ca-cli-callbacks.c:490 src/ca-cli-callbacks.c:705 #, c-format msgid "\tDistinguished Name: " msgstr "" #: src/ca-cli-callbacks.c:505 src/ca-cli-callbacks.c:720 #: src/ca-cli-callbacks.c:1354 src/ca-cli-callbacks.c:1414 #, c-format msgid "\tSubject Alternative Names: %s\n" msgstr "" #: src/ca-cli-callbacks.c:506 src/ca-cli-callbacks.c:721 #, c-format msgid "Key pair\n" msgstr "" #: src/ca-cli-callbacks.c:512 src/ca-cli-callbacks.c:727 #, c-format msgid "\tType: %s\n" msgstr "" #: src/ca-cli-callbacks.c:514 #, c-format msgid "\tKey size: fixed (Ed25519)\n" msgstr "" #: src/ca-cli-callbacks.c:516 #, c-format msgid "\tCurve: P-%d\n" msgstr "" #: src/ca-cli-callbacks.c:518 src/ca-cli-callbacks.c:729 #, c-format msgid "\tKey bitlength: %d\n" msgstr "" #: src/ca-cli-callbacks.c:521 src/ca-cli-callbacks.c:740 msgid "Do you want to change anything? Yes/[No] " msgstr "" #: src/ca-cli-callbacks.c:525 msgid "" "You are about to create a Certificate Signing Request with these properties." msgstr "" #: src/ca-cli-callbacks.c:526 src/ca-cli-callbacks.c:745 msgid "Are you sure? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:531 src/ca-cli-callbacks.c:750 #: src/ca-cli-callbacks.c:834 src/ca-cli-callbacks.c:965 #: src/ca-cli-callbacks.c:1086 src/ca-cli-callbacks.c:1115 #: src/ca-cli-callbacks.c:1181 src/ca-cli-callbacks.c:1208 #: src/ca-cli-callbacks.c:1236 src/ca-cli-callbacks.c:1251 #: src/ca-cli-callbacks.c:1581 src/ca-cli-callbacks.c:1624 #: src/ca-cli-callbacks.c:1945 #, c-format msgid "Operation cancelled.\n" msgstr "" #: src/ca-cli-callbacks.c:565 #, c-format msgid "" "Please enter data corresponding to subject of the new Certification " "Authority:\n" msgstr "" #: src/ca-cli-callbacks.c:673 msgid "" "Introduce number of months before expiration of the new certification " "authority" msgstr "" #: src/ca-cli-callbacks.c:693 src/new_ca_window.c:457 msgid "" "This system uses a 32-bit time_t and cannot represent dates after " "2038-01-19. The new CA's expiration date has been clamped to that limit. To " "issue longer-lived CAs, run gnoMint on a 64-bit platform." msgstr "" #: src/ca-cli-callbacks.c:702 #, c-format msgid "These are the provided new CA properties:\n" msgstr "" #: src/ca-cli-callbacks.c:730 #, c-format msgid "Validity\n" msgstr "" #: src/ca-cli-callbacks.c:731 src/ca-cli-callbacks.c:1360 #, c-format msgid "Validity:\n" msgstr "" #: src/ca-cli-callbacks.c:734 src/ca-cli-callbacks.c:1363 #, c-format msgid "\tActivated on: %s\n" msgstr "" #: src/ca-cli-callbacks.c:738 src/ca-cli-callbacks.c:1370 #, c-format msgid "\tExpires on: %s\n" msgstr "" #: src/ca-cli-callbacks.c:744 msgid "" "You are about to create a new Certification Authority with these properties." msgstr "" #: src/ca-cli-callbacks.c:770 src/ca-cli-callbacks.c:818 #: src/ca-cli-callbacks.c:1321 msgid "The given certificate id. is not valid" msgstr "" #: src/ca-cli-callbacks.c:777 src/ca-cli-callbacks.c:801 #, c-format msgid "Private key extracted successfully into file '%s'\n" msgstr "" #: src/ca-cli-callbacks.c:794 src/ca-cli-callbacks.c:946 #: src/ca-cli-callbacks.c:1099 src/ca-cli-callbacks.c:1400 msgid "The given CSR id. is not valid" msgstr "" #: src/ca-cli-callbacks.c:824 msgid "This certificate will be revoked." msgstr "" #: src/ca-cli-callbacks.c:830 #, c-format msgid "Certificate revoked.\n" msgstr "" #: src/ca-cli-callbacks.c:844 src/ca-cli-callbacks.c:1381 #, c-format msgid "Certificate uses:\n" msgstr "" #: src/ca-cli-callbacks.c:847 #, c-format msgid "* Certification Authority use enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:849 #, c-format msgid "* Certification Authority use disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:853 #, c-format msgid "* CRL signing use enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:855 #, c-format msgid "* CRL signing use disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:859 #, c-format msgid "* Digital Signature use enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:861 #, c-format msgid "* Digital Signature use disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:865 src/ca-cli-callbacks.c:867 #, c-format msgid "* Data Encipherment use enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:871 #, c-format msgid "* Key Encipherment use enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:873 #, c-format msgid "* Key Encipherment use disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:877 #, c-format msgid "* Non Repudiation use enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:879 #, c-format msgid "* Non Repudiation use disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:883 #, c-format msgid "* Key Agreement use enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:885 #, c-format msgid "* Key Agreement use disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:888 #, c-format msgid "Certificate purposes:\n" msgstr "" #: src/ca-cli-callbacks.c:891 #, c-format msgid "* Email Protection purpose enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:893 #, c-format msgid "* Email Protection purpose disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:897 #, c-format msgid "* Code Signing purpose enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:899 #, c-format msgid "* Code Signing purpose disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:903 #, c-format msgid "* TLS Web Client purpose enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:905 #, c-format msgid "* TLS Web Client purpose disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:909 #, c-format msgid "* TLS Web Server purpose enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:911 #, c-format msgid "* TLS Web Server purpose disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:915 #, c-format msgid "* Time Stamping purpose enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:917 #, c-format msgid "* Time Stamping purpose disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:921 #, c-format msgid "* OCSP Signing purpose enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:923 #, c-format msgid "* OCSP Signing purpose disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:927 #, c-format msgid "* Any purpose enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:929 #, c-format msgid "* Any purpose disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:953 #, c-format msgid "You are about to sign the following Certificate Signing Request:\n" msgstr "" #: src/ca-cli-callbacks.c:955 #, c-format msgid "with the certificate corresponding to the next CA:\n" msgstr "" #: src/ca-cli-callbacks.c:958 msgid "" "Introduce number of months before expiration of the new certificate (0 to " "cancel)" msgstr "" #: src/ca-cli-callbacks.c:984 src/ca-cli-callbacks.c:1072 #, c-format msgid "" "The new certificate will be created with the following uses and purposes:\n" msgstr "" #: src/ca-cli-callbacks.c:987 msgid "Do you want to change any property of the new certificate? Yes/[No] " msgstr "" #: src/ca-cli-callbacks.c:990 msgid "* Enable Certification Authority use? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:992 #, c-format msgid "* Certification Authority use disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:996 msgid "* Enable CRL Signing? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:998 #, c-format msgid "* CRL signing use disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1002 msgid "* Enable Digital Signature use? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1004 #, c-format msgid "* Digital Signature use disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1008 msgid "Enable Data Encipherment use? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1010 #, c-format msgid "* Data Encipherment use disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1014 msgid "Enable Key Encipherment use? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1016 #, c-format msgid "* Key Encipherment use disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1020 msgid "Enable Non Repudiation use? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1022 #, c-format msgid "* Non Repudiation use disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1026 msgid "Enable Key Agreement use? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1028 #, c-format msgid "* Key Agreement use disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1032 msgid "Enable Email Protection purpose? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1034 #, c-format msgid "* Email Protection purpose disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1038 msgid "Enable Code Signing purpose? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1040 #, c-format msgid "* Code Signing purpose disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1044 msgid "Enable TLS Web Client purpose? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1046 #, c-format msgid "* TLS Web Client purpose disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1050 msgid "Enable TLS Web Server purpose? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1052 #, c-format msgid "* TLS Web Server purpose disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1056 msgid "Enable Time Stamping purpose? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1058 #, c-format msgid "* Time Stamping purpose disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1062 msgid "Enable OCSP Signing purpose? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1063 #, c-format msgid "* OCSP Signing purpose disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1067 msgid "Enable any purpose? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1069 #, c-format msgid "* Any purpose disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1077 msgid "" "All the mandatory data for the certificate generation has been gathered." msgstr "" #: src/ca-cli-callbacks.c:1077 msgid "Do you want to proceed with the signing? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1083 #, c-format msgid "Certificate signed.\n" msgstr "" #: src/ca-cli-callbacks.c:1105 msgid "This Certificate Signing Request will be deleted." msgstr "" #: src/ca-cli-callbacks.c:1105 msgid "This operation cannot be undone. Are you sure? Yes/[No] " msgstr "" #: src/ca-cli-callbacks.c:1111 #, c-format msgid "Certificate Signing Request deleted.\n" msgstr "" #: src/ca-cli-callbacks.c:1136 #, c-format msgid "CRL generated successfully into file '%s'\n" msgstr "" #: src/ca-cli-callbacks.c:1153 msgid "The bit-length of the prime number must be whole multiple of 1024" msgstr "" #: src/ca-cli-callbacks.c:1162 #, c-format msgid "Diffie-Hellman parameters created and saved successfully in file '%s'\n" msgstr "" #: src/ca-cli-callbacks.c:1174 msgid "Currently, the database is not password-protected." msgstr "" #: src/ca-cli-callbacks.c:1174 msgid "Do you want to password protect it? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1175 msgid "" "OK. You need to supply a password for protecting the private keys in the\n" "database, so nobody else but authorized people can use them. This password\n" "will be asked any time gnoMint will make use of any private key in database." msgstr "" #: src/ca-cli-callbacks.c:1178 msgid "Insert password:" msgstr "" #: src/ca-cli-callbacks.c:1178 msgid "Insert password (confirm):" msgstr "" #: src/ca-cli-callbacks.c:1179 src/ca-cli-callbacks.c:1249 msgid "The introduced passwords are distinct." msgstr "" #: src/ca-cli-callbacks.c:1190 #, c-format msgid "Password established successfully.\n" msgstr "" #: src/ca-cli-callbacks.c:1197 #, c-format msgid "Nothing done.\n" msgstr "" #: src/ca-cli-callbacks.c:1201 msgid "Currently, the database IS password-protected." msgstr "" #: src/ca-cli-callbacks.c:1201 msgid "Do you want to remove this password protection? Yes/[No] " msgstr "" #: src/ca-cli-callbacks.c:1205 #, c-format msgid "" "For removing the password-protection, the current database password\n" "must be supplied.\n" msgstr "" #: src/ca-cli-callbacks.c:1206 src/ca-cli-callbacks.c:1234 msgid "Please, insert the current database password (Empty to cancel): " msgstr "" #: src/ca-cli-callbacks.c:1213 src/ca-cli-callbacks.c:1241 msgid "" "The current password you have entered\n" "doesn't match with the actual current database password." msgstr "" #: src/ca-cli-callbacks.c:1218 msgid "" "Error while removing database password. \n" "The operation was cancelled." msgstr "" #: src/ca-cli-callbacks.c:1223 #, c-format msgid "Password removed successfully.\n" msgstr "" #: src/ca-cli-callbacks.c:1233 #, c-format msgid "" "You must supply the current database password before changing the password.\n" msgstr "" #: src/ca-cli-callbacks.c:1245 msgid "" "OK. Now you must supply a new password for protecting the private keys in " "the\n" "database, so nobody else but authorized people can use them. This password\n" "will be asked any time gnoMint will make use of any private key in database." msgstr "" #: src/ca-cli-callbacks.c:1248 msgid "Insert new password:" msgstr "" #: src/ca-cli-callbacks.c:1248 msgid "Insert new password (confirm):" msgstr "" #: src/ca-cli-callbacks.c:1257 msgid "" "Error while changing database password. \n" "The operation was cancelled." msgstr "" #: src/ca-cli-callbacks.c:1263 #, c-format msgid "Password changed successfully.\n" msgstr "" #: src/ca-cli-callbacks.c:1281 msgid "Problem when importing the given file." msgstr "" #: src/ca-cli-callbacks.c:1284 #, c-format msgid "File imported successfully.\n" msgstr "" #: src/ca-cli-callbacks.c:1300 #, c-format msgid "Directory imported successfully.\n" msgstr "" #: src/ca-cli-callbacks.c:1343 #, c-format msgid "Certificate:\n" msgstr "" #: src/ca-cli-callbacks.c:1347 #, c-format msgid "\tSerial number: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1351 src/ca-cli-callbacks.c:1357 #: src/ca-cli-callbacks.c:1412 #, c-format msgid "\tDistinguished Name: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1351 src/ca-cli-callbacks.c:1352 #: src/ca-cli-callbacks.c:1357 src/ca-cli-callbacks.c:1358 msgid "None." msgstr "" #: src/ca-cli-callbacks.c:1352 src/ca-cli-callbacks.c:1358 #: src/ca-cli-callbacks.c:1416 #, c-format msgid "\tUnique ID: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1356 #, c-format msgid "Issuer:\n" msgstr "" #: src/ca-cli-callbacks.c:1365 src/ca-cli-callbacks.c:1372 #, c-format msgid "" "\t (warning: this 32-bit build cannot tell a real post-2038 date from an " "overflow; this value may be inaccurate)\n" msgstr "" #: src/ca-cli-callbacks.c:1375 #, c-format msgid "Fingerprints:\n" msgstr "" #: src/ca-cli-callbacks.c:1376 #, c-format msgid "\tSHA1 fingerprint: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1377 #, c-format msgid "\tMD5 fingerprint: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1378 #, c-format msgid "\tSHA256 fingerprint: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1409 #, c-format msgid "Certificate Signing Request:\n" msgstr "" #: src/ca-cli-callbacks.c:1486 msgid "Generated certs inherit Country from CA " msgstr "" #: src/ca-cli-callbacks.c:1487 msgid "Generated certs inherit State from CA " msgstr "" #: src/ca-cli-callbacks.c:1488 msgid "Generated certs inherit Locality from CA " msgstr "" #: src/ca-cli-callbacks.c:1489 msgid "Generated certs inherit Organization from CA " msgstr "" #: src/ca-cli-callbacks.c:1490 msgid "Generated certs inherit Organizational Unit from CA " msgstr "" #: src/ca-cli-callbacks.c:1491 msgid "Country in generated certs must be the same than in CA " msgstr "" #: src/ca-cli-callbacks.c:1492 msgid "State in generated certs must be the same than in CA " msgstr "" #: src/ca-cli-callbacks.c:1493 msgid "Locality in generated certs must be the same than in CA " msgstr "" #: src/ca-cli-callbacks.c:1494 msgid "Organization in generated certs must be the same than in CA " msgstr "" #: src/ca-cli-callbacks.c:1495 msgid "Organizational Unit in generated certs must be the same than in CA" msgstr "" #: src/ca-cli-callbacks.c:1496 msgid "Maximum number of hours between CRL updates " msgstr "" #: src/ca-cli-callbacks.c:1497 msgid "CRL distribution point (URL where CRL is published) " msgstr "" #: src/ca-cli-callbacks.c:1498 msgid "Maximum number of months before expiration of new certs " msgstr "" #: src/ca-cli-callbacks.c:1499 msgid "CA use enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1500 msgid "CRL Sign use enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1501 msgid "Non reputation use enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1502 msgid "Digital signature use enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1503 msgid "Key encipherment use enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1504 msgid "Key agreement use enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1505 msgid "Data encipherment use enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1506 msgid "TLS web server purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1507 msgid "TLS web client purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1508 msgid "Time stamping purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1509 msgid "Code signing server purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1510 msgid "Email protection purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1511 msgid "OCSP signing purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1512 msgid "Any purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1526 #, c-format msgid "Showing policies of the following certificate:\n" msgstr "" #: src/ca-cli-callbacks.c:1528 #, c-format msgid "" "\n" "Policies:\n" msgstr "" #: src/ca-cli-callbacks.c:1530 #, c-format msgid "Id.\tDescription\t\t\t\t\t\t\t\tValue\n" msgstr "" #: src/ca-cli-callbacks.c:1556 msgid "The given policy id is not valid" msgstr "" #: src/ca-cli-callbacks.c:1568 #, c-format msgid "" "You are about to assign to the policy\n" "'%s' the new value '%s'." msgstr "" #: src/ca-cli-callbacks.c:1572 src/ca-cli-callbacks.c:1616 msgid "Are you sure? Yes/[No] : " msgstr "" #: src/ca-cli-callbacks.c:1577 #, c-format msgid "Policy set correctly to '%s'.\n" msgstr "" #: src/ca-cli-callbacks.c:1591 #, c-format msgid "gnoMint-cli current preferences:\n" msgstr "" #: src/ca-cli-callbacks.c:1593 #, c-format msgid "Id.\tName\t\t\tValue\n" msgstr "" #: src/ca-cli-callbacks.c:1594 #, c-format msgid "0\tGnome keyring support\t%d\n" msgstr "" #: src/ca-cli-callbacks.c:1606 msgid "The given preference id is not valid" msgstr "" #: src/ca-cli-callbacks.c:1612 #, c-format msgid "" "You are about to assign to the preference 'Gnome keyring support' the new " "value '%d'." msgstr "" #: src/ca-cli-callbacks.c:1634 #, c-format msgid "" "%s version %s\n" "%s\n" msgstr "" #: src/ca-cli-callbacks.c:1635 #, c-format msgid "" "\n" "Authors:\n" "%s\n" "\n" msgstr "" #: src/ca-cli-callbacks.c:1636 src/ca-cli-callbacks.c:1637 src/main.c:742 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Ilkka Tuohela https://launchpad.net/~hile" #: src/ca-cli-callbacks.c:1637 #, c-format msgid "" "Translators:\n" "%s\n" msgstr "" #: src/ca-cli-callbacks.c:1644 msgid "" "THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY\n" "APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT\n" "HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY\n" "OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,\n" "THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n" "PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM\n" "IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF\n" "ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n" "\n" "For more information about warranty, see section 15 onwards of the GNU\n" "General Public License. You should have received a copy of the GNU General\n" "Public License along with this program. If not, see\n" ".\n" "\n" msgstr "" #: src/ca-cli-callbacks.c:1662 msgid "" "This program is free software: you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation, either version 3 of the License, or\n" "(at your option) any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program. If not, see .\n" "\n" msgstr "" #: src/ca-cli-callbacks.c:1677 #, c-format msgid "%s version %s \"%s\"\n" msgstr "" #: src/ca-cli-callbacks.c:1686 #, c-format msgid "Available commands:\n" msgstr "" #: src/ca-cli-callbacks.c:1687 #, c-format msgid "===================\n" msgstr "" #: src/ca-cli-callbacks.c:1697 #, c-format msgid "Exiting gnomint-cli...\n" msgstr "" #: src/ca-cli-callbacks.c:1738 msgid "The given CA id is not valid" msgstr "" #: src/ca-cli-callbacks.c:1750 msgid "Certificate type must be 'web' or 'email'" msgstr "" #: src/ca-cli-callbacks.c:1756 msgid "Server name cannot be empty" msgstr "" #: src/ca-cli-callbacks.c:1760 #, c-format msgid "Creating %s certificate for: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1761 msgid "web server" msgstr "" #: src/ca-cli-callbacks.c:1761 msgid "email server" msgstr "" #: src/ca-cli-callbacks.c:1837 #, c-format msgid "Error: Key generation failed: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1845 #, c-format msgid "Error: CSR generation failed: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1854 #, c-format msgid "Error: Failed to parse generated CSR\n" msgstr "" #: src/ca-cli-callbacks.c:1865 #, c-format msgid "Error: Failed to save CSR: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1879 msgid "CSR created with ID: %" msgstr "" #: src/ca-cli-callbacks.c:1903 #, fuzzy, c-format msgid "Error: Failed to sign certificate: %s\n" msgstr "Virhe allekirjoitettaessa varmennetta" #: src/ca-cli-callbacks.c:1910 #, c-format msgid "Certificate generated successfully for: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1911 #, c-format msgid "Certificate type: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1911 msgid "Web Server" msgstr "" #: src/ca-cli-callbacks.c:1911 msgid "Email Server" msgstr "" #: src/ca-cli-callbacks.c:1925 msgid "Usage: renewcert " msgstr "" #: src/ca-cli-callbacks.c:1930 src/ca-cli-callbacks.c:1968 msgid "The given certificate id is not valid" msgstr "" #: src/ca-cli-callbacks.c:1941 msgid "" "gnoMint will issue a new certificate with the same subject and SAN as this " "one, signed by the same CA, with a fresh keypair. The old certificate stays " "in place." msgstr "" #: src/ca-cli-callbacks.c:1944 msgid "Renew? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1955 msgid "Certificate renewed. New certificate id: %" msgstr "" #: src/ca-cli-callbacks.c:1963 msgid "Usage: exportchain " msgstr "" #: src/ca-cli-callbacks.c:1974 msgid "Cannot build chain PEM for that certificate." msgstr "" #: src/ca-cli-callbacks.c:1979 #, fuzzy msgid "Cannot write chain file." msgstr "Virhe allekirjoitettaessa varmennetta" #: src/ca-cli-callbacks.c:1985 #, c-format msgid "Full chain (leaf → root) written to %s\n" msgstr "" #: src/ca-cli-callbacks.c:1992 msgid "Usage: revokemany [cert-id ...]" msgstr "" #: src/ca-cli-callbacks.c:2008 #, fuzzy, c-format msgid "%d certificate revoked.\n" msgid_plural "%d certificates revoked.\n" msgstr[0] "Varmennuspyyntöjen näkyvyys" msgstr[1] "Varmennuspyyntöjen näkyvyys" #: src/ca-cli-callbacks.c:2016 msgid "Usage: deletemany [csr-id ...]" msgstr "" #: src/ca-cli-callbacks.c:2032 #, c-format msgid "%d CSR deleted.\n" msgid_plural "%d CSRs deleted.\n" msgstr[0] "" msgstr[1] "" #: src/ca-cli-callbacks.c:2092 msgid "Usage: search " msgstr "" #: src/ca-cli-callbacks.c:2099 #, c-format msgid "Matches (id\tserial\tsubject):\n" msgstr "" #: src/ca-cli-callbacks.c:2102 #, c-format msgid "%d match.\n" msgid_plural "%d matches.\n" msgstr[0] "" msgstr[1] "" #: src/ca-cli-callbacks.c:2126 #, c-format msgid "'%s' is not a certificate id in this database." msgstr "" #: src/ca-cli-callbacks.c:2134 #, c-format msgid "Cannot read PEM for cert id %s." msgstr "" #: src/ca-cli-callbacks.c:2152 msgid "Usage: diff " msgstr "" #: src/ca-cli-callbacks.c:2168 msgid "Field" msgstr "" #: src/ca-cli-callbacks.c:2181 #, c-format msgid "" "\n" "%d field differs.\n" msgid_plural "" "\n" "%d fields differ.\n" msgstr[0] "" msgstr[1] "" #: src/ca_creation.c:55 src/csr_creation.c:57 msgid "Generating new RSA key pair" msgstr "" #: src/ca_creation.c:64 src/ca_creation.c:88 src/ca_creation.c:109 #: src/ca_creation.c:128 src/csr_creation.c:66 src/csr_creation.c:87 #: src/csr_creation.c:104 src/csr_creation.c:121 msgid "Key generation failed" msgstr "" #: src/ca_creation.c:78 src/csr_creation.c:79 msgid "Generating new DSA key pair" msgstr "" #: src/ca_creation.c:101 src/csr_creation.c:97 msgid "Generating new ECDSA key pair" msgstr "" #: src/ca_creation.c:120 src/csr_creation.c:114 msgid "Generating new Ed25519 key pair" msgstr "" #: src/ca_creation.c:139 msgid "Generating self-signed CA-Root cert" msgstr "" #: src/ca_creation.c:147 msgid "Certificate generation failed" msgstr "" #: src/ca_creation.c:159 msgid "Creating CA database" msgstr "" #: src/ca_creation.c:168 msgid "CA database creation failed" msgstr "" #: src/ca_creation.c:180 msgid "CA generated successfully" msgstr "" #: src/ca_file.c:207 #, c-format msgid "Error opening filename '%s'" msgstr "" #: src/ca_file.c:310 msgid "" "The selected database has been created with a newer version of gnoMint than " "the currently installed." msgstr "" #: src/ca_file.c:1221 msgid "Cannot find last assigned serial number" msgstr "" #: src/ca_file.c:1410 msgid "Cannot find parent CA in database" msgstr "" #: src/ca_file.c:1600 msgid "" "This certificate already exists in the database: cannot insert it twice." msgstr "" #: src/ca_file.c:2044 msgid "" "The given file contains a valid private key. However, it has not been " "imported to the database because it doesn't match any key-less certificate " "or certificate request in the database." msgstr "" #: src/ca_file.c:2047 msgid "" "The given file contains a valid private key. However, it has not been " "imported to the database because it doesn't match any key-less certificate " "in the database." msgstr "" #: src/certificate_properties.c:151 msgid "" "This 32-bit build cannot represent dates after 2038-01-19, so it cannot " "distinguish a genuine date from a later one that overflowed. This value may " "be inaccurate." msgstr "" #: src/certificate_properties.c:383 msgid "Unknown" msgstr "" #: src/certificate_properties.c:453 src/tls.c:1478 msgid "Certificate signing" msgstr "" #: src/certificate_properties.c:457 msgid "Key encipherment only" msgstr "" #: src/certificate_properties.c:459 msgid "Key decipherment only" msgstr "" #: src/certificate_properties.c:472 msgid "Version" msgstr "" #: src/certificate_properties.c:507 msgid "Serial Number" msgstr "" #: src/certificate_properties.c:522 src/certificate_properties.c:1262 msgid "Signature" msgstr "" #: src/certificate_properties.c:525 src/certificate_properties.c:676 #: src/certificate_properties.c:679 src/certificate_properties.c:1228 msgid "Algorithm" msgstr "" #: src/certificate_properties.c:529 src/certificate_properties.c:686 #: src/certificate_properties.c:726 src/certificate_properties.c:763 #: src/certificate_properties.c:1232 msgid "Parameters" msgstr "" #: src/certificate_properties.c:529 src/certificate_properties.c:686 #: src/certificate_properties.c:763 src/certificate_properties.c:767 #: src/certificate_properties.c:781 src/certificate_properties.c:790 #: src/certificate_properties.c:1232 msgid "(unknown)" msgstr "" #: src/certificate_properties.c:563 msgid "Issuer" msgstr "" #: src/certificate_properties.c:598 msgid "Validity" msgstr "" #: src/certificate_properties.c:603 msgid "Not Before" msgstr "" #: src/certificate_properties.c:610 msgid "Not After" msgstr "" #: src/certificate_properties.c:616 msgid "Note" msgstr "" #: src/certificate_properties.c:617 msgid "" "This 32-bit build cannot represent dates after 2038-01-19, so a value marked " "⚠ may be a later date that overflowed and is inaccurate." msgstr "" #: src/certificate_properties.c:673 msgid "Subject Public Key Info" msgstr "" #: src/certificate_properties.c:690 msgid "RSA PublicKey" msgstr "" #: src/certificate_properties.c:702 msgid "Modulus" msgstr "" #: src/certificate_properties.c:710 msgid "Public Exponent" msgstr "" #: src/certificate_properties.c:755 msgid "DSA PublicKey" msgstr "" #: src/certificate_properties.c:767 msgid "Subject Public Key" msgstr "" #: src/certificate_properties.c:781 msgid "Issuer Unique ID" msgstr "" #: src/certificate_properties.c:790 msgid "Subject Unique ID" msgstr "" #: src/certificate_properties.c:813 src/certificate_properties.c:836 #: src/certificate_properties.c:945 src/certificate_properties.c:1058 #: src/certificate_properties.c:1085 src/certificate_properties.c:1124 #: src/certificate_properties.c:1182 src/certificate_properties.c:1457 #: src/san_manager.c:399 msgid "Value" msgstr "" #: src/certificate_properties.c:875 src/certificate_properties.c:1018 msgid "DNS Name" msgstr "" #: src/certificate_properties.c:882 src/certificate_properties.c:1025 msgid "RFC822 Name" msgstr "" #: src/certificate_properties.c:905 src/certificate_properties.c:919 #: src/certificate_properties.c:927 msgid "IP" msgstr "" #: src/certificate_properties.c:936 src/certificate_properties.c:1049 msgid "Directory Name" msgstr "" #: src/certificate_properties.c:973 src/certificate_properties.c:1164 msgid "TRUE" msgstr "" #: src/certificate_properties.c:973 src/certificate_properties.c:1164 msgid "FALSE" msgstr "" #: src/certificate_properties.c:977 msgid "CA" msgstr "" #: src/certificate_properties.c:981 msgid "Path Length Constraint" msgstr "" #: src/certificate_properties.c:1154 msgid "Extensions" msgstr "" #: src/certificate_properties.c:1166 msgid "Critical" msgstr "" #: src/certificate_properties.c:1199 msgid "Certificate" msgstr "" #: src/certificate_properties.c:1225 msgid "Signature Algorithm" msgstr "" #: src/certificate_properties.c:1446 msgid "Name" msgstr "" #: src/certificate_properties.c:1477 src/tls.c:1494 msgid "TLS WWW Server" msgstr "" #: src/certificate_properties.c:1478 msgid "TLS WWW Client" msgstr "" #: src/certificate_properties.c:1484 msgid "Subject Directory Attributes" msgstr "" #: src/certificate_properties.c:1485 msgid "Subject Key Identifier" msgstr "" #: src/certificate_properties.c:1486 msgid "Key Usage" msgstr "" #: src/certificate_properties.c:1487 msgid "Private Key Usage Period" msgstr "" #: src/certificate_properties.c:1489 msgid "Basic Constraints" msgstr "" #: src/certificate_properties.c:1490 msgid "Name Constraints" msgstr "" #: src/certificate_properties.c:1491 msgid "CRL Distribution Points" msgstr "" #: src/certificate_properties.c:1492 msgid "Certificate Policies" msgstr "" #: src/certificate_properties.c:1493 msgid "Policy Mappings" msgstr "" #: src/certificate_properties.c:1494 msgid "Authority Key Identifier" msgstr "" #: src/certificate_properties.c:1495 msgid "Policy Constraints" msgstr "" #: src/certificate_properties.c:1496 msgid "Extended Key Usage" msgstr "" #: src/certificate_properties.c:1497 msgid "Delta CRL Distribution Point" msgstr "" #: src/certificate_properties.c:1498 msgid "Inhibit Any-Policy" msgstr "" #: src/creation_process_window.c:69 msgid "CA creation process finished" msgstr "" #: src/creation_process_window.c:193 msgid "Creation process cancelled" msgstr "" #: src/creation_process_window.c:215 msgid "CSR creation process finished" msgstr "" #: src/creation_process_window.c:288 msgid "Creating Certificate Signing Request" msgstr "" #: src/crl.c:101 msgid "CRL generated successfully" msgstr "" #: src/crl.c:146 msgid "Export Certificate Revocation List" msgstr "" #: src/crl.c:180 src/crl.c:253 src/crl.c:299 msgid "There was an error while generating CRL." msgstr "" #: src/crl.c:189 msgid "There was an error while writing CRL." msgstr "" #: src/crl.c:201 src/crl.c:227 src/crl.c:268 src/crl.c:330 src/crl.c:351 msgid "There was an error while exporting CRL." msgstr "" #: src/crl.c:238 src/crl.c:369 msgid "There was an error while getting revoked certificates." msgstr "" #: src/csr_creation.c:131 msgid "Generating CSR" msgstr "" #: src/csr_creation.c:140 msgid "CSR generation failed" msgstr "" #: src/csr_creation.c:151 msgid "Saving CSR in database" msgstr "" #: src/csr_creation.c:169 msgid "CSR couldn't be saved" msgstr "" #: src/csr_creation.c:180 msgid "CSR generated successfully" msgstr "" #: src/csr_properties.c:91 msgid "" "This Certificate Signing Request has its corresponding private key saved " "in a external file." msgstr "" #: src/dialog.c:123 #, c-format msgid "" "\n" "The password must have, at least, %d characters\n" msgstr "" #: src/dialog.c:581 msgid "To do. Feature not implemented yet." msgstr "" #: src/export.c:43 src/export.c:48 src/export.c:53 msgid "There was an error while saving Diffie-Hellman parameters." msgstr "" #: src/export.c:79 src/export.c:138 src/export.c:146 src/export.c:200 #: src/export.c:210 src/export.c:304 src/export.c:341 src/export.c:376 #: src/export.c:384 src/export.c:424 src/export.c:433 src/export.c:474 msgid "There was an error while exporting private key." msgstr "" #: src/export.c:99 src/export.c:284 src/export.c:357 src/export.c:455 msgid "There was an error while getting private key." msgstr "" #: src/export.c:110 src/export.c:248 msgid "There was an error while uncrypting private key." msgstr "" #: src/export.c:113 src/export.c:264 msgid "" "You need to supply a passphrase for protecting the exported private key, so " "nobody else but authorized people can use it. This passphrase will be asked " "by any application that will make use of the private key." msgstr "" #: src/export.c:116 src/export.c:267 src/export.c:536 src/export.c:715 msgid "Insert passphrase (8 characters or more):" msgstr "" #: src/export.c:116 src/export.c:267 src/export.c:536 src/export.c:715 msgid "Insert passphrase (confirm):" msgstr "" #: src/export.c:117 src/export.c:268 src/export.c:537 src/export.c:716 msgid "The introduced passphrases are distinct." msgstr "" #: src/export.c:120 src/export.c:178 msgid "Operation cancelled." msgstr "" #: src/export.c:130 src/export.c:190 msgid "There was an error while password-protecting private key." msgstr "" #: src/export.c:368 src/export.c:415 msgid "There was an error while decrypting private key." msgstr "" #: src/export.c:513 src/export.c:747 msgid "Unsupported operation: you cannot generate a PKCS#12 for a CSR." msgstr "" #: src/export.c:521 src/export.c:530 src/export.c:695 src/export.c:731 msgid "" "There was an error while getting the certificate and private key from the " "internal database." msgstr "" #: src/export.c:533 src/export.c:712 msgid "" "You need to supply a passphrase for protecting the exported certificate, so " "nobody else but authorized people can use it. This passphrase will be asked " "by any application that will import the certificate." msgstr "" #: src/export.c:555 src/export.c:629 msgid "There was an error while generating the PKCS#12 package." msgstr "" #: src/export.c:569 src/export.c:578 src/export.c:652 src/export.c:663 msgid "There was an error while exporting the certificate." msgstr "" #: src/gnomint-cli.c:59 msgid "- A Certification Authority manager" msgstr "" #: src/gnomint-cli.c:62 #, c-format msgid "Failed to initialize: %s\n" msgstr "" #: src/import.c:171 #, c-format msgid "" "The whole selected file, or some of its elements, seems to\n" "be cyphered using a password or passphrase. For importing\n" "the file into gnoMint database, you must provide an \n" "appropriate password.\n" msgstr "" #: src/import.c:176 #, c-format msgid "Please introduce password for `%s'" msgstr "" #: src/import.c:218 #, c-format msgid "" "Couldn't import the certificate request. \n" "The database returned this error: \n" "\n" "'%s'" msgstr "" #: src/import.c:298 msgid "" "The imported certificate expires after 2038-01-19, a date this 32-bit build " "cannot represent. Its stored expiration has been capped and may be " "inaccurate. The certificate itself is unchanged; open it on a 64-bit system " "to see the exact date." msgstr "" #: src/import.c:310 #, c-format msgid "" "Couldn't import the certificate. \n" "The database returned this error: \n" "\n" "'%s'" msgstr "" #: src/import.c:666 src/import.c:852 msgid "PKCS#8 crypted private key" msgstr "" #: src/import.c:677 src/import.c:862 msgid "The given password doesn't match the one used for crypting this part" msgstr "" #: src/import.c:771 msgid "Encrypted PKCS#12 bag" msgstr "" #: src/import.c:788 msgid "" "The given password doesn't match with the password used for encrypting this " "part." msgstr "" #: src/import.c:999 msgid "Couldn't find any supported format in the given file" msgstr "" #: src/import.c:1012 src/import.c:1363 #, c-format msgid "Couldn't open %s file. Check permissions." msgstr "" #: src/import.c:1039 #, c-format msgid "Couldn't recognize the file %s as a RSA or DSA private key." msgstr "" #: src/import.c:1055 #, c-format msgid "Private key for %s" msgstr "" #: src/import.c:1057 #, c-format msgid "Private key %s" msgstr "" #: src/import.c:1092 msgid "Problem while calling to openssl for decyphering private key." msgstr "" #: src/import.c:1100 #, c-format msgid "" "OpenSSL has returned the following error while trying to decypher the " "private key:\n" "\n" "%s" msgstr "" #: src/import.c:1211 msgid "There was a problem while importing the public CA root certificate" msgstr "" #: src/import.c:1225 msgid "CA Root certificate" msgstr "" #: src/import.c:1227 msgid "" "There was a problem while importing the private key corresponding to CA root " "certificate" msgstr "" #: src/import.c:1237 msgid "There was a problem while opening the directory certs/." msgstr "" #: src/import.c:1261 msgid "There was a problem while opening the directory newcerts/." msgstr "" #: src/import.c:1288 msgid "There was a problem while opening the directory req." msgstr "" #: src/import.c:1314 msgid "There was a problem while opening the directory crl/." msgstr "" #: src/import.c:1336 msgid "There was a problem while opening the directory keys/." msgstr "" #: src/import.c:1394 msgid "Files in the directory don't belong to any supported CA format." msgstr "" #: src/main.c:567 #, c-format msgid "" "Problem when creating '%s' CA database:\n" "%s" msgstr "" #: src/main.c:577 #, c-format msgid "Problem when opening new '%s' CA database" msgstr "" #: src/main.c:591 msgid "Create new CA database" msgstr "" #: src/main.c:616 #, c-format msgid "Problem when opening '%s' CA database" msgstr "" #: src/main.c:630 msgid "Open CA database" msgstr "" #: src/main.c:662 msgid "Save CA database as..." msgstr "" #: src/main.c:722 msgid "" "gnoMint is a program for creating and managing Certification Authorities, " "and their certificates" msgstr "" #: src/main.c:725 msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU General Public License as published by the Free " "Software Foundation; either version 3 of the License, or (at your option) " "any later version.\n" "\n" "This program is distributed in the hope that it will be useful, but WITHOUT " "ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or " "FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for " "more details.\n" "\n" "You should have received a copy of the GNU General Public License along with " "this program; if not, write to the Free Software Foundation, Inc., 51 " "Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA." msgstr "" #: src/main.c:741 msgid "Code collaborators" msgstr "" #: src/new_ca_window.c:191 src/new_req_window.c:222 msgid "ECDSA curve:" msgstr "" #: src/new_ca_window.c:219 msgid "Please enter a Common Name (CN) for the CA." msgstr "" #: src/new_cert.c:197 msgid "" "The policy of this CA obligue the country field of the certificates to be " "the same as the one in the CA cert." msgstr "" #: src/new_cert.c:203 msgid "" "The policy of this CA obligue the state/province field of the certificates " "to be the same as the one in the CA cert." msgstr "" #: src/new_cert.c:209 msgid "" "The policy of this CA obligue the locality/city field of the certificates to " "be the same as the one in the CA cert." msgstr "" #: src/new_cert.c:215 msgid "" "The policy of this CA obligue the organization field of the certificates to " "be the same as the one in the CA cert." msgstr "" #: src/new_cert.c:221 msgid "" "The policy of this CA obligue the organizational unit field of the " "certificates to be the same as the one in the CA cert." msgstr "" #: src/new_cert.c:659 msgid "" "The expiration date of the new certificate is after the expiration date of " "the CA certificate.\n" "\n" "According to the current standards, this is not allowed. The new certificate " "will be created with the same expiration date as the CA certificate." msgstr "" #: src/new_cert.c:734 msgid "" "This system uses a 32-bit time_t and cannot represent dates after " "2038-01-19. The new certificate's expiration date has been clamped to that " "limit. To issue longer-lived certificates, run gnoMint on a 64-bit platform." msgstr "" #: src/new_cert.c:770 src/new_cert.c:809 src/new_cert.c:838 msgid "Error while signing CSR." msgstr "" #: src/new_req_window.c:374 msgid "Please enter a Common Name (CN) for the certificate request." msgstr "" #: src/pkey_manage.c:124 #, c-format msgid "" "The file that holds private key for certificate '%s' is password-protected.\n" "\n" "Please, insert the password corresponding to this file." msgstr "" #: src/pkey_manage.c:163 #, c-format msgid "" "The file that holds private key for certificate\n" "'%s' is password-protected.\n" "\n" msgstr "" #: src/pkey_manage.c:211 src/pkey_manage.c:303 msgid "" "The given password doesn't match with the one used while crypting the file." msgstr "" #: src/pkey_manage.c:226 src/pkey_manage.c:315 src/pkey_manage.c:476 msgid "" "The file designated in database contains a private key, but it is not the " "private key corresponding to the certificate." msgstr "" #: src/pkey_manage.c:229 src/pkey_manage.c:318 src/pkey_manage.c:479 msgid "" "The file designated in database doesn't contain any recognized private key." msgstr "" #: src/pkey_manage.c:233 src/pkey_manage.c:500 msgid "The file designated in database couldn't be opened." msgstr "" #: src/pkey_manage.c:236 src/pkey_manage.c:503 msgid "The file designated in database doesn't exist." msgstr "" #: src/pkey_manage.c:360 msgid "Select private key file" msgstr "" #: src/pkey_manage.c:1069 src/pkey_manage.c:1164 msgid "The given password doesn't match the one used in the database" msgstr "" #: src/pkey_manage.c:1151 #, c-format msgid "" "This action requires using one or more private keys saved in the database.\n" msgstr "" #: src/pkey_manage.c:1152 msgid "Please insert the database password:" msgstr "" #: src/san_manager.c:71 msgid "Value cannot be empty" msgstr "" #: src/san_manager.c:82 msgid "Invalid DNS name. Use format: example.com or *.example.com" msgstr "" #: src/san_manager.c:93 msgid "Invalid IP address. Use IPv4 (e.g., 192.168.1.1) or IPv6 format" msgstr "" #: src/san_manager.c:103 msgid "Invalid email address. Use format: user@example.com" msgstr "" #: src/san_manager.c:113 msgid "Invalid URI. Must start with http://, https://, ftp://, or ldap://" msgstr "" #: src/san_manager.c:389 msgid "Type" msgstr "" #: src/tls.c:198 src/tls.c:231 src/tls.c:276 src/tls.c:307 #, c-format msgid "Error initializing private key structure." msgstr "" #: src/tls.c:204 src/tls.c:237 src/tls.c:281 src/tls.c:311 #, c-format msgid "Error creating private key: %d" msgstr "" #: src/tls.c:215 src/tls.c:248 src/tls.c:289 src/tls.c:321 src/tls.c:794 #: src/tls.c:1204 #, c-format msgid "Error exporting private key to PEM structure." msgstr "" #: src/tls.c:656 #, c-format msgid "Error when initializing certificate structure" msgstr "" #: src/tls.c:662 src/tls.c:956 #, c-format msgid "Error when setting certificate version" msgstr "" #: src/tls.c:672 src/tls.c:969 #, c-format msgid "Error when setting certificate serial number" msgstr "" #: src/tls.c:681 src/tls.c:978 #, c-format msgid "Error when setting activation time" msgstr "" #: src/tls.c:686 src/tls.c:986 #, c-format msgid "Error when setting expiration time" msgstr "" #: src/tls.c:740 src/tls.c:1040 #, c-format msgid "Error when setting basicConstraint extension" msgstr "" #: src/tls.c:745 src/tls.c:1082 #, c-format msgid "Error when setting keyUsage extension" msgstr "" #: src/tls.c:756 src/tls.c:864 src/tls.c:1120 #, fuzzy, c-format msgid "Error when setting Subject Alternative Name extension" msgstr "Virhe asetettaessa CSR-versiota" #: src/tls.c:768 src/tls.c:1056 #, c-format msgid "Error when setting subject key identifier extension" msgstr "" #: src/tls.c:772 src/tls.c:1030 #, c-format msgid "Error when setting authority key identifier extension" msgstr "" #: src/tls.c:782 #, c-format msgid "Error when signing self-signed certificate" msgstr "" #: src/tls.c:813 #, fuzzy, c-format msgid "Error when initializing privkey structure" msgstr "Virhe alustettaessa CRT-rakennetta" #: src/tls.c:817 #, fuzzy, c-format msgid "Error when importing private key into privkey structure" msgstr "Virhe kopioitaessa tietoja CSR:stä varmennerakenteeseen" #: src/tls.c:821 #, c-format msgid "Error when initializing csr structure" msgstr "" #: src/tls.c:825 #, c-format msgid "Error when setting csr version" msgstr "Virhe asetettaessa CSR-versiota" #: src/tls.c:869 #, c-format msgid "Error when signing self-signed csr" msgstr "Virhe allekirjoitettaessa itseallekirjoitettua CSR:ää" #: src/tls.c:880 #, c-format msgid "Error exporting CSR to PEM structure." msgstr "Virhe vietäessä CSR:ää PEM-rakenteeseen." #: src/tls.c:933 #, fuzzy, c-format msgid "Error when importing CA private key" msgstr "Virhe kopioitaessa tietoja CSR:stä varmennerakenteeseen" #: src/tls.c:940 #, c-format msgid "Error when initializing crt structure" msgstr "Virhe alustettaessa CRT-rakennetta" #: src/tls.c:948 #, c-format msgid "Error when copying data from CSR to certificate structure" msgstr "Virhe kopioitaessa tietoja CSR:stä varmennerakenteeseen" #: src/tls.c:1182 #, fuzzy, c-format msgid "Error when signing certificate: %s" msgstr "Virhe allekirjoitettaessa varmennetta" #: src/tls.c:1482 msgid "Key encipher only" msgstr "Avain vain salaukseen" #: src/tls.c:1484 msgid "Key decipher only" msgstr "Avain vain salauksen purkuun" #: src/tls.c:1496 msgid "TLS WWW Client." msgstr "TLS WWW-asiakas" #: src/wizard_window.c:239 #, c-format msgid "" "Key generation failed:\n" "%s" msgstr "" #: src/wizard_window.c:249 #, c-format msgid "" "CSR generation failed:\n" "%s" msgstr "" #: src/wizard_window.c:260 msgid "Failed to parse generated CSR." msgstr "" #: src/wizard_window.c:271 #, c-format msgid "" "Failed to save CSR:\n" "%s" msgstr "" #: src/wizard_window.c:294 #, fuzzy, c-format msgid "" "Failed to sign certificate:\n" "%s" msgstr "Virhe allekirjoitettaessa varmennetta" #: src/wizard_window.c:297 #, fuzzy msgid "Certificate generated successfully!" msgstr "Varmennuspyyntöjen näkyvyys" #: src/wizard_window.c:311 msgid "Please enter a server name." msgstr "" #: src/wizard_window.c:318 msgid "Please select a Certificate Authority." msgstr "" #: src/wizard_window.c:325 msgid "Invalid Certificate Authority selected." msgstr "" #: src/wizard_window.c:412 msgid "No Certificate Authority found. Please create a CA first." msgstr "" #, fuzzy #~ msgid "<b>Certificate subject</b>" #~ msgstr "Varmenteen aihe" #, fuzzy #~ msgid "<big>CA properties</big>" #~ msgstr "Varmentajan ominaisuudet\n" gnomint-1.6.4/po/ca.gmo0000644000000000000000000012317715212761320013452 0ustar00rootrootl 9# #####$$0$ D$O$_$a$j$ p$!z$$$%$$%1,%(^%'%*%!% %+&!I&+k&"&!&.&% '$1'V'/v')''''(*5(!`( ()( ((*)!9) [),|)#)"),)#*"A*+d*"*!****N +Y+#+, 0, =,H,P,i, ~,H, ,A,1-Q-i-5-- - -&- .B.Z._.c.Bh.*. .../!/ (/4/"C/%f///!// 0"090Y0o0100 000 1'1(A1j11 11@18 2C2 c2p22B22223.32M333B3&3&4/'4W4F_4,44B4(5!75DY5)5-5259)6@c666&6'6* 7#77&[7%7&7(7(7'!8I8Ag8888+8909O9h9E9D9H:EY:D: : ::;";"?;b;};+; ;;;^;fK<A<<< =)=V8==== =>=G>Ce>B>B>B/?Br?B?=?6@Q@ T@'_@@@@.@5A 7ALXAAAAAQBOWBGBBBC CBCaCsCCBC CCYCBWDDD9DBDB6E%yE*EEEEE' F"4F!WFyFBFFFF#F !G.GHH!I7I NI\IvII IIIBI J%JB>JJ JJJJ!J#K8KIKgK KOKOK1LVJLLL&L@MVFMM!M2M N N&=N&dN*NN2NN O O1OEOeO{OO/OOOP P $P 2PSPlP{PPP P(PQ(QBQ-GQ uQQ Q+QBQ#R:RBRZR lR vRRRBRBR'SA,S^nS_S3-TaTT&T&TJT'7U/_U'U*U1UsV!VzV8%WM^W WWWWW W WWX3 X3@X tXLXLXAYL\YY YYYYYYYZ .Z4OZZZ!ZZZ"Z$Z"$[G[O[h[|[[ [[[[[[[%\%)\O\b\s\\\3\s\ \^j^{^^^^^^ __._0_ 9_ D_GQ_%_"_?_+"`(N`Aw`0`-`Ba2[a0a>a&a@%b/fb,bRbEcB\c4c4c7 dCAd0d-d>d)#e&Me6te#e eFe-7f*ef>f-f*f@(g/ig,g?g-h*4h!_hhh[hh#ii i j j%j2=j pjOzjjUj04kek|k7kkkk.l0lUDllll^l/m7m'Imqmmm mm0m3m)3n*]nnn#nn-o/oDo<Xoo o oo(o'p0@p%qpNp4pqR"q:uq*qqqqHrKrRrnrr<rBr(s,sO>s7sPsBtZtUbt.ttQtKu]u?|u u/uG v?UvAvv v6w38wElw5w1w+x;Fx3x5x6x4#y9Xyyy'y5y%z'Dz!lz1zdzd%{e{d{eU| | |?|}"}/B}r}}.} }}}k~m{~E~/4OkX C-JqMM VXORYRB* ,(Uo!$^Ճ!4RV#̈́"V+QQԅ& . OYXndžP [WmpŇN6@JK6+1 )""L,o Q $0Ufx!&ݍ &D \j|JݎEL am!''Џ"&4![ }^U?ZV"ԑ.P#Yt Β!/A3X7AēFM=^ 5#+;)[$#Εޕ/ 2S p5%ǖI(7 `!3 ݗTKVP*#!N p zOQGGP\W)M3w48-DGO/ܜ6 >C> Xy:h@̟  7/OVGG2Rz/͡  "!D&Ho#J '&/V:j5,ۣ-Kg p{ ĤߤB*<g'årޥ-Q<M;g3JaG$ lQ\vZCf?}{Wyn bse/!0(szp<@FcRvomoMD\x*RE8N41./Si@j$z5uY ,C+O}4^df-'S ` a[|Grr~ :c{u^n_k)8 j2B#>UTU0)hV]e1-,m"W#gI" = '6[ Ik+57w9AxKhlLX JEPy%Zq(>FQ]d!p`3%HHi*BK=?~DOAXL67tY:|q_bP2TV.t& ;&9Nw Revocation Distinguished Name: Distinguished Name: %s Expires on: %s Key bitlength: %d MD5 fingerprint: %s SHA1 fingerprint: %s Serial number: %s Type: %s Unique ID: %s Error. OK. (unknown)* Any purpose disabled by policy * Any purpose disabled. * Any purpose enabled. * CRL signing use disabled by policy * CRL signing use disabled. * CRL signing use enabled. * Certification Authority use disabled by policy * Certification Authority use disabled. * Certification Authority use enabled. * Code Signing purpose disabled by policy * Code Signing purpose disabled. * Code Signing purpose enabled. * Data Encipherment use disabled by policy * Data Encipherment use enabled. * Digital Signature use disabled by policy * Digital Signature use disabled. * Digital Signature use enabled. * Email Protection purpose disabled by policy * Email Protection purpose disabled. * Email Protection purpose enabled. * Enable CRL Signing? [Yes]/No * Enable Certification Authority use? [Yes]/No * Enable Digital Signature use? [Yes]/No * Key Agreement use disabled by policy * Key Agreement use disabled. * Key Agreement use enabled. * Key Encipherment use disabled by policy * Key Encipherment use disabled. * Key Encipherment use enabled. * Non Repudiation use disabled by policy * Non Repudiation use disabled. * Non Repudiation use enabled. * OCSP Signing purpose disabled by policy * OCSP Signing purpose disabled. * OCSP Signing purpose enabled. * TLS Web Client purpose disabled by policy * TLS Web Client purpose disabled. * TLS Web Client purpose enabled. * TLS Web Server purpose disabled by policy * TLS Web Server purpose disabled. * TLS Web Server purpose enabled. * Time Stamping purpose disabled by policy * Time Stamping purpose disabled. * Time Stamping purpose enabled. CSR subjectEmmited byValidityExport the Certificate Signing Request to a public file, in PEM format.Export the saved private key to a PKCS#8 password-protected file. This file should only be accessed by the subject of the Certificate Signing Request.#Description#=================== Activated onActivationAdd CSRAdd _Certificate RequestAdd an autosigned CAAlgorithmAll the mandatory data for the certificate generation has been gathered.Any purposeAre you sure you want to delete this Certificate Signing Request?Are you sure you want to revoke this certificate?Are you sure? Yes/[No] Are you sure? [Yes]/No Automatic exporting of certificates for gnome-keyringAvailable commands: Both parts.CA PolicyCA Root Certificate Common Name (CN):CA propertiesCA use enabled in generated certs CACNCAOCAOUCRL Sign use enabled in generated certs CRL generated successfully into file '%s' CRL signingCSR properties - gnoMintCertActivationDateCertExpirationDateCertSNCertificateCertificate DNCertificate Requests in Database: Certificate Signing Request deleted. Certificate Signing Request: Certificate _Signing RequestsCertificate exported successfullyCertificate propertiesCertificate properties - gnoMintCertificate purposes: Certificate requests visibilityCertificate revoked. Certificate signed. Certificate signing request exported successfullyCertificate uses: Certificate: Certificates in Database: Certification AuthorityChange CA password - gnoMintChange database pass_wordChange password for the current databaseChange the given CA policyChoose CA for signing the CSRChoose private key file. gnoMintCityClose current file and create a new database with given filenameClose current file and open the file with given filenameClose database and exit programCode signingCommon Name (CN)CountryCountry in generated certs must be the same than in CA Country:Create a new databaseCreating new CA - gnoMintCurrent opened file: %s Currently, the database IS password-protected.Currently, the database is not password-protected.DSAData enciphermentData encipherment use enabled in generated certs Database password protection - gnoMintDelete the given CSR from the databaseDelete the selected Certificate Signing RequestDetailsDiffie-Hellman parameters created and saved successfully in file '%s' Diffie-Hellman parameters saved successfullyDigital signatureDigital signature use enabled in generated certs Directory NameDirectory imported successfully. Do you want to change any property of the new certificate? Yes/[No] Do you want to change anything? Yes/[No] Do you want to password protect it? [Yes]/No Do you want to proceed with the signing? [Yes]/No Do you want to remove this password protection? Yes/[No] Don't inherit any fields from existing Certification AuthoritiesE_xportEmail protectionEnable Code Signing purpose? [Yes]/No Enable Data Encipherment use? [Yes]/No Enable Email Protection purpose? [Yes]/No Enable Key Agreement use? [Yes]/No Enable Key Encipherment use? [Yes]/No Enable Non Repudiation use? [Yes]/No Enable OCSP Signing purpose? [Yes]/No Enable TLS Web Client purpose? [Yes]/No Enable TLS Web Server purpose? [Yes]/No Enable Time Stamping purpose? [Yes]/No Enable any purpose? [Yes]/No Enter bitlength for the key (it must be a whole multiple of 1024)Enter common name (CN)Enter country (C)Enter locality or city (L)Enter new password again for confirmation:Enter organization (O)Enter organizational unit (OU)Enter password - gnoMintEnter state or province (ST)Error while changing database password. The operation was cancelled.Error while changing database password. The operation was cancelled.Error while establishing database password. The operation was cancelled.Error while removing database password. The operation was cancelled.Error while removing database password. The operation was cancelled.ExpirationExpires onExport CSR - gnoMintExport certificateExport certificate - gnoMintExport certificate signing requestExport crypted private keyExport optionsExport whole certificate in PKCS#12 packageExtensionsExtrac_t private keyExtract Private KeyExtract the private key of the CSR with the given internal id and saves it into the given fileExtract the private key of the certificate with the given internal id and saves it into the given fileExtract the private key of the selected item into a external fileFALSEFile '%s' opened File imported successfully. Fingerprints: For removing the password-protection, the current database password must be supplied. GeneralGeneral Preferences - gnoMintGenerate D_H parameters...Generate _CRLGenerate a certificate signing the given CSR with the given CAGenerate a new CRL for the given CA, saving it into the file Generate a new DH-parameter set, saving it into the file Generated certs inherit Country from CA Generated certs inherit Locality from CA Generated certs inherit Organization from CA Generated certs inherit Organizational Unit from CA Generated certs inherit State from CA Get current status (opened file, no. of certificates, etc...)Hours between CRL updates:IPIP AddressId. Parent Id. CSR Subject Key in DB? Import a single file.Import a whole directory.Import selection - gnoMintImport the file with the given name Import the given directory, as a OpenSSL-CA directoryIncorrect number of parameters. Inherit fields according to selected Certification Authority and its policy.Insert new password (confirm):Insert new password:Insert password (confirm):Insert password:Introduce number of months before expiration of the new certificate (0 to cancel)Introduce number of months before expiration of the new certification authorityInvalid command. Try 'help' for getting a list of recognized commands. IssuerIssuer Unique IDIssuer: Key agreementKey agreement use enabled in generated certs Key decipher onlyKey encipher onlyKey enciphermentKey encipherment use enabled in generated certs Key pair List the CSRs in databaseList the certificates in database. With option --see-revoked, lists also the revoked onesLocality in generated certs must be the same than in CA MD5 fingerprintMD5FINGERPRINTManage X.509 certificates and CAs, easily and graphicallyMaximum number of hours between CRL updates Maximum number of months before expiration of new certs Months before certificate expiration:Months before root certificate expiration:NameNew CA - gnoMintNew CRL - gnoMintNew Certificate - gnoMintNew Diffie-Hellman parameters - gnoMintNew certificate Common Name (CN):New certificate request - gnoMintNon repudiationNon reputation use enabled in generated certs None.Nothing done. Number of CSRs in file: %d Number of certificates in file: %d OCSP signingOK. Now you must supply a new password for protecting the private keys in the database, so nobody else but authorized people can use them. This password will be asked any time gnoMint will make use of any private key in database.OK. You need to supply a password for protecting the private keys in the database, so nobody else but authorized people can use them. This password will be asked any time gnoMint will make use of any private key in database.Only the private key (crypted).Only the private key (uncrypted).Only the pu_blic part.Open _recentsOpen an existing databaseOpening database %s...Operation cancelled. OrganizationOrganization (O)Organization Unit:Organization in generated certs must be the same than in CA Organization:Organizational Unit (OU)Organizational Unit in generated certs must be the same than in CAOrganizational unitParametersPassword (confirm):Password changed successfullyPassword changed successfully. Password established successfullyPassword established successfully. Password protectPassword removed successfullyPassword removed successfully. Password:Please enter data corresponding to subject of the Certificate Signing Request: Please enter data corresponding to subject of the new Certification Authority: Please, choose the file:Please, choose which part of the saved Certificate Signing Request you want to export:Please, enter current password:Please, enter new password:Please, enter the prime size, in bits:Please, insert the current database password (Empty to cancel): Please, select the CA for which a Certificate Revocation List is going to be created:Private key bit length:Private key exported successfullyPrivate key extracted successfully into file '%s' Private key type:Problem when importing '%s' fileProblem when importing the given file.Problem when opening '%s' CA database Problem when opening new '%s' CA database Public ExponentRemember this password during this gnoMint sessionRevo_keRevocationRevokeRevoke the certificate with the given internal IDRevoked certificates visibilityRoot certificate propSHA1FINGERPRINTSave Diffie-Hellman parametersSave the current file with a different filenameSelect PEM file to importSelect directory to importSerialSerial NumberSerial numberSet the given program preferenceShow (this) help messageShow CA policyShow about messageShow distribution informationShow program preferencesShow properties of the given CSRShow properties of the given certificateShow version informationShow warranty informationSignSign the selected Certificate Signing RequestSignatureSignature AlgorithmStart a new CSR creation processStart a new self-signed CA creation processState in generated certs must be the same than in CA State or Province nameSubjectSubject Public Key InfoSubject Unique IDSubject: Syntax: %s TLS WWW Client.TLS Web clientTLS web client purpose enabled in generated certs TLS web server purpose enabled in generated certs TRUEThe bit-length of the prime number must be whole multiple of 1024The current password you have entered doesn't match with the actual current database password.The current password you have entered doesn't match with the actual current database password.The file already exists, so it will be overwritten.The given CA id. is not validThe given CSR id. is not validThe given certificate id. is not validThe introduced passwords are distinct.The new certificate will be created with the following uses and purposes: There was an error while exporting CSR.There was an error while exporting certificate.These are the provided CSR properties: These are the provided new CA properties: This Certificate Signing Request will be deleted.This action requires using one or more private keys saved in the CA database. Please insert the database password.This certificate will be revoked.This is free software, and you are welcome to redistribute it under certain conditions; type 'distribution' for details. This operation cannot be undone. Are you sure? Yes/[No] This program comes with ABSOLUTELY NO WARRANTY; for details type 'warranty'. Time stampingURIUnexpected errorUnpaired quotes ValidityValidity Validity: ValueVersionWhether the certificate requests should be visible.Whether the revoked certificates should be visible.Window sizeYou are about to create a Certificate Signing Request with these properties.You are about to create a new Certification Authority with these properties.You are about to sign the following Certificate Signing Request: You must supply the current database password before changing the password. _Add self-signed CA_Certificates_Edit_Help_Import_New certificate database_No_Open certificate database_Revoked Certificates_Save certificate database as..._Save filename in the database for automatic loading_Sign_Viewaddcsr [ca-id-for-inherit-fields]crlgen delete dhgen extractcertpkey extractcsrpkey gnoMintgnoMint X.509 CA Managerimportdir importfile labelmay differmust be the samenewdb opendb page 3revoke savedbas setpolicy setpreference showcert showcsr showpolicy sign translator-creditswith the certificate corresponding to the next CA: Project-Id-Version: gnomint Report-Msgid-Bugs-To: davefx@gmail.com PO-Revision-Date: 2010-04-05 14:02+0000 Last-Translator: Sergio Oller Language-Team: Catalan Language: ca MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2010-08-11 09:00+0000 X-Generator: Launchpad (build Unknown) Revocació Nom distintiu: Nom distintiu (DN): %s Caduca el: %s Longitud en bits: %d Empremta digital MD5: %s Empremta digital SHA1: %s Núm. de sèrie: %s Tipus: %s Identificador únic: %s Error. D'acord. (desconegut)* L'ús per a qualsevol finalitat s'ha deshabilitat amb una directiva. * Qualsevol finalitat deshabilitada. * Qualsevol finalitat habilitada. * Ús per a la signatura de CRL deshabilitat per una directiva * Ús per a la firma de CRLs deshabilitat. * Ús per a la firma de CRLs habilitat. * Ús com a Entitat certificadora deshabilitat per una directiva * Ús com a entitat certificadora deshabilitat. * Ús com a entitat certificadora habilitat. * Finalitat de signatura de codi deshabilitada per una directiva. * Finalitat per a la firma de codi deshabilitada. * Finalitat per a la firma de codi habilitada. * Ús per al xifratge de dades deshabilitat per una directiva Ús per al xifrat de dades habilitat. * Ús per a la signatura digital deshabilitat per una directiva * Ús per a la signatura digital deshabilitat. * Ús per a la signatura digital habilitat. * Finalitat de protecció del correu electrònic deshabilitada per una directiva. * Finalitat per a la protecció del correu electrònic deshabilitat. * Finalitat per a la protecció del correu electrònic habilitat. * Habilitar ús per a la signatura de CRL? [Sí]/No * Habilitar ús com Entitat certificadora? [Sí]/No * Habilitar l'ús per a la signatura digital? [Sí]/No * Ús per a la negociació de claus deshabilitat per una directiva Ús per a la negociació de claus deshabilitat. Ús per a la negociació de claus habilitat. * Ús per al xifratge de claus deshabilitat per una directiva Ús per al xifrat de claus deshabilitat. Ús per al xifrat de claus habilitat. * Ús per al no repudi deshabilitat per una directiva Ús per al no repudi deshabilitat. Ús per al no repudi habilitat. * Finalitat per a la signatura d'OCSP deshabilitada per una directiva * Finalitat de signatura OCSP deshabilitada. * Finalitat de signatura OCSP habilitada. * Finalitat de client web TLS deshabilitada per una directiva * Finalitat de client web TLS deshabilitada. * Finalitat de client web TLS habilitada. * Finalitat de servidor web TLS deshabilitada per una directiva * Finalitat de servidor web TLS deshabilitada. * Finalitat de servidor web TLS habilitada. Finalitat de marcatge temporal deshabilitada per una directiva * Finalitat de marca horària deshabilitada. * Finalitat de marca horària habilitada. Titular de la sol·licitudEmès perValidesaExporta la sol·licitud de signatura de certificat a un fitxer públic en format PEMExporta la clau privada emmagatzemada a un fitxer PKCS#8 protegit amb contrasenya. Aquest fitxer només ha de ser accessible pel titular de la sol·licitud de signatura del certificat.#Descripció#=================== Activat aActivacióAfegir CSRAfegir _sol·licitud de certificacióAfegir una entitat certificadora (CA) auto-signadaAlgorismeS'ha obtingut tota la informació necessària per la generació del certificat.Qualsevol propòsitEsteu segur que voleu eliminar aquesta sol·licitud de signatura de certificat (CSR)?Esteu segur que voleu revocar aquest certificat?Esteu segur? Sí/[No] Esteu segur [Sí]/No Exporta automàticament els certificats a gnome-keyringOrdres disponibles: Ambdues parts.Política de la CANom comú (CN) del certificat arrrel de la CA:Propietats de la CAHabilitar l'ús com a CA en els certificats generats CACNCAOCAOUHabilitar l'ús per a signatura de CRLs en els certificats generats CRL generada amb èxit i desada al fitxer '%s' Signatura de CRLsPropietats de la sol·licitud - gnoMintData d'activacióData de caducitatNúm de sèrieCertificatDescriptor (DN) del certificatSol·licituds de certificat a la base de dades: Sol·licitud de signatura de certificat esborrada. Sol·licitud de signatura de certificat: _Sol·licituds de signatura de certificatsCertificat exportat amb èxit.Propietats del certificatPropietats del certificat - gnoMintFinalitats del certificat: Visibilitat de sol·licituds de certificacióCertificat revocat. Certificat signat. Sol·licitud de signatura de certificat exportada amb èxit.Usos del certificat: Certificat: Certificats a la base de dades: Entitat certificadoraCanvia la contrasenya de la CA - gnoMintCanvia _contrasenya de la base de dadesCanvia la contrasenya de la base de dades actualCanvia la política indicada de la CASel·leccioneu l'entitat certificadora (CA) que signarà la sol·licitud (CSR)Sel·lecciona el fitxer amb la clau privada. gnoMintCiutatTanca el fitxer actual i crea una nova base de dades amb el nom del fitxer indicatTanca el fitxer actual i obre el fitxer amb el nom indicatTanca la base de dades i surt del programaSignatura de codiNom comú (CN)PaísEl país dels certificats generats ha de coincidir amb la CA País:Crea una base de dades novaCreant una CA nova - gnoMintFitxer obert actualment: %s Actualment la base de dades ESTÀ protegida amb contrasenya.Actualment la base de dades no es troba protegida per contrasenya.DSAXifratge de dadesHabilita l'ús per al xifratge de dades en els cert. generats Contrasenya de protecció de la base de dades - gnoMintEsborra la sol·licitud de signatura del certificat indicada de la base de dadesEsborra la sol·licitud de signatura de certificat sel·leccionadaDetallsEls paràmetres Diffie-Hellman s'han creat i s'han desat correctament al fitxer '%s' Paràmetres Diffie-Hellman desats correctamentSignatura digitalHabilita l'ús per a la signatura digital en els cert. generats Nom del directoriDirectori importat amb èxit. Desitgeu canviar alguna propietat del nou certificat? Sí/[No] Voleu canviar quelcom? Sí/[No] Desitgeu protegir-la amb contrasenya? [Sí]/No Voleu continuar amb la signatura i generació del certificat? [Sí]/No Desitgeu eliminar aquesta protecció amb contrasenya? Sí/[No] No heretis cap camp de les Entitats Certificadores (CA) existentsE_xportaProtecció de correu electrònicHabilitar la finalitat de signatura de codi? [Sí]/No Habilitar l'ús per al xifratge de dades? [Sí]/No Habilitar la finalitat de protecció de correu electrònic? [Sí]/No Habilitar l'ús per a negociació de claus? [Sí]/No Habilitar l'ús per al xifrat de claus? [Sí]/No Habilitar l'ús per al no repudi? [Sí]/No Habilitar la finalitat per a la signatura d'OCSP? [Sí]/No Habilitar la finalitat de client web TLS? [Sí]/No Habilitar la finalitat de servidor web TLS? [Sí]/No Habilitat la finalitat de marcatge temporal? [Sí]/No Habilitar l'ús per a qualsevol finalitat? [Sí]/No Introduïu la mida de la clau en bits (múltiple de 1024)Introduïu Nom habitual (CN)Introduïu el país (C)Introduïu la localitat o la ciutat (L)Torni a introduir la nova contrasenya per confirmar:Introduïu l'organització (O)Introduïu la Unitat organitzativa (OU)Introdueixi contrasenya - gnoMintIntroduïu el nom de l'estat o la província (ST)S'ha produït un error al canviar la contrasenya de la base de dades. S'ha cancel·lat la operacióS'ha produït un error al canviar la contrasenya de la base de dades. S'ha cancel·lat la operació.S'ha produït un error al establir la contrasenya de la base de dades. S'ha cancel·lat la operació.S'ha produït un error al eliminar la contrasenya de la base de dades. S'ha cancel·lat l'operació.S'ha produït un error al eliminar la contrasenya de la base de dades. S'ha cancel·lat la operació.VencimentCaduca elExporta sol·licitud de signatura de certificat (CSR) - gnoMintExporta certificatExporta el certificat - gnoMintExporta sol·licitud de signatura de certificatExporta la clau privada xifradaOpcions d'exportacióExporta tot el certificat en un paquet PKCS#12ExtensionsEx_treure clau privadaExtreure clau privadaExtreure la clau privada de la CSR amb l'identificador indicat i emmagatzemar-la en el fitxer proporcionat.Extreure la clau privada del certificat amb l'identificador intern proporcionat i desar-la al fitxer indicat.Extreu la clau privada de l'element sel·leccionat a un fitxer externFALSS'ha obert el fitxer '%s' Fitxer importat amb èxit. Empremtes digitals: Per eliminar la protecció amb contrasenya, heu de proporcionar la contrasenya actual. GeneralPreferències generals - gnoMintGenerar els paràmetres D_HGenera la _CRLGenera un certificat firmant el CSR proporcionat amb la CA indicadaGenera un nou CRL per la CA indicada, desant-lo al fitxer Genera un nou conjunt de paràmetres DH, desant-lo al fitxer Els certificats generats hereten el país de la CA Els certificats generats hereten localitat o ciutat de la CA Els certificats generats hereten l'Organització de la CA Els certificats generats hereten la unitat organitzacional de la CA Els certificats generats hereten l'estat/província de la CA Obtén l'estat actual (fitxer obert, nombre de certificats, etc..)Hores entre les actualitzacions de la CRL:IPAdreça IPId. Id. pare Titular de la CSR Clau en BD? Importar un únic fitxer.Importar un directori complet.Importa la sel·lecció - gnoMintImporta el fitxer amb el nom indicatImporta el directori indicat, interpretant-lo com el directori d'una CA realitzada amb OpenSSLNombre incorrecte de paràmetres Heretar camps segons la política de l'entitat certificadora (CA) sel·leccionada.Torneu a introduïr la contrasenya:Introduïu la nova contrasenya:Torneu a introduir la contrasenya:Introduïu la contrasenya:Màxim nombre de mesos abans de la caducitat del nou certificat (0 per a cancel·lar):Introduïu el nombre de mesos abans la caducitat de la nova Entitat certificadoraOrdre no vàlida. Teclegi 'help' per aconseguir una llista d'ordres reconegudes. EmissorIdentificador únic de l'emissorEmissor: Negociació de clausHabilita l'ús per a la negociació de claus en els cert. generats Clau només per desxifrarClau per només xifrarXifratge de clausHabilita l'ús per al xifratge de claus en els cert. generats Parella de claus Llista les sol·licituds de signatura de certificats (CSR) existents a la base de dadesLlista els certificats de la base de dades. Amb la opció --see-revoked, llista també els certificats revocats.La localitat o ciutat dels cert. generats ha de coincidir amb la CA Emprempta digital MD5MD5FINGERPRINTGestiona CAs i certificats X.509, fàcilment i de forma gràficaNombre màxim d'hores entre actualitzacions de CRLs Num. màxim de mesos abans de la caducitat dels nous certificats Mesos abans de la caducitat del certificat:Mesos abans de la caducitat del certificat arrel:NomNova CA - gnoMintNova CRL - gnoMintNou certificat - gnoMintNous paràmetres Diffie-Hellman - gnoMintNom comú (CN) del nou certificat:Nova sol·licitud de certificació - gnoMintNo repudiHabilitar l'ús per al no repudi en els certificats generats Cap.No s'ha fet res. Nombre de CSRs en el fitxer: %d Nombre de certificats al fitxer: %d Signatura d'OCSPD'acord. Heu de proporcionar una nova contrasenya per protegir les claus privades a la base de dades, per tal que només les persones autoritzades puguin fer-les servir. Aquesta contrasenya es demanarà sempre que gnoMint faci ús d'alguna clau privada a la base de dades.D'acord. Cal proporcionar una contrasenya per a protegir les claus privades a la base de dades, per tal que només les persones autoritzades puguin fer ús d'elles. Aquesta contrasenya serà sol·licitada cada vegada que gnoMint faci ús de qualsevol clau privada a la base de dades.Només la clau privada (xifrada).Només la clau privada (sense xifrar).Només la part pú_blicaObrir _recentsObrir una base de dades existentObrint la base de dades %s...Operació cancel·lada OrganitzacióOrganització (O)Unitat organitzativa:L'organització dels cert. generats ha de coincidir amb la de la CA Organització:Unitat organitzativa (OU)La Unitat Organitzativa dels cert. generats ha de coincidir amb la CAUnitat organitzativaParàmetresContrasenya (confirmar):Contrasenya canviada correctamentLa contrasenya s'ha canviat amb èxit. La contrasenya s'ha establert amb èxitContrasenya establerta amb èxit. Protegir amb contrasenyaLa contrasenya s'ha eliminat amb èxitContrasenya eliminada amb èxit. Contrasenya:Introduïu les dades corresponents al titular de la sol·licitud de signatura del certificat: Introduïu les dades corresponents al titular de la nova Entitat Certificadora (CA): Seleccioneu el fitxer:Seleccioneu quina part de la sol·licitud de signatura de certificat (CSR) voleu exportar:Introduïu la contrasenya actual:Introduïu la nova contrasenya:Introduïu la mida del nombre primer, en bits:Introduïu la contrasenya actual de la base de dades (Buida per a cancel·lar): Seleccioneu la CA per a la qual es crearà una CRL (llista de revocació de certificats)Mida en bits de la clau privada:Clau privada exportada amb èxit.Clau privada extreta amb èxit al fitxer: '%s' Tipus de clau privada:S'han produït problemes al importar el fitxer '%s'S'han produït problemes en importar el fitxer indicat.S'han produït problemes al obrir la base de dades de la CA '%s' S'han produït problemes al obrir la nova base de dades de la CA '%s' Exponent públicRecorda aquesta contrasenya durant aquesta sessió de gnoMintRevo_caRevocacióRevocaRevoca el certificat amb l'identificador proporcionatVisibilitat de certificats revocatsProp. del certificat arrelSHA1FINGERPRINTDesa paràmetres Diffie-HellmanDesa el fitxer actual amb un nom diferentSeleccioneu el fitxer PEM a importarSeleccioneu el directori a importarNúm. de sèrieNúmero de sèrieNúmero de sèrieEstableix la preferència del programa indicadaMostra (aquest) missatge d'ajudaMostra la política de la CAMostra el missatge "Quant al..."Mostra informació sobre la distribució del programaMostra les preferències del programaMostra propietats de la sol·licitud de signatura del certificat indicadaMostra propietats del certificat indicatMostra informació de la versióMostra informació de la garantiaSignaSigna la sol·licitud de certificació seleccionadaSignaturaAlgorisme de la signaturaComença un nou procés de creació de sol·licitud de signatura de certificat (CSR)Inicia un nou procés de creació d'Entitat Certificadora (CA) auto-signadaL'Estat o província dels cert. generats ha de coincidir amb la CA Nom de l'estat o provínciaPersona certificadaInformació de clau pública de l'assumpteIdentificador únic de l'assumpteTitular: Sintaxi: %s Client TLS WWWClient WWW TLSHabilita la finalitat de client web TLS per als cert. generats Habilita la finalitat de servidor web TLS per als cert. generats VERDADERLa longitud en bits del nombre primer ha de ser múltiple enter de 1024La contrasenya actual introduïda no coincideix amb la contrasenya real de la base de dades.La contrasenya introduïda no es correspon amb la contrasenya real de la base de dades.El fitxer ja existeix, se sobreescriurà.L'identificador de la CA proporcionat no és vàlidL'identificador de la CSR proporcionat no és vàlidL'identificador de certificat proporcionat no és vàlidLes contrasenyes introduïdes són diferents.El nou certificat es validarà per als següents usos i finalitats: Ha hagut un error al exportar la sol·licitud de signatura de certificat (CSR),Hi ha hagut un error al exportar el certificat.Aquestes són les propietats de la CSR proporcionada: Aquestes són les propietats proporcionades per a la nova CA: La sol·licitud de signatura de certificat (CSR) s'esborrarà.Aquesta acció requereix emprar una o més claus privades emmagatzemades en la base de dades de la AC. Introduïu la contrasenya de la base de dades.Aquest certificat serà revocat.Aquest programa és software lliure; se li anima a distribuir-lo sota determinades condicions; teclegi 'distribution' per a més detalls. Aquesta operació no pot desfer-se. Esteu segur? Sí/[No] Aquest programa es proporciona SENSE QUALSEVOL TIPUS DE GARANTIA; per més detalls, teclegi 'warranty'. Marca horàriaURIError inesperatError: Cometes desaparellades ValidesaValidesa Validesa: ValorVersióSi les sol·licituds de certificat han de ser visibles.Si els certificats revocats han de ser visiblesMida de la finestraAra es crearà una petició de signatura del certificat (CSR) amb aquestes propietats.Es crearà una nova Entitat certificadora (CA) amb aquestes propietats.Ara es signarà la següent petició de signatura de certificat (CSR): Ha de proporcionar la contrasenya actual de la base de dades abans de canviar-la. _Afegir entitat certificadora (CA) auto-signada_Certificats_EditaA_juda_Importa_Nova base de dades de certificats_No_Obre una base de dades de certificatsCertificats _revocatsAnomena i De_sa la base de dades..._Desa el nom del fitxer a la base de dades per carregar-lo automàticament_Signa_Visualitzaadd-csr [id-de-la-CA-per-heretar-camps]crlgen delete dhgen extractcertpkey extractcsrpkey gnoMintGestor de CAs X.509 gnoMint.importdir importfile etiquetapot variarha de coincidirnewdb opendb pàgina 3revoke savedbas setpolicy setpreference showcert showcsr showpolicy sign Launchpad Contributions: David Marín https://launchpad.net/~davefx Sergio Oller https://launchpad.net/~zeehioamb el certificat corresponent a aquesta CA: gnomint-1.6.4/po/sv.po0000644000000000000000000034426615212761320013357 0ustar00rootroot# Swedish translation for gnomint. # Copyright (C) 2008 Free Software Foundation, Inc. # This file is distributed under the same license as the gnomint package. # Daniel Nylander , 2008. # msgid "" msgstr "" "Project-Id-Version: gnomint\n" "Report-Msgid-Bugs-To: davefx@gmail.com\n" "POT-Creation-Date: 2026-06-12 10:43+0000\n" "PO-Revision-Date: 2010-07-09 11:48+0000\n" "Last-Translator: David Marín \n" "Language-Team: Swedish \n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-08-11 09:00+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: gconf/org.gnome.gnomint.gschema.xml:7 msgid "Window size" msgstr "Fönsterstorlek" #: gconf/org.gnome.gnomint.gschema.xml:8 #, fuzzy msgid "" "The (width,length) size gnoMint should take when started. This cannot be " "smaller than (320,200)." msgstr "" "Storleken (bredd,längd) som gnoMint ska ha vid start. Den kan inte vara " "mindre än (320,200)." #: gconf/org.gnome.gnomint.gschema.xml:16 #, fuzzy msgid "Revoked certificates visibility" msgstr "Spä_rrade certifikat" #: gconf/org.gnome.gnomint.gschema.xml:17 msgid "Whether the revoked certificates should be visible." msgstr "Huruvida de återkallade certifikaten ska vara synliga." #: gconf/org.gnome.gnomint.gschema.xml:24 #, fuzzy msgid "Expired certificates visibility" msgstr "Spä_rrade certifikat" #: gconf/org.gnome.gnomint.gschema.xml:25 msgid "" "Whether already-expired certificates should be visible in the certificates " "tree. CAs are always visible regardless of this setting so that any still-" "valid certificates they signed remain reachable." msgstr "" #: gconf/org.gnome.gnomint.gschema.xml:35 msgid "Days before expiration to highlight certificates in amber" msgstr "" #: gconf/org.gnome.gnomint.gschema.xml:36 msgid "" "Certificates whose effective validity ends within this many days are shown " "in amber in the certificates tree, as a heads-up that they should be renewed " "soon. Setting this to 0 disables the amber highlight (certificates appear " "either normally or in gray for already-expired)." msgstr "" #: gconf/org.gnome.gnomint.gschema.xml:47 #, fuzzy msgid "Certificate requests visibility" msgstr "Nytt Certifikat - gnoMint" #: gconf/org.gnome.gnomint.gschema.xml:48 msgid "Whether the certificate requests should be visible." msgstr "Huruvida certifikatbegäran ska vara synlig." #: gconf/org.gnome.gnomint.gschema.xml:55 #, fuzzy msgid "Automatic exporting of certificates for gnome-keyring" msgstr "Automatisk export av certifikat för gnome-keyring" #: gconf/org.gnome.gnomint.gschema.xml:56 #, fuzzy msgid "" "Whether the created or imported certificates are automatically exported to " "gnome-keyring certificate-store." msgstr "" "Huruvida de skapade eller importerade certifikaten automatiskt ska " "exporteras till gnome-keyring certificate-store." #: gui/certificate_popup_menu.ui:7 gui/csr_popup_menu.ui:7 #: gui/main_window.ui:45 #, fuzzy msgid "Properties" msgstr "Egenskaper" #: gui/certificate_popup_menu.ui:13 gui/main_window.ui:35 #, fuzzy msgid "Export full c_hain..." msgstr "Exportera certifikat" #: gui/certificate_popup_menu.ui:17 gui/csr_popup_menu.ui:13 #: gui/main_window.ui:34 msgid "E_xport" msgstr "E_xportera" #: gui/certificate_popup_menu.ui:21 gui/csr_popup_menu.ui:17 #: gui/main_window.ui:23 msgid "Extrac_t private key" msgstr "Extrahe_ra privat nyckel" #: gui/certificate_popup_menu.ui:27 gui/main_window.ui:24 msgid "Re_new with fresh key" msgstr "" #: gui/certificate_popup_menu.ui:31 msgid "_Compare with PEM file…" msgstr "" #: gui/certificate_popup_menu.ui:35 gui/main_window.ui:25 msgid "Revo_ke" msgstr "Spä_rra" #: gui/certificate_popup_menu.ui:41 gui/main_window.ui:21 #, fuzzy msgid "Add _Web Server Certificate (wizard)" msgstr "Certifikat" #: gui/certificate_popup_menu.ui:45 gui/main_window.ui:22 #, fuzzy msgid "Add _Email Server Certificate (wizard)" msgstr "Certifikat" #: gui/certificate_properties_dialog.ui:19 #, fuzzy msgid "Certificate properties - gnoMint" msgstr "Certifikategenskaper" #: gui/certificate_properties_dialog.ui:54 #, fuzzy msgid "This certificate has been verified for the following uses:" msgstr "Detta certifikat har verifierats för följande användning:" #: gui/certificate_properties_dialog.ui:77 msgid "MD5FINGERPRINT" msgstr "MD5FINGERAVTRYCK" #: gui/certificate_properties_dialog.ui:88 msgid "SHA1FINGERPRINT" msgstr "SHA1FINGERAVTRYCK" #: gui/certificate_properties_dialog.ui:99 #: gui/certificate_properties_dialog.ui:132 #: gui/certificate_properties_dialog.ui:176 #: gui/certificate_properties_dialog.ui:231 gui/creation_process_window.ui:15 #: gui/creation_process_window.ui:61 gui/csr_properties_dialog.ui:109 #: gui/new_ca_window.ui:56 gui/new_ca_window.ui:306 gui/new_ca_window.ui:521 #: gui/new_req_window.ui:46 gui/new_req_window.ui:157 gui/new_req_window.ui:413 msgid " " msgstr " " #: gui/certificate_properties_dialog.ui:110 #, fuzzy msgid "CertExpirationDate" msgstr "CertList utgång|\t" #: gui/certificate_properties_dialog.ui:121 #, fuzzy msgid "CertActivationDate" msgstr "CertList aktivering|\t" #: gui/certificate_properties_dialog.ui:143 msgid "CAOU" msgstr "" #: gui/certificate_properties_dialog.ui:154 #, fuzzy msgid "CAO" msgstr "CA" #: gui/certificate_properties_dialog.ui:165 msgid "CACN" msgstr "" #: gui/certificate_properties_dialog.ui:187 msgid "CertSN" msgstr "" #: gui/certificate_properties_dialog.ui:198 gui/csr_properties_dialog.ui:63 #, fuzzy msgid "SubjectOU" msgstr "Ämne" #: gui/certificate_properties_dialog.ui:209 gui/csr_properties_dialog.ui:87 #, fuzzy msgid "SubjectO" msgstr "Ämne" #: gui/certificate_properties_dialog.ui:220 gui/csr_properties_dialog.ui:98 #, fuzzy msgid "SubjectCN" msgstr "Ämne" #: gui/certificate_properties_dialog.ui:242 msgid "MD5 fingerprint" msgstr "MD5-fingeravtryck" #: gui/certificate_properties_dialog.ui:253 #, fuzzy msgid "SHA1 fingerprint" msgstr "SHA1-fingeravtryck" #: gui/certificate_properties_dialog.ui:264 #, fuzzy msgid "Fingerprints" msgstr "Certifikat" #: gui/certificate_properties_dialog.ui:276 msgid "Expires on" msgstr "Utgår den" #: gui/certificate_properties_dialog.ui:287 msgid "Activated on" msgstr "Aktiverat den" #: gui/certificate_properties_dialog.ui:298 msgid "Validity" msgstr "Giltighet" #: gui/certificate_properties_dialog.ui:310 #: gui/certificate_properties_dialog.ui:389 gui/csr_properties_dialog.ui:120 msgid "Organizational Unit (OU)" msgstr "Organisationsenhet (OU)" #: gui/certificate_properties_dialog.ui:321 #: gui/certificate_properties_dialog.ui:400 gui/csr_properties_dialog.ui:142 msgid "Organization (O)" msgstr "Organisation (O)" #: gui/certificate_properties_dialog.ui:332 #: gui/certificate_properties_dialog.ui:411 gui/csr_properties_dialog.ui:153 msgid "Common Name (CN)" msgstr "Vanligt namn (CN)" #: gui/certificate_properties_dialog.ui:343 msgid "Emmited by" msgstr "Emitterat av" #: gui/certificate_properties_dialog.ui:355 #, fuzzy msgid "Subject Alternative Names" msgstr "Ämne" #: gui/certificate_properties_dialog.ui:378 msgid "Serial number" msgstr "Serienummer" #: gui/certificate_properties_dialog.ui:422 #, fuzzy msgid "Certificate subject" msgstr "Certifikat" #: gui/certificate_properties_dialog.ui:434 #, fuzzy msgid "SHA256FINGERPRINT" msgstr "SHA1FINGERAVTRYCK" #: gui/certificate_properties_dialog.ui:449 #, fuzzy msgid "SHA256 fingerprint" msgstr "SHA1-fingeravtryck" #: gui/certificate_properties_dialog.ui:460 #, fuzzy msgid "SHA512FINGERPRINT" msgstr "SHA1FINGERAVTRYCK" #: gui/certificate_properties_dialog.ui:475 #, fuzzy msgid "SHA512 fingerprint" msgstr "SHA1-fingeravtryck" #: gui/certificate_properties_dialog.ui:486 #: gui/certificate_properties_dialog.ui:509 gui/csr_properties_dialog.ui:176 #, fuzzy msgid "Email address" msgstr "IP-adress" #: gui/certificate_properties_dialog.ui:536 gui/csr_properties_dialog.ui:203 msgid "General" msgstr "Allmänt" #: gui/certificate_properties_dialog.ui:557 #, fuzzy msgid "Certificate hierarchy" msgstr "Certifikat" #: gui/certificate_properties_dialog.ui:582 #, fuzzy msgid "Certificate fields" msgstr "Certifikat" #: gui/certificate_properties_dialog.ui:605 msgid "Details" msgstr "Detaljer" #: gui/certificate_properties_dialog.ui:623 msgid "" "\n" "It is recommended that all the certificates generated by a CA\n" "share the same properties.\n" "If you want to generate certificates with different properties, you\n" "should create a hierarchy of CAs, each one with its own policy for\n" "certificate generation.\n" "\n" "Please, define the maximum set of properties for the\n" "certificates that this CA will be able to generate:\n" msgstr "" #: gui/certificate_properties_dialog.ui:649 #, fuzzy msgid "" "Maximum number of months before\n" "expiration of the new generated certificates:" msgstr "Maximalt antal månader före utgång av de nygenererade certifikaten:" #: gui/certificate_properties_dialog.ui:686 msgid "Hours between CRL updates:" msgstr "Timmar mellan CRL-uppdateringar:" #: gui/certificate_properties_dialog.ui:711 #, fuzzy msgid "CRL distribution URL:" msgstr "Visa information om distribution" #: gui/certificate_properties_dialog.ui:727 #, fuzzy msgid "CRL Properties" msgstr "Certifikat" #: gui/certificate_properties_dialog.ui:750 msgid "Country" msgstr "Land" #: gui/certificate_properties_dialog.ui:761 msgid "State or Province name" msgstr "Län eller region" #: gui/certificate_properties_dialog.ui:778 #: gui/certificate_properties_dialog.ui:802 #: gui/certificate_properties_dialog.ui:859 #: gui/certificate_properties_dialog.ui:883 #: gui/certificate_properties_dialog.ui:907 msgid "must be the same" msgstr "måste vara samma" #: gui/certificate_properties_dialog.ui:786 #: gui/certificate_properties_dialog.ui:810 #: gui/certificate_properties_dialog.ui:867 #: gui/certificate_properties_dialog.ui:891 #: gui/certificate_properties_dialog.ui:915 msgid "may differ" msgstr "kan skilja sig" #: gui/certificate_properties_dialog.ui:820 msgid "City" msgstr "Stad" #: gui/certificate_properties_dialog.ui:831 msgid "Organization" msgstr "Organisation" #: gui/certificate_properties_dialog.ui:842 msgid "Organizational unit" msgstr "Organisationsenhet" #: gui/certificate_properties_dialog.ui:927 #, fuzzy msgid "Inherited fields from CA subject" msgstr "Certifikat" #: gui/certificate_properties_dialog.ui:952 gui/new_cert_window.ui:464 #: src/tls.c:1463 msgid "Certification Authority" msgstr "" #: gui/certificate_properties_dialog.ui:963 gui/new_cert_window.ui:487 #: src/certificate_properties.c:445 src/tls.c:1470 msgid "Non repudiation" msgstr "" #: gui/certificate_properties_dialog.ui:974 gui/new_cert_window.ui:440 #: src/certificate_properties.c:447 src/tls.c:1472 msgid "Key encipherment" msgstr "Nyckelkryptering" #: gui/certificate_properties_dialog.ui:986 gui/new_cert_window.ui:428 #: src/certificate_properties.c:449 src/tls.c:1474 msgid "Data encipherment" msgstr "Datakryptering" #: gui/certificate_properties_dialog.ui:998 gui/new_cert_window.ui:475 #: src/certificate_properties.c:451 src/tls.c:1476 msgid "Key agreement" msgstr "" #: gui/certificate_properties_dialog.ui:1010 gui/new_cert_window.ui:452 #: src/certificate_properties.c:443 src/tls.c:1468 msgid "Digital signature" msgstr "Digital signatur" #: gui/certificate_properties_dialog.ui:1022 gui/new_cert_window.ui:498 #: src/certificate_properties.c:455 src/tls.c:1480 msgid "CRL signing" msgstr "" #: gui/certificate_properties_dialog.ui:1043 #, fuzzy msgid "Uses of new generated certificates" msgstr "Syften för nya genererade certifikat" #: gui/certificate_properties_dialog.ui:1067 gui/new_cert_window.ui:621 #: src/certificate_properties.c:1480 src/tls.c:1500 msgid "Email protection" msgstr "E-postskydd" #: gui/certificate_properties_dialog.ui:1079 gui/new_cert_window.ui:610 #: src/certificate_properties.c:1479 src/tls.c:1498 msgid "Code signing" msgstr "Kodsignering" #: gui/certificate_properties_dialog.ui:1090 gui/new_cert_window.ui:598 msgid "TLS Web client" msgstr "" #: gui/certificate_properties_dialog.ui:1102 gui/new_cert_window.ui:586 msgid "TLS Web server" msgstr "" #: gui/certificate_properties_dialog.ui:1114 gui/new_cert_window.ui:575 #: src/certificate_properties.c:1481 src/tls.c:1502 msgid "Time stamping" msgstr "Tidsstämpling" #: gui/certificate_properties_dialog.ui:1125 gui/new_cert_window.ui:564 #: src/certificate_properties.c:1483 src/tls.c:1506 msgid "Any purpose" msgstr "" #: gui/certificate_properties_dialog.ui:1136 gui/new_cert_window.ui:553 #: src/certificate_properties.c:1482 src/tls.c:1504 msgid "OCSP signing" msgstr "" #: gui/certificate_properties_dialog.ui:1159 #, fuzzy msgid "Purposes of new generated certificates" msgstr "Syften för nya genererade certifikat" #: gui/certificate_properties_dialog.ui:1171 #, fuzzy msgid "CA Policy" msgstr "Visa CA-policy" #: gui/certificate_properties_dialog.ui:1189 gui/csr_properties_dialog.ui:221 #: src/ca.c:2199 msgid "_Close" msgstr "" #: gui/change_password_dialog.ui:9 msgid "Database password protection - gnoMint" msgstr "Lösenordsskydd för databas - gnoMint" #: gui/change_password_dialog.ui:34 msgid "_Yes" msgstr "" #: gui/change_password_dialog.ui:43 msgid "_No" msgstr "_Nej" #: gui/change_password_dialog.ui:53 msgid "" "Enter new password again \n" "for confirmation:" msgstr "" "Ange nytt lösenord igen \n" "för bekräftelse:" #: gui/change_password_dialog.ui:86 msgid "" "Please, enter new \n" "password:" msgstr "" "Ange nytt \n" "lösenord:" #: gui/change_password_dialog.ui:98 msgid "" "Please, enter current\n" "password:" msgstr "" "Ange aktuellt\n" "lösenord:" #: gui/change_password_dialog.ui:121 #, fuzzy msgid "" "Protect CA database private\n" "keys with password:" msgstr "" "Skydda CA-databasens privata \n" "nycklar med ett lösenord:" #: gui/change_password_dialog.ui:143 gui/export_certificate_dialog.ui:149 #: gui/get_db_password_dialog.ui:74 gui/get_pkey_dialog.ui:78 #: gui/import_file_or_directory_dialog.ui:94 gui/import_password_dialog.ui:90 #: gui/new_crl_dialog.ui:53 gui/san_editor_dialog.ui:93 #, fuzzy msgid "Cancel" msgstr "Avbryt" #: gui/change_password_dialog.ui:149 gui/get_db_password_dialog.ui:80 #: gui/get_pkey_dialog.ui:84 gui/import_password_dialog.ui:96 #: gui/new_crl_dialog.ui:59 gui/san_editor_dialog.ui:99 msgid "OK" msgstr "" #: gui/creation_process_window.ui:6 msgid "Creating new CA - gnoMint" msgstr "Skapar en ny CA - gnoMint" #: gui/creation_process_window.ui:31 #, fuzzy msgid "Creating CA Root Certificate" msgstr "Skapar CA-rotcertifikat" #: gui/creation_process_window.ui:51 gui/get_password_dialog.ui:90 #: gui/new_ca_window.ui:257 gui/new_ca_window.ui:464 gui/new_ca_window.ui:576 #: gui/new_cert_window.ui:257 gui/new_cert_window.ui:339 #: gui/new_cert_window.ui:661 gui/new_req_window.ui:107 #: gui/new_req_window.ui:357 gui/new_req_window.ui:548 gui/wizard_window.ui:117 msgid "_Cancel" msgstr "" #: gui/csr_popup_menu.ui:23 gui/main_window.ui:26 msgid "_Sign" msgstr "Si_gnera" #: gui/csr_popup_menu.ui:27 gui/main_window.ui:27 #, fuzzy msgid "Delete" msgstr "Ta bort" #: gui/csr_properties_dialog.ui:5 #, fuzzy msgid "CSR properties - gnoMint" msgstr "Nytt Certifikat - gnoMint" #: gui/csr_properties_dialog.ui:41 msgid "" "This Certificate Signing Request has its corresponding private key saved " "in the internal database." msgstr "" #: gui/csr_properties_dialog.ui:74 gui/new_cert_window.ui:230 #: src/csr_properties.c:86 src/new_cert.c:105 msgid "None" msgstr "" #: gui/csr_properties_dialog.ui:131 msgid "Subject Alternative Name (SAN)" msgstr "" #: gui/csr_properties_dialog.ui:164 #, fuzzy msgid "CSR subject" msgstr "Certifikat" #: gui/dh_parameters_dialog.ui:16 msgid "New Diffie-Hellman parameters - gnoMint" msgstr "Nya Diffie-Hellman-parametrar - gnoMint" #: gui/dh_parameters_dialog.ui:27 #, fuzzy msgid "" "You are about to create and export a set of\n" "Diffie·Hellman parameters into a PKCS#3 structure file." msgstr "" "Du håller på att skapa och exportera ett set av Diffie·Hellman-" "parametrar till en PKCS#3-strukturfil." #: gui/dh_parameters_dialog.ui:38 #, fuzzy msgid "" "PKCS#3 files containing Diffie·Hellman parameters are used by some " "cryptographic\n" "applications for a secure interchange of their keys over insecure channels." msgstr "" "PKCS#3 -filer vilka innehåller Diffie·Hellman-parametrar " "används av somliga kryptografiska \n" "program för att möjliggöra ett säkert utbyte av deras nycklar via osäkra " "kanaler." #: gui/dh_parameters_dialog.ui:48 msgid "Please, enter the prime size, in bits:" msgstr "Vänligen skriv in primärtalets storlek, i bitar (bits)." #: gui/dh_parameters_dialog.ui:71 msgid "Close" msgstr "" #: gui/dh_parameters_dialog.ui:77 #, fuzzy msgid "Generate" msgstr "Allmänt" #: gui/export_certificate_dialog.ui:5 #, fuzzy msgid "Export certificate - gnoMint" msgstr "Nytt Certifikat - gnoMint" #: gui/export_certificate_dialog.ui:22 #, fuzzy msgid "" "Please, choose which part of the\n" "saved certificate you want to export:" msgstr "" "Vänligen välj vilken del av det sparade certifikatet Du vill exportera:" #: gui/export_certificate_dialog.ui:36 msgid "Only the pu_blic part." msgstr "Enbart den publika delen." #: gui/export_certificate_dialog.ui:49 #, fuzzy msgid "Export only the certificate to a public file, in PEM format." msgstr "Exportera endast certifikatet till en publik fil, i PEM-format." #: gui/export_certificate_dialog.ui:60 msgid "Only the private key (crypted)." msgstr "Enbart den privata nyckeln (krypterad)." #: gui/export_certificate_dialog.ui:74 #, fuzzy msgid "" "Export the saved private key to a PKCS#8 password-\n" "protected file. This file should only be accessed by the\n" "subject of the certificate." msgstr "" "Exportera den sparade nyckeln till en lösenordsskyddad PKCS#8-fil. Filen " "bör enbart kunna kommas åt av den person certifikatet gäller för." #: gui/export_certificate_dialog.ui:87 msgid "Only the private key (uncrypted)." msgstr "Enbart den privata nyckeln (okrypterad)." #: gui/export_certificate_dialog.ui:100 #, fuzzy msgid "" "Export the saved private key to a PEM file. This option\n" "should only be used for exporting certificates that will be\n" "used in unattended servers." msgstr "" "Exportera den sparade privata nyckeln till en PEM-fil. Det här " "alternativet bör användas bara för att exportera certifikat som ska användas " "i oövervakade servrar." #: gui/export_certificate_dialog.ui:113 msgid "Both parts." msgstr "Båda delarna." #: gui/export_certificate_dialog.ui:126 #, fuzzy msgid "" "Export both (private and public) parts to a password-\n" "protected PKCS#12 file. This kind of file can be imported\n" "by other common programs, such as web or mail clients." msgstr "" "Exportera både de privata och publika delarna till en lösenordsskyddad " "PKCS#12-fil. Den här filtypen kan importeras i andra vanliga program, så som " "webbläsare eller epostklienter." #: gui/export_certificate_dialog.ui:155 #, fuzzy msgid "Export" msgstr "E_xportera" #: gui/get_db_password_dialog.ui:5 gui/get_password_dialog.ui:5 #: gui/import_password_dialog.ui:5 msgid "Enter password - gnoMint" msgstr "Skriv in lösenord - gnoMint" #: gui/get_db_password_dialog.ui:20 msgid "" "This action requires using one or more private keys saved in the CA " "database.\n" "\n" "Please insert the database password." msgstr "" "Det här valet kräver användandet av minst en privat nyckel sparad i CA-" "databasen.\n" "\n" "Vänligen skriv in lösenordet för databasen." #: gui/get_db_password_dialog.ui:41 gui/get_password_dialog.ui:68 #: gui/import_password_dialog.ui:65 msgid "Password:" msgstr "Lösenord:" #: gui/get_db_password_dialog.ui:58 msgid "Remember this password during this gnoMint session" msgstr "Kom ihåg det här lösenordet under denna gnoMint-session." #: gui/get_password_dialog.ui:19 #, fuzzy msgid "Please, enter password" msgstr "Ange lösenordet:" #: gui/get_password_dialog.ui:56 msgid "Password (confirm):" msgstr "Lösenord (bekräfta):" #: gui/get_password_dialog.ui:97 gui/new_ca_window.ui:592 #: gui/new_cert_window.ui:676 gui/new_req_window.ui:564 #: gui/preferences_dialog.ui:51 msgid "_OK" msgstr "" #: gui/get_pkey_dialog.ui:9 msgid "Choose private key file. gnoMint" msgstr "Välj privat nyckelfil .gnoMint" #: gui/get_pkey_dialog.ui:22 #, fuzzy msgid "" "Choose private key file\n" "\n" "For doing the selected operation, you must provide the\n" "file where resides the private key corresponding to the\n" "certificate:" msgstr "" "Välj privat nyckel-fil\n" "\n" "Du måste tillhandahålla filen som innehåller den privata nyckeln som " "motsvarar certifikatet:" #: gui/get_pkey_dialog.ui:37 #, fuzzy msgid "Certificate DN" msgstr "Certifikat" #: gui/get_pkey_dialog.ui:43 msgid "Please, choose the file:" msgstr "Välj filen:" #: gui/get_pkey_dialog.ui:62 msgid "_Save filename in the database for automatic loading" msgstr "_Spara filnamn i databasen för automatisk inläsning" #: gui/org.gnome.gnomint.appdata.xml.in:7 gui/main_window.ui:62 msgid "gnoMint" msgstr "gnoMint" #: gui/org.gnome.gnomint.appdata.xml.in:8 #, fuzzy msgid "X.509 Certification Authority management tool" msgstr "- En grafisk hanterare för certifikatutfärdare" #: gui/org.gnome.gnomint.appdata.xml.in:11 msgid "" "gnoMint is a tool for easily creating and managing certification authorities " "(CAs). It provides fancy visualization of all your certificates, and their " "properties, as well as an easy management of the CA activities." msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:16 msgid "With gnoMint you can:" msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:20 #, fuzzy msgid "Create and manage your own Certification Authority (CA)" msgstr "Certifikat_signeringsbegäran" #: gui/org.gnome.gnomint.appdata.xml.in:21 #, fuzzy msgid "Create and sign certificates for servers and users" msgstr "Skapar CA-rotcertifikat" #: gui/org.gnome.gnomint.appdata.xml.in:22 #, fuzzy msgid "Create and manage Certificate Signing Requests (CSRs)" msgstr "Certifikat_signeringsbegäran" #: gui/org.gnome.gnomint.appdata.xml.in:23 msgid "" "Export certificates and private keys in several formats (PEM, DER, PKCS#12)" msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:24 #, fuzzy msgid "Revoke certificates and generate Certificate Revocation Lists (CRLs)" msgstr "Generera den aktuella certifikatspärrlistan" #: gui/org.gnome.gnomint.appdata.xml.in:25 #, fuzzy msgid "Import existing certificates and CAs" msgstr "Exportera certifikat" #: gui/org.gnome.gnomint.appdata.xml.in:27 msgid "" "gnoMint provides a simple and intuitive graphical interface based on GTK for " "all these operations, making certificate management accessible even for " "users without deep knowledge of X.509 standards and cryptography." msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:38 #, fuzzy msgid "Main window showing certificate list" msgstr "Lägg till ett autosignerat CA-certifikat" #: gui/org.gnome.gnomint.desktop.in:2 gui/org.gnome.gnomint.desktop.in:3 msgid "gnoMint X.509 CA Manager" msgstr "Certifikatutfärdaren gnoMint" #: gui/org.gnome.gnomint.desktop.in:4 msgid "Manage X.509 certificates and CAs, easily and graphically" msgstr "Hantera X.509-certifikat och certifikatutfärdare, enkelt och grafiskt" #: gui/org.gnome.gnomint.desktop.in:5 msgid "certificate;x.509;encryption;" msgstr "" #: gui/import_file_or_directory_dialog.ui:9 msgid "Import selection - gnoMint" msgstr "Importera det valda - gnoMint" #: gui/import_file_or_directory_dialog.ui:24 #, fuzzy msgid "" "Please, choose the more suitable option for\n" "what you want to import:" msgstr "" "Vänligen välj det bäst passande alternativet för vad Du vill importera:" #: gui/import_file_or_directory_dialog.ui:36 msgid "Import a single file." msgstr "Importera en fil." #: gui/import_file_or_directory_dialog.ui:48 msgid "" "Import a single file, encoded in DER or PEM format, containing\n" "certificates, private keys (encrypted or plain), signing\n" "requests (CSRs), revocation lists (CRLs) or PKCS#12\n" "packages." msgstr "" #: gui/import_file_or_directory_dialog.ui:60 msgid "Import a whole directory." msgstr "Importera en hel katalog" #: gui/import_file_or_directory_dialog.ui:72 #, fuzzy msgid "" "Import a directory containing the structure of\n" "a whole CA made with OpenSSL ." msgstr "" "Importera en katalog som innehåller strukturen för\n" "en komplett certifikatutfärdare skapad med OpenSSL ." #: gui/import_file_or_directory_dialog.ui:100 #, fuzzy msgid "Import" msgstr "_Importera" #: gui/import_password_dialog.ui:20 msgid "" "The whole selected file, or some of its elements, seems to\n" "be cyphered using a password or passphrase.\n" "\n" "For importing the file into gnoMint database, you must\n" "provide an appropiate password." msgstr "" #: gui/import_password_dialog.ui:37 #, fuzzy msgid "" "The part that is being imported has the description:" msgstr "Den del som importeras har beskrivningen:" #: gui/import_password_dialog.ui:48 msgid "#Description#" msgstr "#Beskrivning#" #: gui/main_window.ui:6 #, fuzzy msgid "_Certificates" msgstr "Certifikat" #: gui/main_window.ui:8 msgid "_New certificate database" msgstr "_Ny certifikatdatabas" #: gui/main_window.ui:9 msgid "_Open certificate database" msgstr "_Öppna certifikatdatabas" #: gui/main_window.ui:10 msgid "Open _recents" msgstr "Öppna _tidigare" #: gui/main_window.ui:11 msgid "_Save certificate database as..." msgstr "_Spara certifikatdatabas som..." #: gui/main_window.ui:15 msgid "Add" msgstr "" #: gui/main_window.ui:17 msgid "_Add self-signed CA" msgstr "_Lägg till självsignerat CA" #: gui/main_window.ui:18 msgid "Add _Certificate Request" msgstr "Lägg till _certifikatbegäran" #: gui/main_window.ui:29 msgid "Generate _CRL" msgstr "Generera _CRL" #: gui/main_window.ui:30 msgid "Generate D_H parameters..." msgstr "Generera D_H-parametrar..." #: gui/main_window.ui:31 msgid "Change database pass_word" msgstr "Ändra databaslösen_ord" #: gui/main_window.ui:33 msgid "_Import" msgstr "_Importera" #: gui/main_window.ui:38 msgid "Revoke _all selected..." msgstr "" #: gui/main_window.ui:39 msgid "Delete all selected _CSRs..." msgstr "" #: gui/main_window.ui:41 msgid "_Quit" msgstr "" #: gui/main_window.ui:44 gui/san_manager_widget.ui:34 msgid "_Edit" msgstr "R_edigera" #: gui/main_window.ui:46 msgid "Preferences" msgstr "" #: gui/main_window.ui:49 msgid "_View" msgstr "_Visa" #: gui/main_window.ui:51 #, fuzzy msgid "Certificate _Signing Requests" msgstr "Certifikatsigneringsbegäran" #: gui/main_window.ui:52 #, fuzzy msgid "_Revoked Certificates" msgstr "Certifikat" #: gui/main_window.ui:53 #, fuzzy msgid "E_xpired Certificates" msgstr "Exportera certifikat" #: gui/main_window.ui:57 gui/new_ca_window.ui:249 gui/new_ca_window.ui:456 #: gui/new_ca_window.ui:568 gui/new_cert_window.ui:249 #: gui/new_cert_window.ui:331 gui/new_cert_window.ui:653 #: gui/new_req_window.ui:99 gui/new_req_window.ui:349 gui/new_req_window.ui:540 msgid "_Help" msgstr "_Hjälp" #: gui/main_window.ui:58 msgid "About" msgstr "" #: gui/main_window.ui:80 msgid "Create a new database" msgstr "Skapa en ny databas" #: gui/main_window.ui:87 msgid "Open an existing database" msgstr "Öppna en existerande databas" #: gui/main_window.ui:99 msgid "Add an autosigned CA" msgstr "Lägg till en autosignerad CA" #: gui/main_window.ui:100 #, fuzzy msgid "Add autosigned CA certificate" msgstr "Lägg till en autosignerad CA" #: gui/main_window.ui:111 #, fuzzy msgid "Add a new Certificate Signing Request" msgstr "Signera vald Certificate Signing Request" #: gui/main_window.ui:112 msgid "Add CSR" msgstr "" #: gui/main_window.ui:129 msgid "Extract the private key of the selected item into a external file" msgstr "Extrahera den privata nyckeln från valt objekt till en extern fil" #: gui/main_window.ui:130 msgid "Extract Private Key" msgstr "Extrahera privat nyckel" #: gui/main_window.ui:142 #, fuzzy msgid "Revoke the selected certificate" msgstr "Återkalla det valda certifikatet" #: gui/main_window.ui:143 msgid "Revoke" msgstr "Återkalla" #: gui/main_window.ui:151 msgid "Sign the selected Certificate Signing Request" msgstr "Signera vald Certificate Signing Request" #: gui/main_window.ui:152 msgid "Sign" msgstr "Signera" #: gui/main_window.ui:164 #, fuzzy msgid "Delete the selected Certificate Signing Request" msgstr "Signera vald Certificate Signing Request" #: gui/main_window.ui:176 #, fuzzy msgid "Quick certificate generation for web server" msgstr "Certifikatgenerering misslyckades" #: gui/main_window.ui:177 msgid "Web Server Wizard" msgstr "" #: gui/main_window.ui:188 #, fuzzy msgid "Quick certificate generation for email server" msgstr "Certifikatgenerering misslyckades" #: gui/main_window.ui:189 msgid "Email Server Wizard" msgstr "" #: gui/main_window.ui:225 msgid "_Show them" msgstr "" #: gui/main_window.ui:243 msgid "Filter certificates by subject or serial..." msgstr "" #: gui/new_ca_window.ui:20 msgid "New CA - gnoMint" msgstr "Ny CA - gnoMint" #: gui/new_ca_window.ui:46 #, fuzzy msgid "CA Subject Properties\n" msgstr "Lösenordsskydd\n" #: gui/new_ca_window.ui:72 gui/new_cert_window.ui:130 gui/new_req_window.ui:303 msgid "Organization:" msgstr "Organisation:" #: gui/new_ca_window.ui:83 gui/new_cert_window.ui:141 gui/new_req_window.ui:292 msgid "Organization Unit:" msgstr "Organisationsenhet:" #: gui/new_ca_window.ui:94 gui/new_cert_window.ui:152 gui/new_req_window.ui:281 msgid "Country:" msgstr "Land:" #: gui/new_ca_window.ui:106 gui/new_cert_window.ui:163 #: gui/new_req_window.ui:270 #, fuzzy msgid "State or Province name: " msgstr "Län eller region: " #: gui/new_ca_window.ui:117 gui/new_cert_window.ui:174 #: gui/new_req_window.ui:259 #, fuzzy msgid "City: " msgstr "Stad: " #: gui/new_ca_window.ui:164 #, fuzzy msgid "" "CA Root Certificate \n" "Common Name (CN):" msgstr "" "Nytt certifikat \n" "Vanligt namn (CN):" #: gui/new_ca_window.ui:185 gui/new_cert_window.ui:219 #: gui/new_req_window.ui:203 #, fuzzy msgid "Email address:" msgstr "IP-adress" #: gui/new_ca_window.ui:227 gui/new_req_window.ui:326 msgid "Subject Alternative Names (SAN)" msgstr "" #: gui/new_ca_window.ui:265 gui/new_ca_window.ui:480 gui/new_req_window.ui:115 #: gui/new_req_window.ui:373 msgid "_Next" msgstr "" #: gui/new_ca_window.ui:277 gui/new_cert_window.ui:276 #: gui/new_req_window.ui:127 #, fuzzy msgid "CA properties" msgstr "Egenskaper" #: gui/new_ca_window.ui:296 #, fuzzy msgid "CA Root certificate properties\n" msgstr "Egenskaper för certifikatutfärdares rotcertifikat\n" #: gui/new_ca_window.ui:337 msgid "Months before root certificate expiration:" msgstr "Månader innan rotcertifikatet går ut:" #: gui/new_ca_window.ui:370 gui/new_req_window.ui:453 msgid "P-256 (256 bits)" msgstr "" #: gui/new_ca_window.ui:371 gui/new_req_window.ui:454 msgid "P-384 (384 bits)" msgstr "" #: gui/new_ca_window.ui:372 gui/new_req_window.ui:455 msgid "P-521 (521 bits)" msgstr "" #: gui/new_ca_window.ui:391 gui/new_req_window.ui:474 #, fuzzy msgid "RSA" msgstr "RSA" #: gui/new_ca_window.ui:400 gui/new_req_window.ui:484 msgid "DSA" msgstr "DSA" #: gui/new_ca_window.ui:409 gui/new_req_window.ui:493 msgid "ECDSA" msgstr "" #: gui/new_ca_window.ui:418 gui/new_req_window.ui:502 msgid "Ed25519" msgstr "" #: gui/new_ca_window.ui:428 gui/new_req_window.ui:512 src/new_ca_window.c:170 #: src/new_ca_window.c:180 src/new_req_window.c:201 src/new_req_window.c:211 msgid "Private key bit length:" msgstr "Bitlängd för privat nyckel:" #: gui/new_ca_window.ui:439 gui/new_req_window.ui:523 msgid "Private key type:" msgstr "Typ av privat nyckel:" #: gui/new_ca_window.ui:472 gui/new_ca_window.ui:584 gui/new_req_window.ui:365 #: gui/new_req_window.ui:556 msgid "_Previous" msgstr "" #: gui/new_ca_window.ui:492 gui/new_req_window.ui:385 #, fuzzy msgid "Root certificate prop" msgstr "Exportera certifikat" #: gui/new_ca_window.ui:511 #, fuzzy msgid "CA properties\n" msgstr "Lösenordsskydd\n" #: gui/new_ca_window.ui:535 #, fuzzy msgid "CRL Distribution Point:" msgstr "Visa information om distribution" #: gui/new_ca_window.ui:542 msgid "" "Please, in this field enter an URL where the CRL for this CA will be " "available. \n" "You can leave it blank. In this case, no CRL Distribution Point will be set " "in the CA \n" "Certificate, and you will be able to set it as a new CA property. \n" "This value will be copied into the certificates generated by this CA.\n" "" msgstr "" #: gui/new_ca_window.ui:604 msgid "Password protect" msgstr "Lösenordsskydd" #: gui/new_cert_window.ui:13 msgid "New Certificate - gnoMint" msgstr "Nytt Certifikat - gnoMint" #: gui/new_cert_window.ui:36 gui/new_cert_window.ui:293 #: gui/new_cert_window.ui:382 #, fuzzy msgid "New Certificate Properties\n" msgstr "Egenskaper för nytt certifikat\n" #: gui/new_cert_window.ui:45 #, fuzzy msgid "" "You are about to sign a Certificate Signing Request,\n" "and this way, creating a new certificate. Please\n" "check the certificate properties." msgstr "" "Du håller på att signera en Certificate Signing Request, och genom detta, " "skapa ett nytt certifikat. Vänligen kontrollera certifikatets egenskaper." #: gui/new_cert_window.ui:64 gui/new_cert_window.ui:75 #: gui/new_cert_window.ui:86 gui/new_cert_window.ui:97 #: gui/new_cert_window.ui:108 gui/new_cert_window.ui:119 msgid "label" msgstr "etikett" #: gui/new_cert_window.ui:185 msgid "" "New certificate \n" "Common Name (CN):" msgstr "" "Nytt certifikat \n" "Vanligt namn (CN):" #: gui/new_cert_window.ui:197 #, fuzzy msgid "Subject Alternative Names:" msgstr "Ämne" #: gui/new_cert_window.ui:302 #, fuzzy msgid "" "You are about to sign a Certificate Signing Request.\n" "Please, choose the Certification Authority you are\n" "going to use for signing it." msgstr "" "Du håller på att signera en Certificate Signing Request. Vänligen välj den " "Certification Authority Du vill använda för att signera den." #: gui/new_cert_window.ui:366 msgid "Choose CA for signing the CSR" msgstr "" #: gui/new_cert_window.ui:397 msgid "Months before certificate expiration:" msgstr "Månader innan certifikatet går ut:" #: gui/new_cert_window.ui:519 #, fuzzy msgid "Certificate uses" msgstr "Certifikat" #: gui/new_cert_window.ui:635 #, fuzzy msgid "Certificate purposes" msgstr "Certifikat" #: gui/new_cert_window.ui:688 msgid "Certificate properties" msgstr "Certifikategenskaper" #: gui/new_crl_dialog.ui:5 msgid "New CRL - gnoMint" msgstr "Ny CRL - gnoMint" #: gui/new_crl_dialog.ui:17 #, fuzzy msgid "New Certificate Revocation List" msgstr "Ny certifikatspärrlista" #: gui/new_crl_dialog.ui:26 msgid "" "Please, select the CA for which a Certificate \n" "Revocation List is going to be created:" msgstr "" "Vänligen välj den CA för vilken en Certificate \n" "Revocation List (CRL) ska skapas:" #: gui/new_req_window.ui:12 #, fuzzy msgid "New certificate request - gnoMint" msgstr "Nytt Certifikat - gnoMint" #: gui/new_req_window.ui:36 gui/new_req_window.ui:147 gui/new_req_window.ui:403 #, fuzzy msgid "Certificate Request Properties\n" msgstr "Egenskaper för certifikatbegäran\n" #: gui/new_req_window.ui:55 msgid "" "The subject of the new certificate request can inherit information\n" "from one of the existing Certification Authorities. This is a must if the\n" "policy of the CA you are going to use is defined to force some fields\n" "of a certificate subject to be the same as the ones in the CA cert\n" "subject." msgstr "" #: gui/new_req_window.ui:67 msgid "Don't inherit any fields from existing Certification Authorities" msgstr "" #: gui/new_req_window.ui:74 msgid "" "Inherit fields according to selected Certification Authority and its policy." msgstr "" #: gui/new_req_window.ui:191 #, fuzzy msgid "" "Certificate\n" " Common Name (CN):" msgstr "" "Nytt certifikat \n" "Vanligt namn (CN):" #: gui/new_req_window.ui:576 msgid "page 3" msgstr "sida 3" #: gui/preferences_dialog.ui:9 msgid "General Preferences - gnoMint" msgstr "Allmänna inställningar - gnoMint" #: gui/preferences_dialog.ui:26 #, fuzzy msgid "" "Automatically export created certificates to\n" "Gnome-keyring certificate store" msgstr "Automatisk export av certifikat för gnome-keyring" #: gui/preferences_dialog.ui:36 msgid "Export options" msgstr "Exportalternativ" #: gui/san_editor_dialog.ui:5 src/certificate_properties.c:1488 msgid "Subject Alternative Name" msgstr "" #: gui/san_editor_dialog.ui:23 msgid "Type:" msgstr "" #: gui/san_editor_dialog.ui:35 #, fuzzy msgid "DNS" msgstr "DSA" #: gui/san_editor_dialog.ui:36 src/certificate_properties.c:900 #: src/certificate_properties.c:914 src/certificate_properties.c:1040 msgid "IP Address" msgstr "IP-adress" #: gui/san_editor_dialog.ui:37 msgid "Email" msgstr "" #: gui/san_editor_dialog.ui:38 src/certificate_properties.c:889 #: src/certificate_properties.c:1032 msgid "URI" msgstr "URI" #: gui/san_editor_dialog.ui:51 #, fuzzy msgid "Value:" msgstr "Värde" #: gui/san_editor_dialog.ui:74 msgid "" "Examples:\n" "DNS: example.com, *.example.com\n" "IP: 192.168.1.1, 2001:db8::1\n" "EMAIL: admin@example.com\n" "URI: https://example.com" msgstr "" #: gui/san_manager_widget.ui:26 msgid "_Add" msgstr "" #: gui/san_manager_widget.ui:43 msgid "_Remove" msgstr "" #: gui/wizard_window.ui:9 #, fuzzy msgid "Certificate Wizard" msgstr "Certifikat" #: gui/wizard_window.ui:28 #, fuzzy msgid "Quick Certificate Generation" msgstr "Certifikat" #: gui/wizard_window.ui:35 msgid "" "This wizard will create a certificate for your server with default " "settings.\n" "Enter the server name (e.g., my.server.dns.name) and select the CA to sign " "it." msgstr "" #: gui/wizard_window.ui:48 #, fuzzy msgid "Server Name:" msgstr "Katalognamn" #: gui/wizard_window.ui:59 msgid "Enter the server DNS name (e.g., my.server.dns.name)" msgstr "" #: gui/wizard_window.ui:69 msgid "Signing CA:" msgstr "" #: gui/wizard_window.ui:88 #, fuzzy msgid "Certificate Type:" msgstr "_Certifikat" #: gui/wizard_window.ui:124 #, fuzzy msgid "_Generate Certificate" msgstr "Spä_rrade certifikat" #: gui/wizard_window.ui:140 msgid "Web Server (TLS)" msgstr "" #: gui/wizard_window.ui:141 msgid "Email Server (TLS)" msgstr "" #: src/ca.c:192 #, c-format msgid "Bulk revoke completed with errors. First error: %s" msgstr "" #: src/ca.c:199 #, fuzzy, c-format msgid "%d certificate revoked." msgid_plural "%d certificates revoked." msgstr[0] "Exportera certifikat" msgstr[1] "Exportera certifikat" #: src/ca.c:225 #, c-format msgid "Bulk delete completed with errors. First error: %s" msgstr "" #: src/ca.c:240 msgid "" "Certificate renewed. A new certificate with a fresh keypair has been added " "to the database alongside the original." msgstr "" #: src/ca.c:606 src/ca-cli-callbacks.c:167 src/ca-cli-callbacks.c:221 #: src/ca-cli-callbacks.c:733 src/ca-cli-callbacks.c:737 #: src/ca-cli-callbacks.c:1362 src/ca-cli-callbacks.c:1369 #: src/certificate_properties.c:246 src/certificate_properties.c:252 #, fuzzy msgid "%m/%d/%Y %H:%M GMT" msgstr "%Y/%m/%d %R GMT" #: src/ca.c:806 src/ca.c:1927 src/ca.c:1958 src/ca.c:2093 src/ca.c:2322 #: src/ca.c:2350 #, fuzzy msgid "Yes" msgstr "_Ja" #: src/ca.c:930 src/certificate_properties.c:653 msgid "Subject" msgstr "Ämne" #: src/ca.c:965 src/cert_diff.c:122 msgid "Serial" msgstr "Serienummer" #: src/ca.c:978 src/cert_diff.c:123 msgid "Activation" msgstr "Aktivering" #: src/ca.c:991 src/cert_diff.c:124 msgid "Expiration" msgstr "Utgång" #: src/ca.c:1004 msgid "Revocation" msgstr "Spärrning" #: src/ca.c:1047 #, c-format msgid "" "Showing only the %d certificate expiring in the next %d days. Close " "this banner to show everything again." msgid_plural "" "Showing only the %d certificates expiring in the next %d days. Close " "this banner to show everything again." msgstr[0] "" msgstr[1] "" #: src/ca.c:1058 #, c-format msgid "" "%d certificate expires in the next %d days. Right-click it to renew " "with a fresh key." msgid_plural "" "%d certificates expire in the next %d days. Right-click each one to " "renew with a fresh key." msgstr[0] "" msgstr[1] "" #: src/ca.c:1369 src/ca.c:1404 src/ca.c:1416 src/export.c:560 src/export.c:639 msgid "There was an error while exporting certificate." msgstr "Det inträffade ett fel då certifikatet skulle exporteras." #: src/ca.c:1371 src/ca.c:1406 src/ca.c:1418 msgid "There was an error while exporting CSR." msgstr "Det inträffade ett fel då CSR skulle exporteras." #: src/ca.c:1426 src/ca.c:1590 msgid "Certificate exported successfully" msgstr "Certifikatet exporterades" #: src/ca.c:1427 msgid "Certificate signing request exported successfully" msgstr "" #: src/ca.c:1445 msgid "Export certificate" msgstr "Exportera certifikat" #: src/ca.c:1447 msgid "Export certificate signing request" msgstr "Exportera certificate signing request" #: src/ca.c:1461 src/ca.c:1523 src/ca.c:1981 msgid "Private key exported successfully" msgstr "Privat nyckel exporterades" #: src/ca.c:1509 src/ca.c:2057 msgid "Export crypted private key" msgstr "Exportera krypterad privat nyckel" #: src/ca.c:1568 #, fuzzy msgid "Export unencrypted private key" msgstr "Exportera okrypterad privat nyckel" #: src/ca.c:1633 msgid "Export whole certificate in PKCS#12 package" msgstr "Exportera helt certifikat i PKCS#12-paket" #: src/ca.c:1676 msgid "Unexpected error" msgstr "Oväntat fel" #: src/ca.c:1712 msgid "Export CSR - gnoMint" msgstr "Exportera CSR - gnoMint" #: src/ca.c:1717 msgid "" "Please, choose which part of the saved Certificate Signing Request you want " "to export:" msgstr "" "Vänligen välj vilken del av den sparade Certificate Signing Request du vill " "exportera:" #: src/ca.c:1722 msgid "" "Export the Certificate Signing Request to a public file, in PEM format." msgstr "" "Exportera Certificate Signing Request till en publik fil, i PEM-format." #: src/ca.c:1727 msgid "" "Export the saved private key to a PKCS#8 password-protected file. This " "file should only be accessed by the subject of the Certificate Signing " "Request." msgstr "" "Exportera den sparade privata nyckeln till en lösenordsskyddad PKCS#8-" "fil. Filen bör endast kunna kommas åt av den till vilken Certificate Signing " "Request är utfärdat." #: src/ca.c:1774 msgid "Could not build certificate chain." msgstr "" #: src/ca.c:1781 #, fuzzy, c-format msgid "Failed to write chain: %s" msgstr "Lägg till ett autosignerat CA-certifikat" #: src/ca.c:1786 #, fuzzy msgid "Certificate chain exported successfully." msgstr "Certifikatet exporterades" #: src/ca.c:1807 #, fuzzy msgid "Please select a certificate to export its chain." msgstr "Återkallar det valda certifikatet" #: src/ca.c:1831 #, fuzzy msgid "Export certificate chain" msgstr "Exportera certifikat" #: src/ca.c:1911 #, fuzzy msgid "Please select one or more certificates to revoke." msgstr "Återkallar det valda certifikatet" #: src/ca.c:1916 #, fuzzy, c-format msgid "Are you sure you want to revoke %d certificate?" msgid_plural "Are you sure you want to revoke %d certificates?" msgstr[0] "Är du säker på att du vill spärra detta certifikat?" msgstr[1] "Är du säker på att du vill spärra detta certifikat?" #: src/ca.c:1920 msgid "" "Revoking a certificate will include it in the next CRL, marking it as " "invalid. CSRs in the selection (if any) are not affected; use \"Delete " "selected CSRs\" for those." msgstr "" #: src/ca.c:1927 src/ca.c:1958 src/ca.c:2093 src/ca.c:2322 src/ca.c:2350 #, fuzzy msgid "No" msgstr "_Nej" #: src/ca.c:1948 msgid "Please select one or more CSRs to delete." msgstr "" #: src/ca.c:1953 #, fuzzy, c-format msgid "Are you sure you want to delete %d Certificate Signing Request?" msgid_plural "Are you sure you want to delete %d Certificate Signing Requests?" msgstr[0] "" "Är du säker på att du vill ta bort denna certifikatsigneringsbegäran?" msgstr[1] "" "Är du säker på att du vill ta bort denna certifikatsigneringsbegäran?" #: src/ca.c:2076 src/ca-cli-callbacks.c:1934 msgid "" "CA certificates cannot be renewed. A renewed CA would have a different key, " "so certificates previously signed by the old CA would no longer chain to it." msgstr "" #: src/ca.c:2087 msgid "" "Renew this certificate?\n" "\n" "gnoMint will issue a new certificate with the same subject and SAN as the " "selected one, signed by the same CA, with a freshly-generated keypair. The " "old certificate will remain in the database — revoke it manually after you " "have deployed the new one." msgstr "" #: src/ca.c:2118 #, c-format msgid "Certificate diff — %d difference" msgid_plural "Certificate diff — %d differences" msgstr[0] "" msgstr[1] "" #: src/ca.c:2147 msgid "Left" msgstr "" #: src/ca.c:2151 msgid "Right" msgstr "" #: src/ca.c:2241 src/ca-cli-callbacks.c:2141 #, fuzzy msgid "Cannot read file." msgstr "Lägg till ett autosignerat CA-certifikat" #: src/ca.c:2252 msgid "Selected" msgstr "" #: src/ca.c:2278 #, fuzzy msgid "Cannot read PEM of the selected certificate." msgstr "Återkalla det valda certifikatet" #: src/ca.c:2290 msgid "Compare with PEM file…" msgstr "" #: src/ca.c:2312 msgid "Are you sure you want to revoke this certificate?" msgstr "Är du säker på att du vill spärra detta certifikat?" #: src/ca.c:2313 msgid "" "Revoking a certificate will include it in the next CRL, marking it as " "invalid. This way, any future use of the certificate will be denied (as long " "as the CRL is checked)." msgstr "" #: src/ca.c:2316 #, fuzzy msgid "Are you sure you want to revoke this CA certificate?" msgstr "Är du säker på att du vill spärra detta certifikat?" #: src/ca.c:2317 msgid "" "Revoking a certificate will include it in the next CRL, marking it as " "invalid. This way, any future use of the certificate will be denied (as long " "as the CRL is checked). \n" "\n" "Moreover, revoking a CA certificate can invalidate all the certificates " "generated with it, so all them should be regenerated with a new CA " "certificate." msgstr "" #: src/ca.c:2349 msgid "Are you sure you want to delete this Certificate Signing Request?" msgstr "Är du säker på att du vill ta bort denna certifikatsigneringsbegäran?" #: src/ca.c:2572 msgid "" "The current password you have entered doesn't match with the actual current " "database password." msgstr "" "Det lösenord Du skrivit in är inte det som behövs för den valda databasen." #: src/ca.c:2588 msgid "Error while changing database password. The operation was cancelled." msgstr "" "Ett fel inträffade då databasens lösenord skulle bytas. Operationen avbröts." #: src/ca.c:2593 msgid "Password changed successfully" msgstr "Lösenordet ändrades utan problem" #: src/ca.c:2601 src/ca-cli-callbacks.c:1186 msgid "" "Error while establishing database password. The operation was cancelled." msgstr "" #: src/ca.c:2606 msgid "Password established successfully" msgstr "" #: src/ca.c:2616 msgid "Error while removing database password. The operation was cancelled." msgstr "" "Ett fel inträffade då databasens lösenord skulle tas bort. Operationen " "avbröts." #: src/ca.c:2621 msgid "Password removed successfully" msgstr "Lösenordet togs bort" #: src/ca.c:2708 msgid "Change CA password - gnoMint" msgstr "Ändra CA-lösenord - gnoMint" #: src/ca.c:2840 msgid "Diffie-Hellman parameters saved successfully" msgstr "Diffie-Hellman-parametrar sparades" #: src/ca.c:2872 msgid "Save Diffie-Hellman parameters" msgstr "Spara Diffie-Hellman-parametrar" #: src/ca.c:2951 #, c-format msgid "Problem when importing '%s' file" msgstr "Ett problem inträffade vid importerandet av filen '%s'" #: src/ca.c:3012 msgid "Select PEM file to import" msgstr "Välj PEM-fil att importera" #: src/ca.c:3018 msgid "Select directory to import" msgstr "Välj katalog att importera" #: src/cert_diff.c:70 #, fuzzy msgid "Cannot parse left certificate" msgstr "Återkalla det valda certifikatet" #: src/cert_diff.c:72 #, fuzzy msgid "Cannot parse right certificate" msgstr "Återkalla det valda certifikatet" #: src/cert_diff.c:113 #, fuzzy msgid "Subject CN" msgstr "Ämne" #: src/cert_diff.c:114 #, fuzzy msgid "Subject O" msgstr "Ämne" #: src/cert_diff.c:115 #, fuzzy msgid "Subject OU" msgstr "Ämne" #: src/cert_diff.c:116 #, fuzzy msgid "Subject Country" msgstr "Ämne" #: src/cert_diff.c:117 #, fuzzy msgid "Subject State" msgstr "Ämne" #: src/cert_diff.c:118 #, fuzzy msgid "Subject Locality" msgstr "Ämne" #: src/cert_diff.c:119 #, fuzzy msgid "Subject email" msgstr "Ämne" #: src/cert_diff.c:120 #, fuzzy msgid "Subject DN" msgstr "Ämne" #: src/cert_diff.c:121 #, fuzzy msgid "Issuer DN" msgstr "Utfärdare" #: src/cert_diff.c:125 #, fuzzy msgid "SAN" msgstr "RSA" #: src/cert_diff.c:126 #, fuzzy msgid "Key usage / EKU" msgstr "Nyckelanvändning" #: src/cert_diff.c:127 #, fuzzy msgid "Subject Key ID" msgstr "Ämne" #: src/cert_diff.c:128 msgid "Authority Key ID" msgstr "" #: src/cert_diff.c:129 #, fuzzy msgid "CRL distribution" msgstr "Visa information om distribution" #: src/cert_diff.c:130 #, fuzzy msgid "SHA-1 fingerprint" msgstr "SHA1-fingeravtryck" #: src/cert_diff.c:131 #, fuzzy msgid "SHA-256 fingerprint" msgstr "SHA1-fingeravtryck" #: src/cert_renewal.c:111 msgid "Cannot parse generated CSR." msgstr "" #: src/cert_renewal.c:125 #, fuzzy msgid "Cannot encrypt new private key." msgstr "Exportera okrypterad privat nyckel" #: src/cert_renewal.c:181 src/cert_renewal.c:341 #, fuzzy msgid "Cannot read certificate PEM from database." msgstr "_Öppna certifikatdatabas" #: src/cert_renewal.c:186 src/cert_renewal.c:347 #, fuzzy msgid "Cannot parse certificate." msgstr "Återkalla det valda certifikatet" #: src/cert_renewal.c:193 src/cert_renewal.c:354 #, c-format msgid "Cannot find issuer CA in this database (issuer DN: %s)." msgstr "" #: src/cert_renewal.c:204 src/cert_renewal.c:315 msgid "Cannot load parent CA material from database." msgstr "" #: src/cert_renewal.c:212 src/cert_renewal.c:221 src/cert_renewal.c:265 #: src/cert_renewal.c:280 #, fuzzy msgid "Cannot decrypt parent CA's private key." msgstr "Exportera krypterad privat nyckel" #: src/ca-cli.c:42 msgid "newdb " msgstr "" #: src/ca-cli.c:42 msgid "Close current file and create a new database with given filename" msgstr "Stäng aktuell fil och skapa en ny databas med angivet filnamn." #: src/ca-cli.c:43 msgid "opendb " msgstr "" #: src/ca-cli.c:43 msgid "Close current file and open the file with given filename" msgstr "Stäng aktuell fil och öppna filen med angivet filnamn" #: src/ca-cli.c:44 msgid "savedbas " msgstr "" #: src/ca-cli.c:44 msgid "Save the current file with a different filename" msgstr "Spara aktuell fil under ett annat filnamn" #: src/ca-cli.c:45 msgid "Get current status (opened file, no. of certificates, etc...)" msgstr "" #: src/ca-cli.c:46 msgid "" "List the certificates in database. With option --see-revoked, lists also the " "revoked ones" msgstr "Lista" #: src/ca-cli.c:48 msgid "List the CSRs in database" msgstr "" #: src/ca-cli.c:49 msgid "addcsr [ca-id-for-inherit-fields]" msgstr "" #: src/ca-cli.c:49 msgid "Start a new CSR creation process" msgstr "Påbörja skapandet av en ny CSR" #: src/ca-cli.c:50 msgid "Start a new self-signed CA creation process" msgstr "Påbörja skapandet av en ny självsignerad CA" #: src/ca-cli.c:51 msgid "extractcertpkey " msgstr "" #: src/ca-cli.c:51 msgid "" "Extract the private key of the certificate with the given internal id and " "saves it into the given file" msgstr "" "Extraherar den privata nyckeln ur certifikatet med angivet internt id och " "sparar den till den angivna filen" #: src/ca-cli.c:54 msgid "extractcsrpkey " msgstr "" #: src/ca-cli.c:54 msgid "" "Extract the private key of the CSR with the given internal id and saves it " "into the given file" msgstr "" "Extraherar den privata nyckeln ur CSR med angivet internt id och sparar den " "till den angivna filen" #: src/ca-cli.c:57 msgid "revoke " msgstr "" #: src/ca-cli.c:57 msgid "Revoke the certificate with the given internal ID" msgstr "Återkallar certifikatet med angivet internt id" #: src/ca-cli.c:58 msgid "sign " msgstr "" #: src/ca-cli.c:58 msgid "Generate a certificate signing the given CSR with the given CA" msgstr "" #: src/ca-cli.c:59 msgid "delete " msgstr "" #: src/ca-cli.c:59 msgid "Delete the given CSR from the database" msgstr "Ta bort angiven CSR från databasen" #: src/ca-cli.c:60 msgid "crlgen " msgstr "" #: src/ca-cli.c:60 msgid "Generate a new CRL for the given CA, saving it into the file " msgstr "" #: src/ca-cli.c:61 msgid "dhgen " msgstr "" #: src/ca-cli.c:61 msgid "Generate a new DH-parameter set, saving it into the file " msgstr "" "Generera ett set nya Diffie–Hellman-parametrar och spara det till filen " "" #: src/ca-cli.c:62 msgid "Change password for the current database" msgstr "Ändra lösenordet för den aktuella databasen" #: src/ca-cli.c:63 msgid "importfile " msgstr "" #: src/ca-cli.c:63 msgid "Import the file with the given name " msgstr "Importera filen med angivet filnamn " #: src/ca-cli.c:64 msgid "importdir " msgstr "" #: src/ca-cli.c:64 msgid "Import the given directory, as a OpenSSL-CA directory" msgstr "Importera angiven katalog som en OpenSSL-CA katalog" #: src/ca-cli.c:65 msgid "showcert " msgstr "" #: src/ca-cli.c:65 msgid "Show properties of the given certificate" msgstr "Visa egenskaper för angivet certifikat" #: src/ca-cli.c:66 msgid "showcsr " msgstr "" #: src/ca-cli.c:66 msgid "Show properties of the given CSR" msgstr "Visa egenskaper för angiven CSR" #: src/ca-cli.c:67 msgid "showpolicy " msgstr "" #: src/ca-cli.c:67 msgid "Show CA policy" msgstr "Visa CA-policy" #: src/ca-cli.c:68 msgid "setpolicy " msgstr "" #: src/ca-cli.c:68 msgid "Change the given CA policy" msgstr "Ändra angiven CA-policy" #: src/ca-cli.c:69 msgid "Show program preferences" msgstr "Visa programmets inställningar" #: src/ca-cli.c:70 msgid "setpreference " msgstr "" #: src/ca-cli.c:70 msgid "Set the given program preference" msgstr "Ställ in angiven programinställning" #: src/ca-cli.c:71 msgid "addservercert " msgstr "" #: src/ca-cli.c:71 msgid "Quick server certificate generation (cert-type: 'web' or 'email')" msgstr "" #: src/ca-cli.c:72 msgid "renewcert " msgstr "" #: src/ca-cli.c:72 msgid "" "Reissue a non-CA certificate with the same subject + SAN and a fresh " "keypair. The old certificate remains in the database. CA certificates cannot " "be renewed." msgstr "" #: src/ca-cli.c:73 #, fuzzy msgid "exportchain " msgstr "Exportera certifikat" #: src/ca-cli.c:73 msgid "" "Export the full certificate chain (leaf → root) for the given certificate as " "a PEM bundle." msgstr "" #: src/ca-cli.c:74 msgid "revokemany [cert-id ...]" msgstr "" #: src/ca-cli.c:74 msgid "Revoke many certificates at once. Non-cert ids are silently skipped." msgstr "" #: src/ca-cli.c:75 msgid "deletemany [csr-id ...]" msgstr "" #: src/ca-cli.c:75 msgid "Delete many CSRs at once. Non-CSR ids are silently skipped." msgstr "" #: src/ca-cli.c:76 msgid "search " msgstr "" #: src/ca-cli.c:76 msgid "" "List certificates and CSRs whose subject or serial contains (case-" "insensitive)." msgstr "" #: src/ca-cli.c:77 msgid "diff " msgstr "" #: src/ca-cli.c:77 msgid "" "Side-by-side diff of two certificates. Each argument is either a numeric DB " "id or a path to a PEM file." msgstr "" #: src/ca-cli.c:78 msgid "Show about message" msgstr "Visa meddelandet \"Om programmet\"" #: src/ca-cli.c:79 msgid "Show warranty information" msgstr "Visa information om garanti" #: src/ca-cli.c:80 msgid "Show distribution information" msgstr "Visa information om distribution" #: src/ca-cli.c:81 msgid "Show version information" msgstr "Visa versionsinformation" #: src/ca-cli.c:82 msgid "Show (this) help message" msgstr "Visa hjälpmeddelande (det här)" #: src/ca-cli.c:83 src/ca-cli.c:84 src/ca-cli.c:85 msgid "Close database and exit program" msgstr "Stäng databasen och avsluta programmet" #: src/ca-cli.c:132 #, c-format msgid "Opening database %s..." msgstr "Öppnar databasen %s..." #: src/ca-cli.c:136 #, c-format msgid " OK.\n" msgstr " OK.\n" #: src/ca-cli.c:138 #, c-format msgid " Error.\n" msgstr " Fel.\n" #: src/ca-cli.c:153 #, c-format msgid "" "Notice: %d certificate expires within the next %d days. Use `renewcert ` " "to reissue.\n" msgid_plural "" "Notice: %d certificates expire within the next %d days. Use `renewcert ` " "to reissue.\n" msgstr[0] "" msgstr[1] "" #: src/ca-cli.c:187 #, fuzzy, c-format msgid "" "\n" "\n" "%s version %s \"%s\"\n" "%s\n" "\n" msgstr "" "\n" "\n" "%s version %s\n" "%s\n" "\n" #: src/ca-cli.c:188 #, c-format msgid "" "This program comes with ABSOLUTELY NO WARRANTY;\n" "for details type 'warranty'.\n" msgstr "" "Det här programmet levereras UTAN NÅGON SOM HELST GARANTI;\n" "för detaljer skriv \"warranty\".\n" #: src/ca-cli.c:189 #, c-format msgid "" "This is free software, and you are welcome to redistribute it\n" "under certain conditions; type 'distribution' for details.\n" "\n" msgstr "" "Det här är fri programvara, och Du är välkommen att sprida den\n" "under vissa förhållanden; skriv 'distribution' för detaljer.\n" "\n" #: src/ca-cli.c:231 #, c-format msgid "Unpaired quotes\n" msgstr "Ej ihop-parade citationstecken.\n" #: src/ca-cli.c:309 #, c-format msgid "" "Invalid command. Try 'help' for getting a list of recognized commands.\n" msgstr "" "Ogiltigt kommando. Försök med 'help' för att få en lista över kommandon som " "programmet känner igen.\n" #: src/ca-cli.c:313 #, c-format msgid "Incorrect number of parameters.\n" msgstr "Felaktigt antal parametrar.\n" #: src/ca-cli.c:314 #, c-format msgid "Syntax: %s\n" msgstr "Syntax: %s\n" #: src/ca-cli-callbacks.c:62 src/ca-cli-callbacks.c:111 msgid "The file already exists, so it will be overwritten." msgstr "Filen finns redan, så den kommer att skrivas över." #: src/ca-cli-callbacks.c:62 src/ca-cli-callbacks.c:111 #: src/ca-cli-callbacks.c:824 msgid "Are you sure? Yes/[No] " msgstr "Är Du säker? Yes/[No] " #: src/ca-cli-callbacks.c:84 #, c-format msgid "Problem when opening new '%s' CA database\n" msgstr "Problem vid öppnandet av ny '%s' CA-databas\n" #: src/ca-cli-callbacks.c:88 #, c-format msgid "File '%s' opened\n" msgstr "Filen '%s' öppnad\n" #: src/ca-cli-callbacks.c:98 #, c-format msgid "Problem when opening '%s' CA database\n" msgstr "Problem vid öppnandet av '%s' CA-databas\n" #: src/ca-cli-callbacks.c:132 #, c-format msgid "Current opened file: %s\n" msgstr "Aktuell öppnad fil: %s\n" #: src/ca-cli-callbacks.c:133 #, c-format msgid "Number of certificates in file: %d\n" msgstr "Antal certifikat i filen: %d\n" #: src/ca-cli-callbacks.c:134 #, c-format msgid "Number of CSRs in file: %d\n" msgstr "Antal CSR i filen: %d\n" #: src/ca-cli-callbacks.c:169 msgid " (after 2038?)" msgstr "" #: src/ca-cli-callbacks.c:239 #, c-format msgid "Certificates in Database:\n" msgstr "Certifikat i databas:\n" #: src/ca-cli-callbacks.c:240 #, c-format msgid "Id.\tIs CA?\tCertificate Subject\tKey in DB?\tActivation\t\tExpiration" msgstr "Id.\tÄr CA?\tCertifikatämne\tNyckel i DB?\tAktivering\t\tUtgång" #: src/ca-cli-callbacks.c:243 #, c-format msgid "\t\tRevocation\n" msgstr "\t\ttab]\tÅterkallelse\n" #: src/ca-cli-callbacks.c:278 #, c-format msgid "Certificate Requests in Database:\n" msgstr "" #: src/ca-cli-callbacks.c:279 #, c-format msgid "Id.\tParent Id.\tCSR Subject\t\tKey in DB?\n" msgstr "" #: src/ca-cli-callbacks.c:309 src/ca-cli-callbacks.c:1129 #: src/ca-cli-callbacks.c:1522 src/ca-cli-callbacks.c:1551 msgid "The given CA id. is not valid" msgstr "" #: src/ca-cli-callbacks.c:362 #, c-format msgid "" "Please enter data corresponding to subject of the Certificate Signing " "Request:\n" msgstr "" #: src/ca-cli-callbacks.c:365 src/ca-cli-callbacks.c:567 msgid "Enter country (C)" msgstr "" #: src/ca-cli-callbacks.c:373 src/ca-cli-callbacks.c:573 msgid "Enter state or province (ST)" msgstr "" #: src/ca-cli-callbacks.c:382 src/ca-cli-callbacks.c:579 msgid "Enter locality or city (L)" msgstr "" #: src/ca-cli-callbacks.c:390 src/ca-cli-callbacks.c:585 msgid "Enter organization (O)" msgstr "" #: src/ca-cli-callbacks.c:398 src/ca-cli-callbacks.c:591 msgid "Enter organizational unit (OU)" msgstr "" #: src/ca-cli-callbacks.c:405 src/ca-cli-callbacks.c:597 msgid "Enter common name (CN)" msgstr "" #: src/ca-cli-callbacks.c:411 src/ca-cli-callbacks.c:603 msgid "Enter email address (leave blank for none)" msgstr "" #: src/ca-cli-callbacks.c:422 src/ca-cli-callbacks.c:614 msgid "" "Enter Subject Alternative Names (SAN) [format: " "DNS:example.com,IP:192.168.1.1]" msgstr "" #: src/ca-cli-callbacks.c:433 src/ca-cli-callbacks.c:625 msgid "Enter type of key you are going to create (RSA/DSA/ECDSA/Ed25519)" msgstr "" #: src/ca-cli-callbacks.c:472 src/ca-cli-callbacks.c:656 msgid "Enter curve size for ECDSA (256, 384, or 521)" msgstr "" #: src/ca-cli-callbacks.c:482 src/ca-cli-callbacks.c:667 msgid "Enter bitlength for the key (it must be a whole multiple of 1024)" msgstr "" #: src/ca-cli-callbacks.c:487 #, c-format msgid "These are the provided CSR properties:\n" msgstr "" #: src/ca-cli-callbacks.c:489 src/ca-cli-callbacks.c:704 #: src/ca-cli-callbacks.c:1350 src/ca-cli-callbacks.c:1411 #, c-format msgid "Subject:\n" msgstr "" #: src/ca-cli-callbacks.c:490 src/ca-cli-callbacks.c:705 #, c-format msgid "\tDistinguished Name: " msgstr "" #: src/ca-cli-callbacks.c:505 src/ca-cli-callbacks.c:720 #: src/ca-cli-callbacks.c:1354 src/ca-cli-callbacks.c:1414 #, c-format msgid "\tSubject Alternative Names: %s\n" msgstr "" #: src/ca-cli-callbacks.c:506 src/ca-cli-callbacks.c:721 #, c-format msgid "Key pair\n" msgstr "" #: src/ca-cli-callbacks.c:512 src/ca-cli-callbacks.c:727 #, c-format msgid "\tType: %s\n" msgstr "" #: src/ca-cli-callbacks.c:514 #, c-format msgid "\tKey size: fixed (Ed25519)\n" msgstr "" #: src/ca-cli-callbacks.c:516 #, c-format msgid "\tCurve: P-%d\n" msgstr "" #: src/ca-cli-callbacks.c:518 src/ca-cli-callbacks.c:729 #, c-format msgid "\tKey bitlength: %d\n" msgstr "" #: src/ca-cli-callbacks.c:521 src/ca-cli-callbacks.c:740 msgid "Do you want to change anything? Yes/[No] " msgstr "" #: src/ca-cli-callbacks.c:525 msgid "" "You are about to create a Certificate Signing Request with these properties." msgstr "" #: src/ca-cli-callbacks.c:526 src/ca-cli-callbacks.c:745 msgid "Are you sure? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:531 src/ca-cli-callbacks.c:750 #: src/ca-cli-callbacks.c:834 src/ca-cli-callbacks.c:965 #: src/ca-cli-callbacks.c:1086 src/ca-cli-callbacks.c:1115 #: src/ca-cli-callbacks.c:1181 src/ca-cli-callbacks.c:1208 #: src/ca-cli-callbacks.c:1236 src/ca-cli-callbacks.c:1251 #: src/ca-cli-callbacks.c:1581 src/ca-cli-callbacks.c:1624 #: src/ca-cli-callbacks.c:1945 #, c-format msgid "Operation cancelled.\n" msgstr "" #: src/ca-cli-callbacks.c:565 #, c-format msgid "" "Please enter data corresponding to subject of the new Certification " "Authority:\n" msgstr "" #: src/ca-cli-callbacks.c:673 msgid "" "Introduce number of months before expiration of the new certification " "authority" msgstr "" #: src/ca-cli-callbacks.c:693 src/new_ca_window.c:457 msgid "" "This system uses a 32-bit time_t and cannot represent dates after " "2038-01-19. The new CA's expiration date has been clamped to that limit. To " "issue longer-lived CAs, run gnoMint on a 64-bit platform." msgstr "" #: src/ca-cli-callbacks.c:702 #, c-format msgid "These are the provided new CA properties:\n" msgstr "" #: src/ca-cli-callbacks.c:730 #, c-format msgid "Validity\n" msgstr "" #: src/ca-cli-callbacks.c:731 src/ca-cli-callbacks.c:1360 #, c-format msgid "Validity:\n" msgstr "" #: src/ca-cli-callbacks.c:734 src/ca-cli-callbacks.c:1363 #, c-format msgid "\tActivated on: %s\n" msgstr "" #: src/ca-cli-callbacks.c:738 src/ca-cli-callbacks.c:1370 #, c-format msgid "\tExpires on: %s\n" msgstr "" #: src/ca-cli-callbacks.c:744 msgid "" "You are about to create a new Certification Authority with these properties." msgstr "" #: src/ca-cli-callbacks.c:770 src/ca-cli-callbacks.c:818 #: src/ca-cli-callbacks.c:1321 msgid "The given certificate id. is not valid" msgstr "" #: src/ca-cli-callbacks.c:777 src/ca-cli-callbacks.c:801 #, c-format msgid "Private key extracted successfully into file '%s'\n" msgstr "" #: src/ca-cli-callbacks.c:794 src/ca-cli-callbacks.c:946 #: src/ca-cli-callbacks.c:1099 src/ca-cli-callbacks.c:1400 msgid "The given CSR id. is not valid" msgstr "" #: src/ca-cli-callbacks.c:824 msgid "This certificate will be revoked." msgstr "" #: src/ca-cli-callbacks.c:830 #, c-format msgid "Certificate revoked.\n" msgstr "" #: src/ca-cli-callbacks.c:844 src/ca-cli-callbacks.c:1381 #, c-format msgid "Certificate uses:\n" msgstr "" #: src/ca-cli-callbacks.c:847 #, c-format msgid "* Certification Authority use enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:849 #, c-format msgid "* Certification Authority use disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:853 #, c-format msgid "* CRL signing use enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:855 #, c-format msgid "* CRL signing use disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:859 #, c-format msgid "* Digital Signature use enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:861 #, c-format msgid "* Digital Signature use disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:865 src/ca-cli-callbacks.c:867 #, c-format msgid "* Data Encipherment use enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:871 #, c-format msgid "* Key Encipherment use enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:873 #, c-format msgid "* Key Encipherment use disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:877 #, c-format msgid "* Non Repudiation use enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:879 #, c-format msgid "* Non Repudiation use disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:883 #, c-format msgid "* Key Agreement use enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:885 #, c-format msgid "* Key Agreement use disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:888 #, c-format msgid "Certificate purposes:\n" msgstr "" #: src/ca-cli-callbacks.c:891 #, c-format msgid "* Email Protection purpose enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:893 #, c-format msgid "* Email Protection purpose disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:897 #, c-format msgid "* Code Signing purpose enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:899 #, c-format msgid "* Code Signing purpose disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:903 #, c-format msgid "* TLS Web Client purpose enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:905 #, c-format msgid "* TLS Web Client purpose disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:909 #, c-format msgid "* TLS Web Server purpose enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:911 #, c-format msgid "* TLS Web Server purpose disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:915 #, c-format msgid "* Time Stamping purpose enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:917 #, c-format msgid "* Time Stamping purpose disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:921 #, c-format msgid "* OCSP Signing purpose enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:923 #, c-format msgid "* OCSP Signing purpose disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:927 #, c-format msgid "* Any purpose enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:929 #, c-format msgid "* Any purpose disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:953 #, c-format msgid "You are about to sign the following Certificate Signing Request:\n" msgstr "" #: src/ca-cli-callbacks.c:955 #, c-format msgid "with the certificate corresponding to the next CA:\n" msgstr "" #: src/ca-cli-callbacks.c:958 msgid "" "Introduce number of months before expiration of the new certificate (0 to " "cancel)" msgstr "" #: src/ca-cli-callbacks.c:984 src/ca-cli-callbacks.c:1072 #, c-format msgid "" "The new certificate will be created with the following uses and purposes:\n" msgstr "" #: src/ca-cli-callbacks.c:987 msgid "Do you want to change any property of the new certificate? Yes/[No] " msgstr "" #: src/ca-cli-callbacks.c:990 msgid "* Enable Certification Authority use? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:992 #, c-format msgid "* Certification Authority use disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:996 msgid "* Enable CRL Signing? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:998 #, c-format msgid "* CRL signing use disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1002 msgid "* Enable Digital Signature use? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1004 #, c-format msgid "* Digital Signature use disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1008 msgid "Enable Data Encipherment use? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1010 #, c-format msgid "* Data Encipherment use disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1014 msgid "Enable Key Encipherment use? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1016 #, c-format msgid "* Key Encipherment use disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1020 msgid "Enable Non Repudiation use? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1022 #, c-format msgid "* Non Repudiation use disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1026 msgid "Enable Key Agreement use? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1028 #, c-format msgid "* Key Agreement use disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1032 msgid "Enable Email Protection purpose? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1034 #, c-format msgid "* Email Protection purpose disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1038 msgid "Enable Code Signing purpose? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1040 #, c-format msgid "* Code Signing purpose disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1044 msgid "Enable TLS Web Client purpose? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1046 #, c-format msgid "* TLS Web Client purpose disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1050 msgid "Enable TLS Web Server purpose? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1052 #, c-format msgid "* TLS Web Server purpose disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1056 msgid "Enable Time Stamping purpose? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1058 #, c-format msgid "* Time Stamping purpose disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1062 msgid "Enable OCSP Signing purpose? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1063 #, c-format msgid "* OCSP Signing purpose disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1067 msgid "Enable any purpose? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1069 #, c-format msgid "* Any purpose disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1077 msgid "" "All the mandatory data for the certificate generation has been gathered." msgstr "" #: src/ca-cli-callbacks.c:1077 msgid "Do you want to proceed with the signing? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1083 #, c-format msgid "Certificate signed.\n" msgstr "" #: src/ca-cli-callbacks.c:1105 msgid "This Certificate Signing Request will be deleted." msgstr "" #: src/ca-cli-callbacks.c:1105 msgid "This operation cannot be undone. Are you sure? Yes/[No] " msgstr "" #: src/ca-cli-callbacks.c:1111 #, c-format msgid "Certificate Signing Request deleted.\n" msgstr "" #: src/ca-cli-callbacks.c:1136 #, c-format msgid "CRL generated successfully into file '%s'\n" msgstr "" #: src/ca-cli-callbacks.c:1153 msgid "The bit-length of the prime number must be whole multiple of 1024" msgstr "" #: src/ca-cli-callbacks.c:1162 #, c-format msgid "Diffie-Hellman parameters created and saved successfully in file '%s'\n" msgstr "" #: src/ca-cli-callbacks.c:1174 msgid "Currently, the database is not password-protected." msgstr "" #: src/ca-cli-callbacks.c:1174 msgid "Do you want to password protect it? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1175 msgid "" "OK. You need to supply a password for protecting the private keys in the\n" "database, so nobody else but authorized people can use them. This password\n" "will be asked any time gnoMint will make use of any private key in database." msgstr "" #: src/ca-cli-callbacks.c:1178 msgid "Insert password:" msgstr "" #: src/ca-cli-callbacks.c:1178 msgid "Insert password (confirm):" msgstr "" #: src/ca-cli-callbacks.c:1179 src/ca-cli-callbacks.c:1249 msgid "The introduced passwords are distinct." msgstr "" #: src/ca-cli-callbacks.c:1190 #, c-format msgid "Password established successfully.\n" msgstr "" #: src/ca-cli-callbacks.c:1197 #, c-format msgid "Nothing done.\n" msgstr "" #: src/ca-cli-callbacks.c:1201 msgid "Currently, the database IS password-protected." msgstr "" #: src/ca-cli-callbacks.c:1201 msgid "Do you want to remove this password protection? Yes/[No] " msgstr "" #: src/ca-cli-callbacks.c:1205 #, c-format msgid "" "For removing the password-protection, the current database password\n" "must be supplied.\n" msgstr "" #: src/ca-cli-callbacks.c:1206 src/ca-cli-callbacks.c:1234 msgid "Please, insert the current database password (Empty to cancel): " msgstr "" #: src/ca-cli-callbacks.c:1213 src/ca-cli-callbacks.c:1241 msgid "" "The current password you have entered\n" "doesn't match with the actual current database password." msgstr "" #: src/ca-cli-callbacks.c:1218 msgid "" "Error while removing database password. \n" "The operation was cancelled." msgstr "" #: src/ca-cli-callbacks.c:1223 #, c-format msgid "Password removed successfully.\n" msgstr "" #: src/ca-cli-callbacks.c:1233 #, c-format msgid "" "You must supply the current database password before changing the password.\n" msgstr "" #: src/ca-cli-callbacks.c:1245 msgid "" "OK. Now you must supply a new password for protecting the private keys in " "the\n" "database, so nobody else but authorized people can use them. This password\n" "will be asked any time gnoMint will make use of any private key in database." msgstr "" #: src/ca-cli-callbacks.c:1248 msgid "Insert new password:" msgstr "" #: src/ca-cli-callbacks.c:1248 msgid "Insert new password (confirm):" msgstr "" #: src/ca-cli-callbacks.c:1257 msgid "" "Error while changing database password. \n" "The operation was cancelled." msgstr "" #: src/ca-cli-callbacks.c:1263 #, c-format msgid "Password changed successfully.\n" msgstr "" #: src/ca-cli-callbacks.c:1281 msgid "Problem when importing the given file." msgstr "" #: src/ca-cli-callbacks.c:1284 #, c-format msgid "File imported successfully.\n" msgstr "" #: src/ca-cli-callbacks.c:1300 #, c-format msgid "Directory imported successfully.\n" msgstr "" #: src/ca-cli-callbacks.c:1343 #, c-format msgid "Certificate:\n" msgstr "" #: src/ca-cli-callbacks.c:1347 #, c-format msgid "\tSerial number: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1351 src/ca-cli-callbacks.c:1357 #: src/ca-cli-callbacks.c:1412 #, c-format msgid "\tDistinguished Name: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1351 src/ca-cli-callbacks.c:1352 #: src/ca-cli-callbacks.c:1357 src/ca-cli-callbacks.c:1358 msgid "None." msgstr "" #: src/ca-cli-callbacks.c:1352 src/ca-cli-callbacks.c:1358 #: src/ca-cli-callbacks.c:1416 #, c-format msgid "\tUnique ID: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1356 #, c-format msgid "Issuer:\n" msgstr "" #: src/ca-cli-callbacks.c:1365 src/ca-cli-callbacks.c:1372 #, c-format msgid "" "\t (warning: this 32-bit build cannot tell a real post-2038 date from an " "overflow; this value may be inaccurate)\n" msgstr "" #: src/ca-cli-callbacks.c:1375 #, c-format msgid "Fingerprints:\n" msgstr "" #: src/ca-cli-callbacks.c:1376 #, c-format msgid "\tSHA1 fingerprint: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1377 #, c-format msgid "\tMD5 fingerprint: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1378 #, fuzzy, c-format msgid "\tSHA256 fingerprint: %s\n" msgstr "SHA1-fingeravtryck" #: src/ca-cli-callbacks.c:1409 #, c-format msgid "Certificate Signing Request:\n" msgstr "" #: src/ca-cli-callbacks.c:1486 msgid "Generated certs inherit Country from CA " msgstr "" #: src/ca-cli-callbacks.c:1487 msgid "Generated certs inherit State from CA " msgstr "" #: src/ca-cli-callbacks.c:1488 msgid "Generated certs inherit Locality from CA " msgstr "" #: src/ca-cli-callbacks.c:1489 msgid "Generated certs inherit Organization from CA " msgstr "" #: src/ca-cli-callbacks.c:1490 msgid "Generated certs inherit Organizational Unit from CA " msgstr "" #: src/ca-cli-callbacks.c:1491 msgid "Country in generated certs must be the same than in CA " msgstr "" #: src/ca-cli-callbacks.c:1492 msgid "State in generated certs must be the same than in CA " msgstr "" #: src/ca-cli-callbacks.c:1493 msgid "Locality in generated certs must be the same than in CA " msgstr "" #: src/ca-cli-callbacks.c:1494 msgid "Organization in generated certs must be the same than in CA " msgstr "" #: src/ca-cli-callbacks.c:1495 msgid "Organizational Unit in generated certs must be the same than in CA" msgstr "" #: src/ca-cli-callbacks.c:1496 msgid "Maximum number of hours between CRL updates " msgstr "" #: src/ca-cli-callbacks.c:1497 msgid "CRL distribution point (URL where CRL is published) " msgstr "" #: src/ca-cli-callbacks.c:1498 msgid "Maximum number of months before expiration of new certs " msgstr "" #: src/ca-cli-callbacks.c:1499 msgid "CA use enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1500 msgid "CRL Sign use enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1501 msgid "Non reputation use enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1502 msgid "Digital signature use enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1503 msgid "Key encipherment use enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1504 msgid "Key agreement use enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1505 msgid "Data encipherment use enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1506 msgid "TLS web server purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1507 msgid "TLS web client purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1508 msgid "Time stamping purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1509 msgid "Code signing server purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1510 msgid "Email protection purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1511 msgid "OCSP signing purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1512 msgid "Any purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1526 #, c-format msgid "Showing policies of the following certificate:\n" msgstr "" #: src/ca-cli-callbacks.c:1528 #, c-format msgid "" "\n" "Policies:\n" msgstr "" #: src/ca-cli-callbacks.c:1530 #, c-format msgid "Id.\tDescription\t\t\t\t\t\t\t\tValue\n" msgstr "" #: src/ca-cli-callbacks.c:1556 msgid "The given policy id is not valid" msgstr "" #: src/ca-cli-callbacks.c:1568 #, c-format msgid "" "You are about to assign to the policy\n" "'%s' the new value '%s'." msgstr "" #: src/ca-cli-callbacks.c:1572 src/ca-cli-callbacks.c:1616 msgid "Are you sure? Yes/[No] : " msgstr "" #: src/ca-cli-callbacks.c:1577 #, c-format msgid "Policy set correctly to '%s'.\n" msgstr "" #: src/ca-cli-callbacks.c:1591 #, c-format msgid "gnoMint-cli current preferences:\n" msgstr "" #: src/ca-cli-callbacks.c:1593 #, c-format msgid "Id.\tName\t\t\tValue\n" msgstr "" #: src/ca-cli-callbacks.c:1594 #, c-format msgid "0\tGnome keyring support\t%d\n" msgstr "" #: src/ca-cli-callbacks.c:1606 msgid "The given preference id is not valid" msgstr "" #: src/ca-cli-callbacks.c:1612 #, c-format msgid "" "You are about to assign to the preference 'Gnome keyring support' the new " "value '%d'." msgstr "" #: src/ca-cli-callbacks.c:1634 #, c-format msgid "" "%s version %s\n" "%s\n" msgstr "" #: src/ca-cli-callbacks.c:1635 #, c-format msgid "" "\n" "Authors:\n" "%s\n" "\n" msgstr "" #: src/ca-cli-callbacks.c:1636 src/ca-cli-callbacks.c:1637 src/main.c:742 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Daniel Nylander https://launchpad.net/~yeager\n" " Marcus E https://launchpad.net/~marcus+e" #: src/ca-cli-callbacks.c:1637 #, c-format msgid "" "Translators:\n" "%s\n" msgstr "" #: src/ca-cli-callbacks.c:1644 msgid "" "THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY\n" "APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT\n" "HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY\n" "OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,\n" "THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n" "PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM\n" "IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF\n" "ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n" "\n" "For more information about warranty, see section 15 onwards of the GNU\n" "General Public License. You should have received a copy of the GNU General\n" "Public License along with this program. If not, see\n" ".\n" "\n" msgstr "" #: src/ca-cli-callbacks.c:1662 msgid "" "This program is free software: you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation, either version 3 of the License, or\n" "(at your option) any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program. If not, see .\n" "\n" msgstr "" #: src/ca-cli-callbacks.c:1677 #, fuzzy, c-format msgid "%s version %s \"%s\"\n" msgstr "" "\n" "\n" "%s version %s\n" "%s\n" "\n" #: src/ca-cli-callbacks.c:1686 #, c-format msgid "Available commands:\n" msgstr "" #: src/ca-cli-callbacks.c:1687 #, c-format msgid "===================\n" msgstr "" #: src/ca-cli-callbacks.c:1697 #, c-format msgid "Exiting gnomint-cli...\n" msgstr "" #: src/ca-cli-callbacks.c:1738 msgid "The given CA id is not valid" msgstr "" #: src/ca-cli-callbacks.c:1750 msgid "Certificate type must be 'web' or 'email'" msgstr "" #: src/ca-cli-callbacks.c:1756 msgid "Server name cannot be empty" msgstr "" #: src/ca-cli-callbacks.c:1760 #, fuzzy, c-format msgid "Creating %s certificate for: %s\n" msgstr "Skapar CA-rotcertifikat" #: src/ca-cli-callbacks.c:1761 msgid "web server" msgstr "" #: src/ca-cli-callbacks.c:1761 msgid "email server" msgstr "" #: src/ca-cli-callbacks.c:1837 #, fuzzy, c-format msgid "Error: Key generation failed: %s\n" msgstr "Nyckelgenerering misslyckades" #: src/ca-cli-callbacks.c:1845 #, fuzzy, c-format msgid "Error: CSR generation failed: %s\n" msgstr "CSR-generering misslyckades" #: src/ca-cli-callbacks.c:1854 #, c-format msgid "Error: Failed to parse generated CSR\n" msgstr "" #: src/ca-cli-callbacks.c:1865 #, c-format msgid "Error: Failed to save CSR: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1879 msgid "CSR created with ID: %" msgstr "" #: src/ca-cli-callbacks.c:1903 #, c-format msgid "Error: Failed to sign certificate: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1910 #, fuzzy, c-format msgid "Certificate generated successfully for: %s\n" msgstr "Certifikatet exporterades" #: src/ca-cli-callbacks.c:1911 #, fuzzy, c-format msgid "Certificate type: %s\n" msgstr "_Certifikat" #: src/ca-cli-callbacks.c:1911 msgid "Web Server" msgstr "" #: src/ca-cli-callbacks.c:1911 msgid "Email Server" msgstr "" #: src/ca-cli-callbacks.c:1925 msgid "Usage: renewcert " msgstr "" #: src/ca-cli-callbacks.c:1930 src/ca-cli-callbacks.c:1968 msgid "The given certificate id is not valid" msgstr "" #: src/ca-cli-callbacks.c:1941 msgid "" "gnoMint will issue a new certificate with the same subject and SAN as this " "one, signed by the same CA, with a fresh keypair. The old certificate stays " "in place." msgstr "" #: src/ca-cli-callbacks.c:1944 msgid "Renew? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1955 #, fuzzy msgid "Certificate renewed. New certificate id: %" msgstr "Certifikatgenerering misslyckades" #: src/ca-cli-callbacks.c:1963 msgid "Usage: exportchain " msgstr "" #: src/ca-cli-callbacks.c:1974 msgid "Cannot build chain PEM for that certificate." msgstr "" #: src/ca-cli-callbacks.c:1979 #, fuzzy msgid "Cannot write chain file." msgstr "Lägg till ett autosignerat CA-certifikat" #: src/ca-cli-callbacks.c:1985 #, c-format msgid "Full chain (leaf → root) written to %s\n" msgstr "" #: src/ca-cli-callbacks.c:1992 msgid "Usage: revokemany [cert-id ...]" msgstr "" #: src/ca-cli-callbacks.c:2008 #, fuzzy, c-format msgid "%d certificate revoked.\n" msgid_plural "%d certificates revoked.\n" msgstr[0] "Exportera certifikat" msgstr[1] "Exportera certifikat" #: src/ca-cli-callbacks.c:2016 msgid "Usage: deletemany [csr-id ...]" msgstr "" #: src/ca-cli-callbacks.c:2032 #, c-format msgid "%d CSR deleted.\n" msgid_plural "%d CSRs deleted.\n" msgstr[0] "" msgstr[1] "" #: src/ca-cli-callbacks.c:2092 msgid "Usage: search " msgstr "" #: src/ca-cli-callbacks.c:2099 #, c-format msgid "Matches (id\tserial\tsubject):\n" msgstr "" #: src/ca-cli-callbacks.c:2102 #, c-format msgid "%d match.\n" msgid_plural "%d matches.\n" msgstr[0] "" msgstr[1] "" #: src/ca-cli-callbacks.c:2126 #, fuzzy, c-format msgid "'%s' is not a certificate id in this database." msgstr "_Öppna certifikatdatabas" #: src/ca-cli-callbacks.c:2134 #, c-format msgid "Cannot read PEM for cert id %s." msgstr "" #: src/ca-cli-callbacks.c:2152 msgid "Usage: diff " msgstr "" #: src/ca-cli-callbacks.c:2168 msgid "Field" msgstr "" #: src/ca-cli-callbacks.c:2181 #, c-format msgid "" "\n" "%d field differs.\n" msgid_plural "" "\n" "%d fields differ.\n" msgstr[0] "" msgstr[1] "" #: src/ca_creation.c:55 src/csr_creation.c:57 msgid "Generating new RSA key pair" msgstr "" #: src/ca_creation.c:64 src/ca_creation.c:88 src/ca_creation.c:109 #: src/ca_creation.c:128 src/csr_creation.c:66 src/csr_creation.c:87 #: src/csr_creation.c:104 src/csr_creation.c:121 msgid "Key generation failed" msgstr "Nyckelgenerering misslyckades" #: src/ca_creation.c:78 src/csr_creation.c:79 msgid "Generating new DSA key pair" msgstr "Genererar nytt DSA-nyckelpar" #: src/ca_creation.c:101 src/csr_creation.c:97 #, fuzzy msgid "Generating new ECDSA key pair" msgstr "Genererar nytt DSA-nyckelpar" #: src/ca_creation.c:120 src/csr_creation.c:114 #, fuzzy msgid "Generating new Ed25519 key pair" msgstr "Genererar nytt DSA-nyckelpar" #: src/ca_creation.c:139 msgid "Generating self-signed CA-Root cert" msgstr "" #: src/ca_creation.c:147 msgid "Certificate generation failed" msgstr "Certifikatgenerering misslyckades" #: src/ca_creation.c:159 msgid "Creating CA database" msgstr "Skapar CA-databas" #: src/ca_creation.c:168 msgid "CA database creation failed" msgstr "CA-databasgenerering misslyckades" #: src/ca_creation.c:180 msgid "CA generated successfully" msgstr "Certifikatutfärdare genererades utan problem" #: src/ca_file.c:207 #, c-format msgid "Error opening filename '%s'" msgstr "" #: src/ca_file.c:310 msgid "" "The selected database has been created with a newer version of gnoMint than " "the currently installed." msgstr "" #: src/ca_file.c:1221 msgid "Cannot find last assigned serial number" msgstr "" #: src/ca_file.c:1410 msgid "Cannot find parent CA in database" msgstr "" #: src/ca_file.c:1600 msgid "" "This certificate already exists in the database: cannot insert it twice." msgstr "" #: src/ca_file.c:2044 msgid "" "The given file contains a valid private key. However, it has not been " "imported to the database because it doesn't match any key-less certificate " "or certificate request in the database." msgstr "" #: src/ca_file.c:2047 msgid "" "The given file contains a valid private key. However, it has not been " "imported to the database because it doesn't match any key-less certificate " "in the database." msgstr "" #: src/certificate_properties.c:151 msgid "" "This 32-bit build cannot represent dates after 2038-01-19, so it cannot " "distinguish a genuine date from a later one that overflowed. This value may " "be inaccurate." msgstr "" #: src/certificate_properties.c:383 #, fuzzy msgid "Unknown" msgstr "(okänd)" #: src/certificate_properties.c:453 src/tls.c:1478 msgid "Certificate signing" msgstr "Certifikatsignering" #: src/certificate_properties.c:457 msgid "Key encipherment only" msgstr "" #: src/certificate_properties.c:459 msgid "Key decipherment only" msgstr "" #: src/certificate_properties.c:472 msgid "Version" msgstr "Version" #: src/certificate_properties.c:507 msgid "Serial Number" msgstr "Serienummer" #: src/certificate_properties.c:522 src/certificate_properties.c:1262 msgid "Signature" msgstr "Signatur" #: src/certificate_properties.c:525 src/certificate_properties.c:676 #: src/certificate_properties.c:679 src/certificate_properties.c:1228 msgid "Algorithm" msgstr "Algoritm" #: src/certificate_properties.c:529 src/certificate_properties.c:686 #: src/certificate_properties.c:726 src/certificate_properties.c:763 #: src/certificate_properties.c:1232 msgid "Parameters" msgstr "Parametrar" #: src/certificate_properties.c:529 src/certificate_properties.c:686 #: src/certificate_properties.c:763 src/certificate_properties.c:767 #: src/certificate_properties.c:781 src/certificate_properties.c:790 #: src/certificate_properties.c:1232 msgid "(unknown)" msgstr "(okänd)" #: src/certificate_properties.c:563 msgid "Issuer" msgstr "Utfärdare" #: src/certificate_properties.c:598 msgid "Validity" msgstr "Giltighet" #: src/certificate_properties.c:603 msgid "Not Before" msgstr "Inte före" #: src/certificate_properties.c:610 msgid "Not After" msgstr "Inte efter" #: src/certificate_properties.c:616 msgid "Note" msgstr "" #: src/certificate_properties.c:617 msgid "" "This 32-bit build cannot represent dates after 2038-01-19, so a value marked " "⚠ may be a later date that overflowed and is inaccurate." msgstr "" #: src/certificate_properties.c:673 msgid "Subject Public Key Info" msgstr "" #: src/certificate_properties.c:690 msgid "RSA PublicKey" msgstr "" #: src/certificate_properties.c:702 msgid "Modulus" msgstr "" #: src/certificate_properties.c:710 msgid "Public Exponent" msgstr "" #: src/certificate_properties.c:755 msgid "DSA PublicKey" msgstr "" #: src/certificate_properties.c:767 msgid "Subject Public Key" msgstr "" #: src/certificate_properties.c:781 msgid "Issuer Unique ID" msgstr "" #: src/certificate_properties.c:790 msgid "Subject Unique ID" msgstr "" #: src/certificate_properties.c:813 src/certificate_properties.c:836 #: src/certificate_properties.c:945 src/certificate_properties.c:1058 #: src/certificate_properties.c:1085 src/certificate_properties.c:1124 #: src/certificate_properties.c:1182 src/certificate_properties.c:1457 #: src/san_manager.c:399 msgid "Value" msgstr "Värde" #: src/certificate_properties.c:875 src/certificate_properties.c:1018 msgid "DNS Name" msgstr "DNS-namn" #: src/certificate_properties.c:882 src/certificate_properties.c:1025 msgid "RFC822 Name" msgstr "RFC822-namn" #: src/certificate_properties.c:905 src/certificate_properties.c:919 #: src/certificate_properties.c:927 msgid "IP" msgstr "IP" #: src/certificate_properties.c:936 src/certificate_properties.c:1049 msgid "Directory Name" msgstr "Katalognamn" #: src/certificate_properties.c:973 src/certificate_properties.c:1164 msgid "TRUE" msgstr "SANT" #: src/certificate_properties.c:973 src/certificate_properties.c:1164 msgid "FALSE" msgstr "FALSKT" #: src/certificate_properties.c:977 msgid "CA" msgstr "CA" #: src/certificate_properties.c:981 msgid "Path Length Constraint" msgstr "" #: src/certificate_properties.c:1154 msgid "Extensions" msgstr "Utökningar" #: src/certificate_properties.c:1166 msgid "Critical" msgstr "Kritiskt" #: src/certificate_properties.c:1199 msgid "Certificate" msgstr "Certifikat" #: src/certificate_properties.c:1225 msgid "Signature Algorithm" msgstr "Signaturalgoritm" #: src/certificate_properties.c:1446 msgid "Name" msgstr "Namn" #: src/certificate_properties.c:1477 src/tls.c:1494 msgid "TLS WWW Server" msgstr "" #: src/certificate_properties.c:1478 msgid "TLS WWW Client" msgstr "" #: src/certificate_properties.c:1484 msgid "Subject Directory Attributes" msgstr "" #: src/certificate_properties.c:1485 msgid "Subject Key Identifier" msgstr "" #: src/certificate_properties.c:1486 msgid "Key Usage" msgstr "Nyckelanvändning" #: src/certificate_properties.c:1487 msgid "Private Key Usage Period" msgstr "" #: src/certificate_properties.c:1489 msgid "Basic Constraints" msgstr "" #: src/certificate_properties.c:1490 msgid "Name Constraints" msgstr "" #: src/certificate_properties.c:1491 msgid "CRL Distribution Points" msgstr "" #: src/certificate_properties.c:1492 msgid "Certificate Policies" msgstr "Certifikatpolicy" #: src/certificate_properties.c:1493 msgid "Policy Mappings" msgstr "" #: src/certificate_properties.c:1494 msgid "Authority Key Identifier" msgstr "" #: src/certificate_properties.c:1495 msgid "Policy Constraints" msgstr "" #: src/certificate_properties.c:1496 msgid "Extended Key Usage" msgstr "" #: src/certificate_properties.c:1497 msgid "Delta CRL Distribution Point" msgstr "" #: src/certificate_properties.c:1498 msgid "Inhibit Any-Policy" msgstr "" #: src/creation_process_window.c:69 msgid "CA creation process finished" msgstr "Process för CA-skapande färdigställdes" #: src/creation_process_window.c:193 msgid "Creation process cancelled" msgstr "Skapandeprocessen avbröts" #: src/creation_process_window.c:215 msgid "CSR creation process finished" msgstr "Process för CSR-skapande färdigställdes" #: src/creation_process_window.c:288 msgid "Creating Certificate Signing Request" msgstr "" #: src/crl.c:101 msgid "CRL generated successfully" msgstr "CRL-generering lyckades" #: src/crl.c:146 msgid "Export Certificate Revocation List" msgstr "" #: src/crl.c:180 src/crl.c:253 src/crl.c:299 msgid "There was an error while generating CRL." msgstr "Det inträffade ett fel vid generering av CRL." #: src/crl.c:189 msgid "There was an error while writing CRL." msgstr "Det inträffade ett fel vid skrivning av CRL." #: src/crl.c:201 src/crl.c:227 src/crl.c:268 src/crl.c:330 src/crl.c:351 msgid "There was an error while exporting CRL." msgstr "" #: src/crl.c:238 src/crl.c:369 msgid "There was an error while getting revoked certificates." msgstr "" #: src/csr_creation.c:131 msgid "Generating CSR" msgstr "Genererar CSR" #: src/csr_creation.c:140 msgid "CSR generation failed" msgstr "CSR-generering misslyckades" #: src/csr_creation.c:151 msgid "Saving CSR in database" msgstr "Sparar CSR i databasen" #: src/csr_creation.c:169 msgid "CSR couldn't be saved" msgstr "CSR kunde inte sparas" #: src/csr_creation.c:180 msgid "CSR generated successfully" msgstr "CSR-generering lyckades" #: src/csr_properties.c:91 msgid "" "This Certificate Signing Request has its corresponding private key saved " "in a external file." msgstr "" #: src/dialog.c:123 #, c-format msgid "" "\n" "The password must have, at least, %d characters\n" msgstr "" #: src/dialog.c:581 msgid "To do. Feature not implemented yet." msgstr "" #: src/export.c:43 src/export.c:48 src/export.c:53 msgid "There was an error while saving Diffie-Hellman parameters." msgstr "" #: src/export.c:79 src/export.c:138 src/export.c:146 src/export.c:200 #: src/export.c:210 src/export.c:304 src/export.c:341 src/export.c:376 #: src/export.c:384 src/export.c:424 src/export.c:433 src/export.c:474 msgid "There was an error while exporting private key." msgstr "" #: src/export.c:99 src/export.c:284 src/export.c:357 src/export.c:455 msgid "There was an error while getting private key." msgstr "" #: src/export.c:110 src/export.c:248 msgid "There was an error while uncrypting private key." msgstr "" #: src/export.c:113 src/export.c:264 msgid "" "You need to supply a passphrase for protecting the exported private key, so " "nobody else but authorized people can use it. This passphrase will be asked " "by any application that will make use of the private key." msgstr "" #: src/export.c:116 src/export.c:267 src/export.c:536 src/export.c:715 msgid "Insert passphrase (8 characters or more):" msgstr "Infoga lösenfras (8 eller fler tecken):" #: src/export.c:116 src/export.c:267 src/export.c:536 src/export.c:715 msgid "Insert passphrase (confirm):" msgstr "Infoga lösenfras (bekräftelse):" #: src/export.c:117 src/export.c:268 src/export.c:537 src/export.c:716 msgid "The introduced passphrases are distinct." msgstr "" #: src/export.c:120 src/export.c:178 msgid "Operation cancelled." msgstr "" #: src/export.c:130 src/export.c:190 msgid "There was an error while password-protecting private key." msgstr "" #: src/export.c:368 src/export.c:415 msgid "There was an error while decrypting private key." msgstr "" #: src/export.c:513 src/export.c:747 msgid "Unsupported operation: you cannot generate a PKCS#12 for a CSR." msgstr "" #: src/export.c:521 src/export.c:530 src/export.c:695 src/export.c:731 msgid "" "There was an error while getting the certificate and private key from the " "internal database." msgstr "" #: src/export.c:533 src/export.c:712 msgid "" "You need to supply a passphrase for protecting the exported certificate, so " "nobody else but authorized people can use it. This passphrase will be asked " "by any application that will import the certificate." msgstr "" #: src/export.c:555 src/export.c:629 msgid "There was an error while generating the PKCS#12 package." msgstr "" #: src/export.c:569 src/export.c:578 src/export.c:652 src/export.c:663 msgid "There was an error while exporting the certificate." msgstr "" #: src/gnomint-cli.c:59 msgid "- A Certification Authority manager" msgstr "" #: src/gnomint-cli.c:62 #, c-format msgid "Failed to initialize: %s\n" msgstr "" #: src/import.c:171 #, c-format msgid "" "The whole selected file, or some of its elements, seems to\n" "be cyphered using a password or passphrase. For importing\n" "the file into gnoMint database, you must provide an \n" "appropriate password.\n" msgstr "" #: src/import.c:176 #, c-format msgid "Please introduce password for `%s'" msgstr "" #: src/import.c:218 #, c-format msgid "" "Couldn't import the certificate request. \n" "The database returned this error: \n" "\n" "'%s'" msgstr "" #: src/import.c:298 msgid "" "The imported certificate expires after 2038-01-19, a date this 32-bit build " "cannot represent. Its stored expiration has been capped and may be " "inaccurate. The certificate itself is unchanged; open it on a 64-bit system " "to see the exact date." msgstr "" #: src/import.c:310 #, c-format msgid "" "Couldn't import the certificate. \n" "The database returned this error: \n" "\n" "'%s'" msgstr "" #: src/import.c:666 src/import.c:852 msgid "PKCS#8 crypted private key" msgstr "" #: src/import.c:677 src/import.c:862 msgid "The given password doesn't match the one used for crypting this part" msgstr "" #: src/import.c:771 msgid "Encrypted PKCS#12 bag" msgstr "" #: src/import.c:788 msgid "" "The given password doesn't match with the password used for encrypting this " "part." msgstr "" #: src/import.c:999 msgid "Couldn't find any supported format in the given file" msgstr "" #: src/import.c:1012 src/import.c:1363 #, c-format msgid "Couldn't open %s file. Check permissions." msgstr "" #: src/import.c:1039 #, c-format msgid "Couldn't recognize the file %s as a RSA or DSA private key." msgstr "" #: src/import.c:1055 #, c-format msgid "Private key for %s" msgstr "Privat nyckel för %s" #: src/import.c:1057 #, c-format msgid "Private key %s" msgstr "" #: src/import.c:1092 msgid "Problem while calling to openssl for decyphering private key." msgstr "" #: src/import.c:1100 #, c-format msgid "" "OpenSSL has returned the following error while trying to decypher the " "private key:\n" "\n" "%s" msgstr "" #: src/import.c:1211 msgid "There was a problem while importing the public CA root certificate" msgstr "" #: src/import.c:1225 msgid "CA Root certificate" msgstr "" #: src/import.c:1227 msgid "" "There was a problem while importing the private key corresponding to CA root " "certificate" msgstr "" #: src/import.c:1237 msgid "There was a problem while opening the directory certs/." msgstr "" #: src/import.c:1261 msgid "There was a problem while opening the directory newcerts/." msgstr "" #: src/import.c:1288 msgid "There was a problem while opening the directory req." msgstr "" #: src/import.c:1314 msgid "There was a problem while opening the directory crl/." msgstr "" #: src/import.c:1336 msgid "There was a problem while opening the directory keys/." msgstr "" #: src/import.c:1394 msgid "Files in the directory don't belong to any supported CA format." msgstr "" #: src/main.c:567 #, c-format msgid "" "Problem when creating '%s' CA database:\n" "%s" msgstr "" #: src/main.c:577 #, c-format msgid "Problem when opening new '%s' CA database" msgstr "" #: src/main.c:591 msgid "Create new CA database" msgstr "Skapa ny CA-databas" #: src/main.c:616 #, c-format msgid "Problem when opening '%s' CA database" msgstr "" #: src/main.c:630 msgid "Open CA database" msgstr "Öppna CA-databas" #: src/main.c:662 msgid "Save CA database as..." msgstr "Spara CA-databas som..." #: src/main.c:722 msgid "" "gnoMint is a program for creating and managing Certification Authorities, " "and their certificates" msgstr "" "gnoMint är ett program för att skapa och hantera certifikatutfärdare och " "deras certifikat" #: src/main.c:725 #, fuzzy msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU General Public License as published by the Free " "Software Foundation; either version 3 of the License, or (at your option) " "any later version.\n" "\n" "This program is distributed in the hope that it will be useful, but WITHOUT " "ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or " "FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for " "more details.\n" "\n" "You should have received a copy of the GNU General Public License along with " "this program; if not, write to the Free Software Foundation, Inc., 51 " "Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA." msgstr "" "Detta program är fri programvara. Du kan distribuera det och/eller modifiera " "det under villkoren i GNU General Public License, publicerad av Free " "Software Foundation, antingen version 3 eller (om du så vill) någon senare " "version.\n" "\n" "Detta program distribueras i hopp om att det ska vara användbart, men UTAN " "NÅGON SOM HELST GARANTI, även utan underförstådd garanti om SÄLJBARHET eller " "LÄMPLIGHET FÖR NÅGOT SPECIELLT ÄNDAMÅL. Se GNU General Public License för " "ytterligare information. \n" "\n" "Du bör ha fått en kopia av GNU General Public License tillsammans med detta " "program. Om inte, skriv till Free Software Foundation, Inc., 51 Franklin " "Street, Fifth Floor, Boston, MA 02110-1301, USA." #: src/main.c:741 msgid "Code collaborators" msgstr "" #: src/new_ca_window.c:191 src/new_req_window.c:222 msgid "ECDSA curve:" msgstr "" #: src/new_ca_window.c:219 msgid "Please enter a Common Name (CN) for the CA." msgstr "" #: src/new_cert.c:197 msgid "" "The policy of this CA obligue the country field of the certificates to be " "the same as the one in the CA cert." msgstr "" #: src/new_cert.c:203 msgid "" "The policy of this CA obligue the state/province field of the certificates " "to be the same as the one in the CA cert." msgstr "" #: src/new_cert.c:209 msgid "" "The policy of this CA obligue the locality/city field of the certificates to " "be the same as the one in the CA cert." msgstr "" #: src/new_cert.c:215 msgid "" "The policy of this CA obligue the organization field of the certificates to " "be the same as the one in the CA cert." msgstr "" #: src/new_cert.c:221 msgid "" "The policy of this CA obligue the organizational unit field of the " "certificates to be the same as the one in the CA cert." msgstr "" #: src/new_cert.c:659 msgid "" "The expiration date of the new certificate is after the expiration date of " "the CA certificate.\n" "\n" "According to the current standards, this is not allowed. The new certificate " "will be created with the same expiration date as the CA certificate." msgstr "" #: src/new_cert.c:734 msgid "" "This system uses a 32-bit time_t and cannot represent dates after " "2038-01-19. The new certificate's expiration date has been clamped to that " "limit. To issue longer-lived certificates, run gnoMint on a 64-bit platform." msgstr "" #: src/new_cert.c:770 src/new_cert.c:809 src/new_cert.c:838 msgid "Error while signing CSR." msgstr "" #: src/new_req_window.c:374 #, fuzzy msgid "Please enter a Common Name (CN) for the certificate request." msgstr "Återkallar det valda certifikatet" #: src/pkey_manage.c:124 #, c-format msgid "" "The file that holds private key for certificate '%s' is password-protected.\n" "\n" "Please, insert the password corresponding to this file." msgstr "" #: src/pkey_manage.c:163 #, c-format msgid "" "The file that holds private key for certificate\n" "'%s' is password-protected.\n" "\n" msgstr "" #: src/pkey_manage.c:211 src/pkey_manage.c:303 msgid "" "The given password doesn't match with the one used while crypting the file." msgstr "" #: src/pkey_manage.c:226 src/pkey_manage.c:315 src/pkey_manage.c:476 msgid "" "The file designated in database contains a private key, but it is not the " "private key corresponding to the certificate." msgstr "" #: src/pkey_manage.c:229 src/pkey_manage.c:318 src/pkey_manage.c:479 msgid "" "The file designated in database doesn't contain any recognized private key." msgstr "" #: src/pkey_manage.c:233 src/pkey_manage.c:500 msgid "The file designated in database couldn't be opened." msgstr "" #: src/pkey_manage.c:236 src/pkey_manage.c:503 msgid "The file designated in database doesn't exist." msgstr "" #: src/pkey_manage.c:360 #, fuzzy msgid "Select private key file" msgstr "Välj privat nyckelfil .gnoMint" #: src/pkey_manage.c:1069 src/pkey_manage.c:1164 msgid "The given password doesn't match the one used in the database" msgstr "" #: src/pkey_manage.c:1151 #, c-format msgid "" "This action requires using one or more private keys saved in the database.\n" msgstr "" #: src/pkey_manage.c:1152 msgid "Please insert the database password:" msgstr "" #: src/san_manager.c:71 msgid "Value cannot be empty" msgstr "" #: src/san_manager.c:82 msgid "Invalid DNS name. Use format: example.com or *.example.com" msgstr "" #: src/san_manager.c:93 msgid "Invalid IP address. Use IPv4 (e.g., 192.168.1.1) or IPv6 format" msgstr "" #: src/san_manager.c:103 msgid "Invalid email address. Use format: user@example.com" msgstr "" #: src/san_manager.c:113 msgid "Invalid URI. Must start with http://, https://, ftp://, or ldap://" msgstr "" #: src/san_manager.c:389 msgid "Type" msgstr "" #: src/tls.c:198 src/tls.c:231 src/tls.c:276 src/tls.c:307 #, c-format msgid "Error initializing private key structure." msgstr "" #: src/tls.c:204 src/tls.c:237 src/tls.c:281 src/tls.c:311 #, c-format msgid "Error creating private key: %d" msgstr "Fel vid skapande av privat nyckel: %d" #: src/tls.c:215 src/tls.c:248 src/tls.c:289 src/tls.c:321 src/tls.c:794 #: src/tls.c:1204 #, c-format msgid "Error exporting private key to PEM structure." msgstr "" #: src/tls.c:656 #, c-format msgid "Error when initializing certificate structure" msgstr "" #: src/tls.c:662 src/tls.c:956 #, c-format msgid "Error when setting certificate version" msgstr "" #: src/tls.c:672 src/tls.c:969 #, c-format msgid "Error when setting certificate serial number" msgstr "" #: src/tls.c:681 src/tls.c:978 #, c-format msgid "Error when setting activation time" msgstr "" #: src/tls.c:686 src/tls.c:986 #, c-format msgid "Error when setting expiration time" msgstr "" #: src/tls.c:740 src/tls.c:1040 #, c-format msgid "Error when setting basicConstraint extension" msgstr "" #: src/tls.c:745 src/tls.c:1082 #, c-format msgid "Error when setting keyUsage extension" msgstr "" #: src/tls.c:756 src/tls.c:864 src/tls.c:1120 #, c-format msgid "Error when setting Subject Alternative Name extension" msgstr "" #: src/tls.c:768 src/tls.c:1056 #, c-format msgid "Error when setting subject key identifier extension" msgstr "" #: src/tls.c:772 src/tls.c:1030 #, c-format msgid "Error when setting authority key identifier extension" msgstr "" #: src/tls.c:782 #, c-format msgid "Error when signing self-signed certificate" msgstr "" #: src/tls.c:813 #, c-format msgid "Error when initializing privkey structure" msgstr "" #: src/tls.c:817 #, c-format msgid "Error when importing private key into privkey structure" msgstr "" #: src/tls.c:821 #, c-format msgid "Error when initializing csr structure" msgstr "" #: src/tls.c:825 #, c-format msgid "Error when setting csr version" msgstr "" #: src/tls.c:869 #, c-format msgid "Error when signing self-signed csr" msgstr "" #: src/tls.c:880 #, c-format msgid "Error exporting CSR to PEM structure." msgstr "" #: src/tls.c:933 #, fuzzy, c-format msgid "Error when importing CA private key" msgstr "Fel vid skapande av privat nyckel: %d" #: src/tls.c:940 #, c-format msgid "Error when initializing crt structure" msgstr "" #: src/tls.c:948 #, c-format msgid "Error when copying data from CSR to certificate structure" msgstr "" #: src/tls.c:1182 #, fuzzy, c-format msgid "Error when signing certificate: %s" msgstr "Lägg till ett autosignerat CA-certifikat" #: src/tls.c:1482 msgid "Key encipher only" msgstr "" #: src/tls.c:1484 msgid "Key decipher only" msgstr "" #: src/tls.c:1496 msgid "TLS WWW Client." msgstr "" #: src/wizard_window.c:239 #, fuzzy, c-format msgid "" "Key generation failed:\n" "%s" msgstr "Nyckelgenerering misslyckades" #: src/wizard_window.c:249 #, fuzzy, c-format msgid "" "CSR generation failed:\n" "%s" msgstr "CSR-generering misslyckades" #: src/wizard_window.c:260 msgid "Failed to parse generated CSR." msgstr "" #: src/wizard_window.c:271 #, c-format msgid "" "Failed to save CSR:\n" "%s" msgstr "" #: src/wizard_window.c:294 #, fuzzy, c-format msgid "" "Failed to sign certificate:\n" "%s" msgstr "Lägg till ett autosignerat CA-certifikat" #: src/wizard_window.c:297 #, fuzzy msgid "Certificate generated successfully!" msgstr "Certifikatet exporterades" #: src/wizard_window.c:311 #, fuzzy msgid "Please enter a server name." msgstr "Ange lösenordet" #: src/wizard_window.c:318 #, fuzzy msgid "Please select a Certificate Authority." msgstr "Återkallar det valda certifikatet" #: src/wizard_window.c:325 msgid "Invalid Certificate Authority selected." msgstr "" #: src/wizard_window.c:412 msgid "No Certificate Authority found. Please create a CA first." msgstr "" #~ msgid "%m/%d/%Y %R GMT" #~ msgstr "%Y/%m/%d %R GMT" #~ msgid "CertList PKeyInDB|N\t\t" #~ msgstr "CertList PKeyiDB|N\t\t" #~ msgid "CertList Activation|\t" #~ msgstr "CertList aktivering|\t" #, c-format #~ msgid "CertList Activation|%s\t" #~ msgstr "CertList aktivering|%s\t" #~ msgid "CertList Expiration|\t" #~ msgstr "CertList utgång|\t" #, c-format #~ msgid "CertList Expiration|%s\t" #~ msgstr "CertList utgång|%s\t" #~ msgid "CertList Revocation|\n" #~ msgstr "CertList återkallelse|\n" #, c-format #~ msgid "CertList Revocation|%s\n" #~ msgstr "CertList återkallelse|%s\n" #~ msgid "Certificates" #~ msgstr "Certifikat" #~ msgid "Certificate Signing Requests" #~ msgstr "Certifikatsigneringsbegäran" #~ msgid "- A graphical Certification Authority manager" #~ msgstr "- En grafisk hanterare för certifikatutfärdare" #~ msgid "Shows the certificate properties window" #~ msgstr "Visar egenskaper för certifikatet" #~ msgid "" #~ "Exports the certificate so it can be imported by any other application" #~ msgstr "Exporterar certifikatet så att det kan importeras av andra program" #~ msgid "" #~ "Extracts the private key of the selected \n" #~ "certificate from the database to an \n" #~ "external file. This file must be provided \n" #~ "each time the certificate will be used" #~ msgstr "" #~ "Extraherar den privata nyckeln från det valda \n" #~ "certifikatet från databasen till en \n" #~ "extern fil. Filen måste tillhandahållas \n" #~ "varje gång certifikatet ska användas" #~ msgid "Shows the CSR properties window" #~ msgstr "Visar egenskaper för certifikatsigneringsbegäran" #, fuzzy #~ msgid "Exports the CSR so it can be imported by any other application" #~ msgstr "Exporterar certifikatet så att det kan importeras av andra program" #, fuzzy #~ msgid "" #~ "Extracts the private key of the selected \n" #~ "certificate from the database to an \n" #~ "external file. This file must be provided \n" #~ "each time the CSR will be used" #~ msgstr "" #~ "Extraherar den privata nyckeln från det valda \n" #~ "certifikatet från databasen till en \n" #~ "extern fil. Filen måste tillhandahållas \n" #~ "varje gång certifikatet ska användas" #~ msgid "Extract the saved private key to an external file or device" #~ msgstr "" #~ "Extrahera den sparade privata nyckeln till en extern fil eller enhet" #, fuzzy #~ msgid "Generate the current Certificate Revocation List" #~ msgstr "Generera den aktuella certifikatspärrlistan" #, fuzzy #~ msgid "<b>Fingerprints</b>" #~ msgstr "Fingeravtryck" #, fuzzy #~ msgid "<b>Certificate hierarchy</b>" #~ msgstr "Certifikathierarki" #, fuzzy #~ msgid "<b>Certificate fields</b>" #~ msgstr "Certifikatfält" #, fuzzy #~ msgid "<big>CA properties</big>" #~ msgstr "Egenskaper för certifikatutfärdare\n" #, fuzzy #~ msgid "<b>Certificate uses</b>" #~ msgstr "Certifikatanvändning" #, fuzzy #~ msgid "<b>Certificate purposes</b>" #~ msgstr "Certifikatändamål" #~ msgid "Enter password again for confirmation:" #~ msgstr "Ange lösenordet igen för bekräftelse:" #~ msgid "" #~ "Protect CA database private keys\n" #~ "with password:" #~ msgstr "" #~ "Skydda CA-databasens privata \n" #~ "nycklar med ett lösenord:" #~ msgid "gtk-ok" #~ msgstr "OK" #~ msgid "gtk-add" #~ msgstr "Lägg till" gnomint-1.6.4/po/gnomint.pot0000644000000000000000000030023015212761317014553 0ustar00rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR David Marín Carreño # This file is distributed under the same license as the gnomint package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: gnomint 1.6.4\n" "Report-Msgid-Bugs-To: davefx@gmail.com\n" "POT-Creation-Date: 2026-06-12 10:43+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" #: gconf/org.gnome.gnomint.gschema.xml:7 msgid "Window size" msgstr "" #: gconf/org.gnome.gnomint.gschema.xml:8 msgid "" "The (width,length) size gnoMint should take when started. This cannot be " "smaller than (320,200)." msgstr "" #: gconf/org.gnome.gnomint.gschema.xml:16 msgid "Revoked certificates visibility" msgstr "" #: gconf/org.gnome.gnomint.gschema.xml:17 msgid "Whether the revoked certificates should be visible." msgstr "" #: gconf/org.gnome.gnomint.gschema.xml:24 msgid "Expired certificates visibility" msgstr "" #: gconf/org.gnome.gnomint.gschema.xml:25 msgid "" "Whether already-expired certificates should be visible in the certificates " "tree. CAs are always visible regardless of this setting so that any still-" "valid certificates they signed remain reachable." msgstr "" #: gconf/org.gnome.gnomint.gschema.xml:35 msgid "Days before expiration to highlight certificates in amber" msgstr "" #: gconf/org.gnome.gnomint.gschema.xml:36 msgid "" "Certificates whose effective validity ends within this many days are shown " "in amber in the certificates tree, as a heads-up that they should be renewed " "soon. Setting this to 0 disables the amber highlight (certificates appear " "either normally or in gray for already-expired)." msgstr "" #: gconf/org.gnome.gnomint.gschema.xml:47 msgid "Certificate requests visibility" msgstr "" #: gconf/org.gnome.gnomint.gschema.xml:48 msgid "Whether the certificate requests should be visible." msgstr "" #: gconf/org.gnome.gnomint.gschema.xml:55 msgid "Automatic exporting of certificates for gnome-keyring" msgstr "" #: gconf/org.gnome.gnomint.gschema.xml:56 msgid "" "Whether the created or imported certificates are automatically exported to " "gnome-keyring certificate-store." msgstr "" #: gui/certificate_popup_menu.ui:7 gui/csr_popup_menu.ui:7 #: gui/main_window.ui:45 msgid "Properties" msgstr "" #: gui/certificate_popup_menu.ui:13 gui/main_window.ui:35 msgid "Export full c_hain..." msgstr "" #: gui/certificate_popup_menu.ui:17 gui/csr_popup_menu.ui:13 #: gui/main_window.ui:34 msgid "E_xport" msgstr "" #: gui/certificate_popup_menu.ui:21 gui/csr_popup_menu.ui:17 #: gui/main_window.ui:23 msgid "Extrac_t private key" msgstr "" #: gui/certificate_popup_menu.ui:27 gui/main_window.ui:24 msgid "Re_new with fresh key" msgstr "" #: gui/certificate_popup_menu.ui:31 msgid "_Compare with PEM file…" msgstr "" #: gui/certificate_popup_menu.ui:35 gui/main_window.ui:25 msgid "Revo_ke" msgstr "" #: gui/certificate_popup_menu.ui:41 gui/main_window.ui:21 msgid "Add _Web Server Certificate (wizard)" msgstr "" #: gui/certificate_popup_menu.ui:45 gui/main_window.ui:22 msgid "Add _Email Server Certificate (wizard)" msgstr "" #: gui/certificate_properties_dialog.ui:19 msgid "Certificate properties - gnoMint" msgstr "" #: gui/certificate_properties_dialog.ui:54 msgid "This certificate has been verified for the following uses:" msgstr "" #: gui/certificate_properties_dialog.ui:77 msgid "MD5FINGERPRINT" msgstr "" #: gui/certificate_properties_dialog.ui:88 msgid "SHA1FINGERPRINT" msgstr "" #: gui/certificate_properties_dialog.ui:99 #: gui/certificate_properties_dialog.ui:132 #: gui/certificate_properties_dialog.ui:176 #: gui/certificate_properties_dialog.ui:231 gui/creation_process_window.ui:15 #: gui/creation_process_window.ui:61 gui/csr_properties_dialog.ui:109 #: gui/new_ca_window.ui:56 gui/new_ca_window.ui:306 gui/new_ca_window.ui:521 #: gui/new_req_window.ui:46 gui/new_req_window.ui:157 gui/new_req_window.ui:413 msgid " " msgstr "" #: gui/certificate_properties_dialog.ui:110 msgid "CertExpirationDate" msgstr "" #: gui/certificate_properties_dialog.ui:121 msgid "CertActivationDate" msgstr "" #: gui/certificate_properties_dialog.ui:143 msgid "CAOU" msgstr "" #: gui/certificate_properties_dialog.ui:154 msgid "CAO" msgstr "" #: gui/certificate_properties_dialog.ui:165 msgid "CACN" msgstr "" #: gui/certificate_properties_dialog.ui:187 msgid "CertSN" msgstr "" #: gui/certificate_properties_dialog.ui:198 gui/csr_properties_dialog.ui:63 msgid "SubjectOU" msgstr "" #: gui/certificate_properties_dialog.ui:209 gui/csr_properties_dialog.ui:87 msgid "SubjectO" msgstr "" #: gui/certificate_properties_dialog.ui:220 gui/csr_properties_dialog.ui:98 msgid "SubjectCN" msgstr "" #: gui/certificate_properties_dialog.ui:242 msgid "MD5 fingerprint" msgstr "" #: gui/certificate_properties_dialog.ui:253 msgid "SHA1 fingerprint" msgstr "" #: gui/certificate_properties_dialog.ui:264 msgid "Fingerprints" msgstr "" #: gui/certificate_properties_dialog.ui:276 msgid "Expires on" msgstr "" #: gui/certificate_properties_dialog.ui:287 msgid "Activated on" msgstr "" #: gui/certificate_properties_dialog.ui:298 msgid "Validity" msgstr "" #: gui/certificate_properties_dialog.ui:310 #: gui/certificate_properties_dialog.ui:389 gui/csr_properties_dialog.ui:120 msgid "Organizational Unit (OU)" msgstr "" #: gui/certificate_properties_dialog.ui:321 #: gui/certificate_properties_dialog.ui:400 gui/csr_properties_dialog.ui:142 msgid "Organization (O)" msgstr "" #: gui/certificate_properties_dialog.ui:332 #: gui/certificate_properties_dialog.ui:411 gui/csr_properties_dialog.ui:153 msgid "Common Name (CN)" msgstr "" #: gui/certificate_properties_dialog.ui:343 msgid "Emmited by" msgstr "" #: gui/certificate_properties_dialog.ui:355 msgid "Subject Alternative Names" msgstr "" #: gui/certificate_properties_dialog.ui:378 msgid "Serial number" msgstr "" #: gui/certificate_properties_dialog.ui:422 msgid "Certificate subject" msgstr "" #: gui/certificate_properties_dialog.ui:434 msgid "SHA256FINGERPRINT" msgstr "" #: gui/certificate_properties_dialog.ui:449 msgid "SHA256 fingerprint" msgstr "" #: gui/certificate_properties_dialog.ui:460 msgid "SHA512FINGERPRINT" msgstr "" #: gui/certificate_properties_dialog.ui:475 msgid "SHA512 fingerprint" msgstr "" #: gui/certificate_properties_dialog.ui:486 #: gui/certificate_properties_dialog.ui:509 gui/csr_properties_dialog.ui:176 msgid "Email address" msgstr "" #: gui/certificate_properties_dialog.ui:536 gui/csr_properties_dialog.ui:203 msgid "General" msgstr "" #: gui/certificate_properties_dialog.ui:557 msgid "Certificate hierarchy" msgstr "" #: gui/certificate_properties_dialog.ui:582 msgid "Certificate fields" msgstr "" #: gui/certificate_properties_dialog.ui:605 msgid "Details" msgstr "" #: gui/certificate_properties_dialog.ui:623 msgid "" "\n" "It is recommended that all the certificates generated by a CA\n" "share the same properties.\n" "If you want to generate certificates with different properties, you\n" "should create a hierarchy of CAs, each one with its own policy for\n" "certificate generation.\n" "\n" "Please, define the maximum set of properties for the\n" "certificates that this CA will be able to generate:\n" msgstr "" #: gui/certificate_properties_dialog.ui:649 msgid "" "Maximum number of months before\n" "expiration of the new generated certificates:" msgstr "" #: gui/certificate_properties_dialog.ui:686 msgid "Hours between CRL updates:" msgstr "" #: gui/certificate_properties_dialog.ui:711 msgid "CRL distribution URL:" msgstr "" #: gui/certificate_properties_dialog.ui:727 msgid "CRL Properties" msgstr "" #: gui/certificate_properties_dialog.ui:750 msgid "Country" msgstr "" #: gui/certificate_properties_dialog.ui:761 msgid "State or Province name" msgstr "" #: gui/certificate_properties_dialog.ui:778 #: gui/certificate_properties_dialog.ui:802 #: gui/certificate_properties_dialog.ui:859 #: gui/certificate_properties_dialog.ui:883 #: gui/certificate_properties_dialog.ui:907 msgid "must be the same" msgstr "" #: gui/certificate_properties_dialog.ui:786 #: gui/certificate_properties_dialog.ui:810 #: gui/certificate_properties_dialog.ui:867 #: gui/certificate_properties_dialog.ui:891 #: gui/certificate_properties_dialog.ui:915 msgid "may differ" msgstr "" #: gui/certificate_properties_dialog.ui:820 msgid "City" msgstr "" #: gui/certificate_properties_dialog.ui:831 msgid "Organization" msgstr "" #: gui/certificate_properties_dialog.ui:842 msgid "Organizational unit" msgstr "" #: gui/certificate_properties_dialog.ui:927 msgid "Inherited fields from CA subject" msgstr "" #: gui/certificate_properties_dialog.ui:952 gui/new_cert_window.ui:464 #: src/tls.c:1463 msgid "Certification Authority" msgstr "" #: gui/certificate_properties_dialog.ui:963 gui/new_cert_window.ui:487 #: src/certificate_properties.c:445 src/tls.c:1470 msgid "Non repudiation" msgstr "" #: gui/certificate_properties_dialog.ui:974 gui/new_cert_window.ui:440 #: src/certificate_properties.c:447 src/tls.c:1472 msgid "Key encipherment" msgstr "" #: gui/certificate_properties_dialog.ui:986 gui/new_cert_window.ui:428 #: src/certificate_properties.c:449 src/tls.c:1474 msgid "Data encipherment" msgstr "" #: gui/certificate_properties_dialog.ui:998 gui/new_cert_window.ui:475 #: src/certificate_properties.c:451 src/tls.c:1476 msgid "Key agreement" msgstr "" #: gui/certificate_properties_dialog.ui:1010 gui/new_cert_window.ui:452 #: src/certificate_properties.c:443 src/tls.c:1468 msgid "Digital signature" msgstr "" #: gui/certificate_properties_dialog.ui:1022 gui/new_cert_window.ui:498 #: src/certificate_properties.c:455 src/tls.c:1480 msgid "CRL signing" msgstr "" #: gui/certificate_properties_dialog.ui:1043 msgid "Uses of new generated certificates" msgstr "" #: gui/certificate_properties_dialog.ui:1067 gui/new_cert_window.ui:621 #: src/certificate_properties.c:1480 src/tls.c:1500 msgid "Email protection" msgstr "" #: gui/certificate_properties_dialog.ui:1079 gui/new_cert_window.ui:610 #: src/certificate_properties.c:1479 src/tls.c:1498 msgid "Code signing" msgstr "" #: gui/certificate_properties_dialog.ui:1090 gui/new_cert_window.ui:598 msgid "TLS Web client" msgstr "" #: gui/certificate_properties_dialog.ui:1102 gui/new_cert_window.ui:586 msgid "TLS Web server" msgstr "" #: gui/certificate_properties_dialog.ui:1114 gui/new_cert_window.ui:575 #: src/certificate_properties.c:1481 src/tls.c:1502 msgid "Time stamping" msgstr "" #: gui/certificate_properties_dialog.ui:1125 gui/new_cert_window.ui:564 #: src/certificate_properties.c:1483 src/tls.c:1506 msgid "Any purpose" msgstr "" #: gui/certificate_properties_dialog.ui:1136 gui/new_cert_window.ui:553 #: src/certificate_properties.c:1482 src/tls.c:1504 msgid "OCSP signing" msgstr "" #: gui/certificate_properties_dialog.ui:1159 msgid "Purposes of new generated certificates" msgstr "" #: gui/certificate_properties_dialog.ui:1171 msgid "CA Policy" msgstr "" #: gui/certificate_properties_dialog.ui:1189 gui/csr_properties_dialog.ui:221 #: src/ca.c:2199 msgid "_Close" msgstr "" #: gui/change_password_dialog.ui:9 msgid "Database password protection - gnoMint" msgstr "" #: gui/change_password_dialog.ui:34 msgid "_Yes" msgstr "" #: gui/change_password_dialog.ui:43 msgid "_No" msgstr "" #: gui/change_password_dialog.ui:53 msgid "" "Enter new password again \n" "for confirmation:" msgstr "" #: gui/change_password_dialog.ui:86 msgid "" "Please, enter new \n" "password:" msgstr "" #: gui/change_password_dialog.ui:98 msgid "" "Please, enter current\n" "password:" msgstr "" #: gui/change_password_dialog.ui:121 msgid "" "Protect CA database private\n" "keys with password:" msgstr "" #: gui/change_password_dialog.ui:143 gui/export_certificate_dialog.ui:149 #: gui/get_db_password_dialog.ui:74 gui/get_pkey_dialog.ui:78 #: gui/import_file_or_directory_dialog.ui:94 gui/import_password_dialog.ui:90 #: gui/new_crl_dialog.ui:53 gui/san_editor_dialog.ui:93 msgid "Cancel" msgstr "" #: gui/change_password_dialog.ui:149 gui/get_db_password_dialog.ui:80 #: gui/get_pkey_dialog.ui:84 gui/import_password_dialog.ui:96 #: gui/new_crl_dialog.ui:59 gui/san_editor_dialog.ui:99 msgid "OK" msgstr "" #: gui/creation_process_window.ui:6 msgid "Creating new CA - gnoMint" msgstr "" #: gui/creation_process_window.ui:31 msgid "Creating CA Root Certificate" msgstr "" #: gui/creation_process_window.ui:51 gui/get_password_dialog.ui:90 #: gui/new_ca_window.ui:257 gui/new_ca_window.ui:464 gui/new_ca_window.ui:576 #: gui/new_cert_window.ui:257 gui/new_cert_window.ui:339 #: gui/new_cert_window.ui:661 gui/new_req_window.ui:107 #: gui/new_req_window.ui:357 gui/new_req_window.ui:548 gui/wizard_window.ui:117 msgid "_Cancel" msgstr "" #: gui/csr_popup_menu.ui:23 gui/main_window.ui:26 msgid "_Sign" msgstr "" #: gui/csr_popup_menu.ui:27 gui/main_window.ui:27 msgid "Delete" msgstr "" #: gui/csr_properties_dialog.ui:5 msgid "CSR properties - gnoMint" msgstr "" #: gui/csr_properties_dialog.ui:41 msgid "" "This Certificate Signing Request has its corresponding private key saved " "in the internal database." msgstr "" #: gui/csr_properties_dialog.ui:74 gui/new_cert_window.ui:230 #: src/csr_properties.c:86 src/new_cert.c:105 msgid "None" msgstr "" #: gui/csr_properties_dialog.ui:131 msgid "Subject Alternative Name (SAN)" msgstr "" #: gui/csr_properties_dialog.ui:164 msgid "CSR subject" msgstr "" #: gui/dh_parameters_dialog.ui:16 msgid "New Diffie-Hellman parameters - gnoMint" msgstr "" #: gui/dh_parameters_dialog.ui:27 msgid "" "You are about to create and export a set of\n" "Diffie·Hellman parameters into a PKCS#3 structure file." msgstr "" #: gui/dh_parameters_dialog.ui:38 msgid "" "PKCS#3 files containing Diffie·Hellman parameters are used by some " "cryptographic\n" "applications for a secure interchange of their keys over insecure channels." msgstr "" #: gui/dh_parameters_dialog.ui:48 msgid "Please, enter the prime size, in bits:" msgstr "" #: gui/dh_parameters_dialog.ui:71 msgid "Close" msgstr "" #: gui/dh_parameters_dialog.ui:77 msgid "Generate" msgstr "" #: gui/export_certificate_dialog.ui:5 msgid "Export certificate - gnoMint" msgstr "" #: gui/export_certificate_dialog.ui:22 msgid "" "Please, choose which part of the\n" "saved certificate you want to export:" msgstr "" #: gui/export_certificate_dialog.ui:36 msgid "Only the pu_blic part." msgstr "" #: gui/export_certificate_dialog.ui:49 msgid "Export only the certificate to a public file, in PEM format." msgstr "" #: gui/export_certificate_dialog.ui:60 msgid "Only the private key (crypted)." msgstr "" #: gui/export_certificate_dialog.ui:74 msgid "" "Export the saved private key to a PKCS#8 password-\n" "protected file. This file should only be accessed by the\n" "subject of the certificate." msgstr "" #: gui/export_certificate_dialog.ui:87 msgid "Only the private key (uncrypted)." msgstr "" #: gui/export_certificate_dialog.ui:100 msgid "" "Export the saved private key to a PEM file. This option\n" "should only be used for exporting certificates that will be\n" "used in unattended servers." msgstr "" #: gui/export_certificate_dialog.ui:113 msgid "Both parts." msgstr "" #: gui/export_certificate_dialog.ui:126 msgid "" "Export both (private and public) parts to a password-\n" "protected PKCS#12 file. This kind of file can be imported\n" "by other common programs, such as web or mail clients." msgstr "" #: gui/export_certificate_dialog.ui:155 msgid "Export" msgstr "" #: gui/get_db_password_dialog.ui:5 gui/get_password_dialog.ui:5 #: gui/import_password_dialog.ui:5 msgid "Enter password - gnoMint" msgstr "" #: gui/get_db_password_dialog.ui:20 msgid "" "This action requires using one or more private keys saved in the CA " "database.\n" "\n" "Please insert the database password." msgstr "" #: gui/get_db_password_dialog.ui:41 gui/get_password_dialog.ui:68 #: gui/import_password_dialog.ui:65 msgid "Password:" msgstr "" #: gui/get_db_password_dialog.ui:58 msgid "Remember this password during this gnoMint session" msgstr "" #: gui/get_password_dialog.ui:19 msgid "Please, enter password" msgstr "" #: gui/get_password_dialog.ui:56 msgid "Password (confirm):" msgstr "" #: gui/get_password_dialog.ui:97 gui/new_ca_window.ui:592 #: gui/new_cert_window.ui:676 gui/new_req_window.ui:564 #: gui/preferences_dialog.ui:51 msgid "_OK" msgstr "" #: gui/get_pkey_dialog.ui:9 msgid "Choose private key file. gnoMint" msgstr "" #: gui/get_pkey_dialog.ui:22 msgid "" "Choose private key file\n" "\n" "For doing the selected operation, you must provide the\n" "file where resides the private key corresponding to the\n" "certificate:" msgstr "" #: gui/get_pkey_dialog.ui:37 msgid "Certificate DN" msgstr "" #: gui/get_pkey_dialog.ui:43 msgid "Please, choose the file:" msgstr "" #: gui/get_pkey_dialog.ui:62 msgid "_Save filename in the database for automatic loading" msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:7 gui/main_window.ui:62 msgid "gnoMint" msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:8 msgid "X.509 Certification Authority management tool" msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:11 msgid "" "gnoMint is a tool for easily creating and managing certification authorities " "(CAs). It provides fancy visualization of all your certificates, and their " "properties, as well as an easy management of the CA activities." msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:16 msgid "With gnoMint you can:" msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:20 msgid "Create and manage your own Certification Authority (CA)" msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:21 msgid "Create and sign certificates for servers and users" msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:22 msgid "Create and manage Certificate Signing Requests (CSRs)" msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:23 msgid "" "Export certificates and private keys in several formats (PEM, DER, PKCS#12)" msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:24 msgid "Revoke certificates and generate Certificate Revocation Lists (CRLs)" msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:25 msgid "Import existing certificates and CAs" msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:27 msgid "" "gnoMint provides a simple and intuitive graphical interface based on GTK for " "all these operations, making certificate management accessible even for " "users without deep knowledge of X.509 standards and cryptography." msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:38 msgid "Main window showing certificate list" msgstr "" #: gui/org.gnome.gnomint.desktop.in:2 gui/org.gnome.gnomint.desktop.in:3 msgid "gnoMint X.509 CA Manager" msgstr "" #: gui/org.gnome.gnomint.desktop.in:4 msgid "Manage X.509 certificates and CAs, easily and graphically" msgstr "" #: gui/org.gnome.gnomint.desktop.in:5 msgid "certificate;x.509;encryption;" msgstr "" #: gui/import_file_or_directory_dialog.ui:9 msgid "Import selection - gnoMint" msgstr "" #: gui/import_file_or_directory_dialog.ui:24 msgid "" "Please, choose the more suitable option for\n" "what you want to import:" msgstr "" #: gui/import_file_or_directory_dialog.ui:36 msgid "Import a single file." msgstr "" #: gui/import_file_or_directory_dialog.ui:48 msgid "" "Import a single file, encoded in DER or PEM format, containing\n" "certificates, private keys (encrypted or plain), signing\n" "requests (CSRs), revocation lists (CRLs) or PKCS#12\n" "packages." msgstr "" #: gui/import_file_or_directory_dialog.ui:60 msgid "Import a whole directory." msgstr "" #: gui/import_file_or_directory_dialog.ui:72 msgid "" "Import a directory containing the structure of\n" "a whole CA made with OpenSSL ." msgstr "" #: gui/import_file_or_directory_dialog.ui:100 msgid "Import" msgstr "" #: gui/import_password_dialog.ui:20 msgid "" "The whole selected file, or some of its elements, seems to\n" "be cyphered using a password or passphrase.\n" "\n" "For importing the file into gnoMint database, you must\n" "provide an appropiate password." msgstr "" #: gui/import_password_dialog.ui:37 msgid "" "The part that is being imported has the description:" msgstr "" #: gui/import_password_dialog.ui:48 msgid "#Description#" msgstr "" #: gui/main_window.ui:6 msgid "_Certificates" msgstr "" #: gui/main_window.ui:8 msgid "_New certificate database" msgstr "" #: gui/main_window.ui:9 msgid "_Open certificate database" msgstr "" #: gui/main_window.ui:10 msgid "Open _recents" msgstr "" #: gui/main_window.ui:11 msgid "_Save certificate database as..." msgstr "" #: gui/main_window.ui:15 msgid "Add" msgstr "" #: gui/main_window.ui:17 msgid "_Add self-signed CA" msgstr "" #: gui/main_window.ui:18 msgid "Add _Certificate Request" msgstr "" #: gui/main_window.ui:29 msgid "Generate _CRL" msgstr "" #: gui/main_window.ui:30 msgid "Generate D_H parameters..." msgstr "" #: gui/main_window.ui:31 msgid "Change database pass_word" msgstr "" #: gui/main_window.ui:33 msgid "_Import" msgstr "" #: gui/main_window.ui:38 msgid "Revoke _all selected..." msgstr "" #: gui/main_window.ui:39 msgid "Delete all selected _CSRs..." msgstr "" #: gui/main_window.ui:41 msgid "_Quit" msgstr "" #: gui/main_window.ui:44 gui/san_manager_widget.ui:34 msgid "_Edit" msgstr "" #: gui/main_window.ui:46 msgid "Preferences" msgstr "" #: gui/main_window.ui:49 msgid "_View" msgstr "" #: gui/main_window.ui:51 msgid "Certificate _Signing Requests" msgstr "" #: gui/main_window.ui:52 msgid "_Revoked Certificates" msgstr "" #: gui/main_window.ui:53 msgid "E_xpired Certificates" msgstr "" #: gui/main_window.ui:57 gui/new_ca_window.ui:249 gui/new_ca_window.ui:456 #: gui/new_ca_window.ui:568 gui/new_cert_window.ui:249 #: gui/new_cert_window.ui:331 gui/new_cert_window.ui:653 #: gui/new_req_window.ui:99 gui/new_req_window.ui:349 gui/new_req_window.ui:540 msgid "_Help" msgstr "" #: gui/main_window.ui:58 msgid "About" msgstr "" #: gui/main_window.ui:80 msgid "Create a new database" msgstr "" #: gui/main_window.ui:87 msgid "Open an existing database" msgstr "" #: gui/main_window.ui:99 msgid "Add an autosigned CA" msgstr "" #: gui/main_window.ui:100 msgid "Add autosigned CA certificate" msgstr "" #: gui/main_window.ui:111 msgid "Add a new Certificate Signing Request" msgstr "" #: gui/main_window.ui:112 msgid "Add CSR" msgstr "" #: gui/main_window.ui:129 msgid "Extract the private key of the selected item into a external file" msgstr "" #: gui/main_window.ui:130 msgid "Extract Private Key" msgstr "" #: gui/main_window.ui:142 msgid "Revoke the selected certificate" msgstr "" #: gui/main_window.ui:143 msgid "Revoke" msgstr "" #: gui/main_window.ui:151 msgid "Sign the selected Certificate Signing Request" msgstr "" #: gui/main_window.ui:152 msgid "Sign" msgstr "" #: gui/main_window.ui:164 msgid "Delete the selected Certificate Signing Request" msgstr "" #: gui/main_window.ui:176 msgid "Quick certificate generation for web server" msgstr "" #: gui/main_window.ui:177 msgid "Web Server Wizard" msgstr "" #: gui/main_window.ui:188 msgid "Quick certificate generation for email server" msgstr "" #: gui/main_window.ui:189 msgid "Email Server Wizard" msgstr "" #: gui/main_window.ui:225 msgid "_Show them" msgstr "" #: gui/main_window.ui:243 msgid "Filter certificates by subject or serial..." msgstr "" #: gui/new_ca_window.ui:20 msgid "New CA - gnoMint" msgstr "" #: gui/new_ca_window.ui:46 msgid "CA Subject Properties\n" msgstr "" #: gui/new_ca_window.ui:72 gui/new_cert_window.ui:130 gui/new_req_window.ui:303 msgid "Organization:" msgstr "" #: gui/new_ca_window.ui:83 gui/new_cert_window.ui:141 gui/new_req_window.ui:292 msgid "Organization Unit:" msgstr "" #: gui/new_ca_window.ui:94 gui/new_cert_window.ui:152 gui/new_req_window.ui:281 msgid "Country:" msgstr "" #: gui/new_ca_window.ui:106 gui/new_cert_window.ui:163 #: gui/new_req_window.ui:270 msgid "State or Province name: " msgstr "" #: gui/new_ca_window.ui:117 gui/new_cert_window.ui:174 #: gui/new_req_window.ui:259 msgid "City: " msgstr "" #: gui/new_ca_window.ui:164 msgid "" "CA Root Certificate \n" "Common Name (CN):" msgstr "" #: gui/new_ca_window.ui:185 gui/new_cert_window.ui:219 #: gui/new_req_window.ui:203 msgid "Email address:" msgstr "" #: gui/new_ca_window.ui:227 gui/new_req_window.ui:326 msgid "Subject Alternative Names (SAN)" msgstr "" #: gui/new_ca_window.ui:265 gui/new_ca_window.ui:480 gui/new_req_window.ui:115 #: gui/new_req_window.ui:373 msgid "_Next" msgstr "" #: gui/new_ca_window.ui:277 gui/new_cert_window.ui:276 #: gui/new_req_window.ui:127 msgid "CA properties" msgstr "" #: gui/new_ca_window.ui:296 msgid "CA Root certificate properties\n" msgstr "" #: gui/new_ca_window.ui:337 msgid "Months before root certificate expiration:" msgstr "" #: gui/new_ca_window.ui:370 gui/new_req_window.ui:453 msgid "P-256 (256 bits)" msgstr "" #: gui/new_ca_window.ui:371 gui/new_req_window.ui:454 msgid "P-384 (384 bits)" msgstr "" #: gui/new_ca_window.ui:372 gui/new_req_window.ui:455 msgid "P-521 (521 bits)" msgstr "" #: gui/new_ca_window.ui:391 gui/new_req_window.ui:474 msgid "RSA" msgstr "" #: gui/new_ca_window.ui:400 gui/new_req_window.ui:484 msgid "DSA" msgstr "" #: gui/new_ca_window.ui:409 gui/new_req_window.ui:493 msgid "ECDSA" msgstr "" #: gui/new_ca_window.ui:418 gui/new_req_window.ui:502 msgid "Ed25519" msgstr "" #: gui/new_ca_window.ui:428 gui/new_req_window.ui:512 src/new_ca_window.c:170 #: src/new_ca_window.c:180 src/new_req_window.c:201 src/new_req_window.c:211 msgid "Private key bit length:" msgstr "" #: gui/new_ca_window.ui:439 gui/new_req_window.ui:523 msgid "Private key type:" msgstr "" #: gui/new_ca_window.ui:472 gui/new_ca_window.ui:584 gui/new_req_window.ui:365 #: gui/new_req_window.ui:556 msgid "_Previous" msgstr "" #: gui/new_ca_window.ui:492 gui/new_req_window.ui:385 msgid "Root certificate prop" msgstr "" #: gui/new_ca_window.ui:511 msgid "CA properties\n" msgstr "" #: gui/new_ca_window.ui:535 msgid "CRL Distribution Point:" msgstr "" #: gui/new_ca_window.ui:542 msgid "" "Please, in this field enter an URL where the CRL for this CA will be " "available. \n" "You can leave it blank. In this case, no CRL Distribution Point will be set " "in the CA \n" "Certificate, and you will be able to set it as a new CA property. \n" "This value will be copied into the certificates generated by this CA.\n" "" msgstr "" #: gui/new_ca_window.ui:604 msgid "Password protect" msgstr "" #: gui/new_cert_window.ui:13 msgid "New Certificate - gnoMint" msgstr "" #: gui/new_cert_window.ui:36 gui/new_cert_window.ui:293 #: gui/new_cert_window.ui:382 msgid "New Certificate Properties\n" msgstr "" #: gui/new_cert_window.ui:45 msgid "" "You are about to sign a Certificate Signing Request,\n" "and this way, creating a new certificate. Please\n" "check the certificate properties." msgstr "" #: gui/new_cert_window.ui:64 gui/new_cert_window.ui:75 #: gui/new_cert_window.ui:86 gui/new_cert_window.ui:97 #: gui/new_cert_window.ui:108 gui/new_cert_window.ui:119 msgid "label" msgstr "" #: gui/new_cert_window.ui:185 msgid "" "New certificate \n" "Common Name (CN):" msgstr "" #: gui/new_cert_window.ui:197 msgid "Subject Alternative Names:" msgstr "" #: gui/new_cert_window.ui:302 msgid "" "You are about to sign a Certificate Signing Request.\n" "Please, choose the Certification Authority you are\n" "going to use for signing it." msgstr "" #: gui/new_cert_window.ui:366 msgid "Choose CA for signing the CSR" msgstr "" #: gui/new_cert_window.ui:397 msgid "Months before certificate expiration:" msgstr "" #: gui/new_cert_window.ui:519 msgid "Certificate uses" msgstr "" #: gui/new_cert_window.ui:635 msgid "Certificate purposes" msgstr "" #: gui/new_cert_window.ui:688 msgid "Certificate properties" msgstr "" #: gui/new_crl_dialog.ui:5 msgid "New CRL - gnoMint" msgstr "" #: gui/new_crl_dialog.ui:17 msgid "New Certificate Revocation List" msgstr "" #: gui/new_crl_dialog.ui:26 msgid "" "Please, select the CA for which a Certificate \n" "Revocation List is going to be created:" msgstr "" #: gui/new_req_window.ui:12 msgid "New certificate request - gnoMint" msgstr "" #: gui/new_req_window.ui:36 gui/new_req_window.ui:147 gui/new_req_window.ui:403 msgid "Certificate Request Properties\n" msgstr "" #: gui/new_req_window.ui:55 msgid "" "The subject of the new certificate request can inherit information\n" "from one of the existing Certification Authorities. This is a must if the\n" "policy of the CA you are going to use is defined to force some fields\n" "of a certificate subject to be the same as the ones in the CA cert\n" "subject." msgstr "" #: gui/new_req_window.ui:67 msgid "Don't inherit any fields from existing Certification Authorities" msgstr "" #: gui/new_req_window.ui:74 msgid "" "Inherit fields according to selected Certification Authority and its policy." msgstr "" #: gui/new_req_window.ui:191 msgid "" "Certificate\n" " Common Name (CN):" msgstr "" #: gui/new_req_window.ui:576 msgid "page 3" msgstr "" #: gui/preferences_dialog.ui:9 msgid "General Preferences - gnoMint" msgstr "" #: gui/preferences_dialog.ui:26 msgid "" "Automatically export created certificates to\n" "Gnome-keyring certificate store" msgstr "" #: gui/preferences_dialog.ui:36 msgid "Export options" msgstr "" #: gui/san_editor_dialog.ui:5 src/certificate_properties.c:1488 msgid "Subject Alternative Name" msgstr "" #: gui/san_editor_dialog.ui:23 msgid "Type:" msgstr "" #: gui/san_editor_dialog.ui:35 msgid "DNS" msgstr "" #: gui/san_editor_dialog.ui:36 src/certificate_properties.c:900 #: src/certificate_properties.c:914 src/certificate_properties.c:1040 msgid "IP Address" msgstr "" #: gui/san_editor_dialog.ui:37 msgid "Email" msgstr "" #: gui/san_editor_dialog.ui:38 src/certificate_properties.c:889 #: src/certificate_properties.c:1032 msgid "URI" msgstr "" #: gui/san_editor_dialog.ui:51 msgid "Value:" msgstr "" #: gui/san_editor_dialog.ui:74 msgid "" "Examples:\n" "DNS: example.com, *.example.com\n" "IP: 192.168.1.1, 2001:db8::1\n" "EMAIL: admin@example.com\n" "URI: https://example.com" msgstr "" #: gui/san_manager_widget.ui:26 msgid "_Add" msgstr "" #: gui/san_manager_widget.ui:43 msgid "_Remove" msgstr "" #: gui/wizard_window.ui:9 msgid "Certificate Wizard" msgstr "" #: gui/wizard_window.ui:28 msgid "Quick Certificate Generation" msgstr "" #: gui/wizard_window.ui:35 msgid "" "This wizard will create a certificate for your server with default " "settings.\n" "Enter the server name (e.g., my.server.dns.name) and select the CA to sign " "it." msgstr "" #: gui/wizard_window.ui:48 msgid "Server Name:" msgstr "" #: gui/wizard_window.ui:59 msgid "Enter the server DNS name (e.g., my.server.dns.name)" msgstr "" #: gui/wizard_window.ui:69 msgid "Signing CA:" msgstr "" #: gui/wizard_window.ui:88 msgid "Certificate Type:" msgstr "" #: gui/wizard_window.ui:124 msgid "_Generate Certificate" msgstr "" #: gui/wizard_window.ui:140 msgid "Web Server (TLS)" msgstr "" #: gui/wizard_window.ui:141 msgid "Email Server (TLS)" msgstr "" #: src/ca.c:192 #, c-format msgid "Bulk revoke completed with errors. First error: %s" msgstr "" #: src/ca.c:199 #, c-format msgid "%d certificate revoked." msgid_plural "%d certificates revoked." msgstr[0] "" msgstr[1] "" #: src/ca.c:225 #, c-format msgid "Bulk delete completed with errors. First error: %s" msgstr "" #: src/ca.c:240 msgid "" "Certificate renewed. A new certificate with a fresh keypair has been added " "to the database alongside the original." msgstr "" #: src/ca.c:606 src/ca-cli-callbacks.c:167 src/ca-cli-callbacks.c:221 #: src/ca-cli-callbacks.c:733 src/ca-cli-callbacks.c:737 #: src/ca-cli-callbacks.c:1362 src/ca-cli-callbacks.c:1369 #: src/certificate_properties.c:246 src/certificate_properties.c:252 msgid "%m/%d/%Y %H:%M GMT" msgstr "" #: src/ca.c:806 src/ca.c:1927 src/ca.c:1958 src/ca.c:2093 src/ca.c:2322 #: src/ca.c:2350 msgid "Yes" msgstr "" #: src/ca.c:930 src/certificate_properties.c:653 msgid "Subject" msgstr "" #: src/ca.c:965 src/cert_diff.c:122 msgid "Serial" msgstr "" #: src/ca.c:978 src/cert_diff.c:123 msgid "Activation" msgstr "" #: src/ca.c:991 src/cert_diff.c:124 msgid "Expiration" msgstr "" #: src/ca.c:1004 msgid "Revocation" msgstr "" #: src/ca.c:1047 #, c-format msgid "" "Showing only the %d certificate expiring in the next %d days. Close " "this banner to show everything again." msgid_plural "" "Showing only the %d certificates expiring in the next %d days. Close " "this banner to show everything again." msgstr[0] "" msgstr[1] "" #: src/ca.c:1058 #, c-format msgid "" "%d certificate expires in the next %d days. Right-click it to renew " "with a fresh key." msgid_plural "" "%d certificates expire in the next %d days. Right-click each one to " "renew with a fresh key." msgstr[0] "" msgstr[1] "" #: src/ca.c:1369 src/ca.c:1404 src/ca.c:1416 src/export.c:560 src/export.c:639 msgid "There was an error while exporting certificate." msgstr "" #: src/ca.c:1371 src/ca.c:1406 src/ca.c:1418 msgid "There was an error while exporting CSR." msgstr "" #: src/ca.c:1426 src/ca.c:1590 msgid "Certificate exported successfully" msgstr "" #: src/ca.c:1427 msgid "Certificate signing request exported successfully" msgstr "" #: src/ca.c:1445 msgid "Export certificate" msgstr "" #: src/ca.c:1447 msgid "Export certificate signing request" msgstr "" #: src/ca.c:1461 src/ca.c:1523 src/ca.c:1981 msgid "Private key exported successfully" msgstr "" #: src/ca.c:1509 src/ca.c:2057 msgid "Export crypted private key" msgstr "" #: src/ca.c:1568 msgid "Export unencrypted private key" msgstr "" #: src/ca.c:1633 msgid "Export whole certificate in PKCS#12 package" msgstr "" #: src/ca.c:1676 msgid "Unexpected error" msgstr "" #: src/ca.c:1712 msgid "Export CSR - gnoMint" msgstr "" #: src/ca.c:1717 msgid "" "Please, choose which part of the saved Certificate Signing Request you want " "to export:" msgstr "" #: src/ca.c:1722 msgid "" "Export the Certificate Signing Request to a public file, in PEM format." msgstr "" #: src/ca.c:1727 msgid "" "Export the saved private key to a PKCS#8 password-protected file. This " "file should only be accessed by the subject of the Certificate Signing " "Request." msgstr "" #: src/ca.c:1774 msgid "Could not build certificate chain." msgstr "" #: src/ca.c:1781 #, c-format msgid "Failed to write chain: %s" msgstr "" #: src/ca.c:1786 msgid "Certificate chain exported successfully." msgstr "" #: src/ca.c:1807 msgid "Please select a certificate to export its chain." msgstr "" #: src/ca.c:1831 msgid "Export certificate chain" msgstr "" #: src/ca.c:1911 msgid "Please select one or more certificates to revoke." msgstr "" #: src/ca.c:1916 #, c-format msgid "Are you sure you want to revoke %d certificate?" msgid_plural "Are you sure you want to revoke %d certificates?" msgstr[0] "" msgstr[1] "" #: src/ca.c:1920 msgid "" "Revoking a certificate will include it in the next CRL, marking it as " "invalid. CSRs in the selection (if any) are not affected; use \"Delete " "selected CSRs\" for those." msgstr "" #: src/ca.c:1927 src/ca.c:1958 src/ca.c:2093 src/ca.c:2322 src/ca.c:2350 msgid "No" msgstr "" #: src/ca.c:1948 msgid "Please select one or more CSRs to delete." msgstr "" #: src/ca.c:1953 #, c-format msgid "Are you sure you want to delete %d Certificate Signing Request?" msgid_plural "Are you sure you want to delete %d Certificate Signing Requests?" msgstr[0] "" msgstr[1] "" #: src/ca.c:2076 src/ca-cli-callbacks.c:1934 msgid "" "CA certificates cannot be renewed. A renewed CA would have a different key, " "so certificates previously signed by the old CA would no longer chain to it." msgstr "" #: src/ca.c:2087 msgid "" "Renew this certificate?\n" "\n" "gnoMint will issue a new certificate with the same subject and SAN as the " "selected one, signed by the same CA, with a freshly-generated keypair. The " "old certificate will remain in the database — revoke it manually after you " "have deployed the new one." msgstr "" #: src/ca.c:2118 #, c-format msgid "Certificate diff — %d difference" msgid_plural "Certificate diff — %d differences" msgstr[0] "" msgstr[1] "" #: src/ca.c:2147 msgid "Left" msgstr "" #: src/ca.c:2151 msgid "Right" msgstr "" #: src/ca.c:2241 src/ca-cli-callbacks.c:2141 msgid "Cannot read file." msgstr "" #: src/ca.c:2252 msgid "Selected" msgstr "" #: src/ca.c:2278 msgid "Cannot read PEM of the selected certificate." msgstr "" #: src/ca.c:2290 msgid "Compare with PEM file…" msgstr "" #: src/ca.c:2312 msgid "Are you sure you want to revoke this certificate?" msgstr "" #: src/ca.c:2313 msgid "" "Revoking a certificate will include it in the next CRL, marking it as " "invalid. This way, any future use of the certificate will be denied (as long " "as the CRL is checked)." msgstr "" #: src/ca.c:2316 msgid "Are you sure you want to revoke this CA certificate?" msgstr "" #: src/ca.c:2317 msgid "" "Revoking a certificate will include it in the next CRL, marking it as " "invalid. This way, any future use of the certificate will be denied (as long " "as the CRL is checked). \n" "\n" "Moreover, revoking a CA certificate can invalidate all the certificates " "generated with it, so all them should be regenerated with a new CA " "certificate." msgstr "" #: src/ca.c:2349 msgid "Are you sure you want to delete this Certificate Signing Request?" msgstr "" #: src/ca.c:2572 msgid "" "The current password you have entered doesn't match with the actual current " "database password." msgstr "" #: src/ca.c:2588 msgid "Error while changing database password. The operation was cancelled." msgstr "" #: src/ca.c:2593 msgid "Password changed successfully" msgstr "" #: src/ca.c:2601 src/ca-cli-callbacks.c:1186 msgid "" "Error while establishing database password. The operation was cancelled." msgstr "" #: src/ca.c:2606 msgid "Password established successfully" msgstr "" #: src/ca.c:2616 msgid "Error while removing database password. The operation was cancelled." msgstr "" #: src/ca.c:2621 msgid "Password removed successfully" msgstr "" #: src/ca.c:2708 msgid "Change CA password - gnoMint" msgstr "" #: src/ca.c:2840 msgid "Diffie-Hellman parameters saved successfully" msgstr "" #: src/ca.c:2872 msgid "Save Diffie-Hellman parameters" msgstr "" #: src/ca.c:2951 #, c-format msgid "Problem when importing '%s' file" msgstr "" #: src/ca.c:3012 msgid "Select PEM file to import" msgstr "" #: src/ca.c:3018 msgid "Select directory to import" msgstr "" #: src/cert_diff.c:70 msgid "Cannot parse left certificate" msgstr "" #: src/cert_diff.c:72 msgid "Cannot parse right certificate" msgstr "" #: src/cert_diff.c:113 msgid "Subject CN" msgstr "" #: src/cert_diff.c:114 msgid "Subject O" msgstr "" #: src/cert_diff.c:115 msgid "Subject OU" msgstr "" #: src/cert_diff.c:116 msgid "Subject Country" msgstr "" #: src/cert_diff.c:117 msgid "Subject State" msgstr "" #: src/cert_diff.c:118 msgid "Subject Locality" msgstr "" #: src/cert_diff.c:119 msgid "Subject email" msgstr "" #: src/cert_diff.c:120 msgid "Subject DN" msgstr "" #: src/cert_diff.c:121 msgid "Issuer DN" msgstr "" #: src/cert_diff.c:125 msgid "SAN" msgstr "" #: src/cert_diff.c:126 msgid "Key usage / EKU" msgstr "" #: src/cert_diff.c:127 msgid "Subject Key ID" msgstr "" #: src/cert_diff.c:128 msgid "Authority Key ID" msgstr "" #: src/cert_diff.c:129 msgid "CRL distribution" msgstr "" #: src/cert_diff.c:130 msgid "SHA-1 fingerprint" msgstr "" #: src/cert_diff.c:131 msgid "SHA-256 fingerprint" msgstr "" #: src/cert_renewal.c:111 msgid "Cannot parse generated CSR." msgstr "" #: src/cert_renewal.c:125 msgid "Cannot encrypt new private key." msgstr "" #: src/cert_renewal.c:181 src/cert_renewal.c:341 msgid "Cannot read certificate PEM from database." msgstr "" #: src/cert_renewal.c:186 src/cert_renewal.c:347 msgid "Cannot parse certificate." msgstr "" #: src/cert_renewal.c:193 src/cert_renewal.c:354 #, c-format msgid "Cannot find issuer CA in this database (issuer DN: %s)." msgstr "" #: src/cert_renewal.c:204 src/cert_renewal.c:315 msgid "Cannot load parent CA material from database." msgstr "" #: src/cert_renewal.c:212 src/cert_renewal.c:221 src/cert_renewal.c:265 #: src/cert_renewal.c:280 msgid "Cannot decrypt parent CA's private key." msgstr "" #: src/ca-cli.c:42 msgid "newdb " msgstr "" #: src/ca-cli.c:42 msgid "Close current file and create a new database with given filename" msgstr "" #: src/ca-cli.c:43 msgid "opendb " msgstr "" #: src/ca-cli.c:43 msgid "Close current file and open the file with given filename" msgstr "" #: src/ca-cli.c:44 msgid "savedbas " msgstr "" #: src/ca-cli.c:44 msgid "Save the current file with a different filename" msgstr "" #: src/ca-cli.c:45 msgid "Get current status (opened file, no. of certificates, etc...)" msgstr "" #: src/ca-cli.c:46 msgid "" "List the certificates in database. With option --see-revoked, lists also the " "revoked ones" msgstr "" #: src/ca-cli.c:48 msgid "List the CSRs in database" msgstr "" #: src/ca-cli.c:49 msgid "addcsr [ca-id-for-inherit-fields]" msgstr "" #: src/ca-cli.c:49 msgid "Start a new CSR creation process" msgstr "" #: src/ca-cli.c:50 msgid "Start a new self-signed CA creation process" msgstr "" #: src/ca-cli.c:51 msgid "extractcertpkey " msgstr "" #: src/ca-cli.c:51 msgid "" "Extract the private key of the certificate with the given internal id and " "saves it into the given file" msgstr "" #: src/ca-cli.c:54 msgid "extractcsrpkey " msgstr "" #: src/ca-cli.c:54 msgid "" "Extract the private key of the CSR with the given internal id and saves it " "into the given file" msgstr "" #: src/ca-cli.c:57 msgid "revoke " msgstr "" #: src/ca-cli.c:57 msgid "Revoke the certificate with the given internal ID" msgstr "" #: src/ca-cli.c:58 msgid "sign " msgstr "" #: src/ca-cli.c:58 msgid "Generate a certificate signing the given CSR with the given CA" msgstr "" #: src/ca-cli.c:59 msgid "delete " msgstr "" #: src/ca-cli.c:59 msgid "Delete the given CSR from the database" msgstr "" #: src/ca-cli.c:60 msgid "crlgen " msgstr "" #: src/ca-cli.c:60 msgid "Generate a new CRL for the given CA, saving it into the file " msgstr "" #: src/ca-cli.c:61 msgid "dhgen " msgstr "" #: src/ca-cli.c:61 msgid "Generate a new DH-parameter set, saving it into the file " msgstr "" #: src/ca-cli.c:62 msgid "Change password for the current database" msgstr "" #: src/ca-cli.c:63 msgid "importfile " msgstr "" #: src/ca-cli.c:63 msgid "Import the file with the given name " msgstr "" #: src/ca-cli.c:64 msgid "importdir " msgstr "" #: src/ca-cli.c:64 msgid "Import the given directory, as a OpenSSL-CA directory" msgstr "" #: src/ca-cli.c:65 msgid "showcert " msgstr "" #: src/ca-cli.c:65 msgid "Show properties of the given certificate" msgstr "" #: src/ca-cli.c:66 msgid "showcsr " msgstr "" #: src/ca-cli.c:66 msgid "Show properties of the given CSR" msgstr "" #: src/ca-cli.c:67 msgid "showpolicy " msgstr "" #: src/ca-cli.c:67 msgid "Show CA policy" msgstr "" #: src/ca-cli.c:68 msgid "setpolicy " msgstr "" #: src/ca-cli.c:68 msgid "Change the given CA policy" msgstr "" #: src/ca-cli.c:69 msgid "Show program preferences" msgstr "" #: src/ca-cli.c:70 msgid "setpreference " msgstr "" #: src/ca-cli.c:70 msgid "Set the given program preference" msgstr "" #: src/ca-cli.c:71 msgid "addservercert " msgstr "" #: src/ca-cli.c:71 msgid "Quick server certificate generation (cert-type: 'web' or 'email')" msgstr "" #: src/ca-cli.c:72 msgid "renewcert " msgstr "" #: src/ca-cli.c:72 msgid "" "Reissue a non-CA certificate with the same subject + SAN and a fresh " "keypair. The old certificate remains in the database. CA certificates cannot " "be renewed." msgstr "" #: src/ca-cli.c:73 msgid "exportchain " msgstr "" #: src/ca-cli.c:73 msgid "" "Export the full certificate chain (leaf → root) for the given certificate as " "a PEM bundle." msgstr "" #: src/ca-cli.c:74 msgid "revokemany [cert-id ...]" msgstr "" #: src/ca-cli.c:74 msgid "Revoke many certificates at once. Non-cert ids are silently skipped." msgstr "" #: src/ca-cli.c:75 msgid "deletemany [csr-id ...]" msgstr "" #: src/ca-cli.c:75 msgid "Delete many CSRs at once. Non-CSR ids are silently skipped." msgstr "" #: src/ca-cli.c:76 msgid "search " msgstr "" #: src/ca-cli.c:76 msgid "" "List certificates and CSRs whose subject or serial contains (case-" "insensitive)." msgstr "" #: src/ca-cli.c:77 msgid "diff " msgstr "" #: src/ca-cli.c:77 msgid "" "Side-by-side diff of two certificates. Each argument is either a numeric DB " "id or a path to a PEM file." msgstr "" #: src/ca-cli.c:78 msgid "Show about message" msgstr "" #: src/ca-cli.c:79 msgid "Show warranty information" msgstr "" #: src/ca-cli.c:80 msgid "Show distribution information" msgstr "" #: src/ca-cli.c:81 msgid "Show version information" msgstr "" #: src/ca-cli.c:82 msgid "Show (this) help message" msgstr "" #: src/ca-cli.c:83 src/ca-cli.c:84 src/ca-cli.c:85 msgid "Close database and exit program" msgstr "" #: src/ca-cli.c:132 #, c-format msgid "Opening database %s..." msgstr "" #: src/ca-cli.c:136 #, c-format msgid " OK.\n" msgstr "" #: src/ca-cli.c:138 #, c-format msgid " Error.\n" msgstr "" #: src/ca-cli.c:153 #, c-format msgid "" "Notice: %d certificate expires within the next %d days. Use `renewcert ` " "to reissue.\n" msgid_plural "" "Notice: %d certificates expire within the next %d days. Use `renewcert ` " "to reissue.\n" msgstr[0] "" msgstr[1] "" #: src/ca-cli.c:187 #, c-format msgid "" "\n" "\n" "%s version %s \"%s\"\n" "%s\n" "\n" msgstr "" #: src/ca-cli.c:188 #, c-format msgid "" "This program comes with ABSOLUTELY NO WARRANTY;\n" "for details type 'warranty'.\n" msgstr "" #: src/ca-cli.c:189 #, c-format msgid "" "This is free software, and you are welcome to redistribute it\n" "under certain conditions; type 'distribution' for details.\n" "\n" msgstr "" #: src/ca-cli.c:231 #, c-format msgid "Unpaired quotes\n" msgstr "" #: src/ca-cli.c:309 #, c-format msgid "" "Invalid command. Try 'help' for getting a list of recognized commands.\n" msgstr "" #: src/ca-cli.c:313 #, c-format msgid "Incorrect number of parameters.\n" msgstr "" #: src/ca-cli.c:314 #, c-format msgid "Syntax: %s\n" msgstr "" #: src/ca-cli-callbacks.c:62 src/ca-cli-callbacks.c:111 msgid "The file already exists, so it will be overwritten." msgstr "" #: src/ca-cli-callbacks.c:62 src/ca-cli-callbacks.c:111 #: src/ca-cli-callbacks.c:824 msgid "Are you sure? Yes/[No] " msgstr "" #: src/ca-cli-callbacks.c:84 #, c-format msgid "Problem when opening new '%s' CA database\n" msgstr "" #: src/ca-cli-callbacks.c:88 #, c-format msgid "File '%s' opened\n" msgstr "" #: src/ca-cli-callbacks.c:98 #, c-format msgid "Problem when opening '%s' CA database\n" msgstr "" #: src/ca-cli-callbacks.c:132 #, c-format msgid "Current opened file: %s\n" msgstr "" #: src/ca-cli-callbacks.c:133 #, c-format msgid "Number of certificates in file: %d\n" msgstr "" #: src/ca-cli-callbacks.c:134 #, c-format msgid "Number of CSRs in file: %d\n" msgstr "" #: src/ca-cli-callbacks.c:169 msgid " (after 2038?)" msgstr "" #: src/ca-cli-callbacks.c:239 #, c-format msgid "Certificates in Database:\n" msgstr "" #: src/ca-cli-callbacks.c:240 #, c-format msgid "Id.\tIs CA?\tCertificate Subject\tKey in DB?\tActivation\t\tExpiration" msgstr "" #: src/ca-cli-callbacks.c:243 #, c-format msgid "\t\tRevocation\n" msgstr "" #: src/ca-cli-callbacks.c:278 #, c-format msgid "Certificate Requests in Database:\n" msgstr "" #: src/ca-cli-callbacks.c:279 #, c-format msgid "Id.\tParent Id.\tCSR Subject\t\tKey in DB?\n" msgstr "" #: src/ca-cli-callbacks.c:309 src/ca-cli-callbacks.c:1129 #: src/ca-cli-callbacks.c:1522 src/ca-cli-callbacks.c:1551 msgid "The given CA id. is not valid" msgstr "" #: src/ca-cli-callbacks.c:362 #, c-format msgid "" "Please enter data corresponding to subject of the Certificate Signing " "Request:\n" msgstr "" #: src/ca-cli-callbacks.c:365 src/ca-cli-callbacks.c:567 msgid "Enter country (C)" msgstr "" #: src/ca-cli-callbacks.c:373 src/ca-cli-callbacks.c:573 msgid "Enter state or province (ST)" msgstr "" #: src/ca-cli-callbacks.c:382 src/ca-cli-callbacks.c:579 msgid "Enter locality or city (L)" msgstr "" #: src/ca-cli-callbacks.c:390 src/ca-cli-callbacks.c:585 msgid "Enter organization (O)" msgstr "" #: src/ca-cli-callbacks.c:398 src/ca-cli-callbacks.c:591 msgid "Enter organizational unit (OU)" msgstr "" #: src/ca-cli-callbacks.c:405 src/ca-cli-callbacks.c:597 msgid "Enter common name (CN)" msgstr "" #: src/ca-cli-callbacks.c:411 src/ca-cli-callbacks.c:603 msgid "Enter email address (leave blank for none)" msgstr "" #: src/ca-cli-callbacks.c:422 src/ca-cli-callbacks.c:614 msgid "" "Enter Subject Alternative Names (SAN) [format: " "DNS:example.com,IP:192.168.1.1]" msgstr "" #: src/ca-cli-callbacks.c:433 src/ca-cli-callbacks.c:625 msgid "Enter type of key you are going to create (RSA/DSA/ECDSA/Ed25519)" msgstr "" #: src/ca-cli-callbacks.c:472 src/ca-cli-callbacks.c:656 msgid "Enter curve size for ECDSA (256, 384, or 521)" msgstr "" #: src/ca-cli-callbacks.c:482 src/ca-cli-callbacks.c:667 msgid "Enter bitlength for the key (it must be a whole multiple of 1024)" msgstr "" #: src/ca-cli-callbacks.c:487 #, c-format msgid "These are the provided CSR properties:\n" msgstr "" #: src/ca-cli-callbacks.c:489 src/ca-cli-callbacks.c:704 #: src/ca-cli-callbacks.c:1350 src/ca-cli-callbacks.c:1411 #, c-format msgid "Subject:\n" msgstr "" #: src/ca-cli-callbacks.c:490 src/ca-cli-callbacks.c:705 #, c-format msgid "\tDistinguished Name: " msgstr "" #: src/ca-cli-callbacks.c:505 src/ca-cli-callbacks.c:720 #: src/ca-cli-callbacks.c:1354 src/ca-cli-callbacks.c:1414 #, c-format msgid "\tSubject Alternative Names: %s\n" msgstr "" #: src/ca-cli-callbacks.c:506 src/ca-cli-callbacks.c:721 #, c-format msgid "Key pair\n" msgstr "" #: src/ca-cli-callbacks.c:512 src/ca-cli-callbacks.c:727 #, c-format msgid "\tType: %s\n" msgstr "" #: src/ca-cli-callbacks.c:514 #, c-format msgid "\tKey size: fixed (Ed25519)\n" msgstr "" #: src/ca-cli-callbacks.c:516 #, c-format msgid "\tCurve: P-%d\n" msgstr "" #: src/ca-cli-callbacks.c:518 src/ca-cli-callbacks.c:729 #, c-format msgid "\tKey bitlength: %d\n" msgstr "" #: src/ca-cli-callbacks.c:521 src/ca-cli-callbacks.c:740 msgid "Do you want to change anything? Yes/[No] " msgstr "" #: src/ca-cli-callbacks.c:525 msgid "" "You are about to create a Certificate Signing Request with these properties." msgstr "" #: src/ca-cli-callbacks.c:526 src/ca-cli-callbacks.c:745 msgid "Are you sure? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:531 src/ca-cli-callbacks.c:750 #: src/ca-cli-callbacks.c:834 src/ca-cli-callbacks.c:965 #: src/ca-cli-callbacks.c:1086 src/ca-cli-callbacks.c:1115 #: src/ca-cli-callbacks.c:1181 src/ca-cli-callbacks.c:1208 #: src/ca-cli-callbacks.c:1236 src/ca-cli-callbacks.c:1251 #: src/ca-cli-callbacks.c:1581 src/ca-cli-callbacks.c:1624 #: src/ca-cli-callbacks.c:1945 #, c-format msgid "Operation cancelled.\n" msgstr "" #: src/ca-cli-callbacks.c:565 #, c-format msgid "" "Please enter data corresponding to subject of the new Certification " "Authority:\n" msgstr "" #: src/ca-cli-callbacks.c:673 msgid "" "Introduce number of months before expiration of the new certification " "authority" msgstr "" #: src/ca-cli-callbacks.c:693 src/new_ca_window.c:457 msgid "" "This system uses a 32-bit time_t and cannot represent dates after " "2038-01-19. The new CA's expiration date has been clamped to that limit. To " "issue longer-lived CAs, run gnoMint on a 64-bit platform." msgstr "" #: src/ca-cli-callbacks.c:702 #, c-format msgid "These are the provided new CA properties:\n" msgstr "" #: src/ca-cli-callbacks.c:730 #, c-format msgid "Validity\n" msgstr "" #: src/ca-cli-callbacks.c:731 src/ca-cli-callbacks.c:1360 #, c-format msgid "Validity:\n" msgstr "" #: src/ca-cli-callbacks.c:734 src/ca-cli-callbacks.c:1363 #, c-format msgid "\tActivated on: %s\n" msgstr "" #: src/ca-cli-callbacks.c:738 src/ca-cli-callbacks.c:1370 #, c-format msgid "\tExpires on: %s\n" msgstr "" #: src/ca-cli-callbacks.c:744 msgid "" "You are about to create a new Certification Authority with these properties." msgstr "" #: src/ca-cli-callbacks.c:770 src/ca-cli-callbacks.c:818 #: src/ca-cli-callbacks.c:1321 msgid "The given certificate id. is not valid" msgstr "" #: src/ca-cli-callbacks.c:777 src/ca-cli-callbacks.c:801 #, c-format msgid "Private key extracted successfully into file '%s'\n" msgstr "" #: src/ca-cli-callbacks.c:794 src/ca-cli-callbacks.c:946 #: src/ca-cli-callbacks.c:1099 src/ca-cli-callbacks.c:1400 msgid "The given CSR id. is not valid" msgstr "" #: src/ca-cli-callbacks.c:824 msgid "This certificate will be revoked." msgstr "" #: src/ca-cli-callbacks.c:830 #, c-format msgid "Certificate revoked.\n" msgstr "" #: src/ca-cli-callbacks.c:844 src/ca-cli-callbacks.c:1381 #, c-format msgid "Certificate uses:\n" msgstr "" #: src/ca-cli-callbacks.c:847 #, c-format msgid "* Certification Authority use enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:849 #, c-format msgid "* Certification Authority use disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:853 #, c-format msgid "* CRL signing use enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:855 #, c-format msgid "* CRL signing use disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:859 #, c-format msgid "* Digital Signature use enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:861 #, c-format msgid "* Digital Signature use disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:865 src/ca-cli-callbacks.c:867 #, c-format msgid "* Data Encipherment use enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:871 #, c-format msgid "* Key Encipherment use enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:873 #, c-format msgid "* Key Encipherment use disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:877 #, c-format msgid "* Non Repudiation use enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:879 #, c-format msgid "* Non Repudiation use disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:883 #, c-format msgid "* Key Agreement use enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:885 #, c-format msgid "* Key Agreement use disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:888 #, c-format msgid "Certificate purposes:\n" msgstr "" #: src/ca-cli-callbacks.c:891 #, c-format msgid "* Email Protection purpose enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:893 #, c-format msgid "* Email Protection purpose disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:897 #, c-format msgid "* Code Signing purpose enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:899 #, c-format msgid "* Code Signing purpose disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:903 #, c-format msgid "* TLS Web Client purpose enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:905 #, c-format msgid "* TLS Web Client purpose disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:909 #, c-format msgid "* TLS Web Server purpose enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:911 #, c-format msgid "* TLS Web Server purpose disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:915 #, c-format msgid "* Time Stamping purpose enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:917 #, c-format msgid "* Time Stamping purpose disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:921 #, c-format msgid "* OCSP Signing purpose enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:923 #, c-format msgid "* OCSP Signing purpose disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:927 #, c-format msgid "* Any purpose enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:929 #, c-format msgid "* Any purpose disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:953 #, c-format msgid "You are about to sign the following Certificate Signing Request:\n" msgstr "" #: src/ca-cli-callbacks.c:955 #, c-format msgid "with the certificate corresponding to the next CA:\n" msgstr "" #: src/ca-cli-callbacks.c:958 msgid "" "Introduce number of months before expiration of the new certificate (0 to " "cancel)" msgstr "" #: src/ca-cli-callbacks.c:984 src/ca-cli-callbacks.c:1072 #, c-format msgid "" "The new certificate will be created with the following uses and purposes:\n" msgstr "" #: src/ca-cli-callbacks.c:987 msgid "Do you want to change any property of the new certificate? Yes/[No] " msgstr "" #: src/ca-cli-callbacks.c:990 msgid "* Enable Certification Authority use? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:992 #, c-format msgid "* Certification Authority use disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:996 msgid "* Enable CRL Signing? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:998 #, c-format msgid "* CRL signing use disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1002 msgid "* Enable Digital Signature use? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1004 #, c-format msgid "* Digital Signature use disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1008 msgid "Enable Data Encipherment use? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1010 #, c-format msgid "* Data Encipherment use disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1014 msgid "Enable Key Encipherment use? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1016 #, c-format msgid "* Key Encipherment use disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1020 msgid "Enable Non Repudiation use? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1022 #, c-format msgid "* Non Repudiation use disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1026 msgid "Enable Key Agreement use? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1028 #, c-format msgid "* Key Agreement use disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1032 msgid "Enable Email Protection purpose? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1034 #, c-format msgid "* Email Protection purpose disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1038 msgid "Enable Code Signing purpose? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1040 #, c-format msgid "* Code Signing purpose disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1044 msgid "Enable TLS Web Client purpose? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1046 #, c-format msgid "* TLS Web Client purpose disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1050 msgid "Enable TLS Web Server purpose? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1052 #, c-format msgid "* TLS Web Server purpose disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1056 msgid "Enable Time Stamping purpose? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1058 #, c-format msgid "* Time Stamping purpose disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1062 msgid "Enable OCSP Signing purpose? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1063 #, c-format msgid "* OCSP Signing purpose disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1067 msgid "Enable any purpose? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1069 #, c-format msgid "* Any purpose disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1077 msgid "" "All the mandatory data for the certificate generation has been gathered." msgstr "" #: src/ca-cli-callbacks.c:1077 msgid "Do you want to proceed with the signing? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1083 #, c-format msgid "Certificate signed.\n" msgstr "" #: src/ca-cli-callbacks.c:1105 msgid "This Certificate Signing Request will be deleted." msgstr "" #: src/ca-cli-callbacks.c:1105 msgid "This operation cannot be undone. Are you sure? Yes/[No] " msgstr "" #: src/ca-cli-callbacks.c:1111 #, c-format msgid "Certificate Signing Request deleted.\n" msgstr "" #: src/ca-cli-callbacks.c:1136 #, c-format msgid "CRL generated successfully into file '%s'\n" msgstr "" #: src/ca-cli-callbacks.c:1153 msgid "The bit-length of the prime number must be whole multiple of 1024" msgstr "" #: src/ca-cli-callbacks.c:1162 #, c-format msgid "Diffie-Hellman parameters created and saved successfully in file '%s'\n" msgstr "" #: src/ca-cli-callbacks.c:1174 msgid "Currently, the database is not password-protected." msgstr "" #: src/ca-cli-callbacks.c:1174 msgid "Do you want to password protect it? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1175 msgid "" "OK. You need to supply a password for protecting the private keys in the\n" "database, so nobody else but authorized people can use them. This password\n" "will be asked any time gnoMint will make use of any private key in database." msgstr "" #: src/ca-cli-callbacks.c:1178 msgid "Insert password:" msgstr "" #: src/ca-cli-callbacks.c:1178 msgid "Insert password (confirm):" msgstr "" #: src/ca-cli-callbacks.c:1179 src/ca-cli-callbacks.c:1249 msgid "The introduced passwords are distinct." msgstr "" #: src/ca-cli-callbacks.c:1190 #, c-format msgid "Password established successfully.\n" msgstr "" #: src/ca-cli-callbacks.c:1197 #, c-format msgid "Nothing done.\n" msgstr "" #: src/ca-cli-callbacks.c:1201 msgid "Currently, the database IS password-protected." msgstr "" #: src/ca-cli-callbacks.c:1201 msgid "Do you want to remove this password protection? Yes/[No] " msgstr "" #: src/ca-cli-callbacks.c:1205 #, c-format msgid "" "For removing the password-protection, the current database password\n" "must be supplied.\n" msgstr "" #: src/ca-cli-callbacks.c:1206 src/ca-cli-callbacks.c:1234 msgid "Please, insert the current database password (Empty to cancel): " msgstr "" #: src/ca-cli-callbacks.c:1213 src/ca-cli-callbacks.c:1241 msgid "" "The current password you have entered\n" "doesn't match with the actual current database password." msgstr "" #: src/ca-cli-callbacks.c:1218 msgid "" "Error while removing database password. \n" "The operation was cancelled." msgstr "" #: src/ca-cli-callbacks.c:1223 #, c-format msgid "Password removed successfully.\n" msgstr "" #: src/ca-cli-callbacks.c:1233 #, c-format msgid "" "You must supply the current database password before changing the password.\n" msgstr "" #: src/ca-cli-callbacks.c:1245 msgid "" "OK. Now you must supply a new password for protecting the private keys in " "the\n" "database, so nobody else but authorized people can use them. This password\n" "will be asked any time gnoMint will make use of any private key in database." msgstr "" #: src/ca-cli-callbacks.c:1248 msgid "Insert new password:" msgstr "" #: src/ca-cli-callbacks.c:1248 msgid "Insert new password (confirm):" msgstr "" #: src/ca-cli-callbacks.c:1257 msgid "" "Error while changing database password. \n" "The operation was cancelled." msgstr "" #: src/ca-cli-callbacks.c:1263 #, c-format msgid "Password changed successfully.\n" msgstr "" #: src/ca-cli-callbacks.c:1281 msgid "Problem when importing the given file." msgstr "" #: src/ca-cli-callbacks.c:1284 #, c-format msgid "File imported successfully.\n" msgstr "" #: src/ca-cli-callbacks.c:1300 #, c-format msgid "Directory imported successfully.\n" msgstr "" #: src/ca-cli-callbacks.c:1343 #, c-format msgid "Certificate:\n" msgstr "" #: src/ca-cli-callbacks.c:1347 #, c-format msgid "\tSerial number: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1351 src/ca-cli-callbacks.c:1357 #: src/ca-cli-callbacks.c:1412 #, c-format msgid "\tDistinguished Name: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1351 src/ca-cli-callbacks.c:1352 #: src/ca-cli-callbacks.c:1357 src/ca-cli-callbacks.c:1358 msgid "None." msgstr "" #: src/ca-cli-callbacks.c:1352 src/ca-cli-callbacks.c:1358 #: src/ca-cli-callbacks.c:1416 #, c-format msgid "\tUnique ID: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1356 #, c-format msgid "Issuer:\n" msgstr "" #: src/ca-cli-callbacks.c:1365 src/ca-cli-callbacks.c:1372 #, c-format msgid "" "\t (warning: this 32-bit build cannot tell a real post-2038 date from an " "overflow; this value may be inaccurate)\n" msgstr "" #: src/ca-cli-callbacks.c:1375 #, c-format msgid "Fingerprints:\n" msgstr "" #: src/ca-cli-callbacks.c:1376 #, c-format msgid "\tSHA1 fingerprint: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1377 #, c-format msgid "\tMD5 fingerprint: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1378 #, c-format msgid "\tSHA256 fingerprint: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1409 #, c-format msgid "Certificate Signing Request:\n" msgstr "" #: src/ca-cli-callbacks.c:1486 msgid "Generated certs inherit Country from CA " msgstr "" #: src/ca-cli-callbacks.c:1487 msgid "Generated certs inherit State from CA " msgstr "" #: src/ca-cli-callbacks.c:1488 msgid "Generated certs inherit Locality from CA " msgstr "" #: src/ca-cli-callbacks.c:1489 msgid "Generated certs inherit Organization from CA " msgstr "" #: src/ca-cli-callbacks.c:1490 msgid "Generated certs inherit Organizational Unit from CA " msgstr "" #: src/ca-cli-callbacks.c:1491 msgid "Country in generated certs must be the same than in CA " msgstr "" #: src/ca-cli-callbacks.c:1492 msgid "State in generated certs must be the same than in CA " msgstr "" #: src/ca-cli-callbacks.c:1493 msgid "Locality in generated certs must be the same than in CA " msgstr "" #: src/ca-cli-callbacks.c:1494 msgid "Organization in generated certs must be the same than in CA " msgstr "" #: src/ca-cli-callbacks.c:1495 msgid "Organizational Unit in generated certs must be the same than in CA" msgstr "" #: src/ca-cli-callbacks.c:1496 msgid "Maximum number of hours between CRL updates " msgstr "" #: src/ca-cli-callbacks.c:1497 msgid "CRL distribution point (URL where CRL is published) " msgstr "" #: src/ca-cli-callbacks.c:1498 msgid "Maximum number of months before expiration of new certs " msgstr "" #: src/ca-cli-callbacks.c:1499 msgid "CA use enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1500 msgid "CRL Sign use enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1501 msgid "Non reputation use enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1502 msgid "Digital signature use enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1503 msgid "Key encipherment use enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1504 msgid "Key agreement use enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1505 msgid "Data encipherment use enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1506 msgid "TLS web server purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1507 msgid "TLS web client purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1508 msgid "Time stamping purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1509 msgid "Code signing server purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1510 msgid "Email protection purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1511 msgid "OCSP signing purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1512 msgid "Any purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1526 #, c-format msgid "Showing policies of the following certificate:\n" msgstr "" #: src/ca-cli-callbacks.c:1528 #, c-format msgid "" "\n" "Policies:\n" msgstr "" #: src/ca-cli-callbacks.c:1530 #, c-format msgid "Id.\tDescription\t\t\t\t\t\t\t\tValue\n" msgstr "" #: src/ca-cli-callbacks.c:1556 msgid "The given policy id is not valid" msgstr "" #: src/ca-cli-callbacks.c:1568 #, c-format msgid "" "You are about to assign to the policy\n" "'%s' the new value '%s'." msgstr "" #: src/ca-cli-callbacks.c:1572 src/ca-cli-callbacks.c:1616 msgid "Are you sure? Yes/[No] : " msgstr "" #: src/ca-cli-callbacks.c:1577 #, c-format msgid "Policy set correctly to '%s'.\n" msgstr "" #: src/ca-cli-callbacks.c:1591 #, c-format msgid "gnoMint-cli current preferences:\n" msgstr "" #: src/ca-cli-callbacks.c:1593 #, c-format msgid "Id.\tName\t\t\tValue\n" msgstr "" #: src/ca-cli-callbacks.c:1594 #, c-format msgid "0\tGnome keyring support\t%d\n" msgstr "" #: src/ca-cli-callbacks.c:1606 msgid "The given preference id is not valid" msgstr "" #: src/ca-cli-callbacks.c:1612 #, c-format msgid "" "You are about to assign to the preference 'Gnome keyring support' the new " "value '%d'." msgstr "" #: src/ca-cli-callbacks.c:1634 #, c-format msgid "" "%s version %s\n" "%s\n" msgstr "" #: src/ca-cli-callbacks.c:1635 #, c-format msgid "" "\n" "Authors:\n" "%s\n" "\n" msgstr "" #: src/ca-cli-callbacks.c:1636 src/ca-cli-callbacks.c:1637 src/main.c:742 msgid "translator-credits" msgstr "" #: src/ca-cli-callbacks.c:1637 #, c-format msgid "" "Translators:\n" "%s\n" msgstr "" #: src/ca-cli-callbacks.c:1644 msgid "" "THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY\n" "APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT\n" "HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY\n" "OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,\n" "THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n" "PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM\n" "IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF\n" "ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n" "\n" "For more information about warranty, see section 15 onwards of the GNU\n" "General Public License. You should have received a copy of the GNU General\n" "Public License along with this program. If not, see\n" ".\n" "\n" msgstr "" #: src/ca-cli-callbacks.c:1662 msgid "" "This program is free software: you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation, either version 3 of the License, or\n" "(at your option) any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program. If not, see .\n" "\n" msgstr "" #: src/ca-cli-callbacks.c:1677 #, c-format msgid "%s version %s \"%s\"\n" msgstr "" #: src/ca-cli-callbacks.c:1686 #, c-format msgid "Available commands:\n" msgstr "" #: src/ca-cli-callbacks.c:1687 #, c-format msgid "===================\n" msgstr "" #: src/ca-cli-callbacks.c:1697 #, c-format msgid "Exiting gnomint-cli...\n" msgstr "" #: src/ca-cli-callbacks.c:1738 msgid "The given CA id is not valid" msgstr "" #: src/ca-cli-callbacks.c:1750 msgid "Certificate type must be 'web' or 'email'" msgstr "" #: src/ca-cli-callbacks.c:1756 msgid "Server name cannot be empty" msgstr "" #: src/ca-cli-callbacks.c:1760 #, c-format msgid "Creating %s certificate for: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1761 msgid "web server" msgstr "" #: src/ca-cli-callbacks.c:1761 msgid "email server" msgstr "" #: src/ca-cli-callbacks.c:1837 #, c-format msgid "Error: Key generation failed: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1845 #, c-format msgid "Error: CSR generation failed: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1854 #, c-format msgid "Error: Failed to parse generated CSR\n" msgstr "" #: src/ca-cli-callbacks.c:1865 #, c-format msgid "Error: Failed to save CSR: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1879 msgid "CSR created with ID: %" msgstr "" #: src/ca-cli-callbacks.c:1903 #, c-format msgid "Error: Failed to sign certificate: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1910 #, c-format msgid "Certificate generated successfully for: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1911 #, c-format msgid "Certificate type: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1911 msgid "Web Server" msgstr "" #: src/ca-cli-callbacks.c:1911 msgid "Email Server" msgstr "" #: src/ca-cli-callbacks.c:1925 msgid "Usage: renewcert " msgstr "" #: src/ca-cli-callbacks.c:1930 src/ca-cli-callbacks.c:1968 msgid "The given certificate id is not valid" msgstr "" #: src/ca-cli-callbacks.c:1941 msgid "" "gnoMint will issue a new certificate with the same subject and SAN as this " "one, signed by the same CA, with a fresh keypair. The old certificate stays " "in place." msgstr "" #: src/ca-cli-callbacks.c:1944 msgid "Renew? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1955 msgid "Certificate renewed. New certificate id: %" msgstr "" #: src/ca-cli-callbacks.c:1963 msgid "Usage: exportchain " msgstr "" #: src/ca-cli-callbacks.c:1974 msgid "Cannot build chain PEM for that certificate." msgstr "" #: src/ca-cli-callbacks.c:1979 msgid "Cannot write chain file." msgstr "" #: src/ca-cli-callbacks.c:1985 #, c-format msgid "Full chain (leaf → root) written to %s\n" msgstr "" #: src/ca-cli-callbacks.c:1992 msgid "Usage: revokemany [cert-id ...]" msgstr "" #: src/ca-cli-callbacks.c:2008 #, c-format msgid "%d certificate revoked.\n" msgid_plural "%d certificates revoked.\n" msgstr[0] "" msgstr[1] "" #: src/ca-cli-callbacks.c:2016 msgid "Usage: deletemany [csr-id ...]" msgstr "" #: src/ca-cli-callbacks.c:2032 #, c-format msgid "%d CSR deleted.\n" msgid_plural "%d CSRs deleted.\n" msgstr[0] "" msgstr[1] "" #: src/ca-cli-callbacks.c:2092 msgid "Usage: search " msgstr "" #: src/ca-cli-callbacks.c:2099 #, c-format msgid "Matches (id\tserial\tsubject):\n" msgstr "" #: src/ca-cli-callbacks.c:2102 #, c-format msgid "%d match.\n" msgid_plural "%d matches.\n" msgstr[0] "" msgstr[1] "" #: src/ca-cli-callbacks.c:2126 #, c-format msgid "'%s' is not a certificate id in this database." msgstr "" #: src/ca-cli-callbacks.c:2134 #, c-format msgid "Cannot read PEM for cert id %s." msgstr "" #: src/ca-cli-callbacks.c:2152 msgid "Usage: diff " msgstr "" #: src/ca-cli-callbacks.c:2168 msgid "Field" msgstr "" #: src/ca-cli-callbacks.c:2181 #, c-format msgid "" "\n" "%d field differs.\n" msgid_plural "" "\n" "%d fields differ.\n" msgstr[0] "" msgstr[1] "" #: src/ca_creation.c:55 src/csr_creation.c:57 msgid "Generating new RSA key pair" msgstr "" #: src/ca_creation.c:64 src/ca_creation.c:88 src/ca_creation.c:109 #: src/ca_creation.c:128 src/csr_creation.c:66 src/csr_creation.c:87 #: src/csr_creation.c:104 src/csr_creation.c:121 msgid "Key generation failed" msgstr "" #: src/ca_creation.c:78 src/csr_creation.c:79 msgid "Generating new DSA key pair" msgstr "" #: src/ca_creation.c:101 src/csr_creation.c:97 msgid "Generating new ECDSA key pair" msgstr "" #: src/ca_creation.c:120 src/csr_creation.c:114 msgid "Generating new Ed25519 key pair" msgstr "" #: src/ca_creation.c:139 msgid "Generating self-signed CA-Root cert" msgstr "" #: src/ca_creation.c:147 msgid "Certificate generation failed" msgstr "" #: src/ca_creation.c:159 msgid "Creating CA database" msgstr "" #: src/ca_creation.c:168 msgid "CA database creation failed" msgstr "" #: src/ca_creation.c:180 msgid "CA generated successfully" msgstr "" #: src/ca_file.c:207 #, c-format msgid "Error opening filename '%s'" msgstr "" #: src/ca_file.c:310 msgid "" "The selected database has been created with a newer version of gnoMint than " "the currently installed." msgstr "" #: src/ca_file.c:1221 msgid "Cannot find last assigned serial number" msgstr "" #: src/ca_file.c:1410 msgid "Cannot find parent CA in database" msgstr "" #: src/ca_file.c:1600 msgid "" "This certificate already exists in the database: cannot insert it twice." msgstr "" #: src/ca_file.c:2044 msgid "" "The given file contains a valid private key. However, it has not been " "imported to the database because it doesn't match any key-less certificate " "or certificate request in the database." msgstr "" #: src/ca_file.c:2047 msgid "" "The given file contains a valid private key. However, it has not been " "imported to the database because it doesn't match any key-less certificate " "in the database." msgstr "" #: src/certificate_properties.c:151 msgid "" "This 32-bit build cannot represent dates after 2038-01-19, so it cannot " "distinguish a genuine date from a later one that overflowed. This value may " "be inaccurate." msgstr "" #: src/certificate_properties.c:383 msgid "Unknown" msgstr "" #: src/certificate_properties.c:453 src/tls.c:1478 msgid "Certificate signing" msgstr "" #: src/certificate_properties.c:457 msgid "Key encipherment only" msgstr "" #: src/certificate_properties.c:459 msgid "Key decipherment only" msgstr "" #: src/certificate_properties.c:472 msgid "Version" msgstr "" #: src/certificate_properties.c:507 msgid "Serial Number" msgstr "" #: src/certificate_properties.c:522 src/certificate_properties.c:1262 msgid "Signature" msgstr "" #: src/certificate_properties.c:525 src/certificate_properties.c:676 #: src/certificate_properties.c:679 src/certificate_properties.c:1228 msgid "Algorithm" msgstr "" #: src/certificate_properties.c:529 src/certificate_properties.c:686 #: src/certificate_properties.c:726 src/certificate_properties.c:763 #: src/certificate_properties.c:1232 msgid "Parameters" msgstr "" #: src/certificate_properties.c:529 src/certificate_properties.c:686 #: src/certificate_properties.c:763 src/certificate_properties.c:767 #: src/certificate_properties.c:781 src/certificate_properties.c:790 #: src/certificate_properties.c:1232 msgid "(unknown)" msgstr "" #: src/certificate_properties.c:563 msgid "Issuer" msgstr "" #: src/certificate_properties.c:598 msgid "Validity" msgstr "" #: src/certificate_properties.c:603 msgid "Not Before" msgstr "" #: src/certificate_properties.c:610 msgid "Not After" msgstr "" #: src/certificate_properties.c:616 msgid "Note" msgstr "" #: src/certificate_properties.c:617 msgid "" "This 32-bit build cannot represent dates after 2038-01-19, so a value marked " "⚠ may be a later date that overflowed and is inaccurate." msgstr "" #: src/certificate_properties.c:673 msgid "Subject Public Key Info" msgstr "" #: src/certificate_properties.c:690 msgid "RSA PublicKey" msgstr "" #: src/certificate_properties.c:702 msgid "Modulus" msgstr "" #: src/certificate_properties.c:710 msgid "Public Exponent" msgstr "" #: src/certificate_properties.c:755 msgid "DSA PublicKey" msgstr "" #: src/certificate_properties.c:767 msgid "Subject Public Key" msgstr "" #: src/certificate_properties.c:781 msgid "Issuer Unique ID" msgstr "" #: src/certificate_properties.c:790 msgid "Subject Unique ID" msgstr "" #: src/certificate_properties.c:813 src/certificate_properties.c:836 #: src/certificate_properties.c:945 src/certificate_properties.c:1058 #: src/certificate_properties.c:1085 src/certificate_properties.c:1124 #: src/certificate_properties.c:1182 src/certificate_properties.c:1457 #: src/san_manager.c:399 msgid "Value" msgstr "" #: src/certificate_properties.c:875 src/certificate_properties.c:1018 msgid "DNS Name" msgstr "" #: src/certificate_properties.c:882 src/certificate_properties.c:1025 msgid "RFC822 Name" msgstr "" #: src/certificate_properties.c:905 src/certificate_properties.c:919 #: src/certificate_properties.c:927 msgid "IP" msgstr "" #: src/certificate_properties.c:936 src/certificate_properties.c:1049 msgid "Directory Name" msgstr "" #: src/certificate_properties.c:973 src/certificate_properties.c:1164 msgid "TRUE" msgstr "" #: src/certificate_properties.c:973 src/certificate_properties.c:1164 msgid "FALSE" msgstr "" #: src/certificate_properties.c:977 msgid "CA" msgstr "" #: src/certificate_properties.c:981 msgid "Path Length Constraint" msgstr "" #: src/certificate_properties.c:1154 msgid "Extensions" msgstr "" #: src/certificate_properties.c:1166 msgid "Critical" msgstr "" #: src/certificate_properties.c:1199 msgid "Certificate" msgstr "" #: src/certificate_properties.c:1225 msgid "Signature Algorithm" msgstr "" #: src/certificate_properties.c:1446 msgid "Name" msgstr "" #: src/certificate_properties.c:1477 src/tls.c:1494 msgid "TLS WWW Server" msgstr "" #: src/certificate_properties.c:1478 msgid "TLS WWW Client" msgstr "" #: src/certificate_properties.c:1484 msgid "Subject Directory Attributes" msgstr "" #: src/certificate_properties.c:1485 msgid "Subject Key Identifier" msgstr "" #: src/certificate_properties.c:1486 msgid "Key Usage" msgstr "" #: src/certificate_properties.c:1487 msgid "Private Key Usage Period" msgstr "" #: src/certificate_properties.c:1489 msgid "Basic Constraints" msgstr "" #: src/certificate_properties.c:1490 msgid "Name Constraints" msgstr "" #: src/certificate_properties.c:1491 msgid "CRL Distribution Points" msgstr "" #: src/certificate_properties.c:1492 msgid "Certificate Policies" msgstr "" #: src/certificate_properties.c:1493 msgid "Policy Mappings" msgstr "" #: src/certificate_properties.c:1494 msgid "Authority Key Identifier" msgstr "" #: src/certificate_properties.c:1495 msgid "Policy Constraints" msgstr "" #: src/certificate_properties.c:1496 msgid "Extended Key Usage" msgstr "" #: src/certificate_properties.c:1497 msgid "Delta CRL Distribution Point" msgstr "" #: src/certificate_properties.c:1498 msgid "Inhibit Any-Policy" msgstr "" #: src/creation_process_window.c:69 msgid "CA creation process finished" msgstr "" #: src/creation_process_window.c:193 msgid "Creation process cancelled" msgstr "" #: src/creation_process_window.c:215 msgid "CSR creation process finished" msgstr "" #: src/creation_process_window.c:288 msgid "Creating Certificate Signing Request" msgstr "" #: src/crl.c:101 msgid "CRL generated successfully" msgstr "" #: src/crl.c:146 msgid "Export Certificate Revocation List" msgstr "" #: src/crl.c:180 src/crl.c:253 src/crl.c:299 msgid "There was an error while generating CRL." msgstr "" #: src/crl.c:189 msgid "There was an error while writing CRL." msgstr "" #: src/crl.c:201 src/crl.c:227 src/crl.c:268 src/crl.c:330 src/crl.c:351 msgid "There was an error while exporting CRL." msgstr "" #: src/crl.c:238 src/crl.c:369 msgid "There was an error while getting revoked certificates." msgstr "" #: src/csr_creation.c:131 msgid "Generating CSR" msgstr "" #: src/csr_creation.c:140 msgid "CSR generation failed" msgstr "" #: src/csr_creation.c:151 msgid "Saving CSR in database" msgstr "" #: src/csr_creation.c:169 msgid "CSR couldn't be saved" msgstr "" #: src/csr_creation.c:180 msgid "CSR generated successfully" msgstr "" #: src/csr_properties.c:91 msgid "" "This Certificate Signing Request has its corresponding private key saved " "in a external file." msgstr "" #: src/dialog.c:123 #, c-format msgid "" "\n" "The password must have, at least, %d characters\n" msgstr "" #: src/dialog.c:581 msgid "To do. Feature not implemented yet." msgstr "" #: src/export.c:43 src/export.c:48 src/export.c:53 msgid "There was an error while saving Diffie-Hellman parameters." msgstr "" #: src/export.c:79 src/export.c:138 src/export.c:146 src/export.c:200 #: src/export.c:210 src/export.c:304 src/export.c:341 src/export.c:376 #: src/export.c:384 src/export.c:424 src/export.c:433 src/export.c:474 msgid "There was an error while exporting private key." msgstr "" #: src/export.c:99 src/export.c:284 src/export.c:357 src/export.c:455 msgid "There was an error while getting private key." msgstr "" #: src/export.c:110 src/export.c:248 msgid "There was an error while uncrypting private key." msgstr "" #: src/export.c:113 src/export.c:264 msgid "" "You need to supply a passphrase for protecting the exported private key, so " "nobody else but authorized people can use it. This passphrase will be asked " "by any application that will make use of the private key." msgstr "" #: src/export.c:116 src/export.c:267 src/export.c:536 src/export.c:715 msgid "Insert passphrase (8 characters or more):" msgstr "" #: src/export.c:116 src/export.c:267 src/export.c:536 src/export.c:715 msgid "Insert passphrase (confirm):" msgstr "" #: src/export.c:117 src/export.c:268 src/export.c:537 src/export.c:716 msgid "The introduced passphrases are distinct." msgstr "" #: src/export.c:120 src/export.c:178 msgid "Operation cancelled." msgstr "" #: src/export.c:130 src/export.c:190 msgid "There was an error while password-protecting private key." msgstr "" #: src/export.c:368 src/export.c:415 msgid "There was an error while decrypting private key." msgstr "" #: src/export.c:513 src/export.c:747 msgid "Unsupported operation: you cannot generate a PKCS#12 for a CSR." msgstr "" #: src/export.c:521 src/export.c:530 src/export.c:695 src/export.c:731 msgid "" "There was an error while getting the certificate and private key from the " "internal database." msgstr "" #: src/export.c:533 src/export.c:712 msgid "" "You need to supply a passphrase for protecting the exported certificate, so " "nobody else but authorized people can use it. This passphrase will be asked " "by any application that will import the certificate." msgstr "" #: src/export.c:555 src/export.c:629 msgid "There was an error while generating the PKCS#12 package." msgstr "" #: src/export.c:569 src/export.c:578 src/export.c:652 src/export.c:663 msgid "There was an error while exporting the certificate." msgstr "" #: src/gnomint-cli.c:59 msgid "- A Certification Authority manager" msgstr "" #: src/gnomint-cli.c:62 #, c-format msgid "Failed to initialize: %s\n" msgstr "" #: src/import.c:171 #, c-format msgid "" "The whole selected file, or some of its elements, seems to\n" "be cyphered using a password or passphrase. For importing\n" "the file into gnoMint database, you must provide an \n" "appropriate password.\n" msgstr "" #: src/import.c:176 #, c-format msgid "Please introduce password for `%s'" msgstr "" #: src/import.c:218 #, c-format msgid "" "Couldn't import the certificate request. \n" "The database returned this error: \n" "\n" "'%s'" msgstr "" #: src/import.c:298 msgid "" "The imported certificate expires after 2038-01-19, a date this 32-bit build " "cannot represent. Its stored expiration has been capped and may be " "inaccurate. The certificate itself is unchanged; open it on a 64-bit system " "to see the exact date." msgstr "" #: src/import.c:310 #, c-format msgid "" "Couldn't import the certificate. \n" "The database returned this error: \n" "\n" "'%s'" msgstr "" #: src/import.c:666 src/import.c:852 msgid "PKCS#8 crypted private key" msgstr "" #: src/import.c:677 src/import.c:862 msgid "The given password doesn't match the one used for crypting this part" msgstr "" #: src/import.c:771 msgid "Encrypted PKCS#12 bag" msgstr "" #: src/import.c:788 msgid "" "The given password doesn't match with the password used for encrypting this " "part." msgstr "" #: src/import.c:999 msgid "Couldn't find any supported format in the given file" msgstr "" #: src/import.c:1012 src/import.c:1363 #, c-format msgid "Couldn't open %s file. Check permissions." msgstr "" #: src/import.c:1039 #, c-format msgid "Couldn't recognize the file %s as a RSA or DSA private key." msgstr "" #: src/import.c:1055 #, c-format msgid "Private key for %s" msgstr "" #: src/import.c:1057 #, c-format msgid "Private key %s" msgstr "" #: src/import.c:1092 msgid "Problem while calling to openssl for decyphering private key." msgstr "" #: src/import.c:1100 #, c-format msgid "" "OpenSSL has returned the following error while trying to decypher the " "private key:\n" "\n" "%s" msgstr "" #: src/import.c:1211 msgid "There was a problem while importing the public CA root certificate" msgstr "" #: src/import.c:1225 msgid "CA Root certificate" msgstr "" #: src/import.c:1227 msgid "" "There was a problem while importing the private key corresponding to CA root " "certificate" msgstr "" #: src/import.c:1237 msgid "There was a problem while opening the directory certs/." msgstr "" #: src/import.c:1261 msgid "There was a problem while opening the directory newcerts/." msgstr "" #: src/import.c:1288 msgid "There was a problem while opening the directory req." msgstr "" #: src/import.c:1314 msgid "There was a problem while opening the directory crl/." msgstr "" #: src/import.c:1336 msgid "There was a problem while opening the directory keys/." msgstr "" #: src/import.c:1394 msgid "Files in the directory don't belong to any supported CA format." msgstr "" #: src/main.c:567 #, c-format msgid "" "Problem when creating '%s' CA database:\n" "%s" msgstr "" #: src/main.c:577 #, c-format msgid "Problem when opening new '%s' CA database" msgstr "" #: src/main.c:591 msgid "Create new CA database" msgstr "" #: src/main.c:616 #, c-format msgid "Problem when opening '%s' CA database" msgstr "" #: src/main.c:630 msgid "Open CA database" msgstr "" #: src/main.c:662 msgid "Save CA database as..." msgstr "" #: src/main.c:722 msgid "" "gnoMint is a program for creating and managing Certification Authorities, " "and their certificates" msgstr "" #: src/main.c:725 msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU General Public License as published by the Free " "Software Foundation; either version 3 of the License, or (at your option) " "any later version.\n" "\n" "This program is distributed in the hope that it will be useful, but WITHOUT " "ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or " "FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for " "more details.\n" "\n" "You should have received a copy of the GNU General Public License along with " "this program; if not, write to the Free Software Foundation, Inc., 51 " "Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA." msgstr "" #: src/main.c:741 msgid "Code collaborators" msgstr "" #: src/new_ca_window.c:191 src/new_req_window.c:222 msgid "ECDSA curve:" msgstr "" #: src/new_ca_window.c:219 msgid "Please enter a Common Name (CN) for the CA." msgstr "" #: src/new_cert.c:197 msgid "" "The policy of this CA obligue the country field of the certificates to be " "the same as the one in the CA cert." msgstr "" #: src/new_cert.c:203 msgid "" "The policy of this CA obligue the state/province field of the certificates " "to be the same as the one in the CA cert." msgstr "" #: src/new_cert.c:209 msgid "" "The policy of this CA obligue the locality/city field of the certificates to " "be the same as the one in the CA cert." msgstr "" #: src/new_cert.c:215 msgid "" "The policy of this CA obligue the organization field of the certificates to " "be the same as the one in the CA cert." msgstr "" #: src/new_cert.c:221 msgid "" "The policy of this CA obligue the organizational unit field of the " "certificates to be the same as the one in the CA cert." msgstr "" #: src/new_cert.c:659 msgid "" "The expiration date of the new certificate is after the expiration date of " "the CA certificate.\n" "\n" "According to the current standards, this is not allowed. The new certificate " "will be created with the same expiration date as the CA certificate." msgstr "" #: src/new_cert.c:734 msgid "" "This system uses a 32-bit time_t and cannot represent dates after " "2038-01-19. The new certificate's expiration date has been clamped to that " "limit. To issue longer-lived certificates, run gnoMint on a 64-bit platform." msgstr "" #: src/new_cert.c:770 src/new_cert.c:809 src/new_cert.c:838 msgid "Error while signing CSR." msgstr "" #: src/new_req_window.c:374 msgid "Please enter a Common Name (CN) for the certificate request." msgstr "" #: src/pkey_manage.c:124 #, c-format msgid "" "The file that holds private key for certificate '%s' is password-protected.\n" "\n" "Please, insert the password corresponding to this file." msgstr "" #: src/pkey_manage.c:163 #, c-format msgid "" "The file that holds private key for certificate\n" "'%s' is password-protected.\n" "\n" msgstr "" #: src/pkey_manage.c:211 src/pkey_manage.c:303 msgid "" "The given password doesn't match with the one used while crypting the file." msgstr "" #: src/pkey_manage.c:226 src/pkey_manage.c:315 src/pkey_manage.c:476 msgid "" "The file designated in database contains a private key, but it is not the " "private key corresponding to the certificate." msgstr "" #: src/pkey_manage.c:229 src/pkey_manage.c:318 src/pkey_manage.c:479 msgid "" "The file designated in database doesn't contain any recognized private key." msgstr "" #: src/pkey_manage.c:233 src/pkey_manage.c:500 msgid "The file designated in database couldn't be opened." msgstr "" #: src/pkey_manage.c:236 src/pkey_manage.c:503 msgid "The file designated in database doesn't exist." msgstr "" #: src/pkey_manage.c:360 msgid "Select private key file" msgstr "" #: src/pkey_manage.c:1069 src/pkey_manage.c:1164 msgid "The given password doesn't match the one used in the database" msgstr "" #: src/pkey_manage.c:1151 #, c-format msgid "" "This action requires using one or more private keys saved in the database.\n" msgstr "" #: src/pkey_manage.c:1152 msgid "Please insert the database password:" msgstr "" #: src/san_manager.c:71 msgid "Value cannot be empty" msgstr "" #: src/san_manager.c:82 msgid "Invalid DNS name. Use format: example.com or *.example.com" msgstr "" #: src/san_manager.c:93 msgid "Invalid IP address. Use IPv4 (e.g., 192.168.1.1) or IPv6 format" msgstr "" #: src/san_manager.c:103 msgid "Invalid email address. Use format: user@example.com" msgstr "" #: src/san_manager.c:113 msgid "Invalid URI. Must start with http://, https://, ftp://, or ldap://" msgstr "" #: src/san_manager.c:389 msgid "Type" msgstr "" #: src/tls.c:198 src/tls.c:231 src/tls.c:276 src/tls.c:307 #, c-format msgid "Error initializing private key structure." msgstr "" #: src/tls.c:204 src/tls.c:237 src/tls.c:281 src/tls.c:311 #, c-format msgid "Error creating private key: %d" msgstr "" #: src/tls.c:215 src/tls.c:248 src/tls.c:289 src/tls.c:321 src/tls.c:794 #: src/tls.c:1204 #, c-format msgid "Error exporting private key to PEM structure." msgstr "" #: src/tls.c:656 #, c-format msgid "Error when initializing certificate structure" msgstr "" #: src/tls.c:662 src/tls.c:956 #, c-format msgid "Error when setting certificate version" msgstr "" #: src/tls.c:672 src/tls.c:969 #, c-format msgid "Error when setting certificate serial number" msgstr "" #: src/tls.c:681 src/tls.c:978 #, c-format msgid "Error when setting activation time" msgstr "" #: src/tls.c:686 src/tls.c:986 #, c-format msgid "Error when setting expiration time" msgstr "" #: src/tls.c:740 src/tls.c:1040 #, c-format msgid "Error when setting basicConstraint extension" msgstr "" #: src/tls.c:745 src/tls.c:1082 #, c-format msgid "Error when setting keyUsage extension" msgstr "" #: src/tls.c:756 src/tls.c:864 src/tls.c:1120 #, c-format msgid "Error when setting Subject Alternative Name extension" msgstr "" #: src/tls.c:768 src/tls.c:1056 #, c-format msgid "Error when setting subject key identifier extension" msgstr "" #: src/tls.c:772 src/tls.c:1030 #, c-format msgid "Error when setting authority key identifier extension" msgstr "" #: src/tls.c:782 #, c-format msgid "Error when signing self-signed certificate" msgstr "" #: src/tls.c:813 #, c-format msgid "Error when initializing privkey structure" msgstr "" #: src/tls.c:817 #, c-format msgid "Error when importing private key into privkey structure" msgstr "" #: src/tls.c:821 #, c-format msgid "Error when initializing csr structure" msgstr "" #: src/tls.c:825 #, c-format msgid "Error when setting csr version" msgstr "" #: src/tls.c:869 #, c-format msgid "Error when signing self-signed csr" msgstr "" #: src/tls.c:880 #, c-format msgid "Error exporting CSR to PEM structure." msgstr "" #: src/tls.c:933 #, c-format msgid "Error when importing CA private key" msgstr "" #: src/tls.c:940 #, c-format msgid "Error when initializing crt structure" msgstr "" #: src/tls.c:948 #, c-format msgid "Error when copying data from CSR to certificate structure" msgstr "" #: src/tls.c:1182 #, c-format msgid "Error when signing certificate: %s" msgstr "" #: src/tls.c:1482 msgid "Key encipher only" msgstr "" #: src/tls.c:1484 msgid "Key decipher only" msgstr "" #: src/tls.c:1496 msgid "TLS WWW Client." msgstr "" #: src/wizard_window.c:239 #, c-format msgid "" "Key generation failed:\n" "%s" msgstr "" #: src/wizard_window.c:249 #, c-format msgid "" "CSR generation failed:\n" "%s" msgstr "" #: src/wizard_window.c:260 msgid "Failed to parse generated CSR." msgstr "" #: src/wizard_window.c:271 #, c-format msgid "" "Failed to save CSR:\n" "%s" msgstr "" #: src/wizard_window.c:294 #, c-format msgid "" "Failed to sign certificate:\n" "%s" msgstr "" #: src/wizard_window.c:297 msgid "Certificate generated successfully!" msgstr "" #: src/wizard_window.c:311 msgid "Please enter a server name." msgstr "" #: src/wizard_window.c:318 msgid "Please select a Certificate Authority." msgstr "" #: src/wizard_window.c:325 msgid "Invalid Certificate Authority selected." msgstr "" #: src/wizard_window.c:412 msgid "No Certificate Authority found. Please create a CA first." msgstr "" gnomint-1.6.4/po/sv.gmo0000644000000000000000000004516515212761320013517 0ustar00rootrootl9  N;#  . CAM1 !;Vl !3Gb( @8D} (CLenr&&,(0+AmDD / :EZ"m+ ^fyA"(:B` {C @!bx.5 )3]Gz YT d 9s % *  !!&!'@!"h! ! !!#!!!"""9" J"X"r" """ """ "##2#C# a#k#V###&$V?$$!$$$ $&%*=% h%2t%% %%1%%&&/9&i&&&& & & &&'!'4'R' k'(''''-' (%( 9(+Z((( ((_(3)'J)/r)()%)s)ze*M* .+<+@+Q+b+k+q+3y+3+ ++,, ,,/,3, N,4o,,,,,`,2- 8-C-T-[-n-.// ///0/NA//#D0 h0 v0000I071I1b1q1)t1!1-112*2G2_2 {222!2222313.J3y333?373'/4 W4d4v4{44444444555&.5#U5y5"55 5 5 5,56%#6PI6S66 677%.7!T7v7)7 777b7kQ8B8999"$9G9 b9Up9 99 9: :<:\:n::.:3:;(%;!N;jp; ;;; <'<-<?<FP<$<'<<<< ='$=#L= p= {==='=(= >&>8>I>g> >>> >>> >>" ?/??? U? `?Xm???9?T/@@@@@7@*!A-LA zA;AA A A/AB#B;B)[BBBB B B B%B C?C NC oCC C'CCD.D(6D_DhD yD.DDD DDND4AE2vE;E.E-FBFF]LGGG G G GGG,H71HiHyH HH HHHHH5 I?IHINIVI\tIIIIIsJB)<G/{rCKwyekp P#2\b!tF`Eo8^qsf%& ;6,OT@Qc UZ9_-0}x z:RuJYL(|Ad[iN=MIm 5h gS134j>XW.?nl]~7V$"'vD+*aH Revocation Error. OK. (unknown)Emmited byValidityExport the Certificate Signing Request to a public file, in PEM format.Export the saved private key to a PKCS#8 password-protected file. This file should only be accessed by the subject of the Certificate Signing Request.#Description#Activated onActivationAdd _Certificate RequestAdd an autosigned CAAlgorithmAre you sure you want to delete this Certificate Signing Request?Are you sure you want to revoke this certificate?Are you sure? Yes/[No] Both parts.CACA creation process finishedCA database creation failedCA generated successfullyCRL generated successfullyCSR couldn't be savedCSR creation process finishedCSR generated successfullyCSR generation failedCertificateCertificate PoliciesCertificate exported successfullyCertificate generation failedCertificate propertiesCertificate signingCertificates in Database: Change CA password - gnoMintChange database pass_wordChange password for the current databaseChange the given CA policyChoose private key file. gnoMintCityClose current file and create a new database with given filenameClose current file and open the file with given filenameClose database and exit programCode signingCommon Name (CN)CountryCountry:Create a new databaseCreate new CA databaseCreating CA databaseCreating new CA - gnoMintCreation process cancelledCriticalCurrent opened file: %s DNS NameDSAData enciphermentDatabase password protection - gnoMintDelete the given CSR from the databaseDetailsDiffie-Hellman parameters saved successfullyDigital signatureDirectory NameE_xportEmail protectionEnter new password again for confirmation:Enter password - gnoMintError creating private key: %dError while changing database password. The operation was cancelled.Error while removing database password. The operation was cancelled.ExpirationExpires onExport CSR - gnoMintExport certificateExport certificate signing requestExport crypted private keyExport optionsExport whole certificate in PKCS#12 packageExtensionsExtrac_t private keyExtract Private KeyExtract the private key of the CSR with the given internal id and saves it into the given fileExtract the private key of the certificate with the given internal id and saves it into the given fileExtract the private key of the selected item into a external fileFALSEFile '%s' opened GeneralGeneral Preferences - gnoMintGenerate D_H parameters...Generate _CRLGenerate a new DH-parameter set, saving it into the file Generating CSRGenerating new DSA key pairHours between CRL updates:IPIP AddressId. Is CA? Certificate Subject Key in DB? Activation ExpirationImport a single file.Import a whole directory.Import selection - gnoMintImport the file with the given name Import the given directory, as a OpenSSL-CA directoryIncorrect number of parameters. Insert passphrase (8 characters or more):Insert passphrase (confirm):Invalid command. Try 'help' for getting a list of recognized commands. IssuerKey UsageKey enciphermentKey generation failedList the certificates in database. With option --see-revoked, lists also the revoked onesMD5 fingerprintMD5FINGERPRINTManage X.509 certificates and CAs, easily and graphicallyMonths before certificate expiration:Months before root certificate expiration:NameNew CA - gnoMintNew CRL - gnoMintNew Certificate - gnoMintNew Diffie-Hellman parameters - gnoMintNew certificate Common Name (CN):Not AfterNot BeforeNumber of CSRs in file: %d Number of certificates in file: %d Only the private key (crypted).Only the private key (uncrypted).Only the pu_blic part.Open CA databaseOpen _recentsOpen an existing databaseOpening database %s...OrganizationOrganization (O)Organization Unit:Organization:Organizational Unit (OU)Organizational unitParametersPassword (confirm):Password changed successfullyPassword protectPassword removed successfullyPassword:Please, choose the file:Please, choose which part of the saved Certificate Signing Request you want to export:Please, enter current password:Please, enter new password:Please, enter the prime size, in bits:Please, select the CA for which a Certificate Revocation List is going to be created:Private key bit length:Private key exported successfullyPrivate key for %sPrivate key type:Problem when importing '%s' fileProblem when opening '%s' CA database Problem when opening new '%s' CA database RFC822 NameRemember this password during this gnoMint sessionRevo_keRevocationRevokeRevoke the certificate with the given internal IDSHA1FINGERPRINTSave CA database as...Save Diffie-Hellman parametersSave the current file with a different filenameSaving CSR in databaseSelect PEM file to importSelect directory to importSerialSerial NumberSerial numberSet the given program preferenceShow (this) help messageShow CA policyShow about messageShow distribution informationShow program preferencesShow properties of the given CSRShow properties of the given certificateShow version informationShow warranty informationSignSign the selected Certificate Signing RequestSignatureSignature AlgorithmStart a new CSR creation processStart a new self-signed CA creation processState or Province nameSubjectSyntax: %s TRUEThe current password you have entered doesn't match with the actual current database password.The file already exists, so it will be overwritten.There was an error while exporting CSR.There was an error while exporting certificate.There was an error while generating CRL.There was an error while writing CRL.This action requires using one or more private keys saved in the CA database. Please insert the database password.This is free software, and you are welcome to redistribute it under certain conditions; type 'distribution' for details. This program comes with ABSOLUTELY NO WARRANTY; for details type 'warranty'. Time stampingURIUnexpected errorUnpaired quotes ValidityValueVersionWhether the certificate requests should be visible.Whether the revoked certificates should be visible.Window size_Add self-signed CA_Edit_Help_Import_New certificate database_No_Open certificate database_Save certificate database as..._Save filename in the database for automatic loading_Sign_ViewgnoMintgnoMint X.509 CA ManagergnoMint is a program for creating and managing Certification Authorities, and their certificateslabelmay differmust be the samepage 3translator-creditsProject-Id-Version: gnomint Report-Msgid-Bugs-To: davefx@gmail.com PO-Revision-Date: 2010-07-09 11:48+0000 Last-Translator: David Marín Language-Team: Swedish Language: sv MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2010-08-11 09:00+0000 X-Generator: Launchpad (build Unknown) tab] Återkallelse Fel. OK. (okänd)Emitterat avGiltighetExportera Certificate Signing Request till en publik fil, i PEM-format.Exportera den sparade privata nyckeln till en lösenordsskyddad PKCS#8-fil. Filen bör endast kunna kommas åt av den till vilken Certificate Signing Request är utfärdat.#Beskrivning#Aktiverat denAktiveringLägg till _certifikatbegäranLägg till en autosignerad CAAlgoritmÄr du säker på att du vill ta bort denna certifikatsigneringsbegäran?Är du säker på att du vill spärra detta certifikat?Är Du säker? Yes/[No] Båda delarna.CAProcess för CA-skapande färdigställdesCA-databasgenerering misslyckadesCertifikatutfärdare genererades utan problemCRL-generering lyckadesCSR kunde inte sparasProcess för CSR-skapande färdigställdesCSR-generering lyckadesCSR-generering misslyckadesCertifikatCertifikatpolicyCertifikatet exporteradesCertifikatgenerering misslyckadesCertifikategenskaperCertifikatsigneringCertifikat i databas: Ändra CA-lösenord - gnoMintÄndra databaslösen_ordÄndra lösenordet för den aktuella databasenÄndra angiven CA-policyVälj privat nyckelfil .gnoMintStadStäng aktuell fil och skapa en ny databas med angivet filnamn.Stäng aktuell fil och öppna filen med angivet filnamnStäng databasen och avsluta programmetKodsigneringVanligt namn (CN)LandLand:Skapa en ny databasSkapa ny CA-databasSkapar CA-databasSkapar en ny CA - gnoMintSkapandeprocessen avbrötsKritisktAktuell öppnad fil: %s DNS-namnDSADatakrypteringLösenordsskydd för databas - gnoMintTa bort angiven CSR från databasenDetaljerDiffie-Hellman-parametrar sparadesDigital signaturKatalognamnE_xporteraE-postskyddAnge nytt lösenord igen för bekräftelse:Skriv in lösenord - gnoMintFel vid skapande av privat nyckel: %dEtt fel inträffade då databasens lösenord skulle bytas. Operationen avbröts.Ett fel inträffade då databasens lösenord skulle tas bort. Operationen avbröts.UtgångUtgår denExportera CSR - gnoMintExportera certifikatExportera certificate signing requestExportera krypterad privat nyckelExportalternativExportera helt certifikat i PKCS#12-paketUtökningarExtrahe_ra privat nyckelExtrahera privat nyckelExtraherar den privata nyckeln ur CSR med angivet internt id och sparar den till den angivna filenExtraherar den privata nyckeln ur certifikatet med angivet internt id och sparar den till den angivna filenExtrahera den privata nyckeln från valt objekt till en extern filFALSKTFilen '%s' öppnad AllmäntAllmänna inställningar - gnoMintGenerera D_H-parametrar...Generera _CRLGenerera ett set nya Diffie–Hellman-parametrar och spara det till filen Genererar CSRGenererar nytt DSA-nyckelparTimmar mellan CRL-uppdateringar:IPIP-adressId. Är CA? Certifikatämne Nyckel i DB? Aktivering UtgångImportera en fil.Importera en hel katalogImportera det valda - gnoMintImportera filen med angivet filnamn Importera angiven katalog som en OpenSSL-CA katalogFelaktigt antal parametrar. Infoga lösenfras (8 eller fler tecken):Infoga lösenfras (bekräftelse):Ogiltigt kommando. Försök med 'help' för att få en lista över kommandon som programmet känner igen. UtfärdareNyckelanvändningNyckelkrypteringNyckelgenerering misslyckadesListaMD5-fingeravtryckMD5FINGERAVTRYCKHantera X.509-certifikat och certifikatutfärdare, enkelt och grafisktMånader innan certifikatet går ut:Månader innan rotcertifikatet går ut:NamnNy CA - gnoMintNy CRL - gnoMintNytt Certifikat - gnoMintNya Diffie-Hellman-parametrar - gnoMintNytt certifikat Vanligt namn (CN):Inte efterInte föreAntal CSR i filen: %d Antal certifikat i filen: %d Enbart den privata nyckeln (krypterad).Enbart den privata nyckeln (okrypterad).Enbart den publika delen.Öppna CA-databasÖppna _tidigareÖppna en existerande databasÖppnar databasen %s...OrganisationOrganisation (O)Organisationsenhet:Organisation:Organisationsenhet (OU)OrganisationsenhetParametrarLösenord (bekräfta):Lösenordet ändrades utan problemLösenordsskyddLösenordet togs bortLösenord:Välj filen:Vänligen välj vilken del av den sparade Certificate Signing Request du vill exportera:Ange aktuellt lösenord:Ange nytt lösenord:Vänligen skriv in primärtalets storlek, i bitar (bits).Vänligen välj den CA för vilken en Certificate Revocation List (CRL) ska skapas:Bitlängd för privat nyckel:Privat nyckel exporteradesPrivat nyckel för %sTyp av privat nyckel:Ett problem inträffade vid importerandet av filen '%s'Problem vid öppnandet av '%s' CA-databas Problem vid öppnandet av ny '%s' CA-databas RFC822-namnKom ihåg det här lösenordet under denna gnoMint-session.Spä_rraSpärrningÅterkallaÅterkallar certifikatet med angivet internt idSHA1FINGERAVTRYCKSpara CA-databas som...Spara Diffie-Hellman-parametrarSpara aktuell fil under ett annat filnamnSparar CSR i databasenVälj PEM-fil att importeraVälj katalog att importeraSerienummerSerienummerSerienummerStäll in angiven programinställningVisa hjälpmeddelande (det här)Visa CA-policyVisa meddelandet "Om programmet"Visa information om distributionVisa programmets inställningarVisa egenskaper för angiven CSRVisa egenskaper för angivet certifikatVisa versionsinformationVisa information om garantiSigneraSignera vald Certificate Signing RequestSignaturSignaturalgoritmPåbörja skapandet av en ny CSRPåbörja skapandet av en ny självsignerad CALän eller regionÄmneSyntax: %s SANTDet lösenord Du skrivit in är inte det som behövs för den valda databasen.Filen finns redan, så den kommer att skrivas över.Det inträffade ett fel då CSR skulle exporteras.Det inträffade ett fel då certifikatet skulle exporteras.Det inträffade ett fel vid generering av CRL.Det inträffade ett fel vid skrivning av CRL.Det här valet kräver användandet av minst en privat nyckel sparad i CA-databasen. Vänligen skriv in lösenordet för databasen.Det här är fri programvara, och Du är välkommen att sprida den under vissa förhållanden; skriv 'distribution' för detaljer. Det här programmet levereras UTAN NÅGON SOM HELST GARANTI; för detaljer skriv "warranty". TidsstämplingURIOväntat felEj ihop-parade citationstecken. GiltighetVärdeVersionHuruvida certifikatbegäran ska vara synlig.Huruvida de återkallade certifikaten ska vara synliga.Fönsterstorlek_Lägg till självsignerat CAR_edigera_Hjälp_Importera_Ny certifikatdatabas_Nej_Öppna certifikatdatabas_Spara certifikatdatabas som..._Spara filnamn i databasen för automatisk inläsningSi_gnera_VisagnoMintCertifikatutfärdaren gnoMintgnoMint är ett program för att skapa och hantera certifikatutfärdare och deras certifikatetikettkan skilja sigmåste vara sammasida 3Launchpad Contributions: Daniel Nylander https://launchpad.net/~yeager Marcus E https://launchpad.net/~marcus+egnomint-1.6.4/po/ca.po0000644000000000000000000037573115212761317013321 0ustar00rootroot# Catalan translation for gnomint # Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 # This file is distributed under the same license as the gnomint package. # FIRST AUTHOR , 2009. # msgid "" msgstr "" "Project-Id-Version: gnomint\n" "Report-Msgid-Bugs-To: davefx@gmail.com\n" "POT-Creation-Date: 2026-06-12 10:43+0000\n" "PO-Revision-Date: 2010-04-05 14:02+0000\n" "Last-Translator: Sergio Oller \n" "Language-Team: Catalan \n" "Language: ca\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-08-11 09:00+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: gconf/org.gnome.gnomint.gschema.xml:7 msgid "Window size" msgstr "Mida de la finestra" #: gconf/org.gnome.gnomint.gschema.xml:8 #, fuzzy msgid "" "The (width,length) size gnoMint should take when started. This cannot be " "smaller than (320,200)." msgstr "" "La mida (amplada, alçada) de gnoMint al iniciar-se. No pot ser menor a " "(320,200)." #: gconf/org.gnome.gnomint.gschema.xml:16 msgid "Revoked certificates visibility" msgstr "Visibilitat de certificats revocats" #: gconf/org.gnome.gnomint.gschema.xml:17 msgid "Whether the revoked certificates should be visible." msgstr "Si els certificats revocats han de ser visibles" #: gconf/org.gnome.gnomint.gschema.xml:24 #, fuzzy msgid "Expired certificates visibility" msgstr "Visibilitat de certificats revocats" #: gconf/org.gnome.gnomint.gschema.xml:25 msgid "" "Whether already-expired certificates should be visible in the certificates " "tree. CAs are always visible regardless of this setting so that any still-" "valid certificates they signed remain reachable." msgstr "" #: gconf/org.gnome.gnomint.gschema.xml:35 msgid "Days before expiration to highlight certificates in amber" msgstr "" #: gconf/org.gnome.gnomint.gschema.xml:36 msgid "" "Certificates whose effective validity ends within this many days are shown " "in amber in the certificates tree, as a heads-up that they should be renewed " "soon. Setting this to 0 disables the amber highlight (certificates appear " "either normally or in gray for already-expired)." msgstr "" #: gconf/org.gnome.gnomint.gschema.xml:47 msgid "Certificate requests visibility" msgstr "Visibilitat de sol·licituds de certificació" #: gconf/org.gnome.gnomint.gschema.xml:48 msgid "Whether the certificate requests should be visible." msgstr "Si les sol·licituds de certificat han de ser visibles." #: gconf/org.gnome.gnomint.gschema.xml:55 msgid "Automatic exporting of certificates for gnome-keyring" msgstr "Exporta automàticament els certificats a gnome-keyring" #: gconf/org.gnome.gnomint.gschema.xml:56 #, fuzzy msgid "" "Whether the created or imported certificates are automatically exported to " "gnome-keyring certificate-store." msgstr "" "Si els certificats tot just creats o importats són exportats automàticament " "al magatzem de certificats de gnome-keyring." #: gui/certificate_popup_menu.ui:7 gui/csr_popup_menu.ui:7 #: gui/main_window.ui:45 #, fuzzy msgid "Properties" msgstr "Propietats de la CA" #: gui/certificate_popup_menu.ui:13 gui/main_window.ui:35 #, fuzzy msgid "Export full c_hain..." msgstr "Exporta certificat" #: gui/certificate_popup_menu.ui:17 gui/csr_popup_menu.ui:13 #: gui/main_window.ui:34 msgid "E_xport" msgstr "E_xporta" #: gui/certificate_popup_menu.ui:21 gui/csr_popup_menu.ui:17 #: gui/main_window.ui:23 msgid "Extrac_t private key" msgstr "Ex_treure clau privada" #: gui/certificate_popup_menu.ui:27 gui/main_window.ui:24 msgid "Re_new with fresh key" msgstr "" #: gui/certificate_popup_menu.ui:31 msgid "_Compare with PEM file…" msgstr "" #: gui/certificate_popup_menu.ui:35 gui/main_window.ui:25 msgid "Revo_ke" msgstr "Revo_ca" #: gui/certificate_popup_menu.ui:41 gui/main_window.ui:21 #, fuzzy msgid "Add _Web Server Certificate (wizard)" msgstr "Certificat" #: gui/certificate_popup_menu.ui:45 gui/main_window.ui:22 #, fuzzy msgid "Add _Email Server Certificate (wizard)" msgstr "Servidor web TLS" #: gui/certificate_properties_dialog.ui:19 msgid "Certificate properties - gnoMint" msgstr "Propietats del certificat - gnoMint" #: gui/certificate_properties_dialog.ui:54 #, fuzzy msgid "This certificate has been verified for the following uses:" msgstr "S'ha verificat aquest certificat per als següents usos:" #: gui/certificate_properties_dialog.ui:77 msgid "MD5FINGERPRINT" msgstr "MD5FINGERPRINT" #: gui/certificate_properties_dialog.ui:88 msgid "SHA1FINGERPRINT" msgstr "SHA1FINGERPRINT" #: gui/certificate_properties_dialog.ui:99 #: gui/certificate_properties_dialog.ui:132 #: gui/certificate_properties_dialog.ui:176 #: gui/certificate_properties_dialog.ui:231 gui/creation_process_window.ui:15 #: gui/creation_process_window.ui:61 gui/csr_properties_dialog.ui:109 #: gui/new_ca_window.ui:56 gui/new_ca_window.ui:306 gui/new_ca_window.ui:521 #: gui/new_req_window.ui:46 gui/new_req_window.ui:157 gui/new_req_window.ui:413 msgid " " msgstr " " #: gui/certificate_properties_dialog.ui:110 msgid "CertExpirationDate" msgstr "Data de caducitat" #: gui/certificate_properties_dialog.ui:121 msgid "CertActivationDate" msgstr "Data d'activació" #: gui/certificate_properties_dialog.ui:143 msgid "CAOU" msgstr "CAOU" #: gui/certificate_properties_dialog.ui:154 msgid "CAO" msgstr "CAO" #: gui/certificate_properties_dialog.ui:165 msgid "CACN" msgstr "CACN" #: gui/certificate_properties_dialog.ui:187 msgid "CertSN" msgstr "Núm de sèrie" #: gui/certificate_properties_dialog.ui:198 gui/csr_properties_dialog.ui:63 #, fuzzy msgid "SubjectOU" msgstr "Unitat organitzacional (OU)" #: gui/certificate_properties_dialog.ui:209 gui/csr_properties_dialog.ui:87 #, fuzzy msgid "SubjectO" msgstr "Organització (O)" #: gui/certificate_properties_dialog.ui:220 gui/csr_properties_dialog.ui:98 #, fuzzy msgid "SubjectCN" msgstr "Nom habitual (CN)" #: gui/certificate_properties_dialog.ui:242 msgid "MD5 fingerprint" msgstr "Emprempta digital MD5" #: gui/certificate_properties_dialog.ui:253 #, fuzzy msgid "SHA1 fingerprint" msgstr "Empremta digital SHA1" #: gui/certificate_properties_dialog.ui:264 #, fuzzy msgid "Fingerprints" msgstr "Empremtes digitals:\n" #: gui/certificate_properties_dialog.ui:276 msgid "Expires on" msgstr "Caduca el" #: gui/certificate_properties_dialog.ui:287 msgid "Activated on" msgstr "Activat a" #: gui/certificate_properties_dialog.ui:298 msgid "Validity" msgstr "Validesa" #: gui/certificate_properties_dialog.ui:310 #: gui/certificate_properties_dialog.ui:389 gui/csr_properties_dialog.ui:120 msgid "Organizational Unit (OU)" msgstr "Unitat organitzativa (OU)" #: gui/certificate_properties_dialog.ui:321 #: gui/certificate_properties_dialog.ui:400 gui/csr_properties_dialog.ui:142 msgid "Organization (O)" msgstr "Organització (O)" #: gui/certificate_properties_dialog.ui:332 #: gui/certificate_properties_dialog.ui:411 gui/csr_properties_dialog.ui:153 msgid "Common Name (CN)" msgstr "Nom comú (CN)" #: gui/certificate_properties_dialog.ui:343 msgid "Emmited by" msgstr "Emès per" #: gui/certificate_properties_dialog.ui:355 #, fuzzy msgid "Subject Alternative Names" msgstr "Persona certificada" #: gui/certificate_properties_dialog.ui:378 msgid "Serial number" msgstr "Número de sèrie" #: gui/certificate_properties_dialog.ui:422 #, fuzzy msgid "Certificate subject" msgstr "Certificats" #: gui/certificate_properties_dialog.ui:434 #, fuzzy msgid "SHA256FINGERPRINT" msgstr "SHA1FINGERPRINT" #: gui/certificate_properties_dialog.ui:449 #, fuzzy msgid "SHA256 fingerprint" msgstr "Empremta digital SHA1" #: gui/certificate_properties_dialog.ui:460 #, fuzzy msgid "SHA512FINGERPRINT" msgstr "SHA1FINGERPRINT" #: gui/certificate_properties_dialog.ui:475 #, fuzzy msgid "SHA512 fingerprint" msgstr "Empremta digital SHA1" #: gui/certificate_properties_dialog.ui:486 #: gui/certificate_properties_dialog.ui:509 gui/csr_properties_dialog.ui:176 #, fuzzy msgid "Email address" msgstr "Adreça IP" #: gui/certificate_properties_dialog.ui:536 gui/csr_properties_dialog.ui:203 msgid "General" msgstr "General" #: gui/certificate_properties_dialog.ui:557 #, fuzzy msgid "Certificate hierarchy" msgstr "Certificats" #: gui/certificate_properties_dialog.ui:582 #, fuzzy msgid "Certificate fields" msgstr "Certificats" #: gui/certificate_properties_dialog.ui:605 msgid "Details" msgstr "Detalls" #: gui/certificate_properties_dialog.ui:623 #, fuzzy msgid "" "\n" "It is recommended that all the certificates generated by a CA\n" "share the same properties.\n" "If you want to generate certificates with different properties, you\n" "should create a hierarchy of CAs, each one with its own policy for\n" "certificate generation.\n" "\n" "Please, define the maximum set of properties for the\n" "certificates that this CA will be able to generate:\n" msgstr "" "\n" "Es recomana que tots els certificats generats per la CA comparteixin les " "mateixes propietats.\n" "Si desitja generar certificats amb propietats diferents, hauria de crear una " "jerarquia de CAs, cadascuna amb la seva pròpia política per la generació de " "certificats.\n" "\n" "Defineixi el conjunt màxim de propietats pels certificats que aquesta " "Entitat Certificadora (CA) podrà atorgar:\n" #: gui/certificate_properties_dialog.ui:649 #, fuzzy msgid "" "Maximum number of months before\n" "expiration of the new generated certificates:" msgstr "Nombre màxim de mesos abans de la caducitat dels nous certificats:" #: gui/certificate_properties_dialog.ui:686 msgid "Hours between CRL updates:" msgstr "Hores entre les actualitzacions de la CRL:" #: gui/certificate_properties_dialog.ui:711 #, fuzzy msgid "CRL distribution URL:" msgstr "Mostra informació sobre la distribució del programa" #: gui/certificate_properties_dialog.ui:727 #, fuzzy msgid "CRL Properties" msgstr "Certificats" #: gui/certificate_properties_dialog.ui:750 msgid "Country" msgstr "País" #: gui/certificate_properties_dialog.ui:761 msgid "State or Province name" msgstr "Nom de l'estat o província" #: gui/certificate_properties_dialog.ui:778 #: gui/certificate_properties_dialog.ui:802 #: gui/certificate_properties_dialog.ui:859 #: gui/certificate_properties_dialog.ui:883 #: gui/certificate_properties_dialog.ui:907 msgid "must be the same" msgstr "ha de coincidir" #: gui/certificate_properties_dialog.ui:786 #: gui/certificate_properties_dialog.ui:810 #: gui/certificate_properties_dialog.ui:867 #: gui/certificate_properties_dialog.ui:891 #: gui/certificate_properties_dialog.ui:915 msgid "may differ" msgstr "pot variar" #: gui/certificate_properties_dialog.ui:820 msgid "City" msgstr "Ciutat" #: gui/certificate_properties_dialog.ui:831 msgid "Organization" msgstr "Organització" #: gui/certificate_properties_dialog.ui:842 msgid "Organizational unit" msgstr "Unitat organitzativa" #: gui/certificate_properties_dialog.ui:927 #, fuzzy msgid "Inherited fields from CA subject" msgstr "Camps heretats del titular de l'entitat certificadora (CA)" #: gui/certificate_properties_dialog.ui:952 gui/new_cert_window.ui:464 #: src/tls.c:1463 msgid "Certification Authority" msgstr "Entitat certificadora" #: gui/certificate_properties_dialog.ui:963 gui/new_cert_window.ui:487 #: src/certificate_properties.c:445 src/tls.c:1470 msgid "Non repudiation" msgstr "No repudi" #: gui/certificate_properties_dialog.ui:974 gui/new_cert_window.ui:440 #: src/certificate_properties.c:447 src/tls.c:1472 msgid "Key encipherment" msgstr "Xifratge de claus" #: gui/certificate_properties_dialog.ui:986 gui/new_cert_window.ui:428 #: src/certificate_properties.c:449 src/tls.c:1474 msgid "Data encipherment" msgstr "Xifratge de dades" #: gui/certificate_properties_dialog.ui:998 gui/new_cert_window.ui:475 #: src/certificate_properties.c:451 src/tls.c:1476 msgid "Key agreement" msgstr "Negociació de claus" #: gui/certificate_properties_dialog.ui:1010 gui/new_cert_window.ui:452 #: src/certificate_properties.c:443 src/tls.c:1468 msgid "Digital signature" msgstr "Signatura digital" #: gui/certificate_properties_dialog.ui:1022 gui/new_cert_window.ui:498 #: src/certificate_properties.c:455 src/tls.c:1480 msgid "CRL signing" msgstr "Signatura de CRLs" #: gui/certificate_properties_dialog.ui:1043 #, fuzzy msgid "Uses of new generated certificates" msgstr "Usos possibles dels nous certificats generats" #: gui/certificate_properties_dialog.ui:1067 gui/new_cert_window.ui:621 #: src/certificate_properties.c:1480 src/tls.c:1500 msgid "Email protection" msgstr "Protecció de correu electrònic" #: gui/certificate_properties_dialog.ui:1079 gui/new_cert_window.ui:610 #: src/certificate_properties.c:1479 src/tls.c:1498 msgid "Code signing" msgstr "Signatura de codi" #: gui/certificate_properties_dialog.ui:1090 gui/new_cert_window.ui:598 msgid "TLS Web client" msgstr "Client WWW TLS" #: gui/certificate_properties_dialog.ui:1102 gui/new_cert_window.ui:586 #, fuzzy msgid "TLS Web server" msgstr "Servidor web TLS" #: gui/certificate_properties_dialog.ui:1114 gui/new_cert_window.ui:575 #: src/certificate_properties.c:1481 src/tls.c:1502 msgid "Time stamping" msgstr "Marca horària" #: gui/certificate_properties_dialog.ui:1125 gui/new_cert_window.ui:564 #: src/certificate_properties.c:1483 src/tls.c:1506 msgid "Any purpose" msgstr "Qualsevol propòsit" #: gui/certificate_properties_dialog.ui:1136 gui/new_cert_window.ui:553 #: src/certificate_properties.c:1482 src/tls.c:1504 msgid "OCSP signing" msgstr "Signatura d'OCSP" #: gui/certificate_properties_dialog.ui:1159 #, fuzzy msgid "Purposes of new generated certificates" msgstr "Finalitats possibles dels nous certificats" #: gui/certificate_properties_dialog.ui:1171 msgid "CA Policy" msgstr "Política de la CA" #: gui/certificate_properties_dialog.ui:1189 gui/csr_properties_dialog.ui:221 #: src/ca.c:2199 msgid "_Close" msgstr "" #: gui/change_password_dialog.ui:9 msgid "Database password protection - gnoMint" msgstr "Contrasenya de protecció de la base de dades - gnoMint" #: gui/change_password_dialog.ui:34 msgid "_Yes" msgstr "" #: gui/change_password_dialog.ui:43 msgid "_No" msgstr "_No" #: gui/change_password_dialog.ui:53 msgid "" "Enter new password again \n" "for confirmation:" msgstr "" "Torni a introduir la nova \n" "contrasenya per confirmar:" #: gui/change_password_dialog.ui:86 msgid "" "Please, enter new \n" "password:" msgstr "" "Introduïu la nova\n" "contrasenya:" #: gui/change_password_dialog.ui:98 msgid "" "Please, enter current\n" "password:" msgstr "" "Introduïu la contrasenya \n" "actual:" #: gui/change_password_dialog.ui:121 #, fuzzy msgid "" "Protect CA database private\n" "keys with password:" msgstr "" "Protegeix les claus privades de la base \n" "de dades de la CA amb una contrasenya:" #: gui/change_password_dialog.ui:143 gui/export_certificate_dialog.ui:149 #: gui/get_db_password_dialog.ui:74 gui/get_pkey_dialog.ui:78 #: gui/import_file_or_directory_dialog.ui:94 gui/import_password_dialog.ui:90 #: gui/new_crl_dialog.ui:53 gui/san_editor_dialog.ui:93 #, fuzzy msgid "Cancel" msgstr "Cancel·la" #: gui/change_password_dialog.ui:149 gui/get_db_password_dialog.ui:80 #: gui/get_pkey_dialog.ui:84 gui/import_password_dialog.ui:96 #: gui/new_crl_dialog.ui:59 gui/san_editor_dialog.ui:99 msgid "OK" msgstr "" #: gui/creation_process_window.ui:6 msgid "Creating new CA - gnoMint" msgstr "Creant una CA nova - gnoMint" #: gui/creation_process_window.ui:31 #, fuzzy msgid "Creating CA Root Certificate" msgstr "Creant un certificat arrel de la CA" #: gui/creation_process_window.ui:51 gui/get_password_dialog.ui:90 #: gui/new_ca_window.ui:257 gui/new_ca_window.ui:464 gui/new_ca_window.ui:576 #: gui/new_cert_window.ui:257 gui/new_cert_window.ui:339 #: gui/new_cert_window.ui:661 gui/new_req_window.ui:107 #: gui/new_req_window.ui:357 gui/new_req_window.ui:548 gui/wizard_window.ui:117 msgid "_Cancel" msgstr "" #: gui/csr_popup_menu.ui:23 gui/main_window.ui:26 msgid "_Sign" msgstr "_Signa" #: gui/csr_popup_menu.ui:27 gui/main_window.ui:27 msgid "Delete" msgstr "" #: gui/csr_properties_dialog.ui:5 msgid "CSR properties - gnoMint" msgstr "Propietats de la sol·licitud - gnoMint" #: gui/csr_properties_dialog.ui:41 #, fuzzy msgid "" "This Certificate Signing Request has its corresponding private key saved " "in the internal database." msgstr "" "La clau privada corresponent a aquesta petició de certificació està " "emmagatzemada a la base de dades interna." #: gui/csr_properties_dialog.ui:74 gui/new_cert_window.ui:230 #: src/csr_properties.c:86 src/new_cert.c:105 #, fuzzy msgid "None" msgstr "Cap." #: gui/csr_properties_dialog.ui:131 msgid "Subject Alternative Name (SAN)" msgstr "" #: gui/csr_properties_dialog.ui:164 msgid "CSR subject" msgstr "Titular de la sol·licitud" #: gui/dh_parameters_dialog.ui:16 msgid "New Diffie-Hellman parameters - gnoMint" msgstr "Nous paràmetres Diffie-Hellman - gnoMint" #: gui/dh_parameters_dialog.ui:27 #, fuzzy msgid "" "You are about to create and export a set of\n" "Diffie·Hellman parameters into a PKCS#3 structure file." msgstr "" "Ara es crearà i s'exportarà un conjunt de paràmetres Diffie-Hellman a un " "fitxer amb format PKCS#3." #: gui/dh_parameters_dialog.ui:38 #, fuzzy msgid "" "PKCS#3 files containing Diffie·Hellman parameters are used by some " "cryptographic\n" "applications for a secure interchange of their keys over insecure channels." msgstr "" "Els fitxers PKCS#3 amb paràmetres Diffie-Hellman s'utilitzen per " "algunes aplicacions\n" "criptogràfiques per a realitzar intercanvis segurs de les seves claus a " "canals insegurs." #: gui/dh_parameters_dialog.ui:48 msgid "Please, enter the prime size, in bits:" msgstr "Introduïu la mida del nombre primer, en bits:" #: gui/dh_parameters_dialog.ui:71 msgid "Close" msgstr "" #: gui/dh_parameters_dialog.ui:77 #, fuzzy msgid "Generate" msgstr "General" #: gui/export_certificate_dialog.ui:5 msgid "Export certificate - gnoMint" msgstr "Exporta el certificat - gnoMint" #: gui/export_certificate_dialog.ui:22 #, fuzzy msgid "" "Please, choose which part of the\n" "saved certificate you want to export:" msgstr "Seleccioneu quina part emmagatzemada del certificat voleu exportar:" #: gui/export_certificate_dialog.ui:36 msgid "Only the pu_blic part." msgstr "Només la part pú_blica" #: gui/export_certificate_dialog.ui:49 #, fuzzy msgid "Export only the certificate to a public file, in PEM format." msgstr "Exporta només el certificat a un fitxer públic en format PEM" #: gui/export_certificate_dialog.ui:60 msgid "Only the private key (crypted)." msgstr "Només la clau privada (xifrada)." #: gui/export_certificate_dialog.ui:74 #, fuzzy msgid "" "Export the saved private key to a PKCS#8 password-\n" "protected file. This file should only be accessed by the\n" "subject of the certificate." msgstr "" "Exporta la clau privada emmagatzemada a un fitxer PKCS#8 protegit amb " "contrasenya. Aquest fitxer només ha de ser accessible pel titular del " "certificat. " #: gui/export_certificate_dialog.ui:87 msgid "Only the private key (uncrypted)." msgstr "Només la clau privada (sense xifrar)." #: gui/export_certificate_dialog.ui:100 #, fuzzy msgid "" "Export the saved private key to a PEM file. This option\n" "should only be used for exporting certificates that will be\n" "used in unattended servers." msgstr "" "Exporta la clau privada emmagatzemada a un fitxer PEM. Aquesta opció " "només s'ha d'utilitzar per exportar certificats que s'utilitzin en servidors " "desatesos." #: gui/export_certificate_dialog.ui:113 msgid "Both parts." msgstr "Ambdues parts." #: gui/export_certificate_dialog.ui:126 #, fuzzy msgid "" "Export both (private and public) parts to a password-\n" "protected PKCS#12 file. This kind of file can be imported\n" "by other common programs, such as web or mail clients." msgstr "" "Exporta ambdues parts (pública i privada) a un fitxer PKCS#12 protegit " "amb contrasenya. Aquest tipus de fitxers poden ser importats per altres " "programes comuns, com ara clients web o de correu electrònic." #: gui/export_certificate_dialog.ui:155 #, fuzzy msgid "Export" msgstr "E_xporta" #: gui/get_db_password_dialog.ui:5 gui/get_password_dialog.ui:5 #: gui/import_password_dialog.ui:5 msgid "Enter password - gnoMint" msgstr "Introdueixi contrasenya - gnoMint" #: gui/get_db_password_dialog.ui:20 msgid "" "This action requires using one or more private keys saved in the CA " "database.\n" "\n" "Please insert the database password." msgstr "" "Aquesta acció requereix emprar una o més claus privades emmagatzemades en la " "base de dades de la AC.\n" "\n" "Introduïu la contrasenya de la base de dades." #: gui/get_db_password_dialog.ui:41 gui/get_password_dialog.ui:68 #: gui/import_password_dialog.ui:65 msgid "Password:" msgstr "Contrasenya:" #: gui/get_db_password_dialog.ui:58 msgid "Remember this password during this gnoMint session" msgstr "Recorda aquesta contrasenya durant aquesta sessió de gnoMint" #: gui/get_password_dialog.ui:19 #, fuzzy msgid "Please, enter password" msgstr "Introduïu la contrasenya:" #: gui/get_password_dialog.ui:56 msgid "Password (confirm):" msgstr "Contrasenya (confirmar):" #: gui/get_password_dialog.ui:97 gui/new_ca_window.ui:592 #: gui/new_cert_window.ui:676 gui/new_req_window.ui:564 #: gui/preferences_dialog.ui:51 msgid "_OK" msgstr "" #: gui/get_pkey_dialog.ui:9 msgid "Choose private key file. gnoMint" msgstr "Sel·lecciona el fitxer amb la clau privada. gnoMint" #: gui/get_pkey_dialog.ui:22 #, fuzzy msgid "" "Choose private key file\n" "\n" "For doing the selected operation, you must provide the\n" "file where resides the private key corresponding to the\n" "certificate:" msgstr "" "Seleccioneu el fitxer amb la clau privada\n" "\n" "Per a realitzar la operació seleccionada, heu de proporcionar el fitxer on " "resideix la clau privada corresponent al certificat:" #: gui/get_pkey_dialog.ui:37 msgid "Certificate DN" msgstr "Descriptor (DN) del certificat" #: gui/get_pkey_dialog.ui:43 msgid "Please, choose the file:" msgstr "Seleccioneu el fitxer:" #: gui/get_pkey_dialog.ui:62 msgid "_Save filename in the database for automatic loading" msgstr "" "_Desa el nom del fitxer a la base de dades per carregar-lo automàticament" #: gui/org.gnome.gnomint.appdata.xml.in:7 gui/main_window.ui:62 msgid "gnoMint" msgstr "gnoMint" #: gui/org.gnome.gnomint.appdata.xml.in:8 #, fuzzy msgid "X.509 Certification Authority management tool" msgstr "* Ús com a entitat certificadora habilitat.\n" #: gui/org.gnome.gnomint.appdata.xml.in:11 msgid "" "gnoMint is a tool for easily creating and managing certification authorities " "(CAs). It provides fancy visualization of all your certificates, and their " "properties, as well as an easy management of the CA activities." msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:16 msgid "With gnoMint you can:" msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:20 #, fuzzy msgid "Create and manage your own Certification Authority (CA)" msgstr "Afegir una nova sol·licitud de signatura del certificat" #: gui/org.gnome.gnomint.appdata.xml.in:21 #, fuzzy msgid "Create and sign certificates for servers and users" msgstr "Creant un certificat arrel de la CA" #: gui/org.gnome.gnomint.appdata.xml.in:22 #, fuzzy msgid "Create and manage Certificate Signing Requests (CSRs)" msgstr "Afegir una nova sol·licitud de signatura del certificat" #: gui/org.gnome.gnomint.appdata.xml.in:23 msgid "" "Export certificates and private keys in several formats (PEM, DER, PKCS#12)" msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:24 #, fuzzy msgid "Revoke certificates and generate Certificate Revocation Lists (CRLs)" msgstr "Genera la llista de revocació de certificats (CRL) actual" #: gui/org.gnome.gnomint.appdata.xml.in:25 #, fuzzy msgid "Import existing certificates and CAs" msgstr "S'ha produït un error signant el certificat" #: gui/org.gnome.gnomint.appdata.xml.in:27 msgid "" "gnoMint provides a simple and intuitive graphical interface based on GTK for " "all these operations, making certificate management accessible even for " "users without deep knowledge of X.509 standards and cryptography." msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:38 #, fuzzy msgid "Main window showing certificate list" msgstr "S'ha produït un error signant el certificat" #: gui/org.gnome.gnomint.desktop.in:2 gui/org.gnome.gnomint.desktop.in:3 msgid "gnoMint X.509 CA Manager" msgstr "Gestor de CAs X.509 gnoMint." #: gui/org.gnome.gnomint.desktop.in:4 msgid "Manage X.509 certificates and CAs, easily and graphically" msgstr "Gestiona CAs i certificats X.509, fàcilment i de forma gràfica" #: gui/org.gnome.gnomint.desktop.in:5 msgid "certificate;x.509;encryption;" msgstr "" #: gui/import_file_or_directory_dialog.ui:9 msgid "Import selection - gnoMint" msgstr "Importa la sel·lecció - gnoMint" #: gui/import_file_or_directory_dialog.ui:24 #, fuzzy msgid "" "Please, choose the more suitable option for\n" "what you want to import:" msgstr "Seleccioneu la opció més adient que representi allò que vol importar:" #: gui/import_file_or_directory_dialog.ui:36 msgid "Import a single file." msgstr "Importar un únic fitxer." #: gui/import_file_or_directory_dialog.ui:48 #, fuzzy msgid "" "Import a single file, encoded in DER or PEM format, containing\n" "certificates, private keys (encrypted or plain), signing\n" "requests (CSRs), revocation lists (CRLs) or PKCS#12\n" "packages." msgstr "" "Importa un únic fitxer, en format DER o PEM, que conté certificats, claus " "privades (xifrades o en net), solicituds de signatura de certificats (CSRs), " "llistes de revocació (CRLs) o paquets PKCS#12." #: gui/import_file_or_directory_dialog.ui:60 msgid "Import a whole directory." msgstr "Importar un directori complet." #: gui/import_file_or_directory_dialog.ui:72 #, fuzzy msgid "" "Import a directory containing the structure of\n" "a whole CA made with OpenSSL ." msgstr "" "Importa directori que contingui l'estructura\n" "complerta d'una CA produïda amb OpenSSL." #: gui/import_file_or_directory_dialog.ui:100 #, fuzzy msgid "Import" msgstr "_Importa" #: gui/import_password_dialog.ui:20 #, fuzzy msgid "" "The whole selected file, or some of its elements, seems to\n" "be cyphered using a password or passphrase.\n" "\n" "For importing the file into gnoMint database, you must\n" "provide an appropiate password." msgstr "" "Tot el fitxer seleccionat, o algun dels elements que el conformen, sembla " "haver estat xifrat amb una contrasenya.\n" "\n" "A fi d'importar el fitxer a la base de dades de gnoMint, ha de proporcionar " "la contrasenya adient." #: gui/import_password_dialog.ui:37 #, fuzzy msgid "" "The part that is being imported has the description:" msgstr "La part que s'importa té la descripció:" #: gui/import_password_dialog.ui:48 msgid "#Description#" msgstr "#Descripció#" #: gui/main_window.ui:6 msgid "_Certificates" msgstr "_Certificats" #: gui/main_window.ui:8 msgid "_New certificate database" msgstr "_Nova base de dades de certificats" #: gui/main_window.ui:9 msgid "_Open certificate database" msgstr "_Obre una base de dades de certificats" #: gui/main_window.ui:10 msgid "Open _recents" msgstr "Obrir _recents" #: gui/main_window.ui:11 msgid "_Save certificate database as..." msgstr "Anomena i De_sa la base de dades..." #: gui/main_window.ui:15 #, fuzzy msgid "Add" msgstr "Afegir CSR" #: gui/main_window.ui:17 msgid "_Add self-signed CA" msgstr "_Afegir entitat certificadora (CA) auto-signada" #: gui/main_window.ui:18 msgid "Add _Certificate Request" msgstr "Afegir _sol·licitud de certificació" #: gui/main_window.ui:29 msgid "Generate _CRL" msgstr "Genera la _CRL" #: gui/main_window.ui:30 msgid "Generate D_H parameters..." msgstr "Generar els paràmetres D_H" #: gui/main_window.ui:31 msgid "Change database pass_word" msgstr "Canvia _contrasenya de la base de dades" #: gui/main_window.ui:33 msgid "_Import" msgstr "_Importa" #: gui/main_window.ui:38 msgid "Revoke _all selected..." msgstr "" #: gui/main_window.ui:39 msgid "Delete all selected _CSRs..." msgstr "" #: gui/main_window.ui:41 msgid "_Quit" msgstr "" #: gui/main_window.ui:44 gui/san_manager_widget.ui:34 msgid "_Edit" msgstr "_Edita" #: gui/main_window.ui:46 msgid "Preferences" msgstr "" #: gui/main_window.ui:49 msgid "_View" msgstr "_Visualitza" #: gui/main_window.ui:51 msgid "Certificate _Signing Requests" msgstr "_Sol·licituds de signatura de certificats" #: gui/main_window.ui:52 msgid "_Revoked Certificates" msgstr "Certificats _revocats" #: gui/main_window.ui:53 #, fuzzy msgid "E_xpired Certificates" msgstr "Exporta certificat" #: gui/main_window.ui:57 gui/new_ca_window.ui:249 gui/new_ca_window.ui:456 #: gui/new_ca_window.ui:568 gui/new_cert_window.ui:249 #: gui/new_cert_window.ui:331 gui/new_cert_window.ui:653 #: gui/new_req_window.ui:99 gui/new_req_window.ui:349 gui/new_req_window.ui:540 msgid "_Help" msgstr "A_juda" #: gui/main_window.ui:58 msgid "About" msgstr "" #: gui/main_window.ui:80 msgid "Create a new database" msgstr "Crea una base de dades nova" #: gui/main_window.ui:87 msgid "Open an existing database" msgstr "Obrir una base de dades existent" #: gui/main_window.ui:99 msgid "Add an autosigned CA" msgstr "Afegir una entitat certificadora (CA) auto-signada" #: gui/main_window.ui:100 #, fuzzy msgid "Add autosigned CA certificate" msgstr "Afegir una entitat certificadora (CA) auto-signada" #: gui/main_window.ui:111 #, fuzzy msgid "Add a new Certificate Signing Request" msgstr "Sol·licitud de signatura de certificat:\n" #: gui/main_window.ui:112 msgid "Add CSR" msgstr "Afegir CSR" #: gui/main_window.ui:129 msgid "Extract the private key of the selected item into a external file" msgstr "Extreu la clau privada de l'element sel·leccionat a un fitxer extern" #: gui/main_window.ui:130 msgid "Extract Private Key" msgstr "Extreure clau privada" #: gui/main_window.ui:142 #, fuzzy msgid "Revoke the selected certificate" msgstr "Revoca el certificat seleccionat" #: gui/main_window.ui:143 msgid "Revoke" msgstr "Revoca" #: gui/main_window.ui:151 msgid "Sign the selected Certificate Signing Request" msgstr "Signa la sol·licitud de certificació seleccionada" #: gui/main_window.ui:152 msgid "Sign" msgstr "Signa" #: gui/main_window.ui:164 msgid "Delete the selected Certificate Signing Request" msgstr "Esborra la sol·licitud de signatura de certificat sel·leccionada" #: gui/main_window.ui:176 #, fuzzy msgid "Quick certificate generation for web server" msgstr "Certificats" #: gui/main_window.ui:177 #, fuzzy msgid "Web Server Wizard" msgstr "Servidor web TLS" #: gui/main_window.ui:188 #, fuzzy msgid "Quick certificate generation for email server" msgstr "Certificats" #: gui/main_window.ui:189 #, fuzzy msgid "Email Server Wizard" msgstr "Servidor web TLS" #: gui/main_window.ui:225 msgid "_Show them" msgstr "" #: gui/main_window.ui:243 msgid "Filter certificates by subject or serial..." msgstr "" #: gui/new_ca_window.ui:20 msgid "New CA - gnoMint" msgstr "Nova CA - gnoMint" #: gui/new_ca_window.ui:46 #, fuzzy msgid "CA Subject Properties\n" msgstr "Propietats de la CA" #: gui/new_ca_window.ui:72 gui/new_cert_window.ui:130 gui/new_req_window.ui:303 msgid "Organization:" msgstr "Organització:" #: gui/new_ca_window.ui:83 gui/new_cert_window.ui:141 gui/new_req_window.ui:292 msgid "Organization Unit:" msgstr "Unitat organitzativa:" #: gui/new_ca_window.ui:94 gui/new_cert_window.ui:152 gui/new_req_window.ui:281 msgid "Country:" msgstr "País:" #: gui/new_ca_window.ui:106 gui/new_cert_window.ui:163 #: gui/new_req_window.ui:270 #, fuzzy msgid "State or Province name: " msgstr "Nom de l'estat o província: " #: gui/new_ca_window.ui:117 gui/new_cert_window.ui:174 #: gui/new_req_window.ui:259 #, fuzzy msgid "City: " msgstr "Ciutat: " #: gui/new_ca_window.ui:164 msgid "" "CA Root Certificate \n" "Common Name (CN):" msgstr "" "Nom comú (CN) del\n" "certificat arrrel de la CA:" #: gui/new_ca_window.ui:185 gui/new_cert_window.ui:219 #: gui/new_req_window.ui:203 #, fuzzy msgid "Email address:" msgstr "Adreça IP" #: gui/new_ca_window.ui:227 gui/new_req_window.ui:326 msgid "Subject Alternative Names (SAN)" msgstr "" #: gui/new_ca_window.ui:265 gui/new_ca_window.ui:480 gui/new_req_window.ui:115 #: gui/new_req_window.ui:373 msgid "_Next" msgstr "" #: gui/new_ca_window.ui:277 gui/new_cert_window.ui:276 #: gui/new_req_window.ui:127 msgid "CA properties" msgstr "Propietats de la CA" #: gui/new_ca_window.ui:296 #, fuzzy msgid "CA Root certificate properties\n" msgstr "Propietats del certificat arrel de la CA\n" #: gui/new_ca_window.ui:337 msgid "Months before root certificate expiration:" msgstr "Mesos abans de la caducitat del certificat arrel:" #: gui/new_ca_window.ui:370 gui/new_req_window.ui:453 msgid "P-256 (256 bits)" msgstr "" #: gui/new_ca_window.ui:371 gui/new_req_window.ui:454 msgid "P-384 (384 bits)" msgstr "" #: gui/new_ca_window.ui:372 gui/new_req_window.ui:455 msgid "P-521 (521 bits)" msgstr "" #: gui/new_ca_window.ui:391 gui/new_req_window.ui:474 #, fuzzy msgid "RSA" msgstr "RSA" #: gui/new_ca_window.ui:400 gui/new_req_window.ui:484 msgid "DSA" msgstr "DSA" #: gui/new_ca_window.ui:409 gui/new_req_window.ui:493 msgid "ECDSA" msgstr "" #: gui/new_ca_window.ui:418 gui/new_req_window.ui:502 msgid "Ed25519" msgstr "" #: gui/new_ca_window.ui:428 gui/new_req_window.ui:512 src/new_ca_window.c:170 #: src/new_ca_window.c:180 src/new_req_window.c:201 src/new_req_window.c:211 msgid "Private key bit length:" msgstr "Mida en bits de la clau privada:" #: gui/new_ca_window.ui:439 gui/new_req_window.ui:523 msgid "Private key type:" msgstr "Tipus de clau privada:" #: gui/new_ca_window.ui:472 gui/new_ca_window.ui:584 gui/new_req_window.ui:365 #: gui/new_req_window.ui:556 msgid "_Previous" msgstr "" #: gui/new_ca_window.ui:492 gui/new_req_window.ui:385 msgid "Root certificate prop" msgstr "Prop. del certificat arrel" #: gui/new_ca_window.ui:511 #, fuzzy msgid "CA properties\n" msgstr "Propietats de la CA" #: gui/new_ca_window.ui:535 #, fuzzy msgid "CRL Distribution Point:" msgstr "Mostra informació sobre la distribució del programa" #: gui/new_ca_window.ui:542 msgid "" "Please, in this field enter an URL where the CRL for this CA will be " "available. \n" "You can leave it blank. In this case, no CRL Distribution Point will be set " "in the CA \n" "Certificate, and you will be able to set it as a new CA property. \n" "This value will be copied into the certificates generated by this CA.\n" "" msgstr "" #: gui/new_ca_window.ui:604 msgid "Password protect" msgstr "Protegir amb contrasenya" #: gui/new_cert_window.ui:13 msgid "New Certificate - gnoMint" msgstr "Nou certificat - gnoMint" #: gui/new_cert_window.ui:36 gui/new_cert_window.ui:293 #: gui/new_cert_window.ui:382 #, fuzzy msgid "New Certificate Properties\n" msgstr "Propietats del nou certificat\n" #: gui/new_cert_window.ui:45 #, fuzzy msgid "" "You are about to sign a Certificate Signing Request,\n" "and this way, creating a new certificate. Please\n" "check the certificate properties." msgstr "" "Ara es signarà una petició de signatura de certificat (CSR), creant un nou " "certificat. Comproveu les propietats del certificat." #: gui/new_cert_window.ui:64 gui/new_cert_window.ui:75 #: gui/new_cert_window.ui:86 gui/new_cert_window.ui:97 #: gui/new_cert_window.ui:108 gui/new_cert_window.ui:119 msgid "label" msgstr "etiqueta" #: gui/new_cert_window.ui:185 msgid "" "New certificate \n" "Common Name (CN):" msgstr "" "Nom comú (CN) del\n" "nou certificat:" #: gui/new_cert_window.ui:197 #, fuzzy msgid "Subject Alternative Names:" msgstr "Persona certificada" #: gui/new_cert_window.ui:302 #, fuzzy msgid "" "You are about to sign a Certificate Signing Request.\n" "Please, choose the Certification Authority you are\n" "going to use for signing it." msgstr "" "Ara es signarà una petició de signatura de certificat (CSR). Escolliu " "l'Entitat Certificadora (CA) que s'emprarà per a signar-la." #: gui/new_cert_window.ui:366 msgid "Choose CA for signing the CSR" msgstr "" "Sel·leccioneu l'entitat certificadora (CA) que signarà la sol·licitud (CSR)" #: gui/new_cert_window.ui:397 msgid "Months before certificate expiration:" msgstr "Mesos abans de la caducitat del certificat:" #: gui/new_cert_window.ui:519 #, fuzzy msgid "Certificate uses" msgstr "Certificats" #: gui/new_cert_window.ui:635 #, fuzzy msgid "Certificate purposes" msgstr "Certificats" #: gui/new_cert_window.ui:688 msgid "Certificate properties" msgstr "Propietats del certificat" #: gui/new_crl_dialog.ui:5 msgid "New CRL - gnoMint" msgstr "Nova CRL - gnoMint" #: gui/new_crl_dialog.ui:17 #, fuzzy msgid "New Certificate Revocation List" msgstr "Nova llista de certificats revocats (CRL)" #: gui/new_crl_dialog.ui:26 msgid "" "Please, select the CA for which a Certificate \n" "Revocation List is going to be created:" msgstr "" "Seleccioneu la CA per a la qual es crearà \n" "una CRL (llista de revocació de certificats)" #: gui/new_req_window.ui:12 msgid "New certificate request - gnoMint" msgstr "Nova sol·licitud de certificació - gnoMint" #: gui/new_req_window.ui:36 gui/new_req_window.ui:147 gui/new_req_window.ui:403 #, fuzzy msgid "Certificate Request Properties\n" msgstr "Propietats de la sol·licitud de certificat\n" #: gui/new_req_window.ui:55 #, fuzzy msgid "" "The subject of the new certificate request can inherit information\n" "from one of the existing Certification Authorities. This is a must if the\n" "policy of the CA you are going to use is defined to force some fields\n" "of a certificate subject to be the same as the ones in the CA cert\n" "subject." msgstr "" "El titular de la nova sol·licitud de certificat pot heretar " "informació d'una de les entitats certificadores (CA) existents. Això és " "imprescindible si la política de la CA que vulgueu utilitzar per a signar el " "certificat requereix que camps siguin iguals en el certificat de l'entitat i " "en els seus certificats fills." #: gui/new_req_window.ui:67 msgid "Don't inherit any fields from existing Certification Authorities" msgstr "No heretis cap camp de les Entitats Certificadores (CA) existents" #: gui/new_req_window.ui:74 msgid "" "Inherit fields according to selected Certification Authority and its policy." msgstr "" "Heretar camps segons la política de l'entitat certificadora (CA) " "sel·leccionada." #: gui/new_req_window.ui:191 #, fuzzy msgid "" "Certificate\n" " Common Name (CN):" msgstr "" "Nom comú (CN) del \n" "certificat:" #: gui/new_req_window.ui:576 msgid "page 3" msgstr "pàgina 3" #: gui/preferences_dialog.ui:9 msgid "General Preferences - gnoMint" msgstr "Preferències generals - gnoMint" #: gui/preferences_dialog.ui:26 #, fuzzy msgid "" "Automatically export created certificates to\n" "Gnome-keyring certificate store" msgstr "" "Exportar automàticament els certificats creats al \n" "magatzem de certificats de Gnome-keyring." #: gui/preferences_dialog.ui:36 msgid "Export options" msgstr "Opcions d'exportació" #: gui/san_editor_dialog.ui:5 src/certificate_properties.c:1488 msgid "Subject Alternative Name" msgstr "" #: gui/san_editor_dialog.ui:23 #, fuzzy msgid "Type:" msgstr "\tTipus: %s\n" #: gui/san_editor_dialog.ui:35 #, fuzzy msgid "DNS" msgstr "DSA" #: gui/san_editor_dialog.ui:36 src/certificate_properties.c:900 #: src/certificate_properties.c:914 src/certificate_properties.c:1040 msgid "IP Address" msgstr "Adreça IP" #: gui/san_editor_dialog.ui:37 msgid "Email" msgstr "" #: gui/san_editor_dialog.ui:38 src/certificate_properties.c:889 #: src/certificate_properties.c:1032 msgid "URI" msgstr "URI" #: gui/san_editor_dialog.ui:51 #, fuzzy msgid "Value:" msgstr "Valor" #: gui/san_editor_dialog.ui:74 msgid "" "Examples:\n" "DNS: example.com, *.example.com\n" "IP: 192.168.1.1, 2001:db8::1\n" "EMAIL: admin@example.com\n" "URI: https://example.com" msgstr "" #: gui/san_manager_widget.ui:26 msgid "_Add" msgstr "" #: gui/san_manager_widget.ui:43 msgid "_Remove" msgstr "" #: gui/wizard_window.ui:9 #, fuzzy msgid "Certificate Wizard" msgstr "Certificat" #: gui/wizard_window.ui:28 #, fuzzy msgid "Quick Certificate Generation" msgstr "Certificats" #: gui/wizard_window.ui:35 msgid "" "This wizard will create a certificate for your server with default " "settings.\n" "Enter the server name (e.g., my.server.dns.name) and select the CA to sign " "it." msgstr "" #: gui/wizard_window.ui:48 #, fuzzy msgid "Server Name:" msgstr "Nom del directori" #: gui/wizard_window.ui:59 msgid "Enter the server DNS name (e.g., my.server.dns.name)" msgstr "" #: gui/wizard_window.ui:69 #, fuzzy msgid "Signing CA:" msgstr "Signatura d'OCSP" #: gui/wizard_window.ui:88 #, fuzzy msgid "Certificate Type:" msgstr "Usos del certificat:\n" #: gui/wizard_window.ui:124 #, fuzzy msgid "_Generate Certificate" msgstr "Certificats _revocats" #: gui/wizard_window.ui:140 #, fuzzy msgid "Web Server (TLS)" msgstr "Servidor web TLS" #: gui/wizard_window.ui:141 #, fuzzy msgid "Email Server (TLS)" msgstr "Servidor web TLS" #: src/ca.c:192 #, c-format msgid "Bulk revoke completed with errors. First error: %s" msgstr "" #: src/ca.c:199 #, fuzzy, c-format msgid "%d certificate revoked." msgid_plural "%d certificates revoked." msgstr[0] "Certificat revocat.\n" msgstr[1] "Certificat revocat.\n" #: src/ca.c:225 #, c-format msgid "Bulk delete completed with errors. First error: %s" msgstr "" #: src/ca.c:240 msgid "" "Certificate renewed. A new certificate with a fresh keypair has been added " "to the database alongside the original." msgstr "" #: src/ca.c:606 src/ca-cli-callbacks.c:167 src/ca-cli-callbacks.c:221 #: src/ca-cli-callbacks.c:733 src/ca-cli-callbacks.c:737 #: src/ca-cli-callbacks.c:1362 src/ca-cli-callbacks.c:1369 #: src/certificate_properties.c:246 src/certificate_properties.c:252 #, fuzzy msgid "%m/%d/%Y %H:%M GMT" msgstr "%d/%m/%Y %R GMT" #: src/ca.c:806 src/ca.c:1927 src/ca.c:1958 src/ca.c:2093 src/ca.c:2322 #: src/ca.c:2350 #, fuzzy msgid "Yes" msgstr "_Sí" #: src/ca.c:930 src/certificate_properties.c:653 msgid "Subject" msgstr "Persona certificada" #: src/ca.c:965 src/cert_diff.c:122 msgid "Serial" msgstr "Núm. de sèrie" #: src/ca.c:978 src/cert_diff.c:123 msgid "Activation" msgstr "Activació" #: src/ca.c:991 src/cert_diff.c:124 msgid "Expiration" msgstr "Venciment" #: src/ca.c:1004 msgid "Revocation" msgstr "Revocació" #: src/ca.c:1047 #, c-format msgid "" "Showing only the %d certificate expiring in the next %d days. Close " "this banner to show everything again." msgid_plural "" "Showing only the %d certificates expiring in the next %d days. Close " "this banner to show everything again." msgstr[0] "" msgstr[1] "" #: src/ca.c:1058 #, c-format msgid "" "%d certificate expires in the next %d days. Right-click it to renew " "with a fresh key." msgid_plural "" "%d certificates expire in the next %d days. Right-click each one to " "renew with a fresh key." msgstr[0] "" msgstr[1] "" #: src/ca.c:1369 src/ca.c:1404 src/ca.c:1416 src/export.c:560 src/export.c:639 msgid "There was an error while exporting certificate." msgstr "Hi ha hagut un error al exportar el certificat." #: src/ca.c:1371 src/ca.c:1406 src/ca.c:1418 msgid "There was an error while exporting CSR." msgstr "" "Ha hagut un error al exportar la sol·licitud de signatura de certificat " "(CSR)," #: src/ca.c:1426 src/ca.c:1590 msgid "Certificate exported successfully" msgstr "Certificat exportat amb èxit." #: src/ca.c:1427 msgid "Certificate signing request exported successfully" msgstr "Sol·licitud de signatura de certificat exportada amb èxit." #: src/ca.c:1445 msgid "Export certificate" msgstr "Exporta certificat" #: src/ca.c:1447 msgid "Export certificate signing request" msgstr "Exporta sol·licitud de signatura de certificat" #: src/ca.c:1461 src/ca.c:1523 src/ca.c:1981 msgid "Private key exported successfully" msgstr "Clau privada exportada amb èxit." #: src/ca.c:1509 src/ca.c:2057 msgid "Export crypted private key" msgstr "Exporta la clau privada xifrada" #: src/ca.c:1568 #, fuzzy msgid "Export unencrypted private key" msgstr "Exporta la clau privada sense xifrar" #: src/ca.c:1633 msgid "Export whole certificate in PKCS#12 package" msgstr "Exporta tot el certificat en un paquet PKCS#12" #: src/ca.c:1676 msgid "Unexpected error" msgstr "Error inesperat" #: src/ca.c:1712 msgid "Export CSR - gnoMint" msgstr "Exporta sol·licitud de signatura de certificat (CSR) - gnoMint" #: src/ca.c:1717 msgid "" "Please, choose which part of the saved Certificate Signing Request you want " "to export:" msgstr "" "Seleccioneu quina part de la sol·licitud de signatura de certificat (CSR) " "voleu exportar:" #: src/ca.c:1722 msgid "" "Export the Certificate Signing Request to a public file, in PEM format." msgstr "" "Exporta la sol·licitud de signatura de certificat a un fitxer públic en " "format PEM" #: src/ca.c:1727 msgid "" "Export the saved private key to a PKCS#8 password-protected file. This " "file should only be accessed by the subject of the Certificate Signing " "Request." msgstr "" "Exporta la clau privada emmagatzemada a un fitxer PKCS#8 protegit amb " "contrasenya. Aquest fitxer només ha de ser accessible pel titular de la " "sol·licitud de signatura del certificat." #: src/ca.c:1774 msgid "Could not build certificate chain." msgstr "" #: src/ca.c:1781 #, fuzzy, c-format msgid "Failed to write chain: %s" msgstr "Afegir certificat de la CA auto-signat" #: src/ca.c:1786 #, fuzzy msgid "Certificate chain exported successfully." msgstr "Certificat exportat amb èxit." #: src/ca.c:1807 #, fuzzy msgid "Please select a certificate to export its chain." msgstr "Entitat certificadora" #: src/ca.c:1831 #, fuzzy msgid "Export certificate chain" msgstr "Exporta certificat" #: src/ca.c:1911 #, fuzzy msgid "Please select one or more certificates to revoke." msgstr "Entitat certificadora" #: src/ca.c:1916 #, fuzzy, c-format msgid "Are you sure you want to revoke %d certificate?" msgid_plural "Are you sure you want to revoke %d certificates?" msgstr[0] "Esteu segur que voleu revocar aquest certificat?" msgstr[1] "Esteu segur que voleu revocar aquest certificat?" #: src/ca.c:1920 msgid "" "Revoking a certificate will include it in the next CRL, marking it as " "invalid. CSRs in the selection (if any) are not affected; use \"Delete " "selected CSRs\" for those." msgstr "" #: src/ca.c:1927 src/ca.c:1958 src/ca.c:2093 src/ca.c:2322 src/ca.c:2350 #, fuzzy msgid "No" msgstr "_No" #: src/ca.c:1948 msgid "Please select one or more CSRs to delete." msgstr "" #: src/ca.c:1953 #, fuzzy, c-format msgid "Are you sure you want to delete %d Certificate Signing Request?" msgid_plural "Are you sure you want to delete %d Certificate Signing Requests?" msgstr[0] "" "Esteu segur que voleu eliminar aquesta sol·licitud de signatura de " "certificat (CSR)?" msgstr[1] "" "Esteu segur que voleu eliminar aquesta sol·licitud de signatura de " "certificat (CSR)?" #: src/ca.c:2076 src/ca-cli-callbacks.c:1934 msgid "" "CA certificates cannot be renewed. A renewed CA would have a different key, " "so certificates previously signed by the old CA would no longer chain to it." msgstr "" #: src/ca.c:2087 msgid "" "Renew this certificate?\n" "\n" "gnoMint will issue a new certificate with the same subject and SAN as the " "selected one, signed by the same CA, with a freshly-generated keypair. The " "old certificate will remain in the database — revoke it manually after you " "have deployed the new one." msgstr "" #: src/ca.c:2118 #, c-format msgid "Certificate diff — %d difference" msgid_plural "Certificate diff — %d differences" msgstr[0] "" msgstr[1] "" #: src/ca.c:2147 msgid "Left" msgstr "" #: src/ca.c:2151 msgid "Right" msgstr "" #: src/ca.c:2241 src/ca-cli-callbacks.c:2141 #, fuzzy msgid "Cannot read file." msgstr "Afegir certificat de la CA auto-signat" #: src/ca.c:2252 msgid "Selected" msgstr "" #: src/ca.c:2278 #, fuzzy msgid "Cannot read PEM of the selected certificate." msgstr "Revoca el certificat seleccionat" #: src/ca.c:2290 msgid "Compare with PEM file…" msgstr "" #: src/ca.c:2312 msgid "Are you sure you want to revoke this certificate?" msgstr "Esteu segur que voleu revocar aquest certificat?" #: src/ca.c:2313 msgid "" "Revoking a certificate will include it in the next CRL, marking it as " "invalid. This way, any future use of the certificate will be denied (as long " "as the CRL is checked)." msgstr "" #: src/ca.c:2316 #, fuzzy msgid "Are you sure you want to revoke this CA certificate?" msgstr "Esteu segur que voleu revocar aquest certificat?" #: src/ca.c:2317 msgid "" "Revoking a certificate will include it in the next CRL, marking it as " "invalid. This way, any future use of the certificate will be denied (as long " "as the CRL is checked). \n" "\n" "Moreover, revoking a CA certificate can invalidate all the certificates " "generated with it, so all them should be regenerated with a new CA " "certificate." msgstr "" #: src/ca.c:2349 msgid "Are you sure you want to delete this Certificate Signing Request?" msgstr "" "Esteu segur que voleu eliminar aquesta sol·licitud de signatura de " "certificat (CSR)?" #: src/ca.c:2572 msgid "" "The current password you have entered doesn't match with the actual current " "database password." msgstr "" "La contrasenya introduïda no es correspon amb la contrasenya real de la base " "de dades." #: src/ca.c:2588 msgid "Error while changing database password. The operation was cancelled." msgstr "" "S'ha produït un error al canviar la contrasenya de la base de dades. S'ha " "cancel·lat la operació." #: src/ca.c:2593 msgid "Password changed successfully" msgstr "Contrasenya canviada correctament" #: src/ca.c:2601 src/ca-cli-callbacks.c:1186 msgid "" "Error while establishing database password. The operation was cancelled." msgstr "" "S'ha produït un error al establir la contrasenya de la base de dades. S'ha " "cancel·lat la operació." #: src/ca.c:2606 msgid "Password established successfully" msgstr "La contrasenya s'ha establert amb èxit" #: src/ca.c:2616 msgid "Error while removing database password. The operation was cancelled." msgstr "" "S'ha produït un error al eliminar la contrasenya de la base de dades. S'ha " "cancel·lat la operació." #: src/ca.c:2621 msgid "Password removed successfully" msgstr "La contrasenya s'ha eliminat amb èxit" #: src/ca.c:2708 msgid "Change CA password - gnoMint" msgstr "Canvia la contrasenya de la CA - gnoMint" #: src/ca.c:2840 msgid "Diffie-Hellman parameters saved successfully" msgstr "Paràmetres Diffie-Hellman desats correctament" #: src/ca.c:2872 msgid "Save Diffie-Hellman parameters" msgstr "Desa paràmetres Diffie-Hellman" #: src/ca.c:2951 #, c-format msgid "Problem when importing '%s' file" msgstr "S'han produït problemes al importar el fitxer '%s'" #: src/ca.c:3012 msgid "Select PEM file to import" msgstr "Seleccioneu el fitxer PEM a importar" #: src/ca.c:3018 msgid "Select directory to import" msgstr "Seleccioneu el directori a importar" #: src/cert_diff.c:70 #, fuzzy msgid "Cannot parse left certificate" msgstr "Revoca el certificat seleccionat" #: src/cert_diff.c:72 #, fuzzy msgid "Cannot parse right certificate" msgstr "Revoca el certificat seleccionat" #: src/cert_diff.c:113 #, fuzzy msgid "Subject CN" msgstr "Nom habitual (CN)" #: src/cert_diff.c:114 #, fuzzy msgid "Subject O" msgstr "Organització (O)" #: src/cert_diff.c:115 #, fuzzy msgid "Subject OU" msgstr "Unitat organitzacional (OU)" #: src/cert_diff.c:116 #, fuzzy msgid "Subject Country" msgstr "Nom habitual (CN)" #: src/cert_diff.c:117 #, fuzzy msgid "Subject State" msgstr "Persona certificada" #: src/cert_diff.c:118 #, fuzzy msgid "Subject Locality" msgstr "Persona certificada" #: src/cert_diff.c:119 #, fuzzy msgid "Subject email" msgstr "Persona certificada" #: src/cert_diff.c:120 #, fuzzy msgid "Subject DN" msgstr "Nom habitual (CN)" #: src/cert_diff.c:121 #, fuzzy msgid "Issuer DN" msgstr "Emissor" #: src/cert_diff.c:125 #, fuzzy msgid "SAN" msgstr "RSA" #: src/cert_diff.c:126 msgid "Key usage / EKU" msgstr "" #: src/cert_diff.c:127 #, fuzzy msgid "Subject Key ID" msgstr "Identificador únic de l'assumpte" #: src/cert_diff.c:128 msgid "Authority Key ID" msgstr "" #: src/cert_diff.c:129 #, fuzzy msgid "CRL distribution" msgstr "Mostra informació sobre la distribució del programa" #: src/cert_diff.c:130 #, fuzzy msgid "SHA-1 fingerprint" msgstr "Empremta digital SHA1" #: src/cert_diff.c:131 #, fuzzy msgid "SHA-256 fingerprint" msgstr "Empremta digital SHA1" #: src/cert_renewal.c:111 msgid "Cannot parse generated CSR." msgstr "" #: src/cert_renewal.c:125 #, fuzzy msgid "Cannot encrypt new private key." msgstr "Exporta la clau privada sense xifrar" #: src/cert_renewal.c:181 src/cert_renewal.c:341 #, fuzzy msgid "Cannot read certificate PEM from database." msgstr "_Obre una base de dades de certificats" #: src/cert_renewal.c:186 src/cert_renewal.c:347 #, fuzzy msgid "Cannot parse certificate." msgstr "Revoca el certificat seleccionat" #: src/cert_renewal.c:193 src/cert_renewal.c:354 #, c-format msgid "Cannot find issuer CA in this database (issuer DN: %s)." msgstr "" #: src/cert_renewal.c:204 src/cert_renewal.c:315 msgid "Cannot load parent CA material from database." msgstr "" #: src/cert_renewal.c:212 src/cert_renewal.c:221 src/cert_renewal.c:265 #: src/cert_renewal.c:280 #, fuzzy msgid "Cannot decrypt parent CA's private key." msgstr "Exporta la clau privada xifrada" #: src/ca-cli.c:42 msgid "newdb " msgstr "newdb " #: src/ca-cli.c:42 msgid "Close current file and create a new database with given filename" msgstr "" "Tanca el fitxer actual i crea una nova base de dades amb el nom del fitxer " "indicat" #: src/ca-cli.c:43 msgid "opendb " msgstr "opendb " #: src/ca-cli.c:43 msgid "Close current file and open the file with given filename" msgstr "Tanca el fitxer actual i obre el fitxer amb el nom indicat" #: src/ca-cli.c:44 msgid "savedbas " msgstr "savedbas " #: src/ca-cli.c:44 msgid "Save the current file with a different filename" msgstr "Desa el fitxer actual amb un nom diferent" #: src/ca-cli.c:45 msgid "Get current status (opened file, no. of certificates, etc...)" msgstr "Obtén l'estat actual (fitxer obert, nombre de certificats, etc..)" #: src/ca-cli.c:46 msgid "" "List the certificates in database. With option --see-revoked, lists also the " "revoked ones" msgstr "" "Llista els certificats de la base de dades. Amb la opció --see-revoked, " "llista també els certificats revocats." #: src/ca-cli.c:48 msgid "List the CSRs in database" msgstr "" "Llista les sol·licituds de signatura de certificats (CSR) existents a la " "base de dades" #: src/ca-cli.c:49 msgid "addcsr [ca-id-for-inherit-fields]" msgstr "add-csr [id-de-la-CA-per-heretar-camps]" #: src/ca-cli.c:49 msgid "Start a new CSR creation process" msgstr "" "Comença un nou procés de creació de sol·licitud de signatura de certificat " "(CSR)" #: src/ca-cli.c:50 msgid "Start a new self-signed CA creation process" msgstr "" "Inicia un nou procés de creació d'Entitat Certificadora (CA) auto-signada" #: src/ca-cli.c:51 msgid "extractcertpkey " msgstr "extractcertpkey " #: src/ca-cli.c:51 msgid "" "Extract the private key of the certificate with the given internal id and " "saves it into the given file" msgstr "" "Extreure la clau privada del certificat amb l'identificador intern " "proporcionat i desar-la al fitxer indicat." #: src/ca-cli.c:54 msgid "extractcsrpkey " msgstr "extractcsrpkey " #: src/ca-cli.c:54 msgid "" "Extract the private key of the CSR with the given internal id and saves it " "into the given file" msgstr "" "Extreure la clau privada de la CSR amb l'identificador indicat i " "emmagatzemar-la en el fitxer proporcionat." #: src/ca-cli.c:57 msgid "revoke " msgstr "revoke " #: src/ca-cli.c:57 msgid "Revoke the certificate with the given internal ID" msgstr "Revoca el certificat amb l'identificador proporcionat" #: src/ca-cli.c:58 msgid "sign " msgstr "sign " #: src/ca-cli.c:58 msgid "Generate a certificate signing the given CSR with the given CA" msgstr "Genera un certificat firmant el CSR proporcionat amb la CA indicada" #: src/ca-cli.c:59 msgid "delete " msgstr "delete " #: src/ca-cli.c:59 msgid "Delete the given CSR from the database" msgstr "" "Esborra la sol·licitud de signatura del certificat indicada de la base de " "dades" #: src/ca-cli.c:60 msgid "crlgen " msgstr "crlgen " #: src/ca-cli.c:60 msgid "Generate a new CRL for the given CA, saving it into the file " msgstr "" "Genera un nou CRL per la CA indicada, desant-lo al fitxer " #: src/ca-cli.c:61 msgid "dhgen " msgstr "dhgen " #: src/ca-cli.c:61 msgid "Generate a new DH-parameter set, saving it into the file " msgstr "" "Genera un nou conjunt de paràmetres DH, desant-lo al fitxer " #: src/ca-cli.c:62 msgid "Change password for the current database" msgstr "Canvia la contrasenya de la base de dades actual" #: src/ca-cli.c:63 msgid "importfile " msgstr "importfile " #: src/ca-cli.c:63 msgid "Import the file with the given name " msgstr "Importa el fitxer amb el nom indicat" #: src/ca-cli.c:64 msgid "importdir " msgstr "importdir " #: src/ca-cli.c:64 msgid "Import the given directory, as a OpenSSL-CA directory" msgstr "" "Importa el directori indicat, interpretant-lo com el directori d'una CA " "realitzada amb OpenSSL" #: src/ca-cli.c:65 msgid "showcert " msgstr "showcert " #: src/ca-cli.c:65 msgid "Show properties of the given certificate" msgstr "Mostra propietats del certificat indicat" #: src/ca-cli.c:66 msgid "showcsr " msgstr "showcsr " #: src/ca-cli.c:66 msgid "Show properties of the given CSR" msgstr "" "Mostra propietats de la sol·licitud de signatura del certificat indicada" #: src/ca-cli.c:67 msgid "showpolicy " msgstr "showpolicy " #: src/ca-cli.c:67 msgid "Show CA policy" msgstr "Mostra la política de la CA" #: src/ca-cli.c:68 msgid "setpolicy " msgstr "setpolicy " #: src/ca-cli.c:68 msgid "Change the given CA policy" msgstr "Canvia la política indicada de la CA" #: src/ca-cli.c:69 msgid "Show program preferences" msgstr "Mostra les preferències del programa" #: src/ca-cli.c:70 msgid "setpreference " msgstr "setpreference " #: src/ca-cli.c:70 msgid "Set the given program preference" msgstr "Estableix la preferència del programa indicada" #: src/ca-cli.c:71 msgid "addservercert " msgstr "" #: src/ca-cli.c:71 msgid "Quick server certificate generation (cert-type: 'web' or 'email')" msgstr "" #: src/ca-cli.c:72 #, fuzzy msgid "renewcert " msgstr "showcert " #: src/ca-cli.c:72 msgid "" "Reissue a non-CA certificate with the same subject + SAN and a fresh " "keypair. The old certificate remains in the database. CA certificates cannot " "be renewed." msgstr "" #: src/ca-cli.c:73 #, fuzzy msgid "exportchain " msgstr "extractcertpkey " #: src/ca-cli.c:73 msgid "" "Export the full certificate chain (leaf → root) for the given certificate as " "a PEM bundle." msgstr "" #: src/ca-cli.c:74 #, fuzzy msgid "revokemany [cert-id ...]" msgstr "revoke " #: src/ca-cli.c:74 msgid "Revoke many certificates at once. Non-cert ids are silently skipped." msgstr "" #: src/ca-cli.c:75 #, fuzzy msgid "deletemany [csr-id ...]" msgstr "delete " #: src/ca-cli.c:75 msgid "Delete many CSRs at once. Non-CSR ids are silently skipped." msgstr "" #: src/ca-cli.c:76 msgid "search " msgstr "" #: src/ca-cli.c:76 msgid "" "List certificates and CSRs whose subject or serial contains (case-" "insensitive)." msgstr "" #: src/ca-cli.c:77 msgid "diff " msgstr "" #: src/ca-cli.c:77 msgid "" "Side-by-side diff of two certificates. Each argument is either a numeric DB " "id or a path to a PEM file." msgstr "" #: src/ca-cli.c:78 msgid "Show about message" msgstr "Mostra el missatge \"Quant al...\"" #: src/ca-cli.c:79 msgid "Show warranty information" msgstr "Mostra informació de la garantia" #: src/ca-cli.c:80 msgid "Show distribution information" msgstr "Mostra informació sobre la distribució del programa" #: src/ca-cli.c:81 msgid "Show version information" msgstr "Mostra informació de la versió" #: src/ca-cli.c:82 msgid "Show (this) help message" msgstr "Mostra (aquest) missatge d'ajuda" #: src/ca-cli.c:83 src/ca-cli.c:84 src/ca-cli.c:85 msgid "Close database and exit program" msgstr "Tanca la base de dades i surt del programa" #: src/ca-cli.c:132 #, c-format msgid "Opening database %s..." msgstr "Obrint la base de dades %s..." #: src/ca-cli.c:136 #, c-format msgid " OK.\n" msgstr " D'acord.\n" #: src/ca-cli.c:138 #, c-format msgid " Error.\n" msgstr " Error.\n" #: src/ca-cli.c:153 #, c-format msgid "" "Notice: %d certificate expires within the next %d days. Use `renewcert ` " "to reissue.\n" msgid_plural "" "Notice: %d certificates expire within the next %d days. Use `renewcert ` " "to reissue.\n" msgstr[0] "" msgstr[1] "" #: src/ca-cli.c:187 #, fuzzy, c-format msgid "" "\n" "\n" "%s version %s \"%s\"\n" "%s\n" "\n" msgstr "" "\n" "\n" "%s versió %s\n" "%s\n" "\n" #: src/ca-cli.c:188 #, c-format msgid "" "This program comes with ABSOLUTELY NO WARRANTY;\n" "for details type 'warranty'.\n" msgstr "" "Aquest programa es proporciona SENSE QUALSEVOL TIPUS DE GARANTIA; per més\n" "detalls, teclegi 'warranty'.\n" #: src/ca-cli.c:189 #, c-format msgid "" "This is free software, and you are welcome to redistribute it\n" "under certain conditions; type 'distribution' for details.\n" "\n" msgstr "" "Aquest programa és software lliure; se li anima a distribuir-lo sota " "determinades\n" "condicions; teclegi 'distribution' per a més detalls.\n" "\n" #: src/ca-cli.c:231 #, c-format msgid "Unpaired quotes\n" msgstr "Error: Cometes desaparellades\n" #: src/ca-cli.c:309 #, c-format msgid "" "Invalid command. Try 'help' for getting a list of recognized commands.\n" msgstr "" "Ordre no vàlida. Teclegi 'help' per aconseguir una llista d'ordres " "reconegudes.\n" #: src/ca-cli.c:313 #, c-format msgid "Incorrect number of parameters.\n" msgstr "Nombre incorrecte de paràmetres\n" #: src/ca-cli.c:314 #, c-format msgid "Syntax: %s\n" msgstr "Sintaxi: %s\n" #: src/ca-cli-callbacks.c:62 src/ca-cli-callbacks.c:111 msgid "The file already exists, so it will be overwritten." msgstr "El fitxer ja existeix, se sobreescriurà." #: src/ca-cli-callbacks.c:62 src/ca-cli-callbacks.c:111 #: src/ca-cli-callbacks.c:824 msgid "Are you sure? Yes/[No] " msgstr "Esteu segur? Sí/[No] " #: src/ca-cli-callbacks.c:84 #, c-format msgid "Problem when opening new '%s' CA database\n" msgstr "S'han produït problemes al obrir la nova base de dades de la CA '%s'\n" #: src/ca-cli-callbacks.c:88 #, c-format msgid "File '%s' opened\n" msgstr "S'ha obert el fitxer '%s'\n" #: src/ca-cli-callbacks.c:98 #, c-format msgid "Problem when opening '%s' CA database\n" msgstr "S'han produït problemes al obrir la base de dades de la CA '%s'\n" #: src/ca-cli-callbacks.c:132 #, c-format msgid "Current opened file: %s\n" msgstr "Fitxer obert actualment: %s\n" #: src/ca-cli-callbacks.c:133 #, c-format msgid "Number of certificates in file: %d\n" msgstr "Nombre de certificats al fitxer: %d\n" #: src/ca-cli-callbacks.c:134 #, c-format msgid "Number of CSRs in file: %d\n" msgstr "Nombre de CSRs en el fitxer: %d\n" #: src/ca-cli-callbacks.c:169 msgid " (after 2038?)" msgstr "" #: src/ca-cli-callbacks.c:239 #, c-format msgid "Certificates in Database:\n" msgstr "Certificats a la base de dades:\n" #: src/ca-cli-callbacks.c:240 #, c-format msgid "Id.\tIs CA?\tCertificate Subject\tKey in DB?\tActivation\t\tExpiration" msgstr "" #: src/ca-cli-callbacks.c:243 #, c-format msgid "\t\tRevocation\n" msgstr "\t\tRevocació\n" #: src/ca-cli-callbacks.c:278 #, c-format msgid "Certificate Requests in Database:\n" msgstr "Sol·licituds de certificat a la base de dades:\n" #: src/ca-cli-callbacks.c:279 #, c-format msgid "Id.\tParent Id.\tCSR Subject\t\tKey in DB?\n" msgstr "Id.\tId. pare\tTitular de la CSR\t\tClau en BD?\n" #: src/ca-cli-callbacks.c:309 src/ca-cli-callbacks.c:1129 #: src/ca-cli-callbacks.c:1522 src/ca-cli-callbacks.c:1551 msgid "The given CA id. is not valid" msgstr "L'identificador de la CA proporcionat no és vàlid" #: src/ca-cli-callbacks.c:362 #, c-format msgid "" "Please enter data corresponding to subject of the Certificate Signing " "Request:\n" msgstr "" "Introduïu les dades corresponents al titular de la sol·licitud de signatura " "del certificat:\n" #: src/ca-cli-callbacks.c:365 src/ca-cli-callbacks.c:567 msgid "Enter country (C)" msgstr "Introduïu el país (C)" #: src/ca-cli-callbacks.c:373 src/ca-cli-callbacks.c:573 msgid "Enter state or province (ST)" msgstr "Introduïu el nom de l'estat o la província (ST)" #: src/ca-cli-callbacks.c:382 src/ca-cli-callbacks.c:579 msgid "Enter locality or city (L)" msgstr "Introduïu la localitat o la ciutat (L)" #: src/ca-cli-callbacks.c:390 src/ca-cli-callbacks.c:585 msgid "Enter organization (O)" msgstr "Introduïu l'organització (O)" #: src/ca-cli-callbacks.c:398 src/ca-cli-callbacks.c:591 msgid "Enter organizational unit (OU)" msgstr "Introduïu la Unitat organitzativa (OU)" #: src/ca-cli-callbacks.c:405 src/ca-cli-callbacks.c:597 msgid "Enter common name (CN)" msgstr "Introduïu Nom habitual (CN)" #: src/ca-cli-callbacks.c:411 src/ca-cli-callbacks.c:603 msgid "Enter email address (leave blank for none)" msgstr "" #: src/ca-cli-callbacks.c:422 src/ca-cli-callbacks.c:614 msgid "" "Enter Subject Alternative Names (SAN) [format: " "DNS:example.com,IP:192.168.1.1]" msgstr "" #: src/ca-cli-callbacks.c:433 src/ca-cli-callbacks.c:625 #, fuzzy msgid "Enter type of key you are going to create (RSA/DSA/ECDSA/Ed25519)" msgstr "Introduïu el tipus de clau que es crearà (RSA/DSA)" #: src/ca-cli-callbacks.c:472 src/ca-cli-callbacks.c:656 msgid "Enter curve size for ECDSA (256, 384, or 521)" msgstr "" #: src/ca-cli-callbacks.c:482 src/ca-cli-callbacks.c:667 msgid "Enter bitlength for the key (it must be a whole multiple of 1024)" msgstr "Introduïu la mida de la clau en bits (múltiple de 1024)" #: src/ca-cli-callbacks.c:487 #, c-format msgid "These are the provided CSR properties:\n" msgstr "Aquestes són les propietats de la CSR proporcionada:\n" #: src/ca-cli-callbacks.c:489 src/ca-cli-callbacks.c:704 #: src/ca-cli-callbacks.c:1350 src/ca-cli-callbacks.c:1411 #, c-format msgid "Subject:\n" msgstr "Titular:\n" #: src/ca-cli-callbacks.c:490 src/ca-cli-callbacks.c:705 #, c-format msgid "\tDistinguished Name: " msgstr "\tNom distintiu: " #: src/ca-cli-callbacks.c:505 src/ca-cli-callbacks.c:720 #: src/ca-cli-callbacks.c:1354 src/ca-cli-callbacks.c:1414 #, c-format msgid "\tSubject Alternative Names: %s\n" msgstr "" #: src/ca-cli-callbacks.c:506 src/ca-cli-callbacks.c:721 #, c-format msgid "Key pair\n" msgstr "Parella de claus\n" #: src/ca-cli-callbacks.c:512 src/ca-cli-callbacks.c:727 #, c-format msgid "\tType: %s\n" msgstr "\tTipus: %s\n" #: src/ca-cli-callbacks.c:514 #, c-format msgid "\tKey size: fixed (Ed25519)\n" msgstr "" #: src/ca-cli-callbacks.c:516 #, c-format msgid "\tCurve: P-%d\n" msgstr "" #: src/ca-cli-callbacks.c:518 src/ca-cli-callbacks.c:729 #, c-format msgid "\tKey bitlength: %d\n" msgstr "\tLongitud en bits: %d\n" #: src/ca-cli-callbacks.c:521 src/ca-cli-callbacks.c:740 msgid "Do you want to change anything? Yes/[No] " msgstr "Voleu canviar quelcom? Sí/[No] " #: src/ca-cli-callbacks.c:525 msgid "" "You are about to create a Certificate Signing Request with these properties." msgstr "" "Ara es crearà una petició de signatura del certificat (CSR) amb aquestes " "propietats." #: src/ca-cli-callbacks.c:526 src/ca-cli-callbacks.c:745 msgid "Are you sure? [Yes]/No " msgstr "Esteu segur [Sí]/No " #: src/ca-cli-callbacks.c:531 src/ca-cli-callbacks.c:750 #: src/ca-cli-callbacks.c:834 src/ca-cli-callbacks.c:965 #: src/ca-cli-callbacks.c:1086 src/ca-cli-callbacks.c:1115 #: src/ca-cli-callbacks.c:1181 src/ca-cli-callbacks.c:1208 #: src/ca-cli-callbacks.c:1236 src/ca-cli-callbacks.c:1251 #: src/ca-cli-callbacks.c:1581 src/ca-cli-callbacks.c:1624 #: src/ca-cli-callbacks.c:1945 #, c-format msgid "Operation cancelled.\n" msgstr "Operació cancel·lada\n" #: src/ca-cli-callbacks.c:565 #, c-format msgid "" "Please enter data corresponding to subject of the new Certification " "Authority:\n" msgstr "" "Introduïu les dades corresponents al titular de la nova Entitat " "Certificadora (CA):\n" #: src/ca-cli-callbacks.c:673 msgid "" "Introduce number of months before expiration of the new certification " "authority" msgstr "" "Introduïu el nombre de mesos abans la caducitat de la nova Entitat " "certificadora" #: src/ca-cli-callbacks.c:693 src/new_ca_window.c:457 msgid "" "This system uses a 32-bit time_t and cannot represent dates after " "2038-01-19. The new CA's expiration date has been clamped to that limit. To " "issue longer-lived CAs, run gnoMint on a 64-bit platform." msgstr "" #: src/ca-cli-callbacks.c:702 #, c-format msgid "These are the provided new CA properties:\n" msgstr "Aquestes són les propietats proporcionades per a la nova CA:\n" #: src/ca-cli-callbacks.c:730 #, c-format msgid "Validity\n" msgstr "Validesa\n" #: src/ca-cli-callbacks.c:731 src/ca-cli-callbacks.c:1360 #, c-format msgid "Validity:\n" msgstr "Validesa:\n" #: src/ca-cli-callbacks.c:734 src/ca-cli-callbacks.c:1363 #, c-format msgid "\tActivated on: %s\n" msgstr "" #: src/ca-cli-callbacks.c:738 src/ca-cli-callbacks.c:1370 #, c-format msgid "\tExpires on: %s\n" msgstr "\tCaduca el: %s\n" #: src/ca-cli-callbacks.c:744 msgid "" "You are about to create a new Certification Authority with these properties." msgstr "Es crearà una nova Entitat certificadora (CA) amb aquestes propietats." #: src/ca-cli-callbacks.c:770 src/ca-cli-callbacks.c:818 #: src/ca-cli-callbacks.c:1321 msgid "The given certificate id. is not valid" msgstr "L'identificador de certificat proporcionat no és vàlid" #: src/ca-cli-callbacks.c:777 src/ca-cli-callbacks.c:801 #, c-format msgid "Private key extracted successfully into file '%s'\n" msgstr "Clau privada extreta amb èxit al fitxer: '%s'\n" #: src/ca-cli-callbacks.c:794 src/ca-cli-callbacks.c:946 #: src/ca-cli-callbacks.c:1099 src/ca-cli-callbacks.c:1400 msgid "The given CSR id. is not valid" msgstr "L'identificador de la CSR proporcionat no és vàlid" #: src/ca-cli-callbacks.c:824 msgid "This certificate will be revoked." msgstr "Aquest certificat serà revocat." #: src/ca-cli-callbacks.c:830 #, c-format msgid "Certificate revoked.\n" msgstr "Certificat revocat.\n" #: src/ca-cli-callbacks.c:844 src/ca-cli-callbacks.c:1381 #, c-format msgid "Certificate uses:\n" msgstr "Usos del certificat:\n" #: src/ca-cli-callbacks.c:847 #, c-format msgid "* Certification Authority use enabled.\n" msgstr "* Ús com a entitat certificadora habilitat.\n" #: src/ca-cli-callbacks.c:849 #, c-format msgid "* Certification Authority use disabled.\n" msgstr "* Ús com a entitat certificadora deshabilitat.\n" #: src/ca-cli-callbacks.c:853 #, c-format msgid "* CRL signing use enabled.\n" msgstr "* Ús per a la firma de CRLs habilitat.\n" #: src/ca-cli-callbacks.c:855 #, c-format msgid "* CRL signing use disabled.\n" msgstr "* Ús per a la firma de CRLs deshabilitat.\n" #: src/ca-cli-callbacks.c:859 #, c-format msgid "* Digital Signature use enabled.\n" msgstr "* Ús per a la signatura digital habilitat.\n" #: src/ca-cli-callbacks.c:861 #, c-format msgid "* Digital Signature use disabled.\n" msgstr "* Ús per a la signatura digital deshabilitat.\n" #: src/ca-cli-callbacks.c:865 src/ca-cli-callbacks.c:867 #, c-format msgid "* Data Encipherment use enabled.\n" msgstr "Ús per al xifrat de dades habilitat.\n" #: src/ca-cli-callbacks.c:871 #, c-format msgid "* Key Encipherment use enabled.\n" msgstr "Ús per al xifrat de claus habilitat.\n" #: src/ca-cli-callbacks.c:873 #, c-format msgid "* Key Encipherment use disabled.\n" msgstr "Ús per al xifrat de claus deshabilitat.\n" #: src/ca-cli-callbacks.c:877 #, c-format msgid "* Non Repudiation use enabled.\n" msgstr "Ús per al no repudi habilitat.\n" #: src/ca-cli-callbacks.c:879 #, c-format msgid "* Non Repudiation use disabled.\n" msgstr "Ús per al no repudi deshabilitat.\n" #: src/ca-cli-callbacks.c:883 #, c-format msgid "* Key Agreement use enabled.\n" msgstr "Ús per a la negociació de claus habilitat.\n" #: src/ca-cli-callbacks.c:885 #, c-format msgid "* Key Agreement use disabled.\n" msgstr "Ús per a la negociació de claus deshabilitat.\n" #: src/ca-cli-callbacks.c:888 #, c-format msgid "Certificate purposes:\n" msgstr "Finalitats del certificat:\n" #: src/ca-cli-callbacks.c:891 #, c-format msgid "* Email Protection purpose enabled.\n" msgstr "* Finalitat per a la protecció del correu electrònic habilitat.\n" #: src/ca-cli-callbacks.c:893 #, c-format msgid "* Email Protection purpose disabled.\n" msgstr "* Finalitat per a la protecció del correu electrònic deshabilitat.\n" #: src/ca-cli-callbacks.c:897 #, c-format msgid "* Code Signing purpose enabled.\n" msgstr "* Finalitat per a la firma de codi habilitada.\n" #: src/ca-cli-callbacks.c:899 #, c-format msgid "* Code Signing purpose disabled.\n" msgstr "* Finalitat per a la firma de codi deshabilitada.\n" #: src/ca-cli-callbacks.c:903 #, c-format msgid "* TLS Web Client purpose enabled.\n" msgstr "* Finalitat de client web TLS habilitada.\n" #: src/ca-cli-callbacks.c:905 #, c-format msgid "* TLS Web Client purpose disabled.\n" msgstr "* Finalitat de client web TLS deshabilitada.\n" #: src/ca-cli-callbacks.c:909 #, c-format msgid "* TLS Web Server purpose enabled.\n" msgstr "* Finalitat de servidor web TLS habilitada.\n" #: src/ca-cli-callbacks.c:911 #, c-format msgid "* TLS Web Server purpose disabled.\n" msgstr "* Finalitat de servidor web TLS deshabilitada.\n" #: src/ca-cli-callbacks.c:915 #, c-format msgid "* Time Stamping purpose enabled.\n" msgstr "* Finalitat de marca horària habilitada.\n" #: src/ca-cli-callbacks.c:917 #, c-format msgid "* Time Stamping purpose disabled.\n" msgstr "* Finalitat de marca horària deshabilitada.\n" #: src/ca-cli-callbacks.c:921 #, c-format msgid "* OCSP Signing purpose enabled.\n" msgstr "* Finalitat de signatura OCSP habilitada.\n" #: src/ca-cli-callbacks.c:923 #, c-format msgid "* OCSP Signing purpose disabled.\n" msgstr "* Finalitat de signatura OCSP deshabilitada.\n" #: src/ca-cli-callbacks.c:927 #, c-format msgid "* Any purpose enabled.\n" msgstr "* Qualsevol finalitat habilitada.\n" #: src/ca-cli-callbacks.c:929 #, c-format msgid "* Any purpose disabled.\n" msgstr "* Qualsevol finalitat deshabilitada.\n" #: src/ca-cli-callbacks.c:953 #, c-format msgid "You are about to sign the following Certificate Signing Request:\n" msgstr "Ara es signarà la següent petició de signatura de certificat (CSR):\n" #: src/ca-cli-callbacks.c:955 #, c-format msgid "with the certificate corresponding to the next CA:\n" msgstr "amb el certificat corresponent a aquesta CA:\n" #: src/ca-cli-callbacks.c:958 msgid "" "Introduce number of months before expiration of the new certificate (0 to " "cancel)" msgstr "" "Màxim nombre de mesos abans de la caducitat del nou certificat (0 per a " "cancel·lar):" #: src/ca-cli-callbacks.c:984 src/ca-cli-callbacks.c:1072 #, c-format msgid "" "The new certificate will be created with the following uses and purposes:\n" msgstr "El nou certificat es validarà per als següents usos i finalitats:\n" #: src/ca-cli-callbacks.c:987 msgid "Do you want to change any property of the new certificate? Yes/[No] " msgstr "Desitgeu canviar alguna propietat del nou certificat? Sí/[No] " #: src/ca-cli-callbacks.c:990 msgid "* Enable Certification Authority use? [Yes]/No " msgstr "* Habilitar ús com Entitat certificadora? [Sí]/No " #: src/ca-cli-callbacks.c:992 #, c-format msgid "* Certification Authority use disabled by policy\n" msgstr "* Ús com a Entitat certificadora deshabilitat per una directiva\n" #: src/ca-cli-callbacks.c:996 msgid "* Enable CRL Signing? [Yes]/No " msgstr "* Habilitar ús per a la signatura de CRL? [Sí]/No " #: src/ca-cli-callbacks.c:998 #, c-format msgid "* CRL signing use disabled by policy\n" msgstr "* Ús per a la signatura de CRL deshabilitat per una directiva\n" #: src/ca-cli-callbacks.c:1002 msgid "* Enable Digital Signature use? [Yes]/No " msgstr "* Habilitar l'ús per a la signatura digital? [Sí]/No " #: src/ca-cli-callbacks.c:1004 #, c-format msgid "* Digital Signature use disabled by policy\n" msgstr "* Ús per a la signatura digital deshabilitat per una directiva\n" #: src/ca-cli-callbacks.c:1008 msgid "Enable Data Encipherment use? [Yes]/No " msgstr "Habilitar l'ús per al xifratge de dades? [Sí]/No " #: src/ca-cli-callbacks.c:1010 #, c-format msgid "* Data Encipherment use disabled by policy\n" msgstr "* Ús per al xifratge de dades deshabilitat per una directiva\n" #: src/ca-cli-callbacks.c:1014 msgid "Enable Key Encipherment use? [Yes]/No " msgstr "Habilitar l'ús per al xifrat de claus? [Sí]/No " #: src/ca-cli-callbacks.c:1016 #, c-format msgid "* Key Encipherment use disabled by policy\n" msgstr "* Ús per al xifratge de claus deshabilitat per una directiva\n" #: src/ca-cli-callbacks.c:1020 msgid "Enable Non Repudiation use? [Yes]/No " msgstr "Habilitar l'ús per al no repudi? [Sí]/No " #: src/ca-cli-callbacks.c:1022 #, c-format msgid "* Non Repudiation use disabled by policy\n" msgstr "* Ús per al no repudi deshabilitat per una directiva\n" #: src/ca-cli-callbacks.c:1026 msgid "Enable Key Agreement use? [Yes]/No " msgstr "Habilitar l'ús per a negociació de claus? [Sí]/No " #: src/ca-cli-callbacks.c:1028 #, c-format msgid "* Key Agreement use disabled by policy\n" msgstr "* Ús per a la negociació de claus deshabilitat per una directiva\n" #: src/ca-cli-callbacks.c:1032 msgid "Enable Email Protection purpose? [Yes]/No " msgstr "Habilitar la finalitat de protecció de correu electrònic? [Sí]/No " #: src/ca-cli-callbacks.c:1034 #, c-format msgid "* Email Protection purpose disabled by policy\n" msgstr "" "* Finalitat de protecció del correu electrònic deshabilitada per una " "directiva.\n" #: src/ca-cli-callbacks.c:1038 msgid "Enable Code Signing purpose? [Yes]/No " msgstr "Habilitar la finalitat de signatura de codi? [Sí]/No " #: src/ca-cli-callbacks.c:1040 #, c-format msgid "* Code Signing purpose disabled by policy\n" msgstr "* Finalitat de signatura de codi deshabilitada per una directiva.\n" #: src/ca-cli-callbacks.c:1044 msgid "Enable TLS Web Client purpose? [Yes]/No " msgstr "Habilitar la finalitat de client web TLS? [Sí]/No " #: src/ca-cli-callbacks.c:1046 #, c-format msgid "* TLS Web Client purpose disabled by policy\n" msgstr "* Finalitat de client web TLS deshabilitada per una directiva\n" #: src/ca-cli-callbacks.c:1050 msgid "Enable TLS Web Server purpose? [Yes]/No " msgstr "Habilitar la finalitat de servidor web TLS? [Sí]/No " #: src/ca-cli-callbacks.c:1052 #, c-format msgid "* TLS Web Server purpose disabled by policy\n" msgstr "* Finalitat de servidor web TLS deshabilitada per una directiva\n" #: src/ca-cli-callbacks.c:1056 msgid "Enable Time Stamping purpose? [Yes]/No " msgstr "Habilitat la finalitat de marcatge temporal? [Sí]/No " #: src/ca-cli-callbacks.c:1058 #, c-format msgid "* Time Stamping purpose disabled by policy\n" msgstr "Finalitat de marcatge temporal deshabilitada per una directiva\n" #: src/ca-cli-callbacks.c:1062 msgid "Enable OCSP Signing purpose? [Yes]/No " msgstr "Habilitar la finalitat per a la signatura d'OCSP? [Sí]/No " #: src/ca-cli-callbacks.c:1063 #, c-format msgid "* OCSP Signing purpose disabled by policy\n" msgstr "" "* Finalitat per a la signatura d'OCSP deshabilitada per una directiva\n" #: src/ca-cli-callbacks.c:1067 msgid "Enable any purpose? [Yes]/No " msgstr "Habilitar l'ús per a qualsevol finalitat? [Sí]/No " #: src/ca-cli-callbacks.c:1069 #, c-format msgid "* Any purpose disabled by policy\n" msgstr "" "* L'ús per a qualsevol finalitat s'ha deshabilitat amb una directiva.\n" #: src/ca-cli-callbacks.c:1077 msgid "" "All the mandatory data for the certificate generation has been gathered." msgstr "" "S'ha obtingut tota la informació necessària per la generació del certificat." #: src/ca-cli-callbacks.c:1077 msgid "Do you want to proceed with the signing? [Yes]/No " msgstr "Voleu continuar amb la signatura i generació del certificat? [Sí]/No " #: src/ca-cli-callbacks.c:1083 #, c-format msgid "Certificate signed.\n" msgstr "Certificat signat.\n" #: src/ca-cli-callbacks.c:1105 msgid "This Certificate Signing Request will be deleted." msgstr "La sol·licitud de signatura de certificat (CSR) s'esborrarà." #: src/ca-cli-callbacks.c:1105 msgid "This operation cannot be undone. Are you sure? Yes/[No] " msgstr "Aquesta operació no pot desfer-se. Esteu segur? Sí/[No] " #: src/ca-cli-callbacks.c:1111 #, c-format msgid "Certificate Signing Request deleted.\n" msgstr "Sol·licitud de signatura de certificat esborrada.\n" #: src/ca-cli-callbacks.c:1136 #, c-format msgid "CRL generated successfully into file '%s'\n" msgstr "CRL generada amb èxit i desada al fitxer '%s'\n" #: src/ca-cli-callbacks.c:1153 msgid "The bit-length of the prime number must be whole multiple of 1024" msgstr "La longitud en bits del nombre primer ha de ser múltiple enter de 1024" #: src/ca-cli-callbacks.c:1162 #, c-format msgid "Diffie-Hellman parameters created and saved successfully in file '%s'\n" msgstr "" "Els paràmetres Diffie-Hellman s'han creat i s'han desat correctament al " "fitxer '%s'\n" #: src/ca-cli-callbacks.c:1174 msgid "Currently, the database is not password-protected." msgstr "Actualment la base de dades no es troba protegida per contrasenya." #: src/ca-cli-callbacks.c:1174 msgid "Do you want to password protect it? [Yes]/No " msgstr "Desitgeu protegir-la amb contrasenya? [Sí]/No " #: src/ca-cli-callbacks.c:1175 msgid "" "OK. You need to supply a password for protecting the private keys in the\n" "database, so nobody else but authorized people can use them. This password\n" "will be asked any time gnoMint will make use of any private key in database." msgstr "" "D'acord. Cal proporcionar una contrasenya per a protegir les claus privades " "a\n" "la base de dades, per tal que només les persones autoritzades puguin fer\n" "ús d'elles. Aquesta contrasenya serà sol·licitada cada vegada que gnoMint " "faci ús de\n" "qualsevol clau privada a la base de dades." #: src/ca-cli-callbacks.c:1178 msgid "Insert password:" msgstr "Introduïu la contrasenya:" #: src/ca-cli-callbacks.c:1178 msgid "Insert password (confirm):" msgstr "Torneu a introduir la contrasenya:" #: src/ca-cli-callbacks.c:1179 src/ca-cli-callbacks.c:1249 msgid "The introduced passwords are distinct." msgstr "Les contrasenyes introduïdes són diferents." #: src/ca-cli-callbacks.c:1190 #, c-format msgid "Password established successfully.\n" msgstr "Contrasenya establerta amb èxit.\n" #: src/ca-cli-callbacks.c:1197 #, c-format msgid "Nothing done.\n" msgstr "No s'ha fet res.\n" #: src/ca-cli-callbacks.c:1201 msgid "Currently, the database IS password-protected." msgstr "Actualment la base de dades ESTÀ protegida amb contrasenya." #: src/ca-cli-callbacks.c:1201 msgid "Do you want to remove this password protection? Yes/[No] " msgstr "Desitgeu eliminar aquesta protecció amb contrasenya? Sí/[No] " #: src/ca-cli-callbacks.c:1205 #, c-format msgid "" "For removing the password-protection, the current database password\n" "must be supplied.\n" msgstr "" "Per eliminar la protecció amb contrasenya, heu de proporcionar la \n" "contrasenya actual.\n" #: src/ca-cli-callbacks.c:1206 src/ca-cli-callbacks.c:1234 msgid "Please, insert the current database password (Empty to cancel): " msgstr "" "Introduïu la contrasenya actual de la base de dades (Buida per a " "cancel·lar): " #: src/ca-cli-callbacks.c:1213 src/ca-cli-callbacks.c:1241 msgid "" "The current password you have entered\n" "doesn't match with the actual current database password." msgstr "" "La contrasenya actual introduïda\n" "no coincideix amb la contrasenya real de la base de dades." #: src/ca-cli-callbacks.c:1218 msgid "" "Error while removing database password. \n" "The operation was cancelled." msgstr "" "S'ha produït un error al eliminar la contrasenya de\n" "la base de dades. S'ha cancel·lat l'operació." #: src/ca-cli-callbacks.c:1223 #, c-format msgid "Password removed successfully.\n" msgstr "Contrasenya eliminada amb èxit.\n" #: src/ca-cli-callbacks.c:1233 #, c-format msgid "" "You must supply the current database password before changing the password.\n" msgstr "" "Ha de proporcionar la contrasenya actual de la base de dades abans de " "canviar-la.\n" #: src/ca-cli-callbacks.c:1245 msgid "" "OK. Now you must supply a new password for protecting the private keys in " "the\n" "database, so nobody else but authorized people can use them. This password\n" "will be asked any time gnoMint will make use of any private key in database." msgstr "" "D'acord. Heu de proporcionar una nova contrasenya per protegir les claus " "privades a \n" "la base de dades, per tal que només les persones autoritzades puguin fer-les " "servir.\n" "Aquesta contrasenya es demanarà sempre que gnoMint faci ús d'alguna clau\n" "privada a la base de dades." #: src/ca-cli-callbacks.c:1248 msgid "Insert new password:" msgstr "Introduïu la nova contrasenya:" #: src/ca-cli-callbacks.c:1248 msgid "Insert new password (confirm):" msgstr "Torneu a introduïr la contrasenya:" #: src/ca-cli-callbacks.c:1257 msgid "" "Error while changing database password. \n" "The operation was cancelled." msgstr "" "S'ha produït un error al canviar la contrasenya de la base de dades. \n" "S'ha cancel·lat la operació" #: src/ca-cli-callbacks.c:1263 #, c-format msgid "Password changed successfully.\n" msgstr "La contrasenya s'ha canviat amb èxit.\n" #: src/ca-cli-callbacks.c:1281 msgid "Problem when importing the given file." msgstr "S'han produït problemes en importar el fitxer indicat." #: src/ca-cli-callbacks.c:1284 #, c-format msgid "File imported successfully.\n" msgstr "Fitxer importat amb èxit.\n" #: src/ca-cli-callbacks.c:1300 #, c-format msgid "Directory imported successfully.\n" msgstr "Directori importat amb èxit.\n" #: src/ca-cli-callbacks.c:1343 #, c-format msgid "Certificate:\n" msgstr "Certificat:\n" #: src/ca-cli-callbacks.c:1347 #, c-format msgid "\tSerial number: %s\n" msgstr "\tNúm. de sèrie: %s\n" #: src/ca-cli-callbacks.c:1351 src/ca-cli-callbacks.c:1357 #: src/ca-cli-callbacks.c:1412 #, c-format msgid "\tDistinguished Name: %s\n" msgstr "\tNom distintiu (DN): %s\n" #: src/ca-cli-callbacks.c:1351 src/ca-cli-callbacks.c:1352 #: src/ca-cli-callbacks.c:1357 src/ca-cli-callbacks.c:1358 msgid "None." msgstr "Cap." #: src/ca-cli-callbacks.c:1352 src/ca-cli-callbacks.c:1358 #: src/ca-cli-callbacks.c:1416 #, c-format msgid "\tUnique ID: %s\n" msgstr "\tIdentificador únic: %s\n" #: src/ca-cli-callbacks.c:1356 #, c-format msgid "Issuer:\n" msgstr "Emissor:\n" #: src/ca-cli-callbacks.c:1365 src/ca-cli-callbacks.c:1372 #, c-format msgid "" "\t (warning: this 32-bit build cannot tell a real post-2038 date from an " "overflow; this value may be inaccurate)\n" msgstr "" #: src/ca-cli-callbacks.c:1375 #, c-format msgid "Fingerprints:\n" msgstr "Empremtes digitals:\n" #: src/ca-cli-callbacks.c:1376 #, c-format msgid "\tSHA1 fingerprint: %s\n" msgstr "\tEmpremta digital SHA1: %s\n" #: src/ca-cli-callbacks.c:1377 #, c-format msgid "\tMD5 fingerprint: %s\n" msgstr "\tEmpremta digital MD5: %s\n" #: src/ca-cli-callbacks.c:1378 #, fuzzy, c-format msgid "\tSHA256 fingerprint: %s\n" msgstr "\tEmpremta digital SHA1: %s\n" #: src/ca-cli-callbacks.c:1409 #, c-format msgid "Certificate Signing Request:\n" msgstr "Sol·licitud de signatura de certificat:\n" #: src/ca-cli-callbacks.c:1486 msgid "Generated certs inherit Country from CA " msgstr "" "Els certificats generats hereten el país de la CA " #: src/ca-cli-callbacks.c:1487 msgid "Generated certs inherit State from CA " msgstr "" "Els certificats generats hereten l'estat/província de la " "CA " #: src/ca-cli-callbacks.c:1488 msgid "Generated certs inherit Locality from CA " msgstr "" "Els certificats generats hereten localitat o ciutat de la " "CA " #: src/ca-cli-callbacks.c:1489 msgid "Generated certs inherit Organization from CA " msgstr "" "Els certificats generats hereten l'Organització de la " "CA " #: src/ca-cli-callbacks.c:1490 msgid "Generated certs inherit Organizational Unit from CA " msgstr "" "Els certificats generats hereten la unitat organitzacional de la " "CA " #: src/ca-cli-callbacks.c:1491 msgid "Country in generated certs must be the same than in CA " msgstr "" "El país dels certificats generats ha de coincidir amb la CA " #: src/ca-cli-callbacks.c:1492 msgid "State in generated certs must be the same than in CA " msgstr "" "L'Estat o província dels cert. generats ha de coincidir amb la " "CA " #: src/ca-cli-callbacks.c:1493 msgid "Locality in generated certs must be the same than in CA " msgstr "" "La localitat o ciutat dels cert. generats ha de coincidir amb la " "CA " #: src/ca-cli-callbacks.c:1494 msgid "Organization in generated certs must be the same than in CA " msgstr "" "L'organització dels cert. generats ha de coincidir amb la de la CA " #: src/ca-cli-callbacks.c:1495 msgid "Organizational Unit in generated certs must be the same than in CA" msgstr "La Unitat Organitzativa dels cert. generats ha de coincidir amb la CA" #: src/ca-cli-callbacks.c:1496 msgid "Maximum number of hours between CRL updates " msgstr "" "Nombre màxim d'hores entre actualitzacions de CRLs " #: src/ca-cli-callbacks.c:1497 msgid "CRL distribution point (URL where CRL is published) " msgstr "" #: src/ca-cli-callbacks.c:1498 msgid "Maximum number of months before expiration of new certs " msgstr "" "Num. màxim de mesos abans de la caducitat dels nous certificats " #: src/ca-cli-callbacks.c:1499 msgid "CA use enabled in generated certs " msgstr "" "Habilitar l'ús com a CA en els certificats " "generats " #: src/ca-cli-callbacks.c:1500 msgid "CRL Sign use enabled in generated certs " msgstr "" "Habilitar l'ús per a signatura de CRLs en els certificats " "generats " #: src/ca-cli-callbacks.c:1501 msgid "Non reputation use enabled in generated certs " msgstr "" "Habilitar l'ús per al no repudi en els certificats " "generats " #: src/ca-cli-callbacks.c:1502 msgid "Digital signature use enabled in generated certs " msgstr "" "Habilita l'ús per a la signatura digital en els cert. " "generats " #: src/ca-cli-callbacks.c:1503 msgid "Key encipherment use enabled in generated certs " msgstr "" "Habilita l'ús per al xifratge de claus en els cert. " "generats " #: src/ca-cli-callbacks.c:1504 msgid "Key agreement use enabled in generated certs " msgstr "" "Habilita l'ús per a la negociació de claus en els cert. " "generats " #: src/ca-cli-callbacks.c:1505 msgid "Data encipherment use enabled in generated certs " msgstr "" "Habilita l'ús per al xifratge de dades en els cert. " "generats " #: src/ca-cli-callbacks.c:1506 msgid "TLS web server purpose enabled in generated certs " msgstr "" "Habilita la finalitat de servidor web TLS per als cert. " "generats " #: src/ca-cli-callbacks.c:1507 msgid "TLS web client purpose enabled in generated certs " msgstr "" "Habilita la finalitat de client web TLS per als cert. " "generats " #: src/ca-cli-callbacks.c:1508 msgid "Time stamping purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1509 msgid "Code signing server purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1510 msgid "Email protection purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1511 msgid "OCSP signing purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1512 msgid "Any purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1526 #, c-format msgid "Showing policies of the following certificate:\n" msgstr "" #: src/ca-cli-callbacks.c:1528 #, c-format msgid "" "\n" "Policies:\n" msgstr "" #: src/ca-cli-callbacks.c:1530 #, c-format msgid "Id.\tDescription\t\t\t\t\t\t\t\tValue\n" msgstr "" #: src/ca-cli-callbacks.c:1556 msgid "The given policy id is not valid" msgstr "" #: src/ca-cli-callbacks.c:1568 #, c-format msgid "" "You are about to assign to the policy\n" "'%s' the new value '%s'." msgstr "" #: src/ca-cli-callbacks.c:1572 src/ca-cli-callbacks.c:1616 msgid "Are you sure? Yes/[No] : " msgstr "" #: src/ca-cli-callbacks.c:1577 #, c-format msgid "Policy set correctly to '%s'.\n" msgstr "" #: src/ca-cli-callbacks.c:1591 #, c-format msgid "gnoMint-cli current preferences:\n" msgstr "" #: src/ca-cli-callbacks.c:1593 #, c-format msgid "Id.\tName\t\t\tValue\n" msgstr "" #: src/ca-cli-callbacks.c:1594 #, c-format msgid "0\tGnome keyring support\t%d\n" msgstr "" #: src/ca-cli-callbacks.c:1606 msgid "The given preference id is not valid" msgstr "" #: src/ca-cli-callbacks.c:1612 #, c-format msgid "" "You are about to assign to the preference 'Gnome keyring support' the new " "value '%d'." msgstr "" #: src/ca-cli-callbacks.c:1634 #, c-format msgid "" "%s version %s\n" "%s\n" msgstr "" #: src/ca-cli-callbacks.c:1635 #, c-format msgid "" "\n" "Authors:\n" "%s\n" "\n" msgstr "" #: src/ca-cli-callbacks.c:1636 src/ca-cli-callbacks.c:1637 src/main.c:742 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " David Marín https://launchpad.net/~davefx\n" " Sergio Oller https://launchpad.net/~zeehio" #: src/ca-cli-callbacks.c:1637 #, c-format msgid "" "Translators:\n" "%s\n" msgstr "" #: src/ca-cli-callbacks.c:1644 msgid "" "THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY\n" "APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT\n" "HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY\n" "OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,\n" "THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n" "PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM\n" "IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF\n" "ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n" "\n" "For more information about warranty, see section 15 onwards of the GNU\n" "General Public License. You should have received a copy of the GNU General\n" "Public License along with this program. If not, see\n" ".\n" "\n" msgstr "" #: src/ca-cli-callbacks.c:1662 msgid "" "This program is free software: you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation, either version 3 of the License, or\n" "(at your option) any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program. If not, see .\n" "\n" msgstr "" #: src/ca-cli-callbacks.c:1677 #, fuzzy, c-format msgid "%s version %s \"%s\"\n" msgstr "%s versió %s\n" #: src/ca-cli-callbacks.c:1686 #, c-format msgid "Available commands:\n" msgstr "Ordres disponibles:\n" #: src/ca-cli-callbacks.c:1687 #, c-format msgid "===================\n" msgstr "===================\n" #: src/ca-cli-callbacks.c:1697 #, c-format msgid "Exiting gnomint-cli...\n" msgstr "" #: src/ca-cli-callbacks.c:1738 #, fuzzy msgid "The given CA id is not valid" msgstr "L'identificador de la CA proporcionat no és vàlid" #: src/ca-cli-callbacks.c:1750 msgid "Certificate type must be 'web' or 'email'" msgstr "" #: src/ca-cli-callbacks.c:1756 msgid "Server name cannot be empty" msgstr "" #: src/ca-cli-callbacks.c:1760 #, fuzzy, c-format msgid "Creating %s certificate for: %s\n" msgstr "Creant un certificat arrel de la CA" #: src/ca-cli-callbacks.c:1761 #, fuzzy msgid "web server" msgstr "Servidor web TLS" #: src/ca-cli-callbacks.c:1761 #, fuzzy msgid "email server" msgstr "Servidor web TLS" #: src/ca-cli-callbacks.c:1837 #, c-format msgid "Error: Key generation failed: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1845 #, fuzzy, c-format msgid "Error: CSR generation failed: %s\n" msgstr "Nombre de CSRs en el fitxer: %d\n" #: src/ca-cli-callbacks.c:1854 #, c-format msgid "Error: Failed to parse generated CSR\n" msgstr "" #: src/ca-cli-callbacks.c:1865 #, c-format msgid "Error: Failed to save CSR: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1879 msgid "CSR created with ID: %" msgstr "" #: src/ca-cli-callbacks.c:1903 #, fuzzy, c-format msgid "Error: Failed to sign certificate: %s\n" msgstr "S'ha produït un error signant el certificat" #: src/ca-cli-callbacks.c:1910 #, fuzzy, c-format msgid "Certificate generated successfully for: %s\n" msgstr "Certificat exportat amb èxit." #: src/ca-cli-callbacks.c:1911 #, fuzzy, c-format msgid "Certificate type: %s\n" msgstr "Usos del certificat:\n" #: src/ca-cli-callbacks.c:1911 #, fuzzy msgid "Web Server" msgstr "Servidor web TLS" #: src/ca-cli-callbacks.c:1911 msgid "Email Server" msgstr "" #: src/ca-cli-callbacks.c:1925 #, fuzzy msgid "Usage: renewcert " msgstr "showcert " #: src/ca-cli-callbacks.c:1930 src/ca-cli-callbacks.c:1968 #, fuzzy msgid "The given certificate id is not valid" msgstr "L'identificador de certificat proporcionat no és vàlid" #: src/ca-cli-callbacks.c:1941 msgid "" "gnoMint will issue a new certificate with the same subject and SAN as this " "one, signed by the same CA, with a fresh keypair. The old certificate stays " "in place." msgstr "" #: src/ca-cli-callbacks.c:1944 #, fuzzy msgid "Renew? [Yes]/No " msgstr "Esteu segur [Sí]/No " #: src/ca-cli-callbacks.c:1955 msgid "Certificate renewed. New certificate id: %" msgstr "" #: src/ca-cli-callbacks.c:1963 #, fuzzy msgid "Usage: exportchain " msgstr "extractcertpkey " #: src/ca-cli-callbacks.c:1974 msgid "Cannot build chain PEM for that certificate." msgstr "" #: src/ca-cli-callbacks.c:1979 #, fuzzy msgid "Cannot write chain file." msgstr "Afegir certificat de la CA auto-signat" #: src/ca-cli-callbacks.c:1985 #, c-format msgid "Full chain (leaf → root) written to %s\n" msgstr "" #: src/ca-cli-callbacks.c:1992 msgid "Usage: revokemany [cert-id ...]" msgstr "" #: src/ca-cli-callbacks.c:2008 #, fuzzy, c-format msgid "%d certificate revoked.\n" msgid_plural "%d certificates revoked.\n" msgstr[0] "Certificat revocat.\n" msgstr[1] "Certificat revocat.\n" #: src/ca-cli-callbacks.c:2016 msgid "Usage: deletemany [csr-id ...]" msgstr "" #: src/ca-cli-callbacks.c:2032 #, c-format msgid "%d CSR deleted.\n" msgid_plural "%d CSRs deleted.\n" msgstr[0] "" msgstr[1] "" #: src/ca-cli-callbacks.c:2092 msgid "Usage: search " msgstr "" #: src/ca-cli-callbacks.c:2099 #, c-format msgid "Matches (id\tserial\tsubject):\n" msgstr "" #: src/ca-cli-callbacks.c:2102 #, c-format msgid "%d match.\n" msgid_plural "%d matches.\n" msgstr[0] "" msgstr[1] "" #: src/ca-cli-callbacks.c:2126 #, fuzzy, c-format msgid "'%s' is not a certificate id in this database." msgstr "_Obre una base de dades de certificats" #: src/ca-cli-callbacks.c:2134 #, c-format msgid "Cannot read PEM for cert id %s." msgstr "" #: src/ca-cli-callbacks.c:2152 msgid "Usage: diff " msgstr "" #: src/ca-cli-callbacks.c:2168 msgid "Field" msgstr "" #: src/ca-cli-callbacks.c:2181 #, c-format msgid "" "\n" "%d field differs.\n" msgid_plural "" "\n" "%d fields differ.\n" msgstr[0] "" msgstr[1] "" #: src/ca_creation.c:55 src/csr_creation.c:57 msgid "Generating new RSA key pair" msgstr "" #: src/ca_creation.c:64 src/ca_creation.c:88 src/ca_creation.c:109 #: src/ca_creation.c:128 src/csr_creation.c:66 src/csr_creation.c:87 #: src/csr_creation.c:104 src/csr_creation.c:121 msgid "Key generation failed" msgstr "" #: src/ca_creation.c:78 src/csr_creation.c:79 msgid "Generating new DSA key pair" msgstr "" #: src/ca_creation.c:101 src/csr_creation.c:97 msgid "Generating new ECDSA key pair" msgstr "" #: src/ca_creation.c:120 src/csr_creation.c:114 msgid "Generating new Ed25519 key pair" msgstr "" #: src/ca_creation.c:139 msgid "Generating self-signed CA-Root cert" msgstr "" #: src/ca_creation.c:147 msgid "Certificate generation failed" msgstr "" #: src/ca_creation.c:159 msgid "Creating CA database" msgstr "" #: src/ca_creation.c:168 msgid "CA database creation failed" msgstr "" #: src/ca_creation.c:180 msgid "CA generated successfully" msgstr "" #: src/ca_file.c:207 #, c-format msgid "Error opening filename '%s'" msgstr "" #: src/ca_file.c:310 msgid "" "The selected database has been created with a newer version of gnoMint than " "the currently installed." msgstr "" #: src/ca_file.c:1221 msgid "Cannot find last assigned serial number" msgstr "" #: src/ca_file.c:1410 msgid "Cannot find parent CA in database" msgstr "" #: src/ca_file.c:1600 msgid "" "This certificate already exists in the database: cannot insert it twice." msgstr "" #: src/ca_file.c:2044 msgid "" "The given file contains a valid private key. However, it has not been " "imported to the database because it doesn't match any key-less certificate " "or certificate request in the database." msgstr "" #: src/ca_file.c:2047 msgid "" "The given file contains a valid private key. However, it has not been " "imported to the database because it doesn't match any key-less certificate " "in the database." msgstr "" #: src/certificate_properties.c:151 msgid "" "This 32-bit build cannot represent dates after 2038-01-19, so it cannot " "distinguish a genuine date from a later one that overflowed. This value may " "be inaccurate." msgstr "" #: src/certificate_properties.c:383 #, fuzzy msgid "Unknown" msgstr "(desconegut)" #: src/certificate_properties.c:453 src/tls.c:1478 msgid "Certificate signing" msgstr "" #: src/certificate_properties.c:457 msgid "Key encipherment only" msgstr "" #: src/certificate_properties.c:459 msgid "Key decipherment only" msgstr "" #: src/certificate_properties.c:472 msgid "Version" msgstr "Versió" #: src/certificate_properties.c:507 msgid "Serial Number" msgstr "Número de sèrie" #: src/certificate_properties.c:522 src/certificate_properties.c:1262 msgid "Signature" msgstr "Signatura" #: src/certificate_properties.c:525 src/certificate_properties.c:676 #: src/certificate_properties.c:679 src/certificate_properties.c:1228 msgid "Algorithm" msgstr "Algorisme" #: src/certificate_properties.c:529 src/certificate_properties.c:686 #: src/certificate_properties.c:726 src/certificate_properties.c:763 #: src/certificate_properties.c:1232 msgid "Parameters" msgstr "Paràmetres" #: src/certificate_properties.c:529 src/certificate_properties.c:686 #: src/certificate_properties.c:763 src/certificate_properties.c:767 #: src/certificate_properties.c:781 src/certificate_properties.c:790 #: src/certificate_properties.c:1232 msgid "(unknown)" msgstr "(desconegut)" #: src/certificate_properties.c:563 msgid "Issuer" msgstr "Emissor" #: src/certificate_properties.c:598 msgid "Validity" msgstr "Validesa" #: src/certificate_properties.c:603 msgid "Not Before" msgstr "" #: src/certificate_properties.c:610 msgid "Not After" msgstr "" #: src/certificate_properties.c:616 msgid "Note" msgstr "" #: src/certificate_properties.c:617 msgid "" "This 32-bit build cannot represent dates after 2038-01-19, so a value marked " "⚠ may be a later date that overflowed and is inaccurate." msgstr "" #: src/certificate_properties.c:673 msgid "Subject Public Key Info" msgstr "Informació de clau pública de l'assumpte" #: src/certificate_properties.c:690 msgid "RSA PublicKey" msgstr "" #: src/certificate_properties.c:702 msgid "Modulus" msgstr "" #: src/certificate_properties.c:710 msgid "Public Exponent" msgstr "Exponent públic" #: src/certificate_properties.c:755 msgid "DSA PublicKey" msgstr "" #: src/certificate_properties.c:767 msgid "Subject Public Key" msgstr "" #: src/certificate_properties.c:781 msgid "Issuer Unique ID" msgstr "Identificador únic de l'emissor" #: src/certificate_properties.c:790 msgid "Subject Unique ID" msgstr "Identificador únic de l'assumpte" #: src/certificate_properties.c:813 src/certificate_properties.c:836 #: src/certificate_properties.c:945 src/certificate_properties.c:1058 #: src/certificate_properties.c:1085 src/certificate_properties.c:1124 #: src/certificate_properties.c:1182 src/certificate_properties.c:1457 #: src/san_manager.c:399 msgid "Value" msgstr "Valor" #: src/certificate_properties.c:875 src/certificate_properties.c:1018 msgid "DNS Name" msgstr "" #: src/certificate_properties.c:882 src/certificate_properties.c:1025 msgid "RFC822 Name" msgstr "" #: src/certificate_properties.c:905 src/certificate_properties.c:919 #: src/certificate_properties.c:927 msgid "IP" msgstr "IP" #: src/certificate_properties.c:936 src/certificate_properties.c:1049 msgid "Directory Name" msgstr "Nom del directori" #: src/certificate_properties.c:973 src/certificate_properties.c:1164 msgid "TRUE" msgstr "VERDADER" #: src/certificate_properties.c:973 src/certificate_properties.c:1164 msgid "FALSE" msgstr "FALS" #: src/certificate_properties.c:977 msgid "CA" msgstr "" #: src/certificate_properties.c:981 msgid "Path Length Constraint" msgstr "" #: src/certificate_properties.c:1154 msgid "Extensions" msgstr "Extensions" #: src/certificate_properties.c:1166 msgid "Critical" msgstr "" #: src/certificate_properties.c:1199 msgid "Certificate" msgstr "Certificat" #: src/certificate_properties.c:1225 msgid "Signature Algorithm" msgstr "Algorisme de la signatura" #: src/certificate_properties.c:1446 msgid "Name" msgstr "Nom" #: src/certificate_properties.c:1477 src/tls.c:1494 msgid "TLS WWW Server" msgstr "" #: src/certificate_properties.c:1478 msgid "TLS WWW Client" msgstr "" #: src/certificate_properties.c:1484 msgid "Subject Directory Attributes" msgstr "" #: src/certificate_properties.c:1485 msgid "Subject Key Identifier" msgstr "" #: src/certificate_properties.c:1486 msgid "Key Usage" msgstr "" #: src/certificate_properties.c:1487 msgid "Private Key Usage Period" msgstr "" #: src/certificate_properties.c:1489 msgid "Basic Constraints" msgstr "" #: src/certificate_properties.c:1490 msgid "Name Constraints" msgstr "" #: src/certificate_properties.c:1491 msgid "CRL Distribution Points" msgstr "" #: src/certificate_properties.c:1492 msgid "Certificate Policies" msgstr "" #: src/certificate_properties.c:1493 msgid "Policy Mappings" msgstr "" #: src/certificate_properties.c:1494 msgid "Authority Key Identifier" msgstr "" #: src/certificate_properties.c:1495 msgid "Policy Constraints" msgstr "" #: src/certificate_properties.c:1496 msgid "Extended Key Usage" msgstr "" #: src/certificate_properties.c:1497 msgid "Delta CRL Distribution Point" msgstr "" #: src/certificate_properties.c:1498 msgid "Inhibit Any-Policy" msgstr "" #: src/creation_process_window.c:69 msgid "CA creation process finished" msgstr "" #: src/creation_process_window.c:193 msgid "Creation process cancelled" msgstr "" #: src/creation_process_window.c:215 msgid "CSR creation process finished" msgstr "" #: src/creation_process_window.c:288 msgid "Creating Certificate Signing Request" msgstr "" #: src/crl.c:101 msgid "CRL generated successfully" msgstr "" #: src/crl.c:146 msgid "Export Certificate Revocation List" msgstr "" #: src/crl.c:180 src/crl.c:253 src/crl.c:299 msgid "There was an error while generating CRL." msgstr "" #: src/crl.c:189 msgid "There was an error while writing CRL." msgstr "" #: src/crl.c:201 src/crl.c:227 src/crl.c:268 src/crl.c:330 src/crl.c:351 msgid "There was an error while exporting CRL." msgstr "" #: src/crl.c:238 src/crl.c:369 msgid "There was an error while getting revoked certificates." msgstr "" #: src/csr_creation.c:131 msgid "Generating CSR" msgstr "" #: src/csr_creation.c:140 msgid "CSR generation failed" msgstr "" #: src/csr_creation.c:151 msgid "Saving CSR in database" msgstr "" #: src/csr_creation.c:169 msgid "CSR couldn't be saved" msgstr "" #: src/csr_creation.c:180 msgid "CSR generated successfully" msgstr "" #: src/csr_properties.c:91 msgid "" "This Certificate Signing Request has its corresponding private key saved " "in a external file." msgstr "" #: src/dialog.c:123 #, c-format msgid "" "\n" "The password must have, at least, %d characters\n" msgstr "" #: src/dialog.c:581 msgid "To do. Feature not implemented yet." msgstr "" #: src/export.c:43 src/export.c:48 src/export.c:53 msgid "There was an error while saving Diffie-Hellman parameters." msgstr "" #: src/export.c:79 src/export.c:138 src/export.c:146 src/export.c:200 #: src/export.c:210 src/export.c:304 src/export.c:341 src/export.c:376 #: src/export.c:384 src/export.c:424 src/export.c:433 src/export.c:474 msgid "There was an error while exporting private key." msgstr "" #: src/export.c:99 src/export.c:284 src/export.c:357 src/export.c:455 msgid "There was an error while getting private key." msgstr "" #: src/export.c:110 src/export.c:248 msgid "There was an error while uncrypting private key." msgstr "" #: src/export.c:113 src/export.c:264 msgid "" "You need to supply a passphrase for protecting the exported private key, so " "nobody else but authorized people can use it. This passphrase will be asked " "by any application that will make use of the private key." msgstr "" #: src/export.c:116 src/export.c:267 src/export.c:536 src/export.c:715 msgid "Insert passphrase (8 characters or more):" msgstr "" #: src/export.c:116 src/export.c:267 src/export.c:536 src/export.c:715 msgid "Insert passphrase (confirm):" msgstr "" #: src/export.c:117 src/export.c:268 src/export.c:537 src/export.c:716 msgid "The introduced passphrases are distinct." msgstr "" #: src/export.c:120 src/export.c:178 msgid "Operation cancelled." msgstr "" #: src/export.c:130 src/export.c:190 msgid "There was an error while password-protecting private key." msgstr "" #: src/export.c:368 src/export.c:415 msgid "There was an error while decrypting private key." msgstr "" #: src/export.c:513 src/export.c:747 msgid "Unsupported operation: you cannot generate a PKCS#12 for a CSR." msgstr "" #: src/export.c:521 src/export.c:530 src/export.c:695 src/export.c:731 msgid "" "There was an error while getting the certificate and private key from the " "internal database." msgstr "" #: src/export.c:533 src/export.c:712 msgid "" "You need to supply a passphrase for protecting the exported certificate, so " "nobody else but authorized people can use it. This passphrase will be asked " "by any application that will import the certificate." msgstr "" #: src/export.c:555 src/export.c:629 msgid "There was an error while generating the PKCS#12 package." msgstr "" #: src/export.c:569 src/export.c:578 src/export.c:652 src/export.c:663 msgid "There was an error while exporting the certificate." msgstr "" #: src/gnomint-cli.c:59 msgid "- A Certification Authority manager" msgstr "" #: src/gnomint-cli.c:62 #, c-format msgid "Failed to initialize: %s\n" msgstr "" #: src/import.c:171 #, fuzzy, c-format msgid "" "The whole selected file, or some of its elements, seems to\n" "be cyphered using a password or passphrase. For importing\n" "the file into gnoMint database, you must provide an \n" "appropriate password.\n" msgstr "" "Tot el fitxer seleccionat, o algun dels elements que el conformen, sembla " "haver estat xifrat amb una contrasenya.\n" "\n" "A fi d'importar el fitxer a la base de dades de gnoMint, ha de proporcionar " "la contrasenya adient." #: src/import.c:176 #, c-format msgid "Please introduce password for `%s'" msgstr "" #: src/import.c:218 #, c-format msgid "" "Couldn't import the certificate request. \n" "The database returned this error: \n" "\n" "'%s'" msgstr "" #: src/import.c:298 msgid "" "The imported certificate expires after 2038-01-19, a date this 32-bit build " "cannot represent. Its stored expiration has been capped and may be " "inaccurate. The certificate itself is unchanged; open it on a 64-bit system " "to see the exact date." msgstr "" #: src/import.c:310 #, c-format msgid "" "Couldn't import the certificate. \n" "The database returned this error: \n" "\n" "'%s'" msgstr "" #: src/import.c:666 src/import.c:852 msgid "PKCS#8 crypted private key" msgstr "" #: src/import.c:677 src/import.c:862 msgid "The given password doesn't match the one used for crypting this part" msgstr "" #: src/import.c:771 msgid "Encrypted PKCS#12 bag" msgstr "" #: src/import.c:788 msgid "" "The given password doesn't match with the password used for encrypting this " "part." msgstr "" #: src/import.c:999 msgid "Couldn't find any supported format in the given file" msgstr "" #: src/import.c:1012 src/import.c:1363 #, c-format msgid "Couldn't open %s file. Check permissions." msgstr "" #: src/import.c:1039 #, c-format msgid "Couldn't recognize the file %s as a RSA or DSA private key." msgstr "" #: src/import.c:1055 #, c-format msgid "Private key for %s" msgstr "" #: src/import.c:1057 #, c-format msgid "Private key %s" msgstr "" #: src/import.c:1092 msgid "Problem while calling to openssl for decyphering private key." msgstr "" #: src/import.c:1100 #, c-format msgid "" "OpenSSL has returned the following error while trying to decypher the " "private key:\n" "\n" "%s" msgstr "" #: src/import.c:1211 msgid "There was a problem while importing the public CA root certificate" msgstr "" #: src/import.c:1225 msgid "CA Root certificate" msgstr "" #: src/import.c:1227 msgid "" "There was a problem while importing the private key corresponding to CA root " "certificate" msgstr "" #: src/import.c:1237 msgid "There was a problem while opening the directory certs/." msgstr "" #: src/import.c:1261 msgid "There was a problem while opening the directory newcerts/." msgstr "" #: src/import.c:1288 msgid "There was a problem while opening the directory req." msgstr "" #: src/import.c:1314 msgid "There was a problem while opening the directory crl/." msgstr "" #: src/import.c:1336 msgid "There was a problem while opening the directory keys/." msgstr "" #: src/import.c:1394 msgid "Files in the directory don't belong to any supported CA format." msgstr "" #: src/main.c:567 #, c-format msgid "" "Problem when creating '%s' CA database:\n" "%s" msgstr "" #: src/main.c:577 #, c-format msgid "Problem when opening new '%s' CA database" msgstr "" #: src/main.c:591 msgid "Create new CA database" msgstr "" #: src/main.c:616 #, c-format msgid "Problem when opening '%s' CA database" msgstr "" #: src/main.c:630 msgid "Open CA database" msgstr "" #: src/main.c:662 msgid "Save CA database as..." msgstr "" #: src/main.c:722 msgid "" "gnoMint is a program for creating and managing Certification Authorities, " "and their certificates" msgstr "" #: src/main.c:725 msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU General Public License as published by the Free " "Software Foundation; either version 3 of the License, or (at your option) " "any later version.\n" "\n" "This program is distributed in the hope that it will be useful, but WITHOUT " "ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or " "FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for " "more details.\n" "\n" "You should have received a copy of the GNU General Public License along with " "this program; if not, write to the Free Software Foundation, Inc., 51 " "Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA." msgstr "" #: src/main.c:741 msgid "Code collaborators" msgstr "" #: src/new_ca_window.c:191 src/new_req_window.c:222 msgid "ECDSA curve:" msgstr "" #: src/new_ca_window.c:219 msgid "Please enter a Common Name (CN) for the CA." msgstr "" #: src/new_cert.c:197 msgid "" "The policy of this CA obligue the country field of the certificates to be " "the same as the one in the CA cert." msgstr "" #: src/new_cert.c:203 msgid "" "The policy of this CA obligue the state/province field of the certificates " "to be the same as the one in the CA cert." msgstr "" #: src/new_cert.c:209 msgid "" "The policy of this CA obligue the locality/city field of the certificates to " "be the same as the one in the CA cert." msgstr "" #: src/new_cert.c:215 msgid "" "The policy of this CA obligue the organization field of the certificates to " "be the same as the one in the CA cert." msgstr "" #: src/new_cert.c:221 msgid "" "The policy of this CA obligue the organizational unit field of the " "certificates to be the same as the one in the CA cert." msgstr "" #: src/new_cert.c:659 msgid "" "The expiration date of the new certificate is after the expiration date of " "the CA certificate.\n" "\n" "According to the current standards, this is not allowed. The new certificate " "will be created with the same expiration date as the CA certificate." msgstr "" #: src/new_cert.c:734 msgid "" "This system uses a 32-bit time_t and cannot represent dates after " "2038-01-19. The new certificate's expiration date has been clamped to that " "limit. To issue longer-lived certificates, run gnoMint on a 64-bit platform." msgstr "" #: src/new_cert.c:770 src/new_cert.c:809 src/new_cert.c:838 msgid "Error while signing CSR." msgstr "" #: src/new_req_window.c:374 #, fuzzy msgid "Please enter a Common Name (CN) for the certificate request." msgstr "Entitat certificadora" #: src/pkey_manage.c:124 #, c-format msgid "" "The file that holds private key for certificate '%s' is password-protected.\n" "\n" "Please, insert the password corresponding to this file." msgstr "" #: src/pkey_manage.c:163 #, c-format msgid "" "The file that holds private key for certificate\n" "'%s' is password-protected.\n" "\n" msgstr "" #: src/pkey_manage.c:211 src/pkey_manage.c:303 msgid "" "The given password doesn't match with the one used while crypting the file." msgstr "" #: src/pkey_manage.c:226 src/pkey_manage.c:315 src/pkey_manage.c:476 msgid "" "The file designated in database contains a private key, but it is not the " "private key corresponding to the certificate." msgstr "" #: src/pkey_manage.c:229 src/pkey_manage.c:318 src/pkey_manage.c:479 msgid "" "The file designated in database doesn't contain any recognized private key." msgstr "" #: src/pkey_manage.c:233 src/pkey_manage.c:500 msgid "The file designated in database couldn't be opened." msgstr "" #: src/pkey_manage.c:236 src/pkey_manage.c:503 msgid "The file designated in database doesn't exist." msgstr "" #: src/pkey_manage.c:360 #, fuzzy msgid "Select private key file" msgstr "Sel·lecciona el fitxer amb la clau privada. gnoMint" #: src/pkey_manage.c:1069 src/pkey_manage.c:1164 msgid "The given password doesn't match the one used in the database" msgstr "" #: src/pkey_manage.c:1151 #, c-format msgid "" "This action requires using one or more private keys saved in the database.\n" msgstr "" #: src/pkey_manage.c:1152 msgid "Please insert the database password:" msgstr "" #: src/san_manager.c:71 msgid "Value cannot be empty" msgstr "" #: src/san_manager.c:82 msgid "Invalid DNS name. Use format: example.com or *.example.com" msgstr "" #: src/san_manager.c:93 msgid "Invalid IP address. Use IPv4 (e.g., 192.168.1.1) or IPv6 format" msgstr "" #: src/san_manager.c:103 msgid "Invalid email address. Use format: user@example.com" msgstr "" #: src/san_manager.c:113 msgid "Invalid URI. Must start with http://, https://, ftp://, or ldap://" msgstr "" #: src/san_manager.c:389 #, fuzzy msgid "Type" msgstr "\tTipus: %s\n" #: src/tls.c:198 src/tls.c:231 src/tls.c:276 src/tls.c:307 #, c-format msgid "Error initializing private key structure." msgstr "" #: src/tls.c:204 src/tls.c:237 src/tls.c:281 src/tls.c:311 #, c-format msgid "Error creating private key: %d" msgstr "" #: src/tls.c:215 src/tls.c:248 src/tls.c:289 src/tls.c:321 src/tls.c:794 #: src/tls.c:1204 #, c-format msgid "Error exporting private key to PEM structure." msgstr "" #: src/tls.c:656 #, c-format msgid "Error when initializing certificate structure" msgstr "" #: src/tls.c:662 src/tls.c:956 #, c-format msgid "Error when setting certificate version" msgstr "" #: src/tls.c:672 src/tls.c:969 #, c-format msgid "Error when setting certificate serial number" msgstr "" #: src/tls.c:681 src/tls.c:978 #, c-format msgid "Error when setting activation time" msgstr "" #: src/tls.c:686 src/tls.c:986 #, c-format msgid "Error when setting expiration time" msgstr "" #: src/tls.c:740 src/tls.c:1040 #, c-format msgid "Error when setting basicConstraint extension" msgstr "" #: src/tls.c:745 src/tls.c:1082 #, c-format msgid "Error when setting keyUsage extension" msgstr "" #: src/tls.c:756 src/tls.c:864 src/tls.c:1120 #, c-format msgid "Error when setting Subject Alternative Name extension" msgstr "" #: src/tls.c:768 src/tls.c:1056 #, c-format msgid "Error when setting subject key identifier extension" msgstr "" #: src/tls.c:772 src/tls.c:1030 #, c-format msgid "Error when setting authority key identifier extension" msgstr "" #: src/tls.c:782 #, c-format msgid "Error when signing self-signed certificate" msgstr "" #: src/tls.c:813 #, fuzzy, c-format msgid "Error when initializing privkey structure" msgstr "S'ha produït un error signant el certificat" #: src/tls.c:817 #, c-format msgid "Error when importing private key into privkey structure" msgstr "" #: src/tls.c:821 #, c-format msgid "Error when initializing csr structure" msgstr "" #: src/tls.c:825 #, c-format msgid "Error when setting csr version" msgstr "" #: src/tls.c:869 #, c-format msgid "Error when signing self-signed csr" msgstr "" #: src/tls.c:880 #, c-format msgid "Error exporting CSR to PEM structure." msgstr "" #: src/tls.c:933 #, fuzzy, c-format msgid "Error when importing CA private key" msgstr "S'han produït problemes en importar el fitxer indicat." #: src/tls.c:940 #, c-format msgid "Error when initializing crt structure" msgstr "" #: src/tls.c:948 #, c-format msgid "Error when copying data from CSR to certificate structure" msgstr "" #: src/tls.c:1182 #, fuzzy, c-format msgid "Error when signing certificate: %s" msgstr "S'ha produït un error signant el certificat" #: src/tls.c:1482 msgid "Key encipher only" msgstr "Clau per només xifrar" #: src/tls.c:1484 msgid "Key decipher only" msgstr "Clau només per desxifrar" #: src/tls.c:1496 msgid "TLS WWW Client." msgstr "Client TLS WWW" #: src/wizard_window.c:239 #, c-format msgid "" "Key generation failed:\n" "%s" msgstr "" #: src/wizard_window.c:249 #, c-format msgid "" "CSR generation failed:\n" "%s" msgstr "" #: src/wizard_window.c:260 msgid "Failed to parse generated CSR." msgstr "" #: src/wizard_window.c:271 #, c-format msgid "" "Failed to save CSR:\n" "%s" msgstr "" #: src/wizard_window.c:294 #, fuzzy, c-format msgid "" "Failed to sign certificate:\n" "%s" msgstr "Afegir certificat de la CA auto-signat" #: src/wizard_window.c:297 #, fuzzy msgid "Certificate generated successfully!" msgstr "Certificat exportat amb èxit." #: src/wizard_window.c:311 #, fuzzy msgid "Please enter a server name." msgstr "Introduïu la contrasenya" #: src/wizard_window.c:318 #, fuzzy msgid "Please select a Certificate Authority." msgstr "Entitat certificadora" #: src/wizard_window.c:325 #, fuzzy msgid "Invalid Certificate Authority selected." msgstr "* Ús com a entitat certificadora habilitat.\n" #: src/wizard_window.c:412 #, fuzzy msgid "No Certificate Authority found. Please create a CA first." msgstr "* Ús com a entitat certificadora habilitat.\n" #~ msgid "%m/%d/%Y %R GMT" #~ msgstr "%d/%m/%Y %R GMT" #~ msgid "Certificates" #~ msgstr "Certificats" #~ msgid "Certificate Signing Requests" #~ msgstr "Sol·licituds de signatura de certificats" #~ msgid "Shows the certificate properties window" #~ msgstr "Mostra la finestra de propietats del certificat" #~ msgid "" #~ "Exports the certificate so it can be imported by any other application" #~ msgstr "" #~ "Exporta el certificat de manera que pugui ser importat per qualsevol " #~ "altra aplicació" #~ msgid "" #~ "Extracts the private key of the selected \n" #~ "certificate from the database to an \n" #~ "external file. This file must be provided \n" #~ "each time the certificate will be used" #~ msgstr "" #~ "Extreu la clau privada del certificat \n" #~ "sel·leccionat, desant-la a un fitxer extern. \n" #~ "Aquest fitxer s'ha de proporcionar \n" #~ "al fer servir el certificat" #~ msgid "Shows the CSR properties window" #~ msgstr "" #~ "Mostra la finestra de propietats de la sol·licitud de signatura del " #~ "certificat" #~ msgid "Exports the CSR so it can be imported by any other application" #~ msgstr "" #~ "Exporta la sol·lititud de signatura del certificat de manera que pugui " #~ "ser importada per qualsevol altra aplicació" #~ msgid "" #~ "Extracts the private key of the selected \n" #~ "certificate from the database to an \n" #~ "external file. This file must be provided \n" #~ "each time the CSR will be used" #~ msgstr "" #~ "Extreu la clau privada del certificat \n" #~ "sel·leccionat, desant-la a un fitxer extern. \n" #~ "Aquest fitxer s'ha de proporcionar \n" #~ "al fer servir la sol·licitud de signatura de certificats" #~ msgid "Extract the saved private key to an external file or device" #~ msgstr "" #~ "Extreu la clau privada emmagatzemada a un fitxer o dispositiu extern" #, fuzzy #~ msgid "Generate the current Certificate Revocation List" #~ msgstr "Genera la llista de revocació de certificats (CRL) actual" #, fuzzy #~ msgid "<b>Fingerprints</b>" #~ msgstr "Empremtes" #, fuzzy #~ msgid "<b>Certificate subject</b>" #~ msgstr "Titular del certificat" #, fuzzy #~ msgid "<b>Certificate hierarchy</b>" #~ msgstr "Jerarquia de certificats" #, fuzzy #~ msgid "<b>Certificate fields</b>" #~ msgstr "Camps del certificat" #, fuzzy #~ msgid "<big>CA properties</big>" #~ msgstr "Propietats de la CA\n" #, fuzzy #~ msgid "<b>Certificate uses</b>" #~ msgstr "Usos del certificat" #, fuzzy #~ msgid "<b>Certificate purposes</b>" #~ msgstr "Finalitats del certificat" #~ msgid "Password protection\n" #~ msgstr "Xifrat amb contrasenya\n" #~ msgid "Enter password again for confirmation:" #~ msgstr "Torni a introduir la contrasenya per confirmar:" #~ msgid "" #~ "Protect CA database private keys\n" #~ "with password:" #~ msgstr "" #~ "Protegeix amb una contrasenya les claus privades\n" #~ "de la base de dades de la CA:" #~ msgid "gtk-ok" #~ msgstr "D'acord" #, c-format #~ msgid "" #~ "The certificate will be generated with the following uses and purposes:\n" #~ msgstr "" #~ "Aquest certificat s'habilitarà per als següents usos i finalitats:\n" gnomint-1.6.4/po/pt_BR.gmo0000644000000000000000000000205515212761320014064 0ustar00rootroot d 33L 46I\1l1J  CSR subjectEmmited byValidityWhether the certificate requests should be visible.Whether the revoked certificates should be visible.Window sizetranslator-creditsProject-Id-Version: gnomint Report-Msgid-Bugs-To: davefx@gmail.com PO-Revision-Date: 2009-06-03 22:30+0000 Last-Translator: Enrico Nicoletto Language-Team: Brazilian Portuguese Language: pt_BR MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2010-08-11 09:00+0000 X-Generator: Launchpad (build Unknown) assunto CSREmitido porValidadeSe os pedidos de certificado devem ser visíveis.Se os certificados revogados devem ser visíveis.Tamanho da janelaLaunchpad Contributions: Enrico Nicoletto https://launchpad.net/~liveriggnomint-1.6.4/po/en@boldquot.header0000644000000000000000000000247115212761270016006 0ustar00rootroot# All this catalog "translates" are quotation characters. # The msgids must be ASCII and therefore cannot contain real quotation # characters, only substitutes like grave accent (0x60), apostrophe (0x27) # and double quote (0x22). These substitutes look strange; see # http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html # # This catalog translates grave accent (0x60) and apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019). # It also translates pairs of apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019) # and pairs of quotation mark (0x22) to # left double quotation mark (U+201C) and right double quotation mark (U+201D). # # When output to an UTF-8 terminal, the quotation characters appear perfectly. # When output to an ISO-8859-1 terminal, the single quotation marks are # transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to # grave/acute accent (by libiconv), and the double quotation marks are # transliterated to 0x22. # When output to an ASCII terminal, the single quotation marks are # transliterated to apostrophes, and the double quotation marks are # transliterated to 0x22. # # This catalog furthermore displays the text between the quotation marks in # bold face, assuming the VT100/XTerm escape sequences. # gnomint-1.6.4/po/remove-potcdate.sin0000644000000000000000000000066015212761270016167 0ustar00rootroot# Sed script that remove the POT-Creation-Date line in the header entry # from a POT file. # # The distinction between the first and the following occurrences of the # pattern is achieved by looking at the hold space. /^"POT-Creation-Date: .*"$/{ x # Test if the hold space is empty. s/P/P/ ta # Yes it was empty. First occurrence. Remove the line. g d bb :a # The hold space was nonempty. Following occurrences. Do nothing. x :b } gnomint-1.6.4/po/POTFILES.in0000644000000000000000000000246115212761266014141 0ustar00rootroot# List of source files containing translatable strings. # Please keep this file sorted alphabetically. gconf/org.gnome.gnomint.gschema.xml gui/certificate_popup_menu.ui gui/certificate_properties_dialog.ui gui/change_password_dialog.ui gui/creation_process_window.ui gui/csr_popup_menu.ui gui/csr_properties_dialog.ui gui/dh_parameters_dialog.ui gui/export_certificate_dialog.ui gui/get_db_password_dialog.ui gui/get_password_dialog.ui gui/get_pkey_dialog.ui gui/org.gnome.gnomint.appdata.xml.in gui/org.gnome.gnomint.desktop.in gui/import_file_or_directory_dialog.ui gui/import_password_dialog.ui gui/main_window.ui gui/new_ca_window.ui gui/new_cert_window.ui gui/new_crl_dialog.ui gui/new_req_window.ui gui/preferences_dialog.ui gui/san_editor_dialog.ui gui/san_manager_widget.ui gui/wizard_window.ui src/ca.c src/cert_diff.c src/cert_renewal.c src/ca-cli.c src/ca-cli-callbacks.c src/ca_creation.c src/ca_file.c src/ca_policy.c src/certificate_properties.c src/country_table.c src/creation_process_window.c src/crl.c src/csr_creation.c src/csr_properties.c src/dialog.c src/export.c src/gnomint-cli.c src/import.c src/main.c src/new_ca_window.c src/new_cert.c src/new_req_window.c src/preferences.c src/preferences-gui.c src/preferences-window.c src/pkey_manage.c src/san_manager.c src/tls.c src/uint160.c src/wizard_window.c gnomint-1.6.4/po/LINGUAS0000644000000000000000000000004715212761266013407 0ustar00rootrootca cs de es fi fr it oc pt_BR ru sk sv gnomint-1.6.4/po/ru.po0000644000000000000000000051062215212761320013344 0ustar00rootroot# Russian translation for gnomint # Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 # This file is distributed under the same license as the gnomint package. # FIRST AUTHOR , 2009. # msgid "" msgstr "" "Project-Id-Version: gnomint\n" "Report-Msgid-Bugs-To: davefx@gmail.com\n" "POT-Creation-Date: 2026-06-12 10:43+0000\n" "PO-Revision-Date: 2009-10-12 03:55+0000\n" "Last-Translator: David Marín \n" "Language-Team: Russian \n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-08-11 09:00+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: gconf/org.gnome.gnomint.gschema.xml:7 msgid "Window size" msgstr "Размер окна" #: gconf/org.gnome.gnomint.gschema.xml:8 #, fuzzy msgid "" "The (width,length) size gnoMint should take when started. This cannot be " "smaller than (320,200)." msgstr "" "Размер (ширина, длинна), который gnoMint должен принять при запуске. Не " "может быть меньше чем (320,200)." #: gconf/org.gnome.gnomint.gschema.xml:16 msgid "Revoked certificates visibility" msgstr "Отображение отозванных сертификатов" #: gconf/org.gnome.gnomint.gschema.xml:17 msgid "Whether the revoked certificates should be visible." msgstr "Должны ли отозванные сертификаты быть видны" #: gconf/org.gnome.gnomint.gschema.xml:24 #, fuzzy msgid "Expired certificates visibility" msgstr "Отображение отозванных сертификатов" #: gconf/org.gnome.gnomint.gschema.xml:25 msgid "" "Whether already-expired certificates should be visible in the certificates " "tree. CAs are always visible regardless of this setting so that any still-" "valid certificates they signed remain reachable." msgstr "" #: gconf/org.gnome.gnomint.gschema.xml:35 msgid "Days before expiration to highlight certificates in amber" msgstr "" #: gconf/org.gnome.gnomint.gschema.xml:36 msgid "" "Certificates whose effective validity ends within this many days are shown " "in amber in the certificates tree, as a heads-up that they should be renewed " "soon. Setting this to 0 disables the amber highlight (certificates appear " "either normally or in gray for already-expired)." msgstr "" #: gconf/org.gnome.gnomint.gschema.xml:47 msgid "Certificate requests visibility" msgstr "Отображение запросов сертификата" #: gconf/org.gnome.gnomint.gschema.xml:48 msgid "Whether the certificate requests should be visible." msgstr "Должны ли запросы сертификата быть видны" #: gconf/org.gnome.gnomint.gschema.xml:55 msgid "Automatic exporting of certificates for gnome-keyring" msgstr "Автоматический экспорт сертификатов для gnome-keyring" #: gconf/org.gnome.gnomint.gschema.xml:56 #, fuzzy msgid "" "Whether the created or imported certificates are automatically exported to " "gnome-keyring certificate-store." msgstr "" "Автоматически ли экспортировать созданные или импортированные сертификаты в " "gnome-keyring хранилище сертификатов." #: gui/certificate_popup_menu.ui:7 gui/csr_popup_menu.ui:7 #: gui/main_window.ui:45 #, fuzzy msgid "Properties" msgstr "Свойства CA" #: gui/certificate_popup_menu.ui:13 gui/main_window.ui:35 #, fuzzy msgid "Export full c_hain..." msgstr "Экспорт сертификата" #: gui/certificate_popup_menu.ui:17 gui/csr_popup_menu.ui:13 #: gui/main_window.ui:34 msgid "E_xport" msgstr "Э_кспорт" #: gui/certificate_popup_menu.ui:21 gui/csr_popup_menu.ui:17 #: gui/main_window.ui:23 msgid "Extrac_t private key" msgstr "Извлечени_е закрытого ключа" #: gui/certificate_popup_menu.ui:27 gui/main_window.ui:24 msgid "Re_new with fresh key" msgstr "" #: gui/certificate_popup_menu.ui:31 msgid "_Compare with PEM file…" msgstr "" #: gui/certificate_popup_menu.ui:35 gui/main_window.ui:25 msgid "Revo_ke" msgstr "Отоз_вать" #: gui/certificate_popup_menu.ui:41 gui/main_window.ui:21 #, fuzzy msgid "Add _Web Server Certificate (wizard)" msgstr "Сертификат" #: gui/certificate_popup_menu.ui:45 gui/main_window.ui:22 #, fuzzy msgid "Add _Email Server Certificate (wizard)" msgstr "TLS Веб сервер" #: gui/certificate_properties_dialog.ui:19 msgid "Certificate properties - gnoMint" msgstr "Свойства сертификата - gnoMint" #: gui/certificate_properties_dialog.ui:54 #, fuzzy msgid "This certificate has been verified for the following uses:" msgstr "Этот сертификат был заверен для следующего использования:" #: gui/certificate_properties_dialog.ui:77 msgid "MD5FINGERPRINT" msgstr "MD5ОТПЕЧАТОК" #: gui/certificate_properties_dialog.ui:88 msgid "SHA1FINGERPRINT" msgstr "SHA1ОТПЕЧАТОК" #: gui/certificate_properties_dialog.ui:99 #: gui/certificate_properties_dialog.ui:132 #: gui/certificate_properties_dialog.ui:176 #: gui/certificate_properties_dialog.ui:231 gui/creation_process_window.ui:15 #: gui/creation_process_window.ui:61 gui/csr_properties_dialog.ui:109 #: gui/new_ca_window.ui:56 gui/new_ca_window.ui:306 gui/new_ca_window.ui:521 #: gui/new_req_window.ui:46 gui/new_req_window.ui:157 gui/new_req_window.ui:413 msgid " " msgstr " " #: gui/certificate_properties_dialog.ui:110 msgid "CertExpirationDate" msgstr "ДатаПросрочкиСертификата" #: gui/certificate_properties_dialog.ui:121 msgid "CertActivationDate" msgstr "ДатаАктвацииСертификата" #: gui/certificate_properties_dialog.ui:143 msgid "CAOU" msgstr "CAOU" #: gui/certificate_properties_dialog.ui:154 msgid "CAO" msgstr "CAO" #: gui/certificate_properties_dialog.ui:165 msgid "CACN" msgstr "CACN" #: gui/certificate_properties_dialog.ui:187 msgid "CertSN" msgstr "CertSN" #: gui/certificate_properties_dialog.ui:198 gui/csr_properties_dialog.ui:63 #, fuzzy msgid "SubjectOU" msgstr "ЗаголовокOU" #: gui/certificate_properties_dialog.ui:209 gui/csr_properties_dialog.ui:87 #, fuzzy msgid "SubjectO" msgstr "ЗаголовокO" #: gui/certificate_properties_dialog.ui:220 gui/csr_properties_dialog.ui:98 #, fuzzy msgid "SubjectCN" msgstr "ЗаголовокCN" #: gui/certificate_properties_dialog.ui:242 msgid "MD5 fingerprint" msgstr "MD5 отпечаток" #: gui/certificate_properties_dialog.ui:253 #, fuzzy msgid "SHA1 fingerprint" msgstr "SHA1 отпечаток" #: gui/certificate_properties_dialog.ui:264 #, fuzzy msgid "Fingerprints" msgstr "Отпечатки:\n" #: gui/certificate_properties_dialog.ui:276 msgid "Expires on" msgstr "Срок истечения" #: gui/certificate_properties_dialog.ui:287 msgid "Activated on" msgstr "Активировано на" #: gui/certificate_properties_dialog.ui:298 msgid "Validity" msgstr "Период действия" #: gui/certificate_properties_dialog.ui:310 #: gui/certificate_properties_dialog.ui:389 gui/csr_properties_dialog.ui:120 msgid "Organizational Unit (OU)" msgstr "Организационная единица (OU)" #: gui/certificate_properties_dialog.ui:321 #: gui/certificate_properties_dialog.ui:400 gui/csr_properties_dialog.ui:142 msgid "Organization (O)" msgstr "Организация (О)" #: gui/certificate_properties_dialog.ui:332 #: gui/certificate_properties_dialog.ui:411 gui/csr_properties_dialog.ui:153 msgid "Common Name (CN)" msgstr "Обычное Имя (CN)" #: gui/certificate_properties_dialog.ui:343 msgid "Emmited by" msgstr "Выдан" #: gui/certificate_properties_dialog.ui:355 #, fuzzy msgid "Subject Alternative Names" msgstr "Заголовок Альтернативное Имя" #: gui/certificate_properties_dialog.ui:378 msgid "Serial number" msgstr "Серийный номер" #: gui/certificate_properties_dialog.ui:422 #, fuzzy msgid "Certificate subject" msgstr "Сертификат" #: gui/certificate_properties_dialog.ui:434 #, fuzzy msgid "SHA256FINGERPRINT" msgstr "SHA1ОТПЕЧАТОК" #: gui/certificate_properties_dialog.ui:449 #, fuzzy msgid "SHA256 fingerprint" msgstr "SHA1 отпечаток" #: gui/certificate_properties_dialog.ui:460 #, fuzzy msgid "SHA512FINGERPRINT" msgstr "SHA1ОТПЕЧАТОК" #: gui/certificate_properties_dialog.ui:475 #, fuzzy msgid "SHA512 fingerprint" msgstr "SHA1 отпечаток" #: gui/certificate_properties_dialog.ui:486 #: gui/certificate_properties_dialog.ui:509 gui/csr_properties_dialog.ui:176 #, fuzzy msgid "Email address" msgstr "IP адрес" #: gui/certificate_properties_dialog.ui:536 gui/csr_properties_dialog.ui:203 msgid "General" msgstr "Основное" #: gui/certificate_properties_dialog.ui:557 #, fuzzy msgid "Certificate hierarchy" msgstr "Сертификат" #: gui/certificate_properties_dialog.ui:582 #, fuzzy msgid "Certificate fields" msgstr "Сертификат" #: gui/certificate_properties_dialog.ui:605 msgid "Details" msgstr "Детали" #: gui/certificate_properties_dialog.ui:623 #, fuzzy msgid "" "\n" "It is recommended that all the certificates generated by a CA\n" "share the same properties.\n" "If you want to generate certificates with different properties, you\n" "should create a hierarchy of CAs, each one with its own policy for\n" "certificate generation.\n" "\n" "Please, define the maximum set of properties for the\n" "certificates that this CA will be able to generate:\n" msgstr "" "\n" "Рекомендуется, чтобы все сертификаты, генерируемые CA, имели те же " "свойства.\n" "Если вы хотите сгенерировать сертификат с отличающимися свойствами, вы " "должны создать иерархию CA, каждый из которых со своей собственной политикой " "для генерации сертификатов.\n" "\n" "Пожалуйста, определите максимальный набор свойств для сертификатов, которые " "данный CA сможет генерировать:\n" #: gui/certificate_properties_dialog.ui:649 #, fuzzy msgid "" "Maximum number of months before\n" "expiration of the new generated certificates:" msgstr "" "Максимальное количество месяцев перед истечением вновь сгенерированного " "сертификата:" #: gui/certificate_properties_dialog.ui:686 msgid "Hours between CRL updates:" msgstr "Кол-во часов между обновлениями CRL:" #: gui/certificate_properties_dialog.ui:711 #, fuzzy msgid "CRL distribution URL:" msgstr "Точки распространения CRL" #: gui/certificate_properties_dialog.ui:727 #, fuzzy msgid "CRL Properties" msgstr "Сертификат" #: gui/certificate_properties_dialog.ui:750 msgid "Country" msgstr "Страна" #: gui/certificate_properties_dialog.ui:761 msgid "State or Province name" msgstr "Название штата или области" #: gui/certificate_properties_dialog.ui:778 #: gui/certificate_properties_dialog.ui:802 #: gui/certificate_properties_dialog.ui:859 #: gui/certificate_properties_dialog.ui:883 #: gui/certificate_properties_dialog.ui:907 msgid "must be the same" msgstr "могут быть одинаковыми" #: gui/certificate_properties_dialog.ui:786 #: gui/certificate_properties_dialog.ui:810 #: gui/certificate_properties_dialog.ui:867 #: gui/certificate_properties_dialog.ui:891 #: gui/certificate_properties_dialog.ui:915 msgid "may differ" msgstr "могут отличаться" #: gui/certificate_properties_dialog.ui:820 msgid "City" msgstr "Город" #: gui/certificate_properties_dialog.ui:831 msgid "Organization" msgstr "Организация" #: gui/certificate_properties_dialog.ui:842 msgid "Organizational unit" msgstr "Организационная единица" #: gui/certificate_properties_dialog.ui:927 #, fuzzy msgid "Inherited fields from CA subject" msgstr "Поля наследуемые из заголовка CA" #: gui/certificate_properties_dialog.ui:952 gui/new_cert_window.ui:464 #: src/tls.c:1463 msgid "Certification Authority" msgstr "Центр сертификации" #: gui/certificate_properties_dialog.ui:963 gui/new_cert_window.ui:487 #: src/certificate_properties.c:445 src/tls.c:1470 msgid "Non repudiation" msgstr "нерасторгаемый" #: gui/certificate_properties_dialog.ui:974 gui/new_cert_window.ui:440 #: src/certificate_properties.c:447 src/tls.c:1472 msgid "Key encipherment" msgstr "Шифрование ключа" #: gui/certificate_properties_dialog.ui:986 gui/new_cert_window.ui:428 #: src/certificate_properties.c:449 src/tls.c:1474 msgid "Data encipherment" msgstr "Шифрование данных" #: gui/certificate_properties_dialog.ui:998 gui/new_cert_window.ui:475 #: src/certificate_properties.c:451 src/tls.c:1476 msgid "Key agreement" msgstr "Согласование ключа" #: gui/certificate_properties_dialog.ui:1010 gui/new_cert_window.ui:452 #: src/certificate_properties.c:443 src/tls.c:1468 msgid "Digital signature" msgstr "Цифровая подпись" #: gui/certificate_properties_dialog.ui:1022 gui/new_cert_window.ui:498 #: src/certificate_properties.c:455 src/tls.c:1480 msgid "CRL signing" msgstr "Подпись CRL" #: gui/certificate_properties_dialog.ui:1043 #, fuzzy msgid "Uses of new generated certificates" msgstr "Использование вновь сгенерированных сертификатов" #: gui/certificate_properties_dialog.ui:1067 gui/new_cert_window.ui:621 #: src/certificate_properties.c:1480 src/tls.c:1500 msgid "Email protection" msgstr "Защита эл.почты" #: gui/certificate_properties_dialog.ui:1079 gui/new_cert_window.ui:610 #: src/certificate_properties.c:1479 src/tls.c:1498 msgid "Code signing" msgstr "Подпись кода" #: gui/certificate_properties_dialog.ui:1090 gui/new_cert_window.ui:598 msgid "TLS Web client" msgstr "TLS Веб клиент" #: gui/certificate_properties_dialog.ui:1102 gui/new_cert_window.ui:586 #, fuzzy msgid "TLS Web server" msgstr "TLS WWW Сервер" #: gui/certificate_properties_dialog.ui:1114 gui/new_cert_window.ui:575 #: src/certificate_properties.c:1481 src/tls.c:1502 msgid "Time stamping" msgstr "Временная отметка" #: gui/certificate_properties_dialog.ui:1125 gui/new_cert_window.ui:564 #: src/certificate_properties.c:1483 src/tls.c:1506 msgid "Any purpose" msgstr "Любая цель" #: gui/certificate_properties_dialog.ui:1136 gui/new_cert_window.ui:553 #: src/certificate_properties.c:1482 src/tls.c:1504 msgid "OCSP signing" msgstr "OCSP подпись" #: gui/certificate_properties_dialog.ui:1159 #, fuzzy msgid "Purposes of new generated certificates" msgstr "Предназначения вновь сгенерированного сертификата" #: gui/certificate_properties_dialog.ui:1171 msgid "CA Policy" msgstr "Политика CA" #: gui/certificate_properties_dialog.ui:1189 gui/csr_properties_dialog.ui:221 #: src/ca.c:2199 msgid "_Close" msgstr "" #: gui/change_password_dialog.ui:9 msgid "Database password protection - gnoMint" msgstr "Защита базы паролем - gnoMint" #: gui/change_password_dialog.ui:34 msgid "_Yes" msgstr "" #: gui/change_password_dialog.ui:43 msgid "_No" msgstr "_Нет" #: gui/change_password_dialog.ui:53 msgid "" "Enter new password again \n" "for confirmation:" msgstr "" "Введите новый пароль снова \n" "для подтверждения:" #: gui/change_password_dialog.ui:86 msgid "" "Please, enter new \n" "password:" msgstr "" "Пожалуйста, введите новый \n" "пароль:" #: gui/change_password_dialog.ui:98 msgid "" "Please, enter current\n" "password:" msgstr "" "Пожалуйста, введите текущий\n" "пароль:" #: gui/change_password_dialog.ui:121 #, fuzzy msgid "" "Protect CA database private\n" "keys with password:" msgstr "" "Защитить базу CA закрытых \n" "ключей паролем:" #: gui/change_password_dialog.ui:143 gui/export_certificate_dialog.ui:149 #: gui/get_db_password_dialog.ui:74 gui/get_pkey_dialog.ui:78 #: gui/import_file_or_directory_dialog.ui:94 gui/import_password_dialog.ui:90 #: gui/new_crl_dialog.ui:53 gui/san_editor_dialog.ui:93 #, fuzzy msgid "Cancel" msgstr "Отмена" #: gui/change_password_dialog.ui:149 gui/get_db_password_dialog.ui:80 #: gui/get_pkey_dialog.ui:84 gui/import_password_dialog.ui:96 #: gui/new_crl_dialog.ui:59 gui/san_editor_dialog.ui:99 msgid "OK" msgstr "" #: gui/creation_process_window.ui:6 msgid "Creating new CA - gnoMint" msgstr "Создать новый CA - gnoMint" #: gui/creation_process_window.ui:31 #, fuzzy msgid "Creating CA Root Certificate" msgstr "Корневой сертификат CA" #: gui/creation_process_window.ui:51 gui/get_password_dialog.ui:90 #: gui/new_ca_window.ui:257 gui/new_ca_window.ui:464 gui/new_ca_window.ui:576 #: gui/new_cert_window.ui:257 gui/new_cert_window.ui:339 #: gui/new_cert_window.ui:661 gui/new_req_window.ui:107 #: gui/new_req_window.ui:357 gui/new_req_window.ui:548 gui/wizard_window.ui:117 msgid "_Cancel" msgstr "" #: gui/csr_popup_menu.ui:23 gui/main_window.ui:26 msgid "_Sign" msgstr "_Подписать" #: gui/csr_popup_menu.ui:27 gui/main_window.ui:27 msgid "Delete" msgstr "" #: gui/csr_properties_dialog.ui:5 msgid "CSR properties - gnoMint" msgstr "Свойства CSR - gnoMint" #: gui/csr_properties_dialog.ui:41 #, fuzzy msgid "" "This Certificate Signing Request has its corresponding private key saved " "in the internal database." msgstr "" "Этот Запрос на Подпись Сертификата имеет соответствующий закрытый ключ, " "сохранённый во внешнем файле." #: gui/csr_properties_dialog.ui:74 gui/new_cert_window.ui:230 #: src/csr_properties.c:86 src/new_cert.c:105 #, fuzzy msgid "None" msgstr "Нет." #: gui/csr_properties_dialog.ui:131 #, fuzzy msgid "Subject Alternative Name (SAN)" msgstr "Заголовок Альтернативное Имя" #: gui/csr_properties_dialog.ui:164 msgid "CSR subject" msgstr "Заголовок CSR" #: gui/dh_parameters_dialog.ui:16 msgid "New Diffie-Hellman parameters - gnoMint" msgstr "Новые параметры Diffie-Hellman - gnoMint" #: gui/dh_parameters_dialog.ui:27 #, fuzzy msgid "" "You are about to create and export a set of\n" "Diffie·Hellman parameters into a PKCS#3 structure file." msgstr "" "Вы собираетесь создать и экспортировать набор параметров Diffie·Hellman " "в файл структуры PKCS#3." #: gui/dh_parameters_dialog.ui:38 #, fuzzy msgid "" "PKCS#3 files containing Diffie·Hellman parameters are used by some " "cryptographic\n" "applications for a secure interchange of their keys over insecure channels." msgstr "" "файлы PKCS#3, содержащие Diffie·Hellman параметры " "используются некоторыми криптографическими \n" "приложениями для безопасного обмена своих ключей через небезопасные каналы." #: gui/dh_parameters_dialog.ui:48 msgid "Please, enter the prime size, in bits:" msgstr "Пожалуйста, введите первоначальный размер, в битах:" #: gui/dh_parameters_dialog.ui:71 msgid "Close" msgstr "" #: gui/dh_parameters_dialog.ui:77 #, fuzzy msgid "Generate" msgstr "Основное" #: gui/export_certificate_dialog.ui:5 msgid "Export certificate - gnoMint" msgstr "Экспорт сертификата - gnoMint" #: gui/export_certificate_dialog.ui:22 #, fuzzy msgid "" "Please, choose which part of the\n" "saved certificate you want to export:" msgstr "" "Пожалуйста, выберите какую часть сохранённого сертификата вы хотите " "экспортировать:" #: gui/export_certificate_dialog.ui:36 msgid "Only the pu_blic part." msgstr "Только пу_бличную часть." #: gui/export_certificate_dialog.ui:49 #, fuzzy msgid "Export only the certificate to a public file, in PEM format." msgstr "Экспорт только сертификата в публичный файл в PEM формате." #: gui/export_certificate_dialog.ui:60 msgid "Only the private key (crypted)." msgstr "Только закрытый ключ (зашифрованный)." #: gui/export_certificate_dialog.ui:74 #, fuzzy msgid "" "Export the saved private key to a PKCS#8 password-\n" "protected file. This file should only be accessed by the\n" "subject of the certificate." msgstr "" "Экспорт сохранённого закрытого ключа в PKCS#8 защищённый паролем файл. " "Этот файл должен быть доступен только для владельца сертификата." #: gui/export_certificate_dialog.ui:87 msgid "Only the private key (uncrypted)." msgstr "Только закрытый ключ (незашифрованный)." #: gui/export_certificate_dialog.ui:100 #, fuzzy msgid "" "Export the saved private key to a PEM file. This option\n" "should only be used for exporting certificates that will be\n" "used in unattended servers." msgstr "" "Экспорт сохранённого закрытого ключа в PEM файл. Эта опция может быть " "использована только для экспорта сертификатов, которые будут использоваться " "на необслуживаемых серверах." #: gui/export_certificate_dialog.ui:113 msgid "Both parts." msgstr "Обе части." #: gui/export_certificate_dialog.ui:126 #, fuzzy msgid "" "Export both (private and public) parts to a password-\n" "protected PKCS#12 file. This kind of file can be imported\n" "by other common programs, such as web or mail clients." msgstr "" "Экспорт обоих (закрытой и открытой) частей в защищённый паролем PKCS#12 " "файл. Такой тип файла может быть импортирован большинством других программ, " "такими как веб или почтовый клиенты." #: gui/export_certificate_dialog.ui:155 #, fuzzy msgid "Export" msgstr "Э_кспорт" #: gui/get_db_password_dialog.ui:5 gui/get_password_dialog.ui:5 #: gui/import_password_dialog.ui:5 msgid "Enter password - gnoMint" msgstr "Введите пароль - gnoMint" #: gui/get_db_password_dialog.ui:20 msgid "" "This action requires using one or more private keys saved in the CA " "database.\n" "\n" "Please insert the database password." msgstr "" "Это действие требует использования одного или нескольких закрытых ключей, " "сохранённых в базе CA.\n" "Пожалуйста введите пароль базы." #: gui/get_db_password_dialog.ui:41 gui/get_password_dialog.ui:68 #: gui/import_password_dialog.ui:65 msgid "Password:" msgstr "Пароль:" #: gui/get_db_password_dialog.ui:58 msgid "Remember this password during this gnoMint session" msgstr "Запомнить этот пароль на время текущей сессии gnoMint" #: gui/get_password_dialog.ui:19 #, fuzzy msgid "Please, enter password" msgstr "Пожалуйста, введите пароль:" #: gui/get_password_dialog.ui:56 msgid "Password (confirm):" msgstr "Пароль (подтверждение):" #: gui/get_password_dialog.ui:97 gui/new_ca_window.ui:592 #: gui/new_cert_window.ui:676 gui/new_req_window.ui:564 #: gui/preferences_dialog.ui:51 msgid "_OK" msgstr "" #: gui/get_pkey_dialog.ui:9 msgid "Choose private key file. gnoMint" msgstr "Выбор закрытого ключа. gnoMint" #: gui/get_pkey_dialog.ui:22 #, fuzzy msgid "" "Choose private key file\n" "\n" "For doing the selected operation, you must provide the\n" "file where resides the private key corresponding to the\n" "certificate:" msgstr "Выберете файл закрытого ключа" #: gui/get_pkey_dialog.ui:37 msgid "Certificate DN" msgstr "DN сертификата" #: gui/get_pkey_dialog.ui:43 msgid "Please, choose the file:" msgstr "Пожалуйста, выберите файл:" #: gui/get_pkey_dialog.ui:62 msgid "_Save filename in the database for automatic loading" msgstr "_Сохранить файл в базе для автоматической загрузки" #: gui/org.gnome.gnomint.appdata.xml.in:7 gui/main_window.ui:62 msgid "gnoMint" msgstr "gnoMint" #: gui/org.gnome.gnomint.appdata.xml.in:8 #, fuzzy msgid "X.509 Certification Authority management tool" msgstr "- управление Центром Авторизации" #: gui/org.gnome.gnomint.appdata.xml.in:11 msgid "" "gnoMint is a tool for easily creating and managing certification authorities " "(CAs). It provides fancy visualization of all your certificates, and their " "properties, as well as an easy management of the CA activities." msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:16 msgid "With gnoMint you can:" msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:20 #, fuzzy msgid "Create and manage your own Certification Authority (CA)" msgstr "Содание Запроса на Подпись Сертификата" #: gui/org.gnome.gnomint.appdata.xml.in:21 #, fuzzy msgid "Create and sign certificates for servers and users" msgstr "Создание корневого сертификата CA" #: gui/org.gnome.gnomint.appdata.xml.in:22 #, fuzzy msgid "Create and manage Certificate Signing Requests (CSRs)" msgstr "Содание Запроса на Подпись Сертификата" #: gui/org.gnome.gnomint.appdata.xml.in:23 msgid "" "Export certificates and private keys in several formats (PEM, DER, PKCS#12)" msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:24 #, fuzzy msgid "Revoke certificates and generate Certificate Revocation Lists (CRLs)" msgstr "Генерировать текущий Список Отозванных Сертификатов" #: gui/org.gnome.gnomint.appdata.xml.in:25 #, fuzzy msgid "Import existing certificates and CAs" msgstr "Ошибка при установке версии сертификата" #: gui/org.gnome.gnomint.appdata.xml.in:27 msgid "" "gnoMint provides a simple and intuitive graphical interface based on GTK for " "all these operations, making certificate management accessible even for " "users without deep knowledge of X.509 standards and cryptography." msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:38 #, fuzzy msgid "Main window showing certificate list" msgstr "Ошибка при подписи сертификата" #: gui/org.gnome.gnomint.desktop.in:2 gui/org.gnome.gnomint.desktop.in:3 msgid "gnoMint X.509 CA Manager" msgstr "gnoMint менеджер X.509 CA" #: gui/org.gnome.gnomint.desktop.in:4 msgid "Manage X.509 certificates and CAs, easily and graphically" msgstr "Управлять сертификатами X.509 и CA легко и визуально" #: gui/org.gnome.gnomint.desktop.in:5 msgid "certificate;x.509;encryption;" msgstr "" #: gui/import_file_or_directory_dialog.ui:9 msgid "Import selection - gnoMint" msgstr "Импорт выбранного - gnoMint" #: gui/import_file_or_directory_dialog.ui:24 #, fuzzy msgid "" "Please, choose the more suitable option for\n" "what you want to import:" msgstr "" "Пожалуйста, выберите более подходящую опцию для того, что вы хотите " "импортировать:" #: gui/import_file_or_directory_dialog.ui:36 msgid "Import a single file." msgstr "Импорт один файл." #: gui/import_file_or_directory_dialog.ui:48 #, fuzzy msgid "" "Import a single file, encoded in DER or PEM format, containing\n" "certificates, private keys (encrypted or plain), signing\n" "requests (CSRs), revocation lists (CRLs) or PKCS#12\n" "packages." msgstr "" "Импорт одного файла, кодированного в DER или PEM формате, содержащего " "сертификат, закрытый ключ (зашифрованный или нешифрованный), запрос на " "подпись сертификата (CSRs), список отозванных сертификатов (CRLs) или " "PKCS#12 пакеты." #: gui/import_file_or_directory_dialog.ui:60 msgid "Import a whole directory." msgstr "Импорт всего каталога" #: gui/import_file_or_directory_dialog.ui:72 #, fuzzy msgid "" "Import a directory containing the structure of\n" "a whole CA made with OpenSSL ." msgstr "" "Импорт каталога, содержащего структуру\n" "целого CA, созданного с помощью OpenSSL" #: gui/import_file_or_directory_dialog.ui:100 #, fuzzy msgid "Import" msgstr "_Импорт" #: gui/import_password_dialog.ui:20 #, fuzzy msgid "" "The whole selected file, or some of its elements, seems to\n" "be cyphered using a password or passphrase.\n" "\n" "For importing the file into gnoMint database, you must\n" "provide an appropiate password." msgstr "" "Файл целиком или некоторые из его элементов, по всей видимости, зашифрованны " "с использованием пароля или парольной фразы.\n" "Для импортирования файла в базу gnoMint, вы должны предоставить " "соответствующий пароль." #: gui/import_password_dialog.ui:37 #, fuzzy msgid "" "The part that is being imported has the description:" msgstr "" "Часть, которая сейчас импортирована, имеет описание:" #: gui/import_password_dialog.ui:48 msgid "#Description#" msgstr "#Описание#" #: gui/main_window.ui:6 msgid "_Certificates" msgstr "_Сертификат" #: gui/main_window.ui:8 msgid "_New certificate database" msgstr "_Новая база сертификатов" #: gui/main_window.ui:9 msgid "_Open certificate database" msgstr "_Открыть базу сертификатов" #: gui/main_window.ui:10 msgid "Open _recents" msgstr "Открыть _недавние" #: gui/main_window.ui:11 msgid "_Save certificate database as..." msgstr "_Сохранить базу сертификатов как..." #: gui/main_window.ui:15 #, fuzzy msgid "Add" msgstr "Добавить CSR" #: gui/main_window.ui:17 msgid "_Add self-signed CA" msgstr "_Добавить самоподписанный CA" #: gui/main_window.ui:18 msgid "Add _Certificate Request" msgstr "Добавить запрос _Сертификата" #: gui/main_window.ui:29 msgid "Generate _CRL" msgstr "Генерировать _CRL" #: gui/main_window.ui:30 msgid "Generate D_H parameters..." msgstr "Основные D_H параметры..." #: gui/main_window.ui:31 msgid "Change database pass_word" msgstr "Изменить па_роль базы" #: gui/main_window.ui:33 msgid "_Import" msgstr "_Импорт" #: gui/main_window.ui:38 msgid "Revoke _all selected..." msgstr "" #: gui/main_window.ui:39 msgid "Delete all selected _CSRs..." msgstr "" #: gui/main_window.ui:41 msgid "_Quit" msgstr "" #: gui/main_window.ui:44 gui/san_manager_widget.ui:34 msgid "_Edit" msgstr "_Изменить" #: gui/main_window.ui:46 msgid "Preferences" msgstr "" #: gui/main_window.ui:49 msgid "_View" msgstr "_Вид" #: gui/main_window.ui:51 msgid "Certificate _Signing Requests" msgstr "Запрос _Подписи сертификата" #: gui/main_window.ui:52 msgid "_Revoked Certificates" msgstr "_Отозванные Сертификаты" #: gui/main_window.ui:53 #, fuzzy msgid "E_xpired Certificates" msgstr "Экспорт сертификата" #: gui/main_window.ui:57 gui/new_ca_window.ui:249 gui/new_ca_window.ui:456 #: gui/new_ca_window.ui:568 gui/new_cert_window.ui:249 #: gui/new_cert_window.ui:331 gui/new_cert_window.ui:653 #: gui/new_req_window.ui:99 gui/new_req_window.ui:349 gui/new_req_window.ui:540 msgid "_Help" msgstr "_Справка" #: gui/main_window.ui:58 msgid "About" msgstr "" #: gui/main_window.ui:80 msgid "Create a new database" msgstr "Создать новую базу" #: gui/main_window.ui:87 msgid "Open an existing database" msgstr "Открыть существующую базу" #: gui/main_window.ui:99 msgid "Add an autosigned CA" msgstr "Добавить самоподписанный CA" #: gui/main_window.ui:100 msgid "Add autosigned CA certificate" msgstr "Добавить самоподписанный CA сертификат" #: gui/main_window.ui:111 msgid "Add a new Certificate Signing Request" msgstr "Добавить новый Запрос на Подпись Сертификата" #: gui/main_window.ui:112 msgid "Add CSR" msgstr "Добавить CSR" #: gui/main_window.ui:129 msgid "Extract the private key of the selected item into a external file" msgstr "Извлечь закрытый ключ выбранного объекта во внешний файл" #: gui/main_window.ui:130 msgid "Extract Private Key" msgstr "Извлечь Закрытый Ключ" #: gui/main_window.ui:142 #, fuzzy msgid "Revoke the selected certificate" msgstr "Отозвать выбранный сертификат" #: gui/main_window.ui:143 msgid "Revoke" msgstr "Отозвать" #: gui/main_window.ui:151 msgid "Sign the selected Certificate Signing Request" msgstr "Подписать выбранный Запрос на Подпись Сертификата" #: gui/main_window.ui:152 msgid "Sign" msgstr "Подписать" #: gui/main_window.ui:164 msgid "Delete the selected Certificate Signing Request" msgstr "Удалить выбранный Запрос на Подпись Сертификата" #: gui/main_window.ui:176 #, fuzzy msgid "Quick certificate generation for web server" msgstr "Создание сертификата не удалось" #: gui/main_window.ui:177 #, fuzzy msgid "Web Server Wizard" msgstr "TLS Веб сервер" #: gui/main_window.ui:188 #, fuzzy msgid "Quick certificate generation for email server" msgstr "Создание сертификата не удалось" #: gui/main_window.ui:189 #, fuzzy msgid "Email Server Wizard" msgstr "TLS Веб сервер" #: gui/main_window.ui:225 msgid "_Show them" msgstr "" #: gui/main_window.ui:243 msgid "Filter certificates by subject or serial..." msgstr "" #: gui/new_ca_window.ui:20 msgid "New CA - gnoMint" msgstr "Новый CA - gnoMint" #: gui/new_ca_window.ui:46 #, fuzzy msgid "CA Subject Properties\n" msgstr "Свойства CA" #: gui/new_ca_window.ui:72 gui/new_cert_window.ui:130 gui/new_req_window.ui:303 msgid "Organization:" msgstr "Организация:" #: gui/new_ca_window.ui:83 gui/new_cert_window.ui:141 gui/new_req_window.ui:292 msgid "Organization Unit:" msgstr "Организационная единица:" #: gui/new_ca_window.ui:94 gui/new_cert_window.ui:152 gui/new_req_window.ui:281 msgid "Country:" msgstr "Страна:" #: gui/new_ca_window.ui:106 gui/new_cert_window.ui:163 #: gui/new_req_window.ui:270 #, fuzzy msgid "State or Province name: " msgstr "Название штата или области: " #: gui/new_ca_window.ui:117 gui/new_cert_window.ui:174 #: gui/new_req_window.ui:259 #, fuzzy msgid "City: " msgstr "Город: " #: gui/new_ca_window.ui:164 msgid "" "CA Root Certificate \n" "Common Name (CN):" msgstr "" "Корневой сертификат CA \n" "Обычное Имя (CN):" #: gui/new_ca_window.ui:185 gui/new_cert_window.ui:219 #: gui/new_req_window.ui:203 #, fuzzy msgid "Email address:" msgstr "IP адрес" #: gui/new_ca_window.ui:227 gui/new_req_window.ui:326 #, fuzzy msgid "Subject Alternative Names (SAN)" msgstr "Заголовок Альтернативное Имя" #: gui/new_ca_window.ui:265 gui/new_ca_window.ui:480 gui/new_req_window.ui:115 #: gui/new_req_window.ui:373 msgid "_Next" msgstr "" #: gui/new_ca_window.ui:277 gui/new_cert_window.ui:276 #: gui/new_req_window.ui:127 msgid "CA properties" msgstr "Свойства CA" #: gui/new_ca_window.ui:296 #, fuzzy msgid "CA Root certificate properties\n" msgstr "Свойства корневого сертификата CA\n" #: gui/new_ca_window.ui:337 msgid "Months before root certificate expiration:" msgstr "Количество месяцев до истечения срока корневого сертификата" #: gui/new_ca_window.ui:370 gui/new_req_window.ui:453 msgid "P-256 (256 bits)" msgstr "" #: gui/new_ca_window.ui:371 gui/new_req_window.ui:454 msgid "P-384 (384 bits)" msgstr "" #: gui/new_ca_window.ui:372 gui/new_req_window.ui:455 msgid "P-521 (521 bits)" msgstr "" #: gui/new_ca_window.ui:391 gui/new_req_window.ui:474 #, fuzzy msgid "RSA" msgstr "RSA" #: gui/new_ca_window.ui:400 gui/new_req_window.ui:484 msgid "DSA" msgstr "DSA" #: gui/new_ca_window.ui:409 gui/new_req_window.ui:493 msgid "ECDSA" msgstr "" #: gui/new_ca_window.ui:418 gui/new_req_window.ui:502 msgid "Ed25519" msgstr "" #: gui/new_ca_window.ui:428 gui/new_req_window.ui:512 src/new_ca_window.c:170 #: src/new_ca_window.c:180 src/new_req_window.c:201 src/new_req_window.c:211 msgid "Private key bit length:" msgstr "Длина в битах закрытого ключа:" #: gui/new_ca_window.ui:439 gui/new_req_window.ui:523 msgid "Private key type:" msgstr "Тип закрытого ключа:" #: gui/new_ca_window.ui:472 gui/new_ca_window.ui:584 gui/new_req_window.ui:365 #: gui/new_req_window.ui:556 msgid "_Previous" msgstr "" #: gui/new_ca_window.ui:492 gui/new_req_window.ui:385 msgid "Root certificate prop" msgstr "Свойства корневого сертификата" #: gui/new_ca_window.ui:511 #, fuzzy msgid "CA properties\n" msgstr "Свойства CA" #: gui/new_ca_window.ui:535 #, fuzzy msgid "CRL Distribution Point:" msgstr "Точки распространения CRL" #: gui/new_ca_window.ui:542 msgid "" "Please, in this field enter an URL where the CRL for this CA will be " "available. \n" "You can leave it blank. In this case, no CRL Distribution Point will be set " "in the CA \n" "Certificate, and you will be able to set it as a new CA property. \n" "This value will be copied into the certificates generated by this CA.\n" "" msgstr "" #: gui/new_ca_window.ui:604 msgid "Password protect" msgstr "Защита паролем" #: gui/new_cert_window.ui:13 msgid "New Certificate - gnoMint" msgstr "Новый Сертификат - gnoMint" #: gui/new_cert_window.ui:36 gui/new_cert_window.ui:293 #: gui/new_cert_window.ui:382 #, fuzzy msgid "New Certificate Properties\n" msgstr "Свойства нового сертификата\n" #: gui/new_cert_window.ui:45 #, fuzzy msgid "" "You are about to sign a Certificate Signing Request,\n" "and this way, creating a new certificate. Please\n" "check the certificate properties." msgstr "" "Вы подписываете Запрос Подписи Сертификата и ,таким образом, создаёте новый " "сертификат. Пожалуйста проверьте свойства сертификата." #: gui/new_cert_window.ui:64 gui/new_cert_window.ui:75 #: gui/new_cert_window.ui:86 gui/new_cert_window.ui:97 #: gui/new_cert_window.ui:108 gui/new_cert_window.ui:119 msgid "label" msgstr "метка" #: gui/new_cert_window.ui:185 msgid "" "New certificate \n" "Common Name (CN):" msgstr "" "Новый сертификат \n" "Обычное имя (CN):" #: gui/new_cert_window.ui:197 #, fuzzy msgid "Subject Alternative Names:" msgstr "Заголовок Альтернативное Имя" #: gui/new_cert_window.ui:302 #, fuzzy msgid "" "You are about to sign a Certificate Signing Request.\n" "Please, choose the Certification Authority you are\n" "going to use for signing it." msgstr "" "Вы подписываете Запрос Подписи Сертификата. Пожалуйста, выберите Центр " "Авторизации, который вы будете использовать для его подписи." #: gui/new_cert_window.ui:366 msgid "Choose CA for signing the CSR" msgstr "Выбор CA для подписи CSR" #: gui/new_cert_window.ui:397 msgid "Months before certificate expiration:" msgstr "Количество месяцев до истечения срока сертификата:" #: gui/new_cert_window.ui:519 #, fuzzy msgid "Certificate uses" msgstr "Сертификат" #: gui/new_cert_window.ui:635 #, fuzzy msgid "Certificate purposes" msgstr "Сертификат" #: gui/new_cert_window.ui:688 msgid "Certificate properties" msgstr "Свойства сертификата" #: gui/new_crl_dialog.ui:5 msgid "New CRL - gnoMint" msgstr "Новый CRL - gnoMint" #: gui/new_crl_dialog.ui:17 #, fuzzy msgid "New Certificate Revocation List" msgstr "Экспорт списка отозванных сертификатов" #: gui/new_crl_dialog.ui:26 msgid "" "Please, select the CA for which a Certificate \n" "Revocation List is going to be created:" msgstr "" "Пожалуйста, выберите CA, для которого \n" "будет создан Список Отозванных Сертификатов:" #: gui/new_req_window.ui:12 msgid "New certificate request - gnoMint" msgstr "Новый запрос сертификата - gnoMint" #: gui/new_req_window.ui:36 gui/new_req_window.ui:147 gui/new_req_window.ui:403 #, fuzzy msgid "Certificate Request Properties\n" msgstr "Свойства запроса сертификата\n" #: gui/new_req_window.ui:55 #, fuzzy msgid "" "The subject of the new certificate request can inherit information\n" "from one of the existing Certification Authorities. This is a must if the\n" "policy of the CA you are going to use is defined to force some fields\n" "of a certificate subject to be the same as the ones in the CA cert\n" "subject." msgstr "" "Заголовок нового запроса сертификата может наследовать информацию от " "одного из существующих Центров сертификации (CA). Это обязательно если " "политика используемого CA предопределяет некоторые поля в заголовке " "сертификата быть такими же как и в заголовке сертификата CA." #: gui/new_req_window.ui:67 msgid "Don't inherit any fields from existing Certification Authorities" msgstr "Не наследовать ни одного поля из существующего Центра Сертификации" #: gui/new_req_window.ui:74 msgid "" "Inherit fields according to selected Certification Authority and its policy." msgstr "" "Наследовать поля в соответствии с выбранным Центром Авторизации и его " "политикой." #: gui/new_req_window.ui:191 #, fuzzy msgid "" "Certificate\n" " Common Name (CN):" msgstr "" "Сертификат \n" "Обычное имя (CN):" #: gui/new_req_window.ui:576 msgid "page 3" msgstr "страница 3" #: gui/preferences_dialog.ui:9 msgid "General Preferences - gnoMint" msgstr "Основные свойства - gnoMint" #: gui/preferences_dialog.ui:26 #, fuzzy msgid "" "Automatically export created certificates to\n" "Gnome-keyring certificate store" msgstr "" "Автоматически экспортировать созданные сертификаты в \n" "Gnome-keyring хранилище сертификатов" #: gui/preferences_dialog.ui:36 msgid "Export options" msgstr "Опции экспорта" #: gui/san_editor_dialog.ui:5 src/certificate_properties.c:1488 msgid "Subject Alternative Name" msgstr "Заголовок Альтернативное Имя" #: gui/san_editor_dialog.ui:23 #, fuzzy msgid "Type:" msgstr "\tТип: %s\n" #: gui/san_editor_dialog.ui:35 #, fuzzy msgid "DNS" msgstr "DSA" #: gui/san_editor_dialog.ui:36 src/certificate_properties.c:900 #: src/certificate_properties.c:914 src/certificate_properties.c:1040 msgid "IP Address" msgstr "IP адрес" #: gui/san_editor_dialog.ui:37 msgid "Email" msgstr "" #: gui/san_editor_dialog.ui:38 src/certificate_properties.c:889 #: src/certificate_properties.c:1032 msgid "URI" msgstr "URI" #: gui/san_editor_dialog.ui:51 #, fuzzy msgid "Value:" msgstr "Значение" #: gui/san_editor_dialog.ui:74 msgid "" "Examples:\n" "DNS: example.com, *.example.com\n" "IP: 192.168.1.1, 2001:db8::1\n" "EMAIL: admin@example.com\n" "URI: https://example.com" msgstr "" #: gui/san_manager_widget.ui:26 msgid "_Add" msgstr "" #: gui/san_manager_widget.ui:43 msgid "_Remove" msgstr "" #: gui/wizard_window.ui:9 #, fuzzy msgid "Certificate Wizard" msgstr "Сертификат" #: gui/wizard_window.ui:28 #, fuzzy msgid "Quick Certificate Generation" msgstr "Сертификат" #: gui/wizard_window.ui:35 msgid "" "This wizard will create a certificate for your server with default " "settings.\n" "Enter the server name (e.g., my.server.dns.name) and select the CA to sign " "it." msgstr "" #: gui/wizard_window.ui:48 #, fuzzy msgid "Server Name:" msgstr "Название каталога" #: gui/wizard_window.ui:59 msgid "Enter the server DNS name (e.g., my.server.dns.name)" msgstr "" #: gui/wizard_window.ui:69 #, fuzzy msgid "Signing CA:" msgstr "OCSP подпись" #: gui/wizard_window.ui:88 #, fuzzy msgid "Certificate Type:" msgstr "Сертификат использует:\n" #: gui/wizard_window.ui:124 #, fuzzy msgid "_Generate Certificate" msgstr "_Отозванные Сертификаты" #: gui/wizard_window.ui:140 #, fuzzy msgid "Web Server (TLS)" msgstr "TLS Веб сервер" #: gui/wizard_window.ui:141 #, fuzzy msgid "Email Server (TLS)" msgstr "TLS Веб сервер" #: src/ca.c:192 #, c-format msgid "Bulk revoke completed with errors. First error: %s" msgstr "" #: src/ca.c:199 #, fuzzy, c-format msgid "%d certificate revoked." msgid_plural "%d certificates revoked." msgstr[0] "Сертификат отозван.\n" msgstr[1] "Сертификат отозван.\n" #: src/ca.c:225 #, c-format msgid "Bulk delete completed with errors. First error: %s" msgstr "" #: src/ca.c:240 msgid "" "Certificate renewed. A new certificate with a fresh keypair has been added " "to the database alongside the original." msgstr "" #: src/ca.c:606 src/ca-cli-callbacks.c:167 src/ca-cli-callbacks.c:221 #: src/ca-cli-callbacks.c:733 src/ca-cli-callbacks.c:737 #: src/ca-cli-callbacks.c:1362 src/ca-cli-callbacks.c:1369 #: src/certificate_properties.c:246 src/certificate_properties.c:252 #, fuzzy msgid "%m/%d/%Y %H:%M GMT" msgstr "%m/%d/%Y %R GMT" #: src/ca.c:806 src/ca.c:1927 src/ca.c:1958 src/ca.c:2093 src/ca.c:2322 #: src/ca.c:2350 #, fuzzy msgid "Yes" msgstr "_Да" #: src/ca.c:930 src/certificate_properties.c:653 msgid "Subject" msgstr "Заголовок" #: src/ca.c:965 src/cert_diff.c:122 msgid "Serial" msgstr "Серийный номер" #: src/ca.c:978 src/cert_diff.c:123 msgid "Activation" msgstr "Активация" #: src/ca.c:991 src/cert_diff.c:124 msgid "Expiration" msgstr "Срок истечения" #: src/ca.c:1004 msgid "Revocation" msgstr "Отзыв" #: src/ca.c:1047 #, c-format msgid "" "Showing only the %d certificate expiring in the next %d days. Close " "this banner to show everything again." msgid_plural "" "Showing only the %d certificates expiring in the next %d days. Close " "this banner to show everything again." msgstr[0] "" msgstr[1] "" #: src/ca.c:1058 #, c-format msgid "" "%d certificate expires in the next %d days. Right-click it to renew " "with a fresh key." msgid_plural "" "%d certificates expire in the next %d days. Right-click each one to " "renew with a fresh key." msgstr[0] "" msgstr[1] "" #: src/ca.c:1369 src/ca.c:1404 src/ca.c:1416 src/export.c:560 src/export.c:639 msgid "There was an error while exporting certificate." msgstr "Произошла ошибка во время экспорта сертификата." #: src/ca.c:1371 src/ca.c:1406 src/ca.c:1418 msgid "There was an error while exporting CSR." msgstr "Произошла ошибка во время экспорта CSR." #: src/ca.c:1426 src/ca.c:1590 msgid "Certificate exported successfully" msgstr "Сертификат успешно экспортирован" #: src/ca.c:1427 msgid "Certificate signing request exported successfully" msgstr "Запрос на подпись сертификата успешно экспортирован" #: src/ca.c:1445 msgid "Export certificate" msgstr "Экспорт сертификата" #: src/ca.c:1447 msgid "Export certificate signing request" msgstr "Экспорт запроса на подпись сертификата" #: src/ca.c:1461 src/ca.c:1523 src/ca.c:1981 msgid "Private key exported successfully" msgstr "Закрытый ключ успешно экспортирован" #: src/ca.c:1509 src/ca.c:2057 msgid "Export crypted private key" msgstr "Экспорт зашифрованного закрытого ключ" #: src/ca.c:1568 #, fuzzy msgid "Export unencrypted private key" msgstr "Экспорт незашифрованного закрытого ключа" #: src/ca.c:1633 msgid "Export whole certificate in PKCS#12 package" msgstr "Экспорт всего сертификата в PKCS#12 пакет" #: src/ca.c:1676 msgid "Unexpected error" msgstr "Неожиданная ошибка" #: src/ca.c:1712 msgid "Export CSR - gnoMint" msgstr "Экспорт CSR - gnoMint" #: src/ca.c:1717 msgid "" "Please, choose which part of the saved Certificate Signing Request you want " "to export:" msgstr "" "Пожалуйста, выберите какую часть сохранённого Запроса на Подпись Сертификата " "вы хотите экспортировать:" #: src/ca.c:1722 msgid "" "Export the Certificate Signing Request to a public file, in PEM format." msgstr "" "Экспорт Запроса на Подпись Сертификата в незашифрованный файл PEM формата." "" #: src/ca.c:1727 msgid "" "Export the saved private key to a PKCS#8 password-protected file. This " "file should only be accessed by the subject of the Certificate Signing " "Request." msgstr "" "Экспрорт сохранённого закрытого ключа в PKCS#8 файл защищённый паролем. " "Этот файл должен быть доступен владельцу Запроса на Подпись Сертификата." #: src/ca.c:1774 #, fuzzy msgid "Could not build certificate chain." msgstr "Корневой сертификат CA" #: src/ca.c:1781 #, fuzzy, c-format msgid "Failed to write chain: %s" msgstr "Не удалось инициализировать: %s\n" #: src/ca.c:1786 #, fuzzy msgid "Certificate chain exported successfully." msgstr "Сертификат успешно экспортирован" #: src/ca.c:1807 #, fuzzy msgid "Please select a certificate to export its chain." msgstr "Центр сертификации" #: src/ca.c:1831 #, fuzzy msgid "Export certificate chain" msgstr "Экспорт сертификата" #: src/ca.c:1911 #, fuzzy msgid "Please select one or more certificates to revoke." msgstr "Центр сертификации" #: src/ca.c:1916 #, fuzzy, c-format msgid "Are you sure you want to revoke %d certificate?" msgid_plural "Are you sure you want to revoke %d certificates?" msgstr[0] "Вы уверены, что хотите отозвать сертификат?" msgstr[1] "Вы уверены, что хотите отозвать сертификат?" #: src/ca.c:1920 msgid "" "Revoking a certificate will include it in the next CRL, marking it as " "invalid. CSRs in the selection (if any) are not affected; use \"Delete " "selected CSRs\" for those." msgstr "" #: src/ca.c:1927 src/ca.c:1958 src/ca.c:2093 src/ca.c:2322 src/ca.c:2350 #, fuzzy msgid "No" msgstr "_Нет" #: src/ca.c:1948 msgid "Please select one or more CSRs to delete." msgstr "" #: src/ca.c:1953 #, fuzzy, c-format msgid "Are you sure you want to delete %d Certificate Signing Request?" msgid_plural "Are you sure you want to delete %d Certificate Signing Requests?" msgstr[0] "Вы уверены, что хотите улалить Запрос на Подпись Сертификата?" msgstr[1] "Вы уверены, что хотите улалить Запрос на Подпись Сертификата?" #: src/ca.c:2076 src/ca-cli-callbacks.c:1934 msgid "" "CA certificates cannot be renewed. A renewed CA would have a different key, " "so certificates previously signed by the old CA would no longer chain to it." msgstr "" #: src/ca.c:2087 msgid "" "Renew this certificate?\n" "\n" "gnoMint will issue a new certificate with the same subject and SAN as the " "selected one, signed by the same CA, with a freshly-generated keypair. The " "old certificate will remain in the database — revoke it manually after you " "have deployed the new one." msgstr "" #: src/ca.c:2118 #, c-format msgid "Certificate diff — %d difference" msgid_plural "Certificate diff — %d differences" msgstr[0] "" msgstr[1] "" #: src/ca.c:2147 msgid "Left" msgstr "" #: src/ca.c:2151 msgid "Right" msgstr "" #: src/ca.c:2241 src/ca-cli-callbacks.c:2141 #, fuzzy msgid "Cannot read file." msgstr "Не удалось инициализировать: %s\n" #: src/ca.c:2252 msgid "Selected" msgstr "" #: src/ca.c:2278 #, fuzzy msgid "Cannot read PEM of the selected certificate." msgstr "Отозвать выбранные сертификаты" #: src/ca.c:2290 msgid "Compare with PEM file…" msgstr "" #: src/ca.c:2312 msgid "Are you sure you want to revoke this certificate?" msgstr "Вы уверены, что хотите отозвать сертификат?" #: src/ca.c:2313 msgid "" "Revoking a certificate will include it in the next CRL, marking it as " "invalid. This way, any future use of the certificate will be denied (as long " "as the CRL is checked)." msgstr "" #: src/ca.c:2316 #, fuzzy msgid "Are you sure you want to revoke this CA certificate?" msgstr "Вы уверены, что хотите отозвать сертификат?" #: src/ca.c:2317 msgid "" "Revoking a certificate will include it in the next CRL, marking it as " "invalid. This way, any future use of the certificate will be denied (as long " "as the CRL is checked). \n" "\n" "Moreover, revoking a CA certificate can invalidate all the certificates " "generated with it, so all them should be regenerated with a new CA " "certificate." msgstr "" #: src/ca.c:2349 msgid "Are you sure you want to delete this Certificate Signing Request?" msgstr "Вы уверены, что хотите улалить Запрос на Подпись Сертификата?" #: src/ca.c:2572 msgid "" "The current password you have entered doesn't match with the actual current " "database password." msgstr "" "Текущий пароль, который вы ввели, не совпадает с текущим актуальным паролем " "базы." #: src/ca.c:2588 msgid "Error while changing database password. The operation was cancelled." msgstr "Произошла ошибка при смене пароля базы. Операция отменена." #: src/ca.c:2593 msgid "Password changed successfully" msgstr "Пароль изменён успешно" #: src/ca.c:2601 src/ca-cli-callbacks.c:1186 msgid "" "Error while establishing database password. The operation was cancelled." msgstr "Произошла ошибка при установке пароля базы. Операция отменена." #: src/ca.c:2606 msgid "Password established successfully" msgstr "Пароль установлен успешно" #: src/ca.c:2616 msgid "Error while removing database password. The operation was cancelled." msgstr "Произошла ошибка при удалении пароля базы. Операция отменена." #: src/ca.c:2621 msgid "Password removed successfully" msgstr "Пароль удалён успешно." #: src/ca.c:2708 msgid "Change CA password - gnoMint" msgstr "Изменить CA пароль - gnoMint" #: src/ca.c:2840 msgid "Diffie-Hellman parameters saved successfully" msgstr "Параметры Diffie-Hellman сохранены успешно" #: src/ca.c:2872 msgid "Save Diffie-Hellman parameters" msgstr "Сохранить Diffie-Hellman параметры" #: src/ca.c:2951 #, c-format msgid "Problem when importing '%s' file" msgstr "Проблема при импорте файла '%s'" #: src/ca.c:3012 msgid "Select PEM file to import" msgstr "Выберите PEM файл для импорта" #: src/ca.c:3018 msgid "Select directory to import" msgstr "Выберите каталог для импорта" #: src/cert_diff.c:70 #, fuzzy msgid "Cannot parse left certificate" msgstr "Отозвать выбранные сертификаты" #: src/cert_diff.c:72 #, fuzzy msgid "Cannot parse right certificate" msgstr "Отозвать выбранные сертификаты" #: src/cert_diff.c:113 #, fuzzy msgid "Subject CN" msgstr "ЗаголовокCN" #: src/cert_diff.c:114 #, fuzzy msgid "Subject O" msgstr "ЗаголовокO" #: src/cert_diff.c:115 #, fuzzy msgid "Subject OU" msgstr "ЗаголовокOU" #: src/cert_diff.c:116 #, fuzzy msgid "Subject Country" msgstr "ЗаголовокCN" #: src/cert_diff.c:117 #, fuzzy msgid "Subject State" msgstr "Заголовок" #: src/cert_diff.c:118 #, fuzzy msgid "Subject Locality" msgstr "Заголовок Публичного Ключа" #: src/cert_diff.c:119 #, fuzzy msgid "Subject email" msgstr "Заголовок" #: src/cert_diff.c:120 #, fuzzy msgid "Subject DN" msgstr "ЗаголовокCN" #: src/cert_diff.c:121 #, fuzzy msgid "Issuer DN" msgstr "Издатель" #: src/cert_diff.c:125 #, fuzzy msgid "SAN" msgstr "RSA" #: src/cert_diff.c:126 #, fuzzy msgid "Key usage / EKU" msgstr "Использование ключа" #: src/cert_diff.c:127 #, fuzzy msgid "Subject Key ID" msgstr "Уникальный идентификатор заголовка" #: src/cert_diff.c:128 #, fuzzy msgid "Authority Key ID" msgstr "Идентификатор Ключа Авторизации" #: src/cert_diff.c:129 #, fuzzy msgid "CRL distribution" msgstr "Точки распространения CRL" #: src/cert_diff.c:130 #, fuzzy msgid "SHA-1 fingerprint" msgstr "SHA1 отпечаток" #: src/cert_diff.c:131 #, fuzzy msgid "SHA-256 fingerprint" msgstr "SHA1 отпечаток" #: src/cert_renewal.c:111 msgid "Cannot parse generated CSR." msgstr "" #: src/cert_renewal.c:125 #, fuzzy msgid "Cannot encrypt new private key." msgstr "Экспорт незашифрованного закрытого ключа" #: src/cert_renewal.c:181 src/cert_renewal.c:341 #, fuzzy msgid "Cannot read certificate PEM from database." msgstr "_Открыть базу сертификатов" #: src/cert_renewal.c:186 src/cert_renewal.c:347 #, fuzzy msgid "Cannot parse certificate." msgstr "Корневой сертификат CA" #: src/cert_renewal.c:193 src/cert_renewal.c:354 #, fuzzy, c-format msgid "Cannot find issuer CA in this database (issuer DN: %s)." msgstr "Не могу найти родительский CA в базе" #: src/cert_renewal.c:204 src/cert_renewal.c:315 #, fuzzy msgid "Cannot load parent CA material from database." msgstr "Не могу найти родительский CA в базе" #: src/cert_renewal.c:212 src/cert_renewal.c:221 src/cert_renewal.c:265 #: src/cert_renewal.c:280 #, fuzzy msgid "Cannot decrypt parent CA's private key." msgstr "Экспорт зашифрованного закрытого ключ" #: src/ca-cli.c:42 msgid "newdb " msgstr "новая база <имяфайла>" #: src/ca-cli.c:42 msgid "Close current file and create a new database with given filename" msgstr "Закрыть текущий файл и создать новую базу с данным именем файла" #: src/ca-cli.c:43 msgid "opendb " msgstr "открыть базу <имяфайла>" #: src/ca-cli.c:43 msgid "Close current file and open the file with given filename" msgstr "Закрыть текущий файл и открыть файл с заданным именем" #: src/ca-cli.c:44 msgid "savedbas " msgstr "сохранить базу <имяфайла>" #: src/ca-cli.c:44 msgid "Save the current file with a different filename" msgstr "Сохранить текущий файл под другим именем" #: src/ca-cli.c:45 msgid "Get current status (opened file, no. of certificates, etc...)" msgstr "Получить текущий статус (открытый файл, номер сертификатов, т.д. ...)" #: src/ca-cli.c:46 msgid "" "List the certificates in database. With option --see-revoked, lists also the " "revoked ones" msgstr "Список сертификатов в базе." #: src/ca-cli.c:48 msgid "List the CSRs in database" msgstr "Список CSR в базе" #: src/ca-cli.c:49 msgid "addcsr [ca-id-for-inherit-fields]" msgstr "addcsr [ca-id-for-inherit-fields]" #: src/ca-cli.c:49 msgid "Start a new CSR creation process" msgstr "Стартовать процесс создания нового CSR" #: src/ca-cli.c:50 msgid "Start a new self-signed CA creation process" msgstr "Стартовать процесс создания нового самоподписанного CA" #: src/ca-cli.c:51 msgid "extractcertpkey " msgstr "extractcertpkey " #: src/ca-cli.c:51 msgid "" "Extract the private key of the certificate with the given internal id and " "saves it into the given file" msgstr "" "Извлечь закрытый ключ сертификата с данным внутренним номером и сохранить " "его в заданный файл" #: src/ca-cli.c:54 msgid "extractcsrpkey " msgstr "extractcsrpkey " #: src/ca-cli.c:54 msgid "" "Extract the private key of the CSR with the given internal id and saves it " "into the given file" msgstr "" "Извлечь закрытый ключ CSR с данным внутренним номером и сохранить его в " "заданный файл" #: src/ca-cli.c:57 msgid "revoke " msgstr "revoke " #: src/ca-cli.c:57 msgid "Revoke the certificate with the given internal ID" msgstr "Отозвать сертификат с данным внутренним номером" #: src/ca-cli.c:58 msgid "sign " msgstr "sign " #: src/ca-cli.c:58 msgid "Generate a certificate signing the given CSR with the given CA" msgstr "Генерировать сертификат подписывая данный CSR с данным CA" #: src/ca-cli.c:59 msgid "delete " msgstr "delete " #: src/ca-cli.c:59 msgid "Delete the given CSR from the database" msgstr "Удалить данный CSR из базы данных" #: src/ca-cli.c:60 msgid "crlgen " msgstr "crlgen " #: src/ca-cli.c:60 msgid "Generate a new CRL for the given CA, saving it into the file " msgstr "Создать новый CRL для данного CA, сохранив его в файле " #: src/ca-cli.c:61 msgid "dhgen " msgstr "dhgen " #: src/ca-cli.c:61 msgid "Generate a new DH-parameter set, saving it into the file " msgstr "" "Генерировать новый набор DH-параметров, сохраняя его в файле <имяфайла>" #: src/ca-cli.c:62 msgid "Change password for the current database" msgstr "Изменить пароль для текущей базы данных" #: src/ca-cli.c:63 msgid "importfile " msgstr "importfile " #: src/ca-cli.c:63 msgid "Import the file with the given name " msgstr "Импорт файла с заданым именем <имяфайла>" #: src/ca-cli.c:64 msgid "importdir " msgstr "importdir " #: src/ca-cli.c:64 msgid "Import the given directory, as a OpenSSL-CA directory" msgstr "Импорт данного каталога как OpenSSL-CA каталога" #: src/ca-cli.c:65 msgid "showcert " msgstr "showcert " #: src/ca-cli.c:65 msgid "Show properties of the given certificate" msgstr "Показать свойства данного сертификата" #: src/ca-cli.c:66 msgid "showcsr " msgstr "showcsr " #: src/ca-cli.c:66 msgid "Show properties of the given CSR" msgstr "Показать свойства данного CSR" #: src/ca-cli.c:67 msgid "showpolicy " msgstr "showpolicy " #: src/ca-cli.c:67 msgid "Show CA policy" msgstr "Показать политики CA" #: src/ca-cli.c:68 msgid "setpolicy " msgstr "setpolicy " #: src/ca-cli.c:68 msgid "Change the given CA policy" msgstr "Изменить данную политику CA" #: src/ca-cli.c:69 msgid "Show program preferences" msgstr "Показать настройки программы" #: src/ca-cli.c:70 msgid "setpreference " msgstr "setpreference " #: src/ca-cli.c:70 msgid "Set the given program preference" msgstr "Установить данную настройку программы" #: src/ca-cli.c:71 msgid "addservercert " msgstr "" #: src/ca-cli.c:71 msgid "Quick server certificate generation (cert-type: 'web' or 'email')" msgstr "" #: src/ca-cli.c:72 #, fuzzy msgid "renewcert " msgstr "showcert " #: src/ca-cli.c:72 msgid "" "Reissue a non-CA certificate with the same subject + SAN and a fresh " "keypair. The old certificate remains in the database. CA certificates cannot " "be renewed." msgstr "" #: src/ca-cli.c:73 #, fuzzy msgid "exportchain " msgstr "extractcertpkey " #: src/ca-cli.c:73 msgid "" "Export the full certificate chain (leaf → root) for the given certificate as " "a PEM bundle." msgstr "" #: src/ca-cli.c:74 #, fuzzy msgid "revokemany [cert-id ...]" msgstr "revoke " #: src/ca-cli.c:74 msgid "Revoke many certificates at once. Non-cert ids are silently skipped." msgstr "" #: src/ca-cli.c:75 #, fuzzy msgid "deletemany [csr-id ...]" msgstr "delete " #: src/ca-cli.c:75 msgid "Delete many CSRs at once. Non-CSR ids are silently skipped." msgstr "" #: src/ca-cli.c:76 msgid "search " msgstr "" #: src/ca-cli.c:76 msgid "" "List certificates and CSRs whose subject or serial contains (case-" "insensitive)." msgstr "" #: src/ca-cli.c:77 msgid "diff " msgstr "" #: src/ca-cli.c:77 msgid "" "Side-by-side diff of two certificates. Each argument is either a numeric DB " "id or a path to a PEM file." msgstr "" #: src/ca-cli.c:78 msgid "Show about message" msgstr "Показать сведения о программе" #: src/ca-cli.c:79 msgid "Show warranty information" msgstr "Показать сведения о гарантиях" #: src/ca-cli.c:80 msgid "Show distribution information" msgstr "Показать сведения о распространении" #: src/ca-cli.c:81 msgid "Show version information" msgstr "Показать сведения о версии" #: src/ca-cli.c:82 msgid "Show (this) help message" msgstr "Показать (это) сообщение помощи" #: src/ca-cli.c:83 src/ca-cli.c:84 src/ca-cli.c:85 msgid "Close database and exit program" msgstr "Закрыть базу данных и выйти из программы" #: src/ca-cli.c:132 #, c-format msgid "Opening database %s..." msgstr "Открыть базу данных %s..." #: src/ca-cli.c:136 #, c-format msgid " OK.\n" msgstr " OK.\n" #: src/ca-cli.c:138 #, c-format msgid " Error.\n" msgstr " Ошибка.\n" #: src/ca-cli.c:153 #, c-format msgid "" "Notice: %d certificate expires within the next %d days. Use `renewcert ` " "to reissue.\n" msgid_plural "" "Notice: %d certificates expire within the next %d days. Use `renewcert ` " "to reissue.\n" msgstr[0] "" msgstr[1] "" #: src/ca-cli.c:187 #, fuzzy, c-format msgid "" "\n" "\n" "%s version %s \"%s\"\n" "%s\n" "\n" msgstr "" "\n" "\n" "%s версия %s\n" "%s\n" "\n" #: src/ca-cli.c:188 #, c-format msgid "" "This program comes with ABSOLUTELY NO WARRANTY;\n" "for details type 'warranty'.\n" msgstr "" "Эта программа идёт АБСОЛЮТНО БЕЗ ГАРАНТИЙ;\n" "для подробностей наберите 'warranty'.\n" #: src/ca-cli.c:189 #, c-format msgid "" "This is free software, and you are welcome to redistribute it\n" "under certain conditions; type 'distribution' for details.\n" "\n" msgstr "" "Это свободная программа и приветствуется её распространение\n" "при определённых условиях; наберите 'distribution' для деталей.\n" "\n" #: src/ca-cli.c:231 #, c-format msgid "Unpaired quotes\n" msgstr "Непарные кавычки\n" #: src/ca-cli.c:309 #, c-format msgid "" "Invalid command. Try 'help' for getting a list of recognized commands.\n" msgstr "" "Неверная команда. Попробуйте 'help' для получения списка распознаваемых " "команд.\n" #: src/ca-cli.c:313 #, c-format msgid "Incorrect number of parameters.\n" msgstr "Неверное число параметров.\n" #: src/ca-cli.c:314 #, c-format msgid "Syntax: %s\n" msgstr "Синтакс: %s\n" #: src/ca-cli-callbacks.c:62 src/ca-cli-callbacks.c:111 msgid "The file already exists, so it will be overwritten." msgstr "Файл уже существует, поэтому он будет переписан." #: src/ca-cli-callbacks.c:62 src/ca-cli-callbacks.c:111 #: src/ca-cli-callbacks.c:824 msgid "Are you sure? Yes/[No] " msgstr "Вы уверены? Да/[Нет] " #: src/ca-cli-callbacks.c:84 #, c-format msgid "Problem when opening new '%s' CA database\n" msgstr "Проблема при открытии новой базы CA '%s'\n" #: src/ca-cli-callbacks.c:88 #, c-format msgid "File '%s' opened\n" msgstr "Открыт файл '%s'\n" #: src/ca-cli-callbacks.c:98 #, c-format msgid "Problem when opening '%s' CA database\n" msgstr "" "Проблема с открытием базы CA '%s\n" "'\n" #: src/ca-cli-callbacks.c:132 #, c-format msgid "Current opened file: %s\n" msgstr "Текущий открытый файл: %s\n" #: src/ca-cli-callbacks.c:133 #, c-format msgid "Number of certificates in file: %d\n" msgstr "Количество сертификатов в файле: %d\n" #: src/ca-cli-callbacks.c:134 #, c-format msgid "Number of CSRs in file: %d\n" msgstr "Количество CSR в файле: %d\n" #: src/ca-cli-callbacks.c:169 msgid " (after 2038?)" msgstr "" #: src/ca-cli-callbacks.c:239 #, c-format msgid "Certificates in Database:\n" msgstr "Сертификаты в базе:\n" #: src/ca-cli-callbacks.c:240 #, c-format msgid "Id.\tIs CA?\tCertificate Subject\tKey in DB?\tActivation\t\tExpiration" msgstr "" "Id.\tявляется CA?\tЗаголовок Сертификата\tКлюч в базе?" "\tАктивация\t\tИстечение срока" #: src/ca-cli-callbacks.c:243 #, c-format msgid "\t\tRevocation\n" msgstr "\t\tОтзыв\n" #: src/ca-cli-callbacks.c:278 #, c-format msgid "Certificate Requests in Database:\n" msgstr "Запросы сертификата в Базе:\n" #: src/ca-cli-callbacks.c:279 #, c-format msgid "Id.\tParent Id.\tCSR Subject\t\tKey in DB?\n" msgstr "Id.\tId предка.\tCSR Заголовок\t\tКлюч в базе?\n" #: src/ca-cli-callbacks.c:309 src/ca-cli-callbacks.c:1129 #: src/ca-cli-callbacks.c:1522 src/ca-cli-callbacks.c:1551 msgid "The given CA id. is not valid" msgstr "Заданный идентификатор CA не верен" #: src/ca-cli-callbacks.c:362 #, c-format msgid "" "Please enter data corresponding to subject of the Certificate Signing " "Request:\n" msgstr "" "Пожалуйста введите данные соответствующие заголовку Запроса на Подпись " "Сертификата:\n" #: src/ca-cli-callbacks.c:365 src/ca-cli-callbacks.c:567 msgid "Enter country (C)" msgstr "Введите страну (C)" #: src/ca-cli-callbacks.c:373 src/ca-cli-callbacks.c:573 msgid "Enter state or province (ST)" msgstr "Введите название штата или области (ST)" #: src/ca-cli-callbacks.c:382 src/ca-cli-callbacks.c:579 msgid "Enter locality or city (L)" msgstr "Введите название местности или города (L)" #: src/ca-cli-callbacks.c:390 src/ca-cli-callbacks.c:585 msgid "Enter organization (O)" msgstr "Введите название организации (O)" #: src/ca-cli-callbacks.c:398 src/ca-cli-callbacks.c:591 msgid "Enter organizational unit (OU)" msgstr "Введите название организационной единицы (OU)" #: src/ca-cli-callbacks.c:405 src/ca-cli-callbacks.c:597 msgid "Enter common name (CN)" msgstr "Введите обычное имя (СN)" #: src/ca-cli-callbacks.c:411 src/ca-cli-callbacks.c:603 msgid "Enter email address (leave blank for none)" msgstr "" #: src/ca-cli-callbacks.c:422 src/ca-cli-callbacks.c:614 msgid "" "Enter Subject Alternative Names (SAN) [format: " "DNS:example.com,IP:192.168.1.1]" msgstr "" #: src/ca-cli-callbacks.c:433 src/ca-cli-callbacks.c:625 #, fuzzy msgid "Enter type of key you are going to create (RSA/DSA/ECDSA/Ed25519)" msgstr "Введите тип ключа, который вы будете создавать (RSA/DSA)" #: src/ca-cli-callbacks.c:472 src/ca-cli-callbacks.c:656 msgid "Enter curve size for ECDSA (256, 384, or 521)" msgstr "" #: src/ca-cli-callbacks.c:482 src/ca-cli-callbacks.c:667 msgid "Enter bitlength for the key (it must be a whole multiple of 1024)" msgstr "Введите битовую длину ключа (должно быть кратно 1024)" #: src/ca-cli-callbacks.c:487 #, c-format msgid "These are the provided CSR properties:\n" msgstr "Предоставленные свойства CSR:\n" #: src/ca-cli-callbacks.c:489 src/ca-cli-callbacks.c:704 #: src/ca-cli-callbacks.c:1350 src/ca-cli-callbacks.c:1411 #, c-format msgid "Subject:\n" msgstr "Заголовок:\n" #: src/ca-cli-callbacks.c:490 src/ca-cli-callbacks.c:705 #, c-format msgid "\tDistinguished Name: " msgstr "\tОтличительное Имя (DN): " #: src/ca-cli-callbacks.c:505 src/ca-cli-callbacks.c:720 #: src/ca-cli-callbacks.c:1354 src/ca-cli-callbacks.c:1414 #, fuzzy, c-format msgid "\tSubject Alternative Names: %s\n" msgstr "Заголовок Альтернативное Имя" #: src/ca-cli-callbacks.c:506 src/ca-cli-callbacks.c:721 #, c-format msgid "Key pair\n" msgstr "Пара ключей\n" #: src/ca-cli-callbacks.c:512 src/ca-cli-callbacks.c:727 #, c-format msgid "\tType: %s\n" msgstr "\tТип: %s\n" #: src/ca-cli-callbacks.c:514 #, c-format msgid "\tKey size: fixed (Ed25519)\n" msgstr "" #: src/ca-cli-callbacks.c:516 #, c-format msgid "\tCurve: P-%d\n" msgstr "" #: src/ca-cli-callbacks.c:518 src/ca-cli-callbacks.c:729 #, c-format msgid "\tKey bitlength: %d\n" msgstr "\tБитовая длина ключа: %d\n" #: src/ca-cli-callbacks.c:521 src/ca-cli-callbacks.c:740 msgid "Do you want to change anything? Yes/[No] " msgstr "Хотите ли вы изменить всё? Да/[Нет] " #: src/ca-cli-callbacks.c:525 msgid "" "You are about to create a Certificate Signing Request with these properties." msgstr "Вы создаёте Запрос на Подпись Сертификата с такими свойствами." #: src/ca-cli-callbacks.c:526 src/ca-cli-callbacks.c:745 msgid "Are you sure? [Yes]/No " msgstr "Вы уверены? [Да]/Нет " #: src/ca-cli-callbacks.c:531 src/ca-cli-callbacks.c:750 #: src/ca-cli-callbacks.c:834 src/ca-cli-callbacks.c:965 #: src/ca-cli-callbacks.c:1086 src/ca-cli-callbacks.c:1115 #: src/ca-cli-callbacks.c:1181 src/ca-cli-callbacks.c:1208 #: src/ca-cli-callbacks.c:1236 src/ca-cli-callbacks.c:1251 #: src/ca-cli-callbacks.c:1581 src/ca-cli-callbacks.c:1624 #: src/ca-cli-callbacks.c:1945 #, c-format msgid "Operation cancelled.\n" msgstr "Действие отменено.\n" #: src/ca-cli-callbacks.c:565 #, c-format msgid "" "Please enter data corresponding to subject of the new Certification " "Authority:\n" msgstr "" "Пожалуйста введите данные соответствующие заголовку нового Центра " "Авторизации:\n" #: src/ca-cli-callbacks.c:673 msgid "" "Introduce number of months before expiration of the new certification " "authority" msgstr "" "Введите количество месяцев до истечения срока нового центра авторизации" #: src/ca-cli-callbacks.c:693 src/new_ca_window.c:457 msgid "" "This system uses a 32-bit time_t and cannot represent dates after " "2038-01-19. The new CA's expiration date has been clamped to that limit. To " "issue longer-lived CAs, run gnoMint on a 64-bit platform." msgstr "" #: src/ca-cli-callbacks.c:702 #, c-format msgid "These are the provided new CA properties:\n" msgstr "Заданные свойства нового CA:\n" #: src/ca-cli-callbacks.c:730 #, c-format msgid "Validity\n" msgstr "Годность\n" #: src/ca-cli-callbacks.c:731 src/ca-cli-callbacks.c:1360 #, c-format msgid "Validity:\n" msgstr "Годность:\n" #: src/ca-cli-callbacks.c:734 src/ca-cli-callbacks.c:1363 #, c-format msgid "\tActivated on: %s\n" msgstr "\tАктивирован: %s\n" #: src/ca-cli-callbacks.c:738 src/ca-cli-callbacks.c:1370 #, c-format msgid "\tExpires on: %s\n" msgstr "\tСрок истекает: %s\n" #: src/ca-cli-callbacks.c:744 msgid "" "You are about to create a new Certification Authority with these properties." msgstr "Вы создаёте новый Центр Авторизации со следующими свойствами." #: src/ca-cli-callbacks.c:770 src/ca-cli-callbacks.c:818 #: src/ca-cli-callbacks.c:1321 msgid "The given certificate id. is not valid" msgstr "Заданный номер сертификата не верен" #: src/ca-cli-callbacks.c:777 src/ca-cli-callbacks.c:801 #, c-format msgid "Private key extracted successfully into file '%s'\n" msgstr "Закрытый ключ извлечён успешно в файл '%s'\n" #: src/ca-cli-callbacks.c:794 src/ca-cli-callbacks.c:946 #: src/ca-cli-callbacks.c:1099 src/ca-cli-callbacks.c:1400 msgid "The given CSR id. is not valid" msgstr "Заданный номер CSR не верен" #: src/ca-cli-callbacks.c:824 msgid "This certificate will be revoked." msgstr "Сертификат будет отозван." #: src/ca-cli-callbacks.c:830 #, c-format msgid "Certificate revoked.\n" msgstr "Сертификат отозван.\n" #: src/ca-cli-callbacks.c:844 src/ca-cli-callbacks.c:1381 #, c-format msgid "Certificate uses:\n" msgstr "Сертификат использует:\n" #: src/ca-cli-callbacks.c:847 #, c-format msgid "* Certification Authority use enabled.\n" msgstr "* Использование Центра Сертификации включено.\n" #: src/ca-cli-callbacks.c:849 #, c-format msgid "* Certification Authority use disabled.\n" msgstr "* Использование Центра Сертификации отключено.\n" #: src/ca-cli-callbacks.c:853 #, c-format msgid "* CRL signing use enabled.\n" msgstr "* Использование подписывания CRL включено.\n" #: src/ca-cli-callbacks.c:855 #, c-format msgid "* CRL signing use disabled.\n" msgstr "* Использование для подписи CRL отключено.\n" #: src/ca-cli-callbacks.c:859 #, c-format msgid "* Digital Signature use enabled.\n" msgstr "* Использование для цифровой подписи разрешено.\n" #: src/ca-cli-callbacks.c:861 #, c-format msgid "* Digital Signature use disabled.\n" msgstr "* Использование для цифровой подписи запрещено.\n" #: src/ca-cli-callbacks.c:865 src/ca-cli-callbacks.c:867 #, c-format msgid "* Data Encipherment use enabled.\n" msgstr "* Использование для шифрования данных разрешено.\n" #: src/ca-cli-callbacks.c:871 #, c-format msgid "* Key Encipherment use enabled.\n" msgstr "* Использование для шифрования ключей разрешено.\n" #: src/ca-cli-callbacks.c:873 #, c-format msgid "* Key Encipherment use disabled.\n" msgstr "* Использование для шифрования ключей запрещено.\n" #: src/ca-cli-callbacks.c:877 #, c-format msgid "* Non Repudiation use enabled.\n" msgstr "* Использование для удостоверения в невозможности отказа разрешено.\n" #: src/ca-cli-callbacks.c:879 #, c-format msgid "* Non Repudiation use disabled.\n" msgstr "* Использование для удостоверения в невозможности отказа запрещено.\n" #: src/ca-cli-callbacks.c:883 #, c-format msgid "* Key Agreement use enabled.\n" msgstr "Использование для согласования ключей разрешено.\n" #: src/ca-cli-callbacks.c:885 #, c-format msgid "* Key Agreement use disabled.\n" msgstr "Использование для согласования ключей запрещено.\n" #: src/ca-cli-callbacks.c:888 #, c-format msgid "Certificate purposes:\n" msgstr "Назначение сертификата:\n" #: src/ca-cli-callbacks.c:891 #, c-format msgid "* Email Protection purpose enabled.\n" msgstr "* Назначение для защиты эл.почты разрешено.\n" #: src/ca-cli-callbacks.c:893 #, c-format msgid "* Email Protection purpose disabled.\n" msgstr "* Назначение для защиты эл.почты запрещено.\n" #: src/ca-cli-callbacks.c:897 #, c-format msgid "* Code Signing purpose enabled.\n" msgstr "* Назначение для подписи кода разрешено.\n" #: src/ca-cli-callbacks.c:899 #, c-format msgid "* Code Signing purpose disabled.\n" msgstr "* Назначение для подписи кода запрещено.\n" #: src/ca-cli-callbacks.c:903 #, c-format msgid "* TLS Web Client purpose enabled.\n" msgstr "* Назначение как TLS Веб клиент разрешено.\n" #: src/ca-cli-callbacks.c:905 #, c-format msgid "* TLS Web Client purpose disabled.\n" msgstr "* Назначение как TLS Веб клиент запрещено.\n" #: src/ca-cli-callbacks.c:909 #, c-format msgid "* TLS Web Server purpose enabled.\n" msgstr "* Назначение как TLS Веб сервер разрешено.\n" #: src/ca-cli-callbacks.c:911 #, c-format msgid "* TLS Web Server purpose disabled.\n" msgstr "* Назначение как TLS Веб сервер запрещено.\n" #: src/ca-cli-callbacks.c:915 #, c-format msgid "* Time Stamping purpose enabled.\n" msgstr "* Назначение для отметки времени разрешено.\n" #: src/ca-cli-callbacks.c:917 #, c-format msgid "* Time Stamping purpose disabled.\n" msgstr "* Назначение для отметки времени запрещено.\n" #: src/ca-cli-callbacks.c:921 #, c-format msgid "* OCSP Signing purpose enabled.\n" msgstr "Назначение для подписи OCSP разрешено.\n" #: src/ca-cli-callbacks.c:923 #, c-format msgid "* OCSP Signing purpose disabled.\n" msgstr "Назначение для подписи OCSP запрещено.\n" #: src/ca-cli-callbacks.c:927 #, c-format msgid "* Any purpose enabled.\n" msgstr "* Любое назначение разрешено.\n" #: src/ca-cli-callbacks.c:929 #, c-format msgid "* Any purpose disabled.\n" msgstr "* Любое назначение запрещено.\n" #: src/ca-cli-callbacks.c:953 #, c-format msgid "You are about to sign the following Certificate Signing Request:\n" msgstr "Вы собираетесь подписать следующий Запрос на подпись Сертификата:\n" #: src/ca-cli-callbacks.c:955 #, c-format msgid "with the certificate corresponding to the next CA:\n" msgstr "с сертификатом, относящимся к следующему CA:\n" #: src/ca-cli-callbacks.c:958 msgid "" "Introduce number of months before expiration of the new certificate (0 to " "cancel)" msgstr "" "Введите количество месяцев до истечения нового сертификата (0 для " "безсрочного)" #: src/ca-cli-callbacks.c:984 src/ca-cli-callbacks.c:1072 #, c-format msgid "" "The new certificate will be created with the following uses and purposes:\n" msgstr "" "Новый сертификат будет сгенерирован для следующего использования и " "назначения:\n" #: src/ca-cli-callbacks.c:987 msgid "Do you want to change any property of the new certificate? Yes/[No] " msgstr "" "Хотите ли вы изменить какое-либо свойство нового сертификата? Да/[Нет] " #: src/ca-cli-callbacks.c:990 msgid "* Enable Certification Authority use? [Yes]/No " msgstr "* Разрешить использование для Центра Сертификации? [Да]/Нет " #: src/ca-cli-callbacks.c:992 #, c-format msgid "* Certification Authority use disabled by policy\n" msgstr "* Использование для Центра Сертификации запрещено политикой\n" #: src/ca-cli-callbacks.c:996 msgid "* Enable CRL Signing? [Yes]/No " msgstr "* Разрешить подпись CRL? [Да]/Нет " #: src/ca-cli-callbacks.c:998 #, c-format msgid "* CRL signing use disabled by policy\n" msgstr "* Использование для подписи CRL запрещено политикой\n" #: src/ca-cli-callbacks.c:1002 msgid "* Enable Digital Signature use? [Yes]/No " msgstr "* Разрешить использование для Цифровой Подписи? [Да]/Нет " #: src/ca-cli-callbacks.c:1004 #, c-format msgid "* Digital Signature use disabled by policy\n" msgstr "* Использование для Цифровой Подписи запрещено политикой\n" #: src/ca-cli-callbacks.c:1008 msgid "Enable Data Encipherment use? [Yes]/No " msgstr "Разрешить использование для Шифрования Данных? [Да]/Нет " #: src/ca-cli-callbacks.c:1010 #, c-format msgid "* Data Encipherment use disabled by policy\n" msgstr "* Использование для Шифрования Данных запрещено политикой\n" #: src/ca-cli-callbacks.c:1014 msgid "Enable Key Encipherment use? [Yes]/No " msgstr "Разрешить использование как Ключа Шифрования? [Да]/Нет " #: src/ca-cli-callbacks.c:1016 #, c-format msgid "* Key Encipherment use disabled by policy\n" msgstr "* Использование как Ключа Шифрования запрещено политикой\n" #: src/ca-cli-callbacks.c:1020 msgid "Enable Non Repudiation use? [Yes]/No " msgstr "" "Разрешить использование для удостоверения в невозможности отказа (Non-" "Repudiation)? [Да]/Нет " #: src/ca-cli-callbacks.c:1022 #, c-format msgid "* Non Repudiation use disabled by policy\n" msgstr "" "* Использование для удостоверения в невозможности отказа (Non-Repudiation) " "запрещено политикой\n" #: src/ca-cli-callbacks.c:1026 msgid "Enable Key Agreement use? [Yes]/No " msgstr "Разрешить использование для Согласования Ключа? [Да]/Нет " #: src/ca-cli-callbacks.c:1028 #, c-format msgid "* Key Agreement use disabled by policy\n" msgstr "* Использование для Согласования Ключа запрещено политикой\n" #: src/ca-cli-callbacks.c:1032 msgid "Enable Email Protection purpose? [Yes]/No " msgstr "Разрешить назначение для Защиты Эл.Почты? [Да]/Нет " #: src/ca-cli-callbacks.c:1034 #, c-format msgid "* Email Protection purpose disabled by policy\n" msgstr "* Назначение для Защиты Эл.Почты запрещено политикой\n" #: src/ca-cli-callbacks.c:1038 msgid "Enable Code Signing purpose? [Yes]/No " msgstr "Разрешить назначение для Подписи Кода? [Да]/Нет " #: src/ca-cli-callbacks.c:1040 #, c-format msgid "* Code Signing purpose disabled by policy\n" msgstr "* Назначения для Подписи Кода запрещено политикой\n" #: src/ca-cli-callbacks.c:1044 msgid "Enable TLS Web Client purpose? [Yes]/No " msgstr "Разрешить назначение как TLS веб клиент? [Да]/Нет " #: src/ca-cli-callbacks.c:1046 #, c-format msgid "* TLS Web Client purpose disabled by policy\n" msgstr "* Назначение как TLS веб клиент запрещено политикой\n" #: src/ca-cli-callbacks.c:1050 msgid "Enable TLS Web Server purpose? [Yes]/No " msgstr "Разрешить назначение как TLS Веб сервер? [Да]/Нет " #: src/ca-cli-callbacks.c:1052 #, c-format msgid "* TLS Web Server purpose disabled by policy\n" msgstr "* Назначение как TLS веб сервер запрещено политикой\n" #: src/ca-cli-callbacks.c:1056 msgid "Enable Time Stamping purpose? [Yes]/No " msgstr "Разрешить назначения для Временных Меток? [Да]/Нет " #: src/ca-cli-callbacks.c:1058 #, c-format msgid "* Time Stamping purpose disabled by policy\n" msgstr "* Назначение для Временных Меток запрещено политикой\n" #: src/ca-cli-callbacks.c:1062 msgid "Enable OCSP Signing purpose? [Yes]/No " msgstr "Разрешить назначение для подписи OCSP? [Да]/Нет " #: src/ca-cli-callbacks.c:1063 #, c-format msgid "* OCSP Signing purpose disabled by policy\n" msgstr "* Назначение для подписи OCSP запрещено политикой\n" #: src/ca-cli-callbacks.c:1067 msgid "Enable any purpose? [Yes]/No " msgstr "Разрешить любое назначение? [Да]/Нет " #: src/ca-cli-callbacks.c:1069 #, c-format msgid "* Any purpose disabled by policy\n" msgstr "* Любое назначение запрещено политикой\n" #: src/ca-cli-callbacks.c:1077 msgid "" "All the mandatory data for the certificate generation has been gathered." msgstr "Все обязательные данные для генерации сертификата были собраны." #: src/ca-cli-callbacks.c:1077 msgid "Do you want to proceed with the signing? [Yes]/No " msgstr "Хотите ли вы продолжить процедуру подписывания? [Да]/Нет " #: src/ca-cli-callbacks.c:1083 #, c-format msgid "Certificate signed.\n" msgstr "Сертификат подписан.\n" #: src/ca-cli-callbacks.c:1105 msgid "This Certificate Signing Request will be deleted." msgstr "Этот Запрос на Подпись Сертификата будет удалён." #: src/ca-cli-callbacks.c:1105 msgid "This operation cannot be undone. Are you sure? Yes/[No] " msgstr "Эта операция не может быть отменена. Вы уверены? Да/[Нет] " #: src/ca-cli-callbacks.c:1111 #, c-format msgid "Certificate Signing Request deleted.\n" msgstr "Запрос на Подпись Сертификата удалён.\n" #: src/ca-cli-callbacks.c:1136 #, c-format msgid "CRL generated successfully into file '%s'\n" msgstr "Генерация CRL в файл '%s' прошла успешно\n" #: src/ca-cli-callbacks.c:1153 msgid "The bit-length of the prime number must be whole multiple of 1024" msgstr "Битовая длинна основного числа должна быть кратна 1024" #: src/ca-cli-callbacks.c:1162 #, c-format msgid "Diffie-Hellman parameters created and saved successfully in file '%s'\n" msgstr "Параметры Diffie-Hellman созданы и успешно сохранены в файле '%s'\n" #: src/ca-cli-callbacks.c:1174 msgid "Currently, the database is not password-protected." msgstr "На данный момент база не защищена паролем." #: src/ca-cli-callbacks.c:1174 msgid "Do you want to password protect it? [Yes]/No " msgstr "Хотите ли вы защитить её паролем? [Да]/Нет " #: src/ca-cli-callbacks.c:1175 msgid "" "OK. You need to supply a password for protecting the private keys in the\n" "database, so nobody else but authorized people can use them. This password\n" "will be asked any time gnoMint will make use of any private key in database." msgstr "" "Хорошо. Вы должны ввести пароль для защиты закрытых ключей в \n" "базе, чтобы никто кроме авторизованных лиц не мог использовать их. Пароль\n" "будет запрошен в то время, когда gnoMint будет использовать закрытый ключ в " "базе." #: src/ca-cli-callbacks.c:1178 msgid "Insert password:" msgstr "Введите пароль:" #: src/ca-cli-callbacks.c:1178 msgid "Insert password (confirm):" msgstr "Введите пароль (подтверждение):" #: src/ca-cli-callbacks.c:1179 src/ca-cli-callbacks.c:1249 msgid "The introduced passwords are distinct." msgstr "Введённые пароли различаются." #: src/ca-cli-callbacks.c:1190 #, c-format msgid "Password established successfully.\n" msgstr "Пароль успешно установлен.\n" #: src/ca-cli-callbacks.c:1197 #, c-format msgid "Nothing done.\n" msgstr "Нечего делать.\n" #: src/ca-cli-callbacks.c:1201 msgid "Currently, the database IS password-protected." msgstr "На данный момент, база защищена паролем." #: src/ca-cli-callbacks.c:1201 msgid "Do you want to remove this password protection? Yes/[No] " msgstr "Хотите ли вы удалить защиту паролем? Да/[Нет] " #: src/ca-cli-callbacks.c:1205 #, c-format msgid "" "For removing the password-protection, the current database password\n" "must be supplied.\n" msgstr "" "Для удаления парольной защиты необходимо ввести текущий\n" "пароль базы.\n" #: src/ca-cli-callbacks.c:1206 src/ca-cli-callbacks.c:1234 msgid "Please, insert the current database password (Empty to cancel): " msgstr "Пожалуйста, введите текущий пароль базы (Пустой ввод для отмены): " #: src/ca-cli-callbacks.c:1213 src/ca-cli-callbacks.c:1241 msgid "" "The current password you have entered\n" "doesn't match with the actual current database password." msgstr "" "Текущий пароль который вы ввели\n" "не совпадает с фактическим паролем базы." #: src/ca-cli-callbacks.c:1218 msgid "" "Error while removing database password. \n" "The operation was cancelled." msgstr "" "Произошла ошибка во время снятия пароля базы. \n" "Операция была отменена." #: src/ca-cli-callbacks.c:1223 #, c-format msgid "Password removed successfully.\n" msgstr "Пароль успешно удалён.\n" #: src/ca-cli-callbacks.c:1233 #, c-format msgid "" "You must supply the current database password before changing the password.\n" msgstr "Вы должны ввести текущий пароль базы перед сменой пароля.\n" #: src/ca-cli-callbacks.c:1245 msgid "" "OK. Now you must supply a new password for protecting the private keys in " "the\n" "database, so nobody else but authorized people can use them. This password\n" "will be asked any time gnoMint will make use of any private key in database." msgstr "" "Хорошо. Сейчас вы должны ввести пароль для защиты закрытых ключей в\n" "базе, чтобы никто кроме авторизованных лиц не мог использовать их. Пароль\n" "будет запрашиваться каждый раз, когда gnoMint будет использовать закрытый " "ключ в базе." #: src/ca-cli-callbacks.c:1248 msgid "Insert new password:" msgstr "Введите новый пароль:" #: src/ca-cli-callbacks.c:1248 msgid "Insert new password (confirm):" msgstr "Введите новый пароль (подтверждение):" #: src/ca-cli-callbacks.c:1257 msgid "" "Error while changing database password. \n" "The operation was cancelled." msgstr "" "Произошла ошибка во время смены пароля. \n" "Операция была отменена." #: src/ca-cli-callbacks.c:1263 #, c-format msgid "Password changed successfully.\n" msgstr "Пароль успешно изменён.\n" #: src/ca-cli-callbacks.c:1281 msgid "Problem when importing the given file." msgstr "Проблема при импортировании данного файла." #: src/ca-cli-callbacks.c:1284 #, c-format msgid "File imported successfully.\n" msgstr "Файл импортирован успешно.\n" #: src/ca-cli-callbacks.c:1300 #, c-format msgid "Directory imported successfully.\n" msgstr "Каталог импортирован успешно.\n" #: src/ca-cli-callbacks.c:1343 #, c-format msgid "Certificate:\n" msgstr "Сертификат:\n" #: src/ca-cli-callbacks.c:1347 #, c-format msgid "\tSerial number: %s\n" msgstr "\tСерийный номер:%s\n" #: src/ca-cli-callbacks.c:1351 src/ca-cli-callbacks.c:1357 #: src/ca-cli-callbacks.c:1412 #, c-format msgid "\tDistinguished Name: %s\n" msgstr "\tОпределяющее Имя (DN): %s\n" #: src/ca-cli-callbacks.c:1351 src/ca-cli-callbacks.c:1352 #: src/ca-cli-callbacks.c:1357 src/ca-cli-callbacks.c:1358 msgid "None." msgstr "Нет." #: src/ca-cli-callbacks.c:1352 src/ca-cli-callbacks.c:1358 #: src/ca-cli-callbacks.c:1416 #, c-format msgid "\tUnique ID: %s\n" msgstr "\tУникальный ID: %s\n" #: src/ca-cli-callbacks.c:1356 #, c-format msgid "Issuer:\n" msgstr "Поставщик:\n" #: src/ca-cli-callbacks.c:1365 src/ca-cli-callbacks.c:1372 #, c-format msgid "" "\t (warning: this 32-bit build cannot tell a real post-2038 date from an " "overflow; this value may be inaccurate)\n" msgstr "" #: src/ca-cli-callbacks.c:1375 #, c-format msgid "Fingerprints:\n" msgstr "Отпечатки:\n" #: src/ca-cli-callbacks.c:1376 #, c-format msgid "\tSHA1 fingerprint: %s\n" msgstr "\tSHA1 отпечаток: %s\n" #: src/ca-cli-callbacks.c:1377 #, c-format msgid "\tMD5 fingerprint: %s\n" msgstr "\tMD5 отпечаток: %s\n" #: src/ca-cli-callbacks.c:1378 #, fuzzy, c-format msgid "\tSHA256 fingerprint: %s\n" msgstr "\tSHA1 отпечаток: %s\n" #: src/ca-cli-callbacks.c:1409 #, c-format msgid "Certificate Signing Request:\n" msgstr "Запрос на Подпись Сертификата:\n" #: src/ca-cli-callbacks.c:1486 msgid "Generated certs inherit Country from CA " msgstr "" "Сгенерированные сертификаты наследуют Страну от CA " #: src/ca-cli-callbacks.c:1487 msgid "Generated certs inherit State from CA " msgstr "" "Сгенерированные сертификаты наследуют Область от " "CA " #: src/ca-cli-callbacks.c:1488 msgid "Generated certs inherit Locality from CA " msgstr "" "Сгенерированные сертификаты наследуют Местность от " "CA " #: src/ca-cli-callbacks.c:1489 msgid "Generated certs inherit Organization from CA " msgstr "" "Сгенерированные сертификаты наследуют Организацию от CA " #: src/ca-cli-callbacks.c:1490 msgid "Generated certs inherit Organizational Unit from CA " msgstr "" "Сгенерированные сертификаты наследуют Организационную Единицу от " "CA " #: src/ca-cli-callbacks.c:1491 msgid "Country in generated certs must be the same than in CA " msgstr "" "Страна в сгенерированных сертификатах должны быть такой же как в " "CA " #: src/ca-cli-callbacks.c:1492 msgid "State in generated certs must be the same than in CA " msgstr "" "Область в сгенерированных сертификатах должна быть такой же как в " "CA " #: src/ca-cli-callbacks.c:1493 msgid "Locality in generated certs must be the same than in CA " msgstr "" "Район в сгенерированных сертификатах должен быть таким же как в CA " #: src/ca-cli-callbacks.c:1494 msgid "Organization in generated certs must be the same than in CA " msgstr "" "Организация в сгенерированных сертификатах должна быть такой же как в " "CA " #: src/ca-cli-callbacks.c:1495 msgid "Organizational Unit in generated certs must be the same than in CA" msgstr "" "Организационная Единица в сгенерированных сертификатах должна быть такой же " "как в CA" #: src/ca-cli-callbacks.c:1496 msgid "Maximum number of hours between CRL updates " msgstr "" "Максимальное количество часов между обновлениями CRL " #: src/ca-cli-callbacks.c:1497 msgid "CRL distribution point (URL where CRL is published) " msgstr "" #: src/ca-cli-callbacks.c:1498 msgid "Maximum number of months before expiration of new certs " msgstr "" "Максимальное количество месяцев до истечения срока новых " "сертификатов " #: src/ca-cli-callbacks.c:1499 msgid "CA use enabled in generated certs " msgstr "" "Использование для CA разрешено в сгенерированных " "сертификатах " #: src/ca-cli-callbacks.c:1500 msgid "CRL Sign use enabled in generated certs " msgstr "" "Использование для Подписи CRL разрешено в сгенерированных " "сертификатах " #: src/ca-cli-callbacks.c:1501 msgid "Non reputation use enabled in generated certs " msgstr "" "Использование для заверения невозможности отказа разрешено сгенерированных " "сертификатах " #: src/ca-cli-callbacks.c:1502 msgid "Digital signature use enabled in generated certs " msgstr "" "Использование для цифровой подписи разрешено в сгенерированных " "сертификатах " #: src/ca-cli-callbacks.c:1503 msgid "Key encipherment use enabled in generated certs " msgstr "" "Использование для шифрования ключей разрешено в сгенерированных " "сертификатах " #: src/ca-cli-callbacks.c:1504 msgid "Key agreement use enabled in generated certs " msgstr "" "Использование для согласования ключей разрешено в сгенерированных " "сертификатах " #: src/ca-cli-callbacks.c:1505 msgid "Data encipherment use enabled in generated certs " msgstr "" "Использование для шифрования данных разрешено в сгенерированных " "сертификатах " #: src/ca-cli-callbacks.c:1506 msgid "TLS web server purpose enabled in generated certs " msgstr "" "Назначение как TLS веб-сервер разрешено в сгенерированных " "сертификатах " #: src/ca-cli-callbacks.c:1507 msgid "TLS web client purpose enabled in generated certs " msgstr "" "Назначение как TLS веб-клиент разрешено в сгенерированных " "сертификатах " #: src/ca-cli-callbacks.c:1508 msgid "Time stamping purpose enabled in generated certs " msgstr "" "Назначение для временных меток разрешено сгенерированных " "сертификатах " #: src/ca-cli-callbacks.c:1509 msgid "Code signing server purpose enabled in generated certs " msgstr "" "Назначение для подписи кода разрешено в сгенерированных " "сертификатах " #: src/ca-cli-callbacks.c:1510 msgid "Email protection purpose enabled in generated certs " msgstr "" "Назначение для защита почты разрешено в сгенерированных " "сертификатах " #: src/ca-cli-callbacks.c:1511 msgid "OCSP signing purpose enabled in generated certs " msgstr "" "Назначение для подписи OCSP разрешено в сгенерированных " "сертификатах " #: src/ca-cli-callbacks.c:1512 msgid "Any purpose enabled in generated certs " msgstr "" "Любое назначение рарешено в сгенерированных " "сертификатах " #: src/ca-cli-callbacks.c:1526 #, c-format msgid "Showing policies of the following certificate:\n" msgstr "Отображение политик следующего сертификата:\n" #: src/ca-cli-callbacks.c:1528 #, c-format msgid "" "\n" "Policies:\n" msgstr "" "\n" "Политики:\n" #: src/ca-cli-callbacks.c:1530 #, c-format msgid "Id.\tDescription\t\t\t\t\t\t\t\tValue\n" msgstr "Id.\tОписание\t\t\t\t\t\t\t\tЗначение\n" #: src/ca-cli-callbacks.c:1556 msgid "The given policy id is not valid" msgstr "Данная политика недействительна" #: src/ca-cli-callbacks.c:1568 #, fuzzy, c-format msgid "" "You are about to assign to the policy\n" "'%s' the new value '%s'." msgstr "" "Вы собираетесь назначить политике\n" "'%s' новое значение '%d'." #: src/ca-cli-callbacks.c:1572 src/ca-cli-callbacks.c:1616 msgid "Are you sure? Yes/[No] : " msgstr "Вы уверены? Да/[Нет]: " #: src/ca-cli-callbacks.c:1577 #, fuzzy, c-format msgid "Policy set correctly to '%s'.\n" msgstr "Политика установлена корректно в '%d'.\n" #: src/ca-cli-callbacks.c:1591 #, c-format msgid "gnoMint-cli current preferences:\n" msgstr "gnoMint-cli текущие настройки:\n" #: src/ca-cli-callbacks.c:1593 #, c-format msgid "Id.\tName\t\t\tValue\n" msgstr "Id.\tИмя\t\t\tЗначение\n" #: src/ca-cli-callbacks.c:1594 #, c-format msgid "0\tGnome keyring support\t%d\n" msgstr "0\tПоддержка Gnome keyring\t%d\n" #: src/ca-cli-callbacks.c:1606 msgid "The given preference id is not valid" msgstr "Заданный id свойств не верный" #: src/ca-cli-callbacks.c:1612 #, c-format msgid "" "You are about to assign to the preference 'Gnome keyring support' the new " "value '%d'." msgstr "" "Вы собираетесь назначить свойству 'Поддержка Gnome keyring' новое значение " "'%d'." #: src/ca-cli-callbacks.c:1634 #, c-format msgid "" "%s version %s\n" "%s\n" msgstr "" "%s версия %s\n" "%s\n" #: src/ca-cli-callbacks.c:1635 #, c-format msgid "" "\n" "Authors:\n" "%s\n" "\n" msgstr "" "\n" "Авторы:\n" "%s\n" "\n" #: src/ca-cli-callbacks.c:1636 src/ca-cli-callbacks.c:1637 src/main.c:742 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " David Marín https://launchpad.net/~davefx\n" " aquanaut https://launchpad.net/~thecrux" #: src/ca-cli-callbacks.c:1637 #, c-format msgid "" "Translators:\n" "%s\n" msgstr "" "Переводчики:\n" "%s\n" #: src/ca-cli-callbacks.c:1644 msgid "" "THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY\n" "APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT\n" "HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY\n" "OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,\n" "THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n" "PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM\n" "IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF\n" "ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n" "\n" "For more information about warranty, see section 15 onwards of the GNU\n" "General Public License. You should have received a copy of the GNU General\n" "Public License along with this program. If not, see\n" ".\n" "\n" msgstr "" "ГАРАНТИИ НА ПРОГРАММУ НЕ ПРЕДОСТАВЛЯЮТСЯ В ТОЙ СТЕПЕНИ, В КАКОЙ ЭТО\n" "ДОПУСКАЕТСЯ ПРИМЕНИМЫМ ПРАВОМ. НАСТОЯЩАЯ ПРОГРАММА ПОСТАВЛЯЕТСЯ\n" "НА УСЛОВИЯХ \"КАК ЕСТЬ\". ЕСЛИ ИНОЕ НЕ УКАЗАНО В ПИСЬМЕННОЙ ФОРМЕ, АВТОР\n" "И/ИЛИ ИНОЙ ПРАВООБЛАДАТЕЛЬ НЕ ПРИНИМАЕТ НА СЕБЯ НИКАКИХ ГАРАНТИЙНЫХ\n" "ОБЯЗАТЕЛЬСТВ, КАК ЯВНО ВЫРАЖЕННЫХ, ТАК И ПОДРАЗУМЕВАЕМЫХ, В ОТНОШЕНИИ\n" "ПРОГРАММЫ, В ТОМ ЧИСЛЕ ПОДРАЗУМЕВАЕМУЮ ГАРАНТИЮ ТОВАРНОГО СОСТОЯНИЯ\n" "ПРИ ПРОДАЖЕ И ПРИГОДНОСТИ ДЛЯ ИСПОЛЬЗОВАНИЯ В КОНКРЕТНЫХ ЦЕЛЯХ, А\n" "ТАКЖЕ ЛЮБЫЕ ИНЫЕ ГАРАНТИИ. ВСЕ РИСКИ, СВЯЗАННЫЕ С КАЧЕСТВОМ И\n" "ПРОИЗВОДИТЕЛЬНОСТЬЮ ПРОГРАММЫ, НЕСЕТ ЛИЦЕНЗИАТ. В СЛУЧАЕ ЕСЛИ В\n" "ПРОГРАММЕ БУДУТ ОБНАРУЖЕНЫ НЕДОСТАТКИ, ВСЕ РАСХОДЫ, СВЯЗАННЫЕ С\n" "ТЕХНИЧЕСКИМ ОБСЛУЖИВАНИЕМ, РЕМОНТОМ ИЛИ ИСПРАВЛЕНИЕМ ПРОГРАММЫ,\n" "НЕСЕТ ЛИЦЕНЗИАТ.\n" "\n" "Для подробной информации о гарантии смотрите секцию 15 Стандартной\n" "Общественной Лицензией GNU. Вы должны были получить копию Стандартной\n" "Общественной Лицензией GNU с этой программой. Если нет, смотрите\n" ".\n" "\n" #: src/ca-cli-callbacks.c:1662 msgid "" "This program is free software: you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation, either version 3 of the License, or\n" "(at your option) any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program. If not, see .\n" "\n" msgstr "" "Данная программа является свободным программным обеспечением.\n" "Вы вправе распространять ее и/или модифицировать в соответствии с\n" "условиями версии 3 либо по вашему выбору с условиями более поздней\n" "версии Стандартной Общественной Лицензии GNU, опубликованной Free\n" "Software Foundation.\n" "\n" "Мы распространяем данную программу в надежде на то, что она будет вам\n" "полезной, однако НЕ ПРЕДОСТАВЛЯЕМ НА НЕЕ НИКАКИХ ГАРАНТИЙ, в том числе\n" "ГАРАНТИИ ТОВАРНОГО СОСТОЯНИЯ ПРИ ПРОДАЖЕ и ПРИГОДНОСТИ ДЛЯ\n" "ИСПОЛЬЗОВАНИЯ В КОНКРЕТНЫХ ЦЕЛЯХ. Для получения более подробной\n" "информации ознакомьтесь со Стандартной Общественной Лицензией GNU.\n" "\n" "Вместе с данной программой вы должны были получить экземпляр Стандартной\n" "Общественной Лицензии GNU. Если вы его не получили, смотрите\n" ".\n" "\n" #: src/ca-cli-callbacks.c:1677 #, fuzzy, c-format msgid "%s version %s \"%s\"\n" msgstr "" "%s версия %s\n" "%s\n" #: src/ca-cli-callbacks.c:1686 #, c-format msgid "Available commands:\n" msgstr "Доступные команды:\n" #: src/ca-cli-callbacks.c:1687 #, c-format msgid "===================\n" msgstr "===================\n" #: src/ca-cli-callbacks.c:1697 #, c-format msgid "Exiting gnomint-cli...\n" msgstr "Выход из gnomint-cli...\n" #: src/ca-cli-callbacks.c:1738 #, fuzzy msgid "The given CA id is not valid" msgstr "Заданный идентификатор CA не верен" #: src/ca-cli-callbacks.c:1750 msgid "Certificate type must be 'web' or 'email'" msgstr "" #: src/ca-cli-callbacks.c:1756 msgid "Server name cannot be empty" msgstr "" #: src/ca-cli-callbacks.c:1760 #, fuzzy, c-format msgid "Creating %s certificate for: %s\n" msgstr "Создание корневого сертификата CA" #: src/ca-cli-callbacks.c:1761 #, fuzzy msgid "web server" msgstr "TLS Веб сервер" #: src/ca-cli-callbacks.c:1761 #, fuzzy msgid "email server" msgstr "TLS Веб сервер" #: src/ca-cli-callbacks.c:1837 #, fuzzy, c-format msgid "Error: Key generation failed: %s\n" msgstr "Создание ключей не удалось" #: src/ca-cli-callbacks.c:1845 #, fuzzy, c-format msgid "Error: CSR generation failed: %s\n" msgstr "Оздание CSR не удалось" #: src/ca-cli-callbacks.c:1854 #, c-format msgid "Error: Failed to parse generated CSR\n" msgstr "" #: src/ca-cli-callbacks.c:1865 #, fuzzy, c-format msgid "Error: Failed to save CSR: %s\n" msgstr "Не удалось инициализировать: %s\n" #: src/ca-cli-callbacks.c:1879 msgid "CSR created with ID: %" msgstr "" #: src/ca-cli-callbacks.c:1903 #, fuzzy, c-format msgid "Error: Failed to sign certificate: %s\n" msgstr "Ошибка при подписи сертификата" #: src/ca-cli-callbacks.c:1910 #, fuzzy, c-format msgid "Certificate generated successfully for: %s\n" msgstr "Сертификат успешно экспортирован" #: src/ca-cli-callbacks.c:1911 #, fuzzy, c-format msgid "Certificate type: %s\n" msgstr "Сертификат использует:\n" #: src/ca-cli-callbacks.c:1911 #, fuzzy msgid "Web Server" msgstr "TLS Веб сервер" #: src/ca-cli-callbacks.c:1911 msgid "Email Server" msgstr "" #: src/ca-cli-callbacks.c:1925 #, fuzzy msgid "Usage: renewcert " msgstr "showcert " #: src/ca-cli-callbacks.c:1930 src/ca-cli-callbacks.c:1968 #, fuzzy msgid "The given certificate id is not valid" msgstr "Заданный номер сертификата не верен" #: src/ca-cli-callbacks.c:1941 msgid "" "gnoMint will issue a new certificate with the same subject and SAN as this " "one, signed by the same CA, with a fresh keypair. The old certificate stays " "in place." msgstr "" #: src/ca-cli-callbacks.c:1944 #, fuzzy msgid "Renew? [Yes]/No " msgstr "Вы уверены? [Да]/Нет " #: src/ca-cli-callbacks.c:1955 #, fuzzy msgid "Certificate renewed. New certificate id: %" msgstr "Создание сертификата не удалось" #: src/ca-cli-callbacks.c:1963 #, fuzzy msgid "Usage: exportchain " msgstr "extractcertpkey " #: src/ca-cli-callbacks.c:1974 msgid "Cannot build chain PEM for that certificate." msgstr "" #: src/ca-cli-callbacks.c:1979 #, fuzzy msgid "Cannot write chain file." msgstr "Не удалось инициализировать: %s\n" #: src/ca-cli-callbacks.c:1985 #, c-format msgid "Full chain (leaf → root) written to %s\n" msgstr "" #: src/ca-cli-callbacks.c:1992 msgid "Usage: revokemany [cert-id ...]" msgstr "" #: src/ca-cli-callbacks.c:2008 #, fuzzy, c-format msgid "%d certificate revoked.\n" msgid_plural "%d certificates revoked.\n" msgstr[0] "Сертификат отозван.\n" msgstr[1] "Сертификат отозван.\n" #: src/ca-cli-callbacks.c:2016 msgid "Usage: deletemany [csr-id ...]" msgstr "" #: src/ca-cli-callbacks.c:2032 #, c-format msgid "%d CSR deleted.\n" msgid_plural "%d CSRs deleted.\n" msgstr[0] "" msgstr[1] "" #: src/ca-cli-callbacks.c:2092 msgid "Usage: search " msgstr "" #: src/ca-cli-callbacks.c:2099 #, c-format msgid "Matches (id\tserial\tsubject):\n" msgstr "" #: src/ca-cli-callbacks.c:2102 #, c-format msgid "%d match.\n" msgid_plural "%d matches.\n" msgstr[0] "" msgstr[1] "" #: src/ca-cli-callbacks.c:2126 #, fuzzy, c-format msgid "'%s' is not a certificate id in this database." msgstr "_Открыть базу сертификатов" #: src/ca-cli-callbacks.c:2134 #, c-format msgid "Cannot read PEM for cert id %s." msgstr "" #: src/ca-cli-callbacks.c:2152 msgid "Usage: diff " msgstr "" #: src/ca-cli-callbacks.c:2168 msgid "Field" msgstr "" #: src/ca-cli-callbacks.c:2181 #, c-format msgid "" "\n" "%d field differs.\n" msgid_plural "" "\n" "%d fields differ.\n" msgstr[0] "" msgstr[1] "" #: src/ca_creation.c:55 src/csr_creation.c:57 msgid "Generating new RSA key pair" msgstr "Создание новой пары ключей RSA" #: src/ca_creation.c:64 src/ca_creation.c:88 src/ca_creation.c:109 #: src/ca_creation.c:128 src/csr_creation.c:66 src/csr_creation.c:87 #: src/csr_creation.c:104 src/csr_creation.c:121 msgid "Key generation failed" msgstr "Создание ключей не удалось" #: src/ca_creation.c:78 src/csr_creation.c:79 msgid "Generating new DSA key pair" msgstr "Создание новой пары ключей DSA" #: src/ca_creation.c:101 src/csr_creation.c:97 #, fuzzy msgid "Generating new ECDSA key pair" msgstr "Создание новой пары ключей DSA" #: src/ca_creation.c:120 src/csr_creation.c:114 #, fuzzy msgid "Generating new Ed25519 key pair" msgstr "Создание новой пары ключей RSA" #: src/ca_creation.c:139 msgid "Generating self-signed CA-Root cert" msgstr "Создание самоподписанного корневого сертификата CA" #: src/ca_creation.c:147 msgid "Certificate generation failed" msgstr "Создание сертификата не удалось" #: src/ca_creation.c:159 msgid "Creating CA database" msgstr "Создание базы CA" #: src/ca_creation.c:168 msgid "CA database creation failed" msgstr "Создание базы CA не удалось" #: src/ca_creation.c:180 msgid "CA generated successfully" msgstr "CA успешно создан" #: src/ca_file.c:207 #, c-format msgid "Error opening filename '%s'" msgstr "Ошибка при открытии файла '%s'" #: src/ca_file.c:310 msgid "" "The selected database has been created with a newer version of gnoMint than " "the currently installed." msgstr "" "Выбранная база была создана в более новой версии gnoMint, чем установленная." #: src/ca_file.c:1221 msgid "Cannot find last assigned serial number" msgstr "" #: src/ca_file.c:1410 msgid "Cannot find parent CA in database" msgstr "Не могу найти родительский CA в базе" #: src/ca_file.c:1600 msgid "" "This certificate already exists in the database: cannot insert it twice." msgstr "Сертификат уже существует в базе: не могу вставить его повторно." #: src/ca_file.c:2044 msgid "" "The given file contains a valid private key. However, it has not been " "imported to the database because it doesn't match any key-less certificate " "or certificate request in the database." msgstr "" "Данный файл содержит действительный закрытый ключ. Однако, он не был " "импортирован в базу, поскольку он не соответствует какому-либо сертификату " "или запросу на подпись сертификата без ключа в базе." #: src/ca_file.c:2047 msgid "" "The given file contains a valid private key. However, it has not been " "imported to the database because it doesn't match any key-less certificate " "in the database." msgstr "" "Данный файл содержит действительный закрытый ключ. Однако, он не был " "импортирован в базу, поскольку он не соответствует какому-либо сертификату " "без ключа в базе." #: src/certificate_properties.c:151 msgid "" "This 32-bit build cannot represent dates after 2038-01-19, so it cannot " "distinguish a genuine date from a later one that overflowed. This value may " "be inaccurate." msgstr "" #: src/certificate_properties.c:383 #, fuzzy msgid "Unknown" msgstr "(неизвестно)" #: src/certificate_properties.c:453 src/tls.c:1478 msgid "Certificate signing" msgstr "Подпись сертификата" #: src/certificate_properties.c:457 msgid "Key encipherment only" msgstr "Только шифрование ключа" #: src/certificate_properties.c:459 msgid "Key decipherment only" msgstr "Только дешифрование ключа" #: src/certificate_properties.c:472 msgid "Version" msgstr "Версия" #: src/certificate_properties.c:507 msgid "Serial Number" msgstr "Серийный номер" #: src/certificate_properties.c:522 src/certificate_properties.c:1262 msgid "Signature" msgstr "Подпись" #: src/certificate_properties.c:525 src/certificate_properties.c:676 #: src/certificate_properties.c:679 src/certificate_properties.c:1228 msgid "Algorithm" msgstr "Алгоритм" #: src/certificate_properties.c:529 src/certificate_properties.c:686 #: src/certificate_properties.c:726 src/certificate_properties.c:763 #: src/certificate_properties.c:1232 msgid "Parameters" msgstr "Параметры" #: src/certificate_properties.c:529 src/certificate_properties.c:686 #: src/certificate_properties.c:763 src/certificate_properties.c:767 #: src/certificate_properties.c:781 src/certificate_properties.c:790 #: src/certificate_properties.c:1232 msgid "(unknown)" msgstr "(неизвестно)" #: src/certificate_properties.c:563 msgid "Issuer" msgstr "Издатель" #: src/certificate_properties.c:598 msgid "Validity" msgstr "Действительность" #: src/certificate_properties.c:603 msgid "Not Before" msgstr "Не ранее" #: src/certificate_properties.c:610 msgid "Not After" msgstr "Не позднее" #: src/certificate_properties.c:616 msgid "Note" msgstr "" #: src/certificate_properties.c:617 msgid "" "This 32-bit build cannot represent dates after 2038-01-19, so a value marked " "⚠ may be a later date that overflowed and is inaccurate." msgstr "" #: src/certificate_properties.c:673 msgid "Subject Public Key Info" msgstr "Информация заголовока публичного ключа" #: src/certificate_properties.c:690 msgid "RSA PublicKey" msgstr "Публичный ключ RSA" #: src/certificate_properties.c:702 msgid "Modulus" msgstr "Модуль" #: src/certificate_properties.c:710 msgid "Public Exponent" msgstr "Открытый показатель степени" #: src/certificate_properties.c:755 msgid "DSA PublicKey" msgstr "Публичный ключ DSA" #: src/certificate_properties.c:767 msgid "Subject Public Key" msgstr "Заголовок Публичного Ключа" #: src/certificate_properties.c:781 msgid "Issuer Unique ID" msgstr "Уникальный идентификатор издателя" #: src/certificate_properties.c:790 msgid "Subject Unique ID" msgstr "Уникальный идентификатор заголовка" #: src/certificate_properties.c:813 src/certificate_properties.c:836 #: src/certificate_properties.c:945 src/certificate_properties.c:1058 #: src/certificate_properties.c:1085 src/certificate_properties.c:1124 #: src/certificate_properties.c:1182 src/certificate_properties.c:1457 #: src/san_manager.c:399 msgid "Value" msgstr "Значение" #: src/certificate_properties.c:875 src/certificate_properties.c:1018 msgid "DNS Name" msgstr "Имя DNS" #: src/certificate_properties.c:882 src/certificate_properties.c:1025 msgid "RFC822 Name" msgstr "Имя RFC822" #: src/certificate_properties.c:905 src/certificate_properties.c:919 #: src/certificate_properties.c:927 msgid "IP" msgstr "IP" #: src/certificate_properties.c:936 src/certificate_properties.c:1049 msgid "Directory Name" msgstr "Название каталога" #: src/certificate_properties.c:973 src/certificate_properties.c:1164 msgid "TRUE" msgstr "ИСТИННО" #: src/certificate_properties.c:973 src/certificate_properties.c:1164 msgid "FALSE" msgstr "ЛОЖНО" #: src/certificate_properties.c:977 msgid "CA" msgstr "CA" #: src/certificate_properties.c:981 msgid "Path Length Constraint" msgstr "Ограничение длины пути" #: src/certificate_properties.c:1154 msgid "Extensions" msgstr "Расширения" #: src/certificate_properties.c:1166 msgid "Critical" msgstr "Критический" #: src/certificate_properties.c:1199 msgid "Certificate" msgstr "Сертификат" #: src/certificate_properties.c:1225 msgid "Signature Algorithm" msgstr "Алгоритм подписи" #: src/certificate_properties.c:1446 msgid "Name" msgstr "Имя" #: src/certificate_properties.c:1477 src/tls.c:1494 msgid "TLS WWW Server" msgstr "TLS WWW Сервер" #: src/certificate_properties.c:1478 msgid "TLS WWW Client" msgstr "TLS WWW Клиент" #: src/certificate_properties.c:1484 msgid "Subject Directory Attributes" msgstr "Заголовок Атрибуты Каталога" #: src/certificate_properties.c:1485 msgid "Subject Key Identifier" msgstr "Заголовок Идентификатор Ключа" #: src/certificate_properties.c:1486 msgid "Key Usage" msgstr "Использование ключа" #: src/certificate_properties.c:1487 msgid "Private Key Usage Period" msgstr "Период использования Закрытого Ключа" #: src/certificate_properties.c:1489 msgid "Basic Constraints" msgstr "Основные ограничения" #: src/certificate_properties.c:1490 msgid "Name Constraints" msgstr "Название ограничений" #: src/certificate_properties.c:1491 msgid "CRL Distribution Points" msgstr "Точки распространения CRL" #: src/certificate_properties.c:1492 msgid "Certificate Policies" msgstr "Политики Сертификата" #: src/certificate_properties.c:1493 msgid "Policy Mappings" msgstr "Соответствия политики" #: src/certificate_properties.c:1494 msgid "Authority Key Identifier" msgstr "Идентификатор Ключа Авторизации" #: src/certificate_properties.c:1495 msgid "Policy Constraints" msgstr "Ограничения Политики" #: src/certificate_properties.c:1496 msgid "Extended Key Usage" msgstr "Расширенное использование ключа" #: src/certificate_properties.c:1497 msgid "Delta CRL Distribution Point" msgstr "Точка распространения дополнительного CRL" #: src/certificate_properties.c:1498 msgid "Inhibit Any-Policy" msgstr "Запрет любой политики" #: src/creation_process_window.c:69 msgid "CA creation process finished" msgstr "Процесс создания CA завершён" #: src/creation_process_window.c:193 msgid "Creation process cancelled" msgstr "Процесс создания отменён" #: src/creation_process_window.c:215 msgid "CSR creation process finished" msgstr "Процесс создания CSR завершён" #: src/creation_process_window.c:288 msgid "Creating Certificate Signing Request" msgstr "Содание Запроса на Подпись Сертификата" #: src/crl.c:101 msgid "CRL generated successfully" msgstr "CRL создан успешно" #: src/crl.c:146 msgid "Export Certificate Revocation List" msgstr "Экспорт списка отозванных сертификатов" #: src/crl.c:180 src/crl.c:253 src/crl.c:299 msgid "There was an error while generating CRL." msgstr "Произошла ошибка при создании CRL." #: src/crl.c:189 msgid "There was an error while writing CRL." msgstr "Произошла ошибка при записи CRL." #: src/crl.c:201 src/crl.c:227 src/crl.c:268 src/crl.c:330 src/crl.c:351 msgid "There was an error while exporting CRL." msgstr "Произошла ошибка при экспорте CRL." #: src/crl.c:238 src/crl.c:369 msgid "There was an error while getting revoked certificates." msgstr "Произошла ошибка при получении отозванных сертификатов." #: src/csr_creation.c:131 msgid "Generating CSR" msgstr "Создание CSR" #: src/csr_creation.c:140 msgid "CSR generation failed" msgstr "Оздание CSR не удалось" #: src/csr_creation.c:151 msgid "Saving CSR in database" msgstr "Запись CSR в базу" #: src/csr_creation.c:169 msgid "CSR couldn't be saved" msgstr "CSR не может быть сохранено" #: src/csr_creation.c:180 msgid "CSR generated successfully" msgstr "CSR успешно создан" #: src/csr_properties.c:91 msgid "" "This Certificate Signing Request has its corresponding private key saved " "in a external file." msgstr "" "Этот Запрос на Подпись Сертификата имеет соответствующий закрытый ключ, " "сохранённый во внешнем файле." #: src/dialog.c:123 #, c-format msgid "" "\n" "The password must have, at least, %d characters\n" msgstr "" "\n" "Пароль должен содержать по крайне мере %d символов\n" #: src/dialog.c:581 msgid "To do. Feature not implemented yet." msgstr "Предстоит сделать. Возможность пока не реализована." #: src/export.c:43 src/export.c:48 src/export.c:53 msgid "There was an error while saving Diffie-Hellman parameters." msgstr "Произошла ошибка при сохранении параметров Diffie-Hellman." #: src/export.c:79 src/export.c:138 src/export.c:146 src/export.c:200 #: src/export.c:210 src/export.c:304 src/export.c:341 src/export.c:376 #: src/export.c:384 src/export.c:424 src/export.c:433 src/export.c:474 msgid "There was an error while exporting private key." msgstr "Произошла ошибка во время экспорта закрытого ключа" #: src/export.c:99 src/export.c:284 src/export.c:357 src/export.c:455 msgid "There was an error while getting private key." msgstr "Произошла ошибка во время получения закрытого ключа." #: src/export.c:110 src/export.c:248 msgid "There was an error while uncrypting private key." msgstr "Произошла ошибка при расшифровке закрытого ключа." #: src/export.c:113 src/export.c:264 msgid "" "You need to supply a passphrase for protecting the exported private key, so " "nobody else but authorized people can use it. This passphrase will be asked " "by any application that will make use of the private key." msgstr "" "Вы должны указать парольную фразу для защиты экспортируемого закрытого " "ключа, чтобы никто, кроме авторизованных лиц, не мог использовать его. Эта " "парольная фраза будет запрашиваться любым приложением, которое будет " "использовать закрытый ключ." #: src/export.c:116 src/export.c:267 src/export.c:536 src/export.c:715 msgid "Insert passphrase (8 characters or more):" msgstr "Введите парольную фразу (8 символов или больше)" #: src/export.c:116 src/export.c:267 src/export.c:536 src/export.c:715 msgid "Insert passphrase (confirm):" msgstr "Введите парольную фразу (подтвердение):" #: src/export.c:117 src/export.c:268 src/export.c:537 src/export.c:716 msgid "The introduced passphrases are distinct." msgstr "Введённые парольные фразы отличаются." #: src/export.c:120 src/export.c:178 msgid "Operation cancelled." msgstr "Операция отменена." #: src/export.c:130 src/export.c:190 msgid "There was an error while password-protecting private key." msgstr "Произошла ошибка при защите паролем закрытого ключа." #: src/export.c:368 src/export.c:415 msgid "There was an error while decrypting private key." msgstr "Произошла ошибка во время расшифровки закрытого ключа." #: src/export.c:513 src/export.c:747 msgid "Unsupported operation: you cannot generate a PKCS#12 for a CSR." msgstr "Неподдерживаемая операция: вы не можете создать PKCS#12 для CSR." #: src/export.c:521 src/export.c:530 src/export.c:695 src/export.c:731 msgid "" "There was an error while getting the certificate and private key from the " "internal database." msgstr "" "Произошла ошибка во время получения сертификата и закрытого ключа из " "внутренней базы." #: src/export.c:533 src/export.c:712 msgid "" "You need to supply a passphrase for protecting the exported certificate, so " "nobody else but authorized people can use it. This passphrase will be asked " "by any application that will import the certificate." msgstr "" "Вы должны задать парольную фразу для защиты экспортированного сертификата, " "чтобы никто другой, а только авторизованные люди могли использовать его. Эта " "парольный фраза будет запрошены любым приложением, которое будет " "импортировать сертификат." #: src/export.c:555 src/export.c:629 msgid "There was an error while generating the PKCS#12 package." msgstr "Произошла ошибка во время генерации PKCS#12 пакета." #: src/export.c:569 src/export.c:578 src/export.c:652 src/export.c:663 msgid "There was an error while exporting the certificate." msgstr "Произошла ошибка во время экспорта сертификата." #: src/gnomint-cli.c:59 msgid "- A Certification Authority manager" msgstr "- управление Центром Авторизации" #: src/gnomint-cli.c:62 #, c-format msgid "Failed to initialize: %s\n" msgstr "Не удалось инициализировать: %s\n" #: src/import.c:171 #, fuzzy, c-format msgid "" "The whole selected file, or some of its elements, seems to\n" "be cyphered using a password or passphrase. For importing\n" "the file into gnoMint database, you must provide an \n" "appropriate password.\n" msgstr "" "Весь выбранный файл или часть его элементов, похоже\n" "зашифровано с использованием пароля или парольной фразы.\n" "Для импорта файла в базу gnoMint, вы должны ввести \n" "соответствующий пароль.\n" #: src/import.c:176 #, c-format msgid "Please introduce password for `%s'" msgstr "Пожалуйста, введите пароль для `%s'" #: src/import.c:218 #, c-format msgid "" "Couldn't import the certificate request. \n" "The database returned this error: \n" "\n" "'%s'" msgstr "" "Не могу импортировать запрос сертификата. \n" "База вернула такую ошибку: \n" "\n" "'%s'" #: src/import.c:298 msgid "" "The imported certificate expires after 2038-01-19, a date this 32-bit build " "cannot represent. Its stored expiration has been capped and may be " "inaccurate. The certificate itself is unchanged; open it on a 64-bit system " "to see the exact date." msgstr "" #: src/import.c:310 #, c-format msgid "" "Couldn't import the certificate. \n" "The database returned this error: \n" "\n" "'%s'" msgstr "" "Не могу импортировать сертификат. \n" "База вернула такую ошибку: \n" "\n" "'%s'" #: src/import.c:666 src/import.c:852 msgid "PKCS#8 crypted private key" msgstr "Зашифрованный закрытый ключ PKCS#8" #: src/import.c:677 src/import.c:862 msgid "The given password doesn't match the one used for crypting this part" msgstr "" "Данный пароль не соответствует тому, который был использован для шифрования " "этой части" #: src/import.c:771 msgid "Encrypted PKCS#12 bag" msgstr "Зашифрованный пакет PKCS#12" #: src/import.c:788 msgid "" "The given password doesn't match with the password used for encrypting this " "part." msgstr "" "Данный пароль не соответствует паролю, использованному для шифрования этой " "части." #: src/import.c:999 msgid "Couldn't find any supported format in the given file" msgstr "Не могу найти какой-либо поддерживаемый формат в данному файле" #: src/import.c:1012 src/import.c:1363 #, c-format msgid "Couldn't open %s file. Check permissions." msgstr "Не могу открыть файл %s. Проверьте права." #: src/import.c:1039 #, c-format msgid "Couldn't recognize the file %s as a RSA or DSA private key." msgstr "Не могу распознать файл %s как RSA или DSA закрытый ключ." #: src/import.c:1055 #, c-format msgid "Private key for %s" msgstr "Закрытый ключ для %s" #: src/import.c:1057 #, c-format msgid "Private key %s" msgstr "Закрытый ключ %s" #: src/import.c:1092 msgid "Problem while calling to openssl for decyphering private key." msgstr "Проблема при вызове openssl для дешифрования закрытого ключа." #: src/import.c:1100 #, c-format msgid "" "OpenSSL has returned the following error while trying to decypher the " "private key:\n" "\n" "%s" msgstr "" "OpenSSL вернул следующую ошибку при попытке дешифирования закрытого ключа:\n" "\n" "%s" #: src/import.c:1211 msgid "There was a problem while importing the public CA root certificate" msgstr "Произошла ошибка при импорте открытого корневого сертификата CA" #: src/import.c:1225 msgid "CA Root certificate" msgstr "Корневой сертификат CA" #: src/import.c:1227 msgid "" "There was a problem while importing the private key corresponding to CA root " "certificate" msgstr "" "Произошла ошибка при импорте закрытого ключа, соответствующего корневому " "сертификату CA" #: src/import.c:1237 msgid "There was a problem while opening the directory certs/." msgstr "Произошла ошибка при открытии каталога сертификатов/." #: src/import.c:1261 msgid "There was a problem while opening the directory newcerts/." msgstr "Произошла ошибка при открытии каталога newcerts/." #: src/import.c:1288 msgid "There was a problem while opening the directory req." msgstr "Произошла ошибка при открытии каталога req." #: src/import.c:1314 msgid "There was a problem while opening the directory crl/." msgstr "Произошла ошибка при открытии каталога crl/." #: src/import.c:1336 msgid "There was a problem while opening the directory keys/." msgstr "Произошла ошибка при открытии каталога keys/." #: src/import.c:1394 msgid "Files in the directory don't belong to any supported CA format." msgstr "" "Файлы в каталоге не принадлежат какому-либо поддерживаемому формату CA." #: src/main.c:567 #, c-format msgid "" "Problem when creating '%s' CA database:\n" "%s" msgstr "" "Проблема при создании базы CA '%s':\n" "%s" #: src/main.c:577 #, c-format msgid "Problem when opening new '%s' CA database" msgstr "Проблема при открытии новой '%s' базы CA" #: src/main.c:591 msgid "Create new CA database" msgstr "Создать новую базу CA" #: src/main.c:616 #, c-format msgid "Problem when opening '%s' CA database" msgstr "Проблема при открытии базы CA '%s'" #: src/main.c:630 msgid "Open CA database" msgstr "Открыть базу CA" #: src/main.c:662 msgid "Save CA database as..." msgstr "Сохранить базу CA как..." #: src/main.c:722 msgid "" "gnoMint is a program for creating and managing Certification Authorities, " "and their certificates" msgstr "" "gnoMint это программа для создания и управления Центром Сертификации и его " "сертификатами" #: src/main.c:725 #, fuzzy msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU General Public License as published by the Free " "Software Foundation; either version 3 of the License, or (at your option) " "any later version.\n" "\n" "This program is distributed in the hope that it will be useful, but WITHOUT " "ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or " "FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for " "more details.\n" "\n" "You should have received a copy of the GNU General Public License along with " "this program; if not, write to the Free Software Foundation, Inc., 51 " "Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA." msgstr "" "Данная программа является свободным программным обеспечением. Вы вправе " "распространять ее и/или модифицировать в соответствии с условиями версии 3 " "либо по вашему выбору с условиями более поздней версии Стандартной " "Общественной Лицензии GNU, опубликованной Free Software Foundation.\n" "\n" "Мы распространяем данную программу в надежде на то, что она будет вам " "полезной, однако НЕ ПРЕДОСТАВЛЯЕМ НА НЕЕ НИКАКИХ ГАРАНТИЙ, в том числе " "ГАРАНТИИ ТОВАРНОГО СОСТОЯНИЯ ПРИ ПРОДАЖЕ и ПРИГОДНОСТИ ДЛЯ ИСПОЛЬЗОВАНИЯ В " "КОНКРЕТНЫХ ЦЕЛЯХ. Для получения более подробной информации ознакомьтесь со " "Стандартной Общественной Лицензией GNU.\n" "\n" "Вместе с данной программой вы должны были получить экземпляр Стандартной " "Общественной Лицензии GNU. Если вы его не получили, сообщите об этом в Free " "Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA " "02111-1307, USA." #: src/main.c:741 msgid "Code collaborators" msgstr "" #: src/new_ca_window.c:191 src/new_req_window.c:222 msgid "ECDSA curve:" msgstr "" #: src/new_ca_window.c:219 msgid "Please enter a Common Name (CN) for the CA." msgstr "" #: src/new_cert.c:197 msgid "" "The policy of this CA obligue the country field of the certificates to be " "the same as the one in the CA cert." msgstr "" "Политика данного CA требует, чтобы поле страны сертификата было таким же как " "в сертификате CA." #: src/new_cert.c:203 msgid "" "The policy of this CA obligue the state/province field of the certificates " "to be the same as the one in the CA cert." msgstr "" "Политика данного CA требует, чтобы поле области сертификата было таким же " "как в сертификате CA." #: src/new_cert.c:209 msgid "" "The policy of this CA obligue the locality/city field of the certificates to " "be the same as the one in the CA cert." msgstr "" "Политика данного CA требует, чтобы поле района/города сертификата было таким " "же как в сертификате CA." #: src/new_cert.c:215 msgid "" "The policy of this CA obligue the organization field of the certificates to " "be the same as the one in the CA cert." msgstr "" "Политика данного CA требует, чтобы поле организация сертификата было таким " "же как в сертификате CA." #: src/new_cert.c:221 msgid "" "The policy of this CA obligue the organizational unit field of the " "certificates to be the same as the one in the CA cert." msgstr "" "Политика данного CA требует, чтобы поле организационная единица сертификата " "было таким же как в сертификате CA." #: src/new_cert.c:659 msgid "" "The expiration date of the new certificate is after the expiration date of " "the CA certificate.\n" "\n" "According to the current standards, this is not allowed. The new certificate " "will be created with the same expiration date as the CA certificate." msgstr "" "Срок истечения нового сертификата превышает срок истечения CA сертификата.\n" "В соответствии с текущими стандартами, это не допускается. Новый сертификат " "будет создан с тем же сроком истечения, что и CA сертификат." #: src/new_cert.c:734 msgid "" "This system uses a 32-bit time_t and cannot represent dates after " "2038-01-19. The new certificate's expiration date has been clamped to that " "limit. To issue longer-lived certificates, run gnoMint on a 64-bit platform." msgstr "" #: src/new_cert.c:770 src/new_cert.c:809 src/new_cert.c:838 msgid "Error while signing CSR." msgstr "Ошибка при подписи CSR." #: src/new_req_window.c:374 #, fuzzy msgid "Please enter a Common Name (CN) for the certificate request." msgstr "Центр сертификации" #: src/pkey_manage.c:124 #, c-format msgid "" "The file that holds private key for certificate '%s' is password-protected.\n" "\n" "Please, insert the password corresponding to this file." msgstr "" "Файл, содержащий закрытый ключ сертификата '%s' защищён паролем.\n" "\n" "Пожалуйста, введите пароль, соответствующий этому файлу." #: src/pkey_manage.c:163 #, c-format msgid "" "The file that holds private key for certificate\n" "'%s' is password-protected.\n" "\n" msgstr "" "Файл, содержащий закрытый ключ для сертификата\n" "'%s' защищён паролем.\n" "\n" #: src/pkey_manage.c:211 src/pkey_manage.c:303 msgid "" "The given password doesn't match with the one used while crypting the file." msgstr "" "Данный пароль не совпадает с тем, который был использован при шифровании " "файла." #: src/pkey_manage.c:226 src/pkey_manage.c:315 src/pkey_manage.c:476 msgid "" "The file designated in database contains a private key, but it is not the " "private key corresponding to the certificate." msgstr "" "Выделенный файл в базе содержит закрытый ключ, но это не закрытый ключ " "соответствующий сертификату." #: src/pkey_manage.c:229 src/pkey_manage.c:318 src/pkey_manage.c:479 msgid "" "The file designated in database doesn't contain any recognized private key." msgstr "" "Выделенный файл в базе не содержит какой-либо распознанный закрытый ключ." #: src/pkey_manage.c:233 src/pkey_manage.c:500 msgid "The file designated in database couldn't be opened." msgstr "Назначенный файл в базе не может быть открыт." #: src/pkey_manage.c:236 src/pkey_manage.c:503 msgid "The file designated in database doesn't exist." msgstr "Назначенный файл в базе не существует." #: src/pkey_manage.c:360 #, fuzzy msgid "Select private key file" msgstr "Выбор закрытого ключа. gnoMint" #: src/pkey_manage.c:1069 src/pkey_manage.c:1164 msgid "The given password doesn't match the one used in the database" msgstr "Данный пароль не совпадает с тем, который был использован в базе." #: src/pkey_manage.c:1151 #, c-format msgid "" "This action requires using one or more private keys saved in the database.\n" msgstr "" "Это действие требует использование одного или более закрытых ключей, " "сохранённых в базе.\n" #: src/pkey_manage.c:1152 msgid "Please insert the database password:" msgstr "Пожалуйста введите пароль базы:" #: src/san_manager.c:71 msgid "Value cannot be empty" msgstr "" #: src/san_manager.c:82 msgid "Invalid DNS name. Use format: example.com or *.example.com" msgstr "" #: src/san_manager.c:93 msgid "Invalid IP address. Use IPv4 (e.g., 192.168.1.1) or IPv6 format" msgstr "" #: src/san_manager.c:103 msgid "Invalid email address. Use format: user@example.com" msgstr "" #: src/san_manager.c:113 msgid "Invalid URI. Must start with http://, https://, ftp://, or ldap://" msgstr "" #: src/san_manager.c:389 #, fuzzy msgid "Type" msgstr "\tТип: %s\n" #: src/tls.c:198 src/tls.c:231 src/tls.c:276 src/tls.c:307 #, c-format msgid "Error initializing private key structure." msgstr "Ошибка при инициализации структуры закрытого ключа." #: src/tls.c:204 src/tls.c:237 src/tls.c:281 src/tls.c:311 #, c-format msgid "Error creating private key: %d" msgstr "Ошибка при создании закрытого ключа: %d" #: src/tls.c:215 src/tls.c:248 src/tls.c:289 src/tls.c:321 src/tls.c:794 #: src/tls.c:1204 #, c-format msgid "Error exporting private key to PEM structure." msgstr "Ошибка при экспорте закрытого ключа в PEM структуру." #: src/tls.c:656 #, c-format msgid "Error when initializing certificate structure" msgstr "Ошибка при инициализации структуры сертификата" #: src/tls.c:662 src/tls.c:956 #, c-format msgid "Error when setting certificate version" msgstr "Ошибка при установке версии сертификата" #: src/tls.c:672 src/tls.c:969 #, c-format msgid "Error when setting certificate serial number" msgstr "Ошибка при задании серийного номера сертификата" #: src/tls.c:681 src/tls.c:978 #, c-format msgid "Error when setting activation time" msgstr "Ошибка при установке времени активации" #: src/tls.c:686 src/tls.c:986 #, c-format msgid "Error when setting expiration time" msgstr "Ошибка при задании времени истечения срока" #: src/tls.c:740 src/tls.c:1040 #, c-format msgid "Error when setting basicConstraint extension" msgstr "Ошибка при установке расширения основных ограничений" #: src/tls.c:745 src/tls.c:1082 #, c-format msgid "Error when setting keyUsage extension" msgstr "Ошибка при установке расширения использования ключей" #: src/tls.c:756 src/tls.c:864 src/tls.c:1120 #, fuzzy, c-format msgid "Error when setting Subject Alternative Name extension" msgstr "Ошибка при установке расширения заголовка идентификатора ключа" #: src/tls.c:768 src/tls.c:1056 #, c-format msgid "Error when setting subject key identifier extension" msgstr "Ошибка при установке расширения заголовка идентификатора ключа" #: src/tls.c:772 src/tls.c:1030 #, c-format msgid "Error when setting authority key identifier extension" msgstr "Ошибка при установке расширения идентификатора центра ключа" #: src/tls.c:782 #, c-format msgid "Error when signing self-signed certificate" msgstr "ошибка при подписи самоподписанного сертификата" #: src/tls.c:813 #, fuzzy, c-format msgid "Error when initializing privkey structure" msgstr "ошибка при инициализации csr структуры" #: src/tls.c:817 #, fuzzy, c-format msgid "Error when importing private key into privkey structure" msgstr "Ошибка при экспорте закрытого ключа в PEM структуру." #: src/tls.c:821 #, c-format msgid "Error when initializing csr structure" msgstr "ошибка при инициализации csr структуры" #: src/tls.c:825 #, c-format msgid "Error when setting csr version" msgstr "Ошибка при установке версии csr" #: src/tls.c:869 #, c-format msgid "Error when signing self-signed csr" msgstr "Ошибка при подписи самоподписанного csr" #: src/tls.c:880 #, c-format msgid "Error exporting CSR to PEM structure." msgstr "Ошибка при экспорте CSR в PEM структуру." #: src/tls.c:933 #, fuzzy, c-format msgid "Error when importing CA private key" msgstr "Ошибка при экспорте закрытого ключа в PEM структуру." #: src/tls.c:940 #, c-format msgid "Error when initializing crt structure" msgstr "Ошибка при инициализации crt структуры" #: src/tls.c:948 #, c-format msgid "Error when copying data from CSR to certificate structure" msgstr "Ошибка при копировании данных из CSR в структуру сертификата" #: src/tls.c:1182 #, fuzzy, c-format msgid "Error when signing certificate: %s" msgstr "Ошибка при подписи сертификата" #: src/tls.c:1482 msgid "Key encipher only" msgstr "Только для ключа шифрования" #: src/tls.c:1484 msgid "Key decipher only" msgstr "Только для ключа дешифрования" #: src/tls.c:1496 msgid "TLS WWW Client." msgstr "TLS WWW Клиент." #: src/wizard_window.c:239 #, fuzzy, c-format msgid "" "Key generation failed:\n" "%s" msgstr "Создание ключей не удалось" #: src/wizard_window.c:249 #, fuzzy, c-format msgid "" "CSR generation failed:\n" "%s" msgstr "Оздание CSR не удалось" #: src/wizard_window.c:260 msgid "Failed to parse generated CSR." msgstr "" #: src/wizard_window.c:271 #, fuzzy, c-format msgid "" "Failed to save CSR:\n" "%s" msgstr "Не удалось инициализировать: %s\n" #: src/wizard_window.c:294 #, fuzzy, c-format msgid "" "Failed to sign certificate:\n" "%s" msgstr "Не удалось инициализировать: %s\n" #: src/wizard_window.c:297 #, fuzzy msgid "Certificate generated successfully!" msgstr "Сертификат успешно экспортирован" #: src/wizard_window.c:311 #, fuzzy msgid "Please enter a server name." msgstr "Пожалуйста, введите пароль" #: src/wizard_window.c:318 #, fuzzy msgid "Please select a Certificate Authority." msgstr "Центр сертификации" #: src/wizard_window.c:325 #, fuzzy msgid "Invalid Certificate Authority selected." msgstr "* Использование Центра Сертификации включено.\n" #: src/wizard_window.c:412 #, fuzzy msgid "No Certificate Authority found. Please create a CA first." msgstr "* Использование Центра Сертификации включено.\n" #~ msgid "%m/%d/%Y %R GMT" #~ msgstr "%m/%d/%Y %R GMT" #, c-format #~ msgid "%s version %s\n" #~ msgstr "%s версия %s\n" #, c-format #~ msgid "CertList ID|%s\t" #~ msgstr "CertList ID|%s\t" #~ msgid "CertList IsCA|Y\t" #~ msgstr "CertList является CA|Y\t" #~ msgid "CertList IsCA|N\t" #~ msgstr "CertList является CA|N\t" #, c-format #~ msgid "CertList Subject|%s\t" #~ msgstr "CertList Заголовок|%s\t" #~ msgid "CertList PadIfSubject<16|\t" #~ msgstr "CertList ДополнятьЕслиЗаголовок<16|\t" #~ msgid "CertList PadIfSubject<8|\t" #~ msgstr "CertList ДополнятьЕслиЗаголовок<8|\t" #~ msgid "CertList PKeyInDB|Y\t\t" #~ msgstr "CertList PKeyInDB|Y\t\t" #~ msgid "CertList PKeyInDB|N\t\t" #~ msgstr "CertList PKeyInDB|N\t\t" #~ msgid "CertList Activation|\t" #~ msgstr "CertList Активация|\t" #, c-format #~ msgid "CertList Activation|%s\t" #~ msgstr "CertList Активация|%s\t" #~ msgid "CertList Expiration|\t" #~ msgstr "CertList Истечение срока|\t" #, c-format #~ msgid "CertList Expiration|%s\t" #~ msgstr "CertList Истечение срока|%s\t" #~ msgid "CertList Revocation|\n" #~ msgstr "CertList Отзыв|\n" #, c-format #~ msgid "CertList Revocation|%s\n" #~ msgstr "CertList Отзыв|%s\n" #, c-format #~ msgid "CsrList ID|%s\t" #~ msgstr "CsrList ID|%s\t" #, c-format #~ msgid "CsrList ParentID|%s\t" #~ msgstr "CsrList ID предка|%s\t" #~ msgid "CsrList ParentID|\t" #~ msgstr "CsrList ID предка|\t" #, c-format #~ msgid "CsrList Subject|%-24s\t" #~ msgstr "CsrList Заголовок|%-24s\t" #~ msgid "CsrList PadIfSubject<16|\t" #~ msgstr "CsrList ДополнятьЕслиЗаголовок<16|\t" #~ msgid "CsrList PadIfSubject<8|\t" #~ msgstr "CsrList ДополнятьЕслиЗаголовок<8|\t" #~ msgid "CsrList PKeyInDB|Y\n" #~ msgstr "CsrList PKeyInDB|Y\n" #~ msgid "CsrList PKeyInDB|N\n" #~ msgstr "CsrList PKeyInDB|N\n" #~ msgid "List of affirmative answers, separated with #|Yes#yes#Y#y" #~ msgstr "Список утвердительных ответов, разделённых #|Yes#yes#Y#y" #~ msgid "List of negative answers, separated with #|No#no#N#n" #~ msgstr "Список отрицательных ответов, разделённых #|No#no#N#n" #~ msgid "Certificates" #~ msgstr "Сертификат" #~ msgid "Certificate Signing Requests" #~ msgstr "Запрос на Подпись Сертификата" #~ msgid "- A graphical Certification Authority manager" #~ msgstr "- графический менеджер Центра Авторизации" #~ msgid "Shows the certificate properties window" #~ msgstr "Показывать окно свойств сертификата" #~ msgid "" #~ "Exports the certificate so it can be imported by any other application" #~ msgstr "" #~ "Экспорт сертификата, так он может быть импортирован в любые другие " #~ "приложения" #~ msgid "" #~ "Extracts the private key of the selected \n" #~ "certificate from the database to an \n" #~ "external file. This file must be provided \n" #~ "each time the certificate will be used" #~ msgstr "" #~ "Извлечение закрытого ключа выбранного \n" #~ "сертификата из базы во \n" #~ "внешний файл. Этот файл должен быть предоставлен \n" #~ "каждый раз, когда сертификат будет использован" #~ msgid "Shows the CSR properties window" #~ msgstr "Показывать окно свойств CSR" #~ msgid "Exports the CSR so it can be imported by any other application" #~ msgstr "" #~ "Экспорт CSR, так он может быть импортирован в любые другие приложениях" #~ msgid "" #~ "Extracts the private key of the selected \n" #~ "certificate from the database to an \n" #~ "external file. This file must be provided \n" #~ "each time the CSR will be used" #~ msgstr "" #~ "Извлечение закрытого ключа выбранного \n" #~ "сертификата из базы во \n" #~ "внешний файл. Этот файл должен быть предоставлен\n" #~ "каждый раз, когда CSR будет использован" #~ msgid "Extract the saved private key to an external file or device" #~ msgstr "" #~ "Извлечение сохранённого закрытого ключа во внешний файл или устройство" #, fuzzy #~ msgid "Generate the current Certificate Revocation List" #~ msgstr "Экспорт списка отозванных сертификатов" #, fuzzy #~ msgid "<b>Fingerprints</b>" #~ msgstr "Отпечаток" #, fuzzy #~ msgid "<b>Certificate subject</b>" #~ msgstr "Заголовок сертификата" #, fuzzy #~ msgid "<b>Certificate hierarchy</b>" #~ msgstr "Иерархия сертификата" #, fuzzy #~ msgid "<b>Certificate fields</b>" #~ msgstr "Поля сертификата" #, fuzzy #~ msgid "" #~ "<b>This Certificate Signing Request has its corresponding private " #~ "key saved in the internal database.</b>" #~ msgstr "" #~ "Это запрос на подпись сертификата имеет свой соответствующий закрытый " #~ "ключ, сохранённый во внутренней базе" #, fuzzy #~ msgid "<b>Subject Alternative Names (SAN)</b>" #~ msgstr "Заголовок Альтернативное Имя" #, fuzzy #~ msgid "<big>CA properties</big>" #~ msgstr "Свойства CA\n" #, fuzzy #~ msgid "<b>Certificate uses</b>" #~ msgstr "Сертификат использует" #, fuzzy #~ msgid "<b>Certificate purposes</b>" #~ msgstr "Назначение сертификата" #, fuzzy #~ msgid "" #~ "<big><b>New Certificate Revocation List</b></big>" #~ msgstr "Новый список отозванных сертификатов" #~ msgid "Password protection\n" #~ msgstr "Защита паролем\n" #~ msgid "Enter password again for confirmation:" #~ msgstr "Введите пароль снова для подтверждения:" #~ msgid "" #~ "Protect CA database private keys\n" #~ "with password:" #~ msgstr "" #~ "Защитить базу CA закрытых ключей\n" #~ "паролем:" #~ msgid "gtk-ok" #~ msgstr "ОК" #, c-format #~ msgid "" #~ "The certificate will be generated with the following uses and purposes:\n" #~ msgstr "" #~ "Сертификат будет сгенерирован для следующего использования и назначения:\n" gnomint-1.6.4/po/ChangeLog0000644000000000000000000000406215212761266014135 0ustar00rootroot2006-09-14 davefx * TODO, gui/gnomint.glade, POTFILES.in, es.po, gnomint.pot, src/ca.c, src/ca.h, src/ca_file.c, src/ca_file.h, src/new_cert_window.c, src/tls.c: Uploading first functional version 0.1-rc1. Now let's fix bugs 2006-09-13 davefx * TODO, es.po, gnomint.pot: Updating translations 2006-09-11 davefx * TODO, configure.in, gui/gnomint.glade, POTFILES.in, es.po, src/Makefile.am, src/ca.c, src/ca_file.c, src/certificate_properties.c, src/certificate_properties.h, src/main.c, src/new_cert_creation_process.c, src/tls.c, src/tls.h: Adding TODO. Completing certificate-properties window 2006-05-30 davefx * configure.in, gui/gnomint.glade, es.po, gnomint.pot, src/Makefile.am, src/main.c: Adding new window for create certificates 2006-05-29 davefx * gui/gnomint.glade, POTFILES.in, es.po, gnomint.pot, src/ca.c: Updating treeview. Now showing correct dates 2006-05-20 davefx * gui/gnomint.glade, POTFILES.in, es.po, src/Makefile.am, src/ca_creation.c, src/ca_creation.h, src/ca_file.c, src/ca_file.h, src/main.c, src/new_ca_creation_process.c, src/new_ca_window.c, src/ssl.c, src/ssl.h: Updating last changes 2006-05-03 davefx * configure.in, es.po, gnomint.pot, src/Makefile.am, src/ca_creation.c, src/new_ca_creation_process.c: Subiendo cambios 2006-05-02 davefx * configure.in, gui/gnomint.glade, POTFILES.in, es.po, gnomint.pot, src/Makefile.am, src/ca_creation.c, src/ca_creation.h, src/main.c, src/new_ca_creation_process.c, src/new_ca_creation_process.h, src/new_ca_window.c, src/new_ca_window.h, src/ssl.c, src/ssl.h: Subiendo cambios 2006-05-01 davefx * es.po: *** empty log message *** * es.po: *** empty log message *** * Makefile.am, configure.in, gui/gnomint.glade, POTFILES.in, src/Makefile.am, src/main.c, src/new_ca_window.c, src/new_ca_window.h: Subiendo avances 2006-04-29 davefx * gui/gnomint.glade, es.po, gnomint.pot: Actualizando * POTFILES.in, gnomint.pot: Añadiendo gnomint.pot * Makefile.am, configure.in, POTFILES.in: Subiendo cambios * gui, ., src/gui: gnomint-1.6.4/po/oc.gmo0000644000000000000000000000454315212761320013463 0ustar00rootroot*l;   9& `m ~    !%+19RX_r  "'+05FLUY a k v:   !)2#Cg nx  5 W  $%)# "!  &( * ' Error. ActivationCACNCAOCAOUCityCommon Name (CN)CountryCountry:DSADetailsE_xportExpirationExpires onGeneralManage X.509 certificates and CAs, easily and graphicallyOrganizationOrganization (O)Organization:Organizational Unit (OU)Password:RevocationRevokeSerialSerial numberShow version informationSignSubjectUnexpected error_Edit_Help_Import_No_Sign_ViewgnoMintgnoMint X.509 CA Managerlabelpage 3translator-creditsProject-Id-Version: gnomint Report-Msgid-Bugs-To: davefx@gmail.com PO-Revision-Date: 2010-05-16 15:17+0000 Last-Translator: Cédric VALMARY (Tot en òc) Language-Team: Occitan (post 1500) Language: oc MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2010-08-11 09:00+0000 X-Generator: Launchpad (build Unknown) Error. ActivacionCACNCAOCAOUVilaNom corrent (CN)PaísPaís :DSADetalhsE_xportarExpiracionExpira loGeneralGerir aisidament e graficament de certificats X.509 e d'ACOrganizacionOrganizacion (O)Organizacion :Unitat d'organizacion (OU)Senhal :RevocacionRevocarPeriodicNumèro de seriaAfichar las informacions de versionSignarSubjècteError inesperada_Edicion_Ajuda_Importar_Non_Signar_AfichatgegnoMintGestionari d'Autoritat de Certificacion X.509 gnoMintetiquetapagina 3Launchpad Contributions: Cédric VALMARY (Tot en òc) https://launchpad.net/~cvalmarygnomint-1.6.4/po/sk.po0000644000000000000000000031775515212761320013347 0ustar00rootroot# Slovak translation for gnomint # Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 # This file is distributed under the same license as the gnomint package. # FIRST AUTHOR , 2010. # msgid "" msgstr "" "Project-Id-Version: gnomint\n" "Report-Msgid-Bugs-To: davefx@gmail.com\n" "POT-Creation-Date: 2026-06-12 10:43+0000\n" "PO-Revision-Date: 2010-04-02 04:51+0000\n" "Last-Translator: David Marín \n" "Language-Team: Slovak \n" "Language: sk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-08-11 09:00+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: gconf/org.gnome.gnomint.gschema.xml:7 msgid "Window size" msgstr "Veľkosť okna" #: gconf/org.gnome.gnomint.gschema.xml:8 #, fuzzy msgid "" "The (width,length) size gnoMint should take when started. This cannot be " "smaller than (320,200)." msgstr "" "Veľkosť (šírka,výška) okna gnoMint po spustení. Nemôže byť menšia než " "(320,200)." #: gconf/org.gnome.gnomint.gschema.xml:16 #, fuzzy msgid "Revoked certificates visibility" msgstr "Viditeľnosť zrušených certifikátov" #: gconf/org.gnome.gnomint.gschema.xml:17 msgid "Whether the revoked certificates should be visible." msgstr "Či majú byť zrušené certifikáty viditeľné." #: gconf/org.gnome.gnomint.gschema.xml:24 #, fuzzy msgid "Expired certificates visibility" msgstr "Viditeľnosť zrušených certifikátov" #: gconf/org.gnome.gnomint.gschema.xml:25 msgid "" "Whether already-expired certificates should be visible in the certificates " "tree. CAs are always visible regardless of this setting so that any still-" "valid certificates they signed remain reachable." msgstr "" #: gconf/org.gnome.gnomint.gschema.xml:35 msgid "Days before expiration to highlight certificates in amber" msgstr "" #: gconf/org.gnome.gnomint.gschema.xml:36 msgid "" "Certificates whose effective validity ends within this many days are shown " "in amber in the certificates tree, as a heads-up that they should be renewed " "soon. Setting this to 0 disables the amber highlight (certificates appear " "either normally or in gray for already-expired)." msgstr "" #: gconf/org.gnome.gnomint.gschema.xml:47 #, fuzzy msgid "Certificate requests visibility" msgstr "Viditeľnosť žiadostí o certifikát" #: gconf/org.gnome.gnomint.gschema.xml:48 msgid "Whether the certificate requests should be visible." msgstr "Či majú byť žiadosti o certifikát viditeľné." #: gconf/org.gnome.gnomint.gschema.xml:55 msgid "Automatic exporting of certificates for gnome-keyring" msgstr "Automatický export certifikátov pre gnome-keyring" #: gconf/org.gnome.gnomint.gschema.xml:56 #, fuzzy msgid "" "Whether the created or imported certificates are automatically exported to " "gnome-keyring certificate-store." msgstr "" "Či sú vytvorené alebo importované certifikáty automaticky exportované do " "úložiska gnome-keyring." #: gui/certificate_popup_menu.ui:7 gui/csr_popup_menu.ui:7 #: gui/main_window.ui:45 #, fuzzy msgid "Properties" msgstr "Vlastnosti CA" #: gui/certificate_popup_menu.ui:13 gui/main_window.ui:35 #, fuzzy msgid "Export full c_hain..." msgstr "Vlastnosti žiadosti o vydanie certifikátu - gnoMint" #: gui/certificate_popup_menu.ui:17 gui/csr_popup_menu.ui:13 #: gui/main_window.ui:34 msgid "E_xport" msgstr "" #: gui/certificate_popup_menu.ui:21 gui/csr_popup_menu.ui:17 #: gui/main_window.ui:23 msgid "Extrac_t private key" msgstr "" #: gui/certificate_popup_menu.ui:27 gui/main_window.ui:24 msgid "Re_new with fresh key" msgstr "" #: gui/certificate_popup_menu.ui:31 msgid "_Compare with PEM file…" msgstr "" #: gui/certificate_popup_menu.ui:35 gui/main_window.ui:25 msgid "Revo_ke" msgstr "" #: gui/certificate_popup_menu.ui:41 gui/main_window.ui:21 #, fuzzy msgid "Add _Web Server Certificate (wizard)" msgstr "Pridať _žiadosť o vydanie certifikátu" #: gui/certificate_popup_menu.ui:45 gui/main_window.ui:22 #, fuzzy msgid "Add _Email Server Certificate (wizard)" msgstr "Pridať _žiadosť o vydanie certifikátu" #: gui/certificate_properties_dialog.ui:19 #, fuzzy msgid "Certificate properties - gnoMint" msgstr "Vlastnosti žiadosti o vydanie certifikátu - gnoMint" #: gui/certificate_properties_dialog.ui:54 #, fuzzy msgid "This certificate has been verified for the following uses:" msgstr "Tento certifikát bol overený pre nasledujúce použitia:" #: gui/certificate_properties_dialog.ui:77 msgid "MD5FINGERPRINT" msgstr "" #: gui/certificate_properties_dialog.ui:88 msgid "SHA1FINGERPRINT" msgstr "" #: gui/certificate_properties_dialog.ui:99 #: gui/certificate_properties_dialog.ui:132 #: gui/certificate_properties_dialog.ui:176 #: gui/certificate_properties_dialog.ui:231 gui/creation_process_window.ui:15 #: gui/creation_process_window.ui:61 gui/csr_properties_dialog.ui:109 #: gui/new_ca_window.ui:56 gui/new_ca_window.ui:306 gui/new_ca_window.ui:521 #: gui/new_req_window.ui:46 gui/new_req_window.ui:157 gui/new_req_window.ui:413 msgid " " msgstr " " #: gui/certificate_properties_dialog.ui:110 #, fuzzy msgid "CertExpirationDate" msgstr "Aktivované" #: gui/certificate_properties_dialog.ui:121 #, fuzzy msgid "CertActivationDate" msgstr "Aktivované" #: gui/certificate_properties_dialog.ui:143 msgid "CAOU" msgstr "CAOU" #: gui/certificate_properties_dialog.ui:154 msgid "CAO" msgstr "CAO" #: gui/certificate_properties_dialog.ui:165 msgid "CACN" msgstr "CACN" #: gui/certificate_properties_dialog.ui:187 msgid "CertSN" msgstr "" #: gui/certificate_properties_dialog.ui:198 gui/csr_properties_dialog.ui:63 msgid "SubjectOU" msgstr "" #: gui/certificate_properties_dialog.ui:209 gui/csr_properties_dialog.ui:87 msgid "SubjectO" msgstr "" #: gui/certificate_properties_dialog.ui:220 gui/csr_properties_dialog.ui:98 msgid "SubjectCN" msgstr "" #: gui/certificate_properties_dialog.ui:242 msgid "MD5 fingerprint" msgstr "" #: gui/certificate_properties_dialog.ui:253 msgid "SHA1 fingerprint" msgstr "" #: gui/certificate_properties_dialog.ui:264 #, fuzzy msgid "Fingerprints" msgstr "Odtlačky prstov" #: gui/certificate_properties_dialog.ui:276 msgid "Expires on" msgstr "" #: gui/certificate_properties_dialog.ui:287 msgid "Activated on" msgstr "Aktivované" #: gui/certificate_properties_dialog.ui:298 msgid "Validity" msgstr "Platnosť" #: gui/certificate_properties_dialog.ui:310 #: gui/certificate_properties_dialog.ui:389 gui/csr_properties_dialog.ui:120 msgid "Organizational Unit (OU)" msgstr "" #: gui/certificate_properties_dialog.ui:321 #: gui/certificate_properties_dialog.ui:400 gui/csr_properties_dialog.ui:142 msgid "Organization (O)" msgstr "" #: gui/certificate_properties_dialog.ui:332 #: gui/certificate_properties_dialog.ui:411 gui/csr_properties_dialog.ui:153 #, fuzzy msgid "Common Name (CN)" msgstr "" "Bežné meno (CN) \n" "z certifikátu Koreňovej CA:" #: gui/certificate_properties_dialog.ui:343 msgid "Emmited by" msgstr "Vydaný" #: gui/certificate_properties_dialog.ui:355 msgid "Subject Alternative Names" msgstr "" #: gui/certificate_properties_dialog.ui:378 msgid "Serial number" msgstr "" #: gui/certificate_properties_dialog.ui:422 #, fuzzy msgid "Certificate subject" msgstr "Subjekt zo žiadosti o vydanie certifikátu" #: gui/certificate_properties_dialog.ui:434 msgid "SHA256FINGERPRINT" msgstr "" #: gui/certificate_properties_dialog.ui:449 msgid "SHA256 fingerprint" msgstr "" #: gui/certificate_properties_dialog.ui:460 msgid "SHA512FINGERPRINT" msgstr "" #: gui/certificate_properties_dialog.ui:475 msgid "SHA512 fingerprint" msgstr "" #: gui/certificate_properties_dialog.ui:486 #: gui/certificate_properties_dialog.ui:509 gui/csr_properties_dialog.ui:176 msgid "Email address" msgstr "" #: gui/certificate_properties_dialog.ui:536 gui/csr_properties_dialog.ui:203 msgid "General" msgstr "" #: gui/certificate_properties_dialog.ui:557 #, fuzzy msgid "Certificate hierarchy" msgstr "Hierarchia certifikátov" #: gui/certificate_properties_dialog.ui:582 #, fuzzy msgid "Certificate fields" msgstr "Polia certifikátu" #: gui/certificate_properties_dialog.ui:605 msgid "Details" msgstr "" #: gui/certificate_properties_dialog.ui:623 #, fuzzy msgid "" "\n" "It is recommended that all the certificates generated by a CA\n" "share the same properties.\n" "If you want to generate certificates with different properties, you\n" "should create a hierarchy of CAs, each one with its own policy for\n" "certificate generation.\n" "\n" "Please, define the maximum set of properties for the\n" "certificates that this CA will be able to generate:\n" msgstr "" "\n" "Odporúča sa, aby všetky certifikáty generované jednou CA mali rovnaké " "vlastnosti.\n" "Ak chcete generovať certifikáty s rôznymi vlastnosťami, mali by ste vytvoriť " "hierarchiu CA, každú s vlastnou politikou pre vydávanie certifikátov.\n" "\n" "Prosím definujte maximálnu množinu vlastností pre certifikáty, ktoré bude " "môcť táto CA generovať:\n" #: gui/certificate_properties_dialog.ui:649 msgid "" "Maximum number of months before\n" "expiration of the new generated certificates:" msgstr "" #: gui/certificate_properties_dialog.ui:686 msgid "Hours between CRL updates:" msgstr "" #: gui/certificate_properties_dialog.ui:711 msgid "CRL distribution URL:" msgstr "" #: gui/certificate_properties_dialog.ui:727 #, fuzzy msgid "CRL Properties" msgstr "Vlastnosti CA" #: gui/certificate_properties_dialog.ui:750 msgid "Country" msgstr "" #: gui/certificate_properties_dialog.ui:761 msgid "State or Province name" msgstr "" #: gui/certificate_properties_dialog.ui:778 #: gui/certificate_properties_dialog.ui:802 #: gui/certificate_properties_dialog.ui:859 #: gui/certificate_properties_dialog.ui:883 #: gui/certificate_properties_dialog.ui:907 msgid "must be the same" msgstr "" #: gui/certificate_properties_dialog.ui:786 #: gui/certificate_properties_dialog.ui:810 #: gui/certificate_properties_dialog.ui:867 #: gui/certificate_properties_dialog.ui:891 #: gui/certificate_properties_dialog.ui:915 msgid "may differ" msgstr "" #: gui/certificate_properties_dialog.ui:820 msgid "City" msgstr "" #: gui/certificate_properties_dialog.ui:831 msgid "Organization" msgstr "" #: gui/certificate_properties_dialog.ui:842 msgid "Organizational unit" msgstr "" #: gui/certificate_properties_dialog.ui:927 #, fuzzy msgid "Inherited fields from CA subject" msgstr "Položky zdedené zo subjektu CA" #: gui/certificate_properties_dialog.ui:952 gui/new_cert_window.ui:464 #: src/tls.c:1463 msgid "Certification Authority" msgstr "" #: gui/certificate_properties_dialog.ui:963 gui/new_cert_window.ui:487 #: src/certificate_properties.c:445 src/tls.c:1470 msgid "Non repudiation" msgstr "" #: gui/certificate_properties_dialog.ui:974 gui/new_cert_window.ui:440 #: src/certificate_properties.c:447 src/tls.c:1472 msgid "Key encipherment" msgstr "" #: gui/certificate_properties_dialog.ui:986 gui/new_cert_window.ui:428 #: src/certificate_properties.c:449 src/tls.c:1474 msgid "Data encipherment" msgstr "" #: gui/certificate_properties_dialog.ui:998 gui/new_cert_window.ui:475 #: src/certificate_properties.c:451 src/tls.c:1476 msgid "Key agreement" msgstr "" #: gui/certificate_properties_dialog.ui:1010 gui/new_cert_window.ui:452 #: src/certificate_properties.c:443 src/tls.c:1468 msgid "Digital signature" msgstr "" #: gui/certificate_properties_dialog.ui:1022 gui/new_cert_window.ui:498 #: src/certificate_properties.c:455 src/tls.c:1480 msgid "CRL signing" msgstr "Vydávanie CRL" #: gui/certificate_properties_dialog.ui:1043 #, fuzzy msgid "Uses of new generated certificates" msgstr "Použitie novo generovaných certifikátov" #: gui/certificate_properties_dialog.ui:1067 gui/new_cert_window.ui:621 #: src/certificate_properties.c:1480 src/tls.c:1500 msgid "Email protection" msgstr "" #: gui/certificate_properties_dialog.ui:1079 gui/new_cert_window.ui:610 #: src/certificate_properties.c:1479 src/tls.c:1498 msgid "Code signing" msgstr "" #: gui/certificate_properties_dialog.ui:1090 gui/new_cert_window.ui:598 msgid "TLS Web client" msgstr "" #: gui/certificate_properties_dialog.ui:1102 gui/new_cert_window.ui:586 msgid "TLS Web server" msgstr "" #: gui/certificate_properties_dialog.ui:1114 gui/new_cert_window.ui:575 #: src/certificate_properties.c:1481 src/tls.c:1502 msgid "Time stamping" msgstr "" #: gui/certificate_properties_dialog.ui:1125 gui/new_cert_window.ui:564 #: src/certificate_properties.c:1483 src/tls.c:1506 msgid "Any purpose" msgstr "Ľubovoľný účel" #: gui/certificate_properties_dialog.ui:1136 gui/new_cert_window.ui:553 #: src/certificate_properties.c:1482 src/tls.c:1504 msgid "OCSP signing" msgstr "" #: gui/certificate_properties_dialog.ui:1159 #, fuzzy msgid "Purposes of new generated certificates" msgstr "Účely novo generovaných certifikátov" #: gui/certificate_properties_dialog.ui:1171 msgid "CA Policy" msgstr "Politika CA" #: gui/certificate_properties_dialog.ui:1189 gui/csr_properties_dialog.ui:221 #: src/ca.c:2199 msgid "_Close" msgstr "" #: gui/change_password_dialog.ui:9 #, fuzzy msgid "Database password protection - gnoMint" msgstr "Vlastnosti žiadosti o vydanie certifikátu - gnoMint" #: gui/change_password_dialog.ui:34 msgid "_Yes" msgstr "" #: gui/change_password_dialog.ui:43 msgid "_No" msgstr "" #: gui/change_password_dialog.ui:53 msgid "" "Enter new password again \n" "for confirmation:" msgstr "" #: gui/change_password_dialog.ui:86 msgid "" "Please, enter new \n" "password:" msgstr "" #: gui/change_password_dialog.ui:98 msgid "" "Please, enter current\n" "password:" msgstr "" #: gui/change_password_dialog.ui:121 msgid "" "Protect CA database private\n" "keys with password:" msgstr "" #: gui/change_password_dialog.ui:143 gui/export_certificate_dialog.ui:149 #: gui/get_db_password_dialog.ui:74 gui/get_pkey_dialog.ui:78 #: gui/import_file_or_directory_dialog.ui:94 gui/import_password_dialog.ui:90 #: gui/new_crl_dialog.ui:53 gui/san_editor_dialog.ui:93 msgid "Cancel" msgstr "" #: gui/change_password_dialog.ui:149 gui/get_db_password_dialog.ui:80 #: gui/get_pkey_dialog.ui:84 gui/import_password_dialog.ui:96 #: gui/new_crl_dialog.ui:59 gui/san_editor_dialog.ui:99 msgid "OK" msgstr "" #: gui/creation_process_window.ui:6 #, fuzzy msgid "Creating new CA - gnoMint" msgstr "Vlastnosti žiadosti o vydanie certifikátu - gnoMint" #: gui/creation_process_window.ui:31 #, fuzzy msgid "Creating CA Root Certificate" msgstr "Pridať self-signed CA" #: gui/creation_process_window.ui:51 gui/get_password_dialog.ui:90 #: gui/new_ca_window.ui:257 gui/new_ca_window.ui:464 gui/new_ca_window.ui:576 #: gui/new_cert_window.ui:257 gui/new_cert_window.ui:339 #: gui/new_cert_window.ui:661 gui/new_req_window.ui:107 #: gui/new_req_window.ui:357 gui/new_req_window.ui:548 gui/wizard_window.ui:117 msgid "_Cancel" msgstr "" #: gui/csr_popup_menu.ui:23 gui/main_window.ui:26 msgid "_Sign" msgstr "" #: gui/csr_popup_menu.ui:27 gui/main_window.ui:27 msgid "Delete" msgstr "" #: gui/csr_properties_dialog.ui:5 msgid "CSR properties - gnoMint" msgstr "Vlastnosti žiadosti o vydanie certifikátu - gnoMint" #: gui/csr_properties_dialog.ui:41 #, fuzzy msgid "" "This Certificate Signing Request has its corresponding private key saved " "in the internal database." msgstr "" "Privátny kľúč prislúchajúci k tejto žiadosti o vydanie certifikátu sa " "nachádza v internej databáze." #: gui/csr_properties_dialog.ui:74 gui/new_cert_window.ui:230 #: src/csr_properties.c:86 src/new_cert.c:105 msgid "None" msgstr "" #: gui/csr_properties_dialog.ui:131 msgid "Subject Alternative Name (SAN)" msgstr "" #: gui/csr_properties_dialog.ui:164 msgid "CSR subject" msgstr "Subjekt zo žiadosti o vydanie certifikátu" #: gui/dh_parameters_dialog.ui:16 #, fuzzy msgid "New Diffie-Hellman parameters - gnoMint" msgstr "Vlastnosti žiadosti o vydanie certifikátu - gnoMint" #: gui/dh_parameters_dialog.ui:27 msgid "" "You are about to create and export a set of\n" "Diffie·Hellman parameters into a PKCS#3 structure file." msgstr "" #: gui/dh_parameters_dialog.ui:38 #, fuzzy msgid "" "PKCS#3 files containing Diffie·Hellman parameters are used by some " "cryptographic\n" "applications for a secure interchange of their keys over insecure channels." msgstr "" "Súbory PKCS#3 obsahujúce Diffie·Hellman parametre sú " "používané niektorými kryptografickými \n" "aplikáciami na bezpečnú výmenu kľúčov po nezabezpečených kanáloch." #: gui/dh_parameters_dialog.ui:48 msgid "Please, enter the prime size, in bits:" msgstr "" #: gui/dh_parameters_dialog.ui:71 msgid "Close" msgstr "" #: gui/dh_parameters_dialog.ui:77 msgid "Generate" msgstr "" #: gui/export_certificate_dialog.ui:5 #, fuzzy msgid "Export certificate - gnoMint" msgstr "Vlastnosti žiadosti o vydanie certifikátu - gnoMint" #: gui/export_certificate_dialog.ui:22 msgid "" "Please, choose which part of the\n" "saved certificate you want to export:" msgstr "" #: gui/export_certificate_dialog.ui:36 msgid "Only the pu_blic part." msgstr "" #: gui/export_certificate_dialog.ui:49 #, fuzzy msgid "Export only the certificate to a public file, in PEM format." msgstr "Exportovať len certifikát do v PEM formáte." #: gui/export_certificate_dialog.ui:60 msgid "Only the private key (crypted)." msgstr "" #: gui/export_certificate_dialog.ui:74 #, fuzzy msgid "" "Export the saved private key to a PKCS#8 password-\n" "protected file. This file should only be accessed by the\n" "subject of the certificate." msgstr "" "\r\n" "Exportovať uložený privátny kľúč do súboru PKCS#8 chráneného heslom. K " "tomuto súboru by mal pristupovať len vlastníkov certifikátu." #: gui/export_certificate_dialog.ui:87 msgid "Only the private key (uncrypted)." msgstr "" #: gui/export_certificate_dialog.ui:100 #, fuzzy msgid "" "Export the saved private key to a PEM file. This option\n" "should only be used for exporting certificates that will be\n" "used in unattended servers." msgstr "" "Exportovať uložený privátny kľúč do PEM súboru. Táto možnosť by mala byť " "použitá len pri exportovaní certifikátov, ktoré budú používané v serveroch " "bez obsluhy." #: gui/export_certificate_dialog.ui:113 msgid "Both parts." msgstr "Obe časti." #: gui/export_certificate_dialog.ui:126 #, fuzzy msgid "" "Export both (private and public) parts to a password-\n" "protected PKCS#12 file. This kind of file can be imported\n" "by other common programs, such as web or mail clients." msgstr "" "Exportovať obe časti (privátnu i verejnú) do súboru PKCS#12 chráneného " "heslom. Tento typ súboru je možné importovať do iných programov ako sú " "napríklad webové prehliadače alebo e-mailoví klienti." #: gui/export_certificate_dialog.ui:155 msgid "Export" msgstr "" #: gui/get_db_password_dialog.ui:5 gui/get_password_dialog.ui:5 #: gui/import_password_dialog.ui:5 msgid "Enter password - gnoMint" msgstr "" #: gui/get_db_password_dialog.ui:20 msgid "" "This action requires using one or more private keys saved in the CA " "database.\n" "\n" "Please insert the database password." msgstr "" #: gui/get_db_password_dialog.ui:41 gui/get_password_dialog.ui:68 #: gui/import_password_dialog.ui:65 #, fuzzy msgid "Password:" msgstr "Ochrana heslom\n" #: gui/get_db_password_dialog.ui:58 msgid "Remember this password during this gnoMint session" msgstr "" #: gui/get_password_dialog.ui:19 msgid "Please, enter password" msgstr "" #: gui/get_password_dialog.ui:56 msgid "Password (confirm):" msgstr "" #: gui/get_password_dialog.ui:97 gui/new_ca_window.ui:592 #: gui/new_cert_window.ui:676 gui/new_req_window.ui:564 #: gui/preferences_dialog.ui:51 msgid "_OK" msgstr "" #: gui/get_pkey_dialog.ui:9 msgid "Choose private key file. gnoMint" msgstr "" #: gui/get_pkey_dialog.ui:22 #, fuzzy msgid "" "Choose private key file\n" "\n" "For doing the selected operation, you must provide the\n" "file where resides the private key corresponding to the\n" "certificate:" msgstr "" "Vyberte súbor s privátnym kľúčom\n" "\n" "Pre vykonanie vybranej operácie musíte vybrať súbor s privátnym kľúčom " "prislúchajúcim certifikátu:" #: gui/get_pkey_dialog.ui:37 #, fuzzy msgid "Certificate DN" msgstr "Pridať _žiadosť o vydanie certifikátu" #: gui/get_pkey_dialog.ui:43 msgid "Please, choose the file:" msgstr "" #: gui/get_pkey_dialog.ui:62 msgid "_Save filename in the database for automatic loading" msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:7 gui/main_window.ui:62 msgid "gnoMint" msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:8 msgid "X.509 Certification Authority management tool" msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:11 msgid "" "gnoMint is a tool for easily creating and managing certification authorities " "(CAs). It provides fancy visualization of all your certificates, and their " "properties, as well as an easy management of the CA activities." msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:16 msgid "With gnoMint you can:" msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:20 #, fuzzy msgid "Create and manage your own Certification Authority (CA)" msgstr "Pridať novú žiadosť o vydanie certifikátu" #: gui/org.gnome.gnomint.appdata.xml.in:21 msgid "Create and sign certificates for servers and users" msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:22 #, fuzzy msgid "Create and manage Certificate Signing Requests (CSRs)" msgstr "Pridať novú žiadosť o vydanie certifikátu" #: gui/org.gnome.gnomint.appdata.xml.in:23 msgid "" "Export certificates and private keys in several formats (PEM, DER, PKCS#12)" msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:24 #, fuzzy msgid "Revoke certificates and generate Certificate Revocation Lists (CRLs)" msgstr "Pridať novú žiadosť o vydanie certifikátu" #: gui/org.gnome.gnomint.appdata.xml.in:25 #, fuzzy msgid "Import existing certificates and CAs" msgstr "Vlastnosti žiadosti o vydanie certifikátu - gnoMint" #: gui/org.gnome.gnomint.appdata.xml.in:27 msgid "" "gnoMint provides a simple and intuitive graphical interface based on GTK for " "all these operations, making certificate management accessible even for " "users without deep knowledge of X.509 standards and cryptography." msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:38 #, fuzzy msgid "Main window showing certificate list" msgstr "Pridať certifikát self-signed CA" #: gui/org.gnome.gnomint.desktop.in:2 gui/org.gnome.gnomint.desktop.in:3 msgid "gnoMint X.509 CA Manager" msgstr "" #: gui/org.gnome.gnomint.desktop.in:4 msgid "Manage X.509 certificates and CAs, easily and graphically" msgstr "" #: gui/org.gnome.gnomint.desktop.in:5 msgid "certificate;x.509;encryption;" msgstr "" #: gui/import_file_or_directory_dialog.ui:9 #, fuzzy msgid "Import selection - gnoMint" msgstr "Vlastnosti žiadosti o vydanie certifikátu - gnoMint" #: gui/import_file_or_directory_dialog.ui:24 msgid "" "Please, choose the more suitable option for\n" "what you want to import:" msgstr "" #: gui/import_file_or_directory_dialog.ui:36 msgid "Import a single file." msgstr "" #: gui/import_file_or_directory_dialog.ui:48 #, fuzzy msgid "" "Import a single file, encoded in DER or PEM format, containing\n" "certificates, private keys (encrypted or plain), signing\n" "requests (CSRs), revocation lists (CRLs) or PKCS#12\n" "packages." msgstr "" "Importovať jeden súbor kódovaný v DER alebo PEM formáte obsahujúci " "certifikáty, privátne kľúče (šifrované alebo nešifrované), žiadosti o " "vydanie certifikátu (CSR), zoznamy zrušených certifikátov (CRL) alebo súbory " "PKCS#12." #: gui/import_file_or_directory_dialog.ui:60 msgid "Import a whole directory." msgstr "" #: gui/import_file_or_directory_dialog.ui:72 #, fuzzy msgid "" "Import a directory containing the structure of\n" "a whole CA made with OpenSSL ." msgstr "" "Importovať adresár obsahujúci štruktúru\n" "celej CA vytvorenej pomocou OpenSSL." #: gui/import_file_or_directory_dialog.ui:100 msgid "Import" msgstr "" #: gui/import_password_dialog.ui:20 msgid "" "The whole selected file, or some of its elements, seems to\n" "be cyphered using a password or passphrase.\n" "\n" "For importing the file into gnoMint database, you must\n" "provide an appropiate password." msgstr "" #: gui/import_password_dialog.ui:37 #, fuzzy msgid "" "The part that is being imported has the description:" msgstr "Importovaná časť má popis:" #: gui/import_password_dialog.ui:48 msgid "#Description#" msgstr "#Popis#" #: gui/main_window.ui:6 #, fuzzy msgid "_Certificates" msgstr "Pridať _žiadosť o vydanie certifikátu" #: gui/main_window.ui:8 #, fuzzy msgid "_New certificate database" msgstr "Vlastnosti žiadosti o vydanie certifikátu - gnoMint" #: gui/main_window.ui:9 #, fuzzy msgid "_Open certificate database" msgstr "Pridať _žiadosť o vydanie certifikátu" #: gui/main_window.ui:10 msgid "Open _recents" msgstr "" #: gui/main_window.ui:11 msgid "_Save certificate database as..." msgstr "" #: gui/main_window.ui:15 #, fuzzy msgid "Add" msgstr "Pridať žiadosť o vydanie certifikátu" #: gui/main_window.ui:17 #, fuzzy msgid "_Add self-signed CA" msgstr "Pridať self-signed CA" #: gui/main_window.ui:18 #, fuzzy msgid "Add _Certificate Request" msgstr "Viditeľnosť žiadostí o certifikát" #: gui/main_window.ui:29 msgid "Generate _CRL" msgstr "" #: gui/main_window.ui:30 msgid "Generate D_H parameters..." msgstr "" #: gui/main_window.ui:31 msgid "Change database pass_word" msgstr "" #: gui/main_window.ui:33 msgid "_Import" msgstr "" #: gui/main_window.ui:38 msgid "Revoke _all selected..." msgstr "" #: gui/main_window.ui:39 msgid "Delete all selected _CSRs..." msgstr "" #: gui/main_window.ui:41 msgid "_Quit" msgstr "" #: gui/main_window.ui:44 gui/san_manager_widget.ui:34 msgid "_Edit" msgstr "" #: gui/main_window.ui:46 msgid "Preferences" msgstr "" #: gui/main_window.ui:49 msgid "_View" msgstr "" #: gui/main_window.ui:51 #, fuzzy msgid "Certificate _Signing Requests" msgstr "Pridať novú žiadosť o vydanie certifikátu" #: gui/main_window.ui:52 #, fuzzy msgid "_Revoked Certificates" msgstr "Pridať _žiadosť o vydanie certifikátu" #: gui/main_window.ui:53 #, fuzzy msgid "E_xpired Certificates" msgstr "Pridať _žiadosť o vydanie certifikátu" #: gui/main_window.ui:57 gui/new_ca_window.ui:249 gui/new_ca_window.ui:456 #: gui/new_ca_window.ui:568 gui/new_cert_window.ui:249 #: gui/new_cert_window.ui:331 gui/new_cert_window.ui:653 #: gui/new_req_window.ui:99 gui/new_req_window.ui:349 gui/new_req_window.ui:540 msgid "_Help" msgstr "" #: gui/main_window.ui:58 msgid "About" msgstr "" #: gui/main_window.ui:80 msgid "Create a new database" msgstr "" #: gui/main_window.ui:87 msgid "Open an existing database" msgstr "" #: gui/main_window.ui:99 msgid "Add an autosigned CA" msgstr "Pridať self-signed CA" #: gui/main_window.ui:100 #, fuzzy msgid "Add autosigned CA certificate" msgstr "Pridať self-signed CA" #: gui/main_window.ui:111 #, fuzzy msgid "Add a new Certificate Signing Request" msgstr "Pridať novú žiadosť o vydanie certifikátu" #: gui/main_window.ui:112 msgid "Add CSR" msgstr "Pridať žiadosť o vydanie certifikátu" #: gui/main_window.ui:129 msgid "Extract the private key of the selected item into a external file" msgstr "" #: gui/main_window.ui:130 msgid "Extract Private Key" msgstr "" #: gui/main_window.ui:142 #, fuzzy msgid "Revoke the selected certificate" msgstr "Viditeľnosť zrušených certifikátov" #: gui/main_window.ui:143 msgid "Revoke" msgstr "" #: gui/main_window.ui:151 #, fuzzy msgid "Sign the selected Certificate Signing Request" msgstr "Pridať novú žiadosť o vydanie certifikátu" #: gui/main_window.ui:152 msgid "Sign" msgstr "" #: gui/main_window.ui:164 #, fuzzy msgid "Delete the selected Certificate Signing Request" msgstr "Pridať novú žiadosť o vydanie certifikátu" #: gui/main_window.ui:176 msgid "Quick certificate generation for web server" msgstr "" #: gui/main_window.ui:177 msgid "Web Server Wizard" msgstr "" #: gui/main_window.ui:188 msgid "Quick certificate generation for email server" msgstr "" #: gui/main_window.ui:189 msgid "Email Server Wizard" msgstr "" #: gui/main_window.ui:225 msgid "_Show them" msgstr "" #: gui/main_window.ui:243 msgid "Filter certificates by subject or serial..." msgstr "" #: gui/new_ca_window.ui:20 #, fuzzy msgid "New CA - gnoMint" msgstr "Vlastnosti žiadosti o vydanie certifikátu - gnoMint" #: gui/new_ca_window.ui:46 #, fuzzy msgid "CA Subject Properties\n" msgstr "Vlastnosti CA" #: gui/new_ca_window.ui:72 gui/new_cert_window.ui:130 gui/new_req_window.ui:303 msgid "Organization:" msgstr "" #: gui/new_ca_window.ui:83 gui/new_cert_window.ui:141 gui/new_req_window.ui:292 msgid "Organization Unit:" msgstr "" #: gui/new_ca_window.ui:94 gui/new_cert_window.ui:152 gui/new_req_window.ui:281 msgid "Country:" msgstr "" #: gui/new_ca_window.ui:106 gui/new_cert_window.ui:163 #: gui/new_req_window.ui:270 msgid "State or Province name: " msgstr "" #: gui/new_ca_window.ui:117 gui/new_cert_window.ui:174 #: gui/new_req_window.ui:259 msgid "City: " msgstr "" #: gui/new_ca_window.ui:164 msgid "" "CA Root Certificate \n" "Common Name (CN):" msgstr "" "Bežné meno (CN) \n" "z certifikátu Koreňovej CA:" #: gui/new_ca_window.ui:185 gui/new_cert_window.ui:219 #: gui/new_req_window.ui:203 msgid "Email address:" msgstr "" #: gui/new_ca_window.ui:227 gui/new_req_window.ui:326 msgid "Subject Alternative Names (SAN)" msgstr "" #: gui/new_ca_window.ui:265 gui/new_ca_window.ui:480 gui/new_req_window.ui:115 #: gui/new_req_window.ui:373 msgid "_Next" msgstr "" #: gui/new_ca_window.ui:277 gui/new_cert_window.ui:276 #: gui/new_req_window.ui:127 msgid "CA properties" msgstr "Vlastnosti CA" #: gui/new_ca_window.ui:296 #, fuzzy msgid "CA Root certificate properties\n" msgstr "Vlastnosti certifikátu koreňovej CA\n" #: gui/new_ca_window.ui:337 msgid "Months before root certificate expiration:" msgstr "" #: gui/new_ca_window.ui:370 gui/new_req_window.ui:453 msgid "P-256 (256 bits)" msgstr "" #: gui/new_ca_window.ui:371 gui/new_req_window.ui:454 msgid "P-384 (384 bits)" msgstr "" #: gui/new_ca_window.ui:372 gui/new_req_window.ui:455 msgid "P-521 (521 bits)" msgstr "" #: gui/new_ca_window.ui:391 gui/new_req_window.ui:474 msgid "RSA" msgstr "" #: gui/new_ca_window.ui:400 gui/new_req_window.ui:484 msgid "DSA" msgstr "" #: gui/new_ca_window.ui:409 gui/new_req_window.ui:493 msgid "ECDSA" msgstr "" #: gui/new_ca_window.ui:418 gui/new_req_window.ui:502 msgid "Ed25519" msgstr "" #: gui/new_ca_window.ui:428 gui/new_req_window.ui:512 src/new_ca_window.c:170 #: src/new_ca_window.c:180 src/new_req_window.c:201 src/new_req_window.c:211 msgid "Private key bit length:" msgstr "" #: gui/new_ca_window.ui:439 gui/new_req_window.ui:523 msgid "Private key type:" msgstr "" #: gui/new_ca_window.ui:472 gui/new_ca_window.ui:584 gui/new_req_window.ui:365 #: gui/new_req_window.ui:556 msgid "_Previous" msgstr "" #: gui/new_ca_window.ui:492 gui/new_req_window.ui:385 #, fuzzy msgid "Root certificate prop" msgstr "Pridať _žiadosť o vydanie certifikátu" #: gui/new_ca_window.ui:511 #, fuzzy msgid "CA properties\n" msgstr "Vlastnosti CA" #: gui/new_ca_window.ui:535 msgid "CRL Distribution Point:" msgstr "" #: gui/new_ca_window.ui:542 msgid "" "Please, in this field enter an URL where the CRL for this CA will be " "available. \n" "You can leave it blank. In this case, no CRL Distribution Point will be set " "in the CA \n" "Certificate, and you will be able to set it as a new CA property. \n" "This value will be copied into the certificates generated by this CA.\n" "" msgstr "" #: gui/new_ca_window.ui:604 #, fuzzy msgid "Password protect" msgstr "Ochrana heslom\n" #: gui/new_cert_window.ui:13 #, fuzzy msgid "New Certificate - gnoMint" msgstr "Vlastnosti žiadosti o vydanie certifikátu - gnoMint" #: gui/new_cert_window.ui:36 gui/new_cert_window.ui:293 #: gui/new_cert_window.ui:382 #, fuzzy msgid "New Certificate Properties\n" msgstr "Vlastnosti Nového Certifikátu\n" #: gui/new_cert_window.ui:45 msgid "" "You are about to sign a Certificate Signing Request,\n" "and this way, creating a new certificate. Please\n" "check the certificate properties." msgstr "" #: gui/new_cert_window.ui:64 gui/new_cert_window.ui:75 #: gui/new_cert_window.ui:86 gui/new_cert_window.ui:97 #: gui/new_cert_window.ui:108 gui/new_cert_window.ui:119 msgid "label" msgstr "" #: gui/new_cert_window.ui:185 #, fuzzy msgid "" "New certificate \n" "Common Name (CN):" msgstr "" "Bežné meno (CN) \n" "z certifikátu Koreňovej CA:" #: gui/new_cert_window.ui:197 msgid "Subject Alternative Names:" msgstr "" #: gui/new_cert_window.ui:302 msgid "" "You are about to sign a Certificate Signing Request.\n" "Please, choose the Certification Authority you are\n" "going to use for signing it." msgstr "" #: gui/new_cert_window.ui:366 msgid "Choose CA for signing the CSR" msgstr "" #: gui/new_cert_window.ui:397 msgid "Months before certificate expiration:" msgstr "" #: gui/new_cert_window.ui:519 #, fuzzy msgid "Certificate uses" msgstr "Použitie certifikátu" #: gui/new_cert_window.ui:635 #, fuzzy msgid "Certificate purposes" msgstr "Účely certifikátu" #: gui/new_cert_window.ui:688 #, fuzzy msgid "Certificate properties" msgstr "Pridať _žiadosť o vydanie certifikátu" #: gui/new_crl_dialog.ui:5 #, fuzzy msgid "New CRL - gnoMint" msgstr "Vlastnosti žiadosti o vydanie certifikátu - gnoMint" #: gui/new_crl_dialog.ui:17 #, fuzzy msgid "New Certificate Revocation List" msgstr "Nový Zoznam Zrušených Certifikátov" #: gui/new_crl_dialog.ui:26 msgid "" "Please, select the CA for which a Certificate \n" "Revocation List is going to be created:" msgstr "" #: gui/new_req_window.ui:12 #, fuzzy msgid "New certificate request - gnoMint" msgstr "Vlastnosti žiadosti o vydanie certifikátu - gnoMint" #: gui/new_req_window.ui:36 gui/new_req_window.ui:147 gui/new_req_window.ui:403 #, fuzzy msgid "Certificate Request Properties\n" msgstr "Vlastnosti Žiadosti o Vydanie Certifikátu\n" #: gui/new_req_window.ui:55 #, fuzzy msgid "" "The subject of the new certificate request can inherit information\n" "from one of the existing Certification Authorities. This is a must if the\n" "policy of the CA you are going to use is defined to force some fields\n" "of a certificate subject to be the same as the ones in the CA cert\n" "subject." msgstr "" "Subjekt novej žiadosti o vydanie certifikátu môže zdediť informácie " "od jednej z existujúcich Certifikačných Autorít. Je to nevyhnutné v " "prípadoch, keď politika použitej CA vyžaduje v subjekte certifikátu " "prítomnosť rovnakých polí ako sú v subjekte certifikátu CA." #: gui/new_req_window.ui:67 msgid "Don't inherit any fields from existing Certification Authorities" msgstr "" #: gui/new_req_window.ui:74 msgid "" "Inherit fields according to selected Certification Authority and its policy." msgstr "" #: gui/new_req_window.ui:191 #, fuzzy msgid "" "Certificate\n" " Common Name (CN):" msgstr "" "Bežné meno (CN) \n" "z certifikátu Koreňovej CA:" #: gui/new_req_window.ui:576 msgid "page 3" msgstr "" #: gui/preferences_dialog.ui:9 #, fuzzy msgid "General Preferences - gnoMint" msgstr "Vlastnosti žiadosti o vydanie certifikátu - gnoMint" #: gui/preferences_dialog.ui:26 #, fuzzy msgid "" "Automatically export created certificates to\n" "Gnome-keyring certificate store" msgstr "" "Automaticky exportovať vytvorené certifikáty do \n" "úložiska gnome-keyring." #: gui/preferences_dialog.ui:36 msgid "Export options" msgstr "" #: gui/san_editor_dialog.ui:5 src/certificate_properties.c:1488 msgid "Subject Alternative Name" msgstr "" #: gui/san_editor_dialog.ui:23 msgid "Type:" msgstr "" #: gui/san_editor_dialog.ui:35 msgid "DNS" msgstr "" #: gui/san_editor_dialog.ui:36 src/certificate_properties.c:900 #: src/certificate_properties.c:914 src/certificate_properties.c:1040 msgid "IP Address" msgstr "" #: gui/san_editor_dialog.ui:37 msgid "Email" msgstr "" #: gui/san_editor_dialog.ui:38 src/certificate_properties.c:889 #: src/certificate_properties.c:1032 msgid "URI" msgstr "" #: gui/san_editor_dialog.ui:51 msgid "Value:" msgstr "" #: gui/san_editor_dialog.ui:74 msgid "" "Examples:\n" "DNS: example.com, *.example.com\n" "IP: 192.168.1.1, 2001:db8::1\n" "EMAIL: admin@example.com\n" "URI: https://example.com" msgstr "" #: gui/san_manager_widget.ui:26 msgid "_Add" msgstr "" #: gui/san_manager_widget.ui:43 msgid "_Remove" msgstr "" #: gui/wizard_window.ui:9 #, fuzzy msgid "Certificate Wizard" msgstr "Pridať _žiadosť o vydanie certifikátu" #: gui/wizard_window.ui:28 #, fuzzy msgid "Quick Certificate Generation" msgstr "Hierarchia certifikátov" #: gui/wizard_window.ui:35 msgid "" "This wizard will create a certificate for your server with default " "settings.\n" "Enter the server name (e.g., my.server.dns.name) and select the CA to sign " "it." msgstr "" #: gui/wizard_window.ui:48 msgid "Server Name:" msgstr "" #: gui/wizard_window.ui:59 msgid "Enter the server DNS name (e.g., my.server.dns.name)" msgstr "" #: gui/wizard_window.ui:69 msgid "Signing CA:" msgstr "" #: gui/wizard_window.ui:88 #, fuzzy msgid "Certificate Type:" msgstr "Pridať _žiadosť o vydanie certifikátu" #: gui/wizard_window.ui:124 #, fuzzy msgid "_Generate Certificate" msgstr "Pridať _žiadosť o vydanie certifikátu" #: gui/wizard_window.ui:140 msgid "Web Server (TLS)" msgstr "" #: gui/wizard_window.ui:141 msgid "Email Server (TLS)" msgstr "" #: src/ca.c:192 #, c-format msgid "Bulk revoke completed with errors. First error: %s" msgstr "" #: src/ca.c:199 #, fuzzy, c-format msgid "%d certificate revoked." msgid_plural "%d certificates revoked." msgstr[0] "Viditeľnosť žiadostí o certifikát" msgstr[1] "Viditeľnosť žiadostí o certifikát" #: src/ca.c:225 #, c-format msgid "Bulk delete completed with errors. First error: %s" msgstr "" #: src/ca.c:240 msgid "" "Certificate renewed. A new certificate with a fresh keypair has been added " "to the database alongside the original." msgstr "" #: src/ca.c:606 src/ca-cli-callbacks.c:167 src/ca-cli-callbacks.c:221 #: src/ca-cli-callbacks.c:733 src/ca-cli-callbacks.c:737 #: src/ca-cli-callbacks.c:1362 src/ca-cli-callbacks.c:1369 #: src/certificate_properties.c:246 src/certificate_properties.c:252 msgid "%m/%d/%Y %H:%M GMT" msgstr "" #: src/ca.c:806 src/ca.c:1927 src/ca.c:1958 src/ca.c:2093 src/ca.c:2322 #: src/ca.c:2350 msgid "Yes" msgstr "" #: src/ca.c:930 src/certificate_properties.c:653 msgid "Subject" msgstr "" #: src/ca.c:965 src/cert_diff.c:122 msgid "Serial" msgstr "" #: src/ca.c:978 src/cert_diff.c:123 msgid "Activation" msgstr "" #: src/ca.c:991 src/cert_diff.c:124 msgid "Expiration" msgstr "" #: src/ca.c:1004 msgid "Revocation" msgstr "" #: src/ca.c:1047 #, c-format msgid "" "Showing only the %d certificate expiring in the next %d days. Close " "this banner to show everything again." msgid_plural "" "Showing only the %d certificates expiring in the next %d days. Close " "this banner to show everything again." msgstr[0] "" msgstr[1] "" #: src/ca.c:1058 #, c-format msgid "" "%d certificate expires in the next %d days. Right-click it to renew " "with a fresh key." msgid_plural "" "%d certificates expire in the next %d days. Right-click each one to " "renew with a fresh key." msgstr[0] "" msgstr[1] "" #: src/ca.c:1369 src/ca.c:1404 src/ca.c:1416 src/export.c:560 src/export.c:639 msgid "There was an error while exporting certificate." msgstr "" #: src/ca.c:1371 src/ca.c:1406 src/ca.c:1418 msgid "There was an error while exporting CSR." msgstr "" #: src/ca.c:1426 src/ca.c:1590 msgid "Certificate exported successfully" msgstr "" #: src/ca.c:1427 msgid "Certificate signing request exported successfully" msgstr "" #: src/ca.c:1445 msgid "Export certificate" msgstr "" #: src/ca.c:1447 msgid "Export certificate signing request" msgstr "" #: src/ca.c:1461 src/ca.c:1523 src/ca.c:1981 msgid "Private key exported successfully" msgstr "" #: src/ca.c:1509 src/ca.c:2057 msgid "Export crypted private key" msgstr "" #: src/ca.c:1568 msgid "Export unencrypted private key" msgstr "" #: src/ca.c:1633 msgid "Export whole certificate in PKCS#12 package" msgstr "" #: src/ca.c:1676 msgid "Unexpected error" msgstr "" #: src/ca.c:1712 msgid "Export CSR - gnoMint" msgstr "" #: src/ca.c:1717 msgid "" "Please, choose which part of the saved Certificate Signing Request you want " "to export:" msgstr "" #: src/ca.c:1722 msgid "" "Export the Certificate Signing Request to a public file, in PEM format." msgstr "" #: src/ca.c:1727 msgid "" "Export the saved private key to a PKCS#8 password-protected file. This " "file should only be accessed by the subject of the Certificate Signing " "Request." msgstr "" #: src/ca.c:1774 msgid "Could not build certificate chain." msgstr "" #: src/ca.c:1781 #, fuzzy, c-format msgid "Failed to write chain: %s" msgstr "Pridať certifikát self-signed CA" #: src/ca.c:1786 #, fuzzy msgid "Certificate chain exported successfully." msgstr "Viditeľnosť žiadostí o certifikát" #: src/ca.c:1807 msgid "Please select a certificate to export its chain." msgstr "" #: src/ca.c:1831 #, fuzzy msgid "Export certificate chain" msgstr "Vlastnosti žiadosti o vydanie certifikátu - gnoMint" #: src/ca.c:1911 msgid "Please select one or more certificates to revoke." msgstr "" #: src/ca.c:1916 #, c-format msgid "Are you sure you want to revoke %d certificate?" msgid_plural "Are you sure you want to revoke %d certificates?" msgstr[0] "" msgstr[1] "" #: src/ca.c:1920 msgid "" "Revoking a certificate will include it in the next CRL, marking it as " "invalid. CSRs in the selection (if any) are not affected; use \"Delete " "selected CSRs\" for those." msgstr "" #: src/ca.c:1927 src/ca.c:1958 src/ca.c:2093 src/ca.c:2322 src/ca.c:2350 msgid "No" msgstr "" #: src/ca.c:1948 msgid "Please select one or more CSRs to delete." msgstr "" #: src/ca.c:1953 #, fuzzy, c-format msgid "Are you sure you want to delete %d Certificate Signing Request?" msgid_plural "Are you sure you want to delete %d Certificate Signing Requests?" msgstr[0] "Pridať novú žiadosť o vydanie certifikátu" msgstr[1] "Pridať novú žiadosť o vydanie certifikátu" #: src/ca.c:2076 src/ca-cli-callbacks.c:1934 msgid "" "CA certificates cannot be renewed. A renewed CA would have a different key, " "so certificates previously signed by the old CA would no longer chain to it." msgstr "" #: src/ca.c:2087 msgid "" "Renew this certificate?\n" "\n" "gnoMint will issue a new certificate with the same subject and SAN as the " "selected one, signed by the same CA, with a freshly-generated keypair. The " "old certificate will remain in the database — revoke it manually after you " "have deployed the new one." msgstr "" #: src/ca.c:2118 #, c-format msgid "Certificate diff — %d difference" msgid_plural "Certificate diff — %d differences" msgstr[0] "" msgstr[1] "" #: src/ca.c:2147 msgid "Left" msgstr "" #: src/ca.c:2151 msgid "Right" msgstr "" #: src/ca.c:2241 src/ca-cli-callbacks.c:2141 #, fuzzy msgid "Cannot read file." msgstr "Pridať certifikát self-signed CA" #: src/ca.c:2252 msgid "Selected" msgstr "" #: src/ca.c:2278 #, fuzzy msgid "Cannot read PEM of the selected certificate." msgstr "Viditeľnosť zrušených certifikátov" #: src/ca.c:2290 msgid "Compare with PEM file…" msgstr "" #: src/ca.c:2312 msgid "Are you sure you want to revoke this certificate?" msgstr "" #: src/ca.c:2313 msgid "" "Revoking a certificate will include it in the next CRL, marking it as " "invalid. This way, any future use of the certificate will be denied (as long " "as the CRL is checked)." msgstr "" #: src/ca.c:2316 msgid "Are you sure you want to revoke this CA certificate?" msgstr "" #: src/ca.c:2317 msgid "" "Revoking a certificate will include it in the next CRL, marking it as " "invalid. This way, any future use of the certificate will be denied (as long " "as the CRL is checked). \n" "\n" "Moreover, revoking a CA certificate can invalidate all the certificates " "generated with it, so all them should be regenerated with a new CA " "certificate." msgstr "" #: src/ca.c:2349 msgid "Are you sure you want to delete this Certificate Signing Request?" msgstr "" #: src/ca.c:2572 msgid "" "The current password you have entered doesn't match with the actual current " "database password." msgstr "" #: src/ca.c:2588 msgid "Error while changing database password. The operation was cancelled." msgstr "" #: src/ca.c:2593 msgid "Password changed successfully" msgstr "" #: src/ca.c:2601 src/ca-cli-callbacks.c:1186 msgid "" "Error while establishing database password. The operation was cancelled." msgstr "" #: src/ca.c:2606 msgid "Password established successfully" msgstr "" #: src/ca.c:2616 msgid "Error while removing database password. The operation was cancelled." msgstr "" #: src/ca.c:2621 msgid "Password removed successfully" msgstr "" #: src/ca.c:2708 msgid "Change CA password - gnoMint" msgstr "" #: src/ca.c:2840 msgid "Diffie-Hellman parameters saved successfully" msgstr "" #: src/ca.c:2872 msgid "Save Diffie-Hellman parameters" msgstr "" #: src/ca.c:2951 #, c-format msgid "Problem when importing '%s' file" msgstr "" #: src/ca.c:3012 msgid "Select PEM file to import" msgstr "" #: src/ca.c:3018 msgid "Select directory to import" msgstr "" #: src/cert_diff.c:70 #, fuzzy msgid "Cannot parse left certificate" msgstr "Viditeľnosť zrušených certifikátov" #: src/cert_diff.c:72 #, fuzzy msgid "Cannot parse right certificate" msgstr "Viditeľnosť zrušených certifikátov" #: src/cert_diff.c:113 msgid "Subject CN" msgstr "" #: src/cert_diff.c:114 msgid "Subject O" msgstr "" #: src/cert_diff.c:115 msgid "Subject OU" msgstr "" #: src/cert_diff.c:116 msgid "Subject Country" msgstr "" #: src/cert_diff.c:117 msgid "Subject State" msgstr "" #: src/cert_diff.c:118 msgid "Subject Locality" msgstr "" #: src/cert_diff.c:119 msgid "Subject email" msgstr "" #: src/cert_diff.c:120 msgid "Subject DN" msgstr "" #: src/cert_diff.c:121 msgid "Issuer DN" msgstr "" #: src/cert_diff.c:125 msgid "SAN" msgstr "" #: src/cert_diff.c:126 msgid "Key usage / EKU" msgstr "" #: src/cert_diff.c:127 msgid "Subject Key ID" msgstr "" #: src/cert_diff.c:128 msgid "Authority Key ID" msgstr "" #: src/cert_diff.c:129 msgid "CRL distribution" msgstr "" #: src/cert_diff.c:130 msgid "SHA-1 fingerprint" msgstr "" #: src/cert_diff.c:131 msgid "SHA-256 fingerprint" msgstr "" #: src/cert_renewal.c:111 msgid "Cannot parse generated CSR." msgstr "" #: src/cert_renewal.c:125 msgid "Cannot encrypt new private key." msgstr "" #: src/cert_renewal.c:181 src/cert_renewal.c:341 msgid "Cannot read certificate PEM from database." msgstr "" #: src/cert_renewal.c:186 src/cert_renewal.c:347 #, fuzzy msgid "Cannot parse certificate." msgstr "Viditeľnosť zrušených certifikátov" #: src/cert_renewal.c:193 src/cert_renewal.c:354 #, c-format msgid "Cannot find issuer CA in this database (issuer DN: %s)." msgstr "" #: src/cert_renewal.c:204 src/cert_renewal.c:315 msgid "Cannot load parent CA material from database." msgstr "" #: src/cert_renewal.c:212 src/cert_renewal.c:221 src/cert_renewal.c:265 #: src/cert_renewal.c:280 msgid "Cannot decrypt parent CA's private key." msgstr "" #: src/ca-cli.c:42 msgid "newdb " msgstr "" #: src/ca-cli.c:42 msgid "Close current file and create a new database with given filename" msgstr "" #: src/ca-cli.c:43 msgid "opendb " msgstr "" #: src/ca-cli.c:43 msgid "Close current file and open the file with given filename" msgstr "" #: src/ca-cli.c:44 msgid "savedbas " msgstr "" #: src/ca-cli.c:44 msgid "Save the current file with a different filename" msgstr "" #: src/ca-cli.c:45 msgid "Get current status (opened file, no. of certificates, etc...)" msgstr "" #: src/ca-cli.c:46 msgid "" "List the certificates in database. With option --see-revoked, lists also the " "revoked ones" msgstr "" #: src/ca-cli.c:48 msgid "List the CSRs in database" msgstr "" #: src/ca-cli.c:49 msgid "addcsr [ca-id-for-inherit-fields]" msgstr "" #: src/ca-cli.c:49 msgid "Start a new CSR creation process" msgstr "" #: src/ca-cli.c:50 msgid "Start a new self-signed CA creation process" msgstr "" #: src/ca-cli.c:51 msgid "extractcertpkey " msgstr "" #: src/ca-cli.c:51 msgid "" "Extract the private key of the certificate with the given internal id and " "saves it into the given file" msgstr "" #: src/ca-cli.c:54 msgid "extractcsrpkey " msgstr "" #: src/ca-cli.c:54 msgid "" "Extract the private key of the CSR with the given internal id and saves it " "into the given file" msgstr "" #: src/ca-cli.c:57 msgid "revoke " msgstr "" #: src/ca-cli.c:57 msgid "Revoke the certificate with the given internal ID" msgstr "" #: src/ca-cli.c:58 msgid "sign " msgstr "" #: src/ca-cli.c:58 msgid "Generate a certificate signing the given CSR with the given CA" msgstr "" #: src/ca-cli.c:59 msgid "delete " msgstr "" #: src/ca-cli.c:59 msgid "Delete the given CSR from the database" msgstr "" #: src/ca-cli.c:60 msgid "crlgen " msgstr "" #: src/ca-cli.c:60 msgid "Generate a new CRL for the given CA, saving it into the file " msgstr "" #: src/ca-cli.c:61 msgid "dhgen " msgstr "" #: src/ca-cli.c:61 msgid "Generate a new DH-parameter set, saving it into the file " msgstr "" #: src/ca-cli.c:62 msgid "Change password for the current database" msgstr "" #: src/ca-cli.c:63 msgid "importfile " msgstr "" #: src/ca-cli.c:63 msgid "Import the file with the given name " msgstr "" #: src/ca-cli.c:64 msgid "importdir " msgstr "" #: src/ca-cli.c:64 msgid "Import the given directory, as a OpenSSL-CA directory" msgstr "" #: src/ca-cli.c:65 msgid "showcert " msgstr "" #: src/ca-cli.c:65 msgid "Show properties of the given certificate" msgstr "" #: src/ca-cli.c:66 msgid "showcsr " msgstr "" #: src/ca-cli.c:66 msgid "Show properties of the given CSR" msgstr "" #: src/ca-cli.c:67 msgid "showpolicy " msgstr "" #: src/ca-cli.c:67 msgid "Show CA policy" msgstr "" #: src/ca-cli.c:68 msgid "setpolicy " msgstr "" #: src/ca-cli.c:68 msgid "Change the given CA policy" msgstr "" #: src/ca-cli.c:69 msgid "Show program preferences" msgstr "" #: src/ca-cli.c:70 msgid "setpreference " msgstr "" #: src/ca-cli.c:70 msgid "Set the given program preference" msgstr "" #: src/ca-cli.c:71 msgid "addservercert " msgstr "" #: src/ca-cli.c:71 msgid "Quick server certificate generation (cert-type: 'web' or 'email')" msgstr "" #: src/ca-cli.c:72 msgid "renewcert " msgstr "" #: src/ca-cli.c:72 msgid "" "Reissue a non-CA certificate with the same subject + SAN and a fresh " "keypair. The old certificate remains in the database. CA certificates cannot " "be renewed." msgstr "" #: src/ca-cli.c:73 msgid "exportchain " msgstr "" #: src/ca-cli.c:73 msgid "" "Export the full certificate chain (leaf → root) for the given certificate as " "a PEM bundle." msgstr "" #: src/ca-cli.c:74 msgid "revokemany [cert-id ...]" msgstr "" #: src/ca-cli.c:74 msgid "Revoke many certificates at once. Non-cert ids are silently skipped." msgstr "" #: src/ca-cli.c:75 msgid "deletemany [csr-id ...]" msgstr "" #: src/ca-cli.c:75 msgid "Delete many CSRs at once. Non-CSR ids are silently skipped." msgstr "" #: src/ca-cli.c:76 msgid "search " msgstr "" #: src/ca-cli.c:76 msgid "" "List certificates and CSRs whose subject or serial contains (case-" "insensitive)." msgstr "" #: src/ca-cli.c:77 msgid "diff " msgstr "" #: src/ca-cli.c:77 msgid "" "Side-by-side diff of two certificates. Each argument is either a numeric DB " "id or a path to a PEM file." msgstr "" #: src/ca-cli.c:78 msgid "Show about message" msgstr "" #: src/ca-cli.c:79 msgid "Show warranty information" msgstr "" #: src/ca-cli.c:80 msgid "Show distribution information" msgstr "" #: src/ca-cli.c:81 msgid "Show version information" msgstr "" #: src/ca-cli.c:82 msgid "Show (this) help message" msgstr "" #: src/ca-cli.c:83 src/ca-cli.c:84 src/ca-cli.c:85 msgid "Close database and exit program" msgstr "" #: src/ca-cli.c:132 #, c-format msgid "Opening database %s..." msgstr "" #: src/ca-cli.c:136 #, c-format msgid " OK.\n" msgstr "" #: src/ca-cli.c:138 #, c-format msgid " Error.\n" msgstr "" #: src/ca-cli.c:153 #, c-format msgid "" "Notice: %d certificate expires within the next %d days. Use `renewcert ` " "to reissue.\n" msgid_plural "" "Notice: %d certificates expire within the next %d days. Use `renewcert ` " "to reissue.\n" msgstr[0] "" msgstr[1] "" #: src/ca-cli.c:187 #, c-format msgid "" "\n" "\n" "%s version %s \"%s\"\n" "%s\n" "\n" msgstr "" #: src/ca-cli.c:188 #, c-format msgid "" "This program comes with ABSOLUTELY NO WARRANTY;\n" "for details type 'warranty'.\n" msgstr "" #: src/ca-cli.c:189 #, c-format msgid "" "This is free software, and you are welcome to redistribute it\n" "under certain conditions; type 'distribution' for details.\n" "\n" msgstr "" #: src/ca-cli.c:231 #, c-format msgid "Unpaired quotes\n" msgstr "" #: src/ca-cli.c:309 #, c-format msgid "" "Invalid command. Try 'help' for getting a list of recognized commands.\n" msgstr "" #: src/ca-cli.c:313 #, c-format msgid "Incorrect number of parameters.\n" msgstr "" #: src/ca-cli.c:314 #, c-format msgid "Syntax: %s\n" msgstr "" #: src/ca-cli-callbacks.c:62 src/ca-cli-callbacks.c:111 msgid "The file already exists, so it will be overwritten." msgstr "" #: src/ca-cli-callbacks.c:62 src/ca-cli-callbacks.c:111 #: src/ca-cli-callbacks.c:824 msgid "Are you sure? Yes/[No] " msgstr "" #: src/ca-cli-callbacks.c:84 #, c-format msgid "Problem when opening new '%s' CA database\n" msgstr "" #: src/ca-cli-callbacks.c:88 #, c-format msgid "File '%s' opened\n" msgstr "" #: src/ca-cli-callbacks.c:98 #, c-format msgid "Problem when opening '%s' CA database\n" msgstr "" #: src/ca-cli-callbacks.c:132 #, c-format msgid "Current opened file: %s\n" msgstr "" #: src/ca-cli-callbacks.c:133 #, c-format msgid "Number of certificates in file: %d\n" msgstr "" #: src/ca-cli-callbacks.c:134 #, c-format msgid "Number of CSRs in file: %d\n" msgstr "" #: src/ca-cli-callbacks.c:169 msgid " (after 2038?)" msgstr "" #: src/ca-cli-callbacks.c:239 #, c-format msgid "Certificates in Database:\n" msgstr "" #: src/ca-cli-callbacks.c:240 #, c-format msgid "Id.\tIs CA?\tCertificate Subject\tKey in DB?\tActivation\t\tExpiration" msgstr "" #: src/ca-cli-callbacks.c:243 #, c-format msgid "\t\tRevocation\n" msgstr "" #: src/ca-cli-callbacks.c:278 #, c-format msgid "Certificate Requests in Database:\n" msgstr "" #: src/ca-cli-callbacks.c:279 #, c-format msgid "Id.\tParent Id.\tCSR Subject\t\tKey in DB?\n" msgstr "" #: src/ca-cli-callbacks.c:309 src/ca-cli-callbacks.c:1129 #: src/ca-cli-callbacks.c:1522 src/ca-cli-callbacks.c:1551 msgid "The given CA id. is not valid" msgstr "" #: src/ca-cli-callbacks.c:362 #, c-format msgid "" "Please enter data corresponding to subject of the Certificate Signing " "Request:\n" msgstr "" #: src/ca-cli-callbacks.c:365 src/ca-cli-callbacks.c:567 msgid "Enter country (C)" msgstr "" #: src/ca-cli-callbacks.c:373 src/ca-cli-callbacks.c:573 msgid "Enter state or province (ST)" msgstr "" #: src/ca-cli-callbacks.c:382 src/ca-cli-callbacks.c:579 msgid "Enter locality or city (L)" msgstr "" #: src/ca-cli-callbacks.c:390 src/ca-cli-callbacks.c:585 msgid "Enter organization (O)" msgstr "" #: src/ca-cli-callbacks.c:398 src/ca-cli-callbacks.c:591 msgid "Enter organizational unit (OU)" msgstr "" #: src/ca-cli-callbacks.c:405 src/ca-cli-callbacks.c:597 msgid "Enter common name (CN)" msgstr "" #: src/ca-cli-callbacks.c:411 src/ca-cli-callbacks.c:603 msgid "Enter email address (leave blank for none)" msgstr "" #: src/ca-cli-callbacks.c:422 src/ca-cli-callbacks.c:614 msgid "" "Enter Subject Alternative Names (SAN) [format: " "DNS:example.com,IP:192.168.1.1]" msgstr "" #: src/ca-cli-callbacks.c:433 src/ca-cli-callbacks.c:625 msgid "Enter type of key you are going to create (RSA/DSA/ECDSA/Ed25519)" msgstr "" #: src/ca-cli-callbacks.c:472 src/ca-cli-callbacks.c:656 msgid "Enter curve size for ECDSA (256, 384, or 521)" msgstr "" #: src/ca-cli-callbacks.c:482 src/ca-cli-callbacks.c:667 msgid "Enter bitlength for the key (it must be a whole multiple of 1024)" msgstr "" #: src/ca-cli-callbacks.c:487 #, c-format msgid "These are the provided CSR properties:\n" msgstr "" #: src/ca-cli-callbacks.c:489 src/ca-cli-callbacks.c:704 #: src/ca-cli-callbacks.c:1350 src/ca-cli-callbacks.c:1411 #, c-format msgid "Subject:\n" msgstr "" #: src/ca-cli-callbacks.c:490 src/ca-cli-callbacks.c:705 #, c-format msgid "\tDistinguished Name: " msgstr "" #: src/ca-cli-callbacks.c:505 src/ca-cli-callbacks.c:720 #: src/ca-cli-callbacks.c:1354 src/ca-cli-callbacks.c:1414 #, c-format msgid "\tSubject Alternative Names: %s\n" msgstr "" #: src/ca-cli-callbacks.c:506 src/ca-cli-callbacks.c:721 #, c-format msgid "Key pair\n" msgstr "" #: src/ca-cli-callbacks.c:512 src/ca-cli-callbacks.c:727 #, c-format msgid "\tType: %s\n" msgstr "" #: src/ca-cli-callbacks.c:514 #, c-format msgid "\tKey size: fixed (Ed25519)\n" msgstr "" #: src/ca-cli-callbacks.c:516 #, c-format msgid "\tCurve: P-%d\n" msgstr "" #: src/ca-cli-callbacks.c:518 src/ca-cli-callbacks.c:729 #, c-format msgid "\tKey bitlength: %d\n" msgstr "" #: src/ca-cli-callbacks.c:521 src/ca-cli-callbacks.c:740 msgid "Do you want to change anything? Yes/[No] " msgstr "" #: src/ca-cli-callbacks.c:525 msgid "" "You are about to create a Certificate Signing Request with these properties." msgstr "" #: src/ca-cli-callbacks.c:526 src/ca-cli-callbacks.c:745 msgid "Are you sure? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:531 src/ca-cli-callbacks.c:750 #: src/ca-cli-callbacks.c:834 src/ca-cli-callbacks.c:965 #: src/ca-cli-callbacks.c:1086 src/ca-cli-callbacks.c:1115 #: src/ca-cli-callbacks.c:1181 src/ca-cli-callbacks.c:1208 #: src/ca-cli-callbacks.c:1236 src/ca-cli-callbacks.c:1251 #: src/ca-cli-callbacks.c:1581 src/ca-cli-callbacks.c:1624 #: src/ca-cli-callbacks.c:1945 #, c-format msgid "Operation cancelled.\n" msgstr "" #: src/ca-cli-callbacks.c:565 #, c-format msgid "" "Please enter data corresponding to subject of the new Certification " "Authority:\n" msgstr "" #: src/ca-cli-callbacks.c:673 msgid "" "Introduce number of months before expiration of the new certification " "authority" msgstr "" #: src/ca-cli-callbacks.c:693 src/new_ca_window.c:457 msgid "" "This system uses a 32-bit time_t and cannot represent dates after " "2038-01-19. The new CA's expiration date has been clamped to that limit. To " "issue longer-lived CAs, run gnoMint on a 64-bit platform." msgstr "" #: src/ca-cli-callbacks.c:702 #, c-format msgid "These are the provided new CA properties:\n" msgstr "" #: src/ca-cli-callbacks.c:730 #, c-format msgid "Validity\n" msgstr "" #: src/ca-cli-callbacks.c:731 src/ca-cli-callbacks.c:1360 #, c-format msgid "Validity:\n" msgstr "" #: src/ca-cli-callbacks.c:734 src/ca-cli-callbacks.c:1363 #, c-format msgid "\tActivated on: %s\n" msgstr "" #: src/ca-cli-callbacks.c:738 src/ca-cli-callbacks.c:1370 #, c-format msgid "\tExpires on: %s\n" msgstr "" #: src/ca-cli-callbacks.c:744 msgid "" "You are about to create a new Certification Authority with these properties." msgstr "" #: src/ca-cli-callbacks.c:770 src/ca-cli-callbacks.c:818 #: src/ca-cli-callbacks.c:1321 msgid "The given certificate id. is not valid" msgstr "" #: src/ca-cli-callbacks.c:777 src/ca-cli-callbacks.c:801 #, c-format msgid "Private key extracted successfully into file '%s'\n" msgstr "" #: src/ca-cli-callbacks.c:794 src/ca-cli-callbacks.c:946 #: src/ca-cli-callbacks.c:1099 src/ca-cli-callbacks.c:1400 msgid "The given CSR id. is not valid" msgstr "" #: src/ca-cli-callbacks.c:824 msgid "This certificate will be revoked." msgstr "" #: src/ca-cli-callbacks.c:830 #, c-format msgid "Certificate revoked.\n" msgstr "" #: src/ca-cli-callbacks.c:844 src/ca-cli-callbacks.c:1381 #, c-format msgid "Certificate uses:\n" msgstr "" #: src/ca-cli-callbacks.c:847 #, c-format msgid "* Certification Authority use enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:849 #, c-format msgid "* Certification Authority use disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:853 #, c-format msgid "* CRL signing use enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:855 #, c-format msgid "* CRL signing use disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:859 #, c-format msgid "* Digital Signature use enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:861 #, c-format msgid "* Digital Signature use disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:865 src/ca-cli-callbacks.c:867 #, c-format msgid "* Data Encipherment use enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:871 #, c-format msgid "* Key Encipherment use enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:873 #, c-format msgid "* Key Encipherment use disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:877 #, c-format msgid "* Non Repudiation use enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:879 #, c-format msgid "* Non Repudiation use disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:883 #, c-format msgid "* Key Agreement use enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:885 #, c-format msgid "* Key Agreement use disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:888 #, c-format msgid "Certificate purposes:\n" msgstr "" #: src/ca-cli-callbacks.c:891 #, c-format msgid "* Email Protection purpose enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:893 #, c-format msgid "* Email Protection purpose disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:897 #, c-format msgid "* Code Signing purpose enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:899 #, c-format msgid "* Code Signing purpose disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:903 #, c-format msgid "* TLS Web Client purpose enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:905 #, c-format msgid "* TLS Web Client purpose disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:909 #, c-format msgid "* TLS Web Server purpose enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:911 #, c-format msgid "* TLS Web Server purpose disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:915 #, c-format msgid "* Time Stamping purpose enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:917 #, c-format msgid "* Time Stamping purpose disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:921 #, c-format msgid "* OCSP Signing purpose enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:923 #, c-format msgid "* OCSP Signing purpose disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:927 #, c-format msgid "* Any purpose enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:929 #, c-format msgid "* Any purpose disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:953 #, c-format msgid "You are about to sign the following Certificate Signing Request:\n" msgstr "" #: src/ca-cli-callbacks.c:955 #, c-format msgid "with the certificate corresponding to the next CA:\n" msgstr "" #: src/ca-cli-callbacks.c:958 msgid "" "Introduce number of months before expiration of the new certificate (0 to " "cancel)" msgstr "" #: src/ca-cli-callbacks.c:984 src/ca-cli-callbacks.c:1072 #, c-format msgid "" "The new certificate will be created with the following uses and purposes:\n" msgstr "" #: src/ca-cli-callbacks.c:987 msgid "Do you want to change any property of the new certificate? Yes/[No] " msgstr "" #: src/ca-cli-callbacks.c:990 msgid "* Enable Certification Authority use? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:992 #, c-format msgid "* Certification Authority use disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:996 msgid "* Enable CRL Signing? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:998 #, c-format msgid "* CRL signing use disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1002 msgid "* Enable Digital Signature use? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1004 #, c-format msgid "* Digital Signature use disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1008 msgid "Enable Data Encipherment use? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1010 #, c-format msgid "* Data Encipherment use disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1014 msgid "Enable Key Encipherment use? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1016 #, c-format msgid "* Key Encipherment use disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1020 msgid "Enable Non Repudiation use? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1022 #, c-format msgid "* Non Repudiation use disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1026 msgid "Enable Key Agreement use? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1028 #, c-format msgid "* Key Agreement use disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1032 msgid "Enable Email Protection purpose? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1034 #, c-format msgid "* Email Protection purpose disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1038 msgid "Enable Code Signing purpose? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1040 #, c-format msgid "* Code Signing purpose disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1044 msgid "Enable TLS Web Client purpose? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1046 #, c-format msgid "* TLS Web Client purpose disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1050 msgid "Enable TLS Web Server purpose? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1052 #, c-format msgid "* TLS Web Server purpose disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1056 msgid "Enable Time Stamping purpose? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1058 #, c-format msgid "* Time Stamping purpose disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1062 msgid "Enable OCSP Signing purpose? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1063 #, c-format msgid "* OCSP Signing purpose disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1067 msgid "Enable any purpose? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1069 #, c-format msgid "* Any purpose disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1077 msgid "" "All the mandatory data for the certificate generation has been gathered." msgstr "" #: src/ca-cli-callbacks.c:1077 msgid "Do you want to proceed with the signing? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1083 #, c-format msgid "Certificate signed.\n" msgstr "" #: src/ca-cli-callbacks.c:1105 msgid "This Certificate Signing Request will be deleted." msgstr "" #: src/ca-cli-callbacks.c:1105 msgid "This operation cannot be undone. Are you sure? Yes/[No] " msgstr "" #: src/ca-cli-callbacks.c:1111 #, c-format msgid "Certificate Signing Request deleted.\n" msgstr "" #: src/ca-cli-callbacks.c:1136 #, c-format msgid "CRL generated successfully into file '%s'\n" msgstr "" #: src/ca-cli-callbacks.c:1153 msgid "The bit-length of the prime number must be whole multiple of 1024" msgstr "" #: src/ca-cli-callbacks.c:1162 #, c-format msgid "Diffie-Hellman parameters created and saved successfully in file '%s'\n" msgstr "" #: src/ca-cli-callbacks.c:1174 msgid "Currently, the database is not password-protected." msgstr "" #: src/ca-cli-callbacks.c:1174 msgid "Do you want to password protect it? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1175 msgid "" "OK. You need to supply a password for protecting the private keys in the\n" "database, so nobody else but authorized people can use them. This password\n" "will be asked any time gnoMint will make use of any private key in database." msgstr "" #: src/ca-cli-callbacks.c:1178 msgid "Insert password:" msgstr "" #: src/ca-cli-callbacks.c:1178 msgid "Insert password (confirm):" msgstr "" #: src/ca-cli-callbacks.c:1179 src/ca-cli-callbacks.c:1249 msgid "The introduced passwords are distinct." msgstr "" #: src/ca-cli-callbacks.c:1190 #, c-format msgid "Password established successfully.\n" msgstr "" #: src/ca-cli-callbacks.c:1197 #, c-format msgid "Nothing done.\n" msgstr "" #: src/ca-cli-callbacks.c:1201 msgid "Currently, the database IS password-protected." msgstr "" #: src/ca-cli-callbacks.c:1201 msgid "Do you want to remove this password protection? Yes/[No] " msgstr "" #: src/ca-cli-callbacks.c:1205 #, c-format msgid "" "For removing the password-protection, the current database password\n" "must be supplied.\n" msgstr "" #: src/ca-cli-callbacks.c:1206 src/ca-cli-callbacks.c:1234 msgid "Please, insert the current database password (Empty to cancel): " msgstr "" #: src/ca-cli-callbacks.c:1213 src/ca-cli-callbacks.c:1241 msgid "" "The current password you have entered\n" "doesn't match with the actual current database password." msgstr "" #: src/ca-cli-callbacks.c:1218 msgid "" "Error while removing database password. \n" "The operation was cancelled." msgstr "" #: src/ca-cli-callbacks.c:1223 #, c-format msgid "Password removed successfully.\n" msgstr "" #: src/ca-cli-callbacks.c:1233 #, c-format msgid "" "You must supply the current database password before changing the password.\n" msgstr "" #: src/ca-cli-callbacks.c:1245 msgid "" "OK. Now you must supply a new password for protecting the private keys in " "the\n" "database, so nobody else but authorized people can use them. This password\n" "will be asked any time gnoMint will make use of any private key in database." msgstr "" #: src/ca-cli-callbacks.c:1248 msgid "Insert new password:" msgstr "" #: src/ca-cli-callbacks.c:1248 msgid "Insert new password (confirm):" msgstr "" #: src/ca-cli-callbacks.c:1257 msgid "" "Error while changing database password. \n" "The operation was cancelled." msgstr "" #: src/ca-cli-callbacks.c:1263 #, c-format msgid "Password changed successfully.\n" msgstr "" #: src/ca-cli-callbacks.c:1281 msgid "Problem when importing the given file." msgstr "" #: src/ca-cli-callbacks.c:1284 #, c-format msgid "File imported successfully.\n" msgstr "" #: src/ca-cli-callbacks.c:1300 #, c-format msgid "Directory imported successfully.\n" msgstr "" #: src/ca-cli-callbacks.c:1343 #, c-format msgid "Certificate:\n" msgstr "" #: src/ca-cli-callbacks.c:1347 #, c-format msgid "\tSerial number: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1351 src/ca-cli-callbacks.c:1357 #: src/ca-cli-callbacks.c:1412 #, c-format msgid "\tDistinguished Name: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1351 src/ca-cli-callbacks.c:1352 #: src/ca-cli-callbacks.c:1357 src/ca-cli-callbacks.c:1358 msgid "None." msgstr "" #: src/ca-cli-callbacks.c:1352 src/ca-cli-callbacks.c:1358 #: src/ca-cli-callbacks.c:1416 #, c-format msgid "\tUnique ID: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1356 #, c-format msgid "Issuer:\n" msgstr "" #: src/ca-cli-callbacks.c:1365 src/ca-cli-callbacks.c:1372 #, c-format msgid "" "\t (warning: this 32-bit build cannot tell a real post-2038 date from an " "overflow; this value may be inaccurate)\n" msgstr "" #: src/ca-cli-callbacks.c:1375 #, c-format msgid "Fingerprints:\n" msgstr "" #: src/ca-cli-callbacks.c:1376 #, c-format msgid "\tSHA1 fingerprint: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1377 #, c-format msgid "\tMD5 fingerprint: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1378 #, c-format msgid "\tSHA256 fingerprint: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1409 #, c-format msgid "Certificate Signing Request:\n" msgstr "" #: src/ca-cli-callbacks.c:1486 msgid "Generated certs inherit Country from CA " msgstr "" #: src/ca-cli-callbacks.c:1487 msgid "Generated certs inherit State from CA " msgstr "" #: src/ca-cli-callbacks.c:1488 msgid "Generated certs inherit Locality from CA " msgstr "" #: src/ca-cli-callbacks.c:1489 msgid "Generated certs inherit Organization from CA " msgstr "" #: src/ca-cli-callbacks.c:1490 msgid "Generated certs inherit Organizational Unit from CA " msgstr "" #: src/ca-cli-callbacks.c:1491 msgid "Country in generated certs must be the same than in CA " msgstr "" #: src/ca-cli-callbacks.c:1492 msgid "State in generated certs must be the same than in CA " msgstr "" #: src/ca-cli-callbacks.c:1493 msgid "Locality in generated certs must be the same than in CA " msgstr "" #: src/ca-cli-callbacks.c:1494 msgid "Organization in generated certs must be the same than in CA " msgstr "" #: src/ca-cli-callbacks.c:1495 msgid "Organizational Unit in generated certs must be the same than in CA" msgstr "" #: src/ca-cli-callbacks.c:1496 msgid "Maximum number of hours between CRL updates " msgstr "" #: src/ca-cli-callbacks.c:1497 msgid "CRL distribution point (URL where CRL is published) " msgstr "" #: src/ca-cli-callbacks.c:1498 msgid "Maximum number of months before expiration of new certs " msgstr "" #: src/ca-cli-callbacks.c:1499 msgid "CA use enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1500 msgid "CRL Sign use enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1501 msgid "Non reputation use enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1502 msgid "Digital signature use enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1503 msgid "Key encipherment use enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1504 msgid "Key agreement use enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1505 msgid "Data encipherment use enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1506 msgid "TLS web server purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1507 msgid "TLS web client purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1508 msgid "Time stamping purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1509 msgid "Code signing server purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1510 msgid "Email protection purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1511 msgid "OCSP signing purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1512 msgid "Any purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1526 #, c-format msgid "Showing policies of the following certificate:\n" msgstr "" #: src/ca-cli-callbacks.c:1528 #, c-format msgid "" "\n" "Policies:\n" msgstr "" #: src/ca-cli-callbacks.c:1530 #, c-format msgid "Id.\tDescription\t\t\t\t\t\t\t\tValue\n" msgstr "" #: src/ca-cli-callbacks.c:1556 msgid "The given policy id is not valid" msgstr "" #: src/ca-cli-callbacks.c:1568 #, c-format msgid "" "You are about to assign to the policy\n" "'%s' the new value '%s'." msgstr "" #: src/ca-cli-callbacks.c:1572 src/ca-cli-callbacks.c:1616 msgid "Are you sure? Yes/[No] : " msgstr "" #: src/ca-cli-callbacks.c:1577 #, c-format msgid "Policy set correctly to '%s'.\n" msgstr "" #: src/ca-cli-callbacks.c:1591 #, c-format msgid "gnoMint-cli current preferences:\n" msgstr "" #: src/ca-cli-callbacks.c:1593 #, c-format msgid "Id.\tName\t\t\tValue\n" msgstr "" #: src/ca-cli-callbacks.c:1594 #, c-format msgid "0\tGnome keyring support\t%d\n" msgstr "" #: src/ca-cli-callbacks.c:1606 msgid "The given preference id is not valid" msgstr "" #: src/ca-cli-callbacks.c:1612 #, c-format msgid "" "You are about to assign to the preference 'Gnome keyring support' the new " "value '%d'." msgstr "" #: src/ca-cli-callbacks.c:1634 #, c-format msgid "" "%s version %s\n" "%s\n" msgstr "" #: src/ca-cli-callbacks.c:1635 #, c-format msgid "" "\n" "Authors:\n" "%s\n" "\n" msgstr "" #: src/ca-cli-callbacks.c:1636 src/ca-cli-callbacks.c:1637 src/main.c:742 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " David Marín https://launchpad.net/~davefx\n" " jariq https://launchpad.net/~jariq" #: src/ca-cli-callbacks.c:1637 #, c-format msgid "" "Translators:\n" "%s\n" msgstr "" #: src/ca-cli-callbacks.c:1644 msgid "" "THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY\n" "APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT\n" "HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY\n" "OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,\n" "THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n" "PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM\n" "IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF\n" "ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n" "\n" "For more information about warranty, see section 15 onwards of the GNU\n" "General Public License. You should have received a copy of the GNU General\n" "Public License along with this program. If not, see\n" ".\n" "\n" msgstr "" #: src/ca-cli-callbacks.c:1662 msgid "" "This program is free software: you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation, either version 3 of the License, or\n" "(at your option) any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program. If not, see .\n" "\n" msgstr "" #: src/ca-cli-callbacks.c:1677 #, c-format msgid "%s version %s \"%s\"\n" msgstr "" #: src/ca-cli-callbacks.c:1686 #, c-format msgid "Available commands:\n" msgstr "" #: src/ca-cli-callbacks.c:1687 #, c-format msgid "===================\n" msgstr "" #: src/ca-cli-callbacks.c:1697 #, c-format msgid "Exiting gnomint-cli...\n" msgstr "" #: src/ca-cli-callbacks.c:1738 msgid "The given CA id is not valid" msgstr "" #: src/ca-cli-callbacks.c:1750 msgid "Certificate type must be 'web' or 'email'" msgstr "" #: src/ca-cli-callbacks.c:1756 msgid "Server name cannot be empty" msgstr "" #: src/ca-cli-callbacks.c:1760 #, c-format msgid "Creating %s certificate for: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1761 msgid "web server" msgstr "" #: src/ca-cli-callbacks.c:1761 msgid "email server" msgstr "" #: src/ca-cli-callbacks.c:1837 #, c-format msgid "Error: Key generation failed: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1845 #, c-format msgid "Error: CSR generation failed: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1854 #, c-format msgid "Error: Failed to parse generated CSR\n" msgstr "" #: src/ca-cli-callbacks.c:1865 #, c-format msgid "Error: Failed to save CSR: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1879 msgid "CSR created with ID: %" msgstr "" #: src/ca-cli-callbacks.c:1903 #, c-format msgid "Error: Failed to sign certificate: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1910 #, c-format msgid "Certificate generated successfully for: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1911 #, fuzzy, c-format msgid "Certificate type: %s\n" msgstr "Pridať _žiadosť o vydanie certifikátu" #: src/ca-cli-callbacks.c:1911 msgid "Web Server" msgstr "" #: src/ca-cli-callbacks.c:1911 msgid "Email Server" msgstr "" #: src/ca-cli-callbacks.c:1925 msgid "Usage: renewcert " msgstr "" #: src/ca-cli-callbacks.c:1930 src/ca-cli-callbacks.c:1968 msgid "The given certificate id is not valid" msgstr "" #: src/ca-cli-callbacks.c:1941 msgid "" "gnoMint will issue a new certificate with the same subject and SAN as this " "one, signed by the same CA, with a fresh keypair. The old certificate stays " "in place." msgstr "" #: src/ca-cli-callbacks.c:1944 msgid "Renew? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1955 msgid "Certificate renewed. New certificate id: %" msgstr "" #: src/ca-cli-callbacks.c:1963 msgid "Usage: exportchain " msgstr "" #: src/ca-cli-callbacks.c:1974 msgid "Cannot build chain PEM for that certificate." msgstr "" #: src/ca-cli-callbacks.c:1979 #, fuzzy msgid "Cannot write chain file." msgstr "Pridať certifikát self-signed CA" #: src/ca-cli-callbacks.c:1985 #, c-format msgid "Full chain (leaf → root) written to %s\n" msgstr "" #: src/ca-cli-callbacks.c:1992 msgid "Usage: revokemany [cert-id ...]" msgstr "" #: src/ca-cli-callbacks.c:2008 #, fuzzy, c-format msgid "%d certificate revoked.\n" msgid_plural "%d certificates revoked.\n" msgstr[0] "Viditeľnosť žiadostí o certifikát" msgstr[1] "Viditeľnosť žiadostí o certifikát" #: src/ca-cli-callbacks.c:2016 msgid "Usage: deletemany [csr-id ...]" msgstr "" #: src/ca-cli-callbacks.c:2032 #, c-format msgid "%d CSR deleted.\n" msgid_plural "%d CSRs deleted.\n" msgstr[0] "" msgstr[1] "" #: src/ca-cli-callbacks.c:2092 msgid "Usage: search " msgstr "" #: src/ca-cli-callbacks.c:2099 #, c-format msgid "Matches (id\tserial\tsubject):\n" msgstr "" #: src/ca-cli-callbacks.c:2102 #, c-format msgid "%d match.\n" msgid_plural "%d matches.\n" msgstr[0] "" msgstr[1] "" #: src/ca-cli-callbacks.c:2126 #, c-format msgid "'%s' is not a certificate id in this database." msgstr "" #: src/ca-cli-callbacks.c:2134 #, c-format msgid "Cannot read PEM for cert id %s." msgstr "" #: src/ca-cli-callbacks.c:2152 msgid "Usage: diff " msgstr "" #: src/ca-cli-callbacks.c:2168 msgid "Field" msgstr "" #: src/ca-cli-callbacks.c:2181 #, c-format msgid "" "\n" "%d field differs.\n" msgid_plural "" "\n" "%d fields differ.\n" msgstr[0] "" msgstr[1] "" #: src/ca_creation.c:55 src/csr_creation.c:57 msgid "Generating new RSA key pair" msgstr "" #: src/ca_creation.c:64 src/ca_creation.c:88 src/ca_creation.c:109 #: src/ca_creation.c:128 src/csr_creation.c:66 src/csr_creation.c:87 #: src/csr_creation.c:104 src/csr_creation.c:121 msgid "Key generation failed" msgstr "" #: src/ca_creation.c:78 src/csr_creation.c:79 msgid "Generating new DSA key pair" msgstr "" #: src/ca_creation.c:101 src/csr_creation.c:97 msgid "Generating new ECDSA key pair" msgstr "" #: src/ca_creation.c:120 src/csr_creation.c:114 msgid "Generating new Ed25519 key pair" msgstr "" #: src/ca_creation.c:139 msgid "Generating self-signed CA-Root cert" msgstr "" #: src/ca_creation.c:147 msgid "Certificate generation failed" msgstr "" #: src/ca_creation.c:159 msgid "Creating CA database" msgstr "" #: src/ca_creation.c:168 msgid "CA database creation failed" msgstr "" #: src/ca_creation.c:180 msgid "CA generated successfully" msgstr "" #: src/ca_file.c:207 #, c-format msgid "Error opening filename '%s'" msgstr "" #: src/ca_file.c:310 msgid "" "The selected database has been created with a newer version of gnoMint than " "the currently installed." msgstr "" #: src/ca_file.c:1221 msgid "Cannot find last assigned serial number" msgstr "" #: src/ca_file.c:1410 msgid "Cannot find parent CA in database" msgstr "" #: src/ca_file.c:1600 msgid "" "This certificate already exists in the database: cannot insert it twice." msgstr "" #: src/ca_file.c:2044 msgid "" "The given file contains a valid private key. However, it has not been " "imported to the database because it doesn't match any key-less certificate " "or certificate request in the database." msgstr "" #: src/ca_file.c:2047 msgid "" "The given file contains a valid private key. However, it has not been " "imported to the database because it doesn't match any key-less certificate " "in the database." msgstr "" #: src/certificate_properties.c:151 msgid "" "This 32-bit build cannot represent dates after 2038-01-19, so it cannot " "distinguish a genuine date from a later one that overflowed. This value may " "be inaccurate." msgstr "" #: src/certificate_properties.c:383 msgid "Unknown" msgstr "" #: src/certificate_properties.c:453 src/tls.c:1478 msgid "Certificate signing" msgstr "" #: src/certificate_properties.c:457 msgid "Key encipherment only" msgstr "" #: src/certificate_properties.c:459 msgid "Key decipherment only" msgstr "" #: src/certificate_properties.c:472 msgid "Version" msgstr "" #: src/certificate_properties.c:507 msgid "Serial Number" msgstr "" #: src/certificate_properties.c:522 src/certificate_properties.c:1262 msgid "Signature" msgstr "" #: src/certificate_properties.c:525 src/certificate_properties.c:676 #: src/certificate_properties.c:679 src/certificate_properties.c:1228 msgid "Algorithm" msgstr "" #: src/certificate_properties.c:529 src/certificate_properties.c:686 #: src/certificate_properties.c:726 src/certificate_properties.c:763 #: src/certificate_properties.c:1232 msgid "Parameters" msgstr "" #: src/certificate_properties.c:529 src/certificate_properties.c:686 #: src/certificate_properties.c:763 src/certificate_properties.c:767 #: src/certificate_properties.c:781 src/certificate_properties.c:790 #: src/certificate_properties.c:1232 msgid "(unknown)" msgstr "" #: src/certificate_properties.c:563 msgid "Issuer" msgstr "" #: src/certificate_properties.c:598 msgid "Validity" msgstr "" #: src/certificate_properties.c:603 msgid "Not Before" msgstr "" #: src/certificate_properties.c:610 msgid "Not After" msgstr "" #: src/certificate_properties.c:616 msgid "Note" msgstr "" #: src/certificate_properties.c:617 msgid "" "This 32-bit build cannot represent dates after 2038-01-19, so a value marked " "⚠ may be a later date that overflowed and is inaccurate." msgstr "" #: src/certificate_properties.c:673 msgid "Subject Public Key Info" msgstr "" #: src/certificate_properties.c:690 msgid "RSA PublicKey" msgstr "" #: src/certificate_properties.c:702 msgid "Modulus" msgstr "" #: src/certificate_properties.c:710 msgid "Public Exponent" msgstr "" #: src/certificate_properties.c:755 msgid "DSA PublicKey" msgstr "" #: src/certificate_properties.c:767 msgid "Subject Public Key" msgstr "" #: src/certificate_properties.c:781 msgid "Issuer Unique ID" msgstr "" #: src/certificate_properties.c:790 msgid "Subject Unique ID" msgstr "" #: src/certificate_properties.c:813 src/certificate_properties.c:836 #: src/certificate_properties.c:945 src/certificate_properties.c:1058 #: src/certificate_properties.c:1085 src/certificate_properties.c:1124 #: src/certificate_properties.c:1182 src/certificate_properties.c:1457 #: src/san_manager.c:399 msgid "Value" msgstr "" #: src/certificate_properties.c:875 src/certificate_properties.c:1018 msgid "DNS Name" msgstr "" #: src/certificate_properties.c:882 src/certificate_properties.c:1025 msgid "RFC822 Name" msgstr "" #: src/certificate_properties.c:905 src/certificate_properties.c:919 #: src/certificate_properties.c:927 msgid "IP" msgstr "" #: src/certificate_properties.c:936 src/certificate_properties.c:1049 msgid "Directory Name" msgstr "" #: src/certificate_properties.c:973 src/certificate_properties.c:1164 msgid "TRUE" msgstr "" #: src/certificate_properties.c:973 src/certificate_properties.c:1164 msgid "FALSE" msgstr "" #: src/certificate_properties.c:977 msgid "CA" msgstr "" #: src/certificate_properties.c:981 msgid "Path Length Constraint" msgstr "" #: src/certificate_properties.c:1154 msgid "Extensions" msgstr "" #: src/certificate_properties.c:1166 msgid "Critical" msgstr "" #: src/certificate_properties.c:1199 msgid "Certificate" msgstr "" #: src/certificate_properties.c:1225 msgid "Signature Algorithm" msgstr "" #: src/certificate_properties.c:1446 msgid "Name" msgstr "" #: src/certificate_properties.c:1477 src/tls.c:1494 msgid "TLS WWW Server" msgstr "" #: src/certificate_properties.c:1478 msgid "TLS WWW Client" msgstr "" #: src/certificate_properties.c:1484 msgid "Subject Directory Attributes" msgstr "" #: src/certificate_properties.c:1485 msgid "Subject Key Identifier" msgstr "" #: src/certificate_properties.c:1486 msgid "Key Usage" msgstr "" #: src/certificate_properties.c:1487 msgid "Private Key Usage Period" msgstr "" #: src/certificate_properties.c:1489 msgid "Basic Constraints" msgstr "" #: src/certificate_properties.c:1490 msgid "Name Constraints" msgstr "" #: src/certificate_properties.c:1491 msgid "CRL Distribution Points" msgstr "" #: src/certificate_properties.c:1492 msgid "Certificate Policies" msgstr "" #: src/certificate_properties.c:1493 msgid "Policy Mappings" msgstr "" #: src/certificate_properties.c:1494 msgid "Authority Key Identifier" msgstr "" #: src/certificate_properties.c:1495 msgid "Policy Constraints" msgstr "" #: src/certificate_properties.c:1496 msgid "Extended Key Usage" msgstr "" #: src/certificate_properties.c:1497 msgid "Delta CRL Distribution Point" msgstr "" #: src/certificate_properties.c:1498 msgid "Inhibit Any-Policy" msgstr "" #: src/creation_process_window.c:69 msgid "CA creation process finished" msgstr "" #: src/creation_process_window.c:193 msgid "Creation process cancelled" msgstr "" #: src/creation_process_window.c:215 msgid "CSR creation process finished" msgstr "" #: src/creation_process_window.c:288 msgid "Creating Certificate Signing Request" msgstr "" #: src/crl.c:101 msgid "CRL generated successfully" msgstr "" #: src/crl.c:146 msgid "Export Certificate Revocation List" msgstr "" #: src/crl.c:180 src/crl.c:253 src/crl.c:299 msgid "There was an error while generating CRL." msgstr "" #: src/crl.c:189 msgid "There was an error while writing CRL." msgstr "" #: src/crl.c:201 src/crl.c:227 src/crl.c:268 src/crl.c:330 src/crl.c:351 msgid "There was an error while exporting CRL." msgstr "" #: src/crl.c:238 src/crl.c:369 msgid "There was an error while getting revoked certificates." msgstr "" #: src/csr_creation.c:131 msgid "Generating CSR" msgstr "" #: src/csr_creation.c:140 msgid "CSR generation failed" msgstr "" #: src/csr_creation.c:151 msgid "Saving CSR in database" msgstr "" #: src/csr_creation.c:169 msgid "CSR couldn't be saved" msgstr "" #: src/csr_creation.c:180 msgid "CSR generated successfully" msgstr "" #: src/csr_properties.c:91 msgid "" "This Certificate Signing Request has its corresponding private key saved " "in a external file." msgstr "" #: src/dialog.c:123 #, c-format msgid "" "\n" "The password must have, at least, %d characters\n" msgstr "" #: src/dialog.c:581 msgid "To do. Feature not implemented yet." msgstr "" #: src/export.c:43 src/export.c:48 src/export.c:53 msgid "There was an error while saving Diffie-Hellman parameters." msgstr "" #: src/export.c:79 src/export.c:138 src/export.c:146 src/export.c:200 #: src/export.c:210 src/export.c:304 src/export.c:341 src/export.c:376 #: src/export.c:384 src/export.c:424 src/export.c:433 src/export.c:474 msgid "There was an error while exporting private key." msgstr "" #: src/export.c:99 src/export.c:284 src/export.c:357 src/export.c:455 msgid "There was an error while getting private key." msgstr "" #: src/export.c:110 src/export.c:248 msgid "There was an error while uncrypting private key." msgstr "" #: src/export.c:113 src/export.c:264 msgid "" "You need to supply a passphrase for protecting the exported private key, so " "nobody else but authorized people can use it. This passphrase will be asked " "by any application that will make use of the private key." msgstr "" #: src/export.c:116 src/export.c:267 src/export.c:536 src/export.c:715 msgid "Insert passphrase (8 characters or more):" msgstr "" #: src/export.c:116 src/export.c:267 src/export.c:536 src/export.c:715 msgid "Insert passphrase (confirm):" msgstr "" #: src/export.c:117 src/export.c:268 src/export.c:537 src/export.c:716 msgid "The introduced passphrases are distinct." msgstr "" #: src/export.c:120 src/export.c:178 msgid "Operation cancelled." msgstr "" #: src/export.c:130 src/export.c:190 msgid "There was an error while password-protecting private key." msgstr "" #: src/export.c:368 src/export.c:415 msgid "There was an error while decrypting private key." msgstr "" #: src/export.c:513 src/export.c:747 msgid "Unsupported operation: you cannot generate a PKCS#12 for a CSR." msgstr "" #: src/export.c:521 src/export.c:530 src/export.c:695 src/export.c:731 msgid "" "There was an error while getting the certificate and private key from the " "internal database." msgstr "" #: src/export.c:533 src/export.c:712 msgid "" "You need to supply a passphrase for protecting the exported certificate, so " "nobody else but authorized people can use it. This passphrase will be asked " "by any application that will import the certificate." msgstr "" #: src/export.c:555 src/export.c:629 msgid "There was an error while generating the PKCS#12 package." msgstr "" #: src/export.c:569 src/export.c:578 src/export.c:652 src/export.c:663 msgid "There was an error while exporting the certificate." msgstr "" #: src/gnomint-cli.c:59 msgid "- A Certification Authority manager" msgstr "" #: src/gnomint-cli.c:62 #, c-format msgid "Failed to initialize: %s\n" msgstr "" #: src/import.c:171 #, c-format msgid "" "The whole selected file, or some of its elements, seems to\n" "be cyphered using a password or passphrase. For importing\n" "the file into gnoMint database, you must provide an \n" "appropriate password.\n" msgstr "" #: src/import.c:176 #, c-format msgid "Please introduce password for `%s'" msgstr "" #: src/import.c:218 #, c-format msgid "" "Couldn't import the certificate request. \n" "The database returned this error: \n" "\n" "'%s'" msgstr "" #: src/import.c:298 msgid "" "The imported certificate expires after 2038-01-19, a date this 32-bit build " "cannot represent. Its stored expiration has been capped and may be " "inaccurate. The certificate itself is unchanged; open it on a 64-bit system " "to see the exact date." msgstr "" #: src/import.c:310 #, c-format msgid "" "Couldn't import the certificate. \n" "The database returned this error: \n" "\n" "'%s'" msgstr "" #: src/import.c:666 src/import.c:852 msgid "PKCS#8 crypted private key" msgstr "" #: src/import.c:677 src/import.c:862 msgid "The given password doesn't match the one used for crypting this part" msgstr "" #: src/import.c:771 msgid "Encrypted PKCS#12 bag" msgstr "" #: src/import.c:788 msgid "" "The given password doesn't match with the password used for encrypting this " "part." msgstr "" #: src/import.c:999 msgid "Couldn't find any supported format in the given file" msgstr "" #: src/import.c:1012 src/import.c:1363 #, c-format msgid "Couldn't open %s file. Check permissions." msgstr "" #: src/import.c:1039 #, c-format msgid "Couldn't recognize the file %s as a RSA or DSA private key." msgstr "" #: src/import.c:1055 #, c-format msgid "Private key for %s" msgstr "" #: src/import.c:1057 #, c-format msgid "Private key %s" msgstr "" #: src/import.c:1092 msgid "Problem while calling to openssl for decyphering private key." msgstr "" #: src/import.c:1100 #, c-format msgid "" "OpenSSL has returned the following error while trying to decypher the " "private key:\n" "\n" "%s" msgstr "" #: src/import.c:1211 msgid "There was a problem while importing the public CA root certificate" msgstr "" #: src/import.c:1225 msgid "CA Root certificate" msgstr "" #: src/import.c:1227 msgid "" "There was a problem while importing the private key corresponding to CA root " "certificate" msgstr "" #: src/import.c:1237 msgid "There was a problem while opening the directory certs/." msgstr "" #: src/import.c:1261 msgid "There was a problem while opening the directory newcerts/." msgstr "" #: src/import.c:1288 msgid "There was a problem while opening the directory req." msgstr "" #: src/import.c:1314 msgid "There was a problem while opening the directory crl/." msgstr "" #: src/import.c:1336 msgid "There was a problem while opening the directory keys/." msgstr "" #: src/import.c:1394 msgid "Files in the directory don't belong to any supported CA format." msgstr "" #: src/main.c:567 #, c-format msgid "" "Problem when creating '%s' CA database:\n" "%s" msgstr "" #: src/main.c:577 #, c-format msgid "Problem when opening new '%s' CA database" msgstr "" #: src/main.c:591 msgid "Create new CA database" msgstr "" #: src/main.c:616 #, c-format msgid "Problem when opening '%s' CA database" msgstr "" #: src/main.c:630 msgid "Open CA database" msgstr "" #: src/main.c:662 msgid "Save CA database as..." msgstr "" #: src/main.c:722 msgid "" "gnoMint is a program for creating and managing Certification Authorities, " "and their certificates" msgstr "" #: src/main.c:725 msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU General Public License as published by the Free " "Software Foundation; either version 3 of the License, or (at your option) " "any later version.\n" "\n" "This program is distributed in the hope that it will be useful, but WITHOUT " "ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or " "FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for " "more details.\n" "\n" "You should have received a copy of the GNU General Public License along with " "this program; if not, write to the Free Software Foundation, Inc., 51 " "Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA." msgstr "" #: src/main.c:741 msgid "Code collaborators" msgstr "" #: src/new_ca_window.c:191 src/new_req_window.c:222 msgid "ECDSA curve:" msgstr "" #: src/new_ca_window.c:219 msgid "Please enter a Common Name (CN) for the CA." msgstr "" #: src/new_cert.c:197 msgid "" "The policy of this CA obligue the country field of the certificates to be " "the same as the one in the CA cert." msgstr "" #: src/new_cert.c:203 msgid "" "The policy of this CA obligue the state/province field of the certificates " "to be the same as the one in the CA cert." msgstr "" #: src/new_cert.c:209 msgid "" "The policy of this CA obligue the locality/city field of the certificates to " "be the same as the one in the CA cert." msgstr "" #: src/new_cert.c:215 msgid "" "The policy of this CA obligue the organization field of the certificates to " "be the same as the one in the CA cert." msgstr "" #: src/new_cert.c:221 msgid "" "The policy of this CA obligue the organizational unit field of the " "certificates to be the same as the one in the CA cert." msgstr "" #: src/new_cert.c:659 msgid "" "The expiration date of the new certificate is after the expiration date of " "the CA certificate.\n" "\n" "According to the current standards, this is not allowed. The new certificate " "will be created with the same expiration date as the CA certificate." msgstr "" #: src/new_cert.c:734 msgid "" "This system uses a 32-bit time_t and cannot represent dates after " "2038-01-19. The new certificate's expiration date has been clamped to that " "limit. To issue longer-lived certificates, run gnoMint on a 64-bit platform." msgstr "" #: src/new_cert.c:770 src/new_cert.c:809 src/new_cert.c:838 msgid "Error while signing CSR." msgstr "" #: src/new_req_window.c:374 msgid "Please enter a Common Name (CN) for the certificate request." msgstr "" #: src/pkey_manage.c:124 #, c-format msgid "" "The file that holds private key for certificate '%s' is password-protected.\n" "\n" "Please, insert the password corresponding to this file." msgstr "" #: src/pkey_manage.c:163 #, c-format msgid "" "The file that holds private key for certificate\n" "'%s' is password-protected.\n" "\n" msgstr "" #: src/pkey_manage.c:211 src/pkey_manage.c:303 msgid "" "The given password doesn't match with the one used while crypting the file." msgstr "" #: src/pkey_manage.c:226 src/pkey_manage.c:315 src/pkey_manage.c:476 msgid "" "The file designated in database contains a private key, but it is not the " "private key corresponding to the certificate." msgstr "" #: src/pkey_manage.c:229 src/pkey_manage.c:318 src/pkey_manage.c:479 msgid "" "The file designated in database doesn't contain any recognized private key." msgstr "" #: src/pkey_manage.c:233 src/pkey_manage.c:500 msgid "The file designated in database couldn't be opened." msgstr "" #: src/pkey_manage.c:236 src/pkey_manage.c:503 msgid "The file designated in database doesn't exist." msgstr "" #: src/pkey_manage.c:360 msgid "Select private key file" msgstr "" #: src/pkey_manage.c:1069 src/pkey_manage.c:1164 msgid "The given password doesn't match the one used in the database" msgstr "" #: src/pkey_manage.c:1151 #, c-format msgid "" "This action requires using one or more private keys saved in the database.\n" msgstr "" #: src/pkey_manage.c:1152 msgid "Please insert the database password:" msgstr "" #: src/san_manager.c:71 msgid "Value cannot be empty" msgstr "" #: src/san_manager.c:82 msgid "Invalid DNS name. Use format: example.com or *.example.com" msgstr "" #: src/san_manager.c:93 msgid "Invalid IP address. Use IPv4 (e.g., 192.168.1.1) or IPv6 format" msgstr "" #: src/san_manager.c:103 msgid "Invalid email address. Use format: user@example.com" msgstr "" #: src/san_manager.c:113 msgid "Invalid URI. Must start with http://, https://, ftp://, or ldap://" msgstr "" #: src/san_manager.c:389 msgid "Type" msgstr "" #: src/tls.c:198 src/tls.c:231 src/tls.c:276 src/tls.c:307 #, c-format msgid "Error initializing private key structure." msgstr "" #: src/tls.c:204 src/tls.c:237 src/tls.c:281 src/tls.c:311 #, c-format msgid "Error creating private key: %d" msgstr "" #: src/tls.c:215 src/tls.c:248 src/tls.c:289 src/tls.c:321 src/tls.c:794 #: src/tls.c:1204 #, c-format msgid "Error exporting private key to PEM structure." msgstr "" #: src/tls.c:656 #, c-format msgid "Error when initializing certificate structure" msgstr "" #: src/tls.c:662 src/tls.c:956 #, c-format msgid "Error when setting certificate version" msgstr "" #: src/tls.c:672 src/tls.c:969 #, c-format msgid "Error when setting certificate serial number" msgstr "" #: src/tls.c:681 src/tls.c:978 #, c-format msgid "Error when setting activation time" msgstr "" #: src/tls.c:686 src/tls.c:986 #, c-format msgid "Error when setting expiration time" msgstr "" #: src/tls.c:740 src/tls.c:1040 #, c-format msgid "Error when setting basicConstraint extension" msgstr "" #: src/tls.c:745 src/tls.c:1082 #, c-format msgid "Error when setting keyUsage extension" msgstr "" #: src/tls.c:756 src/tls.c:864 src/tls.c:1120 #, c-format msgid "Error when setting Subject Alternative Name extension" msgstr "" #: src/tls.c:768 src/tls.c:1056 #, c-format msgid "Error when setting subject key identifier extension" msgstr "" #: src/tls.c:772 src/tls.c:1030 #, c-format msgid "Error when setting authority key identifier extension" msgstr "" #: src/tls.c:782 #, c-format msgid "Error when signing self-signed certificate" msgstr "" #: src/tls.c:813 #, c-format msgid "Error when initializing privkey structure" msgstr "" #: src/tls.c:817 #, c-format msgid "Error when importing private key into privkey structure" msgstr "" #: src/tls.c:821 #, c-format msgid "Error when initializing csr structure" msgstr "" #: src/tls.c:825 #, c-format msgid "Error when setting csr version" msgstr "" #: src/tls.c:869 #, c-format msgid "Error when signing self-signed csr" msgstr "" #: src/tls.c:880 #, c-format msgid "Error exporting CSR to PEM structure." msgstr "" #: src/tls.c:933 #, c-format msgid "Error when importing CA private key" msgstr "" #: src/tls.c:940 #, c-format msgid "Error when initializing crt structure" msgstr "" #: src/tls.c:948 #, c-format msgid "Error when copying data from CSR to certificate structure" msgstr "" #: src/tls.c:1182 #, fuzzy, c-format msgid "Error when signing certificate: %s" msgstr "Pridať certifikát self-signed CA" #: src/tls.c:1482 msgid "Key encipher only" msgstr "" #: src/tls.c:1484 msgid "Key decipher only" msgstr "" #: src/tls.c:1496 msgid "TLS WWW Client." msgstr "" #: src/wizard_window.c:239 #, c-format msgid "" "Key generation failed:\n" "%s" msgstr "" #: src/wizard_window.c:249 #, c-format msgid "" "CSR generation failed:\n" "%s" msgstr "" #: src/wizard_window.c:260 msgid "Failed to parse generated CSR." msgstr "" #: src/wizard_window.c:271 #, c-format msgid "" "Failed to save CSR:\n" "%s" msgstr "" #: src/wizard_window.c:294 #, fuzzy, c-format msgid "" "Failed to sign certificate:\n" "%s" msgstr "Pridať certifikát self-signed CA" #: src/wizard_window.c:297 #, fuzzy msgid "Certificate generated successfully!" msgstr "Viditeľnosť žiadostí o certifikát" #: src/wizard_window.c:311 msgid "Please enter a server name." msgstr "" #: src/wizard_window.c:318 msgid "Please select a Certificate Authority." msgstr "" #: src/wizard_window.c:325 msgid "Invalid Certificate Authority selected." msgstr "" #: src/wizard_window.c:412 msgid "No Certificate Authority found. Please create a CA first." msgstr "" #, fuzzy #~ msgid "Shows the CSR properties window" #~ msgstr "Vlastnosti žiadosti o vydanie certifikátu - gnoMint" #, fuzzy #~ msgid "<b>Certificate subject</b>" #~ msgstr "Subjekt certifikátu" #, fuzzy #~ msgid "<big>CA properties</big>" #~ msgstr "Vlastnosti CA\n" gnomint-1.6.4/po/cs.gmo0000644000000000000000000000336215212761320013465 0ustar00rootroot%@ACV#f    #7 K Uat*: Xduz~    $< CQ    CSR subjectValidity#Description#Add CSRAny purposeCACNCAOCAOUCRL signingCityCommon Name (CN)Country:DSADetailsE_xportOrganization (O)Organization:Organizational Unit (OU)Organizational unitPassword (confirm):Password:Window sizetranslator-creditsProject-Id-Version: gnoMint 0.5.2 Report-Msgid-Bugs-To: davefx@gmail.com PO-Revision-Date: 2009-11-08 15:27+0000 Last-Translator: Kuvaly [LCT] Language-Team: Czech Language: cs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2010-08-11 09:00+0000 X-Generator: Launchpad (build Unknown) CSR subjektPlatnost#Popis#Přidat CSRJakýkoli účelCACNCAOCAOUCRL značkováníMěstoSpolečné jméno (CN)Země:DSAPodrobnostiE_xportovatOrganizace (O)Organizace:Organizační jednotka (OU)Organizační jednotkaHeslo (pro potvrzení):Heslo:Velikost oknaLaunchpad Contributions: David Marín https://launchpad.net/~davefx Kuvaly [LCT] https://launchpad.net/~kuvaly Luboš Staněk https://launchpad.net/~lubekgnomint-1.6.4/po/oc.po0000644000000000000000000030646615212761320013330 0ustar00rootroot# Occitan (post 1500) translation for gnomint # Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 # This file is distributed under the same license as the gnomint package. # FIRST AUTHOR , 2010. # msgid "" msgstr "" "Project-Id-Version: gnomint\n" "Report-Msgid-Bugs-To: davefx@gmail.com\n" "POT-Creation-Date: 2026-06-12 10:43+0000\n" "PO-Revision-Date: 2010-05-16 15:17+0000\n" "Last-Translator: Cédric VALMARY (Tot en òc) \n" "Language-Team: Occitan (post 1500) \n" "Language: oc\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-08-11 09:00+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: gconf/org.gnome.gnomint.gschema.xml:7 msgid "Window size" msgstr "" #: gconf/org.gnome.gnomint.gschema.xml:8 msgid "" "The (width,length) size gnoMint should take when started. This cannot be " "smaller than (320,200)." msgstr "" #: gconf/org.gnome.gnomint.gschema.xml:16 #, fuzzy msgid "Revoked certificates visibility" msgstr "Certificats" #: gconf/org.gnome.gnomint.gschema.xml:17 #, fuzzy msgid "Whether the revoked certificates should be visible." msgstr "Certificats" #: gconf/org.gnome.gnomint.gschema.xml:24 #, fuzzy msgid "Expired certificates visibility" msgstr "Certificats" #: gconf/org.gnome.gnomint.gschema.xml:25 msgid "" "Whether already-expired certificates should be visible in the certificates " "tree. CAs are always visible regardless of this setting so that any still-" "valid certificates they signed remain reachable." msgstr "" #: gconf/org.gnome.gnomint.gschema.xml:35 msgid "Days before expiration to highlight certificates in amber" msgstr "" #: gconf/org.gnome.gnomint.gschema.xml:36 msgid "" "Certificates whose effective validity ends within this many days are shown " "in amber in the certificates tree, as a heads-up that they should be renewed " "soon. Setting this to 0 disables the amber highlight (certificates appear " "either normally or in gray for already-expired)." msgstr "" #: gconf/org.gnome.gnomint.gschema.xml:47 #, fuzzy msgid "Certificate requests visibility" msgstr "Certificats" #: gconf/org.gnome.gnomint.gschema.xml:48 #, fuzzy msgid "Whether the certificate requests should be visible." msgstr "Certificats" #: gconf/org.gnome.gnomint.gschema.xml:55 msgid "Automatic exporting of certificates for gnome-keyring" msgstr "" #: gconf/org.gnome.gnomint.gschema.xml:56 msgid "" "Whether the created or imported certificates are automatically exported to " "gnome-keyring certificate-store." msgstr "" #: gui/certificate_popup_menu.ui:7 gui/csr_popup_menu.ui:7 #: gui/main_window.ui:45 #, fuzzy msgid "Properties" msgstr "Certificats" #: gui/certificate_popup_menu.ui:13 gui/main_window.ui:35 #, fuzzy msgid "Export full c_hain..." msgstr "Certificats" #: gui/certificate_popup_menu.ui:17 gui/csr_popup_menu.ui:13 #: gui/main_window.ui:34 msgid "E_xport" msgstr "E_xportar" #: gui/certificate_popup_menu.ui:21 gui/csr_popup_menu.ui:17 #: gui/main_window.ui:23 msgid "Extrac_t private key" msgstr "" #: gui/certificate_popup_menu.ui:27 gui/main_window.ui:24 msgid "Re_new with fresh key" msgstr "" #: gui/certificate_popup_menu.ui:31 msgid "_Compare with PEM file…" msgstr "" #: gui/certificate_popup_menu.ui:35 gui/main_window.ui:25 #, fuzzy msgid "Revo_ke" msgstr "Revocar" #: gui/certificate_popup_menu.ui:41 gui/main_window.ui:21 #, fuzzy msgid "Add _Web Server Certificate (wizard)" msgstr "Certificats" #: gui/certificate_popup_menu.ui:45 gui/main_window.ui:22 #, fuzzy msgid "Add _Email Server Certificate (wizard)" msgstr "Certificats" #: gui/certificate_properties_dialog.ui:19 #, fuzzy msgid "Certificate properties - gnoMint" msgstr "Certificats" #: gui/certificate_properties_dialog.ui:54 msgid "This certificate has been verified for the following uses:" msgstr "" #: gui/certificate_properties_dialog.ui:77 msgid "MD5FINGERPRINT" msgstr "" #: gui/certificate_properties_dialog.ui:88 msgid "SHA1FINGERPRINT" msgstr "" #: gui/certificate_properties_dialog.ui:99 #: gui/certificate_properties_dialog.ui:132 #: gui/certificate_properties_dialog.ui:176 #: gui/certificate_properties_dialog.ui:231 gui/creation_process_window.ui:15 #: gui/creation_process_window.ui:61 gui/csr_properties_dialog.ui:109 #: gui/new_ca_window.ui:56 gui/new_ca_window.ui:306 gui/new_ca_window.ui:521 #: gui/new_req_window.ui:46 gui/new_req_window.ui:157 gui/new_req_window.ui:413 msgid " " msgstr " " #: gui/certificate_properties_dialog.ui:110 #, fuzzy msgid "CertExpirationDate" msgstr "Expiracion" #: gui/certificate_properties_dialog.ui:121 #, fuzzy msgid "CertActivationDate" msgstr "Activacion" #: gui/certificate_properties_dialog.ui:143 msgid "CAOU" msgstr "CAOU" #: gui/certificate_properties_dialog.ui:154 msgid "CAO" msgstr "CAO" #: gui/certificate_properties_dialog.ui:165 msgid "CACN" msgstr "CACN" #: gui/certificate_properties_dialog.ui:187 msgid "CertSN" msgstr "" #: gui/certificate_properties_dialog.ui:198 gui/csr_properties_dialog.ui:63 #, fuzzy msgid "SubjectOU" msgstr "Subjècte" #: gui/certificate_properties_dialog.ui:209 gui/csr_properties_dialog.ui:87 #, fuzzy msgid "SubjectO" msgstr "Subjècte" #: gui/certificate_properties_dialog.ui:220 gui/csr_properties_dialog.ui:98 #, fuzzy msgid "SubjectCN" msgstr "Subjècte" #: gui/certificate_properties_dialog.ui:242 msgid "MD5 fingerprint" msgstr "" #: gui/certificate_properties_dialog.ui:253 msgid "SHA1 fingerprint" msgstr "" #: gui/certificate_properties_dialog.ui:264 #, fuzzy msgid "Fingerprints" msgstr "Certificats" #: gui/certificate_properties_dialog.ui:276 msgid "Expires on" msgstr "Expira lo" #: gui/certificate_properties_dialog.ui:287 #, fuzzy msgid "Activated on" msgstr "Activacion" #: gui/certificate_properties_dialog.ui:298 msgid "Validity" msgstr "" #: gui/certificate_properties_dialog.ui:310 #: gui/certificate_properties_dialog.ui:389 gui/csr_properties_dialog.ui:120 msgid "Organizational Unit (OU)" msgstr "Unitat d'organizacion (OU)" #: gui/certificate_properties_dialog.ui:321 #: gui/certificate_properties_dialog.ui:400 gui/csr_properties_dialog.ui:142 msgid "Organization (O)" msgstr "Organizacion (O)" #: gui/certificate_properties_dialog.ui:332 #: gui/certificate_properties_dialog.ui:411 gui/csr_properties_dialog.ui:153 msgid "Common Name (CN)" msgstr "Nom corrent (CN)" #: gui/certificate_properties_dialog.ui:343 msgid "Emmited by" msgstr "" #: gui/certificate_properties_dialog.ui:355 #, fuzzy msgid "Subject Alternative Names" msgstr "Subjècte" #: gui/certificate_properties_dialog.ui:378 msgid "Serial number" msgstr "Numèro de seria" #: gui/certificate_properties_dialog.ui:422 #, fuzzy msgid "Certificate subject" msgstr "Certificats" #: gui/certificate_properties_dialog.ui:434 msgid "SHA256FINGERPRINT" msgstr "" #: gui/certificate_properties_dialog.ui:449 msgid "SHA256 fingerprint" msgstr "" #: gui/certificate_properties_dialog.ui:460 msgid "SHA512FINGERPRINT" msgstr "" #: gui/certificate_properties_dialog.ui:475 msgid "SHA512 fingerprint" msgstr "" #: gui/certificate_properties_dialog.ui:486 #: gui/certificate_properties_dialog.ui:509 gui/csr_properties_dialog.ui:176 msgid "Email address" msgstr "" #: gui/certificate_properties_dialog.ui:536 gui/csr_properties_dialog.ui:203 msgid "General" msgstr "General" #: gui/certificate_properties_dialog.ui:557 #, fuzzy msgid "Certificate hierarchy" msgstr "Certificats" #: gui/certificate_properties_dialog.ui:582 #, fuzzy msgid "Certificate fields" msgstr "Certificats" #: gui/certificate_properties_dialog.ui:605 msgid "Details" msgstr "Detalhs" #: gui/certificate_properties_dialog.ui:623 msgid "" "\n" "It is recommended that all the certificates generated by a CA\n" "share the same properties.\n" "If you want to generate certificates with different properties, you\n" "should create a hierarchy of CAs, each one with its own policy for\n" "certificate generation.\n" "\n" "Please, define the maximum set of properties for the\n" "certificates that this CA will be able to generate:\n" msgstr "" #: gui/certificate_properties_dialog.ui:649 msgid "" "Maximum number of months before\n" "expiration of the new generated certificates:" msgstr "" #: gui/certificate_properties_dialog.ui:686 msgid "Hours between CRL updates:" msgstr "" #: gui/certificate_properties_dialog.ui:711 msgid "CRL distribution URL:" msgstr "" #: gui/certificate_properties_dialog.ui:727 #, fuzzy msgid "CRL Properties" msgstr "Certificats" #: gui/certificate_properties_dialog.ui:750 msgid "Country" msgstr "País" #: gui/certificate_properties_dialog.ui:761 msgid "State or Province name" msgstr "" #: gui/certificate_properties_dialog.ui:778 #: gui/certificate_properties_dialog.ui:802 #: gui/certificate_properties_dialog.ui:859 #: gui/certificate_properties_dialog.ui:883 #: gui/certificate_properties_dialog.ui:907 msgid "must be the same" msgstr "" #: gui/certificate_properties_dialog.ui:786 #: gui/certificate_properties_dialog.ui:810 #: gui/certificate_properties_dialog.ui:867 #: gui/certificate_properties_dialog.ui:891 #: gui/certificate_properties_dialog.ui:915 msgid "may differ" msgstr "" #: gui/certificate_properties_dialog.ui:820 msgid "City" msgstr "Vila" #: gui/certificate_properties_dialog.ui:831 msgid "Organization" msgstr "Organizacion" #: gui/certificate_properties_dialog.ui:842 #, fuzzy msgid "Organizational unit" msgstr "Unitat d'organizacion (OU)" #: gui/certificate_properties_dialog.ui:927 #, fuzzy msgid "Inherited fields from CA subject" msgstr "Certificats" #: gui/certificate_properties_dialog.ui:952 gui/new_cert_window.ui:464 #: src/tls.c:1463 msgid "Certification Authority" msgstr "" #: gui/certificate_properties_dialog.ui:963 gui/new_cert_window.ui:487 #: src/certificate_properties.c:445 src/tls.c:1470 msgid "Non repudiation" msgstr "" #: gui/certificate_properties_dialog.ui:974 gui/new_cert_window.ui:440 #: src/certificate_properties.c:447 src/tls.c:1472 msgid "Key encipherment" msgstr "" #: gui/certificate_properties_dialog.ui:986 gui/new_cert_window.ui:428 #: src/certificate_properties.c:449 src/tls.c:1474 msgid "Data encipherment" msgstr "" #: gui/certificate_properties_dialog.ui:998 gui/new_cert_window.ui:475 #: src/certificate_properties.c:451 src/tls.c:1476 msgid "Key agreement" msgstr "" #: gui/certificate_properties_dialog.ui:1010 gui/new_cert_window.ui:452 #: src/certificate_properties.c:443 src/tls.c:1468 msgid "Digital signature" msgstr "" #: gui/certificate_properties_dialog.ui:1022 gui/new_cert_window.ui:498 #: src/certificate_properties.c:455 src/tls.c:1480 msgid "CRL signing" msgstr "" #: gui/certificate_properties_dialog.ui:1043 #, fuzzy msgid "Uses of new generated certificates" msgstr "Certificats" #: gui/certificate_properties_dialog.ui:1067 gui/new_cert_window.ui:621 #: src/certificate_properties.c:1480 src/tls.c:1500 msgid "Email protection" msgstr "" #: gui/certificate_properties_dialog.ui:1079 gui/new_cert_window.ui:610 #: src/certificate_properties.c:1479 src/tls.c:1498 msgid "Code signing" msgstr "" #: gui/certificate_properties_dialog.ui:1090 gui/new_cert_window.ui:598 msgid "TLS Web client" msgstr "" #: gui/certificate_properties_dialog.ui:1102 gui/new_cert_window.ui:586 msgid "TLS Web server" msgstr "" #: gui/certificate_properties_dialog.ui:1114 gui/new_cert_window.ui:575 #: src/certificate_properties.c:1481 src/tls.c:1502 msgid "Time stamping" msgstr "" #: gui/certificate_properties_dialog.ui:1125 gui/new_cert_window.ui:564 #: src/certificate_properties.c:1483 src/tls.c:1506 msgid "Any purpose" msgstr "" #: gui/certificate_properties_dialog.ui:1136 gui/new_cert_window.ui:553 #: src/certificate_properties.c:1482 src/tls.c:1504 msgid "OCSP signing" msgstr "" #: gui/certificate_properties_dialog.ui:1159 #, fuzzy msgid "Purposes of new generated certificates" msgstr "Certificats" #: gui/certificate_properties_dialog.ui:1171 msgid "CA Policy" msgstr "" #: gui/certificate_properties_dialog.ui:1189 gui/csr_properties_dialog.ui:221 #: src/ca.c:2199 msgid "_Close" msgstr "" #: gui/change_password_dialog.ui:9 msgid "Database password protection - gnoMint" msgstr "" #: gui/change_password_dialog.ui:34 msgid "_Yes" msgstr "" #: gui/change_password_dialog.ui:43 msgid "_No" msgstr "_Non" #: gui/change_password_dialog.ui:53 msgid "" "Enter new password again \n" "for confirmation:" msgstr "" #: gui/change_password_dialog.ui:86 msgid "" "Please, enter new \n" "password:" msgstr "" #: gui/change_password_dialog.ui:98 msgid "" "Please, enter current\n" "password:" msgstr "" #: gui/change_password_dialog.ui:121 msgid "" "Protect CA database private\n" "keys with password:" msgstr "" #: gui/change_password_dialog.ui:143 gui/export_certificate_dialog.ui:149 #: gui/get_db_password_dialog.ui:74 gui/get_pkey_dialog.ui:78 #: gui/import_file_or_directory_dialog.ui:94 gui/import_password_dialog.ui:90 #: gui/new_crl_dialog.ui:53 gui/san_editor_dialog.ui:93 #, fuzzy msgid "Cancel" msgstr "gtk-cancel" #: gui/change_password_dialog.ui:149 gui/get_db_password_dialog.ui:80 #: gui/get_pkey_dialog.ui:84 gui/import_password_dialog.ui:96 #: gui/new_crl_dialog.ui:59 gui/san_editor_dialog.ui:99 msgid "OK" msgstr "" #: gui/creation_process_window.ui:6 #, fuzzy msgid "Creating new CA - gnoMint" msgstr "gnoMint" #: gui/creation_process_window.ui:31 #, fuzzy msgid "Creating CA Root Certificate" msgstr "Certificats" #: gui/creation_process_window.ui:51 gui/get_password_dialog.ui:90 #: gui/new_ca_window.ui:257 gui/new_ca_window.ui:464 gui/new_ca_window.ui:576 #: gui/new_cert_window.ui:257 gui/new_cert_window.ui:339 #: gui/new_cert_window.ui:661 gui/new_req_window.ui:107 #: gui/new_req_window.ui:357 gui/new_req_window.ui:548 gui/wizard_window.ui:117 msgid "_Cancel" msgstr "" #: gui/csr_popup_menu.ui:23 gui/main_window.ui:26 msgid "_Sign" msgstr "_Signar" #: gui/csr_popup_menu.ui:27 gui/main_window.ui:27 msgid "Delete" msgstr "" #: gui/csr_properties_dialog.ui:5 msgid "CSR properties - gnoMint" msgstr "" #: gui/csr_properties_dialog.ui:41 msgid "" "This Certificate Signing Request has its corresponding private key saved " "in the internal database." msgstr "" #: gui/csr_properties_dialog.ui:74 gui/new_cert_window.ui:230 #: src/csr_properties.c:86 src/new_cert.c:105 msgid "None" msgstr "" #: gui/csr_properties_dialog.ui:131 msgid "Subject Alternative Name (SAN)" msgstr "" #: gui/csr_properties_dialog.ui:164 #, fuzzy msgid "CSR subject" msgstr "Certificats" #: gui/dh_parameters_dialog.ui:16 msgid "New Diffie-Hellman parameters - gnoMint" msgstr "" #: gui/dh_parameters_dialog.ui:27 msgid "" "You are about to create and export a set of\n" "Diffie·Hellman parameters into a PKCS#3 structure file." msgstr "" #: gui/dh_parameters_dialog.ui:38 msgid "" "PKCS#3 files containing Diffie·Hellman parameters are used by some " "cryptographic\n" "applications for a secure interchange of their keys over insecure channels." msgstr "" #: gui/dh_parameters_dialog.ui:48 msgid "Please, enter the prime size, in bits:" msgstr "" #: gui/dh_parameters_dialog.ui:71 msgid "Close" msgstr "" #: gui/dh_parameters_dialog.ui:77 #, fuzzy msgid "Generate" msgstr "General" #: gui/export_certificate_dialog.ui:5 #, fuzzy msgid "Export certificate - gnoMint" msgstr "Certificats" #: gui/export_certificate_dialog.ui:22 msgid "" "Please, choose which part of the\n" "saved certificate you want to export:" msgstr "" #: gui/export_certificate_dialog.ui:36 msgid "Only the pu_blic part." msgstr "" #: gui/export_certificate_dialog.ui:49 msgid "Export only the certificate to a public file, in PEM format." msgstr "" #: gui/export_certificate_dialog.ui:60 msgid "Only the private key (crypted)." msgstr "" #: gui/export_certificate_dialog.ui:74 msgid "" "Export the saved private key to a PKCS#8 password-\n" "protected file. This file should only be accessed by the\n" "subject of the certificate." msgstr "" #: gui/export_certificate_dialog.ui:87 msgid "Only the private key (uncrypted)." msgstr "" #: gui/export_certificate_dialog.ui:100 msgid "" "Export the saved private key to a PEM file. This option\n" "should only be used for exporting certificates that will be\n" "used in unattended servers." msgstr "" #: gui/export_certificate_dialog.ui:113 msgid "Both parts." msgstr "" #: gui/export_certificate_dialog.ui:126 msgid "" "Export both (private and public) parts to a password-\n" "protected PKCS#12 file. This kind of file can be imported\n" "by other common programs, such as web or mail clients." msgstr "" #: gui/export_certificate_dialog.ui:155 #, fuzzy msgid "Export" msgstr "E_xportar" #: gui/get_db_password_dialog.ui:5 gui/get_password_dialog.ui:5 #: gui/import_password_dialog.ui:5 #, fuzzy msgid "Enter password - gnoMint" msgstr "gnoMint" #: gui/get_db_password_dialog.ui:20 msgid "" "This action requires using one or more private keys saved in the CA " "database.\n" "\n" "Please insert the database password." msgstr "" #: gui/get_db_password_dialog.ui:41 gui/get_password_dialog.ui:68 #: gui/import_password_dialog.ui:65 msgid "Password:" msgstr "Senhal :" #: gui/get_db_password_dialog.ui:58 msgid "Remember this password during this gnoMint session" msgstr "" #: gui/get_password_dialog.ui:19 msgid "Please, enter password" msgstr "" #: gui/get_password_dialog.ui:56 #, fuzzy msgid "Password (confirm):" msgstr "Senhal :" #: gui/get_password_dialog.ui:97 gui/new_ca_window.ui:592 #: gui/new_cert_window.ui:676 gui/new_req_window.ui:564 #: gui/preferences_dialog.ui:51 msgid "_OK" msgstr "" #: gui/get_pkey_dialog.ui:9 msgid "Choose private key file. gnoMint" msgstr "" #: gui/get_pkey_dialog.ui:22 msgid "" "Choose private key file\n" "\n" "For doing the selected operation, you must provide the\n" "file where resides the private key corresponding to the\n" "certificate:" msgstr "" #: gui/get_pkey_dialog.ui:37 #, fuzzy msgid "Certificate DN" msgstr "Certificats" #: gui/get_pkey_dialog.ui:43 msgid "Please, choose the file:" msgstr "" #: gui/get_pkey_dialog.ui:62 msgid "_Save filename in the database for automatic loading" msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:7 gui/main_window.ui:62 msgid "gnoMint" msgstr "gnoMint" #: gui/org.gnome.gnomint.appdata.xml.in:8 msgid "X.509 Certification Authority management tool" msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:11 msgid "" "gnoMint is a tool for easily creating and managing certification authorities " "(CAs). It provides fancy visualization of all your certificates, and their " "properties, as well as an easy management of the CA activities." msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:16 msgid "With gnoMint you can:" msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:20 msgid "Create and manage your own Certification Authority (CA)" msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:21 msgid "Create and sign certificates for servers and users" msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:22 #, fuzzy msgid "Create and manage Certificate Signing Requests (CSRs)" msgstr "Certificats" #: gui/org.gnome.gnomint.appdata.xml.in:23 msgid "" "Export certificates and private keys in several formats (PEM, DER, PKCS#12)" msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:24 msgid "Revoke certificates and generate Certificate Revocation Lists (CRLs)" msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:25 #, fuzzy msgid "Import existing certificates and CAs" msgstr "Certificats" #: gui/org.gnome.gnomint.appdata.xml.in:27 msgid "" "gnoMint provides a simple and intuitive graphical interface based on GTK for " "all these operations, making certificate management accessible even for " "users without deep knowledge of X.509 standards and cryptography." msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:38 msgid "Main window showing certificate list" msgstr "" #: gui/org.gnome.gnomint.desktop.in:2 gui/org.gnome.gnomint.desktop.in:3 msgid "gnoMint X.509 CA Manager" msgstr "Gestionari d'Autoritat de Certificacion X.509 gnoMint" #: gui/org.gnome.gnomint.desktop.in:4 msgid "Manage X.509 certificates and CAs, easily and graphically" msgstr "Gerir aisidament e graficament de certificats X.509 e d'AC" #: gui/org.gnome.gnomint.desktop.in:5 msgid "certificate;x.509;encryption;" msgstr "" #: gui/import_file_or_directory_dialog.ui:9 msgid "Import selection - gnoMint" msgstr "" #: gui/import_file_or_directory_dialog.ui:24 msgid "" "Please, choose the more suitable option for\n" "what you want to import:" msgstr "" #: gui/import_file_or_directory_dialog.ui:36 msgid "Import a single file." msgstr "" #: gui/import_file_or_directory_dialog.ui:48 msgid "" "Import a single file, encoded in DER or PEM format, containing\n" "certificates, private keys (encrypted or plain), signing\n" "requests (CSRs), revocation lists (CRLs) or PKCS#12\n" "packages." msgstr "" #: gui/import_file_or_directory_dialog.ui:60 msgid "Import a whole directory." msgstr "" #: gui/import_file_or_directory_dialog.ui:72 msgid "" "Import a directory containing the structure of\n" "a whole CA made with OpenSSL ." msgstr "" #: gui/import_file_or_directory_dialog.ui:100 #, fuzzy msgid "Import" msgstr "_Importar" #: gui/import_password_dialog.ui:20 msgid "" "The whole selected file, or some of its elements, seems to\n" "be cyphered using a password or passphrase.\n" "\n" "For importing the file into gnoMint database, you must\n" "provide an appropiate password." msgstr "" #: gui/import_password_dialog.ui:37 msgid "" "The part that is being imported has the description:" msgstr "" #: gui/import_password_dialog.ui:48 msgid "#Description#" msgstr "" #: gui/main_window.ui:6 #, fuzzy msgid "_Certificates" msgstr "Certificats" #: gui/main_window.ui:8 #, fuzzy msgid "_New certificate database" msgstr "Certificats" #: gui/main_window.ui:9 #, fuzzy msgid "_Open certificate database" msgstr "Certificats" #: gui/main_window.ui:10 msgid "Open _recents" msgstr "" #: gui/main_window.ui:11 msgid "_Save certificate database as..." msgstr "" #: gui/main_window.ui:15 msgid "Add" msgstr "" #: gui/main_window.ui:17 msgid "_Add self-signed CA" msgstr "" #: gui/main_window.ui:18 #, fuzzy msgid "Add _Certificate Request" msgstr "Certificats" #: gui/main_window.ui:29 #, fuzzy msgid "Generate _CRL" msgstr "General" #: gui/main_window.ui:30 msgid "Generate D_H parameters..." msgstr "" #: gui/main_window.ui:31 msgid "Change database pass_word" msgstr "" #: gui/main_window.ui:33 msgid "_Import" msgstr "_Importar" #: gui/main_window.ui:38 msgid "Revoke _all selected..." msgstr "" #: gui/main_window.ui:39 msgid "Delete all selected _CSRs..." msgstr "" #: gui/main_window.ui:41 msgid "_Quit" msgstr "" #: gui/main_window.ui:44 gui/san_manager_widget.ui:34 msgid "_Edit" msgstr "_Edicion" #: gui/main_window.ui:46 msgid "Preferences" msgstr "" #: gui/main_window.ui:49 msgid "_View" msgstr "_Afichatge" #: gui/main_window.ui:51 #, fuzzy msgid "Certificate _Signing Requests" msgstr "Certificats" #: gui/main_window.ui:52 #, fuzzy msgid "_Revoked Certificates" msgstr "Certificats" #: gui/main_window.ui:53 #, fuzzy msgid "E_xpired Certificates" msgstr "Certificats" #: gui/main_window.ui:57 gui/new_ca_window.ui:249 gui/new_ca_window.ui:456 #: gui/new_ca_window.ui:568 gui/new_cert_window.ui:249 #: gui/new_cert_window.ui:331 gui/new_cert_window.ui:653 #: gui/new_req_window.ui:99 gui/new_req_window.ui:349 gui/new_req_window.ui:540 msgid "_Help" msgstr "_Ajuda" #: gui/main_window.ui:58 msgid "About" msgstr "" #: gui/main_window.ui:80 msgid "Create a new database" msgstr "" #: gui/main_window.ui:87 msgid "Open an existing database" msgstr "" #: gui/main_window.ui:99 msgid "Add an autosigned CA" msgstr "" #: gui/main_window.ui:100 msgid "Add autosigned CA certificate" msgstr "" #: gui/main_window.ui:111 msgid "Add a new Certificate Signing Request" msgstr "" #: gui/main_window.ui:112 msgid "Add CSR" msgstr "" #: gui/main_window.ui:129 msgid "Extract the private key of the selected item into a external file" msgstr "" #: gui/main_window.ui:130 msgid "Extract Private Key" msgstr "" #: gui/main_window.ui:142 #, fuzzy msgid "Revoke the selected certificate" msgstr "Certificats" #: gui/main_window.ui:143 msgid "Revoke" msgstr "Revocar" #: gui/main_window.ui:151 msgid "Sign the selected Certificate Signing Request" msgstr "" #: gui/main_window.ui:152 msgid "Sign" msgstr "Signar" #: gui/main_window.ui:164 msgid "Delete the selected Certificate Signing Request" msgstr "" #: gui/main_window.ui:176 #, fuzzy msgid "Quick certificate generation for web server" msgstr "Certificats" #: gui/main_window.ui:177 msgid "Web Server Wizard" msgstr "" #: gui/main_window.ui:188 #, fuzzy msgid "Quick certificate generation for email server" msgstr "Certificats" #: gui/main_window.ui:189 msgid "Email Server Wizard" msgstr "" #: gui/main_window.ui:225 msgid "_Show them" msgstr "" #: gui/main_window.ui:243 msgid "Filter certificates by subject or serial..." msgstr "" #: gui/new_ca_window.ui:20 #, fuzzy msgid "New CA - gnoMint" msgstr "gnoMint" #: gui/new_ca_window.ui:46 #, fuzzy msgid "CA Subject Properties\n" msgstr "Certificats" #: gui/new_ca_window.ui:72 gui/new_cert_window.ui:130 gui/new_req_window.ui:303 msgid "Organization:" msgstr "Organizacion :" #: gui/new_ca_window.ui:83 gui/new_cert_window.ui:141 gui/new_req_window.ui:292 #, fuzzy msgid "Organization Unit:" msgstr "Organizacion :" #: gui/new_ca_window.ui:94 gui/new_cert_window.ui:152 gui/new_req_window.ui:281 msgid "Country:" msgstr "País :" #: gui/new_ca_window.ui:106 gui/new_cert_window.ui:163 #: gui/new_req_window.ui:270 msgid "State or Province name: " msgstr "" #: gui/new_ca_window.ui:117 gui/new_cert_window.ui:174 #: gui/new_req_window.ui:259 #, fuzzy msgid "City: " msgstr "Vila : " #: gui/new_ca_window.ui:164 #, fuzzy msgid "" "CA Root Certificate \n" "Common Name (CN):" msgstr "Nom corrent (CN)" #: gui/new_ca_window.ui:185 gui/new_cert_window.ui:219 #: gui/new_req_window.ui:203 msgid "Email address:" msgstr "" #: gui/new_ca_window.ui:227 gui/new_req_window.ui:326 msgid "Subject Alternative Names (SAN)" msgstr "" #: gui/new_ca_window.ui:265 gui/new_ca_window.ui:480 gui/new_req_window.ui:115 #: gui/new_req_window.ui:373 msgid "_Next" msgstr "" #: gui/new_ca_window.ui:277 gui/new_cert_window.ui:276 #: gui/new_req_window.ui:127 #, fuzzy msgid "CA properties" msgstr "Certificats" #: gui/new_ca_window.ui:296 #, fuzzy msgid "CA Root certificate properties\n" msgstr "Certificats" #: gui/new_ca_window.ui:337 msgid "Months before root certificate expiration:" msgstr "" #: gui/new_ca_window.ui:370 gui/new_req_window.ui:453 msgid "P-256 (256 bits)" msgstr "" #: gui/new_ca_window.ui:371 gui/new_req_window.ui:454 msgid "P-384 (384 bits)" msgstr "" #: gui/new_ca_window.ui:372 gui/new_req_window.ui:455 msgid "P-521 (521 bits)" msgstr "" #: gui/new_ca_window.ui:391 gui/new_req_window.ui:474 #, fuzzy msgid "RSA" msgstr "RSA" #: gui/new_ca_window.ui:400 gui/new_req_window.ui:484 msgid "DSA" msgstr "DSA" #: gui/new_ca_window.ui:409 gui/new_req_window.ui:493 msgid "ECDSA" msgstr "" #: gui/new_ca_window.ui:418 gui/new_req_window.ui:502 msgid "Ed25519" msgstr "" #: gui/new_ca_window.ui:428 gui/new_req_window.ui:512 src/new_ca_window.c:170 #: src/new_ca_window.c:180 src/new_req_window.c:201 src/new_req_window.c:211 msgid "Private key bit length:" msgstr "" #: gui/new_ca_window.ui:439 gui/new_req_window.ui:523 msgid "Private key type:" msgstr "" #: gui/new_ca_window.ui:472 gui/new_ca_window.ui:584 gui/new_req_window.ui:365 #: gui/new_req_window.ui:556 msgid "_Previous" msgstr "" #: gui/new_ca_window.ui:492 gui/new_req_window.ui:385 #, fuzzy msgid "Root certificate prop" msgstr "Certificats" #: gui/new_ca_window.ui:511 #, fuzzy msgid "CA properties\n" msgstr "Certificats" #: gui/new_ca_window.ui:535 msgid "CRL Distribution Point:" msgstr "" #: gui/new_ca_window.ui:542 msgid "" "Please, in this field enter an URL where the CRL for this CA will be " "available. \n" "You can leave it blank. In this case, no CRL Distribution Point will be set " "in the CA \n" "Certificate, and you will be able to set it as a new CA property. \n" "This value will be copied into the certificates generated by this CA.\n" "" msgstr "" #: gui/new_ca_window.ui:604 #, fuzzy msgid "Password protect" msgstr "Senhal :" #: gui/new_cert_window.ui:13 #, fuzzy msgid "New Certificate - gnoMint" msgstr "gnoMint" #: gui/new_cert_window.ui:36 gui/new_cert_window.ui:293 #: gui/new_cert_window.ui:382 #, fuzzy msgid "New Certificate Properties\n" msgstr "Certificats" #: gui/new_cert_window.ui:45 msgid "" "You are about to sign a Certificate Signing Request,\n" "and this way, creating a new certificate. Please\n" "check the certificate properties." msgstr "" #: gui/new_cert_window.ui:64 gui/new_cert_window.ui:75 #: gui/new_cert_window.ui:86 gui/new_cert_window.ui:97 #: gui/new_cert_window.ui:108 gui/new_cert_window.ui:119 msgid "label" msgstr "etiqueta" #: gui/new_cert_window.ui:185 #, fuzzy msgid "" "New certificate \n" "Common Name (CN):" msgstr "Nom corrent (CN)" #: gui/new_cert_window.ui:197 #, fuzzy msgid "Subject Alternative Names:" msgstr "Subjècte" #: gui/new_cert_window.ui:302 msgid "" "You are about to sign a Certificate Signing Request.\n" "Please, choose the Certification Authority you are\n" "going to use for signing it." msgstr "" #: gui/new_cert_window.ui:366 msgid "Choose CA for signing the CSR" msgstr "" #: gui/new_cert_window.ui:397 msgid "Months before certificate expiration:" msgstr "" #: gui/new_cert_window.ui:519 #, fuzzy msgid "Certificate uses" msgstr "Certificats" #: gui/new_cert_window.ui:635 #, fuzzy msgid "Certificate purposes" msgstr "Certificats" #: gui/new_cert_window.ui:688 #, fuzzy msgid "Certificate properties" msgstr "Certificats" #: gui/new_crl_dialog.ui:5 #, fuzzy msgid "New CRL - gnoMint" msgstr "gnoMint" #: gui/new_crl_dialog.ui:17 #, fuzzy msgid "New Certificate Revocation List" msgstr "Certificats" #: gui/new_crl_dialog.ui:26 msgid "" "Please, select the CA for which a Certificate \n" "Revocation List is going to be created:" msgstr "" #: gui/new_req_window.ui:12 #, fuzzy msgid "New certificate request - gnoMint" msgstr "Certificats" #: gui/new_req_window.ui:36 gui/new_req_window.ui:147 gui/new_req_window.ui:403 #, fuzzy msgid "Certificate Request Properties\n" msgstr "Certificats" #: gui/new_req_window.ui:55 msgid "" "The subject of the new certificate request can inherit information\n" "from one of the existing Certification Authorities. This is a must if the\n" "policy of the CA you are going to use is defined to force some fields\n" "of a certificate subject to be the same as the ones in the CA cert\n" "subject." msgstr "" #: gui/new_req_window.ui:67 msgid "Don't inherit any fields from existing Certification Authorities" msgstr "" #: gui/new_req_window.ui:74 msgid "" "Inherit fields according to selected Certification Authority and its policy." msgstr "" #: gui/new_req_window.ui:191 #, fuzzy msgid "" "Certificate\n" " Common Name (CN):" msgstr "Nom corrent (CN)" #: gui/new_req_window.ui:576 msgid "page 3" msgstr "pagina 3" #: gui/preferences_dialog.ui:9 msgid "General Preferences - gnoMint" msgstr "" #: gui/preferences_dialog.ui:26 msgid "" "Automatically export created certificates to\n" "Gnome-keyring certificate store" msgstr "" #: gui/preferences_dialog.ui:36 #, fuzzy msgid "Export options" msgstr "Expiracion" #: gui/san_editor_dialog.ui:5 src/certificate_properties.c:1488 msgid "Subject Alternative Name" msgstr "" #: gui/san_editor_dialog.ui:23 msgid "Type:" msgstr "" #: gui/san_editor_dialog.ui:35 #, fuzzy msgid "DNS" msgstr "DSA" #: gui/san_editor_dialog.ui:36 src/certificate_properties.c:900 #: src/certificate_properties.c:914 src/certificate_properties.c:1040 msgid "IP Address" msgstr "" #: gui/san_editor_dialog.ui:37 msgid "Email" msgstr "" #: gui/san_editor_dialog.ui:38 src/certificate_properties.c:889 #: src/certificate_properties.c:1032 msgid "URI" msgstr "" #: gui/san_editor_dialog.ui:51 msgid "Value:" msgstr "" #: gui/san_editor_dialog.ui:74 msgid "" "Examples:\n" "DNS: example.com, *.example.com\n" "IP: 192.168.1.1, 2001:db8::1\n" "EMAIL: admin@example.com\n" "URI: https://example.com" msgstr "" #: gui/san_manager_widget.ui:26 msgid "_Add" msgstr "" #: gui/san_manager_widget.ui:43 msgid "_Remove" msgstr "" #: gui/wizard_window.ui:9 #, fuzzy msgid "Certificate Wizard" msgstr "Certificats" #: gui/wizard_window.ui:28 #, fuzzy msgid "Quick Certificate Generation" msgstr "Certificats" #: gui/wizard_window.ui:35 msgid "" "This wizard will create a certificate for your server with default " "settings.\n" "Enter the server name (e.g., my.server.dns.name) and select the CA to sign " "it." msgstr "" #: gui/wizard_window.ui:48 msgid "Server Name:" msgstr "" #: gui/wizard_window.ui:59 msgid "Enter the server DNS name (e.g., my.server.dns.name)" msgstr "" #: gui/wizard_window.ui:69 msgid "Signing CA:" msgstr "" #: gui/wizard_window.ui:88 #, fuzzy msgid "Certificate Type:" msgstr "Certificats" #: gui/wizard_window.ui:124 #, fuzzy msgid "_Generate Certificate" msgstr "Certificats" #: gui/wizard_window.ui:140 msgid "Web Server (TLS)" msgstr "" #: gui/wizard_window.ui:141 msgid "Email Server (TLS)" msgstr "" #: src/ca.c:192 #, c-format msgid "Bulk revoke completed with errors. First error: %s" msgstr "" #: src/ca.c:199 #, fuzzy, c-format msgid "%d certificate revoked." msgid_plural "%d certificates revoked." msgstr[0] "Certificats" msgstr[1] "Certificats" #: src/ca.c:225 #, c-format msgid "Bulk delete completed with errors. First error: %s" msgstr "" #: src/ca.c:240 msgid "" "Certificate renewed. A new certificate with a fresh keypair has been added " "to the database alongside the original." msgstr "" #: src/ca.c:606 src/ca-cli-callbacks.c:167 src/ca-cli-callbacks.c:221 #: src/ca-cli-callbacks.c:733 src/ca-cli-callbacks.c:737 #: src/ca-cli-callbacks.c:1362 src/ca-cli-callbacks.c:1369 #: src/certificate_properties.c:246 src/certificate_properties.c:252 msgid "%m/%d/%Y %H:%M GMT" msgstr "" #: src/ca.c:806 src/ca.c:1927 src/ca.c:1958 src/ca.c:2093 src/ca.c:2322 #: src/ca.c:2350 #, fuzzy msgid "Yes" msgstr "_Òc" #: src/ca.c:930 src/certificate_properties.c:653 msgid "Subject" msgstr "Subjècte" #: src/ca.c:965 src/cert_diff.c:122 msgid "Serial" msgstr "Periodic" #: src/ca.c:978 src/cert_diff.c:123 msgid "Activation" msgstr "Activacion" #: src/ca.c:991 src/cert_diff.c:124 msgid "Expiration" msgstr "Expiracion" #: src/ca.c:1004 msgid "Revocation" msgstr "Revocacion" #: src/ca.c:1047 #, c-format msgid "" "Showing only the %d certificate expiring in the next %d days. Close " "this banner to show everything again." msgid_plural "" "Showing only the %d certificates expiring in the next %d days. Close " "this banner to show everything again." msgstr[0] "" msgstr[1] "" #: src/ca.c:1058 #, c-format msgid "" "%d certificate expires in the next %d days. Right-click it to renew " "with a fresh key." msgid_plural "" "%d certificates expire in the next %d days. Right-click each one to " "renew with a fresh key." msgstr[0] "" msgstr[1] "" #: src/ca.c:1369 src/ca.c:1404 src/ca.c:1416 src/export.c:560 src/export.c:639 msgid "There was an error while exporting certificate." msgstr "" #: src/ca.c:1371 src/ca.c:1406 src/ca.c:1418 msgid "There was an error while exporting CSR." msgstr "" #: src/ca.c:1426 src/ca.c:1590 msgid "Certificate exported successfully" msgstr "" #: src/ca.c:1427 msgid "Certificate signing request exported successfully" msgstr "" #: src/ca.c:1445 msgid "Export certificate" msgstr "" #: src/ca.c:1447 msgid "Export certificate signing request" msgstr "" #: src/ca.c:1461 src/ca.c:1523 src/ca.c:1981 msgid "Private key exported successfully" msgstr "" #: src/ca.c:1509 src/ca.c:2057 msgid "Export crypted private key" msgstr "" #: src/ca.c:1568 msgid "Export unencrypted private key" msgstr "" #: src/ca.c:1633 msgid "Export whole certificate in PKCS#12 package" msgstr "" #: src/ca.c:1676 msgid "Unexpected error" msgstr "Error inesperada" #: src/ca.c:1712 msgid "Export CSR - gnoMint" msgstr "" #: src/ca.c:1717 msgid "" "Please, choose which part of the saved Certificate Signing Request you want " "to export:" msgstr "" #: src/ca.c:1722 msgid "" "Export the Certificate Signing Request to a public file, in PEM format." msgstr "" #: src/ca.c:1727 msgid "" "Export the saved private key to a PKCS#8 password-protected file. This " "file should only be accessed by the subject of the Certificate Signing " "Request." msgstr "" #: src/ca.c:1774 msgid "Could not build certificate chain." msgstr "" #: src/ca.c:1781 #, c-format msgid "Failed to write chain: %s" msgstr "" #: src/ca.c:1786 msgid "Certificate chain exported successfully." msgstr "" #: src/ca.c:1807 msgid "Please select a certificate to export its chain." msgstr "" #: src/ca.c:1831 #, fuzzy msgid "Export certificate chain" msgstr "Certificats" #: src/ca.c:1911 msgid "Please select one or more certificates to revoke." msgstr "" #: src/ca.c:1916 #, c-format msgid "Are you sure you want to revoke %d certificate?" msgid_plural "Are you sure you want to revoke %d certificates?" msgstr[0] "" msgstr[1] "" #: src/ca.c:1920 msgid "" "Revoking a certificate will include it in the next CRL, marking it as " "invalid. CSRs in the selection (if any) are not affected; use \"Delete " "selected CSRs\" for those." msgstr "" #: src/ca.c:1927 src/ca.c:1958 src/ca.c:2093 src/ca.c:2322 src/ca.c:2350 #, fuzzy msgid "No" msgstr "_Non" #: src/ca.c:1948 msgid "Please select one or more CSRs to delete." msgstr "" #: src/ca.c:1953 #, c-format msgid "Are you sure you want to delete %d Certificate Signing Request?" msgid_plural "Are you sure you want to delete %d Certificate Signing Requests?" msgstr[0] "" msgstr[1] "" #: src/ca.c:2076 src/ca-cli-callbacks.c:1934 msgid "" "CA certificates cannot be renewed. A renewed CA would have a different key, " "so certificates previously signed by the old CA would no longer chain to it." msgstr "" #: src/ca.c:2087 msgid "" "Renew this certificate?\n" "\n" "gnoMint will issue a new certificate with the same subject and SAN as the " "selected one, signed by the same CA, with a freshly-generated keypair. The " "old certificate will remain in the database — revoke it manually after you " "have deployed the new one." msgstr "" #: src/ca.c:2118 #, c-format msgid "Certificate diff — %d difference" msgid_plural "Certificate diff — %d differences" msgstr[0] "" msgstr[1] "" #: src/ca.c:2147 msgid "Left" msgstr "" #: src/ca.c:2151 msgid "Right" msgstr "" #: src/ca.c:2241 src/ca-cli-callbacks.c:2141 msgid "Cannot read file." msgstr "" #: src/ca.c:2252 msgid "Selected" msgstr "" #: src/ca.c:2278 msgid "Cannot read PEM of the selected certificate." msgstr "" #: src/ca.c:2290 msgid "Compare with PEM file…" msgstr "" #: src/ca.c:2312 msgid "Are you sure you want to revoke this certificate?" msgstr "" #: src/ca.c:2313 msgid "" "Revoking a certificate will include it in the next CRL, marking it as " "invalid. This way, any future use of the certificate will be denied (as long " "as the CRL is checked)." msgstr "" #: src/ca.c:2316 msgid "Are you sure you want to revoke this CA certificate?" msgstr "" #: src/ca.c:2317 msgid "" "Revoking a certificate will include it in the next CRL, marking it as " "invalid. This way, any future use of the certificate will be denied (as long " "as the CRL is checked). \n" "\n" "Moreover, revoking a CA certificate can invalidate all the certificates " "generated with it, so all them should be regenerated with a new CA " "certificate." msgstr "" #: src/ca.c:2349 msgid "Are you sure you want to delete this Certificate Signing Request?" msgstr "" #: src/ca.c:2572 msgid "" "The current password you have entered doesn't match with the actual current " "database password." msgstr "" #: src/ca.c:2588 msgid "Error while changing database password. The operation was cancelled." msgstr "" #: src/ca.c:2593 msgid "Password changed successfully" msgstr "" #: src/ca.c:2601 src/ca-cli-callbacks.c:1186 msgid "" "Error while establishing database password. The operation was cancelled." msgstr "" #: src/ca.c:2606 msgid "Password established successfully" msgstr "" #: src/ca.c:2616 msgid "Error while removing database password. The operation was cancelled." msgstr "" #: src/ca.c:2621 msgid "Password removed successfully" msgstr "" #: src/ca.c:2708 msgid "Change CA password - gnoMint" msgstr "" #: src/ca.c:2840 msgid "Diffie-Hellman parameters saved successfully" msgstr "" #: src/ca.c:2872 msgid "Save Diffie-Hellman parameters" msgstr "" #: src/ca.c:2951 #, c-format msgid "Problem when importing '%s' file" msgstr "" #: src/ca.c:3012 msgid "Select PEM file to import" msgstr "" #: src/ca.c:3018 msgid "Select directory to import" msgstr "" #: src/cert_diff.c:70 msgid "Cannot parse left certificate" msgstr "" #: src/cert_diff.c:72 msgid "Cannot parse right certificate" msgstr "" #: src/cert_diff.c:113 #, fuzzy msgid "Subject CN" msgstr "Subjècte" #: src/cert_diff.c:114 #, fuzzy msgid "Subject O" msgstr "Subjècte" #: src/cert_diff.c:115 #, fuzzy msgid "Subject OU" msgstr "Subjècte" #: src/cert_diff.c:116 #, fuzzy msgid "Subject Country" msgstr "Subjècte" #: src/cert_diff.c:117 #, fuzzy msgid "Subject State" msgstr "Subjècte" #: src/cert_diff.c:118 #, fuzzy msgid "Subject Locality" msgstr "Subjècte" #: src/cert_diff.c:119 #, fuzzy msgid "Subject email" msgstr "Subjècte" #: src/cert_diff.c:120 #, fuzzy msgid "Subject DN" msgstr "Subjècte" #: src/cert_diff.c:121 msgid "Issuer DN" msgstr "" #: src/cert_diff.c:125 #, fuzzy msgid "SAN" msgstr "RSA" #: src/cert_diff.c:126 msgid "Key usage / EKU" msgstr "" #: src/cert_diff.c:127 #, fuzzy msgid "Subject Key ID" msgstr "Subjècte" #: src/cert_diff.c:128 msgid "Authority Key ID" msgstr "" #: src/cert_diff.c:129 msgid "CRL distribution" msgstr "" #: src/cert_diff.c:130 msgid "SHA-1 fingerprint" msgstr "" #: src/cert_diff.c:131 msgid "SHA-256 fingerprint" msgstr "" #: src/cert_renewal.c:111 msgid "Cannot parse generated CSR." msgstr "" #: src/cert_renewal.c:125 msgid "Cannot encrypt new private key." msgstr "" #: src/cert_renewal.c:181 src/cert_renewal.c:341 msgid "Cannot read certificate PEM from database." msgstr "" #: src/cert_renewal.c:186 src/cert_renewal.c:347 #, fuzzy msgid "Cannot parse certificate." msgstr "Certificats" #: src/cert_renewal.c:193 src/cert_renewal.c:354 #, c-format msgid "Cannot find issuer CA in this database (issuer DN: %s)." msgstr "" #: src/cert_renewal.c:204 src/cert_renewal.c:315 msgid "Cannot load parent CA material from database." msgstr "" #: src/cert_renewal.c:212 src/cert_renewal.c:221 src/cert_renewal.c:265 #: src/cert_renewal.c:280 msgid "Cannot decrypt parent CA's private key." msgstr "" #: src/ca-cli.c:42 msgid "newdb " msgstr "" #: src/ca-cli.c:42 msgid "Close current file and create a new database with given filename" msgstr "" #: src/ca-cli.c:43 msgid "opendb " msgstr "" #: src/ca-cli.c:43 msgid "Close current file and open the file with given filename" msgstr "" #: src/ca-cli.c:44 msgid "savedbas " msgstr "" #: src/ca-cli.c:44 msgid "Save the current file with a different filename" msgstr "" #: src/ca-cli.c:45 msgid "Get current status (opened file, no. of certificates, etc...)" msgstr "" #: src/ca-cli.c:46 msgid "" "List the certificates in database. With option --see-revoked, lists also the " "revoked ones" msgstr "" #: src/ca-cli.c:48 msgid "List the CSRs in database" msgstr "" #: src/ca-cli.c:49 msgid "addcsr [ca-id-for-inherit-fields]" msgstr "" #: src/ca-cli.c:49 msgid "Start a new CSR creation process" msgstr "" #: src/ca-cli.c:50 msgid "Start a new self-signed CA creation process" msgstr "" #: src/ca-cli.c:51 msgid "extractcertpkey " msgstr "" #: src/ca-cli.c:51 msgid "" "Extract the private key of the certificate with the given internal id and " "saves it into the given file" msgstr "" #: src/ca-cli.c:54 msgid "extractcsrpkey " msgstr "" #: src/ca-cli.c:54 msgid "" "Extract the private key of the CSR with the given internal id and saves it " "into the given file" msgstr "" #: src/ca-cli.c:57 msgid "revoke " msgstr "" #: src/ca-cli.c:57 msgid "Revoke the certificate with the given internal ID" msgstr "" #: src/ca-cli.c:58 msgid "sign " msgstr "" #: src/ca-cli.c:58 msgid "Generate a certificate signing the given CSR with the given CA" msgstr "" #: src/ca-cli.c:59 msgid "delete " msgstr "" #: src/ca-cli.c:59 msgid "Delete the given CSR from the database" msgstr "" #: src/ca-cli.c:60 msgid "crlgen " msgstr "" #: src/ca-cli.c:60 msgid "Generate a new CRL for the given CA, saving it into the file " msgstr "" #: src/ca-cli.c:61 msgid "dhgen " msgstr "" #: src/ca-cli.c:61 msgid "Generate a new DH-parameter set, saving it into the file " msgstr "" #: src/ca-cli.c:62 msgid "Change password for the current database" msgstr "" #: src/ca-cli.c:63 msgid "importfile " msgstr "" #: src/ca-cli.c:63 msgid "Import the file with the given name " msgstr "" #: src/ca-cli.c:64 msgid "importdir " msgstr "" #: src/ca-cli.c:64 msgid "Import the given directory, as a OpenSSL-CA directory" msgstr "" #: src/ca-cli.c:65 msgid "showcert " msgstr "" #: src/ca-cli.c:65 msgid "Show properties of the given certificate" msgstr "" #: src/ca-cli.c:66 msgid "showcsr " msgstr "" #: src/ca-cli.c:66 msgid "Show properties of the given CSR" msgstr "" #: src/ca-cli.c:67 msgid "showpolicy " msgstr "" #: src/ca-cli.c:67 msgid "Show CA policy" msgstr "" #: src/ca-cli.c:68 msgid "setpolicy " msgstr "" #: src/ca-cli.c:68 msgid "Change the given CA policy" msgstr "" #: src/ca-cli.c:69 msgid "Show program preferences" msgstr "" #: src/ca-cli.c:70 msgid "setpreference " msgstr "" #: src/ca-cli.c:70 msgid "Set the given program preference" msgstr "" #: src/ca-cli.c:71 msgid "addservercert " msgstr "" #: src/ca-cli.c:71 msgid "Quick server certificate generation (cert-type: 'web' or 'email')" msgstr "" #: src/ca-cli.c:72 msgid "renewcert " msgstr "" #: src/ca-cli.c:72 msgid "" "Reissue a non-CA certificate with the same subject + SAN and a fresh " "keypair. The old certificate remains in the database. CA certificates cannot " "be renewed." msgstr "" #: src/ca-cli.c:73 msgid "exportchain " msgstr "" #: src/ca-cli.c:73 msgid "" "Export the full certificate chain (leaf → root) for the given certificate as " "a PEM bundle." msgstr "" #: src/ca-cli.c:74 msgid "revokemany [cert-id ...]" msgstr "" #: src/ca-cli.c:74 msgid "Revoke many certificates at once. Non-cert ids are silently skipped." msgstr "" #: src/ca-cli.c:75 msgid "deletemany [csr-id ...]" msgstr "" #: src/ca-cli.c:75 msgid "Delete many CSRs at once. Non-CSR ids are silently skipped." msgstr "" #: src/ca-cli.c:76 msgid "search " msgstr "" #: src/ca-cli.c:76 msgid "" "List certificates and CSRs whose subject or serial contains (case-" "insensitive)." msgstr "" #: src/ca-cli.c:77 msgid "diff " msgstr "" #: src/ca-cli.c:77 msgid "" "Side-by-side diff of two certificates. Each argument is either a numeric DB " "id or a path to a PEM file." msgstr "" #: src/ca-cli.c:78 msgid "Show about message" msgstr "" #: src/ca-cli.c:79 msgid "Show warranty information" msgstr "" #: src/ca-cli.c:80 msgid "Show distribution information" msgstr "" #: src/ca-cli.c:81 msgid "Show version information" msgstr "Afichar las informacions de version" #: src/ca-cli.c:82 msgid "Show (this) help message" msgstr "" #: src/ca-cli.c:83 src/ca-cli.c:84 src/ca-cli.c:85 msgid "Close database and exit program" msgstr "" #: src/ca-cli.c:132 #, c-format msgid "Opening database %s..." msgstr "" #: src/ca-cli.c:136 #, c-format msgid " OK.\n" msgstr "" #: src/ca-cli.c:138 #, c-format msgid " Error.\n" msgstr " Error.\n" #: src/ca-cli.c:153 #, c-format msgid "" "Notice: %d certificate expires within the next %d days. Use `renewcert ` " "to reissue.\n" msgid_plural "" "Notice: %d certificates expire within the next %d days. Use `renewcert ` " "to reissue.\n" msgstr[0] "" msgstr[1] "" #: src/ca-cli.c:187 #, fuzzy, c-format msgid "" "\n" "\n" "%s version %s \"%s\"\n" "%s\n" "\n" msgstr "" "\n" "\n" "%s version %s\n" "%s\n" "\n" #: src/ca-cli.c:188 #, c-format msgid "" "This program comes with ABSOLUTELY NO WARRANTY;\n" "for details type 'warranty'.\n" msgstr "" #: src/ca-cli.c:189 #, c-format msgid "" "This is free software, and you are welcome to redistribute it\n" "under certain conditions; type 'distribution' for details.\n" "\n" msgstr "" #: src/ca-cli.c:231 #, c-format msgid "Unpaired quotes\n" msgstr "" #: src/ca-cli.c:309 #, c-format msgid "" "Invalid command. Try 'help' for getting a list of recognized commands.\n" msgstr "" #: src/ca-cli.c:313 #, c-format msgid "Incorrect number of parameters.\n" msgstr "" #: src/ca-cli.c:314 #, c-format msgid "Syntax: %s\n" msgstr "" #: src/ca-cli-callbacks.c:62 src/ca-cli-callbacks.c:111 msgid "The file already exists, so it will be overwritten." msgstr "" #: src/ca-cli-callbacks.c:62 src/ca-cli-callbacks.c:111 #: src/ca-cli-callbacks.c:824 msgid "Are you sure? Yes/[No] " msgstr "" #: src/ca-cli-callbacks.c:84 #, c-format msgid "Problem when opening new '%s' CA database\n" msgstr "" #: src/ca-cli-callbacks.c:88 #, c-format msgid "File '%s' opened\n" msgstr "" #: src/ca-cli-callbacks.c:98 #, c-format msgid "Problem when opening '%s' CA database\n" msgstr "" #: src/ca-cli-callbacks.c:132 #, c-format msgid "Current opened file: %s\n" msgstr "" #: src/ca-cli-callbacks.c:133 #, c-format msgid "Number of certificates in file: %d\n" msgstr "" #: src/ca-cli-callbacks.c:134 #, c-format msgid "Number of CSRs in file: %d\n" msgstr "" #: src/ca-cli-callbacks.c:169 msgid " (after 2038?)" msgstr "" #: src/ca-cli-callbacks.c:239 #, c-format msgid "Certificates in Database:\n" msgstr "" #: src/ca-cli-callbacks.c:240 #, c-format msgid "Id.\tIs CA?\tCertificate Subject\tKey in DB?\tActivation\t\tExpiration" msgstr "" #: src/ca-cli-callbacks.c:243 #, c-format msgid "\t\tRevocation\n" msgstr "" #: src/ca-cli-callbacks.c:278 #, c-format msgid "Certificate Requests in Database:\n" msgstr "" #: src/ca-cli-callbacks.c:279 #, c-format msgid "Id.\tParent Id.\tCSR Subject\t\tKey in DB?\n" msgstr "" #: src/ca-cli-callbacks.c:309 src/ca-cli-callbacks.c:1129 #: src/ca-cli-callbacks.c:1522 src/ca-cli-callbacks.c:1551 msgid "The given CA id. is not valid" msgstr "" #: src/ca-cli-callbacks.c:362 #, c-format msgid "" "Please enter data corresponding to subject of the Certificate Signing " "Request:\n" msgstr "" #: src/ca-cli-callbacks.c:365 src/ca-cli-callbacks.c:567 msgid "Enter country (C)" msgstr "" #: src/ca-cli-callbacks.c:373 src/ca-cli-callbacks.c:573 msgid "Enter state or province (ST)" msgstr "" #: src/ca-cli-callbacks.c:382 src/ca-cli-callbacks.c:579 msgid "Enter locality or city (L)" msgstr "" #: src/ca-cli-callbacks.c:390 src/ca-cli-callbacks.c:585 msgid "Enter organization (O)" msgstr "" #: src/ca-cli-callbacks.c:398 src/ca-cli-callbacks.c:591 msgid "Enter organizational unit (OU)" msgstr "" #: src/ca-cli-callbacks.c:405 src/ca-cli-callbacks.c:597 msgid "Enter common name (CN)" msgstr "" #: src/ca-cli-callbacks.c:411 src/ca-cli-callbacks.c:603 msgid "Enter email address (leave blank for none)" msgstr "" #: src/ca-cli-callbacks.c:422 src/ca-cli-callbacks.c:614 msgid "" "Enter Subject Alternative Names (SAN) [format: " "DNS:example.com,IP:192.168.1.1]" msgstr "" #: src/ca-cli-callbacks.c:433 src/ca-cli-callbacks.c:625 msgid "Enter type of key you are going to create (RSA/DSA/ECDSA/Ed25519)" msgstr "" #: src/ca-cli-callbacks.c:472 src/ca-cli-callbacks.c:656 msgid "Enter curve size for ECDSA (256, 384, or 521)" msgstr "" #: src/ca-cli-callbacks.c:482 src/ca-cli-callbacks.c:667 msgid "Enter bitlength for the key (it must be a whole multiple of 1024)" msgstr "" #: src/ca-cli-callbacks.c:487 #, c-format msgid "These are the provided CSR properties:\n" msgstr "" #: src/ca-cli-callbacks.c:489 src/ca-cli-callbacks.c:704 #: src/ca-cli-callbacks.c:1350 src/ca-cli-callbacks.c:1411 #, c-format msgid "Subject:\n" msgstr "" #: src/ca-cli-callbacks.c:490 src/ca-cli-callbacks.c:705 #, c-format msgid "\tDistinguished Name: " msgstr "" #: src/ca-cli-callbacks.c:505 src/ca-cli-callbacks.c:720 #: src/ca-cli-callbacks.c:1354 src/ca-cli-callbacks.c:1414 #, c-format msgid "\tSubject Alternative Names: %s\n" msgstr "" #: src/ca-cli-callbacks.c:506 src/ca-cli-callbacks.c:721 #, c-format msgid "Key pair\n" msgstr "" #: src/ca-cli-callbacks.c:512 src/ca-cli-callbacks.c:727 #, c-format msgid "\tType: %s\n" msgstr "" #: src/ca-cli-callbacks.c:514 #, c-format msgid "\tKey size: fixed (Ed25519)\n" msgstr "" #: src/ca-cli-callbacks.c:516 #, c-format msgid "\tCurve: P-%d\n" msgstr "" #: src/ca-cli-callbacks.c:518 src/ca-cli-callbacks.c:729 #, c-format msgid "\tKey bitlength: %d\n" msgstr "" #: src/ca-cli-callbacks.c:521 src/ca-cli-callbacks.c:740 msgid "Do you want to change anything? Yes/[No] " msgstr "" #: src/ca-cli-callbacks.c:525 msgid "" "You are about to create a Certificate Signing Request with these properties." msgstr "" #: src/ca-cli-callbacks.c:526 src/ca-cli-callbacks.c:745 msgid "Are you sure? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:531 src/ca-cli-callbacks.c:750 #: src/ca-cli-callbacks.c:834 src/ca-cli-callbacks.c:965 #: src/ca-cli-callbacks.c:1086 src/ca-cli-callbacks.c:1115 #: src/ca-cli-callbacks.c:1181 src/ca-cli-callbacks.c:1208 #: src/ca-cli-callbacks.c:1236 src/ca-cli-callbacks.c:1251 #: src/ca-cli-callbacks.c:1581 src/ca-cli-callbacks.c:1624 #: src/ca-cli-callbacks.c:1945 #, c-format msgid "Operation cancelled.\n" msgstr "" #: src/ca-cli-callbacks.c:565 #, c-format msgid "" "Please enter data corresponding to subject of the new Certification " "Authority:\n" msgstr "" #: src/ca-cli-callbacks.c:673 msgid "" "Introduce number of months before expiration of the new certification " "authority" msgstr "" #: src/ca-cli-callbacks.c:693 src/new_ca_window.c:457 msgid "" "This system uses a 32-bit time_t and cannot represent dates after " "2038-01-19. The new CA's expiration date has been clamped to that limit. To " "issue longer-lived CAs, run gnoMint on a 64-bit platform." msgstr "" #: src/ca-cli-callbacks.c:702 #, c-format msgid "These are the provided new CA properties:\n" msgstr "" #: src/ca-cli-callbacks.c:730 #, c-format msgid "Validity\n" msgstr "" #: src/ca-cli-callbacks.c:731 src/ca-cli-callbacks.c:1360 #, c-format msgid "Validity:\n" msgstr "" #: src/ca-cli-callbacks.c:734 src/ca-cli-callbacks.c:1363 #, c-format msgid "\tActivated on: %s\n" msgstr "" #: src/ca-cli-callbacks.c:738 src/ca-cli-callbacks.c:1370 #, c-format msgid "\tExpires on: %s\n" msgstr "" #: src/ca-cli-callbacks.c:744 msgid "" "You are about to create a new Certification Authority with these properties." msgstr "" #: src/ca-cli-callbacks.c:770 src/ca-cli-callbacks.c:818 #: src/ca-cli-callbacks.c:1321 msgid "The given certificate id. is not valid" msgstr "" #: src/ca-cli-callbacks.c:777 src/ca-cli-callbacks.c:801 #, c-format msgid "Private key extracted successfully into file '%s'\n" msgstr "" #: src/ca-cli-callbacks.c:794 src/ca-cli-callbacks.c:946 #: src/ca-cli-callbacks.c:1099 src/ca-cli-callbacks.c:1400 msgid "The given CSR id. is not valid" msgstr "" #: src/ca-cli-callbacks.c:824 msgid "This certificate will be revoked." msgstr "" #: src/ca-cli-callbacks.c:830 #, c-format msgid "Certificate revoked.\n" msgstr "" #: src/ca-cli-callbacks.c:844 src/ca-cli-callbacks.c:1381 #, c-format msgid "Certificate uses:\n" msgstr "" #: src/ca-cli-callbacks.c:847 #, c-format msgid "* Certification Authority use enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:849 #, c-format msgid "* Certification Authority use disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:853 #, c-format msgid "* CRL signing use enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:855 #, c-format msgid "* CRL signing use disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:859 #, c-format msgid "* Digital Signature use enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:861 #, c-format msgid "* Digital Signature use disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:865 src/ca-cli-callbacks.c:867 #, c-format msgid "* Data Encipherment use enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:871 #, c-format msgid "* Key Encipherment use enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:873 #, c-format msgid "* Key Encipherment use disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:877 #, c-format msgid "* Non Repudiation use enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:879 #, c-format msgid "* Non Repudiation use disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:883 #, c-format msgid "* Key Agreement use enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:885 #, c-format msgid "* Key Agreement use disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:888 #, c-format msgid "Certificate purposes:\n" msgstr "" #: src/ca-cli-callbacks.c:891 #, c-format msgid "* Email Protection purpose enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:893 #, c-format msgid "* Email Protection purpose disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:897 #, c-format msgid "* Code Signing purpose enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:899 #, c-format msgid "* Code Signing purpose disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:903 #, c-format msgid "* TLS Web Client purpose enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:905 #, c-format msgid "* TLS Web Client purpose disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:909 #, c-format msgid "* TLS Web Server purpose enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:911 #, c-format msgid "* TLS Web Server purpose disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:915 #, c-format msgid "* Time Stamping purpose enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:917 #, c-format msgid "* Time Stamping purpose disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:921 #, c-format msgid "* OCSP Signing purpose enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:923 #, c-format msgid "* OCSP Signing purpose disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:927 #, c-format msgid "* Any purpose enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:929 #, c-format msgid "* Any purpose disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:953 #, c-format msgid "You are about to sign the following Certificate Signing Request:\n" msgstr "" #: src/ca-cli-callbacks.c:955 #, c-format msgid "with the certificate corresponding to the next CA:\n" msgstr "" #: src/ca-cli-callbacks.c:958 msgid "" "Introduce number of months before expiration of the new certificate (0 to " "cancel)" msgstr "" #: src/ca-cli-callbacks.c:984 src/ca-cli-callbacks.c:1072 #, c-format msgid "" "The new certificate will be created with the following uses and purposes:\n" msgstr "" #: src/ca-cli-callbacks.c:987 msgid "Do you want to change any property of the new certificate? Yes/[No] " msgstr "" #: src/ca-cli-callbacks.c:990 msgid "* Enable Certification Authority use? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:992 #, c-format msgid "* Certification Authority use disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:996 msgid "* Enable CRL Signing? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:998 #, c-format msgid "* CRL signing use disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1002 msgid "* Enable Digital Signature use? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1004 #, c-format msgid "* Digital Signature use disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1008 msgid "Enable Data Encipherment use? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1010 #, c-format msgid "* Data Encipherment use disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1014 msgid "Enable Key Encipherment use? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1016 #, c-format msgid "* Key Encipherment use disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1020 msgid "Enable Non Repudiation use? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1022 #, c-format msgid "* Non Repudiation use disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1026 msgid "Enable Key Agreement use? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1028 #, c-format msgid "* Key Agreement use disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1032 msgid "Enable Email Protection purpose? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1034 #, c-format msgid "* Email Protection purpose disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1038 msgid "Enable Code Signing purpose? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1040 #, c-format msgid "* Code Signing purpose disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1044 msgid "Enable TLS Web Client purpose? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1046 #, c-format msgid "* TLS Web Client purpose disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1050 msgid "Enable TLS Web Server purpose? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1052 #, c-format msgid "* TLS Web Server purpose disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1056 msgid "Enable Time Stamping purpose? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1058 #, c-format msgid "* Time Stamping purpose disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1062 msgid "Enable OCSP Signing purpose? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1063 #, c-format msgid "* OCSP Signing purpose disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1067 msgid "Enable any purpose? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1069 #, c-format msgid "* Any purpose disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1077 msgid "" "All the mandatory data for the certificate generation has been gathered." msgstr "" #: src/ca-cli-callbacks.c:1077 msgid "Do you want to proceed with the signing? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1083 #, c-format msgid "Certificate signed.\n" msgstr "" #: src/ca-cli-callbacks.c:1105 msgid "This Certificate Signing Request will be deleted." msgstr "" #: src/ca-cli-callbacks.c:1105 msgid "This operation cannot be undone. Are you sure? Yes/[No] " msgstr "" #: src/ca-cli-callbacks.c:1111 #, c-format msgid "Certificate Signing Request deleted.\n" msgstr "" #: src/ca-cli-callbacks.c:1136 #, c-format msgid "CRL generated successfully into file '%s'\n" msgstr "" #: src/ca-cli-callbacks.c:1153 msgid "The bit-length of the prime number must be whole multiple of 1024" msgstr "" #: src/ca-cli-callbacks.c:1162 #, c-format msgid "Diffie-Hellman parameters created and saved successfully in file '%s'\n" msgstr "" #: src/ca-cli-callbacks.c:1174 msgid "Currently, the database is not password-protected." msgstr "" #: src/ca-cli-callbacks.c:1174 msgid "Do you want to password protect it? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1175 msgid "" "OK. You need to supply a password for protecting the private keys in the\n" "database, so nobody else but authorized people can use them. This password\n" "will be asked any time gnoMint will make use of any private key in database." msgstr "" #: src/ca-cli-callbacks.c:1178 msgid "Insert password:" msgstr "" #: src/ca-cli-callbacks.c:1178 msgid "Insert password (confirm):" msgstr "" #: src/ca-cli-callbacks.c:1179 src/ca-cli-callbacks.c:1249 msgid "The introduced passwords are distinct." msgstr "" #: src/ca-cli-callbacks.c:1190 #, c-format msgid "Password established successfully.\n" msgstr "" #: src/ca-cli-callbacks.c:1197 #, c-format msgid "Nothing done.\n" msgstr "" #: src/ca-cli-callbacks.c:1201 msgid "Currently, the database IS password-protected." msgstr "" #: src/ca-cli-callbacks.c:1201 msgid "Do you want to remove this password protection? Yes/[No] " msgstr "" #: src/ca-cli-callbacks.c:1205 #, c-format msgid "" "For removing the password-protection, the current database password\n" "must be supplied.\n" msgstr "" #: src/ca-cli-callbacks.c:1206 src/ca-cli-callbacks.c:1234 msgid "Please, insert the current database password (Empty to cancel): " msgstr "" #: src/ca-cli-callbacks.c:1213 src/ca-cli-callbacks.c:1241 msgid "" "The current password you have entered\n" "doesn't match with the actual current database password." msgstr "" #: src/ca-cli-callbacks.c:1218 msgid "" "Error while removing database password. \n" "The operation was cancelled." msgstr "" #: src/ca-cli-callbacks.c:1223 #, c-format msgid "Password removed successfully.\n" msgstr "" #: src/ca-cli-callbacks.c:1233 #, c-format msgid "" "You must supply the current database password before changing the password.\n" msgstr "" #: src/ca-cli-callbacks.c:1245 msgid "" "OK. Now you must supply a new password for protecting the private keys in " "the\n" "database, so nobody else but authorized people can use them. This password\n" "will be asked any time gnoMint will make use of any private key in database." msgstr "" #: src/ca-cli-callbacks.c:1248 msgid "Insert new password:" msgstr "" #: src/ca-cli-callbacks.c:1248 msgid "Insert new password (confirm):" msgstr "" #: src/ca-cli-callbacks.c:1257 msgid "" "Error while changing database password. \n" "The operation was cancelled." msgstr "" #: src/ca-cli-callbacks.c:1263 #, c-format msgid "Password changed successfully.\n" msgstr "" #: src/ca-cli-callbacks.c:1281 msgid "Problem when importing the given file." msgstr "" #: src/ca-cli-callbacks.c:1284 #, c-format msgid "File imported successfully.\n" msgstr "" #: src/ca-cli-callbacks.c:1300 #, c-format msgid "Directory imported successfully.\n" msgstr "" #: src/ca-cli-callbacks.c:1343 #, c-format msgid "Certificate:\n" msgstr "" #: src/ca-cli-callbacks.c:1347 #, c-format msgid "\tSerial number: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1351 src/ca-cli-callbacks.c:1357 #: src/ca-cli-callbacks.c:1412 #, c-format msgid "\tDistinguished Name: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1351 src/ca-cli-callbacks.c:1352 #: src/ca-cli-callbacks.c:1357 src/ca-cli-callbacks.c:1358 msgid "None." msgstr "" #: src/ca-cli-callbacks.c:1352 src/ca-cli-callbacks.c:1358 #: src/ca-cli-callbacks.c:1416 #, c-format msgid "\tUnique ID: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1356 #, c-format msgid "Issuer:\n" msgstr "" #: src/ca-cli-callbacks.c:1365 src/ca-cli-callbacks.c:1372 #, c-format msgid "" "\t (warning: this 32-bit build cannot tell a real post-2038 date from an " "overflow; this value may be inaccurate)\n" msgstr "" #: src/ca-cli-callbacks.c:1375 #, c-format msgid "Fingerprints:\n" msgstr "" #: src/ca-cli-callbacks.c:1376 #, c-format msgid "\tSHA1 fingerprint: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1377 #, c-format msgid "\tMD5 fingerprint: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1378 #, c-format msgid "\tSHA256 fingerprint: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1409 #, c-format msgid "Certificate Signing Request:\n" msgstr "" #: src/ca-cli-callbacks.c:1486 msgid "Generated certs inherit Country from CA " msgstr "" #: src/ca-cli-callbacks.c:1487 msgid "Generated certs inherit State from CA " msgstr "" #: src/ca-cli-callbacks.c:1488 msgid "Generated certs inherit Locality from CA " msgstr "" #: src/ca-cli-callbacks.c:1489 msgid "Generated certs inherit Organization from CA " msgstr "" #: src/ca-cli-callbacks.c:1490 msgid "Generated certs inherit Organizational Unit from CA " msgstr "" #: src/ca-cli-callbacks.c:1491 msgid "Country in generated certs must be the same than in CA " msgstr "" #: src/ca-cli-callbacks.c:1492 msgid "State in generated certs must be the same than in CA " msgstr "" #: src/ca-cli-callbacks.c:1493 msgid "Locality in generated certs must be the same than in CA " msgstr "" #: src/ca-cli-callbacks.c:1494 msgid "Organization in generated certs must be the same than in CA " msgstr "" #: src/ca-cli-callbacks.c:1495 msgid "Organizational Unit in generated certs must be the same than in CA" msgstr "" #: src/ca-cli-callbacks.c:1496 msgid "Maximum number of hours between CRL updates " msgstr "" #: src/ca-cli-callbacks.c:1497 msgid "CRL distribution point (URL where CRL is published) " msgstr "" #: src/ca-cli-callbacks.c:1498 msgid "Maximum number of months before expiration of new certs " msgstr "" #: src/ca-cli-callbacks.c:1499 msgid "CA use enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1500 msgid "CRL Sign use enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1501 msgid "Non reputation use enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1502 msgid "Digital signature use enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1503 msgid "Key encipherment use enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1504 msgid "Key agreement use enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1505 msgid "Data encipherment use enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1506 msgid "TLS web server purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1507 msgid "TLS web client purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1508 msgid "Time stamping purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1509 msgid "Code signing server purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1510 msgid "Email protection purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1511 msgid "OCSP signing purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1512 msgid "Any purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1526 #, c-format msgid "Showing policies of the following certificate:\n" msgstr "" #: src/ca-cli-callbacks.c:1528 #, c-format msgid "" "\n" "Policies:\n" msgstr "" #: src/ca-cli-callbacks.c:1530 #, c-format msgid "Id.\tDescription\t\t\t\t\t\t\t\tValue\n" msgstr "" #: src/ca-cli-callbacks.c:1556 msgid "The given policy id is not valid" msgstr "" #: src/ca-cli-callbacks.c:1568 #, c-format msgid "" "You are about to assign to the policy\n" "'%s' the new value '%s'." msgstr "" #: src/ca-cli-callbacks.c:1572 src/ca-cli-callbacks.c:1616 msgid "Are you sure? Yes/[No] : " msgstr "" #: src/ca-cli-callbacks.c:1577 #, c-format msgid "Policy set correctly to '%s'.\n" msgstr "" #: src/ca-cli-callbacks.c:1591 #, c-format msgid "gnoMint-cli current preferences:\n" msgstr "" #: src/ca-cli-callbacks.c:1593 #, c-format msgid "Id.\tName\t\t\tValue\n" msgstr "" #: src/ca-cli-callbacks.c:1594 #, c-format msgid "0\tGnome keyring support\t%d\n" msgstr "" #: src/ca-cli-callbacks.c:1606 msgid "The given preference id is not valid" msgstr "" #: src/ca-cli-callbacks.c:1612 #, c-format msgid "" "You are about to assign to the preference 'Gnome keyring support' the new " "value '%d'." msgstr "" #: src/ca-cli-callbacks.c:1634 #, c-format msgid "" "%s version %s\n" "%s\n" msgstr "" #: src/ca-cli-callbacks.c:1635 #, c-format msgid "" "\n" "Authors:\n" "%s\n" "\n" msgstr "" #: src/ca-cli-callbacks.c:1636 src/ca-cli-callbacks.c:1637 src/main.c:742 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Cédric VALMARY (Tot en òc) https://launchpad.net/~cvalmary" #: src/ca-cli-callbacks.c:1637 #, c-format msgid "" "Translators:\n" "%s\n" msgstr "" #: src/ca-cli-callbacks.c:1644 msgid "" "THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY\n" "APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT\n" "HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY\n" "OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,\n" "THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n" "PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM\n" "IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF\n" "ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n" "\n" "For more information about warranty, see section 15 onwards of the GNU\n" "General Public License. You should have received a copy of the GNU General\n" "Public License along with this program. If not, see\n" ".\n" "\n" msgstr "" #: src/ca-cli-callbacks.c:1662 msgid "" "This program is free software: you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation, either version 3 of the License, or\n" "(at your option) any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program. If not, see .\n" "\n" msgstr "" #: src/ca-cli-callbacks.c:1677 #, fuzzy, c-format msgid "%s version %s \"%s\"\n" msgstr "" "\n" "\n" "%s version %s\n" "%s\n" "\n" #: src/ca-cli-callbacks.c:1686 #, c-format msgid "Available commands:\n" msgstr "" #: src/ca-cli-callbacks.c:1687 #, c-format msgid "===================\n" msgstr "" #: src/ca-cli-callbacks.c:1697 #, c-format msgid "Exiting gnomint-cli...\n" msgstr "" #: src/ca-cli-callbacks.c:1738 msgid "The given CA id is not valid" msgstr "" #: src/ca-cli-callbacks.c:1750 msgid "Certificate type must be 'web' or 'email'" msgstr "" #: src/ca-cli-callbacks.c:1756 msgid "Server name cannot be empty" msgstr "" #: src/ca-cli-callbacks.c:1760 #, c-format msgid "Creating %s certificate for: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1761 msgid "web server" msgstr "" #: src/ca-cli-callbacks.c:1761 msgid "email server" msgstr "" #: src/ca-cli-callbacks.c:1837 #, c-format msgid "Error: Key generation failed: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1845 #, c-format msgid "Error: CSR generation failed: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1854 #, c-format msgid "Error: Failed to parse generated CSR\n" msgstr "" #: src/ca-cli-callbacks.c:1865 #, c-format msgid "Error: Failed to save CSR: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1879 msgid "CSR created with ID: %" msgstr "" #: src/ca-cli-callbacks.c:1903 #, c-format msgid "Error: Failed to sign certificate: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1910 #, c-format msgid "Certificate generated successfully for: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1911 #, fuzzy, c-format msgid "Certificate type: %s\n" msgstr "Certificats" #: src/ca-cli-callbacks.c:1911 msgid "Web Server" msgstr "" #: src/ca-cli-callbacks.c:1911 msgid "Email Server" msgstr "" #: src/ca-cli-callbacks.c:1925 msgid "Usage: renewcert " msgstr "" #: src/ca-cli-callbacks.c:1930 src/ca-cli-callbacks.c:1968 msgid "The given certificate id is not valid" msgstr "" #: src/ca-cli-callbacks.c:1941 msgid "" "gnoMint will issue a new certificate with the same subject and SAN as this " "one, signed by the same CA, with a fresh keypair. The old certificate stays " "in place." msgstr "" #: src/ca-cli-callbacks.c:1944 msgid "Renew? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1955 msgid "Certificate renewed. New certificate id: %" msgstr "" #: src/ca-cli-callbacks.c:1963 msgid "Usage: exportchain " msgstr "" #: src/ca-cli-callbacks.c:1974 msgid "Cannot build chain PEM for that certificate." msgstr "" #: src/ca-cli-callbacks.c:1979 msgid "Cannot write chain file." msgstr "" #: src/ca-cli-callbacks.c:1985 #, c-format msgid "Full chain (leaf → root) written to %s\n" msgstr "" #: src/ca-cli-callbacks.c:1992 msgid "Usage: revokemany [cert-id ...]" msgstr "" #: src/ca-cli-callbacks.c:2008 #, fuzzy, c-format msgid "%d certificate revoked.\n" msgid_plural "%d certificates revoked.\n" msgstr[0] "Certificats" msgstr[1] "Certificats" #: src/ca-cli-callbacks.c:2016 msgid "Usage: deletemany [csr-id ...]" msgstr "" #: src/ca-cli-callbacks.c:2032 #, c-format msgid "%d CSR deleted.\n" msgid_plural "%d CSRs deleted.\n" msgstr[0] "" msgstr[1] "" #: src/ca-cli-callbacks.c:2092 msgid "Usage: search " msgstr "" #: src/ca-cli-callbacks.c:2099 #, c-format msgid "Matches (id\tserial\tsubject):\n" msgstr "" #: src/ca-cli-callbacks.c:2102 #, c-format msgid "%d match.\n" msgid_plural "%d matches.\n" msgstr[0] "" msgstr[1] "" #: src/ca-cli-callbacks.c:2126 #, c-format msgid "'%s' is not a certificate id in this database." msgstr "" #: src/ca-cli-callbacks.c:2134 #, c-format msgid "Cannot read PEM for cert id %s." msgstr "" #: src/ca-cli-callbacks.c:2152 msgid "Usage: diff " msgstr "" #: src/ca-cli-callbacks.c:2168 msgid "Field" msgstr "" #: src/ca-cli-callbacks.c:2181 #, c-format msgid "" "\n" "%d field differs.\n" msgid_plural "" "\n" "%d fields differ.\n" msgstr[0] "" msgstr[1] "" #: src/ca_creation.c:55 src/csr_creation.c:57 msgid "Generating new RSA key pair" msgstr "" #: src/ca_creation.c:64 src/ca_creation.c:88 src/ca_creation.c:109 #: src/ca_creation.c:128 src/csr_creation.c:66 src/csr_creation.c:87 #: src/csr_creation.c:104 src/csr_creation.c:121 msgid "Key generation failed" msgstr "" #: src/ca_creation.c:78 src/csr_creation.c:79 msgid "Generating new DSA key pair" msgstr "" #: src/ca_creation.c:101 src/csr_creation.c:97 msgid "Generating new ECDSA key pair" msgstr "" #: src/ca_creation.c:120 src/csr_creation.c:114 msgid "Generating new Ed25519 key pair" msgstr "" #: src/ca_creation.c:139 msgid "Generating self-signed CA-Root cert" msgstr "" #: src/ca_creation.c:147 msgid "Certificate generation failed" msgstr "" #: src/ca_creation.c:159 msgid "Creating CA database" msgstr "" #: src/ca_creation.c:168 msgid "CA database creation failed" msgstr "" #: src/ca_creation.c:180 msgid "CA generated successfully" msgstr "" #: src/ca_file.c:207 #, c-format msgid "Error opening filename '%s'" msgstr "" #: src/ca_file.c:310 msgid "" "The selected database has been created with a newer version of gnoMint than " "the currently installed." msgstr "" #: src/ca_file.c:1221 msgid "Cannot find last assigned serial number" msgstr "" #: src/ca_file.c:1410 msgid "Cannot find parent CA in database" msgstr "" #: src/ca_file.c:1600 msgid "" "This certificate already exists in the database: cannot insert it twice." msgstr "" #: src/ca_file.c:2044 msgid "" "The given file contains a valid private key. However, it has not been " "imported to the database because it doesn't match any key-less certificate " "or certificate request in the database." msgstr "" #: src/ca_file.c:2047 msgid "" "The given file contains a valid private key. However, it has not been " "imported to the database because it doesn't match any key-less certificate " "in the database." msgstr "" #: src/certificate_properties.c:151 msgid "" "This 32-bit build cannot represent dates after 2038-01-19, so it cannot " "distinguish a genuine date from a later one that overflowed. This value may " "be inaccurate." msgstr "" #: src/certificate_properties.c:383 msgid "Unknown" msgstr "" #: src/certificate_properties.c:453 src/tls.c:1478 msgid "Certificate signing" msgstr "" #: src/certificate_properties.c:457 msgid "Key encipherment only" msgstr "" #: src/certificate_properties.c:459 msgid "Key decipherment only" msgstr "" #: src/certificate_properties.c:472 msgid "Version" msgstr "" #: src/certificate_properties.c:507 msgid "Serial Number" msgstr "" #: src/certificate_properties.c:522 src/certificate_properties.c:1262 msgid "Signature" msgstr "" #: src/certificate_properties.c:525 src/certificate_properties.c:676 #: src/certificate_properties.c:679 src/certificate_properties.c:1228 msgid "Algorithm" msgstr "" #: src/certificate_properties.c:529 src/certificate_properties.c:686 #: src/certificate_properties.c:726 src/certificate_properties.c:763 #: src/certificate_properties.c:1232 msgid "Parameters" msgstr "" #: src/certificate_properties.c:529 src/certificate_properties.c:686 #: src/certificate_properties.c:763 src/certificate_properties.c:767 #: src/certificate_properties.c:781 src/certificate_properties.c:790 #: src/certificate_properties.c:1232 msgid "(unknown)" msgstr "" #: src/certificate_properties.c:563 msgid "Issuer" msgstr "" #: src/certificate_properties.c:598 msgid "Validity" msgstr "" #: src/certificate_properties.c:603 msgid "Not Before" msgstr "" #: src/certificate_properties.c:610 msgid "Not After" msgstr "" #: src/certificate_properties.c:616 msgid "Note" msgstr "" #: src/certificate_properties.c:617 msgid "" "This 32-bit build cannot represent dates after 2038-01-19, so a value marked " "⚠ may be a later date that overflowed and is inaccurate." msgstr "" #: src/certificate_properties.c:673 msgid "Subject Public Key Info" msgstr "" #: src/certificate_properties.c:690 msgid "RSA PublicKey" msgstr "" #: src/certificate_properties.c:702 msgid "Modulus" msgstr "" #: src/certificate_properties.c:710 msgid "Public Exponent" msgstr "" #: src/certificate_properties.c:755 msgid "DSA PublicKey" msgstr "" #: src/certificate_properties.c:767 msgid "Subject Public Key" msgstr "" #: src/certificate_properties.c:781 msgid "Issuer Unique ID" msgstr "" #: src/certificate_properties.c:790 msgid "Subject Unique ID" msgstr "" #: src/certificate_properties.c:813 src/certificate_properties.c:836 #: src/certificate_properties.c:945 src/certificate_properties.c:1058 #: src/certificate_properties.c:1085 src/certificate_properties.c:1124 #: src/certificate_properties.c:1182 src/certificate_properties.c:1457 #: src/san_manager.c:399 msgid "Value" msgstr "" #: src/certificate_properties.c:875 src/certificate_properties.c:1018 msgid "DNS Name" msgstr "" #: src/certificate_properties.c:882 src/certificate_properties.c:1025 msgid "RFC822 Name" msgstr "" #: src/certificate_properties.c:905 src/certificate_properties.c:919 #: src/certificate_properties.c:927 msgid "IP" msgstr "" #: src/certificate_properties.c:936 src/certificate_properties.c:1049 msgid "Directory Name" msgstr "" #: src/certificate_properties.c:973 src/certificate_properties.c:1164 msgid "TRUE" msgstr "" #: src/certificate_properties.c:973 src/certificate_properties.c:1164 msgid "FALSE" msgstr "" #: src/certificate_properties.c:977 msgid "CA" msgstr "" #: src/certificate_properties.c:981 msgid "Path Length Constraint" msgstr "" #: src/certificate_properties.c:1154 msgid "Extensions" msgstr "" #: src/certificate_properties.c:1166 msgid "Critical" msgstr "" #: src/certificate_properties.c:1199 msgid "Certificate" msgstr "" #: src/certificate_properties.c:1225 msgid "Signature Algorithm" msgstr "" #: src/certificate_properties.c:1446 msgid "Name" msgstr "" #: src/certificate_properties.c:1477 src/tls.c:1494 msgid "TLS WWW Server" msgstr "" #: src/certificate_properties.c:1478 msgid "TLS WWW Client" msgstr "" #: src/certificate_properties.c:1484 msgid "Subject Directory Attributes" msgstr "" #: src/certificate_properties.c:1485 msgid "Subject Key Identifier" msgstr "" #: src/certificate_properties.c:1486 msgid "Key Usage" msgstr "" #: src/certificate_properties.c:1487 msgid "Private Key Usage Period" msgstr "" #: src/certificate_properties.c:1489 msgid "Basic Constraints" msgstr "" #: src/certificate_properties.c:1490 msgid "Name Constraints" msgstr "" #: src/certificate_properties.c:1491 msgid "CRL Distribution Points" msgstr "" #: src/certificate_properties.c:1492 msgid "Certificate Policies" msgstr "" #: src/certificate_properties.c:1493 msgid "Policy Mappings" msgstr "" #: src/certificate_properties.c:1494 msgid "Authority Key Identifier" msgstr "" #: src/certificate_properties.c:1495 msgid "Policy Constraints" msgstr "" #: src/certificate_properties.c:1496 msgid "Extended Key Usage" msgstr "" #: src/certificate_properties.c:1497 msgid "Delta CRL Distribution Point" msgstr "" #: src/certificate_properties.c:1498 msgid "Inhibit Any-Policy" msgstr "" #: src/creation_process_window.c:69 msgid "CA creation process finished" msgstr "" #: src/creation_process_window.c:193 msgid "Creation process cancelled" msgstr "" #: src/creation_process_window.c:215 msgid "CSR creation process finished" msgstr "" #: src/creation_process_window.c:288 msgid "Creating Certificate Signing Request" msgstr "" #: src/crl.c:101 msgid "CRL generated successfully" msgstr "" #: src/crl.c:146 msgid "Export Certificate Revocation List" msgstr "" #: src/crl.c:180 src/crl.c:253 src/crl.c:299 msgid "There was an error while generating CRL." msgstr "" #: src/crl.c:189 msgid "There was an error while writing CRL." msgstr "" #: src/crl.c:201 src/crl.c:227 src/crl.c:268 src/crl.c:330 src/crl.c:351 msgid "There was an error while exporting CRL." msgstr "" #: src/crl.c:238 src/crl.c:369 msgid "There was an error while getting revoked certificates." msgstr "" #: src/csr_creation.c:131 msgid "Generating CSR" msgstr "" #: src/csr_creation.c:140 msgid "CSR generation failed" msgstr "" #: src/csr_creation.c:151 msgid "Saving CSR in database" msgstr "" #: src/csr_creation.c:169 msgid "CSR couldn't be saved" msgstr "" #: src/csr_creation.c:180 msgid "CSR generated successfully" msgstr "" #: src/csr_properties.c:91 msgid "" "This Certificate Signing Request has its corresponding private key saved " "in a external file." msgstr "" #: src/dialog.c:123 #, c-format msgid "" "\n" "The password must have, at least, %d characters\n" msgstr "" #: src/dialog.c:581 msgid "To do. Feature not implemented yet." msgstr "" #: src/export.c:43 src/export.c:48 src/export.c:53 msgid "There was an error while saving Diffie-Hellman parameters." msgstr "" #: src/export.c:79 src/export.c:138 src/export.c:146 src/export.c:200 #: src/export.c:210 src/export.c:304 src/export.c:341 src/export.c:376 #: src/export.c:384 src/export.c:424 src/export.c:433 src/export.c:474 msgid "There was an error while exporting private key." msgstr "" #: src/export.c:99 src/export.c:284 src/export.c:357 src/export.c:455 msgid "There was an error while getting private key." msgstr "" #: src/export.c:110 src/export.c:248 msgid "There was an error while uncrypting private key." msgstr "" #: src/export.c:113 src/export.c:264 msgid "" "You need to supply a passphrase for protecting the exported private key, so " "nobody else but authorized people can use it. This passphrase will be asked " "by any application that will make use of the private key." msgstr "" #: src/export.c:116 src/export.c:267 src/export.c:536 src/export.c:715 msgid "Insert passphrase (8 characters or more):" msgstr "" #: src/export.c:116 src/export.c:267 src/export.c:536 src/export.c:715 msgid "Insert passphrase (confirm):" msgstr "" #: src/export.c:117 src/export.c:268 src/export.c:537 src/export.c:716 msgid "The introduced passphrases are distinct." msgstr "" #: src/export.c:120 src/export.c:178 msgid "Operation cancelled." msgstr "" #: src/export.c:130 src/export.c:190 msgid "There was an error while password-protecting private key." msgstr "" #: src/export.c:368 src/export.c:415 msgid "There was an error while decrypting private key." msgstr "" #: src/export.c:513 src/export.c:747 msgid "Unsupported operation: you cannot generate a PKCS#12 for a CSR." msgstr "" #: src/export.c:521 src/export.c:530 src/export.c:695 src/export.c:731 msgid "" "There was an error while getting the certificate and private key from the " "internal database." msgstr "" #: src/export.c:533 src/export.c:712 msgid "" "You need to supply a passphrase for protecting the exported certificate, so " "nobody else but authorized people can use it. This passphrase will be asked " "by any application that will import the certificate." msgstr "" #: src/export.c:555 src/export.c:629 msgid "There was an error while generating the PKCS#12 package." msgstr "" #: src/export.c:569 src/export.c:578 src/export.c:652 src/export.c:663 msgid "There was an error while exporting the certificate." msgstr "" #: src/gnomint-cli.c:59 msgid "- A Certification Authority manager" msgstr "" #: src/gnomint-cli.c:62 #, c-format msgid "Failed to initialize: %s\n" msgstr "" #: src/import.c:171 #, c-format msgid "" "The whole selected file, or some of its elements, seems to\n" "be cyphered using a password or passphrase. For importing\n" "the file into gnoMint database, you must provide an \n" "appropriate password.\n" msgstr "" #: src/import.c:176 #, c-format msgid "Please introduce password for `%s'" msgstr "" #: src/import.c:218 #, c-format msgid "" "Couldn't import the certificate request. \n" "The database returned this error: \n" "\n" "'%s'" msgstr "" #: src/import.c:298 msgid "" "The imported certificate expires after 2038-01-19, a date this 32-bit build " "cannot represent. Its stored expiration has been capped and may be " "inaccurate. The certificate itself is unchanged; open it on a 64-bit system " "to see the exact date." msgstr "" #: src/import.c:310 #, c-format msgid "" "Couldn't import the certificate. \n" "The database returned this error: \n" "\n" "'%s'" msgstr "" #: src/import.c:666 src/import.c:852 msgid "PKCS#8 crypted private key" msgstr "" #: src/import.c:677 src/import.c:862 msgid "The given password doesn't match the one used for crypting this part" msgstr "" #: src/import.c:771 msgid "Encrypted PKCS#12 bag" msgstr "" #: src/import.c:788 msgid "" "The given password doesn't match with the password used for encrypting this " "part." msgstr "" #: src/import.c:999 msgid "Couldn't find any supported format in the given file" msgstr "" #: src/import.c:1012 src/import.c:1363 #, c-format msgid "Couldn't open %s file. Check permissions." msgstr "" #: src/import.c:1039 #, c-format msgid "Couldn't recognize the file %s as a RSA or DSA private key." msgstr "" #: src/import.c:1055 #, c-format msgid "Private key for %s" msgstr "" #: src/import.c:1057 #, c-format msgid "Private key %s" msgstr "" #: src/import.c:1092 msgid "Problem while calling to openssl for decyphering private key." msgstr "" #: src/import.c:1100 #, c-format msgid "" "OpenSSL has returned the following error while trying to decypher the " "private key:\n" "\n" "%s" msgstr "" #: src/import.c:1211 msgid "There was a problem while importing the public CA root certificate" msgstr "" #: src/import.c:1225 msgid "CA Root certificate" msgstr "" #: src/import.c:1227 msgid "" "There was a problem while importing the private key corresponding to CA root " "certificate" msgstr "" #: src/import.c:1237 msgid "There was a problem while opening the directory certs/." msgstr "" #: src/import.c:1261 msgid "There was a problem while opening the directory newcerts/." msgstr "" #: src/import.c:1288 msgid "There was a problem while opening the directory req." msgstr "" #: src/import.c:1314 msgid "There was a problem while opening the directory crl/." msgstr "" #: src/import.c:1336 msgid "There was a problem while opening the directory keys/." msgstr "" #: src/import.c:1394 msgid "Files in the directory don't belong to any supported CA format." msgstr "" #: src/main.c:567 #, c-format msgid "" "Problem when creating '%s' CA database:\n" "%s" msgstr "" #: src/main.c:577 #, c-format msgid "Problem when opening new '%s' CA database" msgstr "" #: src/main.c:591 msgid "Create new CA database" msgstr "" #: src/main.c:616 #, c-format msgid "Problem when opening '%s' CA database" msgstr "" #: src/main.c:630 msgid "Open CA database" msgstr "" #: src/main.c:662 msgid "Save CA database as..." msgstr "" #: src/main.c:722 msgid "" "gnoMint is a program for creating and managing Certification Authorities, " "and their certificates" msgstr "" #: src/main.c:725 msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU General Public License as published by the Free " "Software Foundation; either version 3 of the License, or (at your option) " "any later version.\n" "\n" "This program is distributed in the hope that it will be useful, but WITHOUT " "ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or " "FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for " "more details.\n" "\n" "You should have received a copy of the GNU General Public License along with " "this program; if not, write to the Free Software Foundation, Inc., 51 " "Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA." msgstr "" #: src/main.c:741 msgid "Code collaborators" msgstr "" #: src/new_ca_window.c:191 src/new_req_window.c:222 msgid "ECDSA curve:" msgstr "" #: src/new_ca_window.c:219 msgid "Please enter a Common Name (CN) for the CA." msgstr "" #: src/new_cert.c:197 msgid "" "The policy of this CA obligue the country field of the certificates to be " "the same as the one in the CA cert." msgstr "" #: src/new_cert.c:203 msgid "" "The policy of this CA obligue the state/province field of the certificates " "to be the same as the one in the CA cert." msgstr "" #: src/new_cert.c:209 msgid "" "The policy of this CA obligue the locality/city field of the certificates to " "be the same as the one in the CA cert." msgstr "" #: src/new_cert.c:215 msgid "" "The policy of this CA obligue the organization field of the certificates to " "be the same as the one in the CA cert." msgstr "" #: src/new_cert.c:221 msgid "" "The policy of this CA obligue the organizational unit field of the " "certificates to be the same as the one in the CA cert." msgstr "" #: src/new_cert.c:659 msgid "" "The expiration date of the new certificate is after the expiration date of " "the CA certificate.\n" "\n" "According to the current standards, this is not allowed. The new certificate " "will be created with the same expiration date as the CA certificate." msgstr "" #: src/new_cert.c:734 msgid "" "This system uses a 32-bit time_t and cannot represent dates after " "2038-01-19. The new certificate's expiration date has been clamped to that " "limit. To issue longer-lived certificates, run gnoMint on a 64-bit platform." msgstr "" #: src/new_cert.c:770 src/new_cert.c:809 src/new_cert.c:838 msgid "Error while signing CSR." msgstr "" #: src/new_req_window.c:374 msgid "Please enter a Common Name (CN) for the certificate request." msgstr "" #: src/pkey_manage.c:124 #, c-format msgid "" "The file that holds private key for certificate '%s' is password-protected.\n" "\n" "Please, insert the password corresponding to this file." msgstr "" #: src/pkey_manage.c:163 #, c-format msgid "" "The file that holds private key for certificate\n" "'%s' is password-protected.\n" "\n" msgstr "" #: src/pkey_manage.c:211 src/pkey_manage.c:303 msgid "" "The given password doesn't match with the one used while crypting the file." msgstr "" #: src/pkey_manage.c:226 src/pkey_manage.c:315 src/pkey_manage.c:476 msgid "" "The file designated in database contains a private key, but it is not the " "private key corresponding to the certificate." msgstr "" #: src/pkey_manage.c:229 src/pkey_manage.c:318 src/pkey_manage.c:479 msgid "" "The file designated in database doesn't contain any recognized private key." msgstr "" #: src/pkey_manage.c:233 src/pkey_manage.c:500 msgid "The file designated in database couldn't be opened." msgstr "" #: src/pkey_manage.c:236 src/pkey_manage.c:503 msgid "The file designated in database doesn't exist." msgstr "" #: src/pkey_manage.c:360 msgid "Select private key file" msgstr "" #: src/pkey_manage.c:1069 src/pkey_manage.c:1164 msgid "The given password doesn't match the one used in the database" msgstr "" #: src/pkey_manage.c:1151 #, c-format msgid "" "This action requires using one or more private keys saved in the database.\n" msgstr "" #: src/pkey_manage.c:1152 msgid "Please insert the database password:" msgstr "" #: src/san_manager.c:71 msgid "Value cannot be empty" msgstr "" #: src/san_manager.c:82 msgid "Invalid DNS name. Use format: example.com or *.example.com" msgstr "" #: src/san_manager.c:93 msgid "Invalid IP address. Use IPv4 (e.g., 192.168.1.1) or IPv6 format" msgstr "" #: src/san_manager.c:103 msgid "Invalid email address. Use format: user@example.com" msgstr "" #: src/san_manager.c:113 msgid "Invalid URI. Must start with http://, https://, ftp://, or ldap://" msgstr "" #: src/san_manager.c:389 msgid "Type" msgstr "" #: src/tls.c:198 src/tls.c:231 src/tls.c:276 src/tls.c:307 #, c-format msgid "Error initializing private key structure." msgstr "" #: src/tls.c:204 src/tls.c:237 src/tls.c:281 src/tls.c:311 #, c-format msgid "Error creating private key: %d" msgstr "" #: src/tls.c:215 src/tls.c:248 src/tls.c:289 src/tls.c:321 src/tls.c:794 #: src/tls.c:1204 #, c-format msgid "Error exporting private key to PEM structure." msgstr "" #: src/tls.c:656 #, c-format msgid "Error when initializing certificate structure" msgstr "" #: src/tls.c:662 src/tls.c:956 #, c-format msgid "Error when setting certificate version" msgstr "" #: src/tls.c:672 src/tls.c:969 #, c-format msgid "Error when setting certificate serial number" msgstr "" #: src/tls.c:681 src/tls.c:978 #, c-format msgid "Error when setting activation time" msgstr "" #: src/tls.c:686 src/tls.c:986 #, c-format msgid "Error when setting expiration time" msgstr "" #: src/tls.c:740 src/tls.c:1040 #, c-format msgid "Error when setting basicConstraint extension" msgstr "" #: src/tls.c:745 src/tls.c:1082 #, c-format msgid "Error when setting keyUsage extension" msgstr "" #: src/tls.c:756 src/tls.c:864 src/tls.c:1120 #, c-format msgid "Error when setting Subject Alternative Name extension" msgstr "" #: src/tls.c:768 src/tls.c:1056 #, c-format msgid "Error when setting subject key identifier extension" msgstr "" #: src/tls.c:772 src/tls.c:1030 #, c-format msgid "Error when setting authority key identifier extension" msgstr "" #: src/tls.c:782 #, c-format msgid "Error when signing self-signed certificate" msgstr "" #: src/tls.c:813 #, c-format msgid "Error when initializing privkey structure" msgstr "" #: src/tls.c:817 #, c-format msgid "Error when importing private key into privkey structure" msgstr "" #: src/tls.c:821 #, c-format msgid "Error when initializing csr structure" msgstr "" #: src/tls.c:825 #, c-format msgid "Error when setting csr version" msgstr "" #: src/tls.c:869 #, c-format msgid "Error when signing self-signed csr" msgstr "" #: src/tls.c:880 #, c-format msgid "Error exporting CSR to PEM structure." msgstr "" #: src/tls.c:933 #, c-format msgid "Error when importing CA private key" msgstr "" #: src/tls.c:940 #, c-format msgid "Error when initializing crt structure" msgstr "" #: src/tls.c:948 #, c-format msgid "Error when copying data from CSR to certificate structure" msgstr "" #: src/tls.c:1182 #, c-format msgid "Error when signing certificate: %s" msgstr "" #: src/tls.c:1482 msgid "Key encipher only" msgstr "" #: src/tls.c:1484 msgid "Key decipher only" msgstr "" #: src/tls.c:1496 msgid "TLS WWW Client." msgstr "" #: src/wizard_window.c:239 #, c-format msgid "" "Key generation failed:\n" "%s" msgstr "" #: src/wizard_window.c:249 #, c-format msgid "" "CSR generation failed:\n" "%s" msgstr "" #: src/wizard_window.c:260 msgid "Failed to parse generated CSR." msgstr "" #: src/wizard_window.c:271 #, c-format msgid "" "Failed to save CSR:\n" "%s" msgstr "" #: src/wizard_window.c:294 #, c-format msgid "" "Failed to sign certificate:\n" "%s" msgstr "" #: src/wizard_window.c:297 msgid "Certificate generated successfully!" msgstr "" #: src/wizard_window.c:311 msgid "Please enter a server name." msgstr "" #: src/wizard_window.c:318 msgid "Please select a Certificate Authority." msgstr "" #: src/wizard_window.c:325 msgid "Invalid Certificate Authority selected." msgstr "" #: src/wizard_window.c:412 msgid "No Certificate Authority found. Please create a CA first." msgstr "" #~ msgid "Certificates" #~ msgstr "Certificats" #, fuzzy #~ msgid "<b>Fingerprints</b>" #~ msgstr "Emprenchas digitalas" #~ msgid "gtk-ok" #~ msgstr "gtk-ok" gnomint-1.6.4/po/de.po0000644000000000000000000036233615212761317013323 0ustar00rootroot# German translation for gnomint # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the gnomint package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: gnomint\n" "Report-Msgid-Bugs-To: davefx@gmail.com\n" "POT-Creation-Date: 2026-06-12 10:43+0000\n" "PO-Revision-Date: 2010-04-02 04:45+0000\n" "Last-Translator: Mario Blättermann \n" "Language-Team: German \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-08-11 09:00+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: gconf/org.gnome.gnomint.gschema.xml:7 msgid "Window size" msgstr "Fenstergröße" #: gconf/org.gnome.gnomint.gschema.xml:8 #, fuzzy msgid "" "The (width,length) size gnoMint should take when started. This cannot be " "smaller than (320,200)." msgstr "" "Die Größe (Breite,Länge) des gnoMint-Fensters beim Start. Muss midestens " "(320,200) sein." #: gconf/org.gnome.gnomint.gschema.xml:16 msgid "Revoked certificates visibility" msgstr "Widerrufene Zertifikate sind sichtbar" #: gconf/org.gnome.gnomint.gschema.xml:17 msgid "Whether the revoked certificates should be visible." msgstr "Legt fest, ob die widerrufenen Zertifikate sichtbar sein sollen." #: gconf/org.gnome.gnomint.gschema.xml:24 #, fuzzy msgid "Expired certificates visibility" msgstr "Widerrufene Zertifikate sind sichtbar" #: gconf/org.gnome.gnomint.gschema.xml:25 msgid "" "Whether already-expired certificates should be visible in the certificates " "tree. CAs are always visible regardless of this setting so that any still-" "valid certificates they signed remain reachable." msgstr "" #: gconf/org.gnome.gnomint.gschema.xml:35 msgid "Days before expiration to highlight certificates in amber" msgstr "" #: gconf/org.gnome.gnomint.gschema.xml:36 msgid "" "Certificates whose effective validity ends within this many days are shown " "in amber in the certificates tree, as a heads-up that they should be renewed " "soon. Setting this to 0 disables the amber highlight (certificates appear " "either normally or in gray for already-expired)." msgstr "" #: gconf/org.gnome.gnomint.gschema.xml:47 msgid "Certificate requests visibility" msgstr "Zertifikat-Anfragen sind sichtbar" #: gconf/org.gnome.gnomint.gschema.xml:48 msgid "Whether the certificate requests should be visible." msgstr "Legt fest, ob die Zertifikatanfragen sichtbar sein sollen." #: gconf/org.gnome.gnomint.gschema.xml:55 msgid "Automatic exporting of certificates for gnome-keyring" msgstr "Automatischer Export von Zertifikaten in den GNOME-Schlüsselbund" #: gconf/org.gnome.gnomint.gschema.xml:56 #, fuzzy msgid "" "Whether the created or imported certificates are automatically exported to " "gnome-keyring certificate-store." msgstr "" "Legt fest, ob die erzeugten oder importierten Zertifikate automatisch in die " "Zertifikatverwaltung des GNOME-Schlüsselbundes exportiert werden sollen." #: gui/certificate_popup_menu.ui:7 gui/csr_popup_menu.ui:7 #: gui/main_window.ui:45 #, fuzzy msgid "Properties" msgstr "Zertifikat-Eigenschaften" #: gui/certificate_popup_menu.ui:13 gui/main_window.ui:35 #, fuzzy msgid "Export full c_hain..." msgstr "Zertifikat exportieren" #: gui/certificate_popup_menu.ui:17 gui/csr_popup_menu.ui:13 #: gui/main_window.ui:34 msgid "E_xport" msgstr "E_xportieren" #: gui/certificate_popup_menu.ui:21 gui/csr_popup_menu.ui:17 #: gui/main_window.ui:23 msgid "Extrac_t private key" msgstr "Geheimen Schlüssel en_tpacken" #: gui/certificate_popup_menu.ui:27 gui/main_window.ui:24 msgid "Re_new with fresh key" msgstr "" #: gui/certificate_popup_menu.ui:31 msgid "_Compare with PEM file…" msgstr "" #: gui/certificate_popup_menu.ui:35 gui/main_window.ui:25 msgid "Revo_ke" msgstr "Wider_rufen" #: gui/certificate_popup_menu.ui:41 gui/main_window.ui:21 #, fuzzy msgid "Add _Web Server Certificate (wizard)" msgstr "Zertifikat" #: gui/certificate_popup_menu.ui:45 gui/main_window.ui:22 #, fuzzy msgid "Add _Email Server Certificate (wizard)" msgstr "TLS-Webserver" #: gui/certificate_properties_dialog.ui:19 msgid "Certificate properties - gnoMint" msgstr "Zertifikat-Eigenschaften - gnoMint" #: gui/certificate_properties_dialog.ui:54 #, fuzzy msgid "This certificate has been verified for the following uses:" msgstr "" "Dieses Zertifikat wurde für folgende Verwendungsmöglichkeiten verifiziert:" "" #: gui/certificate_properties_dialog.ui:77 msgid "MD5FINGERPRINT" msgstr "MD5FINGERPRINT" #: gui/certificate_properties_dialog.ui:88 msgid "SHA1FINGERPRINT" msgstr "SHA1FINGERPRINT" #: gui/certificate_properties_dialog.ui:99 #: gui/certificate_properties_dialog.ui:132 #: gui/certificate_properties_dialog.ui:176 #: gui/certificate_properties_dialog.ui:231 gui/creation_process_window.ui:15 #: gui/creation_process_window.ui:61 gui/csr_properties_dialog.ui:109 #: gui/new_ca_window.ui:56 gui/new_ca_window.ui:306 gui/new_ca_window.ui:521 #: gui/new_req_window.ui:46 gui/new_req_window.ui:157 gui/new_req_window.ui:413 msgid " " msgstr " " #: gui/certificate_properties_dialog.ui:110 #, fuzzy msgid "CertExpirationDate" msgstr "Ablaufdatum" #: gui/certificate_properties_dialog.ui:121 #, fuzzy msgid "CertActivationDate" msgstr "Aktivierung" #: gui/certificate_properties_dialog.ui:143 msgid "CAOU" msgstr "" #: gui/certificate_properties_dialog.ui:154 #, fuzzy msgid "CAO" msgstr "Zertifizierungsstelle" #: gui/certificate_properties_dialog.ui:165 msgid "CACN" msgstr "" #: gui/certificate_properties_dialog.ui:187 msgid "CertSN" msgstr "" #: gui/certificate_properties_dialog.ui:198 gui/csr_properties_dialog.ui:63 #, fuzzy msgid "SubjectOU" msgstr "Fehler beim Setzen der basicConstraint-Erweiterung" #: gui/certificate_properties_dialog.ui:209 gui/csr_properties_dialog.ui:87 #, fuzzy msgid "SubjectO" msgstr "Fehler beim Setzen der basicConstraint-Erweiterung" #: gui/certificate_properties_dialog.ui:220 gui/csr_properties_dialog.ui:98 #, fuzzy msgid "SubjectCN" msgstr "Land" #: gui/certificate_properties_dialog.ui:242 msgid "MD5 fingerprint" msgstr "MD5-Fingerabdruck" #: gui/certificate_properties_dialog.ui:253 #, fuzzy msgid "SHA1 fingerprint" msgstr "SHA1-Fingerabdruck" #: gui/certificate_properties_dialog.ui:264 #, fuzzy msgid "Fingerprints" msgstr "Fingerabdrücke:\n" #: gui/certificate_properties_dialog.ui:276 msgid "Expires on" msgstr "Läuft ab am" #: gui/certificate_properties_dialog.ui:287 msgid "Activated on" msgstr "Aktiviert am" #: gui/certificate_properties_dialog.ui:298 msgid "Validity" msgstr "Gültigkeit" #: gui/certificate_properties_dialog.ui:310 #: gui/certificate_properties_dialog.ui:389 gui/csr_properties_dialog.ui:120 msgid "Organizational Unit (OU)" msgstr "Organisationseinheit (OU)" #: gui/certificate_properties_dialog.ui:321 #: gui/certificate_properties_dialog.ui:400 gui/csr_properties_dialog.ui:142 msgid "Organization (O)" msgstr "Organisation (O)" #: gui/certificate_properties_dialog.ui:332 #: gui/certificate_properties_dialog.ui:411 gui/csr_properties_dialog.ui:153 msgid "Common Name (CN)" msgstr "Voller Name (CN)" #: gui/certificate_properties_dialog.ui:343 msgid "Emmited by" msgstr "Ausgegeben von" #: gui/certificate_properties_dialog.ui:355 #, fuzzy msgid "Subject Alternative Names" msgstr "Fehler beim Setzen der basicConstraint-Erweiterung" #: gui/certificate_properties_dialog.ui:378 msgid "Serial number" msgstr "Seriennummer" #: gui/certificate_properties_dialog.ui:422 #, fuzzy msgid "Certificate subject" msgstr "Zertifikate" #: gui/certificate_properties_dialog.ui:434 #, fuzzy msgid "SHA256FINGERPRINT" msgstr "SHA1FINGERPRINT" #: gui/certificate_properties_dialog.ui:449 #, fuzzy msgid "SHA256 fingerprint" msgstr "SHA1-Fingerabdruck" #: gui/certificate_properties_dialog.ui:460 #, fuzzy msgid "SHA512FINGERPRINT" msgstr "SHA1FINGERPRINT" #: gui/certificate_properties_dialog.ui:475 #, fuzzy msgid "SHA512 fingerprint" msgstr "SHA1-Fingerabdruck" #: gui/certificate_properties_dialog.ui:486 #: gui/certificate_properties_dialog.ui:509 gui/csr_properties_dialog.ui:176 #, fuzzy msgid "Email address" msgstr "IP-Adresse" #: gui/certificate_properties_dialog.ui:536 gui/csr_properties_dialog.ui:203 msgid "General" msgstr "Allgemein" #: gui/certificate_properties_dialog.ui:557 #, fuzzy msgid "Certificate hierarchy" msgstr "Zertifikate" #: gui/certificate_properties_dialog.ui:582 #, fuzzy msgid "Certificate fields" msgstr "Zertifikate" #: gui/certificate_properties_dialog.ui:605 msgid "Details" msgstr "Einzelheiten" #: gui/certificate_properties_dialog.ui:623 msgid "" "\n" "It is recommended that all the certificates generated by a CA\n" "share the same properties.\n" "If you want to generate certificates with different properties, you\n" "should create a hierarchy of CAs, each one with its own policy for\n" "certificate generation.\n" "\n" "Please, define the maximum set of properties for the\n" "certificates that this CA will be able to generate:\n" msgstr "" #: gui/certificate_properties_dialog.ui:649 #, fuzzy msgid "" "Maximum number of months before\n" "expiration of the new generated certificates:" msgstr "Maximale Anzahl von Monaten bis zum Ablauf der erzeugten Zertifikate:" #: gui/certificate_properties_dialog.ui:686 msgid "Hours between CRL updates:" msgstr "" #: gui/certificate_properties_dialog.ui:711 msgid "CRL distribution URL:" msgstr "" #: gui/certificate_properties_dialog.ui:727 #, fuzzy msgid "CRL Properties" msgstr "Zertifikate" #: gui/certificate_properties_dialog.ui:750 #, fuzzy msgid "Country" msgstr "Land:" #: gui/certificate_properties_dialog.ui:761 msgid "State or Province name" msgstr "Name des Bundeslandes/Kantons" #: gui/certificate_properties_dialog.ui:778 #: gui/certificate_properties_dialog.ui:802 #: gui/certificate_properties_dialog.ui:859 #: gui/certificate_properties_dialog.ui:883 #: gui/certificate_properties_dialog.ui:907 msgid "must be the same" msgstr "muss gleich sein" #: gui/certificate_properties_dialog.ui:786 #: gui/certificate_properties_dialog.ui:810 #: gui/certificate_properties_dialog.ui:867 #: gui/certificate_properties_dialog.ui:891 #: gui/certificate_properties_dialog.ui:915 msgid "may differ" msgstr "kann unterschiedlich sein" #: gui/certificate_properties_dialog.ui:820 msgid "City" msgstr "Stadt" #: gui/certificate_properties_dialog.ui:831 msgid "Organization" msgstr "Organisation" #: gui/certificate_properties_dialog.ui:842 msgid "Organizational unit" msgstr "Organisationseinheit" #: gui/certificate_properties_dialog.ui:927 #, fuzzy msgid "Inherited fields from CA subject" msgstr "Zertifikate" #: gui/certificate_properties_dialog.ui:952 gui/new_cert_window.ui:464 #: src/tls.c:1463 msgid "Certification Authority" msgstr "Zertifizierungsstelle" #: gui/certificate_properties_dialog.ui:963 gui/new_cert_window.ui:487 #: src/certificate_properties.c:445 src/tls.c:1470 msgid "Non repudiation" msgstr "" #: gui/certificate_properties_dialog.ui:974 gui/new_cert_window.ui:440 #: src/certificate_properties.c:447 src/tls.c:1472 msgid "Key encipherment" msgstr "" #: gui/certificate_properties_dialog.ui:986 gui/new_cert_window.ui:428 #: src/certificate_properties.c:449 src/tls.c:1474 msgid "Data encipherment" msgstr "" #: gui/certificate_properties_dialog.ui:998 gui/new_cert_window.ui:475 #: src/certificate_properties.c:451 src/tls.c:1476 msgid "Key agreement" msgstr "" #: gui/certificate_properties_dialog.ui:1010 gui/new_cert_window.ui:452 #: src/certificate_properties.c:443 src/tls.c:1468 msgid "Digital signature" msgstr "Digitale Signatur" #: gui/certificate_properties_dialog.ui:1022 gui/new_cert_window.ui:498 #: src/certificate_properties.c:455 src/tls.c:1480 msgid "CRL signing" msgstr "" #: gui/certificate_properties_dialog.ui:1043 #, fuzzy msgid "Uses of new generated certificates" msgstr "Verwendungsmöglichkeiten der neu generierten Zertifikate" #: gui/certificate_properties_dialog.ui:1067 gui/new_cert_window.ui:621 #: src/certificate_properties.c:1480 src/tls.c:1500 msgid "Email protection" msgstr "" #: gui/certificate_properties_dialog.ui:1079 gui/new_cert_window.ui:610 #: src/certificate_properties.c:1479 src/tls.c:1498 msgid "Code signing" msgstr "" #: gui/certificate_properties_dialog.ui:1090 gui/new_cert_window.ui:598 msgid "TLS Web client" msgstr "TLS-Webclient" #: gui/certificate_properties_dialog.ui:1102 gui/new_cert_window.ui:586 #, fuzzy msgid "TLS Web server" msgstr "TLS-Webserver" #: gui/certificate_properties_dialog.ui:1114 gui/new_cert_window.ui:575 #: src/certificate_properties.c:1481 src/tls.c:1502 msgid "Time stamping" msgstr "Zeitstempel" #: gui/certificate_properties_dialog.ui:1125 gui/new_cert_window.ui:564 #: src/certificate_properties.c:1483 src/tls.c:1506 msgid "Any purpose" msgstr "" #: gui/certificate_properties_dialog.ui:1136 gui/new_cert_window.ui:553 #: src/certificate_properties.c:1482 src/tls.c:1504 msgid "OCSP signing" msgstr "OCSP-Signatur" #: gui/certificate_properties_dialog.ui:1159 #, fuzzy msgid "Purposes of new generated certificates" msgstr "Zwecke neu erstellter Zertifikate" #: gui/certificate_properties_dialog.ui:1171 msgid "CA Policy" msgstr "" #: gui/certificate_properties_dialog.ui:1189 gui/csr_properties_dialog.ui:221 #: src/ca.c:2199 msgid "_Close" msgstr "" #: gui/change_password_dialog.ui:9 msgid "Database password protection - gnoMint" msgstr "Datenbank-Passwortschutz - gnoMint" #: gui/change_password_dialog.ui:34 msgid "_Yes" msgstr "" #: gui/change_password_dialog.ui:43 msgid "_No" msgstr "_Nein" #: gui/change_password_dialog.ui:53 msgid "" "Enter new password again \n" "for confirmation:" msgstr "" "Geben Sie das neue Passwort \n" "zur Bestätigung erneut ein:" #: gui/change_password_dialog.ui:86 msgid "" "Please, enter new \n" "password:" msgstr "" "Bitte geben Sia das \n" "neue Passwort ein:" #: gui/change_password_dialog.ui:98 msgid "" "Please, enter current\n" "password:" msgstr "" "Bitte geben Sie das\n" "aktuelle Passwort ein:" #: gui/change_password_dialog.ui:121 msgid "" "Protect CA database private\n" "keys with password:" msgstr "" #: gui/change_password_dialog.ui:143 gui/export_certificate_dialog.ui:149 #: gui/get_db_password_dialog.ui:74 gui/get_pkey_dialog.ui:78 #: gui/import_file_or_directory_dialog.ui:94 gui/import_password_dialog.ui:90 #: gui/new_crl_dialog.ui:53 gui/san_editor_dialog.ui:93 #, fuzzy msgid "Cancel" msgstr "gtk-cancel" #: gui/change_password_dialog.ui:149 gui/get_db_password_dialog.ui:80 #: gui/get_pkey_dialog.ui:84 gui/import_password_dialog.ui:96 #: gui/new_crl_dialog.ui:59 gui/san_editor_dialog.ui:99 msgid "OK" msgstr "" #: gui/creation_process_window.ui:6 #, fuzzy msgid "Creating new CA - gnoMint" msgstr "Neue Zertifizierungsstelle - gnoMint" #: gui/creation_process_window.ui:31 #, fuzzy msgid "Creating CA Root Certificate" msgstr "Fehler beim Setzen der Version des Zertifikats" #: gui/creation_process_window.ui:51 gui/get_password_dialog.ui:90 #: gui/new_ca_window.ui:257 gui/new_ca_window.ui:464 gui/new_ca_window.ui:576 #: gui/new_cert_window.ui:257 gui/new_cert_window.ui:339 #: gui/new_cert_window.ui:661 gui/new_req_window.ui:107 #: gui/new_req_window.ui:357 gui/new_req_window.ui:548 gui/wizard_window.ui:117 msgid "_Cancel" msgstr "" #: gui/csr_popup_menu.ui:23 gui/main_window.ui:26 msgid "_Sign" msgstr "_Signieren" #: gui/csr_popup_menu.ui:27 gui/main_window.ui:27 msgid "Delete" msgstr "" #: gui/csr_properties_dialog.ui:5 #, fuzzy msgid "CSR properties - gnoMint" msgstr "Zertifikat-Eigenschaften - gnoMint" #: gui/csr_properties_dialog.ui:41 #, fuzzy msgid "" "This Certificate Signing Request has its corresponding private key saved " "in the internal database." msgstr "" "Der zugehörige geheime Schlüssel für diese Siganturanfrage wurde in einer " "externen Datei gespeichert." #: gui/csr_properties_dialog.ui:74 gui/new_cert_window.ui:230 #: src/csr_properties.c:86 src/new_cert.c:105 #, fuzzy msgid "None" msgstr "Nichts." #: gui/csr_properties_dialog.ui:131 #, fuzzy msgid "Subject Alternative Name (SAN)" msgstr "Fehler beim Setzen der basicConstraint-Erweiterung" #: gui/csr_properties_dialog.ui:164 #, fuzzy msgid "CSR subject" msgstr "Zertifikate" #: gui/dh_parameters_dialog.ui:16 msgid "New Diffie-Hellman parameters - gnoMint" msgstr "Neue Diffie-Hellman-Parameter - gnoMint" #: gui/dh_parameters_dialog.ui:27 #, fuzzy msgid "" "You are about to create and export a set of\n" "Diffie·Hellman parameters into a PKCS#3 structure file." msgstr "" "Sie sind dabei, eine Reihe von Diffie·Hellman-Parametern in eine PKCS#3-" "Strukturdatei zu importieren." #: gui/dh_parameters_dialog.ui:38 msgid "" "PKCS#3 files containing Diffie·Hellman parameters are used by some " "cryptographic\n" "applications for a secure interchange of their keys over insecure channels." msgstr "" #: gui/dh_parameters_dialog.ui:48 #, fuzzy msgid "Please, enter the prime size, in bits:" msgstr "" "Bitte geben Sia das \n" "neue Passwort ein:" #: gui/dh_parameters_dialog.ui:71 msgid "Close" msgstr "" #: gui/dh_parameters_dialog.ui:77 #, fuzzy msgid "Generate" msgstr "Allgemein" #: gui/export_certificate_dialog.ui:5 #, fuzzy msgid "Export certificate - gnoMint" msgstr "Neues Zertifikat - gnoMint" #: gui/export_certificate_dialog.ui:22 #, fuzzy msgid "" "Please, choose which part of the\n" "saved certificate you want to export:" msgstr "" "Bitte wählen Sie den Teil des gespeicherten Zertifikats aus, den Sie " "importieren wollen:" #: gui/export_certificate_dialog.ui:36 msgid "Only the pu_blic part." msgstr "Nur den ö_ffentlichen Teil." #: gui/export_certificate_dialog.ui:49 #, fuzzy msgid "Export only the certificate to a public file, in PEM format." msgstr "" "Nur das Zertifikat in eine öffentliche Datei im PEM-Format importieren." #: gui/export_certificate_dialog.ui:60 msgid "Only the private key (crypted)." msgstr "Nur den geheimen Schlüssel (verschlüsselt)" #: gui/export_certificate_dialog.ui:74 #, fuzzy msgid "" "Export the saved private key to a PKCS#8 password-\n" "protected file. This file should only be accessed by the\n" "subject of the certificate." msgstr "" "Den gespeicherten geheimen Schlüssel in eine PEM-Datei exportieren. Diese " "Möglichkeit sollte nur zum Exportieren von Zertifikaten genutzt werden, wenn " "diese für Server benutzt werden, bei welchen kein Benutzereingriff " "stattfindet." #: gui/export_certificate_dialog.ui:87 msgid "Only the private key (uncrypted)." msgstr "Nur den geheimen Schlüssel (unverschlüsselt)" #: gui/export_certificate_dialog.ui:100 #, fuzzy msgid "" "Export the saved private key to a PEM file. This option\n" "should only be used for exporting certificates that will be\n" "used in unattended servers." msgstr "" "Den gespeicherten geheimen Schlüssel in eine PEM-Datei exportieren. Diese " "Möglichkeit sollte nur zum Exportieren von Zertifikaten genutzt werden, wenn " "diese für Server benutzt werden, bei welchen kein Benutzereingriff " "stattfindet." #: gui/export_certificate_dialog.ui:113 msgid "Both parts." msgstr "Beide Teile." #: gui/export_certificate_dialog.ui:126 #, fuzzy msgid "" "Export both (private and public) parts to a password-\n" "protected PKCS#12 file. This kind of file can be imported\n" "by other common programs, such as web or mail clients." msgstr "" "Sowohl den geheimen als auch den öffentlichen Teil in eine " "passwortgeschützte PKS#12-Datei exportieren. Diese Art von Datei kann in " "andere gebräuchliche Programme importiert werden, wie zum Beispiel Web- oder " "E-Mail Programme." #: gui/export_certificate_dialog.ui:155 #, fuzzy msgid "Export" msgstr "E_xportieren" #: gui/get_db_password_dialog.ui:5 gui/get_password_dialog.ui:5 #: gui/import_password_dialog.ui:5 msgid "Enter password - gnoMint" msgstr "Passwort eingeben - gnoMint" #: gui/get_db_password_dialog.ui:20 msgid "" "This action requires using one or more private keys saved in the CA " "database.\n" "\n" "Please insert the database password." msgstr "" "Für diese Aktion werden ein oder mehrere private Schlüssel benötigt, die in " "der Zertifizierungsstellen-Datenbank gespeichert sind.\n" "\n" "Bitte geben Sie das Passwort für die Datenbank ein." #: gui/get_db_password_dialog.ui:41 gui/get_password_dialog.ui:68 #: gui/import_password_dialog.ui:65 msgid "Password:" msgstr "Passwort:" #: gui/get_db_password_dialog.ui:58 msgid "Remember this password during this gnoMint session" msgstr "An dieses Passwort während der gnoMint-Sitzung erinnern" #: gui/get_password_dialog.ui:19 #, fuzzy msgid "Please, enter password" msgstr "Bitte Passwort eingeben:" #: gui/get_password_dialog.ui:56 msgid "Password (confirm):" msgstr "Passwort (bestätigen):" #: gui/get_password_dialog.ui:97 gui/new_ca_window.ui:592 #: gui/new_cert_window.ui:676 gui/new_req_window.ui:564 #: gui/preferences_dialog.ui:51 msgid "_OK" msgstr "" #: gui/get_pkey_dialog.ui:9 msgid "Choose private key file. gnoMint" msgstr "Datei des geheimen Schlüssels wählen. gnoMint" #: gui/get_pkey_dialog.ui:22 #, fuzzy msgid "" "Choose private key file\n" "\n" "For doing the selected operation, you must provide the\n" "file where resides the private key corresponding to the\n" "certificate:" msgstr "" "Datei für geheimen Schlüssel auswählen\n" "\n" "Um den gewünschten Vorgang auszuführen, müssen Sie die Datei auswählen, in " "welcher sich der dem Zertifikat zugeordnete geheime Schlüssel befindet." #: gui/get_pkey_dialog.ui:37 #, fuzzy msgid "Certificate DN" msgstr "Zertifikat" #: gui/get_pkey_dialog.ui:43 msgid "Please, choose the file:" msgstr "Bitte Datei auswählen:" #: gui/get_pkey_dialog.ui:62 msgid "_Save filename in the database for automatic loading" msgstr "Dateiname in der Datenbank für automatisches Laden _speichern" #: gui/org.gnome.gnomint.appdata.xml.in:7 gui/main_window.ui:62 msgid "gnoMint" msgstr "gnoMint" #: gui/org.gnome.gnomint.appdata.xml.in:8 #, fuzzy msgid "X.509 Certification Authority management tool" msgstr "- Ein Zertifizierungsstellen-Verwalter" #: gui/org.gnome.gnomint.appdata.xml.in:11 msgid "" "gnoMint is a tool for easily creating and managing certification authorities " "(CAs). It provides fancy visualization of all your certificates, and their " "properties, as well as an easy management of the CA activities." msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:16 msgid "With gnoMint you can:" msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:20 #, fuzzy msgid "Create and manage your own Certification Authority (CA)" msgstr "Eine neue Zertifizierungsanfrage hinzufügen" #: gui/org.gnome.gnomint.appdata.xml.in:21 #, fuzzy msgid "Create and sign certificates for servers and users" msgstr "Fehler beim Setzen der Version des Zertifikats" #: gui/org.gnome.gnomint.appdata.xml.in:22 #, fuzzy msgid "Create and manage Certificate Signing Requests (CSRs)" msgstr "Eine neue Zertifizierungsanfrage hinzufügen" #: gui/org.gnome.gnomint.appdata.xml.in:23 msgid "" "Export certificates and private keys in several formats (PEM, DER, PKCS#12)" msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:24 #, fuzzy msgid "Revoke certificates and generate Certificate Revocation Lists (CRLs)" msgstr "Eine neue Zertifizierungsanfrage hinzufügen" #: gui/org.gnome.gnomint.appdata.xml.in:25 #, fuzzy msgid "Import existing certificates and CAs" msgstr "Fehler beim Setzen der Version des Zertifikats" #: gui/org.gnome.gnomint.appdata.xml.in:27 msgid "" "gnoMint provides a simple and intuitive graphical interface based on GTK for " "all these operations, making certificate management accessible even for " "users without deep knowledge of X.509 standards and cryptography." msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:38 #, fuzzy msgid "Main window showing certificate list" msgstr "Fehler beim Signieren des Zertifikats" #: gui/org.gnome.gnomint.desktop.in:2 gui/org.gnome.gnomint.desktop.in:3 msgid "gnoMint X.509 CA Manager" msgstr "gnoMint X.509 Zertifizierungsstellen-Verwaltung" #: gui/org.gnome.gnomint.desktop.in:4 msgid "Manage X.509 certificates and CAs, easily and graphically" msgstr "" "X.509-Zertifikate und Zertifizierungsstellen verwalten, einfach und grafisch" #: gui/org.gnome.gnomint.desktop.in:5 msgid "certificate;x.509;encryption;" msgstr "" #: gui/import_file_or_directory_dialog.ui:9 msgid "Import selection - gnoMint" msgstr "Importauswahl - gnoMint" #: gui/import_file_or_directory_dialog.ui:24 #, fuzzy msgid "" "Please, choose the more suitable option for\n" "what you want to import:" msgstr "Bitte wählen Sie eine passendere Option für den gewünschten Import:" #: gui/import_file_or_directory_dialog.ui:36 msgid "Import a single file." msgstr "Eine einzelne Datei importieren." #: gui/import_file_or_directory_dialog.ui:48 msgid "" "Import a single file, encoded in DER or PEM format, containing\n" "certificates, private keys (encrypted or plain), signing\n" "requests (CSRs), revocation lists (CRLs) or PKCS#12\n" "packages." msgstr "" #: gui/import_file_or_directory_dialog.ui:60 msgid "Import a whole directory." msgstr "Einen ganzen Ordner importieren." #: gui/import_file_or_directory_dialog.ui:72 msgid "" "Import a directory containing the structure of\n" "a whole CA made with OpenSSL ." msgstr "" #: gui/import_file_or_directory_dialog.ui:100 #, fuzzy msgid "Import" msgstr "_Importieren" #: gui/import_password_dialog.ui:20 msgid "" "The whole selected file, or some of its elements, seems to\n" "be cyphered using a password or passphrase.\n" "\n" "For importing the file into gnoMint database, you must\n" "provide an appropiate password." msgstr "" #: gui/import_password_dialog.ui:37 #, fuzzy msgid "" "The part that is being imported has the description:" msgstr "Beschreibung des zu importierenden Teils:" #: gui/import_password_dialog.ui:48 msgid "#Description#" msgstr "#Beschreibung#" #: gui/main_window.ui:6 msgid "_Certificates" msgstr "_Zertifikate" #: gui/main_window.ui:8 msgid "_New certificate database" msgstr "_Neue Zertifikat-Datenbank" #: gui/main_window.ui:9 msgid "_Open certificate database" msgstr "Zertifikat-Datenbank ö_ffnen" #: gui/main_window.ui:10 msgid "Open _recents" msgstr "_Zuletzt geöffnet" #: gui/main_window.ui:11 msgid "_Save certificate database as..." msgstr "Zertifikat-Datenbank speichern _unter" #: gui/main_window.ui:15 #, fuzzy msgid "Add" msgstr "Zertifizierungsanfrage hinzufügen" #: gui/main_window.ui:17 msgid "_Add self-signed CA" msgstr "" #: gui/main_window.ui:18 msgid "Add _Certificate Request" msgstr "_Zertifikatanfrage hinzufügen" #: gui/main_window.ui:29 #, fuzzy msgid "Generate _CRL" msgstr "Signaturanfrage wird erzeugt" #: gui/main_window.ui:30 msgid "Generate D_H parameters..." msgstr "" #: gui/main_window.ui:31 msgid "Change database pass_word" msgstr "Pass_wort der Datenbank ändern" #: gui/main_window.ui:33 msgid "_Import" msgstr "_Importieren" #: gui/main_window.ui:38 msgid "Revoke _all selected..." msgstr "" #: gui/main_window.ui:39 msgid "Delete all selected _CSRs..." msgstr "" #: gui/main_window.ui:41 msgid "_Quit" msgstr "" #: gui/main_window.ui:44 gui/san_manager_widget.ui:34 msgid "_Edit" msgstr "_Bearbeiten" #: gui/main_window.ui:46 msgid "Preferences" msgstr "" #: gui/main_window.ui:49 msgid "_View" msgstr "_Ansicht" #: gui/main_window.ui:51 #, fuzzy msgid "Certificate _Signing Requests" msgstr "Signaturanfrage für Zertifikat:\n" #: gui/main_window.ui:52 msgid "_Revoked Certificates" msgstr "Wider_rufene Zertifikate" #: gui/main_window.ui:53 #, fuzzy msgid "E_xpired Certificates" msgstr "Zertifikat exportieren" #: gui/main_window.ui:57 gui/new_ca_window.ui:249 gui/new_ca_window.ui:456 #: gui/new_ca_window.ui:568 gui/new_cert_window.ui:249 #: gui/new_cert_window.ui:331 gui/new_cert_window.ui:653 #: gui/new_req_window.ui:99 gui/new_req_window.ui:349 gui/new_req_window.ui:540 msgid "_Help" msgstr "_Hilfe" #: gui/main_window.ui:58 msgid "About" msgstr "" #: gui/main_window.ui:80 msgid "Create a new database" msgstr "Eine neue Datenbank erstellen" #: gui/main_window.ui:87 msgid "Open an existing database" msgstr "Eine existierende Datenbank öffnen" #: gui/main_window.ui:99 #, fuzzy msgid "Add an autosigned CA" msgstr "Initialisierung ist fehlgeschlagen: %s\n" #: gui/main_window.ui:100 #, fuzzy msgid "Add autosigned CA certificate" msgstr "Initialisierung ist fehlgeschlagen: %s\n" #: gui/main_window.ui:111 #, fuzzy msgid "Add a new Certificate Signing Request" msgstr "Signaturanfrage für Zertifikat:\n" #: gui/main_window.ui:112 msgid "Add CSR" msgstr "Zertifizierungsanfrage hinzufügen" #: gui/main_window.ui:129 msgid "Extract the private key of the selected item into a external file" msgstr "" "Geheimen Schlüssel des gewählten Objekts in eine externe Datei entpacken" #: gui/main_window.ui:130 msgid "Extract Private Key" msgstr "Geheimen Schlüssel entpacken" #: gui/main_window.ui:142 #, fuzzy msgid "Revoke the selected certificate" msgstr "Widerruft das ausgewählte Zertifikat" #: gui/main_window.ui:143 msgid "Revoke" msgstr "Widerrufen" #: gui/main_window.ui:151 #, fuzzy msgid "Sign the selected Certificate Signing Request" msgstr "Signaturanfrage für Zertifikat:\n" #: gui/main_window.ui:152 msgid "Sign" msgstr "Signieren" #: gui/main_window.ui:164 #, fuzzy msgid "Delete the selected Certificate Signing Request" msgstr "Signaturanfrage für Zertifikat:\n" #: gui/main_window.ui:176 #, fuzzy msgid "Quick certificate generation for web server" msgstr "Erzeugung des Zertifikats ist fehlgeschlagen" #: gui/main_window.ui:177 #, fuzzy msgid "Web Server Wizard" msgstr "TLS-Webserver" #: gui/main_window.ui:188 #, fuzzy msgid "Quick certificate generation for email server" msgstr "Erzeugung des Zertifikats ist fehlgeschlagen" #: gui/main_window.ui:189 #, fuzzy msgid "Email Server Wizard" msgstr "TLS-Webserver" #: gui/main_window.ui:225 msgid "_Show them" msgstr "" #: gui/main_window.ui:243 msgid "Filter certificates by subject or serial..." msgstr "" #: gui/new_ca_window.ui:20 msgid "New CA - gnoMint" msgstr "Neue Zertifizierungsstelle - gnoMint" #: gui/new_ca_window.ui:46 #, fuzzy msgid "CA Subject Properties\n" msgstr "Passwortschutz\n" #: gui/new_ca_window.ui:72 gui/new_cert_window.ui:130 gui/new_req_window.ui:303 msgid "Organization:" msgstr "Organisation:" #: gui/new_ca_window.ui:83 gui/new_cert_window.ui:141 gui/new_req_window.ui:292 msgid "Organization Unit:" msgstr "Organisationseinheit:" #: gui/new_ca_window.ui:94 gui/new_cert_window.ui:152 gui/new_req_window.ui:281 msgid "Country:" msgstr "Land:" #: gui/new_ca_window.ui:106 gui/new_cert_window.ui:163 #: gui/new_req_window.ui:270 #, fuzzy msgid "State or Province name: " msgstr "Name des Bundeslandes/Kantons: " #: gui/new_ca_window.ui:117 gui/new_cert_window.ui:174 #: gui/new_req_window.ui:259 #, fuzzy msgid "City: " msgstr "Stadt: " #: gui/new_ca_window.ui:164 #, fuzzy msgid "" "CA Root Certificate \n" "Common Name (CN):" msgstr "Voller Name (CN)" #: gui/new_ca_window.ui:185 gui/new_cert_window.ui:219 #: gui/new_req_window.ui:203 #, fuzzy msgid "Email address:" msgstr "IP-Adresse" #: gui/new_ca_window.ui:227 gui/new_req_window.ui:326 #, fuzzy msgid "Subject Alternative Names (SAN)" msgstr "Fehler beim Setzen der basicConstraint-Erweiterung" #: gui/new_ca_window.ui:265 gui/new_ca_window.ui:480 gui/new_req_window.ui:115 #: gui/new_req_window.ui:373 msgid "_Next" msgstr "" #: gui/new_ca_window.ui:277 gui/new_cert_window.ui:276 #: gui/new_req_window.ui:127 #, fuzzy msgid "CA properties" msgstr "Zertifikat-Eigenschaften" #: gui/new_ca_window.ui:296 #, fuzzy msgid "CA Root certificate properties\n" msgstr "Eigenschaften des neuen Zertifikats\n" #: gui/new_ca_window.ui:337 #, fuzzy msgid "Months before root certificate expiration:" msgstr "Monate vor Zertifikatablauf:" #: gui/new_ca_window.ui:370 gui/new_req_window.ui:453 msgid "P-256 (256 bits)" msgstr "" #: gui/new_ca_window.ui:371 gui/new_req_window.ui:454 msgid "P-384 (384 bits)" msgstr "" #: gui/new_ca_window.ui:372 gui/new_req_window.ui:455 msgid "P-521 (521 bits)" msgstr "" #: gui/new_ca_window.ui:391 gui/new_req_window.ui:474 #, fuzzy msgid "RSA" msgstr "RSA" #: gui/new_ca_window.ui:400 gui/new_req_window.ui:484 msgid "DSA" msgstr "DSA" #: gui/new_ca_window.ui:409 gui/new_req_window.ui:493 msgid "ECDSA" msgstr "" #: gui/new_ca_window.ui:418 gui/new_req_window.ui:502 msgid "Ed25519" msgstr "" #: gui/new_ca_window.ui:428 gui/new_req_window.ui:512 src/new_ca_window.c:170 #: src/new_ca_window.c:180 src/new_req_window.c:201 src/new_req_window.c:211 msgid "Private key bit length:" msgstr "Länge des geheimen Schlüssels in Bit" #: gui/new_ca_window.ui:439 gui/new_req_window.ui:523 msgid "Private key type:" msgstr "Typ des geheimen Schlüssels:" #: gui/new_ca_window.ui:472 gui/new_ca_window.ui:584 gui/new_req_window.ui:365 #: gui/new_req_window.ui:556 msgid "_Previous" msgstr "" #: gui/new_ca_window.ui:492 gui/new_req_window.ui:385 #, fuzzy msgid "Root certificate prop" msgstr "Zertifikat exportieren" #: gui/new_ca_window.ui:511 #, fuzzy msgid "CA properties\n" msgstr "Passwortschutz\n" #: gui/new_ca_window.ui:535 msgid "CRL Distribution Point:" msgstr "" #: gui/new_ca_window.ui:542 msgid "" "Please, in this field enter an URL where the CRL for this CA will be " "available. \n" "You can leave it blank. In this case, no CRL Distribution Point will be set " "in the CA \n" "Certificate, and you will be able to set it as a new CA property. \n" "This value will be copied into the certificates generated by this CA.\n" "" msgstr "" #: gui/new_ca_window.ui:604 msgid "Password protect" msgstr "Passwortschutz" #: gui/new_cert_window.ui:13 msgid "New Certificate - gnoMint" msgstr "Neues Zertifikat - gnoMint" #: gui/new_cert_window.ui:36 gui/new_cert_window.ui:293 #: gui/new_cert_window.ui:382 #, fuzzy msgid "New Certificate Properties\n" msgstr "Eigenschaften des neuen Zertifikats\n" #: gui/new_cert_window.ui:45 #, fuzzy msgid "" "You are about to sign a Certificate Signing Request,\n" "and this way, creating a new certificate. Please\n" "check the certificate properties." msgstr "" "Sie sind dabei, eine Signaturanfrage für ein Zertifikat zu bestätigen. " "Dadurch wird ein neues Zertifikat erstellt. Bitte überprüfen Sie die " "Eigenschaften des Zertifikats." #: gui/new_cert_window.ui:64 gui/new_cert_window.ui:75 #: gui/new_cert_window.ui:86 gui/new_cert_window.ui:97 #: gui/new_cert_window.ui:108 gui/new_cert_window.ui:119 msgid "label" msgstr "Bezeichnung" #: gui/new_cert_window.ui:185 #, fuzzy msgid "" "New certificate \n" "Common Name (CN):" msgstr "Voller Name (CN)" #: gui/new_cert_window.ui:197 #, fuzzy msgid "Subject Alternative Names:" msgstr "Fehler beim Setzen der basicConstraint-Erweiterung" #: gui/new_cert_window.ui:302 #, fuzzy msgid "" "You are about to sign a Certificate Signing Request.\n" "Please, choose the Certification Authority you are\n" "going to use for signing it." msgstr "" "Sie sind dabei, eine Signaturanfrage für ein Zertifikat zu bestätigen. Bitte " "wählen Sie die Zertifizierungsstelle, die Sie dafür verwenden wollen." #: gui/new_cert_window.ui:366 msgid "Choose CA for signing the CSR" msgstr "" #: gui/new_cert_window.ui:397 msgid "Months before certificate expiration:" msgstr "Monate vor Zertifikatablauf:" #: gui/new_cert_window.ui:519 #, fuzzy msgid "Certificate uses" msgstr "Zertifikate" #: gui/new_cert_window.ui:635 #, fuzzy msgid "Certificate purposes" msgstr "Zertifikate" #: gui/new_cert_window.ui:688 msgid "Certificate properties" msgstr "Zertifikat-Eigenschaften" #: gui/new_crl_dialog.ui:5 #, fuzzy msgid "New CRL - gnoMint" msgstr "Neue Zertifizierungsstelle - gnoMint" #: gui/new_crl_dialog.ui:17 #, fuzzy msgid "New Certificate Revocation List" msgstr "Neue Liste widerrufener Zertifikate" #: gui/new_crl_dialog.ui:26 msgid "" "Please, select the CA for which a Certificate \n" "Revocation List is going to be created:" msgstr "" #: gui/new_req_window.ui:12 msgid "New certificate request - gnoMint" msgstr "Neue Zertifikatanfrage - gnoMint" #: gui/new_req_window.ui:36 gui/new_req_window.ui:147 gui/new_req_window.ui:403 #, fuzzy msgid "Certificate Request Properties\n" msgstr "Eigenschaften des neuen Zertifikats\n" #: gui/new_req_window.ui:55 msgid "" "The subject of the new certificate request can inherit information\n" "from one of the existing Certification Authorities. This is a must if the\n" "policy of the CA you are going to use is defined to force some fields\n" "of a certificate subject to be the same as the ones in the CA cert\n" "subject." msgstr "" #: gui/new_req_window.ui:67 msgid "Don't inherit any fields from existing Certification Authorities" msgstr "" #: gui/new_req_window.ui:74 msgid "" "Inherit fields according to selected Certification Authority and its policy." msgstr "" #: gui/new_req_window.ui:191 #, fuzzy msgid "" "Certificate\n" " Common Name (CN):" msgstr "Voller Name (CN)" #: gui/new_req_window.ui:576 msgid "page 3" msgstr "Seite 3" #: gui/preferences_dialog.ui:9 msgid "General Preferences - gnoMint" msgstr "Allgemeine Einstellungen - gnoMint" #: gui/preferences_dialog.ui:26 #, fuzzy msgid "" "Automatically export created certificates to\n" "Gnome-keyring certificate store" msgstr "" "Erzeugte Zertifikate automatisch in die Zertifikatverwaltung des GNOME-" "Schlüsselbundes importieren" #: gui/preferences_dialog.ui:36 msgid "Export options" msgstr "Export-Optionen" #: gui/san_editor_dialog.ui:5 src/certificate_properties.c:1488 msgid "Subject Alternative Name" msgstr "" #: gui/san_editor_dialog.ui:23 #, fuzzy msgid "Type:" msgstr "\tTyp: %s\n" #: gui/san_editor_dialog.ui:35 #, fuzzy msgid "DNS" msgstr "DSA" #: gui/san_editor_dialog.ui:36 src/certificate_properties.c:900 #: src/certificate_properties.c:914 src/certificate_properties.c:1040 msgid "IP Address" msgstr "IP-Adresse" #: gui/san_editor_dialog.ui:37 msgid "Email" msgstr "" #: gui/san_editor_dialog.ui:38 src/certificate_properties.c:889 #: src/certificate_properties.c:1032 msgid "URI" msgstr "Adresse" #: gui/san_editor_dialog.ui:51 #, fuzzy msgid "Value:" msgstr "Wert" #: gui/san_editor_dialog.ui:74 msgid "" "Examples:\n" "DNS: example.com, *.example.com\n" "IP: 192.168.1.1, 2001:db8::1\n" "EMAIL: admin@example.com\n" "URI: https://example.com" msgstr "" #: gui/san_manager_widget.ui:26 msgid "_Add" msgstr "" #: gui/san_manager_widget.ui:43 msgid "_Remove" msgstr "" #: gui/wizard_window.ui:9 #, fuzzy msgid "Certificate Wizard" msgstr "Zertifikat" #: gui/wizard_window.ui:28 #, fuzzy msgid "Quick Certificate Generation" msgstr "Zertifikate" #: gui/wizard_window.ui:35 msgid "" "This wizard will create a certificate for your server with default " "settings.\n" "Enter the server name (e.g., my.server.dns.name) and select the CA to sign " "it." msgstr "" #: gui/wizard_window.ui:48 #, fuzzy msgid "Server Name:" msgstr "Ordnername" #: gui/wizard_window.ui:59 msgid "Enter the server DNS name (e.g., my.server.dns.name)" msgstr "" #: gui/wizard_window.ui:69 #, fuzzy msgid "Signing CA:" msgstr "OCSP-Signatur" #: gui/wizard_window.ui:88 #, fuzzy msgid "Certificate Type:" msgstr "Zertifikat benutzt:\n" #: gui/wizard_window.ui:124 #, fuzzy msgid "_Generate Certificate" msgstr "Wider_rufene Zertifikate" #: gui/wizard_window.ui:140 #, fuzzy msgid "Web Server (TLS)" msgstr "TLS-Webserver" #: gui/wizard_window.ui:141 #, fuzzy msgid "Email Server (TLS)" msgstr "TLS-Webserver" #: src/ca.c:192 #, c-format msgid "Bulk revoke completed with errors. First error: %s" msgstr "" #: src/ca.c:199 #, fuzzy, c-format msgid "%d certificate revoked." msgid_plural "%d certificates revoked." msgstr[0] "Zertifikat wurde widerrufen.\n" msgstr[1] "Zertifikat wurde widerrufen.\n" #: src/ca.c:225 #, c-format msgid "Bulk delete completed with errors. First error: %s" msgstr "" #: src/ca.c:240 msgid "" "Certificate renewed. A new certificate with a fresh keypair has been added " "to the database alongside the original." msgstr "" #: src/ca.c:606 src/ca-cli-callbacks.c:167 src/ca-cli-callbacks.c:221 #: src/ca-cli-callbacks.c:733 src/ca-cli-callbacks.c:737 #: src/ca-cli-callbacks.c:1362 src/ca-cli-callbacks.c:1369 #: src/certificate_properties.c:246 src/certificate_properties.c:252 #, fuzzy msgid "%m/%d/%Y %H:%M GMT" msgstr "%d.%m.%Y %R GMT" #: src/ca.c:806 src/ca.c:1927 src/ca.c:1958 src/ca.c:2093 src/ca.c:2322 #: src/ca.c:2350 #, fuzzy msgid "Yes" msgstr "_Ja" #: src/ca.c:930 src/certificate_properties.c:653 msgid "Subject" msgstr "" #: src/ca.c:965 src/cert_diff.c:122 msgid "Serial" msgstr "Seriell" #: src/ca.c:978 src/cert_diff.c:123 msgid "Activation" msgstr "Aktivierung" #: src/ca.c:991 src/cert_diff.c:124 msgid "Expiration" msgstr "Ablaufdatum" #: src/ca.c:1004 msgid "Revocation" msgstr "Widerruf" #: src/ca.c:1047 #, c-format msgid "" "Showing only the %d certificate expiring in the next %d days. Close " "this banner to show everything again." msgid_plural "" "Showing only the %d certificates expiring in the next %d days. Close " "this banner to show everything again." msgstr[0] "" msgstr[1] "" #: src/ca.c:1058 #, c-format msgid "" "%d certificate expires in the next %d days. Right-click it to renew " "with a fresh key." msgid_plural "" "%d certificates expire in the next %d days. Right-click each one to " "renew with a fresh key." msgstr[0] "" msgstr[1] "" #: src/ca.c:1369 src/ca.c:1404 src/ca.c:1416 src/export.c:560 src/export.c:639 msgid "There was an error while exporting certificate." msgstr "Beim Export des Zertifikats ist ein Fehler aufgetreten." #: src/ca.c:1371 src/ca.c:1406 src/ca.c:1418 msgid "There was an error while exporting CSR." msgstr "" #: src/ca.c:1426 src/ca.c:1590 msgid "Certificate exported successfully" msgstr "Zertifikat wurde erfolgreich exportiert" #: src/ca.c:1427 msgid "Certificate signing request exported successfully" msgstr "Signaturanfrage für Zertifikat wurde erfolgreich exportiert" #: src/ca.c:1445 msgid "Export certificate" msgstr "Zertifikat exportieren" #: src/ca.c:1447 msgid "Export certificate signing request" msgstr "Signaturanfrage für Zertifikat exportieren" #: src/ca.c:1461 src/ca.c:1523 src/ca.c:1981 msgid "Private key exported successfully" msgstr "Geheimer Schlüssel wurde erfolgreich exportiert" #: src/ca.c:1509 src/ca.c:2057 msgid "Export crypted private key" msgstr "" #: src/ca.c:1568 #, fuzzy msgid "Export unencrypted private key" msgstr "Geheimen Schlüssel en_tpacken" #: src/ca.c:1633 msgid "Export whole certificate in PKCS#12 package" msgstr "Gesamtes Zertifikat in einem PKCS#12-Paket exportieren" #: src/ca.c:1676 msgid "Unexpected error" msgstr "Unerwarteter Fehler" #: src/ca.c:1712 msgid "Export CSR - gnoMint" msgstr "Signaturanfrage exportieren - gnoMint" #: src/ca.c:1717 msgid "" "Please, choose which part of the saved Certificate Signing Request you want " "to export:" msgstr "" "Bitte wählen Sie den Teil der gespeicherten Siganturanfrage aus, den Sie " "exportieren wollen:" #: src/ca.c:1722 msgid "" "Export the Certificate Signing Request to a public file, in PEM format." msgstr "" "Signaturanfrage für Zertifikat in eine öffentliche Datei im PEM-Format " "exportieren." #: src/ca.c:1727 msgid "" "Export the saved private key to a PKCS#8 password-protected file. This " "file should only be accessed by the subject of the Certificate Signing " "Request." msgstr "" #: src/ca.c:1774 msgid "Could not build certificate chain." msgstr "" #: src/ca.c:1781 #, fuzzy, c-format msgid "Failed to write chain: %s" msgstr "Initialisierung ist fehlgeschlagen: %s\n" #: src/ca.c:1786 #, fuzzy msgid "Certificate chain exported successfully." msgstr "Zertifikat wurde erfolgreich exportiert" #: src/ca.c:1807 #, fuzzy msgid "Please select a certificate to export its chain." msgstr "Zertifizierungsstelle" #: src/ca.c:1831 #, fuzzy msgid "Export certificate chain" msgstr "Zertifikat exportieren" #: src/ca.c:1911 #, fuzzy msgid "Please select one or more certificates to revoke." msgstr "Zertifizierungsstelle" #: src/ca.c:1916 #, fuzzy, c-format msgid "Are you sure you want to revoke %d certificate?" msgid_plural "Are you sure you want to revoke %d certificates?" msgstr[0] "Sind Sie sicher, dass Sie dieses Zertifikat widerrufen wollen?" msgstr[1] "Sind Sie sicher, dass Sie dieses Zertifikat widerrufen wollen?" #: src/ca.c:1920 msgid "" "Revoking a certificate will include it in the next CRL, marking it as " "invalid. CSRs in the selection (if any) are not affected; use \"Delete " "selected CSRs\" for those." msgstr "" #: src/ca.c:1927 src/ca.c:1958 src/ca.c:2093 src/ca.c:2322 src/ca.c:2350 #, fuzzy msgid "No" msgstr "_Nein" #: src/ca.c:1948 msgid "Please select one or more CSRs to delete." msgstr "" #: src/ca.c:1953 #, fuzzy, c-format msgid "Are you sure you want to delete %d Certificate Signing Request?" msgid_plural "Are you sure you want to delete %d Certificate Signing Requests?" msgstr[0] "" "Sind Sie sicher, dass Sie diese Signaturanfrage für ein Zertifikat " "widerrufen wollen?" msgstr[1] "" "Sind Sie sicher, dass Sie diese Signaturanfrage für ein Zertifikat " "widerrufen wollen?" #: src/ca.c:2076 src/ca-cli-callbacks.c:1934 msgid "" "CA certificates cannot be renewed. A renewed CA would have a different key, " "so certificates previously signed by the old CA would no longer chain to it." msgstr "" #: src/ca.c:2087 msgid "" "Renew this certificate?\n" "\n" "gnoMint will issue a new certificate with the same subject and SAN as the " "selected one, signed by the same CA, with a freshly-generated keypair. The " "old certificate will remain in the database — revoke it manually after you " "have deployed the new one." msgstr "" #: src/ca.c:2118 #, c-format msgid "Certificate diff — %d difference" msgid_plural "Certificate diff — %d differences" msgstr[0] "" msgstr[1] "" #: src/ca.c:2147 msgid "Left" msgstr "" #: src/ca.c:2151 msgid "Right" msgstr "" #: src/ca.c:2241 src/ca-cli-callbacks.c:2141 #, fuzzy msgid "Cannot read file." msgstr "Initialisierung ist fehlgeschlagen: %s\n" #: src/ca.c:2252 msgid "Selected" msgstr "" #: src/ca.c:2278 #, fuzzy msgid "Cannot read PEM of the selected certificate." msgstr "Das ausgewählte Zertifikat widerrufen" #: src/ca.c:2290 msgid "Compare with PEM file…" msgstr "" #: src/ca.c:2312 msgid "Are you sure you want to revoke this certificate?" msgstr "Sind Sie sicher, dass Sie dieses Zertifikat widerrufen wollen?" #: src/ca.c:2313 msgid "" "Revoking a certificate will include it in the next CRL, marking it as " "invalid. This way, any future use of the certificate will be denied (as long " "as the CRL is checked)." msgstr "" #: src/ca.c:2316 #, fuzzy msgid "Are you sure you want to revoke this CA certificate?" msgstr "Sind Sie sicher, dass Sie dieses Zertifikat widerrufen wollen?" #: src/ca.c:2317 msgid "" "Revoking a certificate will include it in the next CRL, marking it as " "invalid. This way, any future use of the certificate will be denied (as long " "as the CRL is checked). \n" "\n" "Moreover, revoking a CA certificate can invalidate all the certificates " "generated with it, so all them should be regenerated with a new CA " "certificate." msgstr "" #: src/ca.c:2349 msgid "Are you sure you want to delete this Certificate Signing Request?" msgstr "" "Sind Sie sicher, dass Sie diese Signaturanfrage für ein Zertifikat " "widerrufen wollen?" #: src/ca.c:2572 msgid "" "The current password you have entered doesn't match with the actual current " "database password." msgstr "" "Das von Ihnen eingegebene Passwort stimmt nicht mit dem derzeit für die " "Datenbank geltenden Passwort überein." #: src/ca.c:2588 msgid "Error while changing database password. The operation was cancelled." msgstr "" "Fehler beim Ändern des Passworts der Datenbank. Der Vorgang wurde " "abgebrochen." #: src/ca.c:2593 msgid "Password changed successfully" msgstr "Das Passwort wurde erfolgreich geändert" #: src/ca.c:2601 src/ca-cli-callbacks.c:1186 msgid "" "Error while establishing database password. The operation was cancelled." msgstr "" "Fehler beim Ermitteln des Passworts der Datenbank. Der Vorgang wurde " "abgebrochen." #: src/ca.c:2606 msgid "Password established successfully" msgstr "Passwort wurde erfolgreich ermittelt" #: src/ca.c:2616 msgid "Error while removing database password. The operation was cancelled." msgstr "" "Fehler beim Löschen des Passworts der Datenbank. Der Vorgang wurde " "abgebrochen." #: src/ca.c:2621 msgid "Password removed successfully" msgstr "Passwort wurde erfolgreich gelöscht" #: src/ca.c:2708 msgid "Change CA password - gnoMint" msgstr "Zertifizierungsstellen-Passwort ändern - gnoMint" #: src/ca.c:2840 msgid "Diffie-Hellman parameters saved successfully" msgstr "Diffie-Hellman-Parameter wurden erfolgreich gespeichert" #: src/ca.c:2872 msgid "Save Diffie-Hellman parameters" msgstr "Diffie-Hellman-Parameter speichern" #: src/ca.c:2951 #, c-format msgid "Problem when importing '%s' file" msgstr "Problem beim Importieren der Datei »%s«" #: src/ca.c:3012 msgid "Select PEM file to import" msgstr "PEM-Datei zum Importieren auswählen" #: src/ca.c:3018 msgid "Select directory to import" msgstr "Ordner zum Importieren auswählen" #: src/cert_diff.c:70 #, fuzzy msgid "Cannot parse left certificate" msgstr "Das ausgewählte Zertifikat widerrufen" #: src/cert_diff.c:72 #, fuzzy msgid "Cannot parse right certificate" msgstr "Das ausgewählte Zertifikat widerrufen" #: src/cert_diff.c:113 msgid "Subject CN" msgstr "" #: src/cert_diff.c:114 msgid "Subject O" msgstr "" #: src/cert_diff.c:115 msgid "Subject OU" msgstr "" #: src/cert_diff.c:116 #, fuzzy msgid "Subject Country" msgstr "Land" #: src/cert_diff.c:117 #, fuzzy msgid "Subject State" msgstr "Fehler beim Setzen der basicConstraint-Erweiterung" #: src/cert_diff.c:118 msgid "Subject Locality" msgstr "" #: src/cert_diff.c:119 msgid "Subject email" msgstr "" #: src/cert_diff.c:120 msgid "Subject DN" msgstr "" #: src/cert_diff.c:121 #, fuzzy msgid "Issuer DN" msgstr "Eindeutige Ausstellerkennung" #: src/cert_diff.c:125 #, fuzzy msgid "SAN" msgstr "RSA" #: src/cert_diff.c:126 msgid "Key usage / EKU" msgstr "" #: src/cert_diff.c:127 msgid "Subject Key ID" msgstr "" #: src/cert_diff.c:128 msgid "Authority Key ID" msgstr "" #: src/cert_diff.c:129 msgid "CRL distribution" msgstr "" #: src/cert_diff.c:130 #, fuzzy msgid "SHA-1 fingerprint" msgstr "SHA1-Fingerabdruck" #: src/cert_diff.c:131 #, fuzzy msgid "SHA-256 fingerprint" msgstr "SHA1-Fingerabdruck" #: src/cert_renewal.c:111 msgid "Cannot parse generated CSR." msgstr "" #: src/cert_renewal.c:125 #, fuzzy msgid "Cannot encrypt new private key." msgstr "Geheimen Schlüssel en_tpacken" #: src/cert_renewal.c:181 src/cert_renewal.c:341 #, fuzzy msgid "Cannot read certificate PEM from database." msgstr "Zertifikat-Datenbank ö_ffnen" #: src/cert_renewal.c:186 src/cert_renewal.c:347 #, fuzzy msgid "Cannot parse certificate." msgstr "Das ausgewählte Zertifikat widerrufen" #: src/cert_renewal.c:193 src/cert_renewal.c:354 #, c-format msgid "Cannot find issuer CA in this database (issuer DN: %s)." msgstr "" #: src/cert_renewal.c:204 src/cert_renewal.c:315 msgid "Cannot load parent CA material from database." msgstr "" #: src/cert_renewal.c:212 src/cert_renewal.c:221 src/cert_renewal.c:265 #: src/cert_renewal.c:280 #, fuzzy msgid "Cannot decrypt parent CA's private key." msgstr "Geheimen Schlüssel en_tpacken" #: src/ca-cli.c:42 msgid "newdb " msgstr "" #: src/ca-cli.c:42 msgid "Close current file and create a new database with given filename" msgstr "" "Aktuelle Datei schließen und eine neue Datenbank mit dem angegebenen " "Dateinamen anlegen" #: src/ca-cli.c:43 msgid "opendb " msgstr "" #: src/ca-cli.c:43 msgid "Close current file and open the file with given filename" msgstr "" "Aktuelle Datei schließen und eine Datei mit dem angegebenen Namen öffnen" #: src/ca-cli.c:44 msgid "savedbas " msgstr "" #: src/ca-cli.c:44 msgid "Save the current file with a different filename" msgstr "Die aktuelle Datei unter einem anderen Namen speichern" #: src/ca-cli.c:45 msgid "Get current status (opened file, no. of certificates, etc...)" msgstr "" "Aktuellen Status ermitteln (geöffnete Datei, Anzahl der Zertifikate usw.)" #: src/ca-cli.c:46 msgid "" "List the certificates in database. With option --see-revoked, lists also the " "revoked ones" msgstr "" "Liste der Zertifikate in der Datenbank. Die Option --see-revoked listet auch " "die widerrufenen Zertifikate auf" #: src/ca-cli.c:48 msgid "List the CSRs in database" msgstr "" #: src/ca-cli.c:49 msgid "addcsr [ca-id-for-inherit-fields]" msgstr "" #: src/ca-cli.c:49 msgid "Start a new CSR creation process" msgstr "" #: src/ca-cli.c:50 msgid "Start a new self-signed CA creation process" msgstr "" #: src/ca-cli.c:51 msgid "extractcertpkey " msgstr "" #: src/ca-cli.c:51 msgid "" "Extract the private key of the certificate with the given internal id and " "saves it into the given file" msgstr "" "Den geheimen Schlüssel des Zertifikats mit der angegebenen internen Kennung " "entpacken und in die angegebene Datei speichern" #: src/ca-cli.c:54 msgid "extractcsrpkey " msgstr "" #: src/ca-cli.c:54 msgid "" "Extract the private key of the CSR with the given internal id and saves it " "into the given file" msgstr "" #: src/ca-cli.c:57 msgid "revoke " msgstr "" #: src/ca-cli.c:57 msgid "Revoke the certificate with the given internal ID" msgstr "Das Zertifikat mit der angegebenen internen Kennung widerrufen" #: src/ca-cli.c:58 msgid "sign " msgstr "" #: src/ca-cli.c:58 msgid "Generate a certificate signing the given CSR with the given CA" msgstr "" #: src/ca-cli.c:59 msgid "delete " msgstr "" #: src/ca-cli.c:59 msgid "Delete the given CSR from the database" msgstr "" #: src/ca-cli.c:60 msgid "crlgen " msgstr "" #: src/ca-cli.c:60 msgid "Generate a new CRL for the given CA, saving it into the file " msgstr "" #: src/ca-cli.c:61 msgid "dhgen " msgstr "" #: src/ca-cli.c:61 msgid "Generate a new DH-parameter set, saving it into the file " msgstr "" #: src/ca-cli.c:62 msgid "Change password for the current database" msgstr "Passwort für die aktuelle Datenbank ändern" #: src/ca-cli.c:63 msgid "importfile " msgstr "" #: src/ca-cli.c:63 msgid "Import the file with the given name " msgstr "" #: src/ca-cli.c:64 msgid "importdir " msgstr "" #: src/ca-cli.c:64 msgid "Import the given directory, as a OpenSSL-CA directory" msgstr "" #: src/ca-cli.c:65 msgid "showcert " msgstr "" #: src/ca-cli.c:65 msgid "Show properties of the given certificate" msgstr "Eigenschaften des angegebenen Zertifikats anzeigen" #: src/ca-cli.c:66 msgid "showcsr " msgstr "" #: src/ca-cli.c:66 msgid "Show properties of the given CSR" msgstr "Eigenschaften der angegebenen Signaturanfrage anzeigen" #: src/ca-cli.c:67 msgid "showpolicy " msgstr "" #: src/ca-cli.c:67 msgid "Show CA policy" msgstr "" #: src/ca-cli.c:68 msgid "setpolicy " msgstr "" #: src/ca-cli.c:68 msgid "Change the given CA policy" msgstr "" #: src/ca-cli.c:69 msgid "Show program preferences" msgstr "Programmeinstellungen anzeigen" #: src/ca-cli.c:70 msgid "setpreference " msgstr "" #: src/ca-cli.c:70 msgid "Set the given program preference" msgstr "Die gewählte Programmeinstellung festlegen" #: src/ca-cli.c:71 msgid "addservercert " msgstr "" #: src/ca-cli.c:71 msgid "Quick server certificate generation (cert-type: 'web' or 'email')" msgstr "" #: src/ca-cli.c:72 msgid "renewcert " msgstr "" #: src/ca-cli.c:72 msgid "" "Reissue a non-CA certificate with the same subject + SAN and a fresh " "keypair. The old certificate remains in the database. CA certificates cannot " "be renewed." msgstr "" #: src/ca-cli.c:73 #, fuzzy msgid "exportchain " msgstr "Zertifikat exportieren" #: src/ca-cli.c:73 msgid "" "Export the full certificate chain (leaf → root) for the given certificate as " "a PEM bundle." msgstr "" #: src/ca-cli.c:74 msgid "revokemany [cert-id ...]" msgstr "" #: src/ca-cli.c:74 msgid "Revoke many certificates at once. Non-cert ids are silently skipped." msgstr "" #: src/ca-cli.c:75 msgid "deletemany [csr-id ...]" msgstr "" #: src/ca-cli.c:75 msgid "Delete many CSRs at once. Non-CSR ids are silently skipped." msgstr "" #: src/ca-cli.c:76 msgid "search " msgstr "" #: src/ca-cli.c:76 msgid "" "List certificates and CSRs whose subject or serial contains (case-" "insensitive)." msgstr "" #: src/ca-cli.c:77 msgid "diff " msgstr "" #: src/ca-cli.c:77 msgid "" "Side-by-side diff of two certificates. Each argument is either a numeric DB " "id or a path to a PEM file." msgstr "" #: src/ca-cli.c:78 msgid "Show about message" msgstr "Info-Meldung anzeigen" #: src/ca-cli.c:79 msgid "Show warranty information" msgstr "" #: src/ca-cli.c:80 msgid "Show distribution information" msgstr "" #: src/ca-cli.c:81 msgid "Show version information" msgstr "Versionsinformation anzeigen" #: src/ca-cli.c:82 msgid "Show (this) help message" msgstr "(Diese) Hilfemeldung anzeigen" #: src/ca-cli.c:83 src/ca-cli.c:84 src/ca-cli.c:85 msgid "Close database and exit program" msgstr "Datenbank schließen und Programm beenden" #: src/ca-cli.c:132 #, c-format msgid "Opening database %s..." msgstr "Datenbank »%s« wird geöffnet …" #: src/ca-cli.c:136 #, c-format msgid " OK.\n" msgstr " OK.\n" #: src/ca-cli.c:138 #, c-format msgid " Error.\n" msgstr " Fehler.\n" #: src/ca-cli.c:153 #, c-format msgid "" "Notice: %d certificate expires within the next %d days. Use `renewcert ` " "to reissue.\n" msgid_plural "" "Notice: %d certificates expire within the next %d days. Use `renewcert ` " "to reissue.\n" msgstr[0] "" msgstr[1] "" #: src/ca-cli.c:187 #, fuzzy, c-format msgid "" "\n" "\n" "%s version %s \"%s\"\n" "%s\n" "\n" msgstr "" "\n" "\n" "%s-Version %s\n" "%s\n" "\n" #: src/ca-cli.c:188 #, c-format msgid "" "This program comes with ABSOLUTELY NO WARRANTY;\n" "for details type 'warranty'.\n" msgstr "" #: src/ca-cli.c:189 #, c-format msgid "" "This is free software, and you are welcome to redistribute it\n" "under certain conditions; type 'distribution' for details.\n" "\n" msgstr "" #: src/ca-cli.c:231 #, c-format msgid "Unpaired quotes\n" msgstr "Nicht übereinstimmende Anführungszeichen\n" #: src/ca-cli.c:309 #, c-format msgid "" "Invalid command. Try 'help' for getting a list of recognized commands.\n" msgstr "" "Ungültiger Befehl. Geben Sie »help« ein, um eine Liste der möglichen Befehle " "zu erhalten.\n" #: src/ca-cli.c:313 #, c-format msgid "Incorrect number of parameters.\n" msgstr "Falsche Anzahl der Parameter.\n" #: src/ca-cli.c:314 #, c-format msgid "Syntax: %s\n" msgstr "Syntax: %s\n" #: src/ca-cli-callbacks.c:62 src/ca-cli-callbacks.c:111 msgid "The file already exists, so it will be overwritten." msgstr "Die Datei existiert bereits und wird überschrieben werden." #: src/ca-cli-callbacks.c:62 src/ca-cli-callbacks.c:111 #: src/ca-cli-callbacks.c:824 msgid "Are you sure? Yes/[No] " msgstr "" #: src/ca-cli-callbacks.c:84 #, c-format msgid "Problem when opening new '%s' CA database\n" msgstr "Problem beim Öffnen der neuen Zertifizierungsstellen-Datenbank »%s«\n" #: src/ca-cli-callbacks.c:88 #, c-format msgid "File '%s' opened\n" msgstr "Datei »%s« wurde geöffnet\n" #: src/ca-cli-callbacks.c:98 #, c-format msgid "Problem when opening '%s' CA database\n" msgstr "Problem beim Öffnen der Zertifizierungsstellen-Datenbank »%s«\n" #: src/ca-cli-callbacks.c:132 #, c-format msgid "Current opened file: %s\n" msgstr "Gegenwärtig geöffnete Datei: %s\n" #: src/ca-cli-callbacks.c:133 #, c-format msgid "Number of certificates in file: %d\n" msgstr "Anzahl der Zertifikate in Datei: %d\n" #: src/ca-cli-callbacks.c:134 #, c-format msgid "Number of CSRs in file: %d\n" msgstr "Anzahl der Siganturanfragen in Datei: %d\n" #: src/ca-cli-callbacks.c:169 msgid " (after 2038?)" msgstr "" #: src/ca-cli-callbacks.c:239 #, c-format msgid "Certificates in Database:\n" msgstr "Zertifikate in Datenbank:\n" #: src/ca-cli-callbacks.c:240 #, c-format msgid "Id.\tIs CA?\tCertificate Subject\tKey in DB?\tActivation\t\tExpiration" msgstr "" #: src/ca-cli-callbacks.c:243 #, c-format msgid "\t\tRevocation\n" msgstr "" #: src/ca-cli-callbacks.c:278 #, c-format msgid "Certificate Requests in Database:\n" msgstr "Zertifikatanfragen in Datenbank:\n" #: src/ca-cli-callbacks.c:279 #, c-format msgid "Id.\tParent Id.\tCSR Subject\t\tKey in DB?\n" msgstr "" #: src/ca-cli-callbacks.c:309 src/ca-cli-callbacks.c:1129 #: src/ca-cli-callbacks.c:1522 src/ca-cli-callbacks.c:1551 msgid "The given CA id. is not valid" msgstr "Die angegebene Kennung der Zertifizierungsstelle ist ungültig" #: src/ca-cli-callbacks.c:362 #, c-format msgid "" "Please enter data corresponding to subject of the Certificate Signing " "Request:\n" msgstr "" #: src/ca-cli-callbacks.c:365 src/ca-cli-callbacks.c:567 msgid "Enter country (C)" msgstr "Land eingeben (C)" #: src/ca-cli-callbacks.c:373 src/ca-cli-callbacks.c:573 msgid "Enter state or province (ST)" msgstr "Bundesland oder Kanton eingeben (ST)" #: src/ca-cli-callbacks.c:382 src/ca-cli-callbacks.c:579 msgid "Enter locality or city (L)" msgstr "Ort oder Stadt eingeben (L)" #: src/ca-cli-callbacks.c:390 src/ca-cli-callbacks.c:585 msgid "Enter organization (O)" msgstr "Organisation eingeben (O)" #: src/ca-cli-callbacks.c:398 src/ca-cli-callbacks.c:591 msgid "Enter organizational unit (OU)" msgstr "Organisationseinheit eingeben (OU)" #: src/ca-cli-callbacks.c:405 src/ca-cli-callbacks.c:597 msgid "Enter common name (CN)" msgstr "" #: src/ca-cli-callbacks.c:411 src/ca-cli-callbacks.c:603 msgid "Enter email address (leave blank for none)" msgstr "" #: src/ca-cli-callbacks.c:422 src/ca-cli-callbacks.c:614 msgid "" "Enter Subject Alternative Names (SAN) [format: " "DNS:example.com,IP:192.168.1.1]" msgstr "" #: src/ca-cli-callbacks.c:433 src/ca-cli-callbacks.c:625 #, fuzzy msgid "Enter type of key you are going to create (RSA/DSA/ECDSA/Ed25519)" msgstr "Typ des zu erzeugenden Schlüssels eingeben (RSA/DSA)" #: src/ca-cli-callbacks.c:472 src/ca-cli-callbacks.c:656 msgid "Enter curve size for ECDSA (256, 384, or 521)" msgstr "" #: src/ca-cli-callbacks.c:482 src/ca-cli-callbacks.c:667 msgid "Enter bitlength for the key (it must be a whole multiple of 1024)" msgstr "" "Bitlänge des Schlüssels eingeben (muss ein ganzzahliges Vielfaches von 1024 " "sein)" #: src/ca-cli-callbacks.c:487 #, c-format msgid "These are the provided CSR properties:\n" msgstr "" #: src/ca-cli-callbacks.c:489 src/ca-cli-callbacks.c:704 #: src/ca-cli-callbacks.c:1350 src/ca-cli-callbacks.c:1411 #, c-format msgid "Subject:\n" msgstr "" #: src/ca-cli-callbacks.c:490 src/ca-cli-callbacks.c:705 #, c-format msgid "\tDistinguished Name: " msgstr "" #: src/ca-cli-callbacks.c:505 src/ca-cli-callbacks.c:720 #: src/ca-cli-callbacks.c:1354 src/ca-cli-callbacks.c:1414 #, c-format msgid "\tSubject Alternative Names: %s\n" msgstr "" #: src/ca-cli-callbacks.c:506 src/ca-cli-callbacks.c:721 #, c-format msgid "Key pair\n" msgstr "Schlüsselpaar\n" #: src/ca-cli-callbacks.c:512 src/ca-cli-callbacks.c:727 #, c-format msgid "\tType: %s\n" msgstr "\tTyp: %s\n" #: src/ca-cli-callbacks.c:514 #, c-format msgid "\tKey size: fixed (Ed25519)\n" msgstr "" #: src/ca-cli-callbacks.c:516 #, c-format msgid "\tCurve: P-%d\n" msgstr "" #: src/ca-cli-callbacks.c:518 src/ca-cli-callbacks.c:729 #, c-format msgid "\tKey bitlength: %d\n" msgstr "\tBitlänge des Schlüssels: %d\n" #: src/ca-cli-callbacks.c:521 src/ca-cli-callbacks.c:740 msgid "Do you want to change anything? Yes/[No] " msgstr "Wollen Sie noch etwas ändern? Ja/[Nein] " #: src/ca-cli-callbacks.c:525 msgid "" "You are about to create a Certificate Signing Request with these properties." msgstr "" "Sie sind dabei, eine Signaturanfrage für ein Zertifikat mit den folgenden " "Parametern zu erstellen." #: src/ca-cli-callbacks.c:526 src/ca-cli-callbacks.c:745 msgid "Are you sure? [Yes]/No " msgstr "Sind Sie sicher? [Ja]/Nein " #: src/ca-cli-callbacks.c:531 src/ca-cli-callbacks.c:750 #: src/ca-cli-callbacks.c:834 src/ca-cli-callbacks.c:965 #: src/ca-cli-callbacks.c:1086 src/ca-cli-callbacks.c:1115 #: src/ca-cli-callbacks.c:1181 src/ca-cli-callbacks.c:1208 #: src/ca-cli-callbacks.c:1236 src/ca-cli-callbacks.c:1251 #: src/ca-cli-callbacks.c:1581 src/ca-cli-callbacks.c:1624 #: src/ca-cli-callbacks.c:1945 #, c-format msgid "Operation cancelled.\n" msgstr "Vorgang wurde abgebrochen.\n" #: src/ca-cli-callbacks.c:565 #, c-format msgid "" "Please enter data corresponding to subject of the new Certification " "Authority:\n" msgstr "" #: src/ca-cli-callbacks.c:673 msgid "" "Introduce number of months before expiration of the new certification " "authority" msgstr "" "Geben Sie die Anzahl der Monate bis zum Ablauf der neuen " "Zertifizierungsstelle an" #: src/ca-cli-callbacks.c:693 src/new_ca_window.c:457 msgid "" "This system uses a 32-bit time_t and cannot represent dates after " "2038-01-19. The new CA's expiration date has been clamped to that limit. To " "issue longer-lived CAs, run gnoMint on a 64-bit platform." msgstr "" #: src/ca-cli-callbacks.c:702 #, c-format msgid "These are the provided new CA properties:\n" msgstr "Dies sind die Eigenschaften der neuen Zertifizierungsstelle:\n" #: src/ca-cli-callbacks.c:730 #, c-format msgid "Validity\n" msgstr "Gültigkeit\n" #: src/ca-cli-callbacks.c:731 src/ca-cli-callbacks.c:1360 #, c-format msgid "Validity:\n" msgstr "Gültigkeit:\n" #: src/ca-cli-callbacks.c:734 src/ca-cli-callbacks.c:1363 #, c-format msgid "\tActivated on: %s\n" msgstr "\tAktiviert am: %s\n" #: src/ca-cli-callbacks.c:738 src/ca-cli-callbacks.c:1370 #, c-format msgid "\tExpires on: %s\n" msgstr "\tLäuft ab am: %s\n" #: src/ca-cli-callbacks.c:744 msgid "" "You are about to create a new Certification Authority with these properties." msgstr "" "Sie sind dabei, eine neue Zertfizierungsstelle mit den folgenden " "Eigenschaften zu erstellen:" #: src/ca-cli-callbacks.c:770 src/ca-cli-callbacks.c:818 #: src/ca-cli-callbacks.c:1321 msgid "The given certificate id. is not valid" msgstr "Die angegebene Zertifikatkennung ist ungültig" #: src/ca-cli-callbacks.c:777 src/ca-cli-callbacks.c:801 #, c-format msgid "Private key extracted successfully into file '%s'\n" msgstr "Geheimer Schlüssel wurde erfolgreich in Datei »%s« entpackt\n" #: src/ca-cli-callbacks.c:794 src/ca-cli-callbacks.c:946 #: src/ca-cli-callbacks.c:1099 src/ca-cli-callbacks.c:1400 msgid "The given CSR id. is not valid" msgstr "Die angegebene Kennung der Siganturanfrage ist ungültig" #: src/ca-cli-callbacks.c:824 msgid "This certificate will be revoked." msgstr "Dieses Zertifikat wird widerrufen werden." #: src/ca-cli-callbacks.c:830 #, c-format msgid "Certificate revoked.\n" msgstr "Zertifikat wurde widerrufen.\n" #: src/ca-cli-callbacks.c:844 src/ca-cli-callbacks.c:1381 #, c-format msgid "Certificate uses:\n" msgstr "Zertifikat benutzt:\n" #: src/ca-cli-callbacks.c:847 #, c-format msgid "* Certification Authority use enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:849 #, c-format msgid "* Certification Authority use disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:853 #, c-format msgid "* CRL signing use enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:855 #, c-format msgid "* CRL signing use disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:859 #, c-format msgid "* Digital Signature use enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:861 #, c-format msgid "* Digital Signature use disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:865 src/ca-cli-callbacks.c:867 #, c-format msgid "* Data Encipherment use enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:871 #, c-format msgid "* Key Encipherment use enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:873 #, c-format msgid "* Key Encipherment use disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:877 #, c-format msgid "* Non Repudiation use enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:879 #, c-format msgid "* Non Repudiation use disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:883 #, c-format msgid "* Key Agreement use enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:885 #, c-format msgid "* Key Agreement use disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:888 #, c-format msgid "Certificate purposes:\n" msgstr "Zertifikatzwecke:\n" #: src/ca-cli-callbacks.c:891 #, c-format msgid "* Email Protection purpose enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:893 #, c-format msgid "* Email Protection purpose disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:897 #, c-format msgid "* Code Signing purpose enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:899 #, c-format msgid "* Code Signing purpose disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:903 #, c-format msgid "* TLS Web Client purpose enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:905 #, c-format msgid "* TLS Web Client purpose disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:909 #, c-format msgid "* TLS Web Server purpose enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:911 #, c-format msgid "* TLS Web Server purpose disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:915 #, c-format msgid "* Time Stamping purpose enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:917 #, c-format msgid "* Time Stamping purpose disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:921 #, c-format msgid "* OCSP Signing purpose enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:923 #, c-format msgid "* OCSP Signing purpose disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:927 #, c-format msgid "* Any purpose enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:929 #, c-format msgid "* Any purpose disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:953 #, c-format msgid "You are about to sign the following Certificate Signing Request:\n" msgstr "" #: src/ca-cli-callbacks.c:955 #, c-format msgid "with the certificate corresponding to the next CA:\n" msgstr "" #: src/ca-cli-callbacks.c:958 msgid "" "Introduce number of months before expiration of the new certificate (0 to " "cancel)" msgstr "" "Geben Sie die Anzahl der Monate bis zum Ablauf des neuen Zertifikats ein (0 " "für abbrechen)" #: src/ca-cli-callbacks.c:984 src/ca-cli-callbacks.c:1072 #, c-format msgid "" "The new certificate will be created with the following uses and purposes:\n" msgstr "" #: src/ca-cli-callbacks.c:987 msgid "Do you want to change any property of the new certificate? Yes/[No] " msgstr "" "Wollen Sie irgeneine Eigenschaft des neuen Zertifikats ändern? Ja/[Nein] " #: src/ca-cli-callbacks.c:990 msgid "* Enable Certification Authority use? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:992 #, c-format msgid "* Certification Authority use disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:996 msgid "* Enable CRL Signing? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:998 #, c-format msgid "* CRL signing use disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1002 msgid "* Enable Digital Signature use? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1004 #, c-format msgid "* Digital Signature use disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1008 msgid "Enable Data Encipherment use? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1010 #, c-format msgid "* Data Encipherment use disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1014 msgid "Enable Key Encipherment use? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1016 #, c-format msgid "* Key Encipherment use disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1020 msgid "Enable Non Repudiation use? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1022 #, c-format msgid "* Non Repudiation use disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1026 msgid "Enable Key Agreement use? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1028 #, c-format msgid "* Key Agreement use disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1032 msgid "Enable Email Protection purpose? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1034 #, c-format msgid "* Email Protection purpose disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1038 msgid "Enable Code Signing purpose? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1040 #, c-format msgid "* Code Signing purpose disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1044 msgid "Enable TLS Web Client purpose? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1046 #, c-format msgid "* TLS Web Client purpose disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1050 msgid "Enable TLS Web Server purpose? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1052 #, c-format msgid "* TLS Web Server purpose disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1056 msgid "Enable Time Stamping purpose? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1058 #, c-format msgid "* Time Stamping purpose disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1062 msgid "Enable OCSP Signing purpose? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1063 #, c-format msgid "* OCSP Signing purpose disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1067 msgid "Enable any purpose? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1069 #, c-format msgid "* Any purpose disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1077 msgid "" "All the mandatory data for the certificate generation has been gathered." msgstr "" #: src/ca-cli-callbacks.c:1077 msgid "Do you want to proceed with the signing? [Yes]/No " msgstr "Wollen Sie das Signieren fortsetzen? [Ja]/Nein " #: src/ca-cli-callbacks.c:1083 #, c-format msgid "Certificate signed.\n" msgstr "Zertifikat wurde signiert.\n" #: src/ca-cli-callbacks.c:1105 msgid "This Certificate Signing Request will be deleted." msgstr "Diese Signaturanfrage für ein Zertifikat wird gelöscht werden." #: src/ca-cli-callbacks.c:1105 msgid "This operation cannot be undone. Are you sure? Yes/[No] " msgstr "" "Dieser Vorgang kann nicht rückgängig gemacht werden. Sind Sie sicher? Ja/" "[Nein] " #: src/ca-cli-callbacks.c:1111 #, c-format msgid "Certificate Signing Request deleted.\n" msgstr "Signaturanfrage wurde gelöscht.\n" #: src/ca-cli-callbacks.c:1136 #, c-format msgid "CRL generated successfully into file '%s'\n" msgstr "" #: src/ca-cli-callbacks.c:1153 msgid "The bit-length of the prime number must be whole multiple of 1024" msgstr "" #: src/ca-cli-callbacks.c:1162 #, c-format msgid "Diffie-Hellman parameters created and saved successfully in file '%s'\n" msgstr "" "Diffie-Hellman-Parameter wurden erstellt und erfolgreich in Datei »%s« " "gespeichert.\n" #: src/ca-cli-callbacks.c:1174 msgid "Currently, the database is not password-protected." msgstr "Gegenwärtig ist die Datenbank nicht durch ein Passwort geschützt." #: src/ca-cli-callbacks.c:1174 msgid "Do you want to password protect it? [Yes]/No " msgstr "Wollen Sie sie durch ein Passwort schützen? [Ja]/Nein " #: src/ca-cli-callbacks.c:1175 msgid "" "OK. You need to supply a password for protecting the private keys in the\n" "database, so nobody else but authorized people can use them. This password\n" "will be asked any time gnoMint will make use of any private key in database." msgstr "" "OK. Sie müssen zum Schutz der geheimen Schlüssel in der Datenbank\n" "ein Passwort eingeben, so dass niemand anderes als zugelassene Personen\n" "diese benutzen können. Dieses Passwort wird jedesmal abgefragt,\n" "wenn gnoMint einen geheimen Schlüssel in der Datenbank benutzen will." #: src/ca-cli-callbacks.c:1178 msgid "Insert password:" msgstr "Passwort eingeben:" #: src/ca-cli-callbacks.c:1178 msgid "Insert password (confirm):" msgstr "Passwort eingeben (Bestätigung):" #: src/ca-cli-callbacks.c:1179 src/ca-cli-callbacks.c:1249 msgid "The introduced passwords are distinct." msgstr "Die eingegebenen Passwörter sind unterschiedlich." #: src/ca-cli-callbacks.c:1190 #, c-format msgid "Password established successfully.\n" msgstr "Passwort wurde erfolgreich festgelegt.\n" #: src/ca-cli-callbacks.c:1197 #, c-format msgid "Nothing done.\n" msgstr "" #: src/ca-cli-callbacks.c:1201 msgid "Currently, the database IS password-protected." msgstr "Gegenwärtig IST die Datenbank durchein Passwort geschützt." #: src/ca-cli-callbacks.c:1201 msgid "Do you want to remove this password protection? Yes/[No] " msgstr "Wollen Sie diesen Passwortschutz entfernen? Ja/[Nein] " #: src/ca-cli-callbacks.c:1205 #, c-format msgid "" "For removing the password-protection, the current database password\n" "must be supplied.\n" msgstr "" "Zum Entfernen des Passwortschutzes muss das aktuelle Passwort\n" "der Datenbank eingegeben werden.\n" #: src/ca-cli-callbacks.c:1206 src/ca-cli-callbacks.c:1234 msgid "Please, insert the current database password (Empty to cancel): " msgstr "" "Bitte geben Sie das aktuelle Passwort der Datenbank ein (leer lassen, um " "abzubrechen): " #: src/ca-cli-callbacks.c:1213 src/ca-cli-callbacks.c:1241 msgid "" "The current password you have entered\n" "doesn't match with the actual current database password." msgstr "" "Das aktuell eingebene Passwort stimmt nicht mit dem\n" "aktuellen Passwort der Datenbank überein." #: src/ca-cli-callbacks.c:1218 msgid "" "Error while removing database password. \n" "The operation was cancelled." msgstr "" "Fehler beim Entfernen des Datenbank-Passworts. \n" "Vorgang wurde abgebrochen." #: src/ca-cli-callbacks.c:1223 #, c-format msgid "Password removed successfully.\n" msgstr "Passwort wurde erfolgreich entfernt.\n" #: src/ca-cli-callbacks.c:1233 #, c-format msgid "" "You must supply the current database password before changing the password.\n" msgstr "" "Sie müssen das aktuelle Datenbank-Passwort eingeben, bevor das Passwort " "geändert werden kann.\n" #: src/ca-cli-callbacks.c:1245 msgid "" "OK. Now you must supply a new password for protecting the private keys in " "the\n" "database, so nobody else but authorized people can use them. This password\n" "will be asked any time gnoMint will make use of any private key in database." msgstr "" #: src/ca-cli-callbacks.c:1248 msgid "Insert new password:" msgstr "Neues Passwort eingeben:" #: src/ca-cli-callbacks.c:1248 msgid "Insert new password (confirm):" msgstr "Neues Passwort eingeben (Bestätigung):" #: src/ca-cli-callbacks.c:1257 msgid "" "Error while changing database password. \n" "The operation was cancelled." msgstr "" "Fehler beim Ändern des Datenbank-Passworts. \n" "Vorgang wurde abgebrochen." #: src/ca-cli-callbacks.c:1263 #, c-format msgid "Password changed successfully.\n" msgstr "Passwort wurde erfolgreich geändert.\n" #: src/ca-cli-callbacks.c:1281 msgid "Problem when importing the given file." msgstr "Problem beim Importieren der angegebenen Datei." #: src/ca-cli-callbacks.c:1284 #, c-format msgid "File imported successfully.\n" msgstr "Datei wurde erfolgreich importiert.\n" #: src/ca-cli-callbacks.c:1300 #, c-format msgid "Directory imported successfully.\n" msgstr "Ordner wurde erfolgreich importiert.\n" #: src/ca-cli-callbacks.c:1343 #, c-format msgid "Certificate:\n" msgstr "Zertifikat:\n" #: src/ca-cli-callbacks.c:1347 #, c-format msgid "\tSerial number: %s\n" msgstr "\tSeriennummer: %s\n" #: src/ca-cli-callbacks.c:1351 src/ca-cli-callbacks.c:1357 #: src/ca-cli-callbacks.c:1412 #, c-format msgid "\tDistinguished Name: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1351 src/ca-cli-callbacks.c:1352 #: src/ca-cli-callbacks.c:1357 src/ca-cli-callbacks.c:1358 msgid "None." msgstr "Nichts." #: src/ca-cli-callbacks.c:1352 src/ca-cli-callbacks.c:1358 #: src/ca-cli-callbacks.c:1416 #, c-format msgid "\tUnique ID: %s\n" msgstr "\tEindeutige Kennung: %s\n" #: src/ca-cli-callbacks.c:1356 #, c-format msgid "Issuer:\n" msgstr "" #: src/ca-cli-callbacks.c:1365 src/ca-cli-callbacks.c:1372 #, c-format msgid "" "\t (warning: this 32-bit build cannot tell a real post-2038 date from an " "overflow; this value may be inaccurate)\n" msgstr "" #: src/ca-cli-callbacks.c:1375 #, c-format msgid "Fingerprints:\n" msgstr "Fingerabdrücke:\n" #: src/ca-cli-callbacks.c:1376 #, c-format msgid "\tSHA1 fingerprint: %s\n" msgstr "\tSHA1-Fingerabdruck: %s\n" #: src/ca-cli-callbacks.c:1377 #, c-format msgid "\tMD5 fingerprint: %s\n" msgstr "\tMD5-Fingerabdruck: %s\n" #: src/ca-cli-callbacks.c:1378 #, fuzzy, c-format msgid "\tSHA256 fingerprint: %s\n" msgstr "\tSHA1-Fingerabdruck: %s\n" #: src/ca-cli-callbacks.c:1409 #, c-format msgid "Certificate Signing Request:\n" msgstr "Signaturanfrage für Zertifikat:\n" #: src/ca-cli-callbacks.c:1486 msgid "Generated certs inherit Country from CA " msgstr "" #: src/ca-cli-callbacks.c:1487 msgid "Generated certs inherit State from CA " msgstr "" #: src/ca-cli-callbacks.c:1488 msgid "Generated certs inherit Locality from CA " msgstr "" #: src/ca-cli-callbacks.c:1489 msgid "Generated certs inherit Organization from CA " msgstr "" #: src/ca-cli-callbacks.c:1490 msgid "Generated certs inherit Organizational Unit from CA " msgstr "" #: src/ca-cli-callbacks.c:1491 msgid "Country in generated certs must be the same than in CA " msgstr "" #: src/ca-cli-callbacks.c:1492 msgid "State in generated certs must be the same than in CA " msgstr "" #: src/ca-cli-callbacks.c:1493 msgid "Locality in generated certs must be the same than in CA " msgstr "" #: src/ca-cli-callbacks.c:1494 msgid "Organization in generated certs must be the same than in CA " msgstr "" #: src/ca-cli-callbacks.c:1495 msgid "Organizational Unit in generated certs must be the same than in CA" msgstr "" #: src/ca-cli-callbacks.c:1496 msgid "Maximum number of hours between CRL updates " msgstr "" #: src/ca-cli-callbacks.c:1497 msgid "CRL distribution point (URL where CRL is published) " msgstr "" #: src/ca-cli-callbacks.c:1498 msgid "Maximum number of months before expiration of new certs " msgstr "" #: src/ca-cli-callbacks.c:1499 msgid "CA use enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1500 msgid "CRL Sign use enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1501 msgid "Non reputation use enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1502 msgid "Digital signature use enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1503 msgid "Key encipherment use enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1504 msgid "Key agreement use enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1505 msgid "Data encipherment use enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1506 msgid "TLS web server purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1507 msgid "TLS web client purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1508 msgid "Time stamping purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1509 msgid "Code signing server purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1510 msgid "Email protection purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1511 msgid "OCSP signing purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1512 msgid "Any purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1526 #, c-format msgid "Showing policies of the following certificate:\n" msgstr "" #: src/ca-cli-callbacks.c:1528 #, c-format msgid "" "\n" "Policies:\n" msgstr "" #: src/ca-cli-callbacks.c:1530 #, c-format msgid "Id.\tDescription\t\t\t\t\t\t\t\tValue\n" msgstr "" #: src/ca-cli-callbacks.c:1556 msgid "The given policy id is not valid" msgstr "" #: src/ca-cli-callbacks.c:1568 #, c-format msgid "" "You are about to assign to the policy\n" "'%s' the new value '%s'." msgstr "" #: src/ca-cli-callbacks.c:1572 src/ca-cli-callbacks.c:1616 msgid "Are you sure? Yes/[No] : " msgstr "Sind Sie sicher? Ja/[Nein] : " #: src/ca-cli-callbacks.c:1577 #, c-format msgid "Policy set correctly to '%s'.\n" msgstr "" #: src/ca-cli-callbacks.c:1591 #, c-format msgid "gnoMint-cli current preferences:\n" msgstr "" #: src/ca-cli-callbacks.c:1593 #, c-format msgid "Id.\tName\t\t\tValue\n" msgstr "Id.\tName\t\t\tWert\n" #: src/ca-cli-callbacks.c:1594 #, c-format msgid "0\tGnome keyring support\t%d\n" msgstr "0\tUnterstützung für Gnome-Schlüsselbund\t%d\n" #: src/ca-cli-callbacks.c:1606 msgid "The given preference id is not valid" msgstr "Die angegebene Einstellungskennung ist ungültig" #: src/ca-cli-callbacks.c:1612 #, c-format msgid "" "You are about to assign to the preference 'Gnome keyring support' the new " "value '%d'." msgstr "" #: src/ca-cli-callbacks.c:1634 #, c-format msgid "" "%s version %s\n" "%s\n" msgstr "" "%s Version %s\n" "%s\n" #: src/ca-cli-callbacks.c:1635 #, c-format msgid "" "\n" "Authors:\n" "%s\n" "\n" msgstr "" "\n" "Autoren:\n" "%s\n" "\n" #: src/ca-cli-callbacks.c:1636 src/ca-cli-callbacks.c:1637 src/main.c:742 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " David Marín https://launchpad.net/~davefx\n" " Gregor Goldbach https://launchpad.net/~glauschwuffel\n" " Mario Blättermann https://launchpad.net/~mariobl-freenet\n" " Michael Honsel https://launchpad.net/~lesnoh" #: src/ca-cli-callbacks.c:1637 #, c-format msgid "" "Translators:\n" "%s\n" msgstr "" "Übersetzer:\n" "%s\n" #: src/ca-cli-callbacks.c:1644 msgid "" "THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY\n" "APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT\n" "HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY\n" "OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,\n" "THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n" "PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM\n" "IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF\n" "ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n" "\n" "For more information about warranty, see section 15 onwards of the GNU\n" "General Public License. You should have received a copy of the GNU General\n" "Public License along with this program. If not, see\n" ".\n" "\n" msgstr "" #: src/ca-cli-callbacks.c:1662 msgid "" "This program is free software: you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation, either version 3 of the License, or\n" "(at your option) any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program. If not, see .\n" "\n" msgstr "" #: src/ca-cli-callbacks.c:1677 #, fuzzy, c-format msgid "%s version %s \"%s\"\n" msgstr "" "%s Version %s\n" "%s\n" #: src/ca-cli-callbacks.c:1686 #, c-format msgid "Available commands:\n" msgstr "Verfügbare Befehle:\n" #: src/ca-cli-callbacks.c:1687 #, c-format msgid "===================\n" msgstr "===================\n" #: src/ca-cli-callbacks.c:1697 #, c-format msgid "Exiting gnomint-cli...\n" msgstr "" #: src/ca-cli-callbacks.c:1738 #, fuzzy msgid "The given CA id is not valid" msgstr "Die angegebene Kennung der Zertifizierungsstelle ist ungültig" #: src/ca-cli-callbacks.c:1750 msgid "Certificate type must be 'web' or 'email'" msgstr "" #: src/ca-cli-callbacks.c:1756 msgid "Server name cannot be empty" msgstr "" #: src/ca-cli-callbacks.c:1760 #, fuzzy, c-format msgid "Creating %s certificate for: %s\n" msgstr "Fehler beim Setzen der Version des Zertifikats" #: src/ca-cli-callbacks.c:1761 #, fuzzy msgid "web server" msgstr "TLS-Webserver" #: src/ca-cli-callbacks.c:1761 #, fuzzy msgid "email server" msgstr "TLS-Webserver" #: src/ca-cli-callbacks.c:1837 #, fuzzy, c-format msgid "Error: Key generation failed: %s\n" msgstr "Schlüsselerzeugung ist fehlgeschlagen" #: src/ca-cli-callbacks.c:1845 #, fuzzy, c-format msgid "Error: CSR generation failed: %s\n" msgstr "Erzeugung der Signaturanfrage ist fehlgeschlagen" #: src/ca-cli-callbacks.c:1854 #, c-format msgid "Error: Failed to parse generated CSR\n" msgstr "" #: src/ca-cli-callbacks.c:1865 #, fuzzy, c-format msgid "Error: Failed to save CSR: %s\n" msgstr "Initialisierung ist fehlgeschlagen: %s\n" #: src/ca-cli-callbacks.c:1879 msgid "CSR created with ID: %" msgstr "" #: src/ca-cli-callbacks.c:1903 #, fuzzy, c-format msgid "Error: Failed to sign certificate: %s\n" msgstr "Fehler beim Signieren des Zertifikats" #: src/ca-cli-callbacks.c:1910 #, fuzzy, c-format msgid "Certificate generated successfully for: %s\n" msgstr "Zertifikat wurde erfolgreich exportiert" #: src/ca-cli-callbacks.c:1911 #, fuzzy, c-format msgid "Certificate type: %s\n" msgstr "Zertifikat benutzt:\n" #: src/ca-cli-callbacks.c:1911 #, fuzzy msgid "Web Server" msgstr "TLS-Webserver" #: src/ca-cli-callbacks.c:1911 msgid "Email Server" msgstr "" #: src/ca-cli-callbacks.c:1925 msgid "Usage: renewcert " msgstr "" #: src/ca-cli-callbacks.c:1930 src/ca-cli-callbacks.c:1968 #, fuzzy msgid "The given certificate id is not valid" msgstr "Die angegebene Zertifikatkennung ist ungültig" #: src/ca-cli-callbacks.c:1941 msgid "" "gnoMint will issue a new certificate with the same subject and SAN as this " "one, signed by the same CA, with a fresh keypair. The old certificate stays " "in place." msgstr "" #: src/ca-cli-callbacks.c:1944 #, fuzzy msgid "Renew? [Yes]/No " msgstr "Sind Sie sicher? [Ja]/Nein " #: src/ca-cli-callbacks.c:1955 #, fuzzy msgid "Certificate renewed. New certificate id: %" msgstr "Erzeugung des Zertifikats ist fehlgeschlagen" #: src/ca-cli-callbacks.c:1963 msgid "Usage: exportchain " msgstr "" #: src/ca-cli-callbacks.c:1974 msgid "Cannot build chain PEM for that certificate." msgstr "" #: src/ca-cli-callbacks.c:1979 #, fuzzy msgid "Cannot write chain file." msgstr "Initialisierung ist fehlgeschlagen: %s\n" #: src/ca-cli-callbacks.c:1985 #, c-format msgid "Full chain (leaf → root) written to %s\n" msgstr "" #: src/ca-cli-callbacks.c:1992 msgid "Usage: revokemany [cert-id ...]" msgstr "" #: src/ca-cli-callbacks.c:2008 #, fuzzy, c-format msgid "%d certificate revoked.\n" msgid_plural "%d certificates revoked.\n" msgstr[0] "Zertifikat wurde widerrufen.\n" msgstr[1] "Zertifikat wurde widerrufen.\n" #: src/ca-cli-callbacks.c:2016 msgid "Usage: deletemany [csr-id ...]" msgstr "" #: src/ca-cli-callbacks.c:2032 #, c-format msgid "%d CSR deleted.\n" msgid_plural "%d CSRs deleted.\n" msgstr[0] "" msgstr[1] "" #: src/ca-cli-callbacks.c:2092 msgid "Usage: search " msgstr "" #: src/ca-cli-callbacks.c:2099 #, c-format msgid "Matches (id\tserial\tsubject):\n" msgstr "" #: src/ca-cli-callbacks.c:2102 #, c-format msgid "%d match.\n" msgid_plural "%d matches.\n" msgstr[0] "" msgstr[1] "" #: src/ca-cli-callbacks.c:2126 #, fuzzy, c-format msgid "'%s' is not a certificate id in this database." msgstr "Zertifikat-Datenbank ö_ffnen" #: src/ca-cli-callbacks.c:2134 #, c-format msgid "Cannot read PEM for cert id %s." msgstr "" #: src/ca-cli-callbacks.c:2152 msgid "Usage: diff " msgstr "" #: src/ca-cli-callbacks.c:2168 msgid "Field" msgstr "" #: src/ca-cli-callbacks.c:2181 #, c-format msgid "" "\n" "%d field differs.\n" msgid_plural "" "\n" "%d fields differ.\n" msgstr[0] "" msgstr[1] "" #: src/ca_creation.c:55 src/csr_creation.c:57 msgid "Generating new RSA key pair" msgstr "Neues RSA-Schlüsselpaar wird erzeugt" #: src/ca_creation.c:64 src/ca_creation.c:88 src/ca_creation.c:109 #: src/ca_creation.c:128 src/csr_creation.c:66 src/csr_creation.c:87 #: src/csr_creation.c:104 src/csr_creation.c:121 msgid "Key generation failed" msgstr "Schlüsselerzeugung ist fehlgeschlagen" #: src/ca_creation.c:78 src/csr_creation.c:79 msgid "Generating new DSA key pair" msgstr "Neues DSA-Schlüsselpaar wird erzeugt" #: src/ca_creation.c:101 src/csr_creation.c:97 #, fuzzy msgid "Generating new ECDSA key pair" msgstr "Neues DSA-Schlüsselpaar wird erzeugt" #: src/ca_creation.c:120 src/csr_creation.c:114 #, fuzzy msgid "Generating new Ed25519 key pair" msgstr "Neues RSA-Schlüsselpaar wird erzeugt" #: src/ca_creation.c:139 msgid "Generating self-signed CA-Root cert" msgstr "" #: src/ca_creation.c:147 msgid "Certificate generation failed" msgstr "Erzeugung des Zertifikats ist fehlgeschlagen" #: src/ca_creation.c:159 msgid "Creating CA database" msgstr "Zertifizierungsstellen-Datenbank wird erzeugt" #: src/ca_creation.c:168 msgid "CA database creation failed" msgstr "Erzeugung der Zertifizierungsstellen-Datenbank ist fehlgeschlagen" #: src/ca_creation.c:180 msgid "CA generated successfully" msgstr "Zertifizierungsstellen-Datenbank wurde erfolgreich erzeugt" #: src/ca_file.c:207 #, c-format msgid "Error opening filename '%s'" msgstr "Fehler beim Öffnen der Datei »%s«" #: src/ca_file.c:310 msgid "" "The selected database has been created with a newer version of gnoMint than " "the currently installed." msgstr "" "Die ausgewählte Datenbank wurde mit einer neueren Version von gnoMint " "erzeugt, als die gegenwärtig installierte Version." #: src/ca_file.c:1221 msgid "Cannot find last assigned serial number" msgstr "" #: src/ca_file.c:1410 msgid "Cannot find parent CA in database" msgstr "" #: src/ca_file.c:1600 msgid "" "This certificate already exists in the database: cannot insert it twice." msgstr "" "Dieses Zertikat existiert bereits in der Datenbank. Es kann nicht nochmals " "eingefügt werden." #: src/ca_file.c:2044 msgid "" "The given file contains a valid private key. However, it has not been " "imported to the database because it doesn't match any key-less certificate " "or certificate request in the database." msgstr "" #: src/ca_file.c:2047 msgid "" "The given file contains a valid private key. However, it has not been " "imported to the database because it doesn't match any key-less certificate " "in the database." msgstr "" #: src/certificate_properties.c:151 msgid "" "This 32-bit build cannot represent dates after 2038-01-19, so it cannot " "distinguish a genuine date from a later one that overflowed. This value may " "be inaccurate." msgstr "" #: src/certificate_properties.c:383 #, fuzzy msgid "Unknown" msgstr "(unbekannt)" #: src/certificate_properties.c:453 src/tls.c:1478 msgid "Certificate signing" msgstr "" #: src/certificate_properties.c:457 msgid "Key encipherment only" msgstr "" #: src/certificate_properties.c:459 msgid "Key decipherment only" msgstr "" #: src/certificate_properties.c:472 msgid "Version" msgstr "Version" #: src/certificate_properties.c:507 msgid "Serial Number" msgstr "Seriennummer" #: src/certificate_properties.c:522 src/certificate_properties.c:1262 msgid "Signature" msgstr "Signatur" #: src/certificate_properties.c:525 src/certificate_properties.c:676 #: src/certificate_properties.c:679 src/certificate_properties.c:1228 msgid "Algorithm" msgstr "Algorithmus" #: src/certificate_properties.c:529 src/certificate_properties.c:686 #: src/certificate_properties.c:726 src/certificate_properties.c:763 #: src/certificate_properties.c:1232 msgid "Parameters" msgstr "Parameter" #: src/certificate_properties.c:529 src/certificate_properties.c:686 #: src/certificate_properties.c:763 src/certificate_properties.c:767 #: src/certificate_properties.c:781 src/certificate_properties.c:790 #: src/certificate_properties.c:1232 msgid "(unknown)" msgstr "(unbekannt)" #: src/certificate_properties.c:563 msgid "Issuer" msgstr "" #: src/certificate_properties.c:598 msgid "Validity" msgstr "Gültigkeit" #: src/certificate_properties.c:603 msgid "Not Before" msgstr "Nicht vor" #: src/certificate_properties.c:610 msgid "Not After" msgstr "Nicht nach" #: src/certificate_properties.c:616 msgid "Note" msgstr "" #: src/certificate_properties.c:617 msgid "" "This 32-bit build cannot represent dates after 2038-01-19, so a value marked " "⚠ may be a later date that overflowed and is inaccurate." msgstr "" #: src/certificate_properties.c:673 msgid "Subject Public Key Info" msgstr "" #: src/certificate_properties.c:690 msgid "RSA PublicKey" msgstr "Öffentlicher RSA-Schlüssel" #: src/certificate_properties.c:702 msgid "Modulus" msgstr "Modulus" #: src/certificate_properties.c:710 msgid "Public Exponent" msgstr "" #: src/certificate_properties.c:755 msgid "DSA PublicKey" msgstr "Öffentlicher DSA-Schlüssel" #: src/certificate_properties.c:767 msgid "Subject Public Key" msgstr "" #: src/certificate_properties.c:781 msgid "Issuer Unique ID" msgstr "Eindeutige Ausstellerkennung" #: src/certificate_properties.c:790 msgid "Subject Unique ID" msgstr "" #: src/certificate_properties.c:813 src/certificate_properties.c:836 #: src/certificate_properties.c:945 src/certificate_properties.c:1058 #: src/certificate_properties.c:1085 src/certificate_properties.c:1124 #: src/certificate_properties.c:1182 src/certificate_properties.c:1457 #: src/san_manager.c:399 msgid "Value" msgstr "Wert" #: src/certificate_properties.c:875 src/certificate_properties.c:1018 msgid "DNS Name" msgstr "DNS-Name" #: src/certificate_properties.c:882 src/certificate_properties.c:1025 msgid "RFC822 Name" msgstr "RFC822-Name" #: src/certificate_properties.c:905 src/certificate_properties.c:919 #: src/certificate_properties.c:927 msgid "IP" msgstr "IP" #: src/certificate_properties.c:936 src/certificate_properties.c:1049 msgid "Directory Name" msgstr "Ordnername" #: src/certificate_properties.c:973 src/certificate_properties.c:1164 msgid "TRUE" msgstr "WAHR" #: src/certificate_properties.c:973 src/certificate_properties.c:1164 msgid "FALSE" msgstr "FALSCH" #: src/certificate_properties.c:977 msgid "CA" msgstr "Zertifizierungsstelle" #: src/certificate_properties.c:981 msgid "Path Length Constraint" msgstr "Beschränkung der Pfadlänge" #: src/certificate_properties.c:1154 msgid "Extensions" msgstr "Erweiterungen" #: src/certificate_properties.c:1166 msgid "Critical" msgstr "Kritisch" #: src/certificate_properties.c:1199 msgid "Certificate" msgstr "Zertifikat" #: src/certificate_properties.c:1225 msgid "Signature Algorithm" msgstr "Signatur-Algorithmus" #: src/certificate_properties.c:1446 msgid "Name" msgstr "Name" #: src/certificate_properties.c:1477 src/tls.c:1494 msgid "TLS WWW Server" msgstr "TLS-Webserver" #: src/certificate_properties.c:1478 msgid "TLS WWW Client" msgstr "TLS-Webclient" #: src/certificate_properties.c:1484 msgid "Subject Directory Attributes" msgstr "" #: src/certificate_properties.c:1485 msgid "Subject Key Identifier" msgstr "" #: src/certificate_properties.c:1486 msgid "Key Usage" msgstr "" #: src/certificate_properties.c:1487 msgid "Private Key Usage Period" msgstr "" #: src/certificate_properties.c:1489 msgid "Basic Constraints" msgstr "" #: src/certificate_properties.c:1490 msgid "Name Constraints" msgstr "" #: src/certificate_properties.c:1491 msgid "CRL Distribution Points" msgstr "" #: src/certificate_properties.c:1492 msgid "Certificate Policies" msgstr "" #: src/certificate_properties.c:1493 msgid "Policy Mappings" msgstr "" #: src/certificate_properties.c:1494 msgid "Authority Key Identifier" msgstr "" #: src/certificate_properties.c:1495 msgid "Policy Constraints" msgstr "" #: src/certificate_properties.c:1496 msgid "Extended Key Usage" msgstr "" #: src/certificate_properties.c:1497 msgid "Delta CRL Distribution Point" msgstr "" #: src/certificate_properties.c:1498 msgid "Inhibit Any-Policy" msgstr "" #: src/creation_process_window.c:69 msgid "CA creation process finished" msgstr "Vorgang der Erzeugung der Zertifizierungsstelle abgeschlossen" #: src/creation_process_window.c:193 msgid "Creation process cancelled" msgstr "Erzeugungsvorgang wurde abgebrochen" #: src/creation_process_window.c:215 msgid "CSR creation process finished" msgstr "" #: src/creation_process_window.c:288 msgid "Creating Certificate Signing Request" msgstr "" #: src/crl.c:101 msgid "CRL generated successfully" msgstr "" #: src/crl.c:146 msgid "Export Certificate Revocation List" msgstr "" #: src/crl.c:180 src/crl.c:253 src/crl.c:299 msgid "There was an error while generating CRL." msgstr "" #: src/crl.c:189 msgid "There was an error while writing CRL." msgstr "" #: src/crl.c:201 src/crl.c:227 src/crl.c:268 src/crl.c:330 src/crl.c:351 msgid "There was an error while exporting CRL." msgstr "" #: src/crl.c:238 src/crl.c:369 msgid "There was an error while getting revoked certificates." msgstr "Fehler beim Erhalten der widerrufenen Zertifikate." #: src/csr_creation.c:131 msgid "Generating CSR" msgstr "Signaturanfrage wird erzeugt" #: src/csr_creation.c:140 msgid "CSR generation failed" msgstr "Erzeugung der Signaturanfrage ist fehlgeschlagen" #: src/csr_creation.c:151 msgid "Saving CSR in database" msgstr "Signaturanfrage wird in Datenbank gespeichert" #: src/csr_creation.c:169 msgid "CSR couldn't be saved" msgstr "Signaturanfrage konnte nicht gespeichert werden" #: src/csr_creation.c:180 msgid "CSR generated successfully" msgstr "Signaturanfrage wurde erfolgreich erzeugt" #: src/csr_properties.c:91 msgid "" "This Certificate Signing Request has its corresponding private key saved " "in a external file." msgstr "" "Der zugehörige geheime Schlüssel für diese Siganturanfrage wurde in einer " "externen Datei gespeichert." #: src/dialog.c:123 #, c-format msgid "" "\n" "The password must have, at least, %d characters\n" msgstr "" "\n" "Das Passwort muss mindestens aus %d Zeichen bestehen\n" #: src/dialog.c:581 msgid "To do. Feature not implemented yet." msgstr "Dieses Funktionsmerkmal ist noch nicht implementiert." #: src/export.c:43 src/export.c:48 src/export.c:53 msgid "There was an error while saving Diffie-Hellman parameters." msgstr "" "Beim Speichern der Diffie-Hellman-Parameter ist ein Fehler aufgetreten." #: src/export.c:79 src/export.c:138 src/export.c:146 src/export.c:200 #: src/export.c:210 src/export.c:304 src/export.c:341 src/export.c:376 #: src/export.c:384 src/export.c:424 src/export.c:433 src/export.c:474 msgid "There was an error while exporting private key." msgstr "Beim Exportieren des geheimen Schlüssels ist ein Fehler aufgetreten." #: src/export.c:99 src/export.c:284 src/export.c:357 src/export.c:455 msgid "There was an error while getting private key." msgstr "Beim Erhalten des geheimen Schlüssels ist ein Fehler aufgetreten." #: src/export.c:110 src/export.c:248 msgid "There was an error while uncrypting private key." msgstr "Beim Entschlüsseln des geheimen Schlüssels ist ein Fehler aufgetreten." #: src/export.c:113 src/export.c:264 msgid "" "You need to supply a passphrase for protecting the exported private key, so " "nobody else but authorized people can use it. This passphrase will be asked " "by any application that will make use of the private key." msgstr "" #: src/export.c:116 src/export.c:267 src/export.c:536 src/export.c:715 msgid "Insert passphrase (8 characters or more):" msgstr "Kennwort eingeben (mindestens 8 Zeichen):" #: src/export.c:116 src/export.c:267 src/export.c:536 src/export.c:715 msgid "Insert passphrase (confirm):" msgstr "Kennwort eingeben (Bestätigung):" #: src/export.c:117 src/export.c:268 src/export.c:537 src/export.c:716 msgid "The introduced passphrases are distinct." msgstr "Die eingegebenen Kennwörter sind unterschiedlich." #: src/export.c:120 src/export.c:178 msgid "Operation cancelled." msgstr "Vorgang wurde abgebrochen." #: src/export.c:130 src/export.c:190 msgid "There was an error while password-protecting private key." msgstr "" "Beim Schützen des geheimen Schlüssels durch ein Passwort ist ein Fehler " "aufgetreten." #: src/export.c:368 src/export.c:415 msgid "There was an error while decrypting private key." msgstr "Beim Entschlüsseln des geheimen Schlüssels ist ein Fehler aufgetreten." #: src/export.c:513 src/export.c:747 msgid "Unsupported operation: you cannot generate a PKCS#12 for a CSR." msgstr "" "Nicht unterstützter Vorgang: Sie können kein PKCS#12 für eine " "Signaturanfrage erstellen." #: src/export.c:521 src/export.c:530 src/export.c:695 src/export.c:731 msgid "" "There was an error while getting the certificate and private key from the " "internal database." msgstr "" "Beim Holen des Zertifikats und geheimen Schlüssels aus der internen " "Datenbank ist ein Fehler aufgetreten." #: src/export.c:533 src/export.c:712 msgid "" "You need to supply a passphrase for protecting the exported certificate, so " "nobody else but authorized people can use it. This passphrase will be asked " "by any application that will import the certificate." msgstr "" #: src/export.c:555 src/export.c:629 msgid "There was an error while generating the PKCS#12 package." msgstr "Beim Erstellen des PKCS#12-Pakets ist ein Fehler aufgetreten." #: src/export.c:569 src/export.c:578 src/export.c:652 src/export.c:663 msgid "There was an error while exporting the certificate." msgstr "Beim Exportieren des Zertifikats ist ein Fehler aufgetreten." #: src/gnomint-cli.c:59 msgid "- A Certification Authority manager" msgstr "- Ein Zertifizierungsstellen-Verwalter" #: src/gnomint-cli.c:62 #, c-format msgid "Failed to initialize: %s\n" msgstr "Initialisierung ist fehlgeschlagen: %s\n" #: src/import.c:171 #, c-format msgid "" "The whole selected file, or some of its elements, seems to\n" "be cyphered using a password or passphrase. For importing\n" "the file into gnoMint database, you must provide an \n" "appropriate password.\n" msgstr "" #: src/import.c:176 #, c-format msgid "Please introduce password for `%s'" msgstr "Bitte Passwort für »%s« eingeben" #: src/import.c:218 #, c-format msgid "" "Couldn't import the certificate request. \n" "The database returned this error: \n" "\n" "'%s'" msgstr "" "Die Zertifizierungsanfrage konnte nicht importiert werden. \n" "Die Daenbank gab folgenden Fehler zurück: \n" "\n" "»%s«" #: src/import.c:298 msgid "" "The imported certificate expires after 2038-01-19, a date this 32-bit build " "cannot represent. Its stored expiration has been capped and may be " "inaccurate. The certificate itself is unchanged; open it on a 64-bit system " "to see the exact date." msgstr "" #: src/import.c:310 #, c-format msgid "" "Couldn't import the certificate. \n" "The database returned this error: \n" "\n" "'%s'" msgstr "" "Das Zertifikat konnte nicht importiert werden. \n" "Die Daenbank gab folgenden Fehler zurück: \n" "\n" "»%s«" #: src/import.c:666 src/import.c:852 msgid "PKCS#8 crypted private key" msgstr "" #: src/import.c:677 src/import.c:862 msgid "The given password doesn't match the one used for crypting this part" msgstr "" #: src/import.c:771 msgid "Encrypted PKCS#12 bag" msgstr "" #: src/import.c:788 msgid "" "The given password doesn't match with the password used for encrypting this " "part." msgstr "" #: src/import.c:999 msgid "Couldn't find any supported format in the given file" msgstr "" "In der angegebenen Datei konnte kein unterstütztes Format gefunden werden" #: src/import.c:1012 src/import.c:1363 #, c-format msgid "Couldn't open %s file. Check permissions." msgstr "" "Datei %s konnte nicht geöffnet werden. Bitte überprüfen Sie die " "Zugriffsrechte." #: src/import.c:1039 #, c-format msgid "Couldn't recognize the file %s as a RSA or DSA private key." msgstr "" "Datei %s konnte nicht als geheimer RSA- oder DSA-Schlüssel erkannte werden." #: src/import.c:1055 #, c-format msgid "Private key for %s" msgstr "Geheimer Schlüssel für %s" #: src/import.c:1057 #, c-format msgid "Private key %s" msgstr "Geheimer Schlüssel %s" #: src/import.c:1092 msgid "Problem while calling to openssl for decyphering private key." msgstr "" "Problem beim Aufruf von openssl für die Verarbeitung des geheimen Schlüssels." #: src/import.c:1100 #, c-format msgid "" "OpenSSL has returned the following error while trying to decypher the " "private key:\n" "\n" "%s" msgstr "" "OpenSSL gab folgenden Fehler beim Versuch zurück, den geheimen Schlüssel zu " "entschlüsseln:\n" "\n" "%s" #: src/import.c:1211 msgid "There was a problem while importing the public CA root certificate" msgstr "" #: src/import.c:1225 msgid "CA Root certificate" msgstr "" #: src/import.c:1227 msgid "" "There was a problem while importing the private key corresponding to CA root " "certificate" msgstr "" #: src/import.c:1237 msgid "There was a problem while opening the directory certs/." msgstr "Beim Öffnen des Ordners certs/ ist ein Fehler aufgetreten." #: src/import.c:1261 msgid "There was a problem while opening the directory newcerts/." msgstr "Beim Öffnen des Ordners newcerts/ ist ein Fehler aufgetreten." #: src/import.c:1288 msgid "There was a problem while opening the directory req." msgstr "Beim Öffnen des Ordners req/ ist ein Fehler aufgetreten." #: src/import.c:1314 msgid "There was a problem while opening the directory crl/." msgstr "Beim Öffnen des Ordners crl/ ist ein Fehler aufgetreten." #: src/import.c:1336 msgid "There was a problem while opening the directory keys/." msgstr "Beim Öffnen des Ordners keys/ ist ein Fehler aufgetreten." #: src/import.c:1394 msgid "Files in the directory don't belong to any supported CA format." msgstr "" "Dateien im Ordner entsprechen keinem unterstützten Zertifizierungsstellen-" "Format." #: src/main.c:567 #, c-format msgid "" "Problem when creating '%s' CA database:\n" "%s" msgstr "" "Problem beim Erzeugen der Zertifizierungsstellen-Datenbank »%s«:\n" "%s" #: src/main.c:577 #, c-format msgid "Problem when opening new '%s' CA database" msgstr "Problem beim Öffnen der neuen Zertifizierungsstellen-Datenbank »%s«" #: src/main.c:591 msgid "Create new CA database" msgstr "Neue Zertifizierungsstellen-Datenbank erzeugen" #: src/main.c:616 #, c-format msgid "Problem when opening '%s' CA database" msgstr "Problem beim Öffnen der Zertifizierungsstellen-Datenbank »%s«" #: src/main.c:630 msgid "Open CA database" msgstr "Zertifizierungsstellen-Datenbank öffnen" #: src/main.c:662 msgid "Save CA database as..." msgstr "Zertifizierungsstellen-Datenbank speichern unter …" #: src/main.c:722 msgid "" "gnoMint is a program for creating and managing Certification Authorities, " "and their certificates" msgstr "" "gnoMint ist ein Programm zum Erzeugen und Verwalten von " "Zertifizierungsstellen und deren Zertifikaten" #: src/main.c:725 msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU General Public License as published by the Free " "Software Foundation; either version 3 of the License, or (at your option) " "any later version.\n" "\n" "This program is distributed in the hope that it will be useful, but WITHOUT " "ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or " "FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for " "more details.\n" "\n" "You should have received a copy of the GNU General Public License along with " "this program; if not, write to the Free Software Foundation, Inc., 51 " "Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA." msgstr "" #: src/main.c:741 msgid "Code collaborators" msgstr "" #: src/new_ca_window.c:191 src/new_req_window.c:222 msgid "ECDSA curve:" msgstr "" #: src/new_ca_window.c:219 msgid "Please enter a Common Name (CN) for the CA." msgstr "" #: src/new_cert.c:197 msgid "" "The policy of this CA obligue the country field of the certificates to be " "the same as the one in the CA cert." msgstr "" #: src/new_cert.c:203 msgid "" "The policy of this CA obligue the state/province field of the certificates " "to be the same as the one in the CA cert." msgstr "" #: src/new_cert.c:209 msgid "" "The policy of this CA obligue the locality/city field of the certificates to " "be the same as the one in the CA cert." msgstr "" #: src/new_cert.c:215 msgid "" "The policy of this CA obligue the organization field of the certificates to " "be the same as the one in the CA cert." msgstr "" #: src/new_cert.c:221 msgid "" "The policy of this CA obligue the organizational unit field of the " "certificates to be the same as the one in the CA cert." msgstr "" #: src/new_cert.c:659 msgid "" "The expiration date of the new certificate is after the expiration date of " "the CA certificate.\n" "\n" "According to the current standards, this is not allowed. The new certificate " "will be created with the same expiration date as the CA certificate." msgstr "" #: src/new_cert.c:734 msgid "" "This system uses a 32-bit time_t and cannot represent dates after " "2038-01-19. The new certificate's expiration date has been clamped to that " "limit. To issue longer-lived certificates, run gnoMint on a 64-bit platform." msgstr "" #: src/new_cert.c:770 src/new_cert.c:809 src/new_cert.c:838 msgid "Error while signing CSR." msgstr "Fehler beim Bestätigen der Signaturanfrage für ein Zertifikat." #: src/new_req_window.c:374 #, fuzzy msgid "Please enter a Common Name (CN) for the certificate request." msgstr "Zertifizierungsstelle" #: src/pkey_manage.c:124 #, c-format msgid "" "The file that holds private key for certificate '%s' is password-protected.\n" "\n" "Please, insert the password corresponding to this file." msgstr "" #: src/pkey_manage.c:163 #, c-format msgid "" "The file that holds private key for certificate\n" "'%s' is password-protected.\n" "\n" msgstr "" #: src/pkey_manage.c:211 src/pkey_manage.c:303 msgid "" "The given password doesn't match with the one used while crypting the file." msgstr "" "Das angegebene Passwort stimmt nicht mit demjenigen überein, das zur " "Verschlüsselung der Datei verwendet wurde." #: src/pkey_manage.c:226 src/pkey_manage.c:315 src/pkey_manage.c:476 msgid "" "The file designated in database contains a private key, but it is not the " "private key corresponding to the certificate." msgstr "" #: src/pkey_manage.c:229 src/pkey_manage.c:318 src/pkey_manage.c:479 msgid "" "The file designated in database doesn't contain any recognized private key." msgstr "" #: src/pkey_manage.c:233 src/pkey_manage.c:500 msgid "The file designated in database couldn't be opened." msgstr "" #: src/pkey_manage.c:236 src/pkey_manage.c:503 msgid "The file designated in database doesn't exist." msgstr "" #: src/pkey_manage.c:360 #, fuzzy msgid "Select private key file" msgstr "Datei des geheimen Schlüssels wählen. gnoMint" #: src/pkey_manage.c:1069 src/pkey_manage.c:1164 msgid "The given password doesn't match the one used in the database" msgstr "" "Das angegebene Passwort stimmt nicht mit dem in der Datenbank verwendeten " "Passwort überein" #: src/pkey_manage.c:1151 #, c-format msgid "" "This action requires using one or more private keys saved in the database.\n" msgstr "" #: src/pkey_manage.c:1152 msgid "Please insert the database password:" msgstr "Bitte geben Sie das Datenbankpasswort ein:" #: src/san_manager.c:71 msgid "Value cannot be empty" msgstr "" #: src/san_manager.c:82 msgid "Invalid DNS name. Use format: example.com or *.example.com" msgstr "" #: src/san_manager.c:93 msgid "Invalid IP address. Use IPv4 (e.g., 192.168.1.1) or IPv6 format" msgstr "" #: src/san_manager.c:103 msgid "Invalid email address. Use format: user@example.com" msgstr "" #: src/san_manager.c:113 msgid "Invalid URI. Must start with http://, https://, ftp://, or ldap://" msgstr "" #: src/san_manager.c:389 #, fuzzy msgid "Type" msgstr "\tTyp: %s\n" #: src/tls.c:198 src/tls.c:231 src/tls.c:276 src/tls.c:307 #, c-format msgid "Error initializing private key structure." msgstr "Fehler beim Initialisieren der Struktur des geheimen Schlüssels." #: src/tls.c:204 src/tls.c:237 src/tls.c:281 src/tls.c:311 #, c-format msgid "Error creating private key: %d" msgstr "Fehler beim Erzeugen des geheimen Schlüssels: %d" #: src/tls.c:215 src/tls.c:248 src/tls.c:289 src/tls.c:321 src/tls.c:794 #: src/tls.c:1204 #, c-format msgid "Error exporting private key to PEM structure." msgstr "Fehler beim Exportieren des geheimen Schlüssels in eine PEM-Struktur." #: src/tls.c:656 #, c-format msgid "Error when initializing certificate structure" msgstr "Fehler beim Initialisieren der Struktur des Zertifikats" #: src/tls.c:662 src/tls.c:956 #, c-format msgid "Error when setting certificate version" msgstr "Fehler beim Setzen der Version des Zertifikats" #: src/tls.c:672 src/tls.c:969 #, c-format msgid "Error when setting certificate serial number" msgstr "Fehler beim Setzen der Seriennummer des Zertifikats" #: src/tls.c:681 src/tls.c:978 #, c-format msgid "Error when setting activation time" msgstr "Fehler beim Setzen der Aktivierungszeit" #: src/tls.c:686 src/tls.c:986 #, c-format msgid "Error when setting expiration time" msgstr "Fehler beim Setzen der Ablaufzeit" #: src/tls.c:740 src/tls.c:1040 #, c-format msgid "Error when setting basicConstraint extension" msgstr "Fehler beim Setzen der basicConstraint-Erweiterung" #: src/tls.c:745 src/tls.c:1082 #, c-format msgid "Error when setting keyUsage extension" msgstr "Fehler beim Setzen der keyUsage-Erweiterung" #: src/tls.c:756 src/tls.c:864 src/tls.c:1120 #, fuzzy, c-format msgid "Error when setting Subject Alternative Name extension" msgstr "Fehler beim Setzen der basicConstraint-Erweiterung" #: src/tls.c:768 src/tls.c:1056 #, c-format msgid "Error when setting subject key identifier extension" msgstr "" #: src/tls.c:772 src/tls.c:1030 #, c-format msgid "Error when setting authority key identifier extension" msgstr "" #: src/tls.c:782 #, c-format msgid "Error when signing self-signed certificate" msgstr "" #: src/tls.c:813 #, fuzzy, c-format msgid "Error when initializing privkey structure" msgstr "Fehler beim Initialisieren der CRT-Struktur" #: src/tls.c:817 #, fuzzy, c-format msgid "Error when importing private key into privkey structure" msgstr "Fehler beim Exportieren des geheimen Schlüssels in eine PEM-Struktur." #: src/tls.c:821 #, c-format msgid "Error when initializing csr structure" msgstr "" #: src/tls.c:825 #, c-format msgid "Error when setting csr version" msgstr "" #: src/tls.c:869 #, c-format msgid "Error when signing self-signed csr" msgstr "" #: src/tls.c:880 #, c-format msgid "Error exporting CSR to PEM structure." msgstr "Fehler beim Exportieren der Signaturanfrage in eine PEM-Struktur." #: src/tls.c:933 #, fuzzy, c-format msgid "Error when importing CA private key" msgstr "Fehler beim Exportieren des geheimen Schlüssels in eine PEM-Struktur." #: src/tls.c:940 #, c-format msgid "Error when initializing crt structure" msgstr "Fehler beim Initialisieren der CRT-Struktur" #: src/tls.c:948 #, c-format msgid "Error when copying data from CSR to certificate structure" msgstr "" "Fehler beim Kopieren der Daten aus der Signaturanfrage in die " "Zertifikatsstruktur" #: src/tls.c:1182 #, fuzzy, c-format msgid "Error when signing certificate: %s" msgstr "Fehler beim Signieren des Zertifikats" #: src/tls.c:1482 msgid "Key encipher only" msgstr "" #: src/tls.c:1484 msgid "Key decipher only" msgstr "" #: src/tls.c:1496 msgid "TLS WWW Client." msgstr "TLS-Webclient." #: src/wizard_window.c:239 #, fuzzy, c-format msgid "" "Key generation failed:\n" "%s" msgstr "Schlüsselerzeugung ist fehlgeschlagen" #: src/wizard_window.c:249 #, fuzzy, c-format msgid "" "CSR generation failed:\n" "%s" msgstr "Erzeugung der Signaturanfrage ist fehlgeschlagen" #: src/wizard_window.c:260 msgid "Failed to parse generated CSR." msgstr "" #: src/wizard_window.c:271 #, fuzzy, c-format msgid "" "Failed to save CSR:\n" "%s" msgstr "Initialisierung ist fehlgeschlagen: %s\n" #: src/wizard_window.c:294 #, fuzzy, c-format msgid "" "Failed to sign certificate:\n" "%s" msgstr "Initialisierung ist fehlgeschlagen: %s\n" #: src/wizard_window.c:297 #, fuzzy msgid "Certificate generated successfully!" msgstr "Zertifikat wurde erfolgreich exportiert" #: src/wizard_window.c:311 #, fuzzy msgid "Please enter a server name." msgstr "Bitte Passwort eingeben" #: src/wizard_window.c:318 #, fuzzy msgid "Please select a Certificate Authority." msgstr "Zertifizierungsstelle" #: src/wizard_window.c:325 #, fuzzy msgid "Invalid Certificate Authority selected." msgstr "Zertifizierungsstelle" #: src/wizard_window.c:412 msgid "No Certificate Authority found. Please create a CA first." msgstr "" #~ msgid "%m/%d/%Y %R GMT" #~ msgstr "%d.%m.%Y %R GMT" #, c-format #~ msgid "%s version %s\n" #~ msgstr "%s-Version %s\n" #~ msgid "Certificates" #~ msgstr "Zertifikate" #~ msgid "Certificate Signing Requests" #~ msgstr "Signaturanfragen für Zertifikate" #~ msgid "- A graphical Certification Authority manager" #~ msgstr "- Eine grafische Verwaltung für Zertifizierungsstellen" #, fuzzy #~ msgid "Shows the certificate properties window" #~ msgstr "Zertifikat-Eigenschaften" #~ msgid "" #~ "Exports the certificate so it can be imported by any other application" #~ msgstr "" #~ "Exportiert das Zertifikat, so dass es von anderen Anwendungen importiert " #~ "werden kann" #, fuzzy #~ msgid "Exports the CSR so it can be imported by any other application" #~ msgstr "" #~ "Exportiert das Zertifikat, so dass es von anderen Anwendungen importiert " #~ "werden kann" #~ msgid "Extract the saved private key to an external file or device" #~ msgstr "" #~ "Gespeicherten geheimen Schlüssel in eine externe Datei oder Gerät " #~ "entpacken" #, fuzzy #~ msgid "<b>Fingerprints</b>" #~ msgstr "Fingerabdrücke" #, fuzzy #~ msgid "<b>Certificate hierarchy</b>" #~ msgstr "Zertifikathierarchie" #, fuzzy #~ msgid "<b>Certificate fields</b>" #~ msgstr "Zertifikatfelder" #, fuzzy #~ msgid "" #~ "<b>This Certificate Signing Request has its corresponding private " #~ "key saved in the internal database.</b>" #~ msgstr "" #~ "Der zugehörige geheime Schlüssel für diese Siganturanfrage wurde in " #~ "einer externen Datei gespeichert." #, fuzzy #~ msgid "<b>Certificate uses</b>" #~ msgstr "Zertifikatzwecke" #, fuzzy #~ msgid "<b>Certificate purposes</b>" #~ msgstr "Zertifikatzwecke" #~ msgid "Enter password again for confirmation:" #~ msgstr "Geben Sie zur Bestätigung das Passwort erneut ein:" #~ msgid "gtk-ok" #~ msgstr "gtk-ok" gnomint-1.6.4/po/en@quot.header0000644000000000000000000000226315212761270015144 0ustar00rootroot# All this catalog "translates" are quotation characters. # The msgids must be ASCII and therefore cannot contain real quotation # characters, only substitutes like grave accent (0x60), apostrophe (0x27) # and double quote (0x22). These substitutes look strange; see # http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html # # This catalog translates grave accent (0x60) and apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019). # It also translates pairs of apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019) # and pairs of quotation mark (0x22) to # left double quotation mark (U+201C) and right double quotation mark (U+201D). # # When output to an UTF-8 terminal, the quotation characters appear perfectly. # When output to an ISO-8859-1 terminal, the single quotation marks are # transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to # grave/acute accent (by libiconv), and the double quotation marks are # transliterated to 0x22. # When output to an ASCII terminal, the single quotation marks are # transliterated to apostrophes, and the double quotation marks are # transliterated to 0x22. # gnomint-1.6.4/po/es.po0000644000000000000000000050443515212761317013340 0ustar00rootroot# gnoMint # Copyright (C) 2006-2010 David Marin Carreño # This file is distributed under the same license as the gnoMint package. # David Marin Carreño , 2006-2010. # # msgid "" msgstr "" "Project-Id-Version: gnoMint 0.1\n" "Report-Msgid-Bugs-To: davefx@gmail.com\n" "POT-Creation-Date: 2026-06-12 10:43+0000\n" "PO-Revision-Date: 2026-05-25 12:00+0200\n" "Last-Translator: DiegoJ \n" "Language-Team: Spanish \n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Launchpad (build Unknown)\n" "X-Launchpad-Export-Date: 2009-11-08 11:12+0000\n" #: gconf/org.gnome.gnomint.gschema.xml:7 msgid "Window size" msgstr "Tamaño de ventana" #: gconf/org.gnome.gnomint.gschema.xml:8 msgid "" "The (width,length) size gnoMint should take when started. This cannot be " "smaller than (320,200)." msgstr "" "El tamaño (anchura,altura) de gnoMint al iniciarse. No debe ser menor a " "(320,200)." #: gconf/org.gnome.gnomint.gschema.xml:16 msgid "Revoked certificates visibility" msgstr "Visibilidad de certificados revocados" #: gconf/org.gnome.gnomint.gschema.xml:17 msgid "Whether the revoked certificates should be visible." msgstr "Si los certificados revocados deben ser visibles" #: gconf/org.gnome.gnomint.gschema.xml:24 msgid "Expired certificates visibility" msgstr "Visibilidad de certificados caducados" #: gconf/org.gnome.gnomint.gschema.xml:25 msgid "" "Whether already-expired certificates should be visible in the certificates " "tree. CAs are always visible regardless of this setting so that any still-" "valid certificates they signed remain reachable." msgstr "" "Si los certificados ya caducados deben ser visibles en el árbol de " "certificados. Las ACs siempre son visibles independientemente de esta " "configuración, de modo que los certificados aún válidos que hayan firmado " "sigan siendo accesibles." #: gconf/org.gnome.gnomint.gschema.xml:35 msgid "Days before expiration to highlight certificates in amber" msgstr "Días antes de la caducidad para resaltar certificados en ámbar" #: gconf/org.gnome.gnomint.gschema.xml:36 msgid "" "Certificates whose effective validity ends within this many days are shown " "in amber in the certificates tree, as a heads-up that they should be renewed " "soon. Setting this to 0 disables the amber highlight (certificates appear " "either normally or in gray for already-expired)." msgstr "" "Los certificados cuya validez efectiva termina dentro de estos días se " "muestran en ámbar en el árbol de certificados, como aviso de que deben " "renovarse pronto. Establecer este valor a 0 desactiva el resaltado en ámbar " "(los certificados se muestran normalmente o en gris si ya han caducado)." #: gconf/org.gnome.gnomint.gschema.xml:47 msgid "Certificate requests visibility" msgstr "Visibilidad de solicitudes de certificación" #: gconf/org.gnome.gnomint.gschema.xml:48 msgid "Whether the certificate requests should be visible." msgstr "Si las solicitudes de certificado deben ser visibles." #: gconf/org.gnome.gnomint.gschema.xml:55 msgid "Automatic exporting of certificates for gnome-keyring" msgstr "Exportación automática de certificados a gnome-keyring" #: gconf/org.gnome.gnomint.gschema.xml:56 msgid "" "Whether the created or imported certificates are automatically exported to " "gnome-keyring certificate-store." msgstr "" "Si los certificados recién creados o importados son exportados " "automáticamente al almacén de certificados de gnome-keyring." #: gui/certificate_popup_menu.ui:7 gui/csr_popup_menu.ui:7 #: gui/main_window.ui:45 msgid "Properties" msgstr "Propiedades" #: gui/certificate_popup_menu.ui:13 gui/main_window.ui:35 msgid "Export full c_hain..." msgstr "Exportar cadena com_pleta..." #: gui/certificate_popup_menu.ui:17 gui/csr_popup_menu.ui:13 #: gui/main_window.ui:34 msgid "E_xport" msgstr "E_xportar" #: gui/certificate_popup_menu.ui:21 gui/csr_popup_menu.ui:17 #: gui/main_window.ui:23 msgid "Extrac_t private key" msgstr "Ex_traer clave privada" #: gui/certificate_popup_menu.ui:27 gui/main_window.ui:24 msgid "Re_new with fresh key" msgstr "Re_novar con clave nueva" #: gui/certificate_popup_menu.ui:31 msgid "_Compare with PEM file…" msgstr "_Comparar con un archivo PEM…" #: gui/certificate_popup_menu.ui:35 gui/main_window.ui:25 msgid "Revo_ke" msgstr "Revo_car" #: gui/certificate_popup_menu.ui:41 gui/main_window.ui:21 msgid "Add _Web Server Certificate (wizard)" msgstr "Añadir certificado de servidor _web (asistente)" #: gui/certificate_popup_menu.ui:45 gui/main_window.ui:22 msgid "Add _Email Server Certificate (wizard)" msgstr "Añadir certificado de servidor de _correo (asistente)" #: gui/certificate_properties_dialog.ui:19 msgid "Certificate properties - gnoMint" msgstr "Propiedades del certificado - gnoMint" #: gui/certificate_properties_dialog.ui:54 msgid "This certificate has been verified for the following uses:" msgstr "Este certificado ha sido validado para los siguientes usos:" #: gui/certificate_properties_dialog.ui:77 msgid "MD5FINGERPRINT" msgstr "MD5FINGERPRINT" #: gui/certificate_properties_dialog.ui:88 msgid "SHA1FINGERPRINT" msgstr "SHA1FINGERPRINT" #: gui/certificate_properties_dialog.ui:99 #: gui/certificate_properties_dialog.ui:132 #: gui/certificate_properties_dialog.ui:176 #: gui/certificate_properties_dialog.ui:231 gui/creation_process_window.ui:15 #: gui/creation_process_window.ui:61 gui/csr_properties_dialog.ui:109 #: gui/new_ca_window.ui:56 gui/new_ca_window.ui:306 gui/new_ca_window.ui:521 #: gui/new_req_window.ui:46 gui/new_req_window.ui:157 gui/new_req_window.ui:413 msgid " " msgstr " " #: gui/certificate_properties_dialog.ui:110 msgid "CertExpirationDate" msgstr "Fecha de caducidad" #: gui/certificate_properties_dialog.ui:121 msgid "CertActivationDate" msgstr "Fecha de activación" #: gui/certificate_properties_dialog.ui:143 msgid "CAOU" msgstr "CAOU" #: gui/certificate_properties_dialog.ui:154 msgid "CAO" msgstr "CAO" #: gui/certificate_properties_dialog.ui:165 msgid "CACN" msgstr "CACN" #: gui/certificate_properties_dialog.ui:187 msgid "CertSN" msgstr "Núm de serie" #: gui/certificate_properties_dialog.ui:198 gui/csr_properties_dialog.ui:63 msgid "SubjectOU" msgstr "OU del titular" #: gui/certificate_properties_dialog.ui:209 gui/csr_properties_dialog.ui:87 msgid "SubjectO" msgstr "O del titular" #: gui/certificate_properties_dialog.ui:220 gui/csr_properties_dialog.ui:98 msgid "SubjectCN" msgstr "CN del titular" #: gui/certificate_properties_dialog.ui:242 msgid "MD5 fingerprint" msgstr "Huella digital MD5" #: gui/certificate_properties_dialog.ui:253 msgid "SHA1 fingerprint" msgstr "Huella digital SHA1" #: gui/certificate_properties_dialog.ui:264 msgid "Fingerprints" msgstr "Huellas digitales" #: gui/certificate_properties_dialog.ui:276 msgid "Expires on" msgstr "Caduca el" #: gui/certificate_properties_dialog.ui:287 msgid "Activated on" msgstr "Activado el" #: gui/certificate_properties_dialog.ui:298 msgid "Validity" msgstr "Validez" #: gui/certificate_properties_dialog.ui:310 #: gui/certificate_properties_dialog.ui:389 gui/csr_properties_dialog.ui:120 msgid "Organizational Unit (OU)" msgstr "Unidad organizativa (OU)" #: gui/certificate_properties_dialog.ui:321 #: gui/certificate_properties_dialog.ui:400 gui/csr_properties_dialog.ui:142 msgid "Organization (O)" msgstr "Organización (O)" #: gui/certificate_properties_dialog.ui:332 #: gui/certificate_properties_dialog.ui:411 gui/csr_properties_dialog.ui:153 msgid "Common Name (CN)" msgstr "Nombre común (CN)" #: gui/certificate_properties_dialog.ui:343 msgid "Emmited by" msgstr "Emitido por" #: gui/certificate_properties_dialog.ui:355 msgid "Subject Alternative Names" msgstr "Nombres alternativos de titular" #: gui/certificate_properties_dialog.ui:378 msgid "Serial number" msgstr "Nº de serie" #: gui/certificate_properties_dialog.ui:422 msgid "Certificate subject" msgstr "Titular del certificado" #: gui/certificate_properties_dialog.ui:434 msgid "SHA256FINGERPRINT" msgstr "SHA256FINGERPRINT" #: gui/certificate_properties_dialog.ui:449 msgid "SHA256 fingerprint" msgstr "Huella digital SHA-256" #: gui/certificate_properties_dialog.ui:460 msgid "SHA512FINGERPRINT" msgstr "SHA512FINGERPRINT" #: gui/certificate_properties_dialog.ui:475 msgid "SHA512 fingerprint" msgstr "Huella digital SHA-512" #: gui/certificate_properties_dialog.ui:486 #: gui/certificate_properties_dialog.ui:509 gui/csr_properties_dialog.ui:176 msgid "Email address" msgstr "Dirección de correo" #: gui/certificate_properties_dialog.ui:536 gui/csr_properties_dialog.ui:203 msgid "General" msgstr "General" #: gui/certificate_properties_dialog.ui:557 msgid "Certificate hierarchy" msgstr "Jerarquía de certificados" #: gui/certificate_properties_dialog.ui:582 msgid "Certificate fields" msgstr "Campos del certificado" #: gui/certificate_properties_dialog.ui:605 msgid "Details" msgstr "Detalles" #: gui/certificate_properties_dialog.ui:623 msgid "" "\n" "It is recommended that all the certificates generated by a CA\n" "share the same properties.\n" "If you want to generate certificates with different properties, you\n" "should create a hierarchy of CAs, each one with its own policy for\n" "certificate generation.\n" "\n" "Please, define the maximum set of properties for the\n" "certificates that this CA will be able to generate:\n" msgstr "" "\n" "Se recomienda que todos los certificados generados por una AC compartan las " "mismas propiedades.\n" "Si desea generar certificados con propiedades distintas, sería aconsejable " "crear una jerarquía de ACs, cada una con su propia política para la " "generación de certificados.\n" "\n" "Defina el conjunto máximo de propiedades para los certificados que la " "presente Autoridad de Certificación podrá otorgar:\n" #: gui/certificate_properties_dialog.ui:649 msgid "" "Maximum number of months before\n" "expiration of the new generated certificates:" msgstr "" "Máximo número de meses antes de la\n" "caducidad de los nuevos certificados:" #: gui/certificate_properties_dialog.ui:686 msgid "Hours between CRL updates:" msgstr "Nº de horas entre actualizaciones consecutivas de CRL:" #: gui/certificate_properties_dialog.ui:711 msgid "CRL distribution URL:" msgstr "URL de distribución de CRL:" #: gui/certificate_properties_dialog.ui:727 msgid "CRL Properties" msgstr "Propiedades de CRL" #: gui/certificate_properties_dialog.ui:750 msgid "Country" msgstr "País" #: gui/certificate_properties_dialog.ui:761 msgid "State or Province name" msgstr "Nombre de estado o provincia" #: gui/certificate_properties_dialog.ui:778 #: gui/certificate_properties_dialog.ui:802 #: gui/certificate_properties_dialog.ui:859 #: gui/certificate_properties_dialog.ui:883 #: gui/certificate_properties_dialog.ui:907 msgid "must be the same" msgstr "debe coincidir" #: gui/certificate_properties_dialog.ui:786 #: gui/certificate_properties_dialog.ui:810 #: gui/certificate_properties_dialog.ui:867 #: gui/certificate_properties_dialog.ui:891 #: gui/certificate_properties_dialog.ui:915 msgid "may differ" msgstr "puede variar" #: gui/certificate_properties_dialog.ui:820 msgid "City" msgstr "Ciudad" #: gui/certificate_properties_dialog.ui:831 msgid "Organization" msgstr "Organización" #: gui/certificate_properties_dialog.ui:842 msgid "Organizational unit" msgstr "Unidad organizativa" #: gui/certificate_properties_dialog.ui:927 msgid "Inherited fields from CA subject" msgstr "Campos heredados del titular de la AC" #: gui/certificate_properties_dialog.ui:952 gui/new_cert_window.ui:464 #: src/tls.c:1463 msgid "Certification Authority" msgstr "Autoridad de certificación" #: gui/certificate_properties_dialog.ui:963 gui/new_cert_window.ui:487 #: src/certificate_properties.c:445 src/tls.c:1470 msgid "Non repudiation" msgstr "No repudio" #: gui/certificate_properties_dialog.ui:974 gui/new_cert_window.ui:440 #: src/certificate_properties.c:447 src/tls.c:1472 msgid "Key encipherment" msgstr "Cifrado de claves" #: gui/certificate_properties_dialog.ui:986 gui/new_cert_window.ui:428 #: src/certificate_properties.c:449 src/tls.c:1474 msgid "Data encipherment" msgstr "Cifrado de datos" #: gui/certificate_properties_dialog.ui:998 gui/new_cert_window.ui:475 #: src/certificate_properties.c:451 src/tls.c:1476 msgid "Key agreement" msgstr "Negociación de claves" #: gui/certificate_properties_dialog.ui:1010 gui/new_cert_window.ui:452 #: src/certificate_properties.c:443 src/tls.c:1468 msgid "Digital signature" msgstr "Firma digital" #: gui/certificate_properties_dialog.ui:1022 gui/new_cert_window.ui:498 #: src/certificate_properties.c:455 src/tls.c:1480 msgid "CRL signing" msgstr "Firma de CRLs" #: gui/certificate_properties_dialog.ui:1043 msgid "Uses of new generated certificates" msgstr "Usos de los nuevos certificados generados" #: gui/certificate_properties_dialog.ui:1067 gui/new_cert_window.ui:621 #: src/certificate_properties.c:1480 src/tls.c:1500 msgid "Email protection" msgstr "Protección de correo electrónico" #: gui/certificate_properties_dialog.ui:1079 gui/new_cert_window.ui:610 #: src/certificate_properties.c:1479 src/tls.c:1498 msgid "Code signing" msgstr "Firma de código" #: gui/certificate_properties_dialog.ui:1090 gui/new_cert_window.ui:598 msgid "TLS Web client" msgstr "Cliente WWW TLS" #: gui/certificate_properties_dialog.ui:1102 gui/new_cert_window.ui:586 msgid "TLS Web server" msgstr "Servidor web TLS" #: gui/certificate_properties_dialog.ui:1114 gui/new_cert_window.ui:575 #: src/certificate_properties.c:1481 src/tls.c:1502 msgid "Time stamping" msgstr "Sellado de tiempo" #: gui/certificate_properties_dialog.ui:1125 gui/new_cert_window.ui:564 #: src/certificate_properties.c:1483 src/tls.c:1506 msgid "Any purpose" msgstr "Cualquier propósito" #: gui/certificate_properties_dialog.ui:1136 gui/new_cert_window.ui:553 #: src/certificate_properties.c:1482 src/tls.c:1504 msgid "OCSP signing" msgstr "Firma de OCSP" #: gui/certificate_properties_dialog.ui:1159 msgid "Purposes of new generated certificates" msgstr "Finalidades de los nuevos certificados generados" #: gui/certificate_properties_dialog.ui:1171 msgid "CA Policy" msgstr "Política de la AC" #: gui/certificate_properties_dialog.ui:1189 gui/csr_properties_dialog.ui:221 #: src/ca.c:2199 msgid "_Close" msgstr "_Cerrar" #: gui/change_password_dialog.ui:9 msgid "Database password protection - gnoMint" msgstr "Protección de contraseña de base de datos - gnoMint" #: gui/change_password_dialog.ui:34 msgid "_Yes" msgstr "_Sí" #: gui/change_password_dialog.ui:43 msgid "_No" msgstr "_No" #: gui/change_password_dialog.ui:53 msgid "" "Enter new password again \n" "for confirmation:" msgstr "" "Introduzca la nueva contraseña \n" "otra vez para confirmar:" #: gui/change_password_dialog.ui:86 msgid "" "Please, enter new \n" "password:" msgstr "" "Introduzca la nueva \n" "contraseña:" #: gui/change_password_dialog.ui:98 msgid "" "Please, enter current\n" "password:" msgstr "" "Introduzca la contraseña \n" "actual:" #: gui/change_password_dialog.ui:121 msgid "" "Protect CA database private\n" "keys with password:" msgstr "" "Proteger las claves privadas de\n" "la base de datos de la AC con contraseña:" #: gui/change_password_dialog.ui:143 gui/export_certificate_dialog.ui:149 #: gui/get_db_password_dialog.ui:74 gui/get_pkey_dialog.ui:78 #: gui/import_file_or_directory_dialog.ui:94 gui/import_password_dialog.ui:90 #: gui/new_crl_dialog.ui:53 gui/san_editor_dialog.ui:93 msgid "Cancel" msgstr "Cancelar" #: gui/change_password_dialog.ui:149 gui/get_db_password_dialog.ui:80 #: gui/get_pkey_dialog.ui:84 gui/import_password_dialog.ui:96 #: gui/new_crl_dialog.ui:59 gui/san_editor_dialog.ui:99 msgid "OK" msgstr "Aceptar" #: gui/creation_process_window.ui:6 msgid "Creating new CA - gnoMint" msgstr "Creando nueva AC - gnoMint" #: gui/creation_process_window.ui:31 msgid "Creating CA Root Certificate" msgstr "Creando certificado raíz de la AC" #: gui/creation_process_window.ui:51 gui/get_password_dialog.ui:90 #: gui/new_ca_window.ui:257 gui/new_ca_window.ui:464 gui/new_ca_window.ui:576 #: gui/new_cert_window.ui:257 gui/new_cert_window.ui:339 #: gui/new_cert_window.ui:661 gui/new_req_window.ui:107 #: gui/new_req_window.ui:357 gui/new_req_window.ui:548 gui/wizard_window.ui:117 msgid "_Cancel" msgstr "_Cancelar" #: gui/csr_popup_menu.ui:23 gui/main_window.ui:26 msgid "_Sign" msgstr "_Firmar" #: gui/csr_popup_menu.ui:27 gui/main_window.ui:27 msgid "Delete" msgstr "Eliminar" #: gui/csr_properties_dialog.ui:5 msgid "CSR properties - gnoMint" msgstr "Propiedades de la solicitud - gnoMint" #: gui/csr_properties_dialog.ui:41 msgid "" "This Certificate Signing Request has its corresponding private key saved " "in the internal database." msgstr "" "La clave privada correspondiente a esta solicitud de certificación está " "almacenada en la base de datos interna." #: gui/csr_properties_dialog.ui:74 gui/new_cert_window.ui:230 #: src/csr_properties.c:86 src/new_cert.c:105 msgid "None" msgstr "Ninguno" #: gui/csr_properties_dialog.ui:131 msgid "Subject Alternative Name (SAN)" msgstr "Nombre alternativo de titular (SAN)" #: gui/csr_properties_dialog.ui:164 msgid "CSR subject" msgstr "Titular de la solicitud" #: gui/dh_parameters_dialog.ui:16 msgid "New Diffie-Hellman parameters - gnoMint" msgstr "Nuevos parámetros Diffie-Hellman - gnoMint" #: gui/dh_parameters_dialog.ui:27 msgid "" "You are about to create and export a set of\n" "Diffie·Hellman parameters into a PKCS#3 structure file." msgstr "" "Se va a crear y exportar un conjunto de parámetros\n" "Diffie-Hellman a un fichero con formato PKCS#3." #: gui/dh_parameters_dialog.ui:38 msgid "" "PKCS#3 files containing Diffie·Hellman parameters are used by some " "cryptographic\n" "applications for a secure interchange of their keys over insecure channels." msgstr "" "Los ficheros PKCS#3 con parámetros Diffie-Hellman son usados por " "ciertas aplicaciones\n" "criptográficas para realizar intercambios seguros de sus claves a través de " "canales inseguros." #: gui/dh_parameters_dialog.ui:48 msgid "Please, enter the prime size, in bits:" msgstr "Introduzca el tamaño del número primo, en bits:" #: gui/dh_parameters_dialog.ui:71 msgid "Close" msgstr "Cerrar" #: gui/dh_parameters_dialog.ui:77 msgid "Generate" msgstr "Generar" #: gui/export_certificate_dialog.ui:5 msgid "Export certificate - gnoMint" msgstr "Exportar certificado - gnoMint" #: gui/export_certificate_dialog.ui:22 msgid "" "Please, choose which part of the\n" "saved certificate you want to export:" msgstr "" "Seleccione qué parte almacenada del\n" "certificado desea exportar:" #: gui/export_certificate_dialog.ui:36 msgid "Only the pu_blic part." msgstr "Sólo la parte pú_blica." #: gui/export_certificate_dialog.ui:49 msgid "Export only the certificate to a public file, in PEM format." msgstr "" "Exporta sólo el certificado a un fichero público en formato PEM." #: gui/export_certificate_dialog.ui:60 msgid "Only the private key (crypted)." msgstr "Sólo la clave privada (cifrada)." #: gui/export_certificate_dialog.ui:74 msgid "" "Export the saved private key to a PKCS#8 password-\n" "protected file. This file should only be accessed by the\n" "subject of the certificate." msgstr "" "Exporta la clave privada almacenada a un fichero PKCS#8\n" "protegido con clave. Este fichero sólo debería ser accesible\n" "para el titular del certificado." #: gui/export_certificate_dialog.ui:87 msgid "Only the private key (uncrypted)." msgstr "Sólo la clave privada (sin cifrar)." #: gui/export_certificate_dialog.ui:100 msgid "" "Export the saved private key to a PEM file. This option\n" "should only be used for exporting certificates that will be\n" "used in unattended servers." msgstr "" "Exporta la clave privada almacenada a un fichero PEM. Esta opción\n" "sólo debería ser empleada para exportar certificados que vayan a ser\n" "usados en servidores no atendidos." #: gui/export_certificate_dialog.ui:113 msgid "Both parts." msgstr "Ambas partes." #: gui/export_certificate_dialog.ui:126 msgid "" "Export both (private and public) parts to a password-\n" "protected PKCS#12 file. This kind of file can be imported\n" "by other common programs, such as web or mail clients." msgstr "" "Exporta ambas partes (pública y privada) a un fichero PKCS#12\n" "protegido con clave. Esta clase de ficheros puede ser importada\n" "por otros programas comunes, tales como clientes web o de correo." #: gui/export_certificate_dialog.ui:155 msgid "Export" msgstr "Exportar" #: gui/get_db_password_dialog.ui:5 gui/get_password_dialog.ui:5 #: gui/import_password_dialog.ui:5 msgid "Enter password - gnoMint" msgstr "Introduzca contraseña - gnoMint" #: gui/get_db_password_dialog.ui:20 msgid "" "This action requires using one or more private keys saved in the CA " "database.\n" "\n" "Please insert the database password." msgstr "" "Esta acción necesita emplear una o más claves privadas almacenadas en la " "base de datos de la AC.\n" "\n" "Por favor, introduzca la contraseña de la base de datos." #: gui/get_db_password_dialog.ui:41 gui/get_password_dialog.ui:68 #: gui/import_password_dialog.ui:65 msgid "Password:" msgstr "Contraseña:" #: gui/get_db_password_dialog.ui:58 msgid "Remember this password during this gnoMint session" msgstr "Recordar esta contraseña durante toda esta sesión de gnoMint" #: gui/get_password_dialog.ui:19 msgid "Please, enter password" msgstr "Introduzca la contraseña" #: gui/get_password_dialog.ui:56 msgid "Password (confirm):" msgstr "Contraseña (confirmar):" #: gui/get_password_dialog.ui:97 gui/new_ca_window.ui:592 #: gui/new_cert_window.ui:676 gui/new_req_window.ui:564 #: gui/preferences_dialog.ui:51 msgid "_OK" msgstr "_Aceptar" #: gui/get_pkey_dialog.ui:9 msgid "Choose private key file. gnoMint" msgstr "Seleccione fichero con clave privada. gnoMint" #: gui/get_pkey_dialog.ui:22 msgid "" "Choose private key file\n" "\n" "For doing the selected operation, you must provide the\n" "file where resides the private key corresponding to the\n" "certificate:" msgstr "" "Seleccione fichero con clave privada\n" "\n" "Para realizar la operación seleccionada, deberá proporcionar\n" "el fichero donde reside la clave privada correspondiente al\n" "certificado:" #: gui/get_pkey_dialog.ui:37 msgid "Certificate DN" msgstr "Descriptor del certificado" #: gui/get_pkey_dialog.ui:43 msgid "Please, choose the file:" msgstr "Seleccione el fichero:" #: gui/get_pkey_dialog.ui:62 msgid "_Save filename in the database for automatic loading" msgstr "" "_Guardar nombre de fichero en base de datos para cargarlo automáticamente" #: gui/org.gnome.gnomint.appdata.xml.in:7 gui/main_window.ui:62 msgid "gnoMint" msgstr "gnoMint" #: gui/org.gnome.gnomint.appdata.xml.in:8 msgid "X.509 Certification Authority management tool" msgstr "Herramienta de gestión de Autoridades de Certificación X.509" #: gui/org.gnome.gnomint.appdata.xml.in:11 msgid "" "gnoMint is a tool for easily creating and managing certification authorities " "(CAs). It provides fancy visualization of all your certificates, and their " "properties, as well as an easy management of the CA activities." msgstr "" "gnoMint es una herramienta para crear y gestionar fácilmente autoridades de " "certificación (ACs). Ofrece una visualización clara de todos sus " "certificados y sus propiedades, así como una gestión sencilla de las " "actividades de la AC." #: gui/org.gnome.gnomint.appdata.xml.in:16 msgid "With gnoMint you can:" msgstr "Con gnoMint puede:" #: gui/org.gnome.gnomint.appdata.xml.in:20 msgid "Create and manage your own Certification Authority (CA)" msgstr "Crear y gestionar su propia Autoridad de Certificación (AC)" #: gui/org.gnome.gnomint.appdata.xml.in:21 msgid "Create and sign certificates for servers and users" msgstr "Crear y firmar certificados para servidores y usuarios" #: gui/org.gnome.gnomint.appdata.xml.in:22 msgid "Create and manage Certificate Signing Requests (CSRs)" msgstr "Crear y gestionar solicitudes de certificación (CSRs)" #: gui/org.gnome.gnomint.appdata.xml.in:23 msgid "" "Export certificates and private keys in several formats (PEM, DER, PKCS#12)" msgstr "" "Exportar certificados y claves privadas en varios formatos (PEM, DER, " "PKCS#12)" #: gui/org.gnome.gnomint.appdata.xml.in:24 msgid "Revoke certificates and generate Certificate Revocation Lists (CRLs)" msgstr "Revocar certificados y generar listas de certificados revocados (CRLs)" #: gui/org.gnome.gnomint.appdata.xml.in:25 msgid "Import existing certificates and CAs" msgstr "Importar certificados y ACs existentes" #: gui/org.gnome.gnomint.appdata.xml.in:27 msgid "" "gnoMint provides a simple and intuitive graphical interface based on GTK for " "all these operations, making certificate management accessible even for " "users without deep knowledge of X.509 standards and cryptography." msgstr "" "gnoMint ofrece una interfaz gráfica sencilla e intuitiva basada en GTK para " "todas estas operaciones, haciendo accesible la gestión de certificados " "incluso para usuarios sin conocimientos profundos de los estándares X.509 y " "la criptografía." #: gui/org.gnome.gnomint.appdata.xml.in:38 msgid "Main window showing certificate list" msgstr "Ventana principal mostrando la lista de certificados" #: gui/org.gnome.gnomint.desktop.in:2 gui/org.gnome.gnomint.desktop.in:3 msgid "gnoMint X.509 CA Manager" msgstr "gnoMint. Gestor de ACs X.509" #: gui/org.gnome.gnomint.desktop.in:4 msgid "Manage X.509 certificates and CAs, easily and graphically" msgstr "Gestiona autoridades de certificación y certificados X.509" #: gui/org.gnome.gnomint.desktop.in:5 msgid "certificate;x.509;encryption;" msgstr "certificado;x.509;cifrado;" #: gui/import_file_or_directory_dialog.ui:9 msgid "Import selection - gnoMint" msgstr "Selección de importación - gnoMint" #: gui/import_file_or_directory_dialog.ui:24 msgid "" "Please, choose the more suitable option for\n" "what you want to import:" msgstr "" "Seleccione la opción más adecuada para\n" "lo que desea importar:" #: gui/import_file_or_directory_dialog.ui:36 msgid "Import a single file." msgstr "Importar un único fichero." #: gui/import_file_or_directory_dialog.ui:48 msgid "" "Import a single file, encoded in DER or PEM format, containing\n" "certificates, private keys (encrypted or plain), signing\n" "requests (CSRs), revocation lists (CRLs) or PKCS#12\n" "packages." msgstr "" "Importar un único fichero, en formato DER o PEM, que contenga\n" "certificados, claves privadas (cifradas o en claro), solicitudes\n" "de certificación (CSRs), listas de revocación (CRLs) o paquetes\n" "PKCS#12." #: gui/import_file_or_directory_dialog.ui:60 msgid "Import a whole directory." msgstr "Importar un directorio completo." #: gui/import_file_or_directory_dialog.ui:72 msgid "" "Import a directory containing the structure of\n" "a whole CA made with OpenSSL ." msgstr "" "Importar directorio que contenga la estructura\n" "completa de una AC producida con OpenSSL." #: gui/import_file_or_directory_dialog.ui:100 msgid "Import" msgstr "Importar" #: gui/import_password_dialog.ui:20 msgid "" "The whole selected file, or some of its elements, seems to\n" "be cyphered using a password or passphrase.\n" "\n" "For importing the file into gnoMint database, you must\n" "provide an appropiate password." msgstr "" "Todo el fichero seleccionado, o alguno de los elementos que\n" "lo conforman, parece haber sido cifrado empleando una contraseña.\n" "\n" "Para importar el fichero en la base de datos de gnoMint,\n" "deberá proporcionar una contraseña adecuada." #: gui/import_password_dialog.ui:37 msgid "" "The part that is being imported has the description:" msgstr "" "La parte a ser importada tiene la siguiente descripción:" #: gui/import_password_dialog.ui:48 msgid "#Description#" msgstr "#Descripción#" #: gui/main_window.ui:6 msgid "_Certificates" msgstr "Certificados" #: gui/main_window.ui:8 msgid "_New certificate database" msgstr "_Nueva base de datos de certificados" #: gui/main_window.ui:9 msgid "_Open certificate database" msgstr "Abrir base de datos de certificados" #: gui/main_window.ui:10 msgid "Open _recents" msgstr "Abrir _recientes" #: gui/main_window.ui:11 msgid "_Save certificate database as..." msgstr "_Guardar base de datos de certificados como..." #: gui/main_window.ui:15 msgid "Add" msgstr "Añadir" #: gui/main_window.ui:17 msgid "_Add self-signed CA" msgstr "_Añadir autoridad de certificación auto-firmada" #: gui/main_window.ui:18 msgid "Add _Certificate Request" msgstr "Añadir _solicitud de certificación" #: gui/main_window.ui:29 msgid "Generate _CRL" msgstr "Generar _CRL" #: gui/main_window.ui:30 msgid "Generate D_H parameters..." msgstr "Generar parámetros D_H..." #: gui/main_window.ui:31 msgid "Change database pass_word" msgstr "Cambiar contrase_ña de base de datos" #: gui/main_window.ui:33 msgid "_Import" msgstr "I_mportar" #: gui/main_window.ui:38 msgid "Revoke _all selected..." msgstr "Revocar _todos los seleccionados..." #: gui/main_window.ui:39 msgid "Delete all selected _CSRs..." msgstr "Eliminar todas las _solicitudes seleccionadas..." #: gui/main_window.ui:41 msgid "_Quit" msgstr "_Salir" #: gui/main_window.ui:44 gui/san_manager_widget.ui:34 msgid "_Edit" msgstr "_Editar" #: gui/main_window.ui:46 msgid "Preferences" msgstr "Preferencias" #: gui/main_window.ui:49 msgid "_View" msgstr "_Ver" #: gui/main_window.ui:51 msgid "Certificate _Signing Requests" msgstr "_Solicitudes de firma de certificados" #: gui/main_window.ui:52 msgid "_Revoked Certificates" msgstr "Certificados _revocados" #: gui/main_window.ui:53 msgid "E_xpired Certificates" msgstr "Certificados ca_ducados" #: gui/main_window.ui:57 gui/new_ca_window.ui:249 gui/new_ca_window.ui:456 #: gui/new_ca_window.ui:568 gui/new_cert_window.ui:249 #: gui/new_cert_window.ui:331 gui/new_cert_window.ui:653 #: gui/new_req_window.ui:99 gui/new_req_window.ui:349 gui/new_req_window.ui:540 msgid "_Help" msgstr "Ay_uda" #: gui/main_window.ui:58 msgid "About" msgstr "Acerca de" #: gui/main_window.ui:80 msgid "Create a new database" msgstr "Crear nueva base de datos" #: gui/main_window.ui:87 msgid "Open an existing database" msgstr "Abrir base de datos existente" #: gui/main_window.ui:99 msgid "Add an autosigned CA" msgstr "Añadir autoridad de certificación auto-firmada" #: gui/main_window.ui:100 msgid "Add autosigned CA certificate" msgstr "Añadir certificado de AC autofirmado" #: gui/main_window.ui:111 msgid "Add a new Certificate Signing Request" msgstr "Añadir nueva solicitud de certificación" #: gui/main_window.ui:112 msgid "Add CSR" msgstr "Añadir CSR" #: gui/main_window.ui:129 msgid "Extract the private key of the selected item into a external file" msgstr "Extrae la clave privada del elemento seleccionado a un fichero externo" #: gui/main_window.ui:130 msgid "Extract Private Key" msgstr "Extraer clave privada" #: gui/main_window.ui:142 msgid "Revoke the selected certificate" msgstr "Revocar el certificado seleccionado" #: gui/main_window.ui:143 msgid "Revoke" msgstr "Revocar" #: gui/main_window.ui:151 msgid "Sign the selected Certificate Signing Request" msgstr "Firmar la solicitud de certificación seleccionada" #: gui/main_window.ui:152 msgid "Sign" msgstr "Firmar" #: gui/main_window.ui:164 msgid "Delete the selected Certificate Signing Request" msgstr "Borrar la solicitud de certificación seleccionada" #: gui/main_window.ui:176 msgid "Quick certificate generation for web server" msgstr "Generación rápida de un certificado para un servidor web" #: gui/main_window.ui:177 msgid "Web Server Wizard" msgstr "Asistente de servidor web" #: gui/main_window.ui:188 msgid "Quick certificate generation for email server" msgstr "Generación rápida de un certificado para un servidor de correo" #: gui/main_window.ui:189 msgid "Email Server Wizard" msgstr "Asistente de servidor de correo" #: gui/main_window.ui:225 msgid "_Show them" msgstr "_Mostrarlos" #: gui/main_window.ui:243 msgid "Filter certificates by subject or serial..." msgstr "Filtrar certificados por titular o número de serie..." #: gui/new_ca_window.ui:20 msgid "New CA - gnoMint" msgstr "Nueva AC - gnoMint" #: gui/new_ca_window.ui:46 msgid "CA Subject Properties\n" msgstr "Propiedades del titular de la AC\n" #: gui/new_ca_window.ui:72 gui/new_cert_window.ui:130 gui/new_req_window.ui:303 msgid "Organization:" msgstr "Organización:" #: gui/new_ca_window.ui:83 gui/new_cert_window.ui:141 gui/new_req_window.ui:292 msgid "Organization Unit:" msgstr "Unidad organizativa:" #: gui/new_ca_window.ui:94 gui/new_cert_window.ui:152 gui/new_req_window.ui:281 msgid "Country:" msgstr "País" #: gui/new_ca_window.ui:106 gui/new_cert_window.ui:163 #: gui/new_req_window.ui:270 msgid "State or Province name: " msgstr "Nombre de estado o provincia: " #: gui/new_ca_window.ui:117 gui/new_cert_window.ui:174 #: gui/new_req_window.ui:259 msgid "City: " msgstr "Ciudad: " #: gui/new_ca_window.ui:164 msgid "" "CA Root Certificate \n" "Common Name (CN):" msgstr "" "Nombre común (CN) del\n" "certificado raiz de la AC:" #: gui/new_ca_window.ui:185 gui/new_cert_window.ui:219 #: gui/new_req_window.ui:203 msgid "Email address:" msgstr "Dirección de correo:" #: gui/new_ca_window.ui:227 gui/new_req_window.ui:326 msgid "Subject Alternative Names (SAN)" msgstr "Nombres alternativos de titular (SAN)" #: gui/new_ca_window.ui:265 gui/new_ca_window.ui:480 gui/new_req_window.ui:115 #: gui/new_req_window.ui:373 msgid "_Next" msgstr "_Siguiente" #: gui/new_ca_window.ui:277 gui/new_cert_window.ui:276 #: gui/new_req_window.ui:127 msgid "CA properties" msgstr "Propiedades de la AC" #: gui/new_ca_window.ui:296 msgid "CA Root certificate properties\n" msgstr "Propiedades del certificado raíz de la AC\n" #: gui/new_ca_window.ui:337 msgid "Months before root certificate expiration:" msgstr "Meses antes de la caducidad del certificado raíz:" #: gui/new_ca_window.ui:370 gui/new_req_window.ui:453 msgid "P-256 (256 bits)" msgstr "P-256 (256 bits)" #: gui/new_ca_window.ui:371 gui/new_req_window.ui:454 msgid "P-384 (384 bits)" msgstr "P-384 (384 bits)" #: gui/new_ca_window.ui:372 gui/new_req_window.ui:455 msgid "P-521 (521 bits)" msgstr "P-521 (521 bits)" #: gui/new_ca_window.ui:391 gui/new_req_window.ui:474 msgid "RSA" msgstr "RSA" #: gui/new_ca_window.ui:400 gui/new_req_window.ui:484 msgid "DSA" msgstr "DSA" #: gui/new_ca_window.ui:409 gui/new_req_window.ui:493 msgid "ECDSA" msgstr "ECDSA" #: gui/new_ca_window.ui:418 gui/new_req_window.ui:502 msgid "Ed25519" msgstr "Ed25519" #: gui/new_ca_window.ui:428 gui/new_req_window.ui:512 src/new_ca_window.c:170 #: src/new_ca_window.c:180 src/new_req_window.c:201 src/new_req_window.c:211 msgid "Private key bit length:" msgstr "Longitud en bits de la clave privada:" #: gui/new_ca_window.ui:439 gui/new_req_window.ui:523 msgid "Private key type:" msgstr "Tipo de clave privada:" #: gui/new_ca_window.ui:472 gui/new_ca_window.ui:584 gui/new_req_window.ui:365 #: gui/new_req_window.ui:556 msgid "_Previous" msgstr "_Anterior" #: gui/new_ca_window.ui:492 gui/new_req_window.ui:385 msgid "Root certificate prop" msgstr "Prop. de certificado raíz" #: gui/new_ca_window.ui:511 msgid "CA properties\n" msgstr "Propiedades de la AC\n" #: gui/new_ca_window.ui:535 msgid "CRL Distribution Point:" msgstr "Punto de distribución de CRL:" #: gui/new_ca_window.ui:542 msgid "" "Please, in this field enter an URL where the CRL for this CA will be " "available. \n" "You can leave it blank. In this case, no CRL Distribution Point will be set " "in the CA \n" "Certificate, and you will be able to set it as a new CA property. \n" "This value will be copied into the certificates generated by this CA.\n" "" msgstr "" "Introduzca en este campo una URL donde estará disponible la CRL de " "esta AC. \n" "Puede dejarlo vacío. En ese caso, no se establecerá ningún punto de " "distribución de CRL \n" "en el certificado de la AC, y podrá configurarlo después como propiedad de " "la AC. \n" "Este valor se copiará en los certificados generados por esta AC.\n" "" #: gui/new_ca_window.ui:604 msgid "Password protect" msgstr "Proteger con contraseña" #: gui/new_cert_window.ui:13 msgid "New Certificate - gnoMint" msgstr "Nuevo certificado - gnoMint" #: gui/new_cert_window.ui:36 gui/new_cert_window.ui:293 #: gui/new_cert_window.ui:382 msgid "New Certificate Properties\n" msgstr "Propiedades del nuevo certificado\n" #: gui/new_cert_window.ui:45 msgid "" "You are about to sign a Certificate Signing Request,\n" "and this way, creating a new certificate. Please\n" "check the certificate properties." msgstr "" "Se va a proceder a la firma de una solicitud de certificación,\n" "creándose así un nuevo certificado. Por favor, compruebe\n" "las propiedades de éste." #: gui/new_cert_window.ui:64 gui/new_cert_window.ui:75 #: gui/new_cert_window.ui:86 gui/new_cert_window.ui:97 #: gui/new_cert_window.ui:108 gui/new_cert_window.ui:119 msgid "label" msgstr "etiqueta" #: gui/new_cert_window.ui:185 msgid "" "New certificate \n" "Common Name (CN):" msgstr "" "Nombre común (CN) del\n" "nuevo certificado:" #: gui/new_cert_window.ui:197 msgid "Subject Alternative Names:" msgstr "Nombres alternativos de titular:" #: gui/new_cert_window.ui:302 msgid "" "You are about to sign a Certificate Signing Request.\n" "Please, choose the Certification Authority you are\n" "going to use for signing it." msgstr "" "Se va a proceder a la firma de una solicitud de certificación.\n" "Por favor, seleccione la autoridad de certificación que\n" "se va a emplear para firmarlo." #: gui/new_cert_window.ui:366 msgid "Choose CA for signing the CSR" msgstr "Seleccione autoridad que firmará la solicitud" #: gui/new_cert_window.ui:397 msgid "Months before certificate expiration:" msgstr "Meses antes de la caducidad del certificado:" #: gui/new_cert_window.ui:519 msgid "Certificate uses" msgstr "Usos del certificado" #: gui/new_cert_window.ui:635 msgid "Certificate purposes" msgstr "Finalidades del certificado" #: gui/new_cert_window.ui:688 msgid "Certificate properties" msgstr "Propiedades del certificado" #: gui/new_crl_dialog.ui:5 msgid "New CRL - gnoMint" msgstr "Nueva CRL - gnoMint" #: gui/new_crl_dialog.ui:17 msgid "New Certificate Revocation List" msgstr "Nueva lista de certificados revocados" #: gui/new_crl_dialog.ui:26 msgid "" "Please, select the CA for which a Certificate \n" "Revocation List is going to be created:" msgstr "" "Seleccione la autoridad de certificación para la\n" "que se va a crear una CRL (lista de certificados \n" "revocados):" #: gui/new_req_window.ui:12 msgid "New certificate request - gnoMint" msgstr "Nueva solicitud de certificación - gnoMint" #: gui/new_req_window.ui:36 gui/new_req_window.ui:147 gui/new_req_window.ui:403 msgid "Certificate Request Properties\n" msgstr "Propiedades de la solicitud de certificación\n" #: gui/new_req_window.ui:55 msgid "" "The subject of the new certificate request can inherit information\n" "from one of the existing Certification Authorities. This is a must if the\n" "policy of the CA you are going to use is defined to force some fields\n" "of a certificate subject to be the same as the ones in the CA cert\n" "subject." msgstr "" "El titular de la nueva solicitud de certificado puede heredar " "información\n" "de una de las autoridades de certificación existentes. Esto es necesario si " "la\n" "política de la AC que va a utilizar obliga a que ciertos campos del titular\n" "del certificado sean iguales a los del certificado de la\n" "autoridad." #: gui/new_req_window.ui:67 msgid "Don't inherit any fields from existing Certification Authorities" msgstr "No heredar ningún campo de autoridades de certificación existentes" #: gui/new_req_window.ui:74 msgid "" "Inherit fields according to selected Certification Authority and its policy." msgstr "" "Heredar campos según la política de la autoridad de certificación " "seleccionada." #: gui/new_req_window.ui:191 msgid "" "Certificate\n" " Common Name (CN):" msgstr "" "Nombre común (CN)\n" " del certificado:" #: gui/new_req_window.ui:576 msgid "page 3" msgstr "página 3" #: gui/preferences_dialog.ui:9 msgid "General Preferences - gnoMint" msgstr "Preferencias generales - gnoMint" #: gui/preferences_dialog.ui:26 msgid "" "Automatically export created certificates to\n" "Gnome-keyring certificate store" msgstr "" "Exportar automáticamente los certificados creados a\n" "el almacén de certificados de Gnome-keyring" #: gui/preferences_dialog.ui:36 msgid "Export options" msgstr "Opciones de exportación" #: gui/san_editor_dialog.ui:5 src/certificate_properties.c:1488 msgid "Subject Alternative Name" msgstr "Nombre alternativo de titular" #: gui/san_editor_dialog.ui:23 msgid "Type:" msgstr "Tipo:" #: gui/san_editor_dialog.ui:35 msgid "DNS" msgstr "DNS" #: gui/san_editor_dialog.ui:36 src/certificate_properties.c:900 #: src/certificate_properties.c:914 src/certificate_properties.c:1040 msgid "IP Address" msgstr "Dirección IP" #: gui/san_editor_dialog.ui:37 msgid "Email" msgstr "Correo" #: gui/san_editor_dialog.ui:38 src/certificate_properties.c:889 #: src/certificate_properties.c:1032 msgid "URI" msgstr "URI" #: gui/san_editor_dialog.ui:51 msgid "Value:" msgstr "Valor:" #: gui/san_editor_dialog.ui:74 msgid "" "Examples:\n" "DNS: example.com, *.example.com\n" "IP: 192.168.1.1, 2001:db8::1\n" "EMAIL: admin@example.com\n" "URI: https://example.com" msgstr "" "Ejemplos:\n" "DNS: example.com, *.example.com\n" "IP: 192.168.1.1, 2001:db8::1\n" "EMAIL: admin@example.com\n" "URI: https://example.com" #: gui/san_manager_widget.ui:26 msgid "_Add" msgstr "_Añadir" #: gui/san_manager_widget.ui:43 msgid "_Remove" msgstr "_Eliminar" #: gui/wizard_window.ui:9 msgid "Certificate Wizard" msgstr "Asistente de certificados" #: gui/wizard_window.ui:28 msgid "Quick Certificate Generation" msgstr "Generación rápida de certificado" #: gui/wizard_window.ui:35 msgid "" "This wizard will create a certificate for your server with default " "settings.\n" "Enter the server name (e.g., my.server.dns.name) and select the CA to sign " "it." msgstr "" "Este asistente creará un certificado para su servidor con la configuración " "predeterminada.\n" "Introduzca el nombre del servidor (p.ej., mi.servidor.dns) y seleccione la " "AC que lo firmará." #: gui/wizard_window.ui:48 msgid "Server Name:" msgstr "Nombre del servidor:" #: gui/wizard_window.ui:59 msgid "Enter the server DNS name (e.g., my.server.dns.name)" msgstr "Introduzca el nombre DNS del servidor (p.ej., mi.servidor.dns)" #: gui/wizard_window.ui:69 msgid "Signing CA:" msgstr "AC firmante:" #: gui/wizard_window.ui:88 msgid "Certificate Type:" msgstr "Tipo de certificado:" #: gui/wizard_window.ui:124 msgid "_Generate Certificate" msgstr "_Generar certificado" #: gui/wizard_window.ui:140 msgid "Web Server (TLS)" msgstr "Servidor web (TLS)" #: gui/wizard_window.ui:141 msgid "Email Server (TLS)" msgstr "Servidor de correo (TLS)" #: src/ca.c:192 #, c-format msgid "Bulk revoke completed with errors. First error: %s" msgstr "La revocación masiva terminó con errores. Primer error: %s" #: src/ca.c:199 #, c-format msgid "%d certificate revoked." msgid_plural "%d certificates revoked." msgstr[0] "%d certificado revocado." msgstr[1] "%d certificados revocados." #: src/ca.c:225 #, c-format msgid "Bulk delete completed with errors. First error: %s" msgstr "La eliminación masiva terminó con errores. Primer error: %s" #: src/ca.c:240 msgid "" "Certificate renewed. A new certificate with a fresh keypair has been added " "to the database alongside the original." msgstr "" "Certificado renovado. Se ha añadido un nuevo certificado con un par de " "claves nuevo a la base de datos, junto al original." #: src/ca.c:606 src/ca-cli-callbacks.c:167 src/ca-cli-callbacks.c:221 #: src/ca-cli-callbacks.c:733 src/ca-cli-callbacks.c:737 #: src/ca-cli-callbacks.c:1362 src/ca-cli-callbacks.c:1369 #: src/certificate_properties.c:246 src/certificate_properties.c:252 msgid "%m/%d/%Y %H:%M GMT" msgstr "%d/%m/%Y %H:%M GMT" #: src/ca.c:806 src/ca.c:1927 src/ca.c:1958 src/ca.c:2093 src/ca.c:2322 #: src/ca.c:2350 msgid "Yes" msgstr "Sí" #: src/ca.c:930 src/certificate_properties.c:653 msgid "Subject" msgstr "Titular" #: src/ca.c:965 src/cert_diff.c:122 msgid "Serial" msgstr "Nº serie" #: src/ca.c:978 src/cert_diff.c:123 msgid "Activation" msgstr "Activación" #: src/ca.c:991 src/cert_diff.c:124 msgid "Expiration" msgstr "Caducidad" #: src/ca.c:1004 msgid "Revocation" msgstr "Revocación" #: src/ca.c:1047 #, c-format msgid "" "Showing only the %d certificate expiring in the next %d days. Close " "this banner to show everything again." msgid_plural "" "Showing only the %d certificates expiring in the next %d days. Close " "this banner to show everything again." msgstr[0] "" "Mostrando solo el %d certificado que caduca en los próximos %d días. " "Cierre este aviso para volver a mostrar todo." msgstr[1] "" "Mostrando solo los %d certificados que caducan en los próximos %d " "días. Cierre este aviso para volver a mostrar todo." #: src/ca.c:1058 #, c-format msgid "" "%d certificate expires in the next %d days. Right-click it to renew " "with a fresh key." msgid_plural "" "%d certificates expire in the next %d days. Right-click each one to " "renew with a fresh key." msgstr[0] "" "%d certificado caduca en los próximos %d días. Haga clic con el botón " "derecho sobre él para renovarlo con una clave nueva." msgstr[1] "" "%d certificados caducan en los próximos %d días. Haga clic con el " "botón derecho sobre cada uno para renovarlo con una clave nueva." #: src/ca.c:1369 src/ca.c:1404 src/ca.c:1416 src/export.c:560 src/export.c:639 msgid "There was an error while exporting certificate." msgstr "Ocurrió un error al exportar el certificado" #: src/ca.c:1371 src/ca.c:1406 src/ca.c:1418 msgid "There was an error while exporting CSR." msgstr "Ocurrió un error al exportar la solicitud de certificación." #: src/ca.c:1426 src/ca.c:1590 msgid "Certificate exported successfully" msgstr "Certificado exportado con éxito" #: src/ca.c:1427 msgid "Certificate signing request exported successfully" msgstr "Solicitud de certificación exportada correctamente" #: src/ca.c:1445 msgid "Export certificate" msgstr "Exportar certificado" #: src/ca.c:1447 msgid "Export certificate signing request" msgstr "Exportar solicitud de certificación" #: src/ca.c:1461 src/ca.c:1523 src/ca.c:1981 msgid "Private key exported successfully" msgstr "Clave privada exportada con éxito" #: src/ca.c:1509 src/ca.c:2057 msgid "Export crypted private key" msgstr "Exportar clave privada cifrada." #: src/ca.c:1568 msgid "Export unencrypted private key" msgstr "Exportar clave privada sin cifrar" #: src/ca.c:1633 msgid "Export whole certificate in PKCS#12 package" msgstr "Exportar todo el certificado en un paquete PKCS#12" #: src/ca.c:1676 msgid "Unexpected error" msgstr "Error inesperado" #: src/ca.c:1712 msgid "Export CSR - gnoMint" msgstr "Exportar solicitud de certificación - gnoMint" #: src/ca.c:1717 msgid "" "Please, choose which part of the saved Certificate Signing Request you want " "to export:" msgstr "" "Seleccione qué parte almacenada de la solicitud de certificación desea " "exportar:" #: src/ca.c:1722 msgid "" "Export the Certificate Signing Request to a public file, in PEM format." msgstr "" "Exporta la solicitud de certificación a un fichero público en formato " "PEM" #: src/ca.c:1727 msgid "" "Export the saved private key to a PKCS#8 password-protected file. This " "file should only be accessed by the subject of the Certificate Signing " "Request." msgstr "" "Exporta la clave privada almacenada a un fichero PKCS#8 protegido con " "clave. Este fichero sólo debería ser accesible para el titular de la " "soliticud de certificación." #: src/ca.c:1774 msgid "Could not build certificate chain." msgstr "No se pudo construir la cadena de certificados." #: src/ca.c:1781 #, c-format msgid "Failed to write chain: %s" msgstr "Error al escribir la cadena: %s" #: src/ca.c:1786 msgid "Certificate chain exported successfully." msgstr "Cadena de certificados exportada con éxito." #: src/ca.c:1807 msgid "Please select a certificate to export its chain." msgstr "Por favor, seleccione un certificado para exportar su cadena." #: src/ca.c:1831 msgid "Export certificate chain" msgstr "Exportar cadena de certificados" #: src/ca.c:1911 msgid "Please select one or more certificates to revoke." msgstr "Por favor, seleccione uno o más certificados para revocar." #: src/ca.c:1916 #, c-format msgid "Are you sure you want to revoke %d certificate?" msgid_plural "Are you sure you want to revoke %d certificates?" msgstr[0] "¿Está seguro de que desea revocar %d certificado?" msgstr[1] "¿Está seguro de que desea revocar %d certificados?" #: src/ca.c:1920 msgid "" "Revoking a certificate will include it in the next CRL, marking it as " "invalid. CSRs in the selection (if any) are not affected; use \"Delete " "selected CSRs\" for those." msgstr "" "Revocar un certificado hará que se incluya en la siguiente CRL, marcándolo " "como no válido. Las solicitudes de certificación (CSRs) en la selección (si " "las hay) no se ven afectadas; utilice \"Eliminar CSRs seleccionados\" para " "estas." #: src/ca.c:1927 src/ca.c:1958 src/ca.c:2093 src/ca.c:2322 src/ca.c:2350 msgid "No" msgstr "No" #: src/ca.c:1948 msgid "Please select one or more CSRs to delete." msgstr "Por favor, seleccione una o más solicitudes para eliminar." #: src/ca.c:1953 #, c-format msgid "Are you sure you want to delete %d Certificate Signing Request?" msgid_plural "Are you sure you want to delete %d Certificate Signing Requests?" msgstr[0] "¿Está seguro de que desea eliminar %d solicitud de certificación?" msgstr[1] "¿Está seguro de que desea eliminar %d solicitudes de certificación?" #: src/ca.c:2076 src/ca-cli-callbacks.c:1934 msgid "" "CA certificates cannot be renewed. A renewed CA would have a different key, " "so certificates previously signed by the old CA would no longer chain to it." msgstr "" "Los certificados de AC no se pueden renovar. Una AC renovada tendría una " "clave diferente, por lo que los certificados firmados previamente por la " "antigua AC ya no encadenarían con ella." #: src/ca.c:2087 msgid "" "Renew this certificate?\n" "\n" "gnoMint will issue a new certificate with the same subject and SAN as the " "selected one, signed by the same CA, with a freshly-generated keypair. The " "old certificate will remain in the database — revoke it manually after you " "have deployed the new one." msgstr "" "¿Renovar este certificado?\n" "\n" "gnoMint emitirá un nuevo certificado con el mismo asunto y SAN que el " "seleccionado, firmado por la misma AC, con un par de claves recién generado. " "El certificado antiguo permanecerá en la base de datos — revóquelo " "manualmente cuando haya desplegado el nuevo." #: src/ca.c:2118 #, c-format msgid "Certificate diff — %d difference" msgid_plural "Certificate diff — %d differences" msgstr[0] "Diferencias entre certificados — %d diferencia" msgstr[1] "Diferencias entre certificados — %d diferencias" #: src/ca.c:2147 msgid "Left" msgstr "Izquierdo" #: src/ca.c:2151 msgid "Right" msgstr "Derecho" #: src/ca.c:2241 src/ca-cli-callbacks.c:2141 msgid "Cannot read file." msgstr "No se pudo leer el fichero." #: src/ca.c:2252 msgid "Selected" msgstr "Seleccionado" #: src/ca.c:2278 msgid "Cannot read PEM of the selected certificate." msgstr "No se pudo leer el PEM del certificado seleccionado." #: src/ca.c:2290 msgid "Compare with PEM file…" msgstr "Comparar con un archivo PEM…" #: src/ca.c:2312 msgid "Are you sure you want to revoke this certificate?" msgstr "¿Está seguro de que desea revocar este certificado?" #: src/ca.c:2313 msgid "" "Revoking a certificate will include it in the next CRL, marking it as " "invalid. This way, any future use of the certificate will be denied (as long " "as the CRL is checked)." msgstr "" "Revocar un certificado hará que se incluya en la siguiente CRL, marcándolo " "como no válido. Así, se impedirá cualquier uso futuro del certificado " "(siempre y cuando se compruebe la CRL)" #: src/ca.c:2316 msgid "Are you sure you want to revoke this CA certificate?" msgstr "¿Está seguro de que desea revocar este certificado de AC?" #: src/ca.c:2317 msgid "" "Revoking a certificate will include it in the next CRL, marking it as " "invalid. This way, any future use of the certificate will be denied (as long " "as the CRL is checked). \n" "\n" "Moreover, revoking a CA certificate can invalidate all the certificates " "generated with it, so all them should be regenerated with a new CA " "certificate." msgstr "" "Revocar un certificado hará que se incluya en la siguiente CRL, marcándolo " "como no válido. Así, se impedirá cualquier uso futuro del certificado " "(siempre y cuando se compruebe la CRL)\n" "\n" "Además, revocar el certificado de una AC puede invalidar todos los " "certificados generados con él, por lo que todos deberían regenerarse con un " "nuevo certificado de AC." #: src/ca.c:2349 msgid "Are you sure you want to delete this Certificate Signing Request?" msgstr "¿Está seguro de que desea borrar esta solicitud de certificación?" #: src/ca.c:2572 msgid "" "The current password you have entered doesn't match with the actual current " "database password." msgstr "" "La contraseña actual que ha introducido no coincide con la contraseña real " "de la base de datos." #: src/ca.c:2588 msgid "Error while changing database password. The operation was cancelled." msgstr "" "Ocurrió un error al cambiar la contraseña de la base de datos. Se canceló la " "operación." #: src/ca.c:2593 msgid "Password changed successfully" msgstr "Contraseña cambiada con éxito" #: src/ca.c:2601 src/ca-cli-callbacks.c:1186 msgid "" "Error while establishing database password. The operation was cancelled." msgstr "" "Ocurrió un error al establecer la contraseña de la base de datos. Se canceló " "la operación." #: src/ca.c:2606 msgid "Password established successfully" msgstr "Contraseña establecida con éxito" #: src/ca.c:2616 msgid "Error while removing database password. The operation was cancelled." msgstr "" "Ocurrió un error al eliminar la contraseña de la base de datos. Se canceló " "la operación." #: src/ca.c:2621 msgid "Password removed successfully" msgstr "Contraseña eliminada con éxito" #: src/ca.c:2708 msgid "Change CA password - gnoMint" msgstr "Cambiando contraseña de AC - gnoMint" #: src/ca.c:2840 msgid "Diffie-Hellman parameters saved successfully" msgstr "Parámetros Diffie-Hellman guardados correctamente" #: src/ca.c:2872 msgid "Save Diffie-Hellman parameters" msgstr "Guardar parámetros Diffie-Hellman" #: src/ca.c:2951 #, c-format msgid "Problem when importing '%s' file" msgstr "Hubo problemas al importar el fichero '%s'" #: src/ca.c:3012 msgid "Select PEM file to import" msgstr "Seleccione fichero PEM a importar" #: src/ca.c:3018 msgid "Select directory to import" msgstr "Seleccione directorio a importar" #: src/cert_diff.c:70 msgid "Cannot parse left certificate" msgstr "No se pudo analizar el certificado izquierdo" #: src/cert_diff.c:72 msgid "Cannot parse right certificate" msgstr "No se pudo analizar el certificado derecho" #: src/cert_diff.c:113 msgid "Subject CN" msgstr "CN del titular" #: src/cert_diff.c:114 msgid "Subject O" msgstr "O del titular" #: src/cert_diff.c:115 msgid "Subject OU" msgstr "OU del titular" #: src/cert_diff.c:116 msgid "Subject Country" msgstr "País del titular" #: src/cert_diff.c:117 msgid "Subject State" msgstr "Estado/provincia del titular" #: src/cert_diff.c:118 msgid "Subject Locality" msgstr "Localidad del titular" #: src/cert_diff.c:119 msgid "Subject email" msgstr "Correo del titular" #: src/cert_diff.c:120 msgid "Subject DN" msgstr "DN del titular" #: src/cert_diff.c:121 msgid "Issuer DN" msgstr "DN del emisor" #: src/cert_diff.c:125 msgid "SAN" msgstr "SAN" #: src/cert_diff.c:126 msgid "Key usage / EKU" msgstr "Uso de clave / EKU" #: src/cert_diff.c:127 msgid "Subject Key ID" msgstr "Id. de clave del titular" #: src/cert_diff.c:128 msgid "Authority Key ID" msgstr "Id. de clave de autoridad" #: src/cert_diff.c:129 msgid "CRL distribution" msgstr "Distribución de CRL" #: src/cert_diff.c:130 msgid "SHA-1 fingerprint" msgstr "Huella digital SHA-1" #: src/cert_diff.c:131 msgid "SHA-256 fingerprint" msgstr "Huella digital SHA-256" #: src/cert_renewal.c:111 msgid "Cannot parse generated CSR." msgstr "No se pudo analizar la solicitud generada." #: src/cert_renewal.c:125 msgid "Cannot encrypt new private key." msgstr "No se pudo cifrar la nueva clave privada." #: src/cert_renewal.c:181 src/cert_renewal.c:341 msgid "Cannot read certificate PEM from database." msgstr "No se pudo leer el PEM del certificado de la base de datos." #: src/cert_renewal.c:186 src/cert_renewal.c:347 msgid "Cannot parse certificate." msgstr "No se pudo analizar el certificado." #: src/cert_renewal.c:193 src/cert_renewal.c:354 #, c-format msgid "Cannot find issuer CA in this database (issuer DN: %s)." msgstr "" "No se pudo encontrar la AC emisora en esta base de datos (DN del emisor: %s)." #: src/cert_renewal.c:204 src/cert_renewal.c:315 msgid "Cannot load parent CA material from database." msgstr "No se pudo cargar el material de la AC padre desde la base de datos." #: src/cert_renewal.c:212 src/cert_renewal.c:221 src/cert_renewal.c:265 #: src/cert_renewal.c:280 msgid "Cannot decrypt parent CA's private key." msgstr "No se pudo descifrar la clave privada de la AC padre." #: src/ca-cli.c:42 msgid "newdb " msgstr "newdb " #: src/ca-cli.c:42 msgid "Close current file and create a new database with given filename" msgstr "" "Cierra el fichero actual y crea una nueva base de datos con el nombre de " "fichero indicado" #: src/ca-cli.c:43 msgid "opendb " msgstr "opendb " #: src/ca-cli.c:43 msgid "Close current file and open the file with given filename" msgstr "Cierra el fichero actual y abre el fichero con el nombre indicado" #: src/ca-cli.c:44 msgid "savedbas " msgstr "savedbas " #: src/ca-cli.c:44 msgid "Save the current file with a different filename" msgstr "Guarda el fichero actual con un nombre de fichero distinto" #: src/ca-cli.c:45 msgid "Get current status (opened file, no. of certificates, etc...)" msgstr "Obtiene el estado actual (fichero abierto, nº de certificados, etc...)" #: src/ca-cli.c:46 msgid "" "List the certificates in database. With option --see-revoked, lists also the " "revoked ones" msgstr "" "Lista los certificados de la base de datos. Con la opción --see-revoked, " "lista también los certificados revocados." #: src/ca-cli.c:48 msgid "List the CSRs in database" msgstr "Lista las solicitudes de certificación existentes en la base de datos" #: src/ca-cli.c:49 msgid "addcsr [ca-id-for-inherit-fields]" msgstr "add-csr [id-de-CA-para-heredar-campos]" #: src/ca-cli.c:49 msgid "Start a new CSR creation process" msgstr "Comienza un nuevo proceso de creación de solicitud de certificación" #: src/ca-cli.c:50 msgid "Start a new self-signed CA creation process" msgstr "" "Iniciar un nuevo proceso de creación de Autoridad de Certificación auto-" "firmada" #: src/ca-cli.c:51 msgid "extractcertpkey " msgstr "extractcertpkey " #: src/ca-cli.c:51 msgid "" "Extract the private key of the certificate with the given internal id and " "saves it into the given file" msgstr "" "Extraer clave privada del certificado con el identificador proporcionado y " "almacenarla en el fichero indicado" #: src/ca-cli.c:54 msgid "extractcsrpkey " msgstr "extractcsrpkey " #: src/ca-cli.c:54 msgid "" "Extract the private key of the CSR with the given internal id and saves it " "into the given file" msgstr "" "Extraer clave privada del CSR con identificador indicado y almacenarla en el " "fichero proporcionado" #: src/ca-cli.c:57 msgid "revoke " msgstr "revoke " #: src/ca-cli.c:57 msgid "Revoke the certificate with the given internal ID" msgstr "Revocar el certificado con identificador proporcionado" #: src/ca-cli.c:58 msgid "sign " msgstr "sign " #: src/ca-cli.c:58 msgid "Generate a certificate signing the given CSR with the given CA" msgstr "Generar certificado firmando el CSR indicado con la AC proporcionada" #: src/ca-cli.c:59 msgid "delete " msgstr "delete " #: src/ca-cli.c:59 msgid "Delete the given CSR from the database" msgstr "Borrar solicitud de certificación indicada de la base de datos" #: src/ca-cli.c:60 msgid "crlgen " msgstr "crlgen " #: src/ca-cli.c:60 msgid "Generate a new CRL for the given CA, saving it into the file " msgstr "" "Generar un nuevo CRL para la AC indicada, almacenándolo en el fichero " "" #: src/ca-cli.c:61 msgid "dhgen " msgstr "dhgen " #: src/ca-cli.c:61 msgid "Generate a new DH-parameter set, saving it into the file " msgstr "" "Generar un nuevo conjunto de parámetros DH, almacenándolo en el fichero " "" #: src/ca-cli.c:62 msgid "Change password for the current database" msgstr "Cambiar contraseña de la base de datos actual" #: src/ca-cli.c:63 msgid "importfile " msgstr "importfile " #: src/ca-cli.c:63 msgid "Import the file with the given name " msgstr "Importar fichero con el nombre indicado" #: src/ca-cli.c:64 msgid "importdir " msgstr "importdir " #: src/ca-cli.c:64 msgid "Import the given directory, as a OpenSSL-CA directory" msgstr "" "Importar el directorio proporcionado, interpretándolo como el directorio de " "una AC realizada con OpenSSL" #: src/ca-cli.c:65 msgid "showcert " msgstr "showcert " #: src/ca-cli.c:65 msgid "Show properties of the given certificate" msgstr "Mostrar propiedades del certificado indicado" #: src/ca-cli.c:66 msgid "showcsr " msgstr "showcsr " #: src/ca-cli.c:66 msgid "Show properties of the given CSR" msgstr "Mostrar propiedades del CSR proporcionado" #: src/ca-cli.c:67 msgid "showpolicy " msgstr "showpolicy " #: src/ca-cli.c:67 msgid "Show CA policy" msgstr "Mostrar política de la AC" #: src/ca-cli.c:68 msgid "setpolicy " msgstr "setpolicy " #: src/ca-cli.c:68 msgid "Change the given CA policy" msgstr "Cambiar política indicada de la AC" #: src/ca-cli.c:69 msgid "Show program preferences" msgstr "Mostrar preferencias de programa" #: src/ca-cli.c:70 msgid "setpreference " msgstr "setpreference " #: src/ca-cli.c:70 msgid "Set the given program preference" msgstr "Establece la preferencia de programa indicada" #: src/ca-cli.c:71 msgid "addservercert " msgstr "addservercert " #: src/ca-cli.c:71 msgid "Quick server certificate generation (cert-type: 'web' or 'email')" msgstr "" "Generación rápida de certificado de servidor (tipo-de-cert: 'web' o 'email')" #: src/ca-cli.c:72 msgid "renewcert " msgstr "renewcert " #: src/ca-cli.c:72 msgid "" "Reissue a non-CA certificate with the same subject + SAN and a fresh " "keypair. The old certificate remains in the database. CA certificates cannot " "be renewed." msgstr "" "Reemitir un certificado (no de AC) con el mismo titular + SAN y un par de " "claves nuevo. El certificado antiguo permanece en la base de datos. Los " "certificados de AC no se pueden renovar." #: src/ca-cli.c:73 msgid "exportchain " msgstr "exportchain " #: src/ca-cli.c:73 msgid "" "Export the full certificate chain (leaf → root) for the given certificate as " "a PEM bundle." msgstr "" "Exportar la cadena completa de certificados (hoja → raíz) del certificado " "indicado como un paquete PEM." #: src/ca-cli.c:74 msgid "revokemany [cert-id ...]" msgstr "revokemany [id de certificado ...]" #: src/ca-cli.c:74 msgid "Revoke many certificates at once. Non-cert ids are silently skipped." msgstr "" "Revocar varios certificados a la vez. Los identificadores que no son de " "certificado se ignoran." #: src/ca-cli.c:75 msgid "deletemany [csr-id ...]" msgstr "deletemany [id. de csr ...]" #: src/ca-cli.c:75 msgid "Delete many CSRs at once. Non-CSR ids are silently skipped." msgstr "" "Eliminar varias solicitudes a la vez. Los identificadores que no son de CSR " "se ignoran." #: src/ca-cli.c:76 msgid "search " msgstr "search " #: src/ca-cli.c:76 msgid "" "List certificates and CSRs whose subject or serial contains (case-" "insensitive)." msgstr "" "Listar certificados y CSRs cuyo titular o número de serie contenga " "(sin distinguir mayúsculas/minúsculas)." #: src/ca-cli.c:77 msgid "diff " msgstr "diff " #: src/ca-cli.c:77 msgid "" "Side-by-side diff of two certificates. Each argument is either a numeric DB " "id or a path to a PEM file." msgstr "" "Comparación lado a lado de dos certificados. Cada argumento es un " "identificador numérico de la BD o una ruta a un fichero PEM." #: src/ca-cli.c:78 msgid "Show about message" msgstr "Mostrar mensaje de \"Acerca de...\"" #: src/ca-cli.c:79 msgid "Show warranty information" msgstr "Mostrar información de garantía" #: src/ca-cli.c:80 msgid "Show distribution information" msgstr "Mostrar información sobre la distribución del programa" #: src/ca-cli.c:81 msgid "Show version information" msgstr "Mostrar información de versión" #: src/ca-cli.c:82 msgid "Show (this) help message" msgstr "Mostrar (este) mensaje de ayuda" #: src/ca-cli.c:83 src/ca-cli.c:84 src/ca-cli.c:85 msgid "Close database and exit program" msgstr "Cerrar base de datos y salir de programa" #: src/ca-cli.c:132 #, c-format msgid "Opening database %s..." msgstr "Abriendo base de datos %s..." #: src/ca-cli.c:136 #, c-format msgid " OK.\n" msgstr " Correcto.\n" #: src/ca-cli.c:138 #, c-format msgid " Error.\n" msgstr " Error.\n" #: src/ca-cli.c:153 #, c-format msgid "" "Notice: %d certificate expires within the next %d days. Use `renewcert ` " "to reissue.\n" msgid_plural "" "Notice: %d certificates expire within the next %d days. Use `renewcert ` " "to reissue.\n" msgstr[0] "" "Aviso: %d certificado caduca en los próximos %d días. Utilice `renewcert " "` para reemitirlo.\n" msgstr[1] "" "Aviso: %d certificados caducan en los próximos %d días. Utilice `renewcert " "` para reemitirlos.\n" #: src/ca-cli.c:187 #, fuzzy, c-format msgid "" "\n" "\n" "%s version %s \"%s\"\n" "%s\n" "\n" msgstr "" "\n" "\n" "%s versión %s\n" "%s\n" "\n" #: src/ca-cli.c:188 #, c-format msgid "" "This program comes with ABSOLUTELY NO WARRANTY;\n" "for details type 'warranty'.\n" msgstr "" "Este programa se proporciona SIN GARANTÍAS DE NINGÚN TIPO; para más\n" "detalles, teclee 'warranty'.\n" #: src/ca-cli.c:189 #, c-format msgid "" "This is free software, and you are welcome to redistribute it\n" "under certain conditions; type 'distribution' for details.\n" "\n" msgstr "" "Este programa es software libre; se le anima a distribuirlo bajo ciertas\n" "condiciones; teclee 'distribution' para más detalles.\n" "\n" #: src/ca-cli.c:231 #, c-format msgid "Unpaired quotes\n" msgstr "Comillas desemparejadas\n" #: src/ca-cli.c:309 #, c-format msgid "" "Invalid command. Try 'help' for getting a list of recognized commands.\n" msgstr "" "Orden no válida. Teclee 'help' para conseguir una lista de órdenes\n" "reconocidas.\n" #: src/ca-cli.c:313 #, c-format msgid "Incorrect number of parameters.\n" msgstr "Número incorrecto de parámetros.\n" #: src/ca-cli.c:314 #, c-format msgid "Syntax: %s\n" msgstr "Sintaxis: %s\n" #: src/ca-cli-callbacks.c:62 src/ca-cli-callbacks.c:111 msgid "The file already exists, so it will be overwritten." msgstr "El fichero ya existe, por lo que se sobreescribirá" #: src/ca-cli-callbacks.c:62 src/ca-cli-callbacks.c:111 #: src/ca-cli-callbacks.c:824 msgid "Are you sure? Yes/[No] " msgstr "¿Está seguro? Sí/[No] " #: src/ca-cli-callbacks.c:84 #, c-format msgid "Problem when opening new '%s' CA database\n" msgstr "Hubo problemas al abrir la nueva base de datos de la AC '%s'\n" #: src/ca-cli-callbacks.c:88 #, c-format msgid "File '%s' opened\n" msgstr "Fichero '%s' abierto\n" #: src/ca-cli-callbacks.c:98 #, c-format msgid "Problem when opening '%s' CA database\n" msgstr "Hubo problemas al abrir la base de datos de la AC '%s'\n" #: src/ca-cli-callbacks.c:132 #, c-format msgid "Current opened file: %s\n" msgstr "Fichero abierto actualmente: %s\n" #: src/ca-cli-callbacks.c:133 #, c-format msgid "Number of certificates in file: %d\n" msgstr "Número de certificados en fichero: %d\n" #: src/ca-cli-callbacks.c:134 #, c-format msgid "Number of CSRs in file: %d\n" msgstr "Número de CSRs en fichero: %d\n" #: src/ca-cli-callbacks.c:169 msgid " (after 2038?)" msgstr "" #: src/ca-cli-callbacks.c:239 #, c-format msgid "Certificates in Database:\n" msgstr "Certificados en base de datos:\n" #: src/ca-cli-callbacks.c:240 #, c-format msgid "Id.\tIs CA?\tCertificate Subject\tKey in DB?\tActivation\t\tExpiration" msgstr "" "Id.\t¿Es CA?\tTitular de certificado\t¿Clave en BD?\tActivación\t\tCaducidad" #: src/ca-cli-callbacks.c:243 #, c-format msgid "\t\tRevocation\n" msgstr "\t\tRevocación\n" #: src/ca-cli-callbacks.c:278 #, c-format msgid "Certificate Requests in Database:\n" msgstr "Solicitudes de certificación en base de datos:\n" #: src/ca-cli-callbacks.c:279 #, c-format msgid "Id.\tParent Id.\tCSR Subject\t\tKey in DB?\n" msgstr "Id.\tId. padre\tTitular CSR\t\t¿Clave en BD?\n" #: src/ca-cli-callbacks.c:309 src/ca-cli-callbacks.c:1129 #: src/ca-cli-callbacks.c:1522 src/ca-cli-callbacks.c:1551 msgid "The given CA id. is not valid" msgstr "El identificador de CA proporcionado no es válido" #: src/ca-cli-callbacks.c:362 #, c-format msgid "" "Please enter data corresponding to subject of the Certificate Signing " "Request:\n" msgstr "" "Por favor: introduzca los datos correspondientes al titular de la solicitud " "de certificación:\n" #: src/ca-cli-callbacks.c:365 src/ca-cli-callbacks.c:567 msgid "Enter country (C)" msgstr "Introduzca país (C)" #: src/ca-cli-callbacks.c:373 src/ca-cli-callbacks.c:573 msgid "Enter state or province (ST)" msgstr "Introduzca nombre de estado o provincia (ST)" #: src/ca-cli-callbacks.c:382 src/ca-cli-callbacks.c:579 msgid "Enter locality or city (L)" msgstr "Introduzca ciudad o localidad (L)" #: src/ca-cli-callbacks.c:390 src/ca-cli-callbacks.c:585 msgid "Enter organization (O)" msgstr "Introduzca organización (O)" #: src/ca-cli-callbacks.c:398 src/ca-cli-callbacks.c:591 msgid "Enter organizational unit (OU)" msgstr "Introduzca Unidad organizativa (OU)" #: src/ca-cli-callbacks.c:405 src/ca-cli-callbacks.c:597 msgid "Enter common name (CN)" msgstr "Introduzca Nombre común (CN)" #: src/ca-cli-callbacks.c:411 src/ca-cli-callbacks.c:603 msgid "Enter email address (leave blank for none)" msgstr "Introduzca dirección de correo (deje vacío para ninguna)" #: src/ca-cli-callbacks.c:422 src/ca-cli-callbacks.c:614 msgid "" "Enter Subject Alternative Names (SAN) [format: " "DNS:example.com,IP:192.168.1.1]" msgstr "" "Introduzca nombres alternativos del titular (SAN) [formato: " "DNS:example.com,IP:192.168.1.1]" #: src/ca-cli-callbacks.c:433 src/ca-cli-callbacks.c:625 msgid "Enter type of key you are going to create (RSA/DSA/ECDSA/Ed25519)" msgstr "Introduzca el tipo de clave que se va a crear (RSA/DSA/ECDSA/Ed25519)" #: src/ca-cli-callbacks.c:472 src/ca-cli-callbacks.c:656 msgid "Enter curve size for ECDSA (256, 384, or 521)" msgstr "Introduzca el tamaño de curva para ECDSA (256, 384 o 521)" #: src/ca-cli-callbacks.c:482 src/ca-cli-callbacks.c:667 msgid "Enter bitlength for the key (it must be a whole multiple of 1024)" msgstr "Introduzca tamaño de clave en bits (múltiplo de 1024)" #: src/ca-cli-callbacks.c:487 #, c-format msgid "These are the provided CSR properties:\n" msgstr "Estas son las propiedades proporcionadas del CSR:\n" #: src/ca-cli-callbacks.c:489 src/ca-cli-callbacks.c:704 #: src/ca-cli-callbacks.c:1350 src/ca-cli-callbacks.c:1411 #, c-format msgid "Subject:\n" msgstr "Titular:\n" #: src/ca-cli-callbacks.c:490 src/ca-cli-callbacks.c:705 #, c-format msgid "\tDistinguished Name: " msgstr "\tNombre distintivo: " #: src/ca-cli-callbacks.c:505 src/ca-cli-callbacks.c:720 #: src/ca-cli-callbacks.c:1354 src/ca-cli-callbacks.c:1414 #, c-format msgid "\tSubject Alternative Names: %s\n" msgstr "\tNombres alternativos del titular: %s\n" #: src/ca-cli-callbacks.c:506 src/ca-cli-callbacks.c:721 #, c-format msgid "Key pair\n" msgstr "Par de claves\n" #: src/ca-cli-callbacks.c:512 src/ca-cli-callbacks.c:727 #, c-format msgid "\tType: %s\n" msgstr "\tTipo: %s\n" #: src/ca-cli-callbacks.c:514 #, c-format msgid "\tKey size: fixed (Ed25519)\n" msgstr "\tTamaño de clave: fijo (Ed25519)\n" #: src/ca-cli-callbacks.c:516 #, c-format msgid "\tCurve: P-%d\n" msgstr "\tCurva: P-%d\n" #: src/ca-cli-callbacks.c:518 src/ca-cli-callbacks.c:729 #, c-format msgid "\tKey bitlength: %d\n" msgstr "\tLongitud en bits: %d\n" #: src/ca-cli-callbacks.c:521 src/ca-cli-callbacks.c:740 msgid "Do you want to change anything? Yes/[No] " msgstr "¿Desea cambiar algo? Sí/[No] " #: src/ca-cli-callbacks.c:525 msgid "" "You are about to create a Certificate Signing Request with these properties." msgstr "" "Se va a proceder a crear una solicitud de certificación con estas " "propiedades." #: src/ca-cli-callbacks.c:526 src/ca-cli-callbacks.c:745 msgid "Are you sure? [Yes]/No " msgstr "¿Está seguro? [Sí]/No " #: src/ca-cli-callbacks.c:531 src/ca-cli-callbacks.c:750 #: src/ca-cli-callbacks.c:834 src/ca-cli-callbacks.c:965 #: src/ca-cli-callbacks.c:1086 src/ca-cli-callbacks.c:1115 #: src/ca-cli-callbacks.c:1181 src/ca-cli-callbacks.c:1208 #: src/ca-cli-callbacks.c:1236 src/ca-cli-callbacks.c:1251 #: src/ca-cli-callbacks.c:1581 src/ca-cli-callbacks.c:1624 #: src/ca-cli-callbacks.c:1945 #, c-format msgid "Operation cancelled.\n" msgstr "Operación cancelada.\n" #: src/ca-cli-callbacks.c:565 #, c-format msgid "" "Please enter data corresponding to subject of the new Certification " "Authority:\n" msgstr "" "Por favor: introduzca los datos correspondientes al titular de la nueva " "autoridad de certificación:\n" #: src/ca-cli-callbacks.c:673 msgid "" "Introduce number of months before expiration of the new certification " "authority" msgstr "" "Introduzca el número máximo de meses antes de la caducidad de lanueva " "autoridad de certificación" #: src/ca-cli-callbacks.c:693 src/new_ca_window.c:457 msgid "" "This system uses a 32-bit time_t and cannot represent dates after " "2038-01-19. The new CA's expiration date has been clamped to that limit. To " "issue longer-lived CAs, run gnoMint on a 64-bit platform." msgstr "" #: src/ca-cli-callbacks.c:702 #, c-format msgid "These are the provided new CA properties:\n" msgstr "Estas son las propiedades proporcionadas para la nueva AC:\n" #: src/ca-cli-callbacks.c:730 #, c-format msgid "Validity\n" msgstr "Validez\n" #: src/ca-cli-callbacks.c:731 src/ca-cli-callbacks.c:1360 #, c-format msgid "Validity:\n" msgstr "Validez:\n" #: src/ca-cli-callbacks.c:734 src/ca-cli-callbacks.c:1363 #, c-format msgid "\tActivated on: %s\n" msgstr "\tActivado el: %s\n" #: src/ca-cli-callbacks.c:738 src/ca-cli-callbacks.c:1370 #, c-format msgid "\tExpires on: %s\n" msgstr "\tCaduca el: %s\n" #: src/ca-cli-callbacks.c:744 msgid "" "You are about to create a new Certification Authority with these properties." msgstr "" "Se va a proceder a crear una nueva autoridad de certificación con " "estaspropiedades." #: src/ca-cli-callbacks.c:770 src/ca-cli-callbacks.c:818 #: src/ca-cli-callbacks.c:1321 msgid "The given certificate id. is not valid" msgstr "El identificador de certificado proporcionado no es válido" #: src/ca-cli-callbacks.c:777 src/ca-cli-callbacks.c:801 #, c-format msgid "Private key extracted successfully into file '%s'\n" msgstr "Clave privada extraída con éxito al fichero '%s'\n" #: src/ca-cli-callbacks.c:794 src/ca-cli-callbacks.c:946 #: src/ca-cli-callbacks.c:1099 src/ca-cli-callbacks.c:1400 msgid "The given CSR id. is not valid" msgstr "El identificador de CSR proporcionado no es válido" #: src/ca-cli-callbacks.c:824 msgid "This certificate will be revoked." msgstr "Este certificado será revocado." #: src/ca-cli-callbacks.c:830 #, c-format msgid "Certificate revoked.\n" msgstr "Certificado revocado.\n" #: src/ca-cli-callbacks.c:844 src/ca-cli-callbacks.c:1381 #, c-format msgid "Certificate uses:\n" msgstr "Usos del certificado:\n" #: src/ca-cli-callbacks.c:847 #, c-format msgid "* Certification Authority use enabled.\n" msgstr "* Uso como Autoridad de Certificación habilitado.\n" #: src/ca-cli-callbacks.c:849 #, c-format msgid "* Certification Authority use disabled.\n" msgstr "* Uso como Autoridad de Certificación deshabilitado.\n" #: src/ca-cli-callbacks.c:853 #, c-format msgid "* CRL signing use enabled.\n" msgstr "* Uso para firma de CRLs habilitado.\n" #: src/ca-cli-callbacks.c:855 #, c-format msgid "* CRL signing use disabled.\n" msgstr "* Uso para firma de CRLs deshabilitado.\n" #: src/ca-cli-callbacks.c:859 #, c-format msgid "* Digital Signature use enabled.\n" msgstr "* Uso para firma digital habilitado.\n" #: src/ca-cli-callbacks.c:861 #, c-format msgid "* Digital Signature use disabled.\n" msgstr "* Uso para firma digital deshabilitado.\n" #: src/ca-cli-callbacks.c:865 src/ca-cli-callbacks.c:867 #, c-format msgid "* Data Encipherment use enabled.\n" msgstr "Uso para cifrado de datos habilitado.\n" #: src/ca-cli-callbacks.c:871 #, c-format msgid "* Key Encipherment use enabled.\n" msgstr "* Uso para cifrado de claves habilitado.\n" #: src/ca-cli-callbacks.c:873 #, c-format msgid "* Key Encipherment use disabled.\n" msgstr "* Uso para cifrado de claves deshabilitado.\n" #: src/ca-cli-callbacks.c:877 #, c-format msgid "* Non Repudiation use enabled.\n" msgstr "* Uso para no repudio habilitado.\n" #: src/ca-cli-callbacks.c:879 #, c-format msgid "* Non Repudiation use disabled.\n" msgstr "* Uso para no repudio deshabilitado.\n" #: src/ca-cli-callbacks.c:883 #, c-format msgid "* Key Agreement use enabled.\n" msgstr "* Uso para negociación de claves habilitado.\n" #: src/ca-cli-callbacks.c:885 #, c-format msgid "* Key Agreement use disabled.\n" msgstr "* Uso para negociación de claves deshabilitado.\n" #: src/ca-cli-callbacks.c:888 #, c-format msgid "Certificate purposes:\n" msgstr "Finalidades del certificado:\n" #: src/ca-cli-callbacks.c:891 #, c-format msgid "* Email Protection purpose enabled.\n" msgstr "* Finalidad para protección de correo electrónico habilitada.\n" #: src/ca-cli-callbacks.c:893 #, c-format msgid "* Email Protection purpose disabled.\n" msgstr "* Finalidad para protección de correo electrónico deshabilitada.\n" #: src/ca-cli-callbacks.c:897 #, c-format msgid "* Code Signing purpose enabled.\n" msgstr "* Finalidad de firma de código habilitada.\n" #: src/ca-cli-callbacks.c:899 #, c-format msgid "* Code Signing purpose disabled.\n" msgstr "* Finalidad de firma de código deshabilitada.\n" #: src/ca-cli-callbacks.c:903 #, c-format msgid "* TLS Web Client purpose enabled.\n" msgstr "* Finalidad de cliente web TLS habilitada.\n" #: src/ca-cli-callbacks.c:905 #, c-format msgid "* TLS Web Client purpose disabled.\n" msgstr "* Finalidad de cliente web TLS deshabilitada.\n" #: src/ca-cli-callbacks.c:909 #, c-format msgid "* TLS Web Server purpose enabled.\n" msgstr "* Finalidad de servidor web TLS habilitada.\n" #: src/ca-cli-callbacks.c:911 #, c-format msgid "* TLS Web Server purpose disabled.\n" msgstr "* Finalidad de servidor web TLS deshabilitada.\n" #: src/ca-cli-callbacks.c:915 #, c-format msgid "* Time Stamping purpose enabled.\n" msgstr "* Finalidad de sellado de tiempo habilitada.\n" #: src/ca-cli-callbacks.c:917 #, c-format msgid "* Time Stamping purpose disabled.\n" msgstr "* Finalidad de sellado de tiempo deshabilitada.\n" #: src/ca-cli-callbacks.c:921 #, c-format msgid "* OCSP Signing purpose enabled.\n" msgstr "* Finalidad de firma de OCSP habilitada\n" #: src/ca-cli-callbacks.c:923 #, c-format msgid "* OCSP Signing purpose disabled.\n" msgstr "* Finalidad de firma de OCSP deshabilitada.\n" #: src/ca-cli-callbacks.c:927 #, c-format msgid "* Any purpose enabled.\n" msgstr "* Cualquier finalidad habilitada.\n" #: src/ca-cli-callbacks.c:929 #, c-format msgid "* Any purpose disabled.\n" msgstr "* Cualquier finalidad deshabilitada.\n" #: src/ca-cli-callbacks.c:953 #, c-format msgid "You are about to sign the following Certificate Signing Request:\n" msgstr "Se va a proceder a firmar la siguiente solicitud de certificación:\n" #: src/ca-cli-callbacks.c:955 #, c-format msgid "with the certificate corresponding to the next CA:\n" msgstr "con el certificado correspondiente a esta AC:\n" #: src/ca-cli-callbacks.c:958 msgid "" "Introduce number of months before expiration of the new certificate (0 to " "cancel)" msgstr "" "Máximo número de meses antes de la caducidad del nuevo certificado (0 para " "cancelar):" #: src/ca-cli-callbacks.c:984 src/ca-cli-callbacks.c:1072 #, c-format msgid "" "The new certificate will be created with the following uses and purposes:\n" msgstr "" "El nuevo certificado se validará para los siguientes usos y finalidades:\n" #: src/ca-cli-callbacks.c:987 msgid "Do you want to change any property of the new certificate? Yes/[No] " msgstr "¿Desea cambiar alguna propiedad del nuevo certificado? Sí/[No] " #: src/ca-cli-callbacks.c:990 msgid "* Enable Certification Authority use? [Yes]/No " msgstr "* ¿Habilitar uso como Autoridad de certificación? [Sí]/No " #: src/ca-cli-callbacks.c:992 #, c-format msgid "* Certification Authority use disabled by policy\n" msgstr "* Uso como Autoridad de Certificación deshabilitado por política\n" #: src/ca-cli-callbacks.c:996 msgid "* Enable CRL Signing? [Yes]/No " msgstr "* ¿Habilitar uso para firma de CRL? [Sí]/No " #: src/ca-cli-callbacks.c:998 #, c-format msgid "* CRL signing use disabled by policy\n" msgstr "* Uso para firmado de CRL deshabilitado por política\n" #: src/ca-cli-callbacks.c:1002 msgid "* Enable Digital Signature use? [Yes]/No " msgstr "* ¿Habilitar uso para firma digital? [Sí]/No " #: src/ca-cli-callbacks.c:1004 #, c-format msgid "* Digital Signature use disabled by policy\n" msgstr "* Uso para firma digital deshabilitado por política\n" #: src/ca-cli-callbacks.c:1008 msgid "Enable Data Encipherment use? [Yes]/No " msgstr "¿Habilitar uso para cifrado de datos? [Sí]/No " #: src/ca-cli-callbacks.c:1010 #, c-format msgid "* Data Encipherment use disabled by policy\n" msgstr "* Uso para cifrado de datos deshabilitado por política\n" #: src/ca-cli-callbacks.c:1014 msgid "Enable Key Encipherment use? [Yes]/No " msgstr "¿Habilitar uso para cifrado de claves? [Sí]/No " #: src/ca-cli-callbacks.c:1016 #, c-format msgid "* Key Encipherment use disabled by policy\n" msgstr "* Uso para cifrado de claves deshabilitado por política\n" #: src/ca-cli-callbacks.c:1020 msgid "Enable Non Repudiation use? [Yes]/No " msgstr "¿Habilitar uso para no repudio? [Sí]/No " #: src/ca-cli-callbacks.c:1022 #, c-format msgid "* Non Repudiation use disabled by policy\n" msgstr "* Uso para no repudio deshabilitado por política\n" #: src/ca-cli-callbacks.c:1026 msgid "Enable Key Agreement use? [Yes]/No " msgstr "¿Habilitar uso para negociación de claves? [Sí]/No " #: src/ca-cli-callbacks.c:1028 #, c-format msgid "* Key Agreement use disabled by policy\n" msgstr "Uso para negociación de claves deshabilitado por politica\n" #: src/ca-cli-callbacks.c:1032 msgid "Enable Email Protection purpose? [Yes]/No " msgstr "¿Habilitar finalidad de protección de correo electrónico? [Sí]/No " #: src/ca-cli-callbacks.c:1034 #, c-format msgid "* Email Protection purpose disabled by policy\n" msgstr "" "* Finalidad de protección de correo electrónico deshabilitada por política.\n" #: src/ca-cli-callbacks.c:1038 msgid "Enable Code Signing purpose? [Yes]/No " msgstr "¿Habilitar finalidad de firma de código? [Sí]/No " #: src/ca-cli-callbacks.c:1040 #, c-format msgid "* Code Signing purpose disabled by policy\n" msgstr "* Finalidad de firma de código deshabilitada por política\n" #: src/ca-cli-callbacks.c:1044 msgid "Enable TLS Web Client purpose? [Yes]/No " msgstr "¿Habilitar finalidad de cliente web TLS? [Sí]/No " #: src/ca-cli-callbacks.c:1046 #, c-format msgid "* TLS Web Client purpose disabled by policy\n" msgstr "* Finalidad de cliente web TLS deshabilitada por política\n" #: src/ca-cli-callbacks.c:1050 msgid "Enable TLS Web Server purpose? [Yes]/No " msgstr "¿Habilitar finalidad de servidor web TLS? [Sí]/No " #: src/ca-cli-callbacks.c:1052 #, c-format msgid "* TLS Web Server purpose disabled by policy\n" msgstr "* Finalidad de servidor web TLS deshabilitada por política\n" #: src/ca-cli-callbacks.c:1056 msgid "Enable Time Stamping purpose? [Yes]/No " msgstr "¿Habilitar finalidad de sellado de tiempo? [Sí]/No " #: src/ca-cli-callbacks.c:1058 #, c-format msgid "* Time Stamping purpose disabled by policy\n" msgstr "* Finalidad de sellado de tiempo deshabilitada por política\n" #: src/ca-cli-callbacks.c:1062 msgid "Enable OCSP Signing purpose? [Yes]/No " msgstr "¿Habilitar finalidad para firma de OCSP? [Sí]/No " #: src/ca-cli-callbacks.c:1063 #, c-format msgid "* OCSP Signing purpose disabled by policy\n" msgstr "* Finalidad para firma de OCSP deshabilitada por política\n" #: src/ca-cli-callbacks.c:1067 msgid "Enable any purpose? [Yes]/No " msgstr "¿Habilitar uso para cualquier finalidad? [Sí]/No " #: src/ca-cli-callbacks.c:1069 #, c-format msgid "* Any purpose disabled by policy\n" msgstr "* Uso para cualquier finalidad deshabilitado por política.\n" #: src/ca-cli-callbacks.c:1077 msgid "" "All the mandatory data for the certificate generation has been gathered." msgstr "" "Ya se cuenta con todos los datos necesarios para la generación del " "certificado." #: src/ca-cli-callbacks.c:1077 msgid "Do you want to proceed with the signing? [Yes]/No " msgstr "¿Desea continuar con la firma y generación del certificado? [Sí]/No " #: src/ca-cli-callbacks.c:1083 #, c-format msgid "Certificate signed.\n" msgstr "Certificado firmado.\n" #: src/ca-cli-callbacks.c:1105 msgid "This Certificate Signing Request will be deleted." msgstr "Se borrará esta solicitud de certificación." #: src/ca-cli-callbacks.c:1105 msgid "This operation cannot be undone. Are you sure? Yes/[No] " msgstr "Esta operación no puede deshacerse. ¿Está seguro? Sí/[No] " #: src/ca-cli-callbacks.c:1111 #, c-format msgid "Certificate Signing Request deleted.\n" msgstr "Solicitud de certificación borrada.\n" #: src/ca-cli-callbacks.c:1136 #, c-format msgid "CRL generated successfully into file '%s'\n" msgstr "CRL generada con éxito y guardada en fichero '%s'\n" #: src/ca-cli-callbacks.c:1153 msgid "The bit-length of the prime number must be whole multiple of 1024" msgstr "La longitud en bits del número primo debe ser múltiplo entero de 1024" #: src/ca-cli-callbacks.c:1162 #, c-format msgid "Diffie-Hellman parameters created and saved successfully in file '%s'\n" msgstr "" "Parámetros Diffie-Hellman creados y guardados correctamente en fichero '%s'\n" #: src/ca-cli-callbacks.c:1174 msgid "Currently, the database is not password-protected." msgstr "En estos momentos, la base de datos no está protegida con clave." #: src/ca-cli-callbacks.c:1174 msgid "Do you want to password protect it? [Yes]/No " msgstr "¿Desea protegerlo con contraseña? [Sí]/No " #: src/ca-cli-callbacks.c:1175 msgid "" "OK. You need to supply a password for protecting the private keys in the\n" "database, so nobody else but authorized people can use them. This password\n" "will be asked any time gnoMint will make use of any private key in database." msgstr "" "Es necesario proporcionar una contraseña para proteger las claves privadas \n" "de la base de datos, de modo que sólo las personas autorizadas puedan \n" "hacer uso de ellas. Esta contraseña será solicitada siempre que gnoMint\n" "requiera emplear cualquier clave privada de la base de datos." #: src/ca-cli-callbacks.c:1178 msgid "Insert password:" msgstr "Introduzca contraseña:" #: src/ca-cli-callbacks.c:1178 msgid "Insert password (confirm):" msgstr "Introduzca contraseña (confirmación):" #: src/ca-cli-callbacks.c:1179 src/ca-cli-callbacks.c:1249 msgid "The introduced passwords are distinct." msgstr "Las contraseñas introducidas son distintas." #: src/ca-cli-callbacks.c:1190 #, c-format msgid "Password established successfully.\n" msgstr "Contraseña establecida con éxito.\n" #: src/ca-cli-callbacks.c:1197 #, c-format msgid "Nothing done.\n" msgstr "No se ha hecho nada.\n" #: src/ca-cli-callbacks.c:1201 msgid "Currently, the database IS password-protected." msgstr "En estos momentos, la base de datos ESTÁ protegida con contraseña." #: src/ca-cli-callbacks.c:1201 msgid "Do you want to remove this password protection? Yes/[No] " msgstr "¿Desea eliminar esta protección con contraseña? Sí/[No] " #: src/ca-cli-callbacks.c:1205 #, c-format msgid "" "For removing the password-protection, the current database password\n" "must be supplied.\n" msgstr "" "Para eliminar la protección mediante clave, debe proporcionar la \n" "contraseña actual.\n" #: src/ca-cli-callbacks.c:1206 src/ca-cli-callbacks.c:1234 msgid "Please, insert the current database password (Empty to cancel): " msgstr "" "Introduzca la contrase_ña actual de la base de datos (Vacía para cancelar): " #: src/ca-cli-callbacks.c:1213 src/ca-cli-callbacks.c:1241 msgid "" "The current password you have entered\n" "doesn't match with the actual current database password." msgstr "" "La contraseña actual que ha introducido\n" "no coincide con la contraseña real de la base de datos." #: src/ca-cli-callbacks.c:1218 msgid "" "Error while removing database password. \n" "The operation was cancelled." msgstr "" "Ocurrió un error al eliminar la contraseña de la base de \n" "datos. Se canceló la operación." #: src/ca-cli-callbacks.c:1223 #, c-format msgid "Password removed successfully.\n" msgstr "Contraseña eliminada con éxito.\n" #: src/ca-cli-callbacks.c:1233 #, c-format msgid "" "You must supply the current database password before changing the password.\n" msgstr "" "Debe proporcionar la contraseña actual de la base de datos antes de " "cambiarla.\n" #: src/ca-cli-callbacks.c:1245 msgid "" "OK. Now you must supply a new password for protecting the private keys in " "the\n" "database, so nobody else but authorized people can use them. This password\n" "will be asked any time gnoMint will make use of any private key in database." msgstr "" "Es necesario proporcionar una nueva contraseña para proteger las\n" "claves privadas de la base de datos, para que sólo las personas \n" "autorizadas puedan hacer uso de ellas. Esta contraseña será \n" "solicitada siempre que gnoMint vaya a hacer uso de cualquier\n" "clave privada de la base de datos." #: src/ca-cli-callbacks.c:1248 msgid "Insert new password:" msgstr "Introduzca la nueva contraseña:" #: src/ca-cli-callbacks.c:1248 msgid "Insert new password (confirm):" msgstr "Introduzca contraseña (confirmación):" #: src/ca-cli-callbacks.c:1257 msgid "" "Error while changing database password. \n" "The operation was cancelled." msgstr "" "Ocurrió un error al cambiar la contraseña de la base de datos. \n" "Se canceló la operación." #: src/ca-cli-callbacks.c:1263 #, c-format msgid "Password changed successfully.\n" msgstr "Contraseña cambiada con éxito.\n" #: src/ca-cli-callbacks.c:1281 msgid "Problem when importing the given file." msgstr "Hubo problemas al importar el fichero indicado." #: src/ca-cli-callbacks.c:1284 #, c-format msgid "File imported successfully.\n" msgstr "Fichero importado con éxito.\n" #: src/ca-cli-callbacks.c:1300 #, c-format msgid "Directory imported successfully.\n" msgstr "Directorio importado con éxito.\n" #: src/ca-cli-callbacks.c:1343 #, c-format msgid "Certificate:\n" msgstr "Certificado:\n" #: src/ca-cli-callbacks.c:1347 #, c-format msgid "\tSerial number: %s\n" msgstr "\tNº de serie: %s\n" #: src/ca-cli-callbacks.c:1351 src/ca-cli-callbacks.c:1357 #: src/ca-cli-callbacks.c:1412 #, c-format msgid "\tDistinguished Name: %s\n" msgstr "\tNombre distintivo: %s\n" #: src/ca-cli-callbacks.c:1351 src/ca-cli-callbacks.c:1352 #: src/ca-cli-callbacks.c:1357 src/ca-cli-callbacks.c:1358 msgid "None." msgstr "Ninguno." #: src/ca-cli-callbacks.c:1352 src/ca-cli-callbacks.c:1358 #: src/ca-cli-callbacks.c:1416 #, c-format msgid "\tUnique ID: %s\n" msgstr "\tIdentificador único: %s\n" #: src/ca-cli-callbacks.c:1356 #, c-format msgid "Issuer:\n" msgstr "Emisor:\n" #: src/ca-cli-callbacks.c:1365 src/ca-cli-callbacks.c:1372 #, c-format msgid "" "\t (warning: this 32-bit build cannot tell a real post-2038 date from an " "overflow; this value may be inaccurate)\n" msgstr "" #: src/ca-cli-callbacks.c:1375 #, c-format msgid "Fingerprints:\n" msgstr "Huellas digitales:\n" #: src/ca-cli-callbacks.c:1376 #, c-format msgid "\tSHA1 fingerprint: %s\n" msgstr "\tHuella digital SHA1: %s\n" #: src/ca-cli-callbacks.c:1377 #, c-format msgid "\tMD5 fingerprint: %s\n" msgstr "\tHuella digital MD5: %s\n" #: src/ca-cli-callbacks.c:1378 #, c-format msgid "\tSHA256 fingerprint: %s\n" msgstr "\tHuella digital SHA256: %s\n" #: src/ca-cli-callbacks.c:1409 #, c-format msgid "Certificate Signing Request:\n" msgstr "Solicitud de certificación:\n" #: src/ca-cli-callbacks.c:1486 msgid "Generated certs inherit Country from CA " msgstr "" "Los certificados generados heredan país de la AC " #: src/ca-cli-callbacks.c:1487 msgid "Generated certs inherit State from CA " msgstr "" "Los certificados generados heredan estado/provincia de la " "AC " #: src/ca-cli-callbacks.c:1488 msgid "Generated certs inherit Locality from CA " msgstr "" "Los certificados generados heredan localidad o ciudad de la " "AC " #: src/ca-cli-callbacks.c:1489 msgid "Generated certs inherit Organization from CA " msgstr "" "Los certificados generados heredan Organización de la " "AC " #: src/ca-cli-callbacks.c:1490 msgid "Generated certs inherit Organizational Unit from CA " msgstr "" "Los certificados generados heredan unidad organizacional de la " "AC " #: src/ca-cli-callbacks.c:1491 msgid "Country in generated certs must be the same than in CA " msgstr "" "El país de los certificados generados debe coincidir con la AC " #: src/ca-cli-callbacks.c:1492 msgid "State in generated certs must be the same than in CA " msgstr "" "Estado o provincia de certif. generados debe coincidir con la " "AC " #: src/ca-cli-callbacks.c:1493 msgid "Locality in generated certs must be the same than in CA " msgstr "" "Localidad o ciudad de certif. generados debe coincidir con la AC " #: src/ca-cli-callbacks.c:1494 msgid "Organization in generated certs must be the same than in CA " msgstr "" "Organización de certif. generados debe coincidir con la de la AC " #: src/ca-cli-callbacks.c:1495 msgid "Organizational Unit in generated certs must be the same than in CA" msgstr "Unidad organizativa de certif. debe coincidir con la de la AC" #: src/ca-cli-callbacks.c:1496 msgid "Maximum number of hours between CRL updates " msgstr "" "Número máximo de horas entre actualizaciones de CRLs " #: src/ca-cli-callbacks.c:1497 msgid "CRL distribution point (URL where CRL is published) " msgstr "Punto de distribución de CRL (URL donde se publica la CRL)" #: src/ca-cli-callbacks.c:1498 msgid "Maximum number of months before expiration of new certs " msgstr "" "Máximo nº de meses antes de caducidad de nuevos certificados " #: src/ca-cli-callbacks.c:1499 msgid "CA use enabled in generated certs " msgstr "" "Habilitar uso como AC en certificados " "generados " #: src/ca-cli-callbacks.c:1500 msgid "CRL Sign use enabled in generated certs " msgstr "" "Habilitar uso para firma de CRLs en certificados " "generados " #: src/ca-cli-callbacks.c:1501 msgid "Non reputation use enabled in generated certs " msgstr "" "Habilitar uso para no repudio en certificados generados " #: src/ca-cli-callbacks.c:1502 msgid "Digital signature use enabled in generated certs " msgstr "" "Habilitar uso para firma digital en certificados generados " #: src/ca-cli-callbacks.c:1503 msgid "Key encipherment use enabled in generated certs " msgstr "" "Habilitar uso para cifrado de claves en certificados " "generados " #: src/ca-cli-callbacks.c:1504 msgid "Key agreement use enabled in generated certs " msgstr "" "Habilitar uso para negociación de claves en certificados " "generados " #: src/ca-cli-callbacks.c:1505 msgid "Data encipherment use enabled in generated certs " msgstr "" "Habilitar uso para cifrado de datos en certificados " "generados " #: src/ca-cli-callbacks.c:1506 msgid "TLS web server purpose enabled in generated certs " msgstr "" "Habilitar finalidad de servidor web TLS para certific. " "generados " #: src/ca-cli-callbacks.c:1507 msgid "TLS web client purpose enabled in generated certs " msgstr "" "Habilitar finalidad para cliente web TLS en certific. " "generados " #: src/ca-cli-callbacks.c:1508 msgid "Time stamping purpose enabled in generated certs " msgstr "" "Habilitar finalidad para sellado de tiempo en certific. " "generados " #: src/ca-cli-callbacks.c:1509 msgid "Code signing server purpose enabled in generated certs " msgstr "" "Habilitar finalidad de firma de código en certificados generados " #: src/ca-cli-callbacks.c:1510 msgid "Email protection purpose enabled in generated certs " msgstr "" "Habilitar finalidad para protección de correo-e en cert. " "generados " #: src/ca-cli-callbacks.c:1511 msgid "OCSP signing purpose enabled in generated certs " msgstr "" "Habilitar finalidad de firma de OCSP en certificados " "generados " #: src/ca-cli-callbacks.c:1512 msgid "Any purpose enabled in generated certs " msgstr "" "Habilitar cualquier finalidad en certificados " "generados " #: src/ca-cli-callbacks.c:1526 #, c-format msgid "Showing policies of the following certificate:\n" msgstr "Mostrando políticas del siguiente certificado:\n" #: src/ca-cli-callbacks.c:1528 #, c-format msgid "" "\n" "Policies:\n" msgstr "" "\n" "Políticas:\n" #: src/ca-cli-callbacks.c:1530 #, c-format msgid "Id.\tDescription\t\t\t\t\t\t\t\tValue\n" msgstr "Id.\tDescripción\t\t\t\t\t\t\t\tValor\n" #: src/ca-cli-callbacks.c:1556 msgid "The given policy id is not valid" msgstr "El identificador de política proporcionado no es válido" #: src/ca-cli-callbacks.c:1568 #, c-format msgid "" "You are about to assign to the policy\n" "'%s' the new value '%s'." msgstr "" "Se va a asignar a la política\n" "'%s' el nuevo valor '%s'." #: src/ca-cli-callbacks.c:1572 src/ca-cli-callbacks.c:1616 msgid "Are you sure? Yes/[No] : " msgstr "¿Está seguro? Sí/[No] : " #: src/ca-cli-callbacks.c:1577 #, c-format msgid "Policy set correctly to '%s'.\n" msgstr "Política establecida correctamente a '%s'.\n" #: src/ca-cli-callbacks.c:1591 #, c-format msgid "gnoMint-cli current preferences:\n" msgstr "Preferencias actuales de gnoMint-cli:\n" #: src/ca-cli-callbacks.c:1593 #, c-format msgid "Id.\tName\t\t\tValue\n" msgstr "Id.\tNombre\t\t\tValor\n" #: src/ca-cli-callbacks.c:1594 #, c-format msgid "0\tGnome keyring support\t%d\n" msgstr "0\tSoporte de gnome-keyring\t%d\n" #: src/ca-cli-callbacks.c:1606 msgid "The given preference id is not valid" msgstr "El identificador de preferencia proporcionado no es válido" #: src/ca-cli-callbacks.c:1612 #, c-format msgid "" "You are about to assign to the preference 'Gnome keyring support' the new " "value '%d'." msgstr "" "Va a asignar a la preferencia 'Soporte de gnome-keyring' el nuevo valor '%d'." #: src/ca-cli-callbacks.c:1634 #, c-format msgid "" "%s version %s\n" "%s\n" msgstr "" "%s versión %s\n" "%s\n" #: src/ca-cli-callbacks.c:1635 #, c-format msgid "" "\n" "Authors:\n" "%s\n" "\n" msgstr "" "\n" "Autores:\n" "%s\n" "\n" #: src/ca-cli-callbacks.c:1636 src/ca-cli-callbacks.c:1637 src/main.c:742 msgid "translator-credits" msgstr "" "David Marín Carreño \n" "\n" "Launchpad Contributions:\n" " David Marín https://launchpad.net/~davefx\n" " DiegoJ https://launchpad.net/~diegojromerolopez\n" " Sergio Oller https://launchpad.net/~zeehio\n" " Victor Herrero https://launchpad.net/~victorhera" #: src/ca-cli-callbacks.c:1637 #, c-format msgid "" "Translators:\n" "%s\n" msgstr "" "Traductores:\n" "%s\n" #: src/ca-cli-callbacks.c:1644 msgid "" "THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY\n" "APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT\n" "HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY\n" "OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,\n" "THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n" "PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM\n" "IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF\n" "ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n" "\n" "For more information about warranty, see section 15 onwards of the GNU\n" "General Public License. You should have received a copy of the GNU General\n" "Public License along with this program. If not, see\n" ".\n" "\n" msgstr "" "NO HAY GARANTÍA PARA ESTE PROGRAMA, HASTA EL EXTREMO PERMITIDO POR LA\n" "LEY APLICABLE. A NO SER QUE SE INDIQUE LO CONTRARIO, LOS PROPIETARIOS DEL\n" "COPYRIGHT, U OTRAS TERCERAS PARTES PROPORCIONAN EL PROGRAMA \"TAL CUAL\", \n" "SIN GARANTÍAS DE NINGÚN TIPO, EXPRESAS O IMPLÍCITAS. ESTO INCLUYE PERO NO\n" "SE LIMITA A LAS GARANTÍAS IMPLÍCITAS DE COMERCIABILIDAD O IDONEIDAD PARA UN\n" "FIN DETERMINADO. TODO RIESGO DERIVADO DE LA CALIDAD O PRESTACIONES\n" "DEL PROGRAMA CORRE DE SU PARTE. SI EL PROGRAMA FUERA DEFECTUOSO, USTED\n" "DEBERÁ ASUMIR LOS COSTES DE CUALQUIER OPERACIÓN DE SOPORTE TÉCNICO,\n" "REPARACIÓN O CORRECCIÓN.\n" "\n" "Para más información sobre la garantía, véanse las secciones 15 y " "siguientes\n" "de la Licencia Pública General GNU. Debería haber recibido una copia de la\n" "Licencia Pública General de GNU junto con este programa. Si no es así, " "veáse\n" ".\n" "\n" #: src/ca-cli-callbacks.c:1662 msgid "" "This program is free software: you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation, either version 3 of the License, or\n" "(at your option) any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program. If not, see .\n" "\n" msgstr "" "Este programa es software libre; puede distribuirlo y/o modificarlo \n" "según los términos de la Licencia Pública General GNU (GNU GPL), \n" "según fue publicada por la Free Software Foundation; en la versión 3\n" "de la Licencia, o (a su elección) cualquier versión posterior. \n" "\n" "Este programa se distribuye con la esperanza de que sea útil, \n" "pero SIN GARANTÍA DE NINGÚN TIPO; sin ninguna garantía implícita\n" "de estar APTO PARA LA COMERCIALIZACIÓN o de IDONEIDAD PARA ALGÚN\n" "FIN DETERMINADO. Para más detalles, vea la Licencia Pública General\n" "GNU. \n" "\n" "Debería haber recibido una copia de la Licencia Pública General GNU junto\n" "con este programa; si no es así, visite .\n" "\n" #: src/ca-cli-callbacks.c:1677 #, fuzzy, c-format msgid "%s version %s \"%s\"\n" msgstr "" "%s versión %s\n" "%s\n" #: src/ca-cli-callbacks.c:1686 #, c-format msgid "Available commands:\n" msgstr "Órdenes disponibles:\n" #: src/ca-cli-callbacks.c:1687 #, c-format msgid "===================\n" msgstr "====================\n" #: src/ca-cli-callbacks.c:1697 #, c-format msgid "Exiting gnomint-cli...\n" msgstr "Saliendo de gnomint-cli...\n" #: src/ca-cli-callbacks.c:1738 msgid "The given CA id is not valid" msgstr "El identificador de AC proporcionado no es válido" #: src/ca-cli-callbacks.c:1750 msgid "Certificate type must be 'web' or 'email'" msgstr "El tipo de certificado debe ser 'web' o 'email'" #: src/ca-cli-callbacks.c:1756 msgid "Server name cannot be empty" msgstr "El nombre del servidor no puede estar vacío" #: src/ca-cli-callbacks.c:1760 #, c-format msgid "Creating %s certificate for: %s\n" msgstr "Creando certificado de %s para: %s\n" #: src/ca-cli-callbacks.c:1761 msgid "web server" msgstr "servidor web" #: src/ca-cli-callbacks.c:1761 msgid "email server" msgstr "servidor de correo" #: src/ca-cli-callbacks.c:1837 #, c-format msgid "Error: Key generation failed: %s\n" msgstr "Error: Fallo en la generación de claves: %s\n" #: src/ca-cli-callbacks.c:1845 #, c-format msgid "Error: CSR generation failed: %s\n" msgstr "Error: Fallo en la generación de CSR: %s\n" #: src/ca-cli-callbacks.c:1854 #, c-format msgid "Error: Failed to parse generated CSR\n" msgstr "Error: No se pudo analizar la solicitud generada\n" #: src/ca-cli-callbacks.c:1865 #, c-format msgid "Error: Failed to save CSR: %s\n" msgstr "Error: No se pudo guardar la solicitud: %s\n" #: src/ca-cli-callbacks.c:1879 msgid "CSR created with ID: %" msgstr "CSR creada con ID: %" #: src/ca-cli-callbacks.c:1903 #, c-format msgid "Error: Failed to sign certificate: %s\n" msgstr "Error: No se pudo firmar el certificado: %s\n" #: src/ca-cli-callbacks.c:1910 #, c-format msgid "Certificate generated successfully for: %s\n" msgstr "Certificado generado con éxito para: %s\n" #: src/ca-cli-callbacks.c:1911 #, c-format msgid "Certificate type: %s\n" msgstr "Tipo de certificado: %s\n" #: src/ca-cli-callbacks.c:1911 msgid "Web Server" msgstr "Servidor Web" #: src/ca-cli-callbacks.c:1911 msgid "Email Server" msgstr "Servidor de correo" #: src/ca-cli-callbacks.c:1925 msgid "Usage: renewcert " msgstr "Uso: renewcert " #: src/ca-cli-callbacks.c:1930 src/ca-cli-callbacks.c:1968 msgid "The given certificate id is not valid" msgstr "El identificador de certificado proporcionado no es válido" #: src/ca-cli-callbacks.c:1941 msgid "" "gnoMint will issue a new certificate with the same subject and SAN as this " "one, signed by the same CA, with a fresh keypair. The old certificate stays " "in place." msgstr "" "gnoMint emitirá un nuevo certificado con el mismo titular y SAN que este, " "firmado por la misma AC, con un par de claves nuevo. El certificado antiguo " "permanecerá en la base de datos." #: src/ca-cli-callbacks.c:1944 msgid "Renew? [Yes]/No " msgstr "¿Renovar? [Sí]/No " #: src/ca-cli-callbacks.c:1955 msgid "Certificate renewed. New certificate id: %" msgstr "Certificado renovado. Nuevo id. de certificado: %" #: src/ca-cli-callbacks.c:1963 msgid "Usage: exportchain " msgstr "Uso: exportchain " #: src/ca-cli-callbacks.c:1974 msgid "Cannot build chain PEM for that certificate." msgstr "No se pudo construir la cadena PEM para ese certificado." #: src/ca-cli-callbacks.c:1979 msgid "Cannot write chain file." msgstr "No se pudo escribir el fichero de cadena." #: src/ca-cli-callbacks.c:1985 #, c-format msgid "Full chain (leaf → root) written to %s\n" msgstr "Cadena completa (hoja → raíz) escrita en %s\n" #: src/ca-cli-callbacks.c:1992 msgid "Usage: revokemany [cert-id ...]" msgstr "Uso: revokemany [id de certificado ...]" #: src/ca-cli-callbacks.c:2008 #, c-format msgid "%d certificate revoked.\n" msgid_plural "%d certificates revoked.\n" msgstr[0] "%d certificado revocado.\n" msgstr[1] "%d certificados revocados.\n" #: src/ca-cli-callbacks.c:2016 msgid "Usage: deletemany [csr-id ...]" msgstr "Uso: deletemany [id. de csr ...]" #: src/ca-cli-callbacks.c:2032 #, c-format msgid "%d CSR deleted.\n" msgid_plural "%d CSRs deleted.\n" msgstr[0] "%d solicitud eliminada.\n" msgstr[1] "%d solicitudes eliminadas.\n" #: src/ca-cli-callbacks.c:2092 msgid "Usage: search " msgstr "Uso: search " #: src/ca-cli-callbacks.c:2099 #, c-format msgid "Matches (id\tserial\tsubject):\n" msgstr "Coincidencias (id\tserie\tasunto):\n" #: src/ca-cli-callbacks.c:2102 #, c-format msgid "%d match.\n" msgid_plural "%d matches.\n" msgstr[0] "%d coincidencia.\n" msgstr[1] "%d coincidencias.\n" #: src/ca-cli-callbacks.c:2126 #, c-format msgid "'%s' is not a certificate id in this database." msgstr "'%s' no es un identificador de certificado en esta base de datos." #: src/ca-cli-callbacks.c:2134 #, c-format msgid "Cannot read PEM for cert id %s." msgstr "No se pudo leer el PEM del certificado con id. %s." #: src/ca-cli-callbacks.c:2152 msgid "Usage: diff " msgstr "Uso: diff " #: src/ca-cli-callbacks.c:2168 msgid "Field" msgstr "Campo" #: src/ca-cli-callbacks.c:2181 #, c-format msgid "" "\n" "%d field differs.\n" msgid_plural "" "\n" "%d fields differ.\n" msgstr[0] "" "\n" "%d campo difiere.\n" msgstr[1] "" "\n" "%d campos difieren.\n" #: src/ca_creation.c:55 src/csr_creation.c:57 msgid "Generating new RSA key pair" msgstr "Generando nuevo par de claves RSA" #: src/ca_creation.c:64 src/ca_creation.c:88 src/ca_creation.c:109 #: src/ca_creation.c:128 src/csr_creation.c:66 src/csr_creation.c:87 #: src/csr_creation.c:104 src/csr_creation.c:121 msgid "Key generation failed" msgstr "Error en generación de claves" #: src/ca_creation.c:78 src/csr_creation.c:79 msgid "Generating new DSA key pair" msgstr "Generando nuevo par de claves DSA" #: src/ca_creation.c:101 src/csr_creation.c:97 msgid "Generating new ECDSA key pair" msgstr "Generando nuevo par de claves ECDSA" #: src/ca_creation.c:120 src/csr_creation.c:114 msgid "Generating new Ed25519 key pair" msgstr "Generando nuevo par de claves Ed25519" #: src/ca_creation.c:139 msgid "Generating self-signed CA-Root cert" msgstr "Generando el certificado auto-firmado raíz de la AC" #: src/ca_creation.c:147 msgid "Certificate generation failed" msgstr "Error en generación del certificado" #: src/ca_creation.c:159 msgid "Creating CA database" msgstr "Creando base de datos de la AC" #: src/ca_creation.c:168 msgid "CA database creation failed" msgstr "Error al crear base de datos de la AC" #: src/ca_creation.c:180 msgid "CA generated successfully" msgstr "AC generada con éxito" #: src/ca_file.c:207 #, c-format msgid "Error opening filename '%s'" msgstr "Error al abrir fichero '%s'" #: src/ca_file.c:310 msgid "" "The selected database has been created with a newer version of gnoMint than " "the currently installed." msgstr "" "La base de datos seleccionada fue creada mediante una versión de gnoMint más " "reciente que la que se está ejecutando." #: src/ca_file.c:1221 msgid "Cannot find last assigned serial number" msgstr "No se pudo encontrar el último número de serie asignado" #: src/ca_file.c:1410 msgid "Cannot find parent CA in database" msgstr "No se pudo encontrar la AC padre en la base de datos" #: src/ca_file.c:1600 msgid "" "This certificate already exists in the database: cannot insert it twice." msgstr "" "Este certificado ya existe en la base de datos: no se puede insertar de " "nuevo." #: src/ca_file.c:2044 msgid "" "The given file contains a valid private key. However, it has not been " "imported to the database because it doesn't match any key-less certificate " "or certificate request in the database." msgstr "" "El fichero indicado contiene una clave privada válida. Sin embargo, ésta no " "ha sido importada a la base de datos porque no encaja con ninguno de los " "certificados o solicitudes de certificación existentes sin clave privada." #: src/ca_file.c:2047 msgid "" "The given file contains a valid private key. However, it has not been " "imported to the database because it doesn't match any key-less certificate " "in the database." msgstr "" "El fichero indicado contiene una clave privada válida. Sin embargo, ésta no " "ha sido importada a la base de datos porque no encaja con ninguno de los " "certificadosexistentes sin clave privada." #: src/certificate_properties.c:151 msgid "" "This 32-bit build cannot represent dates after 2038-01-19, so it cannot " "distinguish a genuine date from a later one that overflowed. This value may " "be inaccurate." msgstr "" #: src/certificate_properties.c:383 msgid "Unknown" msgstr "Desconocido" #: src/certificate_properties.c:453 src/tls.c:1478 msgid "Certificate signing" msgstr "Firma de certificados" #: src/certificate_properties.c:457 msgid "Key encipherment only" msgstr "Clave de sólo cifrado" #: src/certificate_properties.c:459 msgid "Key decipherment only" msgstr "Clave de sólo descifrado" #: src/certificate_properties.c:472 msgid "Version" msgstr "Versión" #: src/certificate_properties.c:507 msgid "Serial Number" msgstr "Nº de serie" #: src/certificate_properties.c:522 src/certificate_properties.c:1262 msgid "Signature" msgstr "Firma" #: src/certificate_properties.c:525 src/certificate_properties.c:676 #: src/certificate_properties.c:679 src/certificate_properties.c:1228 msgid "Algorithm" msgstr "Algoritmo" #: src/certificate_properties.c:529 src/certificate_properties.c:686 #: src/certificate_properties.c:726 src/certificate_properties.c:763 #: src/certificate_properties.c:1232 msgid "Parameters" msgstr "Parámetros" #: src/certificate_properties.c:529 src/certificate_properties.c:686 #: src/certificate_properties.c:763 src/certificate_properties.c:767 #: src/certificate_properties.c:781 src/certificate_properties.c:790 #: src/certificate_properties.c:1232 msgid "(unknown)" msgstr "(desconocido)" #: src/certificate_properties.c:563 msgid "Issuer" msgstr "Emisor" #: src/certificate_properties.c:598 msgid "Validity" msgstr "Validez" #: src/certificate_properties.c:603 msgid "Not Before" msgstr "No antes de" #: src/certificate_properties.c:610 msgid "Not After" msgstr "No después de" #: src/certificate_properties.c:616 msgid "Note" msgstr "" #: src/certificate_properties.c:617 msgid "" "This 32-bit build cannot represent dates after 2038-01-19, so a value marked " "⚠ may be a later date that overflowed and is inaccurate." msgstr "" #: src/certificate_properties.c:673 msgid "Subject Public Key Info" msgstr "Datos de clave pública de titular" #: src/certificate_properties.c:690 msgid "RSA PublicKey" msgstr "Clave pública RSA" #: src/certificate_properties.c:702 msgid "Modulus" msgstr "Módulo" #: src/certificate_properties.c:710 msgid "Public Exponent" msgstr "Exponente público" #: src/certificate_properties.c:755 msgid "DSA PublicKey" msgstr "Clave pública DSA" #: src/certificate_properties.c:767 msgid "Subject Public Key" msgstr "Clave pública de titular" #: src/certificate_properties.c:781 msgid "Issuer Unique ID" msgstr "Id. único de emisor" #: src/certificate_properties.c:790 msgid "Subject Unique ID" msgstr "Id. único de titular" #: src/certificate_properties.c:813 src/certificate_properties.c:836 #: src/certificate_properties.c:945 src/certificate_properties.c:1058 #: src/certificate_properties.c:1085 src/certificate_properties.c:1124 #: src/certificate_properties.c:1182 src/certificate_properties.c:1457 #: src/san_manager.c:399 msgid "Value" msgstr "Valor" #: src/certificate_properties.c:875 src/certificate_properties.c:1018 msgid "DNS Name" msgstr "Nombre DNS" #: src/certificate_properties.c:882 src/certificate_properties.c:1025 msgid "RFC822 Name" msgstr "Nombre RFC822" #: src/certificate_properties.c:905 src/certificate_properties.c:919 #: src/certificate_properties.c:927 msgid "IP" msgstr "IP" #: src/certificate_properties.c:936 src/certificate_properties.c:1049 msgid "Directory Name" msgstr "Nombre de directorio" #: src/certificate_properties.c:973 src/certificate_properties.c:1164 msgid "TRUE" msgstr "VERDADERO" #: src/certificate_properties.c:973 src/certificate_properties.c:1164 msgid "FALSE" msgstr "FALSO" #: src/certificate_properties.c:977 msgid "CA" msgstr "AC" #: src/certificate_properties.c:981 msgid "Path Length Constraint" msgstr "Restricción de longitud de ruta" #: src/certificate_properties.c:1154 msgid "Extensions" msgstr "Extensiones" #: src/certificate_properties.c:1166 msgid "Critical" msgstr "Es crítica" #: src/certificate_properties.c:1199 msgid "Certificate" msgstr "Certificado" #: src/certificate_properties.c:1225 msgid "Signature Algorithm" msgstr "Algoritmo de firma" #: src/certificate_properties.c:1446 msgid "Name" msgstr "Nombre" #: src/certificate_properties.c:1477 src/tls.c:1494 msgid "TLS WWW Server" msgstr "Servidor TLS WWW" #: src/certificate_properties.c:1478 msgid "TLS WWW Client" msgstr "Cliente TLS WWW" #: src/certificate_properties.c:1484 msgid "Subject Directory Attributes" msgstr "Atributos de directorio de titular" #: src/certificate_properties.c:1485 msgid "Subject Key Identifier" msgstr "Clave identificadora de titular" #: src/certificate_properties.c:1486 msgid "Key Usage" msgstr "Uso de clave" #: src/certificate_properties.c:1487 msgid "Private Key Usage Period" msgstr "Período de uso de clave privada" #: src/certificate_properties.c:1489 msgid "Basic Constraints" msgstr "Restricciones básicas" #: src/certificate_properties.c:1490 msgid "Name Constraints" msgstr "Restricciones de nombre" #: src/certificate_properties.c:1491 msgid "CRL Distribution Points" msgstr "Puntos de distribución de CRLs" #: src/certificate_properties.c:1492 msgid "Certificate Policies" msgstr "Políticas de certificado" #: src/certificate_properties.c:1493 msgid "Policy Mappings" msgstr "Relación de políticas" #: src/certificate_properties.c:1494 msgid "Authority Key Identifier" msgstr "Clave identificadora de autoridad" #: src/certificate_properties.c:1495 msgid "Policy Constraints" msgstr "Restricciones de política" #: src/certificate_properties.c:1496 msgid "Extended Key Usage" msgstr "Uso extendido de clave" #: src/certificate_properties.c:1497 msgid "Delta CRL Distribution Point" msgstr "Punto de distribución de Delta CRLs" #: src/certificate_properties.c:1498 msgid "Inhibit Any-Policy" msgstr "Restringir «Any-Policy»" #: src/creation_process_window.c:69 msgid "CA creation process finished" msgstr "Proceso de creación de la AC finalizado" #: src/creation_process_window.c:193 msgid "Creation process cancelled" msgstr "Proceso de creación cancelado" #: src/creation_process_window.c:215 msgid "CSR creation process finished" msgstr "Proceso de creación de solicitud finalizado" #: src/creation_process_window.c:288 msgid "Creating Certificate Signing Request" msgstr "Creando solicitud de certificación" #: src/crl.c:101 msgid "CRL generated successfully" msgstr "CRL generada con éxito" #: src/crl.c:146 msgid "Export Certificate Revocation List" msgstr "Exportar lista de certificados revocados (CRL)" #: src/crl.c:180 src/crl.c:253 src/crl.c:299 msgid "There was an error while generating CRL." msgstr "Ocurrió un error al generar la CRL." #: src/crl.c:189 msgid "There was an error while writing CRL." msgstr "Ocurrió un error al escribir la CRL." #: src/crl.c:201 src/crl.c:227 src/crl.c:268 src/crl.c:330 src/crl.c:351 msgid "There was an error while exporting CRL." msgstr "Ocurrió un error al exportar la CRL" #: src/crl.c:238 src/crl.c:369 msgid "There was an error while getting revoked certificates." msgstr "Ocurrió un error al obtener los certificados revocados." #: src/csr_creation.c:131 msgid "Generating CSR" msgstr "Generando solicitud de certificación" #: src/csr_creation.c:140 msgid "CSR generation failed" msgstr "Error en generación de solicitud" #: src/csr_creation.c:151 msgid "Saving CSR in database" msgstr "Guardando solicitud de certificación en base de datos" #: src/csr_creation.c:169 msgid "CSR couldn't be saved" msgstr "La solicitud no se pudo guardar" #: src/csr_creation.c:180 msgid "CSR generated successfully" msgstr "Solicitud de certificación generada con éxito" #: src/csr_properties.c:91 msgid "" "This Certificate Signing Request has its corresponding private key saved " "in a external file." msgstr "" "La clave privada correspondiente a esta petición de certificación está " "almacenada en un fichero externo." #: src/dialog.c:123 #, c-format msgid "" "\n" "The password must have, at least, %d characters\n" msgstr "" "\n" "La contraseña debe tener, al menos, %d caracteres\n" #: src/dialog.c:581 msgid "To do. Feature not implemented yet." msgstr "Por hacer. Funcionalidad aún no implementada." #: src/export.c:43 src/export.c:48 src/export.c:53 msgid "There was an error while saving Diffie-Hellman parameters." msgstr "Ocurrió un error al guardar los parámetros Diffie-Hellman." #: src/export.c:79 src/export.c:138 src/export.c:146 src/export.c:200 #: src/export.c:210 src/export.c:304 src/export.c:341 src/export.c:376 #: src/export.c:384 src/export.c:424 src/export.c:433 src/export.c:474 msgid "There was an error while exporting private key." msgstr "Error al exportar clave privada." #: src/export.c:99 src/export.c:284 src/export.c:357 src/export.c:455 msgid "There was an error while getting private key." msgstr "Hubo un problema al obtener la clave privada." #: src/export.c:110 src/export.c:248 msgid "There was an error while uncrypting private key." msgstr "Error al descifrar clave privada." #: src/export.c:113 src/export.c:264 msgid "" "You need to supply a passphrase for protecting the exported private key, so " "nobody else but authorized people can use it. This passphrase will be asked " "by any application that will make use of the private key." msgstr "" "Es necesario proporcionar una contraseña para proteger la clave privada " "exportada, de manera que sólo las personas autorizadas puedan hacer uso de " "ella. Esta contraseña será solicitada por cualquier aplicación que vaya a " "hacer uso de la clave privada." #: src/export.c:116 src/export.c:267 src/export.c:536 src/export.c:715 msgid "Insert passphrase (8 characters or more):" msgstr "Introduzca contraseña (8 o más caracteres):" #: src/export.c:116 src/export.c:267 src/export.c:536 src/export.c:715 msgid "Insert passphrase (confirm):" msgstr "Introduzca contraseña (confirmación):" #: src/export.c:117 src/export.c:268 src/export.c:537 src/export.c:716 msgid "The introduced passphrases are distinct." msgstr "Las contraseñas introducidas son distintas." #: src/export.c:120 src/export.c:178 msgid "Operation cancelled." msgstr "Operación cancelada." #: src/export.c:130 src/export.c:190 msgid "There was an error while password-protecting private key." msgstr "Hubo un error al proteger con contraseña la clave privada." #: src/export.c:368 src/export.c:415 msgid "There was an error while decrypting private key." msgstr "Error al descifrar clave privada." #: src/export.c:513 src/export.c:747 msgid "Unsupported operation: you cannot generate a PKCS#12 for a CSR." msgstr "" "Operación no soporta: no se puede generar un PKCS#12 para una solicitud de " "certificación." #: src/export.c:521 src/export.c:530 src/export.c:695 src/export.c:731 msgid "" "There was an error while getting the certificate and private key from the " "internal database." msgstr "" "Hubo un problema al obtener el certificado y la clave privada de la base de " "datos interna." #: src/export.c:533 src/export.c:712 msgid "" "You need to supply a passphrase for protecting the exported certificate, so " "nobody else but authorized people can use it. This passphrase will be asked " "by any application that will import the certificate." msgstr "" "Es necesario proporcionar una contraseña para proteger la clave privada " "exportada, de manera que sólo las personas autorizadas puedan hacer uso de " "ella. Esta contraseña será solicitada por cualquier aplicación que vaya a " "importar el certificado." #: src/export.c:555 src/export.c:629 msgid "There was an error while generating the PKCS#12 package." msgstr "Hubo un problema al generar el fichero PKCS#12" #: src/export.c:569 src/export.c:578 src/export.c:652 src/export.c:663 msgid "There was an error while exporting the certificate." msgstr "Ocurrió un error al exportar el certificado." #: src/gnomint-cli.c:59 msgid "- A Certification Authority manager" msgstr "-Un gestor de Autoridades de Certificación" #: src/gnomint-cli.c:62 #, c-format msgid "Failed to initialize: %s\n" msgstr "Fallo al inicializar: %s\n" #: src/import.c:171 #, c-format msgid "" "The whole selected file, or some of its elements, seems to\n" "be cyphered using a password or passphrase. For importing\n" "the file into gnoMint database, you must provide an \n" "appropriate password.\n" msgstr "" "Todo el fichero seleccionado, o alguno de los elementos que\n" "lo conforman, parece haber sido cifrado empleando una \n" "contraseña. Para importar el fichero en la base de datos \n" "de gnoMint, deberá proporcionar una contraseña adecuada.\n" #: src/import.c:176 #, c-format msgid "Please introduce password for `%s'" msgstr "Introduzca la contraseña para '%s'" #: src/import.c:218 #, c-format msgid "" "Couldn't import the certificate request. \n" "The database returned this error: \n" "\n" "'%s'" msgstr "" "No se pudo importar la solicitud de certificación. \n" "La base de datos devolvió el siguiente error: \n" "\n" "'%s'" #: src/import.c:298 msgid "" "The imported certificate expires after 2038-01-19, a date this 32-bit build " "cannot represent. Its stored expiration has been capped and may be " "inaccurate. The certificate itself is unchanged; open it on a 64-bit system " "to see the exact date." msgstr "" #: src/import.c:310 #, c-format msgid "" "Couldn't import the certificate. \n" "The database returned this error: \n" "\n" "'%s'" msgstr "" "No se pudo importar el certificado. \n" "La base de datos devolvió el siguiente error: \n" "\n" "'%s'" #: src/import.c:666 src/import.c:852 msgid "PKCS#8 crypted private key" msgstr "Clave privada PKCS#8 cifrada" #: src/import.c:677 src/import.c:862 msgid "The given password doesn't match the one used for crypting this part" msgstr "" "La contraseña que ha introducido no coincide con la contraseña empleada para " "cifrar este elemento" #: src/import.c:771 msgid "Encrypted PKCS#12 bag" msgstr "Contenedor PKCS#12 cifrado" #: src/import.c:788 msgid "" "The given password doesn't match with the password used for encrypting this " "part." msgstr "" "La contraseña que ha introducido no coincide con la contraseña empleada para " "cifrar este elemento." #: src/import.c:999 msgid "Couldn't find any supported format in the given file" msgstr "No se encontró ningún formato soportado en el fichero proporcionado" #: src/import.c:1012 src/import.c:1363 #, c-format msgid "Couldn't open %s file. Check permissions." msgstr "No se pudo abrir el fichero %s. Compruebe los permisos." #: src/import.c:1039 #, c-format msgid "Couldn't recognize the file %s as a RSA or DSA private key." msgstr "No se ha reconocido el fichero %s como clave privada RSA o DSA." #: src/import.c:1055 #, c-format msgid "Private key for %s" msgstr "Clave privada para %s" #: src/import.c:1057 #, c-format msgid "Private key %s" msgstr "Clave privada %s" #: src/import.c:1092 msgid "Problem while calling to openssl for decyphering private key." msgstr "Error al llamar a openssl para descifrar la clave privada." #: src/import.c:1100 #, c-format msgid "" "OpenSSL has returned the following error while trying to decypher the " "private key:\n" "\n" "%s" msgstr "" "OpenSSL ha devuelto el siguiente error tras intentar descifrar la clave " "privada:\n" "\n" "%s" #: src/import.c:1211 msgid "There was a problem while importing the public CA root certificate" msgstr "Ocurrió un error al importar el certificado raíz público de la AC." #: src/import.c:1225 msgid "CA Root certificate" msgstr "Certificado raíz de la AC" #: src/import.c:1227 msgid "" "There was a problem while importing the private key corresponding to CA root " "certificate" msgstr "" "Hubo un problema al importar la clave privada correspondiente al certificado " "raíz de la AC." #: src/import.c:1237 msgid "There was a problem while opening the directory certs/." msgstr "Ocurrió un error al abrir el directorio certs/." #: src/import.c:1261 msgid "There was a problem while opening the directory newcerts/." msgstr "Ocurrió un error al abrir el directorio newcerts/." #: src/import.c:1288 msgid "There was a problem while opening the directory req." msgstr "Ocurrió un error al abrir el directorio req." #: src/import.c:1314 msgid "There was a problem while opening the directory crl/." msgstr "Ocurrió un error al abrir el directorio crl." #: src/import.c:1336 msgid "There was a problem while opening the directory keys/." msgstr "Ocurrió un error al abrir el directorio keys." #: src/import.c:1394 msgid "Files in the directory don't belong to any supported CA format." msgstr "" "Los ficheros existentes en el directorio no pertenecen a ningún formato " "soportado de Autoridad de Certificación." #: src/main.c:567 #, c-format msgid "" "Problem when creating '%s' CA database:\n" "%s" msgstr "" "Hubo problemas al crear la base de datos de la AC '%s':\n" "%s" #: src/main.c:577 #, c-format msgid "Problem when opening new '%s' CA database" msgstr "Hubo problemas al abrir la nueva base de datos de la AC '%s'" #: src/main.c:591 msgid "Create new CA database" msgstr "Crear nueva base de datos de AC" #: src/main.c:616 #, c-format msgid "Problem when opening '%s' CA database" msgstr "Hubo problemas al abrir la base de datos de la AC '%s'" #: src/main.c:630 msgid "Open CA database" msgstr "Abrir base de datos de AC" #: src/main.c:662 msgid "Save CA database as..." msgstr "Guardar base de datos de AC como..." #: src/main.c:722 msgid "" "gnoMint is a program for creating and managing Certification Authorities, " "and their certificates" msgstr "" "gnoMint es un programa diseñado para crear y gestionar Autoridades de " "Certificación, así como sus certificados" #: src/main.c:725 msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU General Public License as published by the Free " "Software Foundation; either version 3 of the License, or (at your option) " "any later version.\n" "\n" "This program is distributed in the hope that it will be useful, but WITHOUT " "ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or " "FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for " "more details.\n" "\n" "You should have received a copy of the GNU General Public License along with " "this program; if not, write to the Free Software Foundation, Inc., 51 " "Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA." msgstr "" "Este programa es software libre; puede distribuirlo y/o modificarlo según " "los términos de la Licencia Pública General GNU (GNU GPL), según fue " "publicada por la Free Software Foundation; en la versión 3 de la Licencia, o " "(a su elección) cualquier versión posterior.\n" "\n" "Este programa se distribuye con la esperanza de que sea útil, pero SIN " "GARANTÍA; sin ninguna garantía implícita de estar APTO PARA LA " "COMERCIALIZACIÓN o de IDONEIDAD PARA UN FIN DETERMINADO. Para más detalles, " "vea la Licencia Pública General GNU.\n" "\n" "Debería haber recibido una copia de la Licencia Pública General GNU junto " "con este programa; si no es así, escriba a la Free Software Foundation, " "Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, EE.UU." #: src/main.c:741 msgid "Code collaborators" msgstr "Colaboradores de código" #: src/new_ca_window.c:191 src/new_req_window.c:222 msgid "ECDSA curve:" msgstr "Curva ECDSA:" #: src/new_ca_window.c:219 msgid "Please enter a Common Name (CN) for the CA." msgstr "Introduzca un nombre común (CN) para la AC." #: src/new_cert.c:197 msgid "" "The policy of this CA obligue the country field of the certificates to be " "the same as the one in the CA cert." msgstr "" "La política de esta AC obliga a que los campos \"país\" de los certificados " "expedidos seanigual al del certificado de la AC." #: src/new_cert.c:203 msgid "" "The policy of this CA obligue the state/province field of the certificates " "to be the same as the one in the CA cert." msgstr "" "La política de esta AC obliga a que los campos \"estado/provincia\" de los " "certificados expedidos seanigual al del certificado de la AC." #: src/new_cert.c:209 msgid "" "The policy of this CA obligue the locality/city field of the certificates to " "be the same as the one in the CA cert." msgstr "" "La política de esta AC obliga a que los campos \"localidad/ciudad\" de los " "certificados expedidos seanigual al del certificado de la AC." #: src/new_cert.c:215 msgid "" "The policy of this CA obligue the organization field of the certificates to " "be the same as the one in the CA cert." msgstr "" "La política de esta AC obliga a que los campos \"organización\" de los " "certificados expedidos seanigual al del certificado de la AC." #: src/new_cert.c:221 msgid "" "The policy of this CA obligue the organizational unit field of the " "certificates to be the same as the one in the CA cert." msgstr "" "La política de esta AC obliga a que los campos \"unidad organizativa\" de " "los certificados expedidos seanigual al del certificado de la AC." #: src/new_cert.c:659 msgid "" "The expiration date of the new certificate is after the expiration date of " "the CA certificate.\n" "\n" "According to the current standards, this is not allowed. The new certificate " "will be created with the same expiration date as the CA certificate." msgstr "" "La fecha de caducidad del nuevo certificado es posterior a la fecha de " "caducidad del certificado de la AC.\n" "\n" "Según la normativa actual, no debe generarse ningún certificado así, por lo " "que el nuevo certificado se creará con la misma fecha de caducidad que la " "del certificado de la AC." #: src/new_cert.c:734 msgid "" "This system uses a 32-bit time_t and cannot represent dates after " "2038-01-19. The new certificate's expiration date has been clamped to that " "limit. To issue longer-lived certificates, run gnoMint on a 64-bit platform." msgstr "" #: src/new_cert.c:770 src/new_cert.c:809 src/new_cert.c:838 msgid "Error while signing CSR." msgstr "Error al firmar CSR." #: src/new_req_window.c:374 msgid "Please enter a Common Name (CN) for the certificate request." msgstr "Introduzca un nombre común (CN) para la solicitud de certificado." #: src/pkey_manage.c:124 #, c-format msgid "" "The file that holds private key for certificate '%s' is password-protected.\n" "\n" "Please, insert the password corresponding to this file." msgstr "" "El fichero que almacena la clave privada del certificado '%s' está protegida " "con contraseña.Por favor, introduzca la contraseña correspondiente a este " "fichero." #: src/pkey_manage.c:163 #, c-format msgid "" "The file that holds private key for certificate\n" "'%s' is password-protected.\n" "\n" msgstr "" "El fichero que almacena la clave privada del certificado\n" "'%s' está protegido con contraseña\n" "\n" #: src/pkey_manage.c:211 src/pkey_manage.c:303 msgid "" "The given password doesn't match with the one used while crypting the file." msgstr "" "La contraseña que ha introducido no coincide con la empleada para cifrar " "este fichero." #: src/pkey_manage.c:226 src/pkey_manage.c:315 src/pkey_manage.c:476 msgid "" "The file designated in database contains a private key, but it is not the " "private key corresponding to the certificate." msgstr "" "El fichero indicado en base de datos contiene una clave privada,pero dicha " "clave no se corresponde con el certificado." #: src/pkey_manage.c:229 src/pkey_manage.c:318 src/pkey_manage.c:479 msgid "" "The file designated in database doesn't contain any recognized private key." msgstr "" "El fichero indicado en la base de datos no contiene ninguna clave privada " "reconocible." #: src/pkey_manage.c:233 src/pkey_manage.c:500 msgid "The file designated in database couldn't be opened." msgstr "No se pudo abrir el fichero indicado en la base de datos." #: src/pkey_manage.c:236 src/pkey_manage.c:503 msgid "The file designated in database doesn't exist." msgstr "El fichero indicado en la base de datos no existe." #: src/pkey_manage.c:360 msgid "Select private key file" msgstr "Seleccionar fichero de clave privada" #: src/pkey_manage.c:1069 src/pkey_manage.c:1164 msgid "The given password doesn't match the one used in the database" msgstr "" "La contraseña que ha introducido no coincide con la contraseña de la base de " "datos." #: src/pkey_manage.c:1151 #, c-format msgid "" "This action requires using one or more private keys saved in the database.\n" msgstr "" "Esta acción necesita emplear una o más claves privadas almacenadas en la " "base de datos de la AC.\n" #: src/pkey_manage.c:1152 msgid "Please insert the database password:" msgstr "Introduzca la contrase_ña de la base de datos:" #: src/san_manager.c:71 msgid "Value cannot be empty" msgstr "El valor no puede estar vacío" #: src/san_manager.c:82 msgid "Invalid DNS name. Use format: example.com or *.example.com" msgstr "Nombre DNS no válido. Use el formato: ejemplo.com o *.ejemplo.com" #: src/san_manager.c:93 msgid "Invalid IP address. Use IPv4 (e.g., 192.168.1.1) or IPv6 format" msgstr "Dirección IP no válida. Use formato IPv4 (ej.: 192.168.1.1) o IPv6" #: src/san_manager.c:103 msgid "Invalid email address. Use format: user@example.com" msgstr "Dirección de correo no válida. Use el formato: usuario@ejemplo.com" #: src/san_manager.c:113 msgid "Invalid URI. Must start with http://, https://, ftp://, or ldap://" msgstr "URI no válida. Debe empezar por http://, https://, ftp:// o ldap://" #: src/san_manager.c:389 msgid "Type" msgstr "Tipo" #: src/tls.c:198 src/tls.c:231 src/tls.c:276 src/tls.c:307 #, c-format msgid "Error initializing private key structure." msgstr "Error al inicializar estructura de clave privada." #: src/tls.c:204 src/tls.c:237 src/tls.c:281 src/tls.c:311 #, c-format msgid "Error creating private key: %d" msgstr "Error al crear clave privada: %d" #: src/tls.c:215 src/tls.c:248 src/tls.c:289 src/tls.c:321 src/tls.c:794 #: src/tls.c:1204 #, c-format msgid "Error exporting private key to PEM structure." msgstr "Error al exportar clave privada a estructura PEM." #: src/tls.c:656 #, c-format msgid "Error when initializing certificate structure" msgstr "Error al inicializar estructura de certificado" #: src/tls.c:662 src/tls.c:956 #, c-format msgid "Error when setting certificate version" msgstr "Error al establecer versión de certificado" #: src/tls.c:672 src/tls.c:969 #, c-format msgid "Error when setting certificate serial number" msgstr "Error al establecer número de serie del certificado" #: src/tls.c:681 src/tls.c:978 #, c-format msgid "Error when setting activation time" msgstr "Error al establecer fecha de activación" #: src/tls.c:686 src/tls.c:986 #, c-format msgid "Error when setting expiration time" msgstr "Error al establecer fecha y hora de caducidad" #: src/tls.c:740 src/tls.c:1040 #, c-format msgid "Error when setting basicConstraint extension" msgstr "Error al establecer extensión basicConstraint" #: src/tls.c:745 src/tls.c:1082 #, c-format msgid "Error when setting keyUsage extension" msgstr "Error al establecer extensión keyUsage" #: src/tls.c:756 src/tls.c:864 src/tls.c:1120 #, c-format msgid "Error when setting Subject Alternative Name extension" msgstr "Error al establecer extensión identificadora de titular" #: src/tls.c:768 src/tls.c:1056 #, c-format msgid "Error when setting subject key identifier extension" msgstr "Error al establecer extensión identificadora de titular" #: src/tls.c:772 src/tls.c:1030 #, c-format msgid "Error when setting authority key identifier extension" msgstr "Error al establecer extensión identificadora de autoridad" #: src/tls.c:782 #, c-format msgid "Error when signing self-signed certificate" msgstr "Error al firmar certificado autofirmado" #: src/tls.c:813 #, c-format msgid "Error when initializing privkey structure" msgstr "Error al inicializar estructura de solicitud" #: src/tls.c:817 #, c-format msgid "Error when importing private key into privkey structure" msgstr "Error al exportar clave privada a estructura PEM." #: src/tls.c:821 #, c-format msgid "Error when initializing csr structure" msgstr "Error al inicializar estructura de solicitud" #: src/tls.c:825 #, c-format msgid "Error when setting csr version" msgstr "Error al establecer versión de solicitud" #: src/tls.c:869 #, c-format msgid "Error when signing self-signed csr" msgstr "Error al firmar solicitud autofirmada" #: src/tls.c:880 #, c-format msgid "Error exporting CSR to PEM structure." msgstr "Error al exportar solicitud de certificación a estructura PEM." #: src/tls.c:933 #, c-format msgid "Error when importing CA private key" msgstr "Error al importar la clave privada de la AC" #: src/tls.c:940 #, c-format msgid "Error when initializing crt structure" msgstr "Error al inicializar estructura de solicitud" #: src/tls.c:948 #, c-format msgid "Error when copying data from CSR to certificate structure" msgstr "Error al copiar datos de solicitud a la estructura del certificado" #: src/tls.c:1182 #, c-format msgid "Error when signing certificate: %s" msgstr "Error al firmar el certificado: %s" #: src/tls.c:1482 msgid "Key encipher only" msgstr "Clave de sólo cifrado" #: src/tls.c:1484 msgid "Key decipher only" msgstr "Clave de sólo descifrado" #: src/tls.c:1496 msgid "TLS WWW Client." msgstr "Cliente TLS WWW" #: src/wizard_window.c:239 #, c-format msgid "" "Key generation failed:\n" "%s" msgstr "" "Error en generación de claves:\n" "%s" #: src/wizard_window.c:249 #, c-format msgid "" "CSR generation failed:\n" "%s" msgstr "" "Error en generación de solicitud:\n" "%s" #: src/wizard_window.c:260 msgid "Failed to parse generated CSR." msgstr "Error al analizar la solicitud generada." #: src/wizard_window.c:271 #, c-format msgid "" "Failed to save CSR:\n" "%s" msgstr "" "Fallo al guardar la solicitud:\n" "%s" #: src/wizard_window.c:294 #, c-format msgid "" "Failed to sign certificate:\n" "%s" msgstr "" "Fallo al firmar certificado:\n" "%s" #: src/wizard_window.c:297 msgid "Certificate generated successfully!" msgstr "¡Certificado generado con éxito!" #: src/wizard_window.c:311 msgid "Please enter a server name." msgstr "Por favor, introduzca un nombre de servidor." #: src/wizard_window.c:318 msgid "Please select a Certificate Authority." msgstr "Por favor, seleccione una Autoridad de Certificación." #: src/wizard_window.c:325 msgid "Invalid Certificate Authority selected." msgstr "La Autoridad de Certificación seleccionada no es válida." #: src/wizard_window.c:412 msgid "No Certificate Authority found. Please create a CA first." msgstr "" "No se encontró ninguna Autoridad de Certificación. Por favor, cree primero " "una AC." #~ msgid "%m/%d/%Y %R GMT" #~ msgstr "%d/%m/%Y %R GMT" #, c-format #~ msgid "%s version %s\n" #~ msgstr "%s versión %s\n" #~ msgid "David Marín Carreño" #~ msgstr "David Marín Carreño" #~ msgid "_Save" #~ msgstr "_Guardar" #~ msgid "_Open" #~ msgstr "_Abrir" #, c-format #~ msgid "CertList ID|%s\t" #~ msgstr "%s\t" #~ msgid "CertList IsCA|Y\t" #~ msgstr "Sí\t" #~ msgid "CertList IsCA|N\t" #~ msgstr "No\t" #, c-format #~ msgid "CertList Subject|%s\t" #~ msgstr "%s\t" #~ msgid "CertList PadIfSubject<16|\t" #~ msgstr "\t" #~ msgid "CertList PadIfSubject<8|\t" #~ msgstr "\t" #~ msgid "CertList PKeyInDB|Y\t\t" #~ msgstr "Sí\t\t" #~ msgid "CertList PKeyInDB|N\t\t" #~ msgstr "No\t\t" #~ msgid "CertList Activation|\t" #~ msgstr " \t" #, c-format #~ msgid "CertList Activation|%s\t" #~ msgstr "%s\t" #~ msgid "CertList Expiration|\t" #~ msgstr "\t" #, c-format #~ msgid "CertList Expiration|%s\t" #~ msgstr "%s\t" #~ msgid "CertList Revocation|\n" #~ msgstr " \n" #, c-format #~ msgid "CertList Revocation|%s\n" #~ msgstr "%s\n" #, c-format #~ msgid "CsrList ID|%s\t" #~ msgstr "%s\t" #, c-format #~ msgid "CsrList ParentID|%s\t" #~ msgstr "%s\t" #~ msgid "CsrList ParentID|\t" #~ msgstr " \t" #, c-format #~ msgid "CsrList Subject|%-24s\t" #~ msgstr "%-24s\t" #~ msgid "CsrList PadIfSubject<16|\t" #~ msgstr " \t" #~ msgid "CsrList PadIfSubject<8|\t" #~ msgstr " \t" #~ msgid "CsrList PKeyInDB|Y\n" #~ msgstr "Sí\n" #~ msgid "CsrList PKeyInDB|N\n" #~ msgstr "No\n" #~ msgid "List of affirmative answers, separated with #|Yes#yes#Y#y" #~ msgstr "Sí#Si#SI#SÍ#S#s#si#sí" #~ msgid "List of negative answers, separated with #|No#no#N#n" #~ msgstr "No#no#N#n" #~ msgid "Certificates" #~ msgstr "Certificados" #~ msgid "Certificate Signing Requests" #~ msgstr "Solicitudes de certificación" #~ msgid "- A graphical Certification Authority manager" #~ msgstr "- Un gestor gráfico de Autoridades de Certificación" #~ msgid "Shows the certificate properties window" #~ msgstr "Muestra la ventana de propiedades del certificado" #~ msgid "" #~ "Exports the certificate so it can be imported by any other application" #~ msgstr "" #~ "Exporta el certificado de modo que pueda ser importado por cualquier otra " #~ "aplicación" #~ msgid "" #~ "Extracts the private key of the selected \n" #~ "certificate from the database to an \n" #~ "external file. This file must be provided \n" #~ "each time the certificate will be used" #~ msgstr "" #~ "Extrae de la base de datos la clave privada del certificado seleccionado, " #~ "almacenándola en un fichero externo. Este fichero deberá proporcionarse " #~ "cada vez que se emplee el certificado" #~ msgid "Quick certificate generation for a web server, signed by this CA" #~ msgstr "" #~ "Generación rápida de un certificado para un servidor web, firmado por " #~ "esta AC" #~ msgid "Quick certificate generation for an email server, signed by this CA" #~ msgstr "" #~ "Generación rápida de un certificado para un servidor de correo, firmado " #~ "por esta AC" #~ msgid "Shows the CSR properties window" #~ msgstr "Mostrar ventana de propiedades de la solicitud de certificación" #~ msgid "Exports the CSR so it can be imported by any other application" #~ msgstr "" #~ "Exporta la solicitud de certificación de modo que pueda ser importada por " #~ "cualquier otra aplicación" #~ msgid "" #~ "Extracts the private key of the selected \n" #~ "certificate from the database to an \n" #~ "external file. This file must be provided \n" #~ "each time the CSR will be used" #~ msgstr "" #~ "Extrae de la base de datos la clave privada del certificado seleccionado, " #~ "almacenándola en un fichero externo. Este fichero deberá proporcionarse " #~ "cada vez que se emplee la solicitud de certificación" #~ msgid "" #~ "Quick certificate generation for a web server, signed by an existing CA" #~ msgstr "" #~ "Generación rápida de un certificado para un servidor web, firmado por una " #~ "AC existente" #~ msgid "Extract the saved private key to an external file or device" #~ msgstr "" #~ "Extrae la clave privada almacenada a un fichero o dispositivo externo" #~ msgid "Generate the current Certificate Revocation List" #~ msgstr "Exportar lista de certificados revocados (CRL)" #~ msgid "" #~ "When unchecked, certificates whose validity has already ended are hidden " #~ "from the tree. A certificate is also considered expired if any of its " #~ "issuing CAs has expired, so an expired CA's whole subtree is hidden " #~ "alongside it." #~ msgstr "" #~ "Si se desmarca, los certificados cuya validez ya ha terminado se ocultan " #~ "del árbol. Un certificado también se considera caducado si lo está alguna " #~ "de sus autoridades emisoras, de modo que un AC caducado oculta también " #~ "todo su subárbol." #~ msgid "<b>Fingerprints</b>" #~ msgstr "Huellas digitales" #~ msgid "<b>Certificate subject</b>" #~ msgstr "Titular del certificado" #~ msgid "<b>Certificate hierarchy</b>" #~ msgstr "Jerarquía de certificados" #~ msgid "<b>Certificate fields</b>" #~ msgstr "Campos de certificado" #~ msgid "" #~ "<b>This Certificate Signing Request has its corresponding private " #~ "key saved in the internal database.</b>" #~ msgstr "" #~ "La clave privada correspondiente a esta petición de certificación está " #~ "almacenada en la base de datos interna." #~ msgid "<b>Subject Alternative Names (SAN)</b>" #~ msgstr "Nombre alternativo de titular" #~ msgid "<big>CA Root certificate properties</big>" #~ msgstr "Propiedades del certificado raiz de la AC\n" #~ msgid "<big>CA properties</big>" #~ msgstr "Propiedades de la AC\n" #~ msgid "<big>New Certificate Properties</big>" #~ msgstr "Propiedades del nuevo certificado\n" #~ msgid "<b>Certificate uses</b>" #~ msgstr "Usos del certificado" #~ msgid "<b>Certificate purposes</b>" #~ msgstr "Finalidad del certificado" #~ msgid "" #~ "<big><b>New Certificate Revocation List</b></big>" #~ msgstr "Nueva lista de certificados revocados" #~ msgid "<big>Certificate Request Properties</big>" #~ msgstr "Propiedades de la solicitud\n" #~ msgid "Password protection\n" #~ msgstr "Cifrado con contraseña\n" #~ msgid "Enter password again for confirmation:" #~ msgstr "Introduzca otra vez la contraseña para confirmar:" #~ msgid "" #~ "Protect CA database private keys\n" #~ "with password:" #~ msgstr "" #~ "Proteger con contraseña las claves privadas de la base de datos de la AC:" #~ msgid "gtk-cancel" #~ msgstr "gtk-cancel" #~ msgid "gtk-ok" #~ msgstr "gtk-ok" #~ msgid "" #~ "The certificate will be generated with the following uses and purposes:\n" #~ msgstr "" #~ "Este certificado se habilitará para los siguientes usos y finalidades:\n" #~ msgid "gtk-add" #~ msgstr "gtk-add" #~ msgid "gtk-properties" #~ msgstr "gtk-properties" #~ msgid "" #~ "Couldn't import the given private key. \n" #~ "%s" #~ msgstr "" #~ "No se pudo importar la clave privada proporcionada.\n" #~ "%s" #~ msgid "" #~ "Please, select the Certification Authority that will create the new " #~ "certificate:" #~ msgstr "" #~ "Por favor: seleccione la Autoridad de Certificación que se empleará para " #~ "crear el nuevo certificado:" #~ msgid "Select the CA to sign this new certificate" #~ msgstr "Seleccione la AC para firmar este nuevo certificado" #~ msgid "Subject Common Name (CN):" #~ msgstr "Nombre común (CN) del titular:" #~ msgid "Save CA database" #~ msgstr "Guardar base de datos de AC" #~ msgid "Problem when saving new CA database" #~ msgstr "Problema al guardar nueva base de datos de AC" #~ msgid "_Actions" #~ msgstr "A_cciones" #~ msgid "_File" #~ msgstr "_Archivo" #~ msgid "_New CA" #~ msgstr "_Nueva AC" #~ msgid "Field value" #~ msgstr "Valor del campo" #~ msgid "Afghanistan" #~ msgstr "Afganistán" #~ msgid "Aland Islands" #~ msgstr "Islas Aland" #~ msgid "Albania" #~ msgstr "Albania" #~ msgid "American Samoa" #~ msgstr "Samoa americana" #~ msgid "Andorra" #~ msgstr "Andorra" #~ msgid "Angola" #~ msgstr "Angola" #~ msgid "Anguilla" #~ msgstr "Anguilla" #~ msgid "Antarctica" #~ msgstr "Antártida" #~ msgid "Antigua and Barbuda" #~ msgstr "Antigua y Barbuda" #~ msgid "Argentina" #~ msgstr "Argentina" #~ msgid "Armenia" #~ msgstr "Armenia" #~ msgid "Aruba" #~ msgstr "Aruba" #~ msgid "Australia" #~ msgstr "Australia" #~ msgid "Austria" #~ msgstr "Austria" #~ msgid "Azerbaijan" #~ msgstr "Acerbaiján" #~ msgid "Bahamas" #~ msgstr "Bahamas" #~ msgid "Bahrain" #~ msgstr "Bahrein" #~ msgid "Bangladesh" #~ msgstr "Bangladesh" #~ msgid "Barbados" #~ msgstr "Barbados" #~ msgid "Belarus" #~ msgstr "Bielorrusia" #~ msgid "Belgium" #~ msgstr "Bélgica" #~ msgid "Belize" #~ msgstr "Belice" #~ msgid "Benin" #~ msgstr "Benín" #~ msgid "Bermuda" #~ msgstr "Bermuda" #~ msgid "Bhutan" #~ msgstr "Bután" #~ msgid "Bolivia" #~ msgstr "Bolivia" #~ msgid "Bosnia and Herzegovina" #~ msgstr "Bosnia Herzegovina" #~ msgid "Botswana" #~ msgstr "Botswana" #~ msgid "Bouvet Island" #~ msgstr "Isla Bouvet" #~ msgid "Brazil" #~ msgstr "Brasil" #~ msgid "British Indian Ocean Territory" #~ msgstr "Territorio Británico en el Océano Índico" #~ msgid "Brunei Darussalam" #~ msgstr "Brunei" #~ msgid "Bulgaria" #~ msgstr "Bulgaria" #~ msgid "Burkina Faso" #~ msgstr "Burkina Faso" #~ msgid "Burundi" #~ msgstr "Burundi" #~ msgid "Cambodia" #~ msgstr "Camboya" #~ msgid "Cameroon" #~ msgstr "Camerún" #~ msgid "Canada" #~ msgstr "Canadá" #~ msgid "Cape Verde" #~ msgstr "Cabo Verde" #~ msgid "Cayman Islands" #~ msgstr "Islas Caimán" #~ msgid "Central African Republic" #~ msgstr "República Centroafricana" #~ msgid "Chad" #~ msgstr "Chad" #~ msgid "Chile" #~ msgstr "Chile" #~ msgid "China" #~ msgstr "China" #~ msgid "Christmas Island" #~ msgstr "Isla de Navidad" #~ msgid "Cocos (Keeling) Islands" #~ msgstr "Islas Cocos (Keeling)" #~ msgid "Colombia" #~ msgstr "Colombia" #~ msgid "Comoros" #~ msgstr "Comoros" #~ msgid "Congo" #~ msgstr "Congo" #~ msgid "Congo, the Democratic Republic of the" #~ msgstr "Congo, República Democrática del" #~ msgid "Cook Islands" #~ msgstr "Islas Cook" #~ msgid "Costa Rica" #~ msgstr "Costa Rica" #~ msgid "Cote d'Ivoire" #~ msgstr "Costa de Marfil" #~ msgid "Cuba" #~ msgstr "Cuba" #~ msgid "Cyprus" #~ msgstr "Chipre" #~ msgid "Czech Republic" #~ msgstr "República Checa" #~ msgid "Denmark" #~ msgstr "Dinamarca" #~ msgid "Dominica" #~ msgstr "Dominica" #~ msgid "Dominican Republic" #~ msgstr "República Dominicana" #~ msgid "Ecuador" #~ msgstr "Ecuador" #~ msgid "Egypt" #~ msgstr "Egipto" #~ msgid "El Salvador" #~ msgstr "El Salvador" #~ msgid "Equatorial Guinea" #~ msgstr "Guinea Ecuatorial" #~ msgid "Eritrea" #~ msgstr "Eritrea" #~ msgid "Estonia" #~ msgstr "Estonia" #~ msgid "Ethiopia" #~ msgstr "Etiopía" #~ msgid "Falkland Islands (Malvinas)" #~ msgstr "Islas Malvinas (Falkland)" #~ msgid "Faroe Islands" #~ msgstr "Islas Feroe" #~ msgid "Fiji" #~ msgstr "Fiji" #~ msgid "Finland" #~ msgstr "Finlandia" #~ msgid "French Guiana" #~ msgstr "Guyana Francesa" #~ msgid "French Polynesia" #~ msgstr "Polinesia Francesa" #~ msgid "French Southern Territories" #~ msgstr "Territorios franceses del sur" #~ msgid "Gabon" #~ msgstr "Gabón" #~ msgid "Gambia" #~ msgstr "Gambia" #~ msgid "Georgia" #~ msgstr "Georgia" #~ msgid "Germany" #~ msgstr "Alemania" #~ msgid "Ghana" #~ msgstr "Ghana" #~ msgid "Gibraltar" #~ msgstr "Gibraltar" #~ msgid "Greece" #~ msgstr "Grecia" #~ msgid "Greenland" #~ msgstr "Groelandia" #~ msgid "Grenada" #~ msgstr "Granada" #~ msgid "Guadeloupe" #~ msgstr "Guadalupe" #~ msgid "Guam" #~ msgstr "Guam" #~ msgid "Guatemala" #~ msgstr "Guatemala" #~ msgid "Guernsey" #~ msgstr "Guernsey" #~ msgid "Guinea" #~ msgstr "Guinea" #~ msgid "Guinea-Bissau" #~ msgstr "Guinea-Bissau" #~ msgid "Guyana" #~ msgstr "Guyana" #~ msgid "Haiti" #~ msgstr "Haití" #~ msgid "Heard Island and Mcdonald Islands" #~ msgstr "Isla Heard e Islas McDonald" #~ msgid "Holy See (Vatican City State)" #~ msgstr "Ciudad del Vaticano (Santa Sede)" #~ msgid "Honduras" #~ msgstr "Honduras" #~ msgid "Hong Kong" #~ msgstr "Hong Kong" #~ msgid "Hungary" #~ msgstr "Hungría" #~ msgid "Iceland" #~ msgstr "Islandia" #~ msgid "India" #~ msgstr "India" #~ msgid "Indonesia" #~ msgstr "Indonesia" #~ msgid "Iran, Islamic Republic of" #~ msgstr "Irán, República Islámica de" #~ msgid "Iraq" #~ msgstr "Irak" #~ msgid "Ireland" #~ msgstr "Irlanda" #~ msgid "Isle of Man" #~ msgstr "Isla de Man" #~ msgid "Israel" #~ msgstr "Israel" #~ msgid "Italy" #~ msgstr "Italia" #~ msgid "Jamaica" #~ msgstr "Jamaica" #~ msgid "Japan" #~ msgstr "Japón" #~ msgid "Jersey" #~ msgstr "Jersey" #~ msgid "Jordan" #~ msgstr "Jordania" #~ msgid "Kazakhstan" #~ msgstr "Kazajistán" #~ msgid "Kenya" #~ msgstr "Kenia" #~ msgid "Kiribati" #~ msgstr "Kiribati" #~ msgid "Korea, Democratic People's Republic of" #~ msgstr "Corea del Norte" #~ msgid "Korea, Republic of" #~ msgstr "Corea del Sur" #~ msgid "Kuwait" #~ msgstr "Kuwait" #~ msgid "Kyrgyzstan" #~ msgstr "Kirguizistán" #~ msgid "Lao People's Democratic Republic" #~ msgstr "Laos" #~ msgid "Latvia" #~ msgstr "Letonia" #~ msgid "Lebanon" #~ msgstr "Líbano" #~ msgid "Lesotho" #~ msgstr "Lesotho" #~ msgid "Liberia" #~ msgstr "Liberia" #~ msgid "Libyan Arab Jamahiriya" #~ msgstr "Libia" #~ msgid "Liechtenstein" #~ msgstr "Liechtenstein" #~ msgid "Lithuania" #~ msgstr "Lituania" #~ msgid "Luxembourg" #~ msgstr "Luxemburgo" #~ msgid "Macao" #~ msgstr "Macao" #~ msgid "Macedonia, The Former Yugoslav Republic of" #~ msgstr "Macedonia, Antigua República Yugoslava de" #~ msgid "Madagascar" #~ msgstr "Madagascar" #~ msgid "Malawi" #~ msgstr "Malawi" #~ msgid "Malaysia" #~ msgstr "Malasia" #~ msgid "Maldives" #~ msgstr "Maldivas" #~ msgid "Mali" #~ msgstr "Mali" #~ msgid "Malta" #~ msgstr "Malta" #~ msgid "Marshall Islands" #~ msgstr "Islas Marshall" #~ msgid "Martinique" #~ msgstr "Martinica" #~ msgid "Mauritania" #~ msgstr "Mauritania" #~ msgid "Mauritius" #~ msgstr "Mauricio" #~ msgid "Mayotte" #~ msgstr "Mayotte" #~ msgid "Mexico" #~ msgstr "México" #~ msgid "Micronesia, Federated States of" #~ msgstr "Micronesia, Estados Federados de" #~ msgid "Moldova, Republic of" #~ msgstr "Moldavia, República de" #~ msgid "Monaco" #~ msgstr "Mónaco" #~ msgid "Mongolia" #~ msgstr "Mongolia" #~ msgid "Montserrat" #~ msgstr "Montserrat" #~ msgid "Morocco" #~ msgstr "Marruecos" #~ msgid "Mozambique" #~ msgstr "Mozambique" #~ msgid "Myanmar" #~ msgstr "Myanmar" #~ msgid "Namibia" #~ msgstr "Namibia" #~ msgid "Nauru" #~ msgstr "Nauru" #~ msgid "Nepal" #~ msgstr "Nepal" #~ msgid "Netherlands" #~ msgstr "Países Bajos" #~ msgid "Netherlands Antilles" #~ msgstr "Antillas holandesas" #~ msgid "New Caledonia" #~ msgstr "Nueva Caledonia" #~ msgid "New Zealand" #~ msgstr "Nueva Zelanda" #~ msgid "Nicaragua" #~ msgstr "Nicaragua" #~ msgid "Niger" #~ msgstr "Níger" #~ msgid "Nigeria" #~ msgstr "Nigeria" #~ msgid "Niue" #~ msgstr "Niue" #~ msgid "Norfolk Island" #~ msgstr "Isla Norfolk" #~ msgid "Northern Mariana Islands" #~ msgstr "Islas Marianas del Norte" #~ msgid "Norway" #~ msgstr "Noruega" #~ msgid "Oman" #~ msgstr "Omán" #~ msgid "Pakistan" #~ msgstr "Pakistán" #~ msgid "Palestinian Territory, Occupied" #~ msgstr "Palestina, Territorio Ocupado de" #~ msgid "Panama" #~ msgstr "Panamá" #~ msgid "Papua New Guinea" #~ msgstr "Papúa Nueva Guinea" #~ msgid "Paraguay" #~ msgstr "Paraguay" #~ msgid "Peru" #~ msgstr "Perú" #~ msgid "Pitcairn" #~ msgstr "Pitcairn" #~ msgid "Poland" #~ msgstr "Polonia" #~ msgid "Portugal" #~ msgstr "Portugal" #~ msgid "Puerto Rico" #~ msgstr "Puerto Rico" #~ msgid "Qatar" #~ msgstr "Qatar" #~ msgid "Reunion" #~ msgstr "Reunión" #~ msgid "Romania" #~ msgstr "Rumanía" #~ msgid "Russian Federation" #~ msgstr "Federación Rusa" #~ msgid "Rwanda" #~ msgstr "Ruanda" #~ msgid "Saint Helena" #~ msgstr "Santa Elena" #~ msgid "Saint Kitts and Nevis" #~ msgstr "San Cristóbal y Nieves" #~ msgid "Saint Lucia" #~ msgstr "Santa Lucía" #~ msgid "Saint Pierre and Miquelon" #~ msgstr "San Pedro y Miquelón" #~ msgid "Saint Vincent and the Grenadines" #~ msgstr "San Vicente y las Granadinas" #~ msgid "Samoa" #~ msgstr "Samoa" #~ msgid "San Marino" #~ msgstr "San Marino" #~ msgid "Sao Tome and Principe" #~ msgstr "Santo Tomé y Príncipe" #~ msgid "Saudi Arabia" #~ msgstr "Arabia Saudí" #~ msgid "Senegal" #~ msgstr "Senegal" #~ msgid "Serbia and Montenegro" #~ msgstr "Serbia y Montenegro" #~ msgid "Seychelles" #~ msgstr "Seychelles" #~ msgid "Sierra Leone" #~ msgstr "Sierra Leona" #~ msgid "Slovakia" #~ msgstr "Eslovaquia" #~ msgid "Slovenia" #~ msgstr "Eslovenia" #~ msgid "Solomon Islands" #~ msgstr "Islas Salomón" #~ msgid "Somalia" #~ msgstr "Somalia" #~ msgid "South Africa" #~ msgstr "Sudáfrica" #~ msgid "South Georgia and the South Sandwich Islands" #~ msgstr "Georgia del sur e Islas Sandwich del sur" #~ msgid "Spain" #~ msgstr "España" #~ msgid "Sri Lanka" #~ msgstr "Sri Lanka" #~ msgid "Sudan" #~ msgstr "Sudán" #~ msgid "Suriname" #~ msgstr "Surinam" #~ msgid "Svalbard and Jan Mayen" #~ msgstr "Svalbard y Jan Mayen" #~ msgid "Swaziland" #~ msgstr "Suazilandia" #~ msgid "Sweden" #~ msgstr "Suecia" #~ msgid "Switzerland" #~ msgstr "Suiza" #~ msgid "Syrian Arab Republic" #~ msgstr "República árabe de Siria" #~ msgid "Taiwan, Province of China" #~ msgstr "Taiwán, Provincia de China" #~ msgid "Tajikistan" #~ msgstr "Tayikistán" #~ msgid "Tanzania, United Republic of" #~ msgstr "Tanzania, República Unida de" #~ msgid "Thailand" #~ msgstr "Tailandia" #~ msgid "Timor-Leste" #~ msgstr "Timor Oriental" #~ msgid "Togo" #~ msgstr "Togo" #~ msgid "Tokelau" #~ msgstr "Tokelau" #~ msgid "Tonga" #~ msgstr "Tonga" #~ msgid "Trinidad and Tobago" #~ msgstr "Trinidad y Tobago" #~ msgid "Tunisia" #~ msgstr "Túnez" #~ msgid "Turkey" #~ msgstr "Turquía" #~ msgid "Turkmenistan" #~ msgstr "Turkmenistán" #~ msgid "Turks and Caicos Islands" #~ msgstr "Islas Turks y Caicos" #~ msgid "Tuvalu" #~ msgstr "Tuvalu" #~ msgid "Uganda" #~ msgstr "Uganda" #~ msgid "Ukraine" #~ msgstr "Ucrania" #~ msgid "United Arab Emirates" #~ msgstr "Emiratos Árabes Unidos" #~ msgid "United Kingdom" #~ msgstr "Reino Unido" #~ msgid "United States Minor Outlying Islands" #~ msgstr "Estados Unidos, Islas menores exteriores de" #~ msgid "Uruguay" #~ msgstr "Uruguay" #~ msgid "Uzbekistan" #~ msgstr "Uzbekistán" #~ msgid "Vanuatu" #~ msgstr "Vanuatu" #~ msgid "Venezuela" #~ msgstr "Venezuela" #~ msgid "Virgin Islands, British" #~ msgstr "Islas Vírgenes británicas" #~ msgid "Virgin Islands, U.S." #~ msgstr "Islas Vírgenes estadounidenses" #~ msgid "Wallis and Futuna" #~ msgstr "Wallis y Futuna" #~ msgid "Western Sahara" #~ msgstr "Sahara Occidental" #~ msgid "Yemen" #~ msgstr "Yemen" #~ msgid "Zambia" #~ msgstr "Zambia" #~ msgid "Zimbabwe" #~ msgstr "Zimbabue" #~ msgid "CA Root database file\n" #~ msgstr "Fichero de base de datos de la AC\n" #~ msgid "CA database file" #~ msgstr "Fichero de base de datos de la AC" #~ msgid "..." #~ msgstr "..." gnomint-1.6.4/po/pt_BR.po0000644000000000000000000031055015212761320013722 0ustar00rootroot# Brazilian Portuguese translation for gnomint # Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 # This file is distributed under the same license as the gnomint package. # FIRST AUTHOR , 2009. # msgid "" msgstr "" "Project-Id-Version: gnomint\n" "Report-Msgid-Bugs-To: davefx@gmail.com\n" "POT-Creation-Date: 2026-06-12 10:43+0000\n" "PO-Revision-Date: 2009-06-03 22:30+0000\n" "Last-Translator: Enrico Nicoletto \n" "Language-Team: Brazilian Portuguese \n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-08-11 09:00+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: gconf/org.gnome.gnomint.gschema.xml:7 msgid "Window size" msgstr "Tamanho da janela" #: gconf/org.gnome.gnomint.gschema.xml:8 #, fuzzy msgid "" "The (width,length) size gnoMint should take when started. This cannot be " "smaller than (320,200)." msgstr "" "O tamanho (largura, comprimento) que o gnoMint deve ficar ao iniciar. Isto " "não pode ser menor que (320,200)." #: gconf/org.gnome.gnomint.gschema.xml:16 #, fuzzy msgid "Revoked certificates visibility" msgstr "Visibilidade de certificados revogados" #: gconf/org.gnome.gnomint.gschema.xml:17 msgid "Whether the revoked certificates should be visible." msgstr "Se os certificados revogados devem ser visíveis." #: gconf/org.gnome.gnomint.gschema.xml:24 #, fuzzy msgid "Expired certificates visibility" msgstr "Visibilidade de certificados revogados" #: gconf/org.gnome.gnomint.gschema.xml:25 msgid "" "Whether already-expired certificates should be visible in the certificates " "tree. CAs are always visible regardless of this setting so that any still-" "valid certificates they signed remain reachable." msgstr "" #: gconf/org.gnome.gnomint.gschema.xml:35 msgid "Days before expiration to highlight certificates in amber" msgstr "" #: gconf/org.gnome.gnomint.gschema.xml:36 msgid "" "Certificates whose effective validity ends within this many days are shown " "in amber in the certificates tree, as a heads-up that they should be renewed " "soon. Setting this to 0 disables the amber highlight (certificates appear " "either normally or in gray for already-expired)." msgstr "" #: gconf/org.gnome.gnomint.gschema.xml:47 #, fuzzy msgid "Certificate requests visibility" msgstr "Visibilidade de pedidos de certificado" #: gconf/org.gnome.gnomint.gschema.xml:48 msgid "Whether the certificate requests should be visible." msgstr "Se os pedidos de certificado devem ser visíveis." #: gconf/org.gnome.gnomint.gschema.xml:55 #, fuzzy msgid "Automatic exporting of certificates for gnome-keyring" msgstr "Exportação automática de certificados para o gnome-keyring" #: gconf/org.gnome.gnomint.gschema.xml:56 #, fuzzy msgid "" "Whether the created or imported certificates are automatically exported to " "gnome-keyring certificate-store." msgstr "" "Se os certificados criados ou importados são automaticamente exportados para " "o armazém de certificado do gnome-keyring." #: gui/certificate_popup_menu.ui:7 gui/csr_popup_menu.ui:7 #: gui/main_window.ui:45 #, fuzzy msgid "Properties" msgstr "assunto CSR" #: gui/certificate_popup_menu.ui:13 gui/main_window.ui:35 #, fuzzy msgid "Export full c_hain..." msgstr "Visibilidade de certificados revogados" #: gui/certificate_popup_menu.ui:17 gui/csr_popup_menu.ui:13 #: gui/main_window.ui:34 msgid "E_xport" msgstr "" #: gui/certificate_popup_menu.ui:21 gui/csr_popup_menu.ui:17 #: gui/main_window.ui:23 msgid "Extrac_t private key" msgstr "" #: gui/certificate_popup_menu.ui:27 gui/main_window.ui:24 msgid "Re_new with fresh key" msgstr "" #: gui/certificate_popup_menu.ui:31 msgid "_Compare with PEM file…" msgstr "" #: gui/certificate_popup_menu.ui:35 gui/main_window.ui:25 msgid "Revo_ke" msgstr "" #: gui/certificate_popup_menu.ui:41 gui/main_window.ui:21 msgid "Add _Web Server Certificate (wizard)" msgstr "" #: gui/certificate_popup_menu.ui:45 gui/main_window.ui:22 msgid "Add _Email Server Certificate (wizard)" msgstr "" #: gui/certificate_properties_dialog.ui:19 #, fuzzy msgid "Certificate properties - gnoMint" msgstr "Visibilidade de pedidos de certificado" #: gui/certificate_properties_dialog.ui:54 #, fuzzy msgid "This certificate has been verified for the following uses:" msgstr "Este certificado foi validado para os seguintes usos:" #: gui/certificate_properties_dialog.ui:77 msgid "MD5FINGERPRINT" msgstr "" #: gui/certificate_properties_dialog.ui:88 msgid "SHA1FINGERPRINT" msgstr "" #: gui/certificate_properties_dialog.ui:99 #: gui/certificate_properties_dialog.ui:132 #: gui/certificate_properties_dialog.ui:176 #: gui/certificate_properties_dialog.ui:231 gui/creation_process_window.ui:15 #: gui/creation_process_window.ui:61 gui/csr_properties_dialog.ui:109 #: gui/new_ca_window.ui:56 gui/new_ca_window.ui:306 gui/new_ca_window.ui:521 #: gui/new_req_window.ui:46 gui/new_req_window.ui:157 gui/new_req_window.ui:413 msgid " " msgstr " " #: gui/certificate_properties_dialog.ui:110 msgid "CertExpirationDate" msgstr "" #: gui/certificate_properties_dialog.ui:121 msgid "CertActivationDate" msgstr "" #: gui/certificate_properties_dialog.ui:143 msgid "CAOU" msgstr "" #: gui/certificate_properties_dialog.ui:154 msgid "CAO" msgstr "" #: gui/certificate_properties_dialog.ui:165 msgid "CACN" msgstr "" #: gui/certificate_properties_dialog.ui:187 msgid "CertSN" msgstr "" #: gui/certificate_properties_dialog.ui:198 gui/csr_properties_dialog.ui:63 msgid "SubjectOU" msgstr "" #: gui/certificate_properties_dialog.ui:209 gui/csr_properties_dialog.ui:87 msgid "SubjectO" msgstr "" #: gui/certificate_properties_dialog.ui:220 gui/csr_properties_dialog.ui:98 msgid "SubjectCN" msgstr "" #: gui/certificate_properties_dialog.ui:242 msgid "MD5 fingerprint" msgstr "" #: gui/certificate_properties_dialog.ui:253 msgid "SHA1 fingerprint" msgstr "" #: gui/certificate_properties_dialog.ui:264 #, fuzzy msgid "Fingerprints" msgstr "Impressões digitais" #: gui/certificate_properties_dialog.ui:276 msgid "Expires on" msgstr "" #: gui/certificate_properties_dialog.ui:287 msgid "Activated on" msgstr "" #: gui/certificate_properties_dialog.ui:298 msgid "Validity" msgstr "Validade" #: gui/certificate_properties_dialog.ui:310 #: gui/certificate_properties_dialog.ui:389 gui/csr_properties_dialog.ui:120 msgid "Organizational Unit (OU)" msgstr "" #: gui/certificate_properties_dialog.ui:321 #: gui/certificate_properties_dialog.ui:400 gui/csr_properties_dialog.ui:142 msgid "Organization (O)" msgstr "" #: gui/certificate_properties_dialog.ui:332 #: gui/certificate_properties_dialog.ui:411 gui/csr_properties_dialog.ui:153 msgid "Common Name (CN)" msgstr "" #: gui/certificate_properties_dialog.ui:343 msgid "Emmited by" msgstr "Emitido por" #: gui/certificate_properties_dialog.ui:355 msgid "Subject Alternative Names" msgstr "" #: gui/certificate_properties_dialog.ui:378 msgid "Serial number" msgstr "" #: gui/certificate_properties_dialog.ui:422 #, fuzzy msgid "Certificate subject" msgstr "assunto CSR" #: gui/certificate_properties_dialog.ui:434 msgid "SHA256FINGERPRINT" msgstr "" #: gui/certificate_properties_dialog.ui:449 msgid "SHA256 fingerprint" msgstr "" #: gui/certificate_properties_dialog.ui:460 msgid "SHA512FINGERPRINT" msgstr "" #: gui/certificate_properties_dialog.ui:475 msgid "SHA512 fingerprint" msgstr "" #: gui/certificate_properties_dialog.ui:486 #: gui/certificate_properties_dialog.ui:509 gui/csr_properties_dialog.ui:176 msgid "Email address" msgstr "" #: gui/certificate_properties_dialog.ui:536 gui/csr_properties_dialog.ui:203 msgid "General" msgstr "" #: gui/certificate_properties_dialog.ui:557 #, fuzzy msgid "Certificate hierarchy" msgstr "Hierarquia do certificado" #: gui/certificate_properties_dialog.ui:582 #, fuzzy msgid "Certificate fields" msgstr "Campos do certificado" #: gui/certificate_properties_dialog.ui:605 msgid "Details" msgstr "" #: gui/certificate_properties_dialog.ui:623 msgid "" "\n" "It is recommended that all the certificates generated by a CA\n" "share the same properties.\n" "If you want to generate certificates with different properties, you\n" "should create a hierarchy of CAs, each one with its own policy for\n" "certificate generation.\n" "\n" "Please, define the maximum set of properties for the\n" "certificates that this CA will be able to generate:\n" msgstr "" #: gui/certificate_properties_dialog.ui:649 msgid "" "Maximum number of months before\n" "expiration of the new generated certificates:" msgstr "" #: gui/certificate_properties_dialog.ui:686 msgid "Hours between CRL updates:" msgstr "" #: gui/certificate_properties_dialog.ui:711 msgid "CRL distribution URL:" msgstr "" #: gui/certificate_properties_dialog.ui:727 #, fuzzy msgid "CRL Properties" msgstr "assunto CSR" #: gui/certificate_properties_dialog.ui:750 msgid "Country" msgstr "" #: gui/certificate_properties_dialog.ui:761 msgid "State or Province name" msgstr "" #: gui/certificate_properties_dialog.ui:778 #: gui/certificate_properties_dialog.ui:802 #: gui/certificate_properties_dialog.ui:859 #: gui/certificate_properties_dialog.ui:883 #: gui/certificate_properties_dialog.ui:907 msgid "must be the same" msgstr "" #: gui/certificate_properties_dialog.ui:786 #: gui/certificate_properties_dialog.ui:810 #: gui/certificate_properties_dialog.ui:867 #: gui/certificate_properties_dialog.ui:891 #: gui/certificate_properties_dialog.ui:915 msgid "may differ" msgstr "" #: gui/certificate_properties_dialog.ui:820 msgid "City" msgstr "" #: gui/certificate_properties_dialog.ui:831 msgid "Organization" msgstr "" #: gui/certificate_properties_dialog.ui:842 msgid "Organizational unit" msgstr "" #: gui/certificate_properties_dialog.ui:927 #, fuzzy msgid "Inherited fields from CA subject" msgstr "Campos herdados do assunto de CA" #: gui/certificate_properties_dialog.ui:952 gui/new_cert_window.ui:464 #: src/tls.c:1463 msgid "Certification Authority" msgstr "" #: gui/certificate_properties_dialog.ui:963 gui/new_cert_window.ui:487 #: src/certificate_properties.c:445 src/tls.c:1470 msgid "Non repudiation" msgstr "" #: gui/certificate_properties_dialog.ui:974 gui/new_cert_window.ui:440 #: src/certificate_properties.c:447 src/tls.c:1472 msgid "Key encipherment" msgstr "" #: gui/certificate_properties_dialog.ui:986 gui/new_cert_window.ui:428 #: src/certificate_properties.c:449 src/tls.c:1474 msgid "Data encipherment" msgstr "" #: gui/certificate_properties_dialog.ui:998 gui/new_cert_window.ui:475 #: src/certificate_properties.c:451 src/tls.c:1476 msgid "Key agreement" msgstr "" #: gui/certificate_properties_dialog.ui:1010 gui/new_cert_window.ui:452 #: src/certificate_properties.c:443 src/tls.c:1468 msgid "Digital signature" msgstr "" #: gui/certificate_properties_dialog.ui:1022 gui/new_cert_window.ui:498 #: src/certificate_properties.c:455 src/tls.c:1480 msgid "CRL signing" msgstr "" #: gui/certificate_properties_dialog.ui:1043 #, fuzzy msgid "Uses of new generated certificates" msgstr "Usos dos novos certificados gerados" #: gui/certificate_properties_dialog.ui:1067 gui/new_cert_window.ui:621 #: src/certificate_properties.c:1480 src/tls.c:1500 msgid "Email protection" msgstr "" #: gui/certificate_properties_dialog.ui:1079 gui/new_cert_window.ui:610 #: src/certificate_properties.c:1479 src/tls.c:1498 msgid "Code signing" msgstr "" #: gui/certificate_properties_dialog.ui:1090 gui/new_cert_window.ui:598 msgid "TLS Web client" msgstr "" #: gui/certificate_properties_dialog.ui:1102 gui/new_cert_window.ui:586 msgid "TLS Web server" msgstr "" #: gui/certificate_properties_dialog.ui:1114 gui/new_cert_window.ui:575 #: src/certificate_properties.c:1481 src/tls.c:1502 msgid "Time stamping" msgstr "" #: gui/certificate_properties_dialog.ui:1125 gui/new_cert_window.ui:564 #: src/certificate_properties.c:1483 src/tls.c:1506 msgid "Any purpose" msgstr "" #: gui/certificate_properties_dialog.ui:1136 gui/new_cert_window.ui:553 #: src/certificate_properties.c:1482 src/tls.c:1504 msgid "OCSP signing" msgstr "" #: gui/certificate_properties_dialog.ui:1159 #, fuzzy msgid "Purposes of new generated certificates" msgstr "Objetivos dos novos certificados gerados" #: gui/certificate_properties_dialog.ui:1171 msgid "CA Policy" msgstr "" #: gui/certificate_properties_dialog.ui:1189 gui/csr_properties_dialog.ui:221 #: src/ca.c:2199 msgid "_Close" msgstr "" #: gui/change_password_dialog.ui:9 msgid "Database password protection - gnoMint" msgstr "" #: gui/change_password_dialog.ui:34 msgid "_Yes" msgstr "" #: gui/change_password_dialog.ui:43 msgid "_No" msgstr "" #: gui/change_password_dialog.ui:53 msgid "" "Enter new password again \n" "for confirmation:" msgstr "" #: gui/change_password_dialog.ui:86 msgid "" "Please, enter new \n" "password:" msgstr "" #: gui/change_password_dialog.ui:98 msgid "" "Please, enter current\n" "password:" msgstr "" #: gui/change_password_dialog.ui:121 msgid "" "Protect CA database private\n" "keys with password:" msgstr "" #: gui/change_password_dialog.ui:143 gui/export_certificate_dialog.ui:149 #: gui/get_db_password_dialog.ui:74 gui/get_pkey_dialog.ui:78 #: gui/import_file_or_directory_dialog.ui:94 gui/import_password_dialog.ui:90 #: gui/new_crl_dialog.ui:53 gui/san_editor_dialog.ui:93 msgid "Cancel" msgstr "" #: gui/change_password_dialog.ui:149 gui/get_db_password_dialog.ui:80 #: gui/get_pkey_dialog.ui:84 gui/import_password_dialog.ui:96 #: gui/new_crl_dialog.ui:59 gui/san_editor_dialog.ui:99 msgid "OK" msgstr "" #: gui/creation_process_window.ui:6 msgid "Creating new CA - gnoMint" msgstr "" #: gui/creation_process_window.ui:31 #, fuzzy msgid "Creating CA Root Certificate" msgstr "Visibilidade de certificados revogados" #: gui/creation_process_window.ui:51 gui/get_password_dialog.ui:90 #: gui/new_ca_window.ui:257 gui/new_ca_window.ui:464 gui/new_ca_window.ui:576 #: gui/new_cert_window.ui:257 gui/new_cert_window.ui:339 #: gui/new_cert_window.ui:661 gui/new_req_window.ui:107 #: gui/new_req_window.ui:357 gui/new_req_window.ui:548 gui/wizard_window.ui:117 msgid "_Cancel" msgstr "" #: gui/csr_popup_menu.ui:23 gui/main_window.ui:26 msgid "_Sign" msgstr "" #: gui/csr_popup_menu.ui:27 gui/main_window.ui:27 msgid "Delete" msgstr "" #: gui/csr_properties_dialog.ui:5 #, fuzzy msgid "CSR properties - gnoMint" msgstr "Visibilidade de pedidos de certificado" #: gui/csr_properties_dialog.ui:41 #, fuzzy msgid "" "This Certificate Signing Request has its corresponding private key saved " "in the internal database." msgstr "" "Este Pedido de Assinatura de Certificado possui a sua chave privada " "correspondente salva na base de dados interna." #: gui/csr_properties_dialog.ui:74 gui/new_cert_window.ui:230 #: src/csr_properties.c:86 src/new_cert.c:105 msgid "None" msgstr "" #: gui/csr_properties_dialog.ui:131 msgid "Subject Alternative Name (SAN)" msgstr "" #: gui/csr_properties_dialog.ui:164 msgid "CSR subject" msgstr "assunto CSR" #: gui/dh_parameters_dialog.ui:16 #, fuzzy msgid "New Diffie-Hellman parameters - gnoMint" msgstr "Visibilidade de pedidos de certificado" #: gui/dh_parameters_dialog.ui:27 msgid "" "You are about to create and export a set of\n" "Diffie·Hellman parameters into a PKCS#3 structure file." msgstr "" #: gui/dh_parameters_dialog.ui:38 msgid "" "PKCS#3 files containing Diffie·Hellman parameters are used by some " "cryptographic\n" "applications for a secure interchange of their keys over insecure channels." msgstr "" #: gui/dh_parameters_dialog.ui:48 msgid "Please, enter the prime size, in bits:" msgstr "" #: gui/dh_parameters_dialog.ui:71 msgid "Close" msgstr "" #: gui/dh_parameters_dialog.ui:77 msgid "Generate" msgstr "" #: gui/export_certificate_dialog.ui:5 #, fuzzy msgid "Export certificate - gnoMint" msgstr "Visibilidade de certificados revogados" #: gui/export_certificate_dialog.ui:22 msgid "" "Please, choose which part of the\n" "saved certificate you want to export:" msgstr "" #: gui/export_certificate_dialog.ui:36 msgid "Only the pu_blic part." msgstr "" #: gui/export_certificate_dialog.ui:49 msgid "Export only the certificate to a public file, in PEM format." msgstr "" #: gui/export_certificate_dialog.ui:60 msgid "Only the private key (crypted)." msgstr "" #: gui/export_certificate_dialog.ui:74 msgid "" "Export the saved private key to a PKCS#8 password-\n" "protected file. This file should only be accessed by the\n" "subject of the certificate." msgstr "" #: gui/export_certificate_dialog.ui:87 msgid "Only the private key (uncrypted)." msgstr "" #: gui/export_certificate_dialog.ui:100 msgid "" "Export the saved private key to a PEM file. This option\n" "should only be used for exporting certificates that will be\n" "used in unattended servers." msgstr "" #: gui/export_certificate_dialog.ui:113 msgid "Both parts." msgstr "" #: gui/export_certificate_dialog.ui:126 msgid "" "Export both (private and public) parts to a password-\n" "protected PKCS#12 file. This kind of file can be imported\n" "by other common programs, such as web or mail clients." msgstr "" #: gui/export_certificate_dialog.ui:155 msgid "Export" msgstr "" #: gui/get_db_password_dialog.ui:5 gui/get_password_dialog.ui:5 #: gui/import_password_dialog.ui:5 msgid "Enter password - gnoMint" msgstr "" #: gui/get_db_password_dialog.ui:20 msgid "" "This action requires using one or more private keys saved in the CA " "database.\n" "\n" "Please insert the database password." msgstr "" #: gui/get_db_password_dialog.ui:41 gui/get_password_dialog.ui:68 #: gui/import_password_dialog.ui:65 #, fuzzy msgid "Password:" msgstr "Proteção com senha\n" #: gui/get_db_password_dialog.ui:58 msgid "Remember this password during this gnoMint session" msgstr "" #: gui/get_password_dialog.ui:19 msgid "Please, enter password" msgstr "" #: gui/get_password_dialog.ui:56 msgid "Password (confirm):" msgstr "" #: gui/get_password_dialog.ui:97 gui/new_ca_window.ui:592 #: gui/new_cert_window.ui:676 gui/new_req_window.ui:564 #: gui/preferences_dialog.ui:51 msgid "_OK" msgstr "" #: gui/get_pkey_dialog.ui:9 msgid "Choose private key file. gnoMint" msgstr "" #: gui/get_pkey_dialog.ui:22 #, fuzzy msgid "" "Choose private key file\n" "\n" "For doing the selected operation, you must provide the\n" "file where resides the private key corresponding to the\n" "certificate:" msgstr "" "Escolher arquivo de chave privada\n" "\n" "Para realizar a operação selecionada, você deve fornecer o arquivo onde " "reside a chave privada correspondente ao certificado:" #: gui/get_pkey_dialog.ui:37 #, fuzzy msgid "Certificate DN" msgstr "Visibilidade de pedidos de certificado" #: gui/get_pkey_dialog.ui:43 msgid "Please, choose the file:" msgstr "" #: gui/get_pkey_dialog.ui:62 msgid "_Save filename in the database for automatic loading" msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:7 gui/main_window.ui:62 msgid "gnoMint" msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:8 msgid "X.509 Certification Authority management tool" msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:11 msgid "" "gnoMint is a tool for easily creating and managing certification authorities " "(CAs). It provides fancy visualization of all your certificates, and their " "properties, as well as an easy management of the CA activities." msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:16 msgid "With gnoMint you can:" msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:20 msgid "Create and manage your own Certification Authority (CA)" msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:21 msgid "Create and sign certificates for servers and users" msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:22 #, fuzzy msgid "Create and manage Certificate Signing Requests (CSRs)" msgstr "Visibilidade de pedidos de certificado" #: gui/org.gnome.gnomint.appdata.xml.in:23 msgid "" "Export certificates and private keys in several formats (PEM, DER, PKCS#12)" msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:24 msgid "Revoke certificates and generate Certificate Revocation Lists (CRLs)" msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:25 #, fuzzy msgid "Import existing certificates and CAs" msgstr "Visibilidade de certificados revogados" #: gui/org.gnome.gnomint.appdata.xml.in:27 msgid "" "gnoMint provides a simple and intuitive graphical interface based on GTK for " "all these operations, making certificate management accessible even for " "users without deep knowledge of X.509 standards and cryptography." msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:38 #, fuzzy msgid "Main window showing certificate list" msgstr "Visibilidade de certificados revogados" #: gui/org.gnome.gnomint.desktop.in:2 gui/org.gnome.gnomint.desktop.in:3 msgid "gnoMint X.509 CA Manager" msgstr "" #: gui/org.gnome.gnomint.desktop.in:4 msgid "Manage X.509 certificates and CAs, easily and graphically" msgstr "" #: gui/org.gnome.gnomint.desktop.in:5 msgid "certificate;x.509;encryption;" msgstr "" #: gui/import_file_or_directory_dialog.ui:9 msgid "Import selection - gnoMint" msgstr "" #: gui/import_file_or_directory_dialog.ui:24 msgid "" "Please, choose the more suitable option for\n" "what you want to import:" msgstr "" #: gui/import_file_or_directory_dialog.ui:36 msgid "Import a single file." msgstr "" #: gui/import_file_or_directory_dialog.ui:48 msgid "" "Import a single file, encoded in DER or PEM format, containing\n" "certificates, private keys (encrypted or plain), signing\n" "requests (CSRs), revocation lists (CRLs) or PKCS#12\n" "packages." msgstr "" #: gui/import_file_or_directory_dialog.ui:60 msgid "Import a whole directory." msgstr "" #: gui/import_file_or_directory_dialog.ui:72 msgid "" "Import a directory containing the structure of\n" "a whole CA made with OpenSSL ." msgstr "" #: gui/import_file_or_directory_dialog.ui:100 msgid "Import" msgstr "" #: gui/import_password_dialog.ui:20 msgid "" "The whole selected file, or some of its elements, seems to\n" "be cyphered using a password or passphrase.\n" "\n" "For importing the file into gnoMint database, you must\n" "provide an appropiate password." msgstr "" #: gui/import_password_dialog.ui:37 msgid "" "The part that is being imported has the description:" msgstr "" #: gui/import_password_dialog.ui:48 msgid "#Description#" msgstr "" #: gui/main_window.ui:6 #, fuzzy msgid "_Certificates" msgstr "Visibilidade de certificados revogados" #: gui/main_window.ui:8 #, fuzzy msgid "_New certificate database" msgstr "Visibilidade de certificados revogados" #: gui/main_window.ui:9 #, fuzzy msgid "_Open certificate database" msgstr "Visibilidade de certificados revogados" #: gui/main_window.ui:10 msgid "Open _recents" msgstr "" #: gui/main_window.ui:11 msgid "_Save certificate database as..." msgstr "" #: gui/main_window.ui:15 msgid "Add" msgstr "" #: gui/main_window.ui:17 msgid "_Add self-signed CA" msgstr "" #: gui/main_window.ui:18 #, fuzzy msgid "Add _Certificate Request" msgstr "Visibilidade de pedidos de certificado" #: gui/main_window.ui:29 msgid "Generate _CRL" msgstr "" #: gui/main_window.ui:30 msgid "Generate D_H parameters..." msgstr "" #: gui/main_window.ui:31 msgid "Change database pass_word" msgstr "" #: gui/main_window.ui:33 msgid "_Import" msgstr "" #: gui/main_window.ui:38 msgid "Revoke _all selected..." msgstr "" #: gui/main_window.ui:39 msgid "Delete all selected _CSRs..." msgstr "" #: gui/main_window.ui:41 msgid "_Quit" msgstr "" #: gui/main_window.ui:44 gui/san_manager_widget.ui:34 msgid "_Edit" msgstr "" #: gui/main_window.ui:46 msgid "Preferences" msgstr "" #: gui/main_window.ui:49 msgid "_View" msgstr "" #: gui/main_window.ui:51 #, fuzzy msgid "Certificate _Signing Requests" msgstr "Visibilidade de pedidos de certificado" #: gui/main_window.ui:52 #, fuzzy msgid "_Revoked Certificates" msgstr "Visibilidade de certificados revogados" #: gui/main_window.ui:53 #, fuzzy msgid "E_xpired Certificates" msgstr "Visibilidade de certificados revogados" #: gui/main_window.ui:57 gui/new_ca_window.ui:249 gui/new_ca_window.ui:456 #: gui/new_ca_window.ui:568 gui/new_cert_window.ui:249 #: gui/new_cert_window.ui:331 gui/new_cert_window.ui:653 #: gui/new_req_window.ui:99 gui/new_req_window.ui:349 gui/new_req_window.ui:540 msgid "_Help" msgstr "" #: gui/main_window.ui:58 msgid "About" msgstr "" #: gui/main_window.ui:80 msgid "Create a new database" msgstr "" #: gui/main_window.ui:87 msgid "Open an existing database" msgstr "" #: gui/main_window.ui:99 msgid "Add an autosigned CA" msgstr "" #: gui/main_window.ui:100 #, fuzzy msgid "Add autosigned CA certificate" msgstr "Visibilidade de certificados revogados" #: gui/main_window.ui:111 #, fuzzy msgid "Add a new Certificate Signing Request" msgstr "Visibilidade de pedidos de certificado" #: gui/main_window.ui:112 msgid "Add CSR" msgstr "" #: gui/main_window.ui:129 msgid "Extract the private key of the selected item into a external file" msgstr "" #: gui/main_window.ui:130 msgid "Extract Private Key" msgstr "" #: gui/main_window.ui:142 #, fuzzy msgid "Revoke the selected certificate" msgstr "Visibilidade de certificados revogados" #: gui/main_window.ui:143 msgid "Revoke" msgstr "" #: gui/main_window.ui:151 #, fuzzy msgid "Sign the selected Certificate Signing Request" msgstr "Visibilidade de pedidos de certificado" #: gui/main_window.ui:152 msgid "Sign" msgstr "" #: gui/main_window.ui:164 #, fuzzy msgid "Delete the selected Certificate Signing Request" msgstr "Visibilidade de pedidos de certificado" #: gui/main_window.ui:176 msgid "Quick certificate generation for web server" msgstr "" #: gui/main_window.ui:177 msgid "Web Server Wizard" msgstr "" #: gui/main_window.ui:188 msgid "Quick certificate generation for email server" msgstr "" #: gui/main_window.ui:189 msgid "Email Server Wizard" msgstr "" #: gui/main_window.ui:225 msgid "_Show them" msgstr "" #: gui/main_window.ui:243 msgid "Filter certificates by subject or serial..." msgstr "" #: gui/new_ca_window.ui:20 msgid "New CA - gnoMint" msgstr "" #: gui/new_ca_window.ui:46 #, fuzzy msgid "CA Subject Properties\n" msgstr "Proteção com senha\n" #: gui/new_ca_window.ui:72 gui/new_cert_window.ui:130 gui/new_req_window.ui:303 msgid "Organization:" msgstr "" #: gui/new_ca_window.ui:83 gui/new_cert_window.ui:141 gui/new_req_window.ui:292 msgid "Organization Unit:" msgstr "" #: gui/new_ca_window.ui:94 gui/new_cert_window.ui:152 gui/new_req_window.ui:281 msgid "Country:" msgstr "" #: gui/new_ca_window.ui:106 gui/new_cert_window.ui:163 #: gui/new_req_window.ui:270 msgid "State or Province name: " msgstr "" #: gui/new_ca_window.ui:117 gui/new_cert_window.ui:174 #: gui/new_req_window.ui:259 msgid "City: " msgstr "" #: gui/new_ca_window.ui:164 msgid "" "CA Root Certificate \n" "Common Name (CN):" msgstr "" #: gui/new_ca_window.ui:185 gui/new_cert_window.ui:219 #: gui/new_req_window.ui:203 msgid "Email address:" msgstr "" #: gui/new_ca_window.ui:227 gui/new_req_window.ui:326 msgid "Subject Alternative Names (SAN)" msgstr "" #: gui/new_ca_window.ui:265 gui/new_ca_window.ui:480 gui/new_req_window.ui:115 #: gui/new_req_window.ui:373 msgid "_Next" msgstr "" #: gui/new_ca_window.ui:277 gui/new_cert_window.ui:276 #: gui/new_req_window.ui:127 #, fuzzy msgid "CA properties" msgstr "Visibilidade de pedidos de certificado" #: gui/new_ca_window.ui:296 #, fuzzy msgid "CA Root certificate properties\n" msgstr "Propriedades do Novo Certificado\n" #: gui/new_ca_window.ui:337 msgid "Months before root certificate expiration:" msgstr "" #: gui/new_ca_window.ui:370 gui/new_req_window.ui:453 msgid "P-256 (256 bits)" msgstr "" #: gui/new_ca_window.ui:371 gui/new_req_window.ui:454 msgid "P-384 (384 bits)" msgstr "" #: gui/new_ca_window.ui:372 gui/new_req_window.ui:455 msgid "P-521 (521 bits)" msgstr "" #: gui/new_ca_window.ui:391 gui/new_req_window.ui:474 msgid "RSA" msgstr "" #: gui/new_ca_window.ui:400 gui/new_req_window.ui:484 msgid "DSA" msgstr "" #: gui/new_ca_window.ui:409 gui/new_req_window.ui:493 msgid "ECDSA" msgstr "" #: gui/new_ca_window.ui:418 gui/new_req_window.ui:502 msgid "Ed25519" msgstr "" #: gui/new_ca_window.ui:428 gui/new_req_window.ui:512 src/new_ca_window.c:170 #: src/new_ca_window.c:180 src/new_req_window.c:201 src/new_req_window.c:211 msgid "Private key bit length:" msgstr "" #: gui/new_ca_window.ui:439 gui/new_req_window.ui:523 msgid "Private key type:" msgstr "" #: gui/new_ca_window.ui:472 gui/new_ca_window.ui:584 gui/new_req_window.ui:365 #: gui/new_req_window.ui:556 msgid "_Previous" msgstr "" #: gui/new_ca_window.ui:492 gui/new_req_window.ui:385 #, fuzzy msgid "Root certificate prop" msgstr "Visibilidade de pedidos de certificado" #: gui/new_ca_window.ui:511 #, fuzzy msgid "CA properties\n" msgstr "Proteção com senha\n" #: gui/new_ca_window.ui:535 msgid "CRL Distribution Point:" msgstr "" #: gui/new_ca_window.ui:542 msgid "" "Please, in this field enter an URL where the CRL for this CA will be " "available. \n" "You can leave it blank. In this case, no CRL Distribution Point will be set " "in the CA \n" "Certificate, and you will be able to set it as a new CA property. \n" "This value will be copied into the certificates generated by this CA.\n" "" msgstr "" #: gui/new_ca_window.ui:604 #, fuzzy msgid "Password protect" msgstr "Proteção com senha\n" #: gui/new_cert_window.ui:13 #, fuzzy msgid "New Certificate - gnoMint" msgstr "Visibilidade de pedidos de certificado" #: gui/new_cert_window.ui:36 gui/new_cert_window.ui:293 #: gui/new_cert_window.ui:382 #, fuzzy msgid "New Certificate Properties\n" msgstr "Propriedades do Novo Certificado\n" #: gui/new_cert_window.ui:45 msgid "" "You are about to sign a Certificate Signing Request,\n" "and this way, creating a new certificate. Please\n" "check the certificate properties." msgstr "" #: gui/new_cert_window.ui:64 gui/new_cert_window.ui:75 #: gui/new_cert_window.ui:86 gui/new_cert_window.ui:97 #: gui/new_cert_window.ui:108 gui/new_cert_window.ui:119 msgid "label" msgstr "" #: gui/new_cert_window.ui:185 msgid "" "New certificate \n" "Common Name (CN):" msgstr "" #: gui/new_cert_window.ui:197 msgid "Subject Alternative Names:" msgstr "" #: gui/new_cert_window.ui:302 msgid "" "You are about to sign a Certificate Signing Request.\n" "Please, choose the Certification Authority you are\n" "going to use for signing it." msgstr "" #: gui/new_cert_window.ui:366 msgid "Choose CA for signing the CSR" msgstr "" #: gui/new_cert_window.ui:397 msgid "Months before certificate expiration:" msgstr "" #: gui/new_cert_window.ui:519 #, fuzzy msgid "Certificate uses" msgstr "Usos do certificado" #: gui/new_cert_window.ui:635 #, fuzzy msgid "Certificate purposes" msgstr "Objetivos do certificado" #: gui/new_cert_window.ui:688 #, fuzzy msgid "Certificate properties" msgstr "Visibilidade de pedidos de certificado" #: gui/new_crl_dialog.ui:5 msgid "New CRL - gnoMint" msgstr "" #: gui/new_crl_dialog.ui:17 #, fuzzy msgid "New Certificate Revocation List" msgstr "Nova Lista de Certificados Revogados" #: gui/new_crl_dialog.ui:26 msgid "" "Please, select the CA for which a Certificate \n" "Revocation List is going to be created:" msgstr "" #: gui/new_req_window.ui:12 #, fuzzy msgid "New certificate request - gnoMint" msgstr "Visibilidade de pedidos de certificado" #: gui/new_req_window.ui:36 gui/new_req_window.ui:147 gui/new_req_window.ui:403 #, fuzzy msgid "Certificate Request Properties\n" msgstr "Propriedades de Pedidos de Certificado\n" #: gui/new_req_window.ui:55 msgid "" "The subject of the new certificate request can inherit information\n" "from one of the existing Certification Authorities. This is a must if the\n" "policy of the CA you are going to use is defined to force some fields\n" "of a certificate subject to be the same as the ones in the CA cert\n" "subject." msgstr "" #: gui/new_req_window.ui:67 msgid "Don't inherit any fields from existing Certification Authorities" msgstr "" #: gui/new_req_window.ui:74 msgid "" "Inherit fields according to selected Certification Authority and its policy." msgstr "" #: gui/new_req_window.ui:191 msgid "" "Certificate\n" " Common Name (CN):" msgstr "" #: gui/new_req_window.ui:576 msgid "page 3" msgstr "" #: gui/preferences_dialog.ui:9 #, fuzzy msgid "General Preferences - gnoMint" msgstr "Visibilidade de pedidos de certificado" #: gui/preferences_dialog.ui:26 #, fuzzy msgid "" "Automatically export created certificates to\n" "Gnome-keyring certificate store" msgstr "Exportação automática de certificados para o gnome-keyring" #: gui/preferences_dialog.ui:36 msgid "Export options" msgstr "" #: gui/san_editor_dialog.ui:5 src/certificate_properties.c:1488 msgid "Subject Alternative Name" msgstr "" #: gui/san_editor_dialog.ui:23 msgid "Type:" msgstr "" #: gui/san_editor_dialog.ui:35 msgid "DNS" msgstr "" #: gui/san_editor_dialog.ui:36 src/certificate_properties.c:900 #: src/certificate_properties.c:914 src/certificate_properties.c:1040 msgid "IP Address" msgstr "" #: gui/san_editor_dialog.ui:37 msgid "Email" msgstr "" #: gui/san_editor_dialog.ui:38 src/certificate_properties.c:889 #: src/certificate_properties.c:1032 msgid "URI" msgstr "" #: gui/san_editor_dialog.ui:51 msgid "Value:" msgstr "" #: gui/san_editor_dialog.ui:74 msgid "" "Examples:\n" "DNS: example.com, *.example.com\n" "IP: 192.168.1.1, 2001:db8::1\n" "EMAIL: admin@example.com\n" "URI: https://example.com" msgstr "" #: gui/san_manager_widget.ui:26 msgid "_Add" msgstr "" #: gui/san_manager_widget.ui:43 msgid "_Remove" msgstr "" #: gui/wizard_window.ui:9 #, fuzzy msgid "Certificate Wizard" msgstr "Hierarquia do certificado" #: gui/wizard_window.ui:28 #, fuzzy msgid "Quick Certificate Generation" msgstr "Hierarquia do certificado" #: gui/wizard_window.ui:35 msgid "" "This wizard will create a certificate for your server with default " "settings.\n" "Enter the server name (e.g., my.server.dns.name) and select the CA to sign " "it." msgstr "" #: gui/wizard_window.ui:48 msgid "Server Name:" msgstr "" #: gui/wizard_window.ui:59 msgid "Enter the server DNS name (e.g., my.server.dns.name)" msgstr "" #: gui/wizard_window.ui:69 msgid "Signing CA:" msgstr "" #: gui/wizard_window.ui:88 #, fuzzy msgid "Certificate Type:" msgstr "Visibilidade de pedidos de certificado" #: gui/wizard_window.ui:124 #, fuzzy msgid "_Generate Certificate" msgstr "Visibilidade de certificados revogados" #: gui/wizard_window.ui:140 msgid "Web Server (TLS)" msgstr "" #: gui/wizard_window.ui:141 msgid "Email Server (TLS)" msgstr "" #: src/ca.c:192 #, c-format msgid "Bulk revoke completed with errors. First error: %s" msgstr "" #: src/ca.c:199 #, fuzzy, c-format msgid "%d certificate revoked." msgid_plural "%d certificates revoked." msgstr[0] "Visibilidade de pedidos de certificado" msgstr[1] "Visibilidade de pedidos de certificado" #: src/ca.c:225 #, c-format msgid "Bulk delete completed with errors. First error: %s" msgstr "" #: src/ca.c:240 msgid "" "Certificate renewed. A new certificate with a fresh keypair has been added " "to the database alongside the original." msgstr "" #: src/ca.c:606 src/ca-cli-callbacks.c:167 src/ca-cli-callbacks.c:221 #: src/ca-cli-callbacks.c:733 src/ca-cli-callbacks.c:737 #: src/ca-cli-callbacks.c:1362 src/ca-cli-callbacks.c:1369 #: src/certificate_properties.c:246 src/certificate_properties.c:252 msgid "%m/%d/%Y %H:%M GMT" msgstr "" #: src/ca.c:806 src/ca.c:1927 src/ca.c:1958 src/ca.c:2093 src/ca.c:2322 #: src/ca.c:2350 msgid "Yes" msgstr "" #: src/ca.c:930 src/certificate_properties.c:653 msgid "Subject" msgstr "" #: src/ca.c:965 src/cert_diff.c:122 msgid "Serial" msgstr "" #: src/ca.c:978 src/cert_diff.c:123 msgid "Activation" msgstr "" #: src/ca.c:991 src/cert_diff.c:124 msgid "Expiration" msgstr "" #: src/ca.c:1004 msgid "Revocation" msgstr "" #: src/ca.c:1047 #, c-format msgid "" "Showing only the %d certificate expiring in the next %d days. Close " "this banner to show everything again." msgid_plural "" "Showing only the %d certificates expiring in the next %d days. Close " "this banner to show everything again." msgstr[0] "" msgstr[1] "" #: src/ca.c:1058 #, c-format msgid "" "%d certificate expires in the next %d days. Right-click it to renew " "with a fresh key." msgid_plural "" "%d certificates expire in the next %d days. Right-click each one to " "renew with a fresh key." msgstr[0] "" msgstr[1] "" #: src/ca.c:1369 src/ca.c:1404 src/ca.c:1416 src/export.c:560 src/export.c:639 msgid "There was an error while exporting certificate." msgstr "" #: src/ca.c:1371 src/ca.c:1406 src/ca.c:1418 msgid "There was an error while exporting CSR." msgstr "" #: src/ca.c:1426 src/ca.c:1590 msgid "Certificate exported successfully" msgstr "" #: src/ca.c:1427 msgid "Certificate signing request exported successfully" msgstr "" #: src/ca.c:1445 msgid "Export certificate" msgstr "" #: src/ca.c:1447 msgid "Export certificate signing request" msgstr "" #: src/ca.c:1461 src/ca.c:1523 src/ca.c:1981 msgid "Private key exported successfully" msgstr "" #: src/ca.c:1509 src/ca.c:2057 msgid "Export crypted private key" msgstr "" #: src/ca.c:1568 msgid "Export unencrypted private key" msgstr "" #: src/ca.c:1633 msgid "Export whole certificate in PKCS#12 package" msgstr "" #: src/ca.c:1676 msgid "Unexpected error" msgstr "" #: src/ca.c:1712 msgid "Export CSR - gnoMint" msgstr "" #: src/ca.c:1717 msgid "" "Please, choose which part of the saved Certificate Signing Request you want " "to export:" msgstr "" #: src/ca.c:1722 msgid "" "Export the Certificate Signing Request to a public file, in PEM format." msgstr "" #: src/ca.c:1727 msgid "" "Export the saved private key to a PKCS#8 password-protected file. This " "file should only be accessed by the subject of the Certificate Signing " "Request." msgstr "" #: src/ca.c:1774 msgid "Could not build certificate chain." msgstr "" #: src/ca.c:1781 #, c-format msgid "Failed to write chain: %s" msgstr "" #: src/ca.c:1786 #, fuzzy msgid "Certificate chain exported successfully." msgstr "Visibilidade de pedidos de certificado" #: src/ca.c:1807 msgid "Please select a certificate to export its chain." msgstr "" #: src/ca.c:1831 #, fuzzy msgid "Export certificate chain" msgstr "Visibilidade de certificados revogados" #: src/ca.c:1911 msgid "Please select one or more certificates to revoke." msgstr "" #: src/ca.c:1916 #, c-format msgid "Are you sure you want to revoke %d certificate?" msgid_plural "Are you sure you want to revoke %d certificates?" msgstr[0] "" msgstr[1] "" #: src/ca.c:1920 msgid "" "Revoking a certificate will include it in the next CRL, marking it as " "invalid. CSRs in the selection (if any) are not affected; use \"Delete " "selected CSRs\" for those." msgstr "" #: src/ca.c:1927 src/ca.c:1958 src/ca.c:2093 src/ca.c:2322 src/ca.c:2350 msgid "No" msgstr "" #: src/ca.c:1948 msgid "Please select one or more CSRs to delete." msgstr "" #: src/ca.c:1953 #, c-format msgid "Are you sure you want to delete %d Certificate Signing Request?" msgid_plural "Are you sure you want to delete %d Certificate Signing Requests?" msgstr[0] "" msgstr[1] "" #: src/ca.c:2076 src/ca-cli-callbacks.c:1934 msgid "" "CA certificates cannot be renewed. A renewed CA would have a different key, " "so certificates previously signed by the old CA would no longer chain to it." msgstr "" #: src/ca.c:2087 msgid "" "Renew this certificate?\n" "\n" "gnoMint will issue a new certificate with the same subject and SAN as the " "selected one, signed by the same CA, with a freshly-generated keypair. The " "old certificate will remain in the database — revoke it manually after you " "have deployed the new one." msgstr "" #: src/ca.c:2118 #, c-format msgid "Certificate diff — %d difference" msgid_plural "Certificate diff — %d differences" msgstr[0] "" msgstr[1] "" #: src/ca.c:2147 msgid "Left" msgstr "" #: src/ca.c:2151 msgid "Right" msgstr "" #: src/ca.c:2241 src/ca-cli-callbacks.c:2141 msgid "Cannot read file." msgstr "" #: src/ca.c:2252 msgid "Selected" msgstr "" #: src/ca.c:2278 #, fuzzy msgid "Cannot read PEM of the selected certificate." msgstr "Visibilidade de certificados revogados" #: src/ca.c:2290 msgid "Compare with PEM file…" msgstr "" #: src/ca.c:2312 msgid "Are you sure you want to revoke this certificate?" msgstr "" #: src/ca.c:2313 msgid "" "Revoking a certificate will include it in the next CRL, marking it as " "invalid. This way, any future use of the certificate will be denied (as long " "as the CRL is checked)." msgstr "" #: src/ca.c:2316 msgid "Are you sure you want to revoke this CA certificate?" msgstr "" #: src/ca.c:2317 msgid "" "Revoking a certificate will include it in the next CRL, marking it as " "invalid. This way, any future use of the certificate will be denied (as long " "as the CRL is checked). \n" "\n" "Moreover, revoking a CA certificate can invalidate all the certificates " "generated with it, so all them should be regenerated with a new CA " "certificate." msgstr "" #: src/ca.c:2349 msgid "Are you sure you want to delete this Certificate Signing Request?" msgstr "" #: src/ca.c:2572 msgid "" "The current password you have entered doesn't match with the actual current " "database password." msgstr "" #: src/ca.c:2588 msgid "Error while changing database password. The operation was cancelled." msgstr "" #: src/ca.c:2593 msgid "Password changed successfully" msgstr "" #: src/ca.c:2601 src/ca-cli-callbacks.c:1186 msgid "" "Error while establishing database password. The operation was cancelled." msgstr "" #: src/ca.c:2606 msgid "Password established successfully" msgstr "" #: src/ca.c:2616 msgid "Error while removing database password. The operation was cancelled." msgstr "" #: src/ca.c:2621 msgid "Password removed successfully" msgstr "" #: src/ca.c:2708 msgid "Change CA password - gnoMint" msgstr "" #: src/ca.c:2840 msgid "Diffie-Hellman parameters saved successfully" msgstr "" #: src/ca.c:2872 msgid "Save Diffie-Hellman parameters" msgstr "" #: src/ca.c:2951 #, c-format msgid "Problem when importing '%s' file" msgstr "" #: src/ca.c:3012 msgid "Select PEM file to import" msgstr "" #: src/ca.c:3018 msgid "Select directory to import" msgstr "" #: src/cert_diff.c:70 #, fuzzy msgid "Cannot parse left certificate" msgstr "Visibilidade de certificados revogados" #: src/cert_diff.c:72 #, fuzzy msgid "Cannot parse right certificate" msgstr "Visibilidade de certificados revogados" #: src/cert_diff.c:113 msgid "Subject CN" msgstr "" #: src/cert_diff.c:114 msgid "Subject O" msgstr "" #: src/cert_diff.c:115 msgid "Subject OU" msgstr "" #: src/cert_diff.c:116 msgid "Subject Country" msgstr "" #: src/cert_diff.c:117 msgid "Subject State" msgstr "" #: src/cert_diff.c:118 msgid "Subject Locality" msgstr "" #: src/cert_diff.c:119 msgid "Subject email" msgstr "" #: src/cert_diff.c:120 msgid "Subject DN" msgstr "" #: src/cert_diff.c:121 msgid "Issuer DN" msgstr "" #: src/cert_diff.c:125 msgid "SAN" msgstr "" #: src/cert_diff.c:126 msgid "Key usage / EKU" msgstr "" #: src/cert_diff.c:127 msgid "Subject Key ID" msgstr "" #: src/cert_diff.c:128 msgid "Authority Key ID" msgstr "" #: src/cert_diff.c:129 msgid "CRL distribution" msgstr "" #: src/cert_diff.c:130 msgid "SHA-1 fingerprint" msgstr "" #: src/cert_diff.c:131 msgid "SHA-256 fingerprint" msgstr "" #: src/cert_renewal.c:111 msgid "Cannot parse generated CSR." msgstr "" #: src/cert_renewal.c:125 msgid "Cannot encrypt new private key." msgstr "" #: src/cert_renewal.c:181 src/cert_renewal.c:341 msgid "Cannot read certificate PEM from database." msgstr "" #: src/cert_renewal.c:186 src/cert_renewal.c:347 #, fuzzy msgid "Cannot parse certificate." msgstr "Visibilidade de certificados revogados" #: src/cert_renewal.c:193 src/cert_renewal.c:354 #, c-format msgid "Cannot find issuer CA in this database (issuer DN: %s)." msgstr "" #: src/cert_renewal.c:204 src/cert_renewal.c:315 msgid "Cannot load parent CA material from database." msgstr "" #: src/cert_renewal.c:212 src/cert_renewal.c:221 src/cert_renewal.c:265 #: src/cert_renewal.c:280 msgid "Cannot decrypt parent CA's private key." msgstr "" #: src/ca-cli.c:42 msgid "newdb " msgstr "" #: src/ca-cli.c:42 msgid "Close current file and create a new database with given filename" msgstr "" #: src/ca-cli.c:43 msgid "opendb " msgstr "" #: src/ca-cli.c:43 msgid "Close current file and open the file with given filename" msgstr "" #: src/ca-cli.c:44 msgid "savedbas " msgstr "" #: src/ca-cli.c:44 msgid "Save the current file with a different filename" msgstr "" #: src/ca-cli.c:45 msgid "Get current status (opened file, no. of certificates, etc...)" msgstr "" #: src/ca-cli.c:46 msgid "" "List the certificates in database. With option --see-revoked, lists also the " "revoked ones" msgstr "" #: src/ca-cli.c:48 msgid "List the CSRs in database" msgstr "" #: src/ca-cli.c:49 msgid "addcsr [ca-id-for-inherit-fields]" msgstr "" #: src/ca-cli.c:49 msgid "Start a new CSR creation process" msgstr "" #: src/ca-cli.c:50 msgid "Start a new self-signed CA creation process" msgstr "" #: src/ca-cli.c:51 msgid "extractcertpkey " msgstr "" #: src/ca-cli.c:51 msgid "" "Extract the private key of the certificate with the given internal id and " "saves it into the given file" msgstr "" #: src/ca-cli.c:54 msgid "extractcsrpkey " msgstr "" #: src/ca-cli.c:54 msgid "" "Extract the private key of the CSR with the given internal id and saves it " "into the given file" msgstr "" #: src/ca-cli.c:57 msgid "revoke " msgstr "" #: src/ca-cli.c:57 msgid "Revoke the certificate with the given internal ID" msgstr "" #: src/ca-cli.c:58 msgid "sign " msgstr "" #: src/ca-cli.c:58 msgid "Generate a certificate signing the given CSR with the given CA" msgstr "" #: src/ca-cli.c:59 msgid "delete " msgstr "" #: src/ca-cli.c:59 msgid "Delete the given CSR from the database" msgstr "" #: src/ca-cli.c:60 msgid "crlgen " msgstr "" #: src/ca-cli.c:60 msgid "Generate a new CRL for the given CA, saving it into the file " msgstr "" #: src/ca-cli.c:61 msgid "dhgen " msgstr "" #: src/ca-cli.c:61 msgid "Generate a new DH-parameter set, saving it into the file " msgstr "" #: src/ca-cli.c:62 msgid "Change password for the current database" msgstr "" #: src/ca-cli.c:63 msgid "importfile " msgstr "" #: src/ca-cli.c:63 msgid "Import the file with the given name " msgstr "" #: src/ca-cli.c:64 msgid "importdir " msgstr "" #: src/ca-cli.c:64 msgid "Import the given directory, as a OpenSSL-CA directory" msgstr "" #: src/ca-cli.c:65 msgid "showcert " msgstr "" #: src/ca-cli.c:65 msgid "Show properties of the given certificate" msgstr "" #: src/ca-cli.c:66 msgid "showcsr " msgstr "" #: src/ca-cli.c:66 msgid "Show properties of the given CSR" msgstr "" #: src/ca-cli.c:67 msgid "showpolicy " msgstr "" #: src/ca-cli.c:67 msgid "Show CA policy" msgstr "" #: src/ca-cli.c:68 msgid "setpolicy " msgstr "" #: src/ca-cli.c:68 msgid "Change the given CA policy" msgstr "" #: src/ca-cli.c:69 msgid "Show program preferences" msgstr "" #: src/ca-cli.c:70 msgid "setpreference " msgstr "" #: src/ca-cli.c:70 msgid "Set the given program preference" msgstr "" #: src/ca-cli.c:71 msgid "addservercert " msgstr "" #: src/ca-cli.c:71 msgid "Quick server certificate generation (cert-type: 'web' or 'email')" msgstr "" #: src/ca-cli.c:72 msgid "renewcert " msgstr "" #: src/ca-cli.c:72 msgid "" "Reissue a non-CA certificate with the same subject + SAN and a fresh " "keypair. The old certificate remains in the database. CA certificates cannot " "be renewed." msgstr "" #: src/ca-cli.c:73 msgid "exportchain " msgstr "" #: src/ca-cli.c:73 msgid "" "Export the full certificate chain (leaf → root) for the given certificate as " "a PEM bundle." msgstr "" #: src/ca-cli.c:74 msgid "revokemany [cert-id ...]" msgstr "" #: src/ca-cli.c:74 msgid "Revoke many certificates at once. Non-cert ids are silently skipped." msgstr "" #: src/ca-cli.c:75 msgid "deletemany [csr-id ...]" msgstr "" #: src/ca-cli.c:75 msgid "Delete many CSRs at once. Non-CSR ids are silently skipped." msgstr "" #: src/ca-cli.c:76 msgid "search " msgstr "" #: src/ca-cli.c:76 msgid "" "List certificates and CSRs whose subject or serial contains (case-" "insensitive)." msgstr "" #: src/ca-cli.c:77 msgid "diff " msgstr "" #: src/ca-cli.c:77 msgid "" "Side-by-side diff of two certificates. Each argument is either a numeric DB " "id or a path to a PEM file." msgstr "" #: src/ca-cli.c:78 msgid "Show about message" msgstr "" #: src/ca-cli.c:79 msgid "Show warranty information" msgstr "" #: src/ca-cli.c:80 msgid "Show distribution information" msgstr "" #: src/ca-cli.c:81 msgid "Show version information" msgstr "" #: src/ca-cli.c:82 msgid "Show (this) help message" msgstr "" #: src/ca-cli.c:83 src/ca-cli.c:84 src/ca-cli.c:85 msgid "Close database and exit program" msgstr "" #: src/ca-cli.c:132 #, c-format msgid "Opening database %s..." msgstr "" #: src/ca-cli.c:136 #, c-format msgid " OK.\n" msgstr "" #: src/ca-cli.c:138 #, c-format msgid " Error.\n" msgstr "" #: src/ca-cli.c:153 #, c-format msgid "" "Notice: %d certificate expires within the next %d days. Use `renewcert ` " "to reissue.\n" msgid_plural "" "Notice: %d certificates expire within the next %d days. Use `renewcert ` " "to reissue.\n" msgstr[0] "" msgstr[1] "" #: src/ca-cli.c:187 #, c-format msgid "" "\n" "\n" "%s version %s \"%s\"\n" "%s\n" "\n" msgstr "" #: src/ca-cli.c:188 #, c-format msgid "" "This program comes with ABSOLUTELY NO WARRANTY;\n" "for details type 'warranty'.\n" msgstr "" #: src/ca-cli.c:189 #, c-format msgid "" "This is free software, and you are welcome to redistribute it\n" "under certain conditions; type 'distribution' for details.\n" "\n" msgstr "" #: src/ca-cli.c:231 #, c-format msgid "Unpaired quotes\n" msgstr "" #: src/ca-cli.c:309 #, c-format msgid "" "Invalid command. Try 'help' for getting a list of recognized commands.\n" msgstr "" #: src/ca-cli.c:313 #, c-format msgid "Incorrect number of parameters.\n" msgstr "" #: src/ca-cli.c:314 #, c-format msgid "Syntax: %s\n" msgstr "" #: src/ca-cli-callbacks.c:62 src/ca-cli-callbacks.c:111 msgid "The file already exists, so it will be overwritten." msgstr "" #: src/ca-cli-callbacks.c:62 src/ca-cli-callbacks.c:111 #: src/ca-cli-callbacks.c:824 msgid "Are you sure? Yes/[No] " msgstr "" #: src/ca-cli-callbacks.c:84 #, c-format msgid "Problem when opening new '%s' CA database\n" msgstr "" #: src/ca-cli-callbacks.c:88 #, c-format msgid "File '%s' opened\n" msgstr "" #: src/ca-cli-callbacks.c:98 #, c-format msgid "Problem when opening '%s' CA database\n" msgstr "" #: src/ca-cli-callbacks.c:132 #, c-format msgid "Current opened file: %s\n" msgstr "" #: src/ca-cli-callbacks.c:133 #, c-format msgid "Number of certificates in file: %d\n" msgstr "" #: src/ca-cli-callbacks.c:134 #, c-format msgid "Number of CSRs in file: %d\n" msgstr "" #: src/ca-cli-callbacks.c:169 msgid " (after 2038?)" msgstr "" #: src/ca-cli-callbacks.c:239 #, c-format msgid "Certificates in Database:\n" msgstr "" #: src/ca-cli-callbacks.c:240 #, c-format msgid "Id.\tIs CA?\tCertificate Subject\tKey in DB?\tActivation\t\tExpiration" msgstr "" #: src/ca-cli-callbacks.c:243 #, c-format msgid "\t\tRevocation\n" msgstr "" #: src/ca-cli-callbacks.c:278 #, c-format msgid "Certificate Requests in Database:\n" msgstr "" #: src/ca-cli-callbacks.c:279 #, c-format msgid "Id.\tParent Id.\tCSR Subject\t\tKey in DB?\n" msgstr "" #: src/ca-cli-callbacks.c:309 src/ca-cli-callbacks.c:1129 #: src/ca-cli-callbacks.c:1522 src/ca-cli-callbacks.c:1551 msgid "The given CA id. is not valid" msgstr "" #: src/ca-cli-callbacks.c:362 #, c-format msgid "" "Please enter data corresponding to subject of the Certificate Signing " "Request:\n" msgstr "" #: src/ca-cli-callbacks.c:365 src/ca-cli-callbacks.c:567 msgid "Enter country (C)" msgstr "" #: src/ca-cli-callbacks.c:373 src/ca-cli-callbacks.c:573 msgid "Enter state or province (ST)" msgstr "" #: src/ca-cli-callbacks.c:382 src/ca-cli-callbacks.c:579 msgid "Enter locality or city (L)" msgstr "" #: src/ca-cli-callbacks.c:390 src/ca-cli-callbacks.c:585 msgid "Enter organization (O)" msgstr "" #: src/ca-cli-callbacks.c:398 src/ca-cli-callbacks.c:591 msgid "Enter organizational unit (OU)" msgstr "" #: src/ca-cli-callbacks.c:405 src/ca-cli-callbacks.c:597 msgid "Enter common name (CN)" msgstr "" #: src/ca-cli-callbacks.c:411 src/ca-cli-callbacks.c:603 msgid "Enter email address (leave blank for none)" msgstr "" #: src/ca-cli-callbacks.c:422 src/ca-cli-callbacks.c:614 msgid "" "Enter Subject Alternative Names (SAN) [format: " "DNS:example.com,IP:192.168.1.1]" msgstr "" #: src/ca-cli-callbacks.c:433 src/ca-cli-callbacks.c:625 msgid "Enter type of key you are going to create (RSA/DSA/ECDSA/Ed25519)" msgstr "" #: src/ca-cli-callbacks.c:472 src/ca-cli-callbacks.c:656 msgid "Enter curve size for ECDSA (256, 384, or 521)" msgstr "" #: src/ca-cli-callbacks.c:482 src/ca-cli-callbacks.c:667 msgid "Enter bitlength for the key (it must be a whole multiple of 1024)" msgstr "" #: src/ca-cli-callbacks.c:487 #, c-format msgid "These are the provided CSR properties:\n" msgstr "" #: src/ca-cli-callbacks.c:489 src/ca-cli-callbacks.c:704 #: src/ca-cli-callbacks.c:1350 src/ca-cli-callbacks.c:1411 #, c-format msgid "Subject:\n" msgstr "" #: src/ca-cli-callbacks.c:490 src/ca-cli-callbacks.c:705 #, c-format msgid "\tDistinguished Name: " msgstr "" #: src/ca-cli-callbacks.c:505 src/ca-cli-callbacks.c:720 #: src/ca-cli-callbacks.c:1354 src/ca-cli-callbacks.c:1414 #, c-format msgid "\tSubject Alternative Names: %s\n" msgstr "" #: src/ca-cli-callbacks.c:506 src/ca-cli-callbacks.c:721 #, c-format msgid "Key pair\n" msgstr "" #: src/ca-cli-callbacks.c:512 src/ca-cli-callbacks.c:727 #, c-format msgid "\tType: %s\n" msgstr "" #: src/ca-cli-callbacks.c:514 #, c-format msgid "\tKey size: fixed (Ed25519)\n" msgstr "" #: src/ca-cli-callbacks.c:516 #, c-format msgid "\tCurve: P-%d\n" msgstr "" #: src/ca-cli-callbacks.c:518 src/ca-cli-callbacks.c:729 #, c-format msgid "\tKey bitlength: %d\n" msgstr "" #: src/ca-cli-callbacks.c:521 src/ca-cli-callbacks.c:740 msgid "Do you want to change anything? Yes/[No] " msgstr "" #: src/ca-cli-callbacks.c:525 msgid "" "You are about to create a Certificate Signing Request with these properties." msgstr "" #: src/ca-cli-callbacks.c:526 src/ca-cli-callbacks.c:745 msgid "Are you sure? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:531 src/ca-cli-callbacks.c:750 #: src/ca-cli-callbacks.c:834 src/ca-cli-callbacks.c:965 #: src/ca-cli-callbacks.c:1086 src/ca-cli-callbacks.c:1115 #: src/ca-cli-callbacks.c:1181 src/ca-cli-callbacks.c:1208 #: src/ca-cli-callbacks.c:1236 src/ca-cli-callbacks.c:1251 #: src/ca-cli-callbacks.c:1581 src/ca-cli-callbacks.c:1624 #: src/ca-cli-callbacks.c:1945 #, c-format msgid "Operation cancelled.\n" msgstr "" #: src/ca-cli-callbacks.c:565 #, c-format msgid "" "Please enter data corresponding to subject of the new Certification " "Authority:\n" msgstr "" #: src/ca-cli-callbacks.c:673 msgid "" "Introduce number of months before expiration of the new certification " "authority" msgstr "" #: src/ca-cli-callbacks.c:693 src/new_ca_window.c:457 msgid "" "This system uses a 32-bit time_t and cannot represent dates after " "2038-01-19. The new CA's expiration date has been clamped to that limit. To " "issue longer-lived CAs, run gnoMint on a 64-bit platform." msgstr "" #: src/ca-cli-callbacks.c:702 #, c-format msgid "These are the provided new CA properties:\n" msgstr "" #: src/ca-cli-callbacks.c:730 #, c-format msgid "Validity\n" msgstr "" #: src/ca-cli-callbacks.c:731 src/ca-cli-callbacks.c:1360 #, c-format msgid "Validity:\n" msgstr "" #: src/ca-cli-callbacks.c:734 src/ca-cli-callbacks.c:1363 #, c-format msgid "\tActivated on: %s\n" msgstr "" #: src/ca-cli-callbacks.c:738 src/ca-cli-callbacks.c:1370 #, c-format msgid "\tExpires on: %s\n" msgstr "" #: src/ca-cli-callbacks.c:744 msgid "" "You are about to create a new Certification Authority with these properties." msgstr "" #: src/ca-cli-callbacks.c:770 src/ca-cli-callbacks.c:818 #: src/ca-cli-callbacks.c:1321 msgid "The given certificate id. is not valid" msgstr "" #: src/ca-cli-callbacks.c:777 src/ca-cli-callbacks.c:801 #, c-format msgid "Private key extracted successfully into file '%s'\n" msgstr "" #: src/ca-cli-callbacks.c:794 src/ca-cli-callbacks.c:946 #: src/ca-cli-callbacks.c:1099 src/ca-cli-callbacks.c:1400 msgid "The given CSR id. is not valid" msgstr "" #: src/ca-cli-callbacks.c:824 msgid "This certificate will be revoked." msgstr "" #: src/ca-cli-callbacks.c:830 #, c-format msgid "Certificate revoked.\n" msgstr "" #: src/ca-cli-callbacks.c:844 src/ca-cli-callbacks.c:1381 #, c-format msgid "Certificate uses:\n" msgstr "" #: src/ca-cli-callbacks.c:847 #, c-format msgid "* Certification Authority use enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:849 #, c-format msgid "* Certification Authority use disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:853 #, c-format msgid "* CRL signing use enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:855 #, c-format msgid "* CRL signing use disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:859 #, c-format msgid "* Digital Signature use enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:861 #, c-format msgid "* Digital Signature use disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:865 src/ca-cli-callbacks.c:867 #, c-format msgid "* Data Encipherment use enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:871 #, c-format msgid "* Key Encipherment use enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:873 #, c-format msgid "* Key Encipherment use disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:877 #, c-format msgid "* Non Repudiation use enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:879 #, c-format msgid "* Non Repudiation use disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:883 #, c-format msgid "* Key Agreement use enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:885 #, c-format msgid "* Key Agreement use disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:888 #, c-format msgid "Certificate purposes:\n" msgstr "" #: src/ca-cli-callbacks.c:891 #, c-format msgid "* Email Protection purpose enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:893 #, c-format msgid "* Email Protection purpose disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:897 #, c-format msgid "* Code Signing purpose enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:899 #, c-format msgid "* Code Signing purpose disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:903 #, c-format msgid "* TLS Web Client purpose enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:905 #, c-format msgid "* TLS Web Client purpose disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:909 #, c-format msgid "* TLS Web Server purpose enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:911 #, c-format msgid "* TLS Web Server purpose disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:915 #, c-format msgid "* Time Stamping purpose enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:917 #, c-format msgid "* Time Stamping purpose disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:921 #, c-format msgid "* OCSP Signing purpose enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:923 #, c-format msgid "* OCSP Signing purpose disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:927 #, c-format msgid "* Any purpose enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:929 #, c-format msgid "* Any purpose disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:953 #, c-format msgid "You are about to sign the following Certificate Signing Request:\n" msgstr "" #: src/ca-cli-callbacks.c:955 #, c-format msgid "with the certificate corresponding to the next CA:\n" msgstr "" #: src/ca-cli-callbacks.c:958 msgid "" "Introduce number of months before expiration of the new certificate (0 to " "cancel)" msgstr "" #: src/ca-cli-callbacks.c:984 src/ca-cli-callbacks.c:1072 #, c-format msgid "" "The new certificate will be created with the following uses and purposes:\n" msgstr "" #: src/ca-cli-callbacks.c:987 msgid "Do you want to change any property of the new certificate? Yes/[No] " msgstr "" #: src/ca-cli-callbacks.c:990 msgid "* Enable Certification Authority use? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:992 #, c-format msgid "* Certification Authority use disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:996 msgid "* Enable CRL Signing? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:998 #, c-format msgid "* CRL signing use disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1002 msgid "* Enable Digital Signature use? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1004 #, c-format msgid "* Digital Signature use disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1008 msgid "Enable Data Encipherment use? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1010 #, c-format msgid "* Data Encipherment use disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1014 msgid "Enable Key Encipherment use? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1016 #, c-format msgid "* Key Encipherment use disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1020 msgid "Enable Non Repudiation use? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1022 #, c-format msgid "* Non Repudiation use disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1026 msgid "Enable Key Agreement use? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1028 #, c-format msgid "* Key Agreement use disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1032 msgid "Enable Email Protection purpose? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1034 #, c-format msgid "* Email Protection purpose disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1038 msgid "Enable Code Signing purpose? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1040 #, c-format msgid "* Code Signing purpose disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1044 msgid "Enable TLS Web Client purpose? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1046 #, c-format msgid "* TLS Web Client purpose disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1050 msgid "Enable TLS Web Server purpose? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1052 #, c-format msgid "* TLS Web Server purpose disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1056 msgid "Enable Time Stamping purpose? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1058 #, c-format msgid "* Time Stamping purpose disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1062 msgid "Enable OCSP Signing purpose? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1063 #, c-format msgid "* OCSP Signing purpose disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1067 msgid "Enable any purpose? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1069 #, c-format msgid "* Any purpose disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1077 msgid "" "All the mandatory data for the certificate generation has been gathered." msgstr "" #: src/ca-cli-callbacks.c:1077 msgid "Do you want to proceed with the signing? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1083 #, c-format msgid "Certificate signed.\n" msgstr "" #: src/ca-cli-callbacks.c:1105 msgid "This Certificate Signing Request will be deleted." msgstr "" #: src/ca-cli-callbacks.c:1105 msgid "This operation cannot be undone. Are you sure? Yes/[No] " msgstr "" #: src/ca-cli-callbacks.c:1111 #, c-format msgid "Certificate Signing Request deleted.\n" msgstr "" #: src/ca-cli-callbacks.c:1136 #, c-format msgid "CRL generated successfully into file '%s'\n" msgstr "" #: src/ca-cli-callbacks.c:1153 msgid "The bit-length of the prime number must be whole multiple of 1024" msgstr "" #: src/ca-cli-callbacks.c:1162 #, c-format msgid "Diffie-Hellman parameters created and saved successfully in file '%s'\n" msgstr "" #: src/ca-cli-callbacks.c:1174 msgid "Currently, the database is not password-protected." msgstr "" #: src/ca-cli-callbacks.c:1174 msgid "Do you want to password protect it? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1175 msgid "" "OK. You need to supply a password for protecting the private keys in the\n" "database, so nobody else but authorized people can use them. This password\n" "will be asked any time gnoMint will make use of any private key in database." msgstr "" #: src/ca-cli-callbacks.c:1178 msgid "Insert password:" msgstr "" #: src/ca-cli-callbacks.c:1178 msgid "Insert password (confirm):" msgstr "" #: src/ca-cli-callbacks.c:1179 src/ca-cli-callbacks.c:1249 msgid "The introduced passwords are distinct." msgstr "" #: src/ca-cli-callbacks.c:1190 #, c-format msgid "Password established successfully.\n" msgstr "" #: src/ca-cli-callbacks.c:1197 #, c-format msgid "Nothing done.\n" msgstr "" #: src/ca-cli-callbacks.c:1201 msgid "Currently, the database IS password-protected." msgstr "" #: src/ca-cli-callbacks.c:1201 msgid "Do you want to remove this password protection? Yes/[No] " msgstr "" #: src/ca-cli-callbacks.c:1205 #, c-format msgid "" "For removing the password-protection, the current database password\n" "must be supplied.\n" msgstr "" #: src/ca-cli-callbacks.c:1206 src/ca-cli-callbacks.c:1234 msgid "Please, insert the current database password (Empty to cancel): " msgstr "" #: src/ca-cli-callbacks.c:1213 src/ca-cli-callbacks.c:1241 msgid "" "The current password you have entered\n" "doesn't match with the actual current database password." msgstr "" #: src/ca-cli-callbacks.c:1218 msgid "" "Error while removing database password. \n" "The operation was cancelled." msgstr "" #: src/ca-cli-callbacks.c:1223 #, c-format msgid "Password removed successfully.\n" msgstr "" #: src/ca-cli-callbacks.c:1233 #, c-format msgid "" "You must supply the current database password before changing the password.\n" msgstr "" #: src/ca-cli-callbacks.c:1245 msgid "" "OK. Now you must supply a new password for protecting the private keys in " "the\n" "database, so nobody else but authorized people can use them. This password\n" "will be asked any time gnoMint will make use of any private key in database." msgstr "" #: src/ca-cli-callbacks.c:1248 msgid "Insert new password:" msgstr "" #: src/ca-cli-callbacks.c:1248 msgid "Insert new password (confirm):" msgstr "" #: src/ca-cli-callbacks.c:1257 msgid "" "Error while changing database password. \n" "The operation was cancelled." msgstr "" #: src/ca-cli-callbacks.c:1263 #, c-format msgid "Password changed successfully.\n" msgstr "" #: src/ca-cli-callbacks.c:1281 msgid "Problem when importing the given file." msgstr "" #: src/ca-cli-callbacks.c:1284 #, c-format msgid "File imported successfully.\n" msgstr "" #: src/ca-cli-callbacks.c:1300 #, c-format msgid "Directory imported successfully.\n" msgstr "" #: src/ca-cli-callbacks.c:1343 #, c-format msgid "Certificate:\n" msgstr "" #: src/ca-cli-callbacks.c:1347 #, c-format msgid "\tSerial number: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1351 src/ca-cli-callbacks.c:1357 #: src/ca-cli-callbacks.c:1412 #, c-format msgid "\tDistinguished Name: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1351 src/ca-cli-callbacks.c:1352 #: src/ca-cli-callbacks.c:1357 src/ca-cli-callbacks.c:1358 msgid "None." msgstr "" #: src/ca-cli-callbacks.c:1352 src/ca-cli-callbacks.c:1358 #: src/ca-cli-callbacks.c:1416 #, c-format msgid "\tUnique ID: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1356 #, c-format msgid "Issuer:\n" msgstr "" #: src/ca-cli-callbacks.c:1365 src/ca-cli-callbacks.c:1372 #, c-format msgid "" "\t (warning: this 32-bit build cannot tell a real post-2038 date from an " "overflow; this value may be inaccurate)\n" msgstr "" #: src/ca-cli-callbacks.c:1375 #, c-format msgid "Fingerprints:\n" msgstr "" #: src/ca-cli-callbacks.c:1376 #, c-format msgid "\tSHA1 fingerprint: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1377 #, c-format msgid "\tMD5 fingerprint: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1378 #, c-format msgid "\tSHA256 fingerprint: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1409 #, c-format msgid "Certificate Signing Request:\n" msgstr "" #: src/ca-cli-callbacks.c:1486 msgid "Generated certs inherit Country from CA " msgstr "" #: src/ca-cli-callbacks.c:1487 msgid "Generated certs inherit State from CA " msgstr "" #: src/ca-cli-callbacks.c:1488 msgid "Generated certs inherit Locality from CA " msgstr "" #: src/ca-cli-callbacks.c:1489 msgid "Generated certs inherit Organization from CA " msgstr "" #: src/ca-cli-callbacks.c:1490 msgid "Generated certs inherit Organizational Unit from CA " msgstr "" #: src/ca-cli-callbacks.c:1491 msgid "Country in generated certs must be the same than in CA " msgstr "" #: src/ca-cli-callbacks.c:1492 msgid "State in generated certs must be the same than in CA " msgstr "" #: src/ca-cli-callbacks.c:1493 msgid "Locality in generated certs must be the same than in CA " msgstr "" #: src/ca-cli-callbacks.c:1494 msgid "Organization in generated certs must be the same than in CA " msgstr "" #: src/ca-cli-callbacks.c:1495 msgid "Organizational Unit in generated certs must be the same than in CA" msgstr "" #: src/ca-cli-callbacks.c:1496 msgid "Maximum number of hours between CRL updates " msgstr "" #: src/ca-cli-callbacks.c:1497 msgid "CRL distribution point (URL where CRL is published) " msgstr "" #: src/ca-cli-callbacks.c:1498 msgid "Maximum number of months before expiration of new certs " msgstr "" #: src/ca-cli-callbacks.c:1499 msgid "CA use enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1500 msgid "CRL Sign use enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1501 msgid "Non reputation use enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1502 msgid "Digital signature use enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1503 msgid "Key encipherment use enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1504 msgid "Key agreement use enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1505 msgid "Data encipherment use enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1506 msgid "TLS web server purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1507 msgid "TLS web client purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1508 msgid "Time stamping purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1509 msgid "Code signing server purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1510 msgid "Email protection purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1511 msgid "OCSP signing purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1512 msgid "Any purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1526 #, c-format msgid "Showing policies of the following certificate:\n" msgstr "" #: src/ca-cli-callbacks.c:1528 #, c-format msgid "" "\n" "Policies:\n" msgstr "" #: src/ca-cli-callbacks.c:1530 #, c-format msgid "Id.\tDescription\t\t\t\t\t\t\t\tValue\n" msgstr "" #: src/ca-cli-callbacks.c:1556 msgid "The given policy id is not valid" msgstr "" #: src/ca-cli-callbacks.c:1568 #, c-format msgid "" "You are about to assign to the policy\n" "'%s' the new value '%s'." msgstr "" #: src/ca-cli-callbacks.c:1572 src/ca-cli-callbacks.c:1616 msgid "Are you sure? Yes/[No] : " msgstr "" #: src/ca-cli-callbacks.c:1577 #, c-format msgid "Policy set correctly to '%s'.\n" msgstr "" #: src/ca-cli-callbacks.c:1591 #, c-format msgid "gnoMint-cli current preferences:\n" msgstr "" #: src/ca-cli-callbacks.c:1593 #, c-format msgid "Id.\tName\t\t\tValue\n" msgstr "" #: src/ca-cli-callbacks.c:1594 #, c-format msgid "0\tGnome keyring support\t%d\n" msgstr "" #: src/ca-cli-callbacks.c:1606 msgid "The given preference id is not valid" msgstr "" #: src/ca-cli-callbacks.c:1612 #, c-format msgid "" "You are about to assign to the preference 'Gnome keyring support' the new " "value '%d'." msgstr "" #: src/ca-cli-callbacks.c:1634 #, c-format msgid "" "%s version %s\n" "%s\n" msgstr "" #: src/ca-cli-callbacks.c:1635 #, c-format msgid "" "\n" "Authors:\n" "%s\n" "\n" msgstr "" #: src/ca-cli-callbacks.c:1636 src/ca-cli-callbacks.c:1637 src/main.c:742 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Enrico Nicoletto https://launchpad.net/~liverig" #: src/ca-cli-callbacks.c:1637 #, c-format msgid "" "Translators:\n" "%s\n" msgstr "" #: src/ca-cli-callbacks.c:1644 msgid "" "THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY\n" "APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT\n" "HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY\n" "OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,\n" "THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n" "PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM\n" "IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF\n" "ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n" "\n" "For more information about warranty, see section 15 onwards of the GNU\n" "General Public License. You should have received a copy of the GNU General\n" "Public License along with this program. If not, see\n" ".\n" "\n" msgstr "" #: src/ca-cli-callbacks.c:1662 msgid "" "This program is free software: you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation, either version 3 of the License, or\n" "(at your option) any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program. If not, see .\n" "\n" msgstr "" #: src/ca-cli-callbacks.c:1677 #, c-format msgid "%s version %s \"%s\"\n" msgstr "" #: src/ca-cli-callbacks.c:1686 #, c-format msgid "Available commands:\n" msgstr "" #: src/ca-cli-callbacks.c:1687 #, c-format msgid "===================\n" msgstr "" #: src/ca-cli-callbacks.c:1697 #, c-format msgid "Exiting gnomint-cli...\n" msgstr "" #: src/ca-cli-callbacks.c:1738 msgid "The given CA id is not valid" msgstr "" #: src/ca-cli-callbacks.c:1750 msgid "Certificate type must be 'web' or 'email'" msgstr "" #: src/ca-cli-callbacks.c:1756 msgid "Server name cannot be empty" msgstr "" #: src/ca-cli-callbacks.c:1760 #, c-format msgid "Creating %s certificate for: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1761 msgid "web server" msgstr "" #: src/ca-cli-callbacks.c:1761 msgid "email server" msgstr "" #: src/ca-cli-callbacks.c:1837 #, c-format msgid "Error: Key generation failed: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1845 #, c-format msgid "Error: CSR generation failed: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1854 #, c-format msgid "Error: Failed to parse generated CSR\n" msgstr "" #: src/ca-cli-callbacks.c:1865 #, c-format msgid "Error: Failed to save CSR: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1879 msgid "CSR created with ID: %" msgstr "" #: src/ca-cli-callbacks.c:1903 #, c-format msgid "Error: Failed to sign certificate: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1910 #, c-format msgid "Certificate generated successfully for: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1911 #, c-format msgid "Certificate type: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1911 msgid "Web Server" msgstr "" #: src/ca-cli-callbacks.c:1911 msgid "Email Server" msgstr "" #: src/ca-cli-callbacks.c:1925 msgid "Usage: renewcert " msgstr "" #: src/ca-cli-callbacks.c:1930 src/ca-cli-callbacks.c:1968 msgid "The given certificate id is not valid" msgstr "" #: src/ca-cli-callbacks.c:1941 msgid "" "gnoMint will issue a new certificate with the same subject and SAN as this " "one, signed by the same CA, with a fresh keypair. The old certificate stays " "in place." msgstr "" #: src/ca-cli-callbacks.c:1944 msgid "Renew? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1955 msgid "Certificate renewed. New certificate id: %" msgstr "" #: src/ca-cli-callbacks.c:1963 msgid "Usage: exportchain " msgstr "" #: src/ca-cli-callbacks.c:1974 msgid "Cannot build chain PEM for that certificate." msgstr "" #: src/ca-cli-callbacks.c:1979 msgid "Cannot write chain file." msgstr "" #: src/ca-cli-callbacks.c:1985 #, c-format msgid "Full chain (leaf → root) written to %s\n" msgstr "" #: src/ca-cli-callbacks.c:1992 msgid "Usage: revokemany [cert-id ...]" msgstr "" #: src/ca-cli-callbacks.c:2008 #, fuzzy, c-format msgid "%d certificate revoked.\n" msgid_plural "%d certificates revoked.\n" msgstr[0] "Visibilidade de pedidos de certificado" msgstr[1] "Visibilidade de pedidos de certificado" #: src/ca-cli-callbacks.c:2016 msgid "Usage: deletemany [csr-id ...]" msgstr "" #: src/ca-cli-callbacks.c:2032 #, c-format msgid "%d CSR deleted.\n" msgid_plural "%d CSRs deleted.\n" msgstr[0] "" msgstr[1] "" #: src/ca-cli-callbacks.c:2092 msgid "Usage: search " msgstr "" #: src/ca-cli-callbacks.c:2099 #, c-format msgid "Matches (id\tserial\tsubject):\n" msgstr "" #: src/ca-cli-callbacks.c:2102 #, c-format msgid "%d match.\n" msgid_plural "%d matches.\n" msgstr[0] "" msgstr[1] "" #: src/ca-cli-callbacks.c:2126 #, c-format msgid "'%s' is not a certificate id in this database." msgstr "" #: src/ca-cli-callbacks.c:2134 #, c-format msgid "Cannot read PEM for cert id %s." msgstr "" #: src/ca-cli-callbacks.c:2152 msgid "Usage: diff " msgstr "" #: src/ca-cli-callbacks.c:2168 msgid "Field" msgstr "" #: src/ca-cli-callbacks.c:2181 #, c-format msgid "" "\n" "%d field differs.\n" msgid_plural "" "\n" "%d fields differ.\n" msgstr[0] "" msgstr[1] "" #: src/ca_creation.c:55 src/csr_creation.c:57 msgid "Generating new RSA key pair" msgstr "" #: src/ca_creation.c:64 src/ca_creation.c:88 src/ca_creation.c:109 #: src/ca_creation.c:128 src/csr_creation.c:66 src/csr_creation.c:87 #: src/csr_creation.c:104 src/csr_creation.c:121 msgid "Key generation failed" msgstr "" #: src/ca_creation.c:78 src/csr_creation.c:79 msgid "Generating new DSA key pair" msgstr "" #: src/ca_creation.c:101 src/csr_creation.c:97 msgid "Generating new ECDSA key pair" msgstr "" #: src/ca_creation.c:120 src/csr_creation.c:114 msgid "Generating new Ed25519 key pair" msgstr "" #: src/ca_creation.c:139 msgid "Generating self-signed CA-Root cert" msgstr "" #: src/ca_creation.c:147 msgid "Certificate generation failed" msgstr "" #: src/ca_creation.c:159 msgid "Creating CA database" msgstr "" #: src/ca_creation.c:168 msgid "CA database creation failed" msgstr "" #: src/ca_creation.c:180 msgid "CA generated successfully" msgstr "" #: src/ca_file.c:207 #, c-format msgid "Error opening filename '%s'" msgstr "" #: src/ca_file.c:310 msgid "" "The selected database has been created with a newer version of gnoMint than " "the currently installed." msgstr "" #: src/ca_file.c:1221 msgid "Cannot find last assigned serial number" msgstr "" #: src/ca_file.c:1410 msgid "Cannot find parent CA in database" msgstr "" #: src/ca_file.c:1600 msgid "" "This certificate already exists in the database: cannot insert it twice." msgstr "" #: src/ca_file.c:2044 msgid "" "The given file contains a valid private key. However, it has not been " "imported to the database because it doesn't match any key-less certificate " "or certificate request in the database." msgstr "" #: src/ca_file.c:2047 msgid "" "The given file contains a valid private key. However, it has not been " "imported to the database because it doesn't match any key-less certificate " "in the database." msgstr "" #: src/certificate_properties.c:151 msgid "" "This 32-bit build cannot represent dates after 2038-01-19, so it cannot " "distinguish a genuine date from a later one that overflowed. This value may " "be inaccurate." msgstr "" #: src/certificate_properties.c:383 msgid "Unknown" msgstr "" #: src/certificate_properties.c:453 src/tls.c:1478 msgid "Certificate signing" msgstr "" #: src/certificate_properties.c:457 msgid "Key encipherment only" msgstr "" #: src/certificate_properties.c:459 msgid "Key decipherment only" msgstr "" #: src/certificate_properties.c:472 msgid "Version" msgstr "" #: src/certificate_properties.c:507 msgid "Serial Number" msgstr "" #: src/certificate_properties.c:522 src/certificate_properties.c:1262 msgid "Signature" msgstr "" #: src/certificate_properties.c:525 src/certificate_properties.c:676 #: src/certificate_properties.c:679 src/certificate_properties.c:1228 msgid "Algorithm" msgstr "" #: src/certificate_properties.c:529 src/certificate_properties.c:686 #: src/certificate_properties.c:726 src/certificate_properties.c:763 #: src/certificate_properties.c:1232 msgid "Parameters" msgstr "" #: src/certificate_properties.c:529 src/certificate_properties.c:686 #: src/certificate_properties.c:763 src/certificate_properties.c:767 #: src/certificate_properties.c:781 src/certificate_properties.c:790 #: src/certificate_properties.c:1232 msgid "(unknown)" msgstr "" #: src/certificate_properties.c:563 msgid "Issuer" msgstr "" #: src/certificate_properties.c:598 msgid "Validity" msgstr "" #: src/certificate_properties.c:603 msgid "Not Before" msgstr "" #: src/certificate_properties.c:610 msgid "Not After" msgstr "" #: src/certificate_properties.c:616 msgid "Note" msgstr "" #: src/certificate_properties.c:617 msgid "" "This 32-bit build cannot represent dates after 2038-01-19, so a value marked " "⚠ may be a later date that overflowed and is inaccurate." msgstr "" #: src/certificate_properties.c:673 msgid "Subject Public Key Info" msgstr "" #: src/certificate_properties.c:690 msgid "RSA PublicKey" msgstr "" #: src/certificate_properties.c:702 msgid "Modulus" msgstr "" #: src/certificate_properties.c:710 msgid "Public Exponent" msgstr "" #: src/certificate_properties.c:755 msgid "DSA PublicKey" msgstr "" #: src/certificate_properties.c:767 msgid "Subject Public Key" msgstr "" #: src/certificate_properties.c:781 msgid "Issuer Unique ID" msgstr "" #: src/certificate_properties.c:790 msgid "Subject Unique ID" msgstr "" #: src/certificate_properties.c:813 src/certificate_properties.c:836 #: src/certificate_properties.c:945 src/certificate_properties.c:1058 #: src/certificate_properties.c:1085 src/certificate_properties.c:1124 #: src/certificate_properties.c:1182 src/certificate_properties.c:1457 #: src/san_manager.c:399 msgid "Value" msgstr "" #: src/certificate_properties.c:875 src/certificate_properties.c:1018 msgid "DNS Name" msgstr "" #: src/certificate_properties.c:882 src/certificate_properties.c:1025 msgid "RFC822 Name" msgstr "" #: src/certificate_properties.c:905 src/certificate_properties.c:919 #: src/certificate_properties.c:927 msgid "IP" msgstr "" #: src/certificate_properties.c:936 src/certificate_properties.c:1049 msgid "Directory Name" msgstr "" #: src/certificate_properties.c:973 src/certificate_properties.c:1164 msgid "TRUE" msgstr "" #: src/certificate_properties.c:973 src/certificate_properties.c:1164 msgid "FALSE" msgstr "" #: src/certificate_properties.c:977 msgid "CA" msgstr "" #: src/certificate_properties.c:981 msgid "Path Length Constraint" msgstr "" #: src/certificate_properties.c:1154 msgid "Extensions" msgstr "" #: src/certificate_properties.c:1166 msgid "Critical" msgstr "" #: src/certificate_properties.c:1199 msgid "Certificate" msgstr "" #: src/certificate_properties.c:1225 msgid "Signature Algorithm" msgstr "" #: src/certificate_properties.c:1446 msgid "Name" msgstr "" #: src/certificate_properties.c:1477 src/tls.c:1494 msgid "TLS WWW Server" msgstr "" #: src/certificate_properties.c:1478 msgid "TLS WWW Client" msgstr "" #: src/certificate_properties.c:1484 msgid "Subject Directory Attributes" msgstr "" #: src/certificate_properties.c:1485 msgid "Subject Key Identifier" msgstr "" #: src/certificate_properties.c:1486 msgid "Key Usage" msgstr "" #: src/certificate_properties.c:1487 msgid "Private Key Usage Period" msgstr "" #: src/certificate_properties.c:1489 msgid "Basic Constraints" msgstr "" #: src/certificate_properties.c:1490 msgid "Name Constraints" msgstr "" #: src/certificate_properties.c:1491 msgid "CRL Distribution Points" msgstr "" #: src/certificate_properties.c:1492 msgid "Certificate Policies" msgstr "" #: src/certificate_properties.c:1493 msgid "Policy Mappings" msgstr "" #: src/certificate_properties.c:1494 msgid "Authority Key Identifier" msgstr "" #: src/certificate_properties.c:1495 msgid "Policy Constraints" msgstr "" #: src/certificate_properties.c:1496 msgid "Extended Key Usage" msgstr "" #: src/certificate_properties.c:1497 msgid "Delta CRL Distribution Point" msgstr "" #: src/certificate_properties.c:1498 msgid "Inhibit Any-Policy" msgstr "" #: src/creation_process_window.c:69 msgid "CA creation process finished" msgstr "" #: src/creation_process_window.c:193 msgid "Creation process cancelled" msgstr "" #: src/creation_process_window.c:215 msgid "CSR creation process finished" msgstr "" #: src/creation_process_window.c:288 msgid "Creating Certificate Signing Request" msgstr "" #: src/crl.c:101 msgid "CRL generated successfully" msgstr "" #: src/crl.c:146 msgid "Export Certificate Revocation List" msgstr "" #: src/crl.c:180 src/crl.c:253 src/crl.c:299 msgid "There was an error while generating CRL." msgstr "" #: src/crl.c:189 msgid "There was an error while writing CRL." msgstr "" #: src/crl.c:201 src/crl.c:227 src/crl.c:268 src/crl.c:330 src/crl.c:351 msgid "There was an error while exporting CRL." msgstr "" #: src/crl.c:238 src/crl.c:369 msgid "There was an error while getting revoked certificates." msgstr "" #: src/csr_creation.c:131 msgid "Generating CSR" msgstr "" #: src/csr_creation.c:140 msgid "CSR generation failed" msgstr "" #: src/csr_creation.c:151 msgid "Saving CSR in database" msgstr "" #: src/csr_creation.c:169 msgid "CSR couldn't be saved" msgstr "" #: src/csr_creation.c:180 msgid "CSR generated successfully" msgstr "" #: src/csr_properties.c:91 msgid "" "This Certificate Signing Request has its corresponding private key saved " "in a external file." msgstr "" #: src/dialog.c:123 #, c-format msgid "" "\n" "The password must have, at least, %d characters\n" msgstr "" #: src/dialog.c:581 msgid "To do. Feature not implemented yet." msgstr "" #: src/export.c:43 src/export.c:48 src/export.c:53 msgid "There was an error while saving Diffie-Hellman parameters." msgstr "" #: src/export.c:79 src/export.c:138 src/export.c:146 src/export.c:200 #: src/export.c:210 src/export.c:304 src/export.c:341 src/export.c:376 #: src/export.c:384 src/export.c:424 src/export.c:433 src/export.c:474 msgid "There was an error while exporting private key." msgstr "" #: src/export.c:99 src/export.c:284 src/export.c:357 src/export.c:455 msgid "There was an error while getting private key." msgstr "" #: src/export.c:110 src/export.c:248 msgid "There was an error while uncrypting private key." msgstr "" #: src/export.c:113 src/export.c:264 msgid "" "You need to supply a passphrase for protecting the exported private key, so " "nobody else but authorized people can use it. This passphrase will be asked " "by any application that will make use of the private key." msgstr "" #: src/export.c:116 src/export.c:267 src/export.c:536 src/export.c:715 msgid "Insert passphrase (8 characters or more):" msgstr "" #: src/export.c:116 src/export.c:267 src/export.c:536 src/export.c:715 msgid "Insert passphrase (confirm):" msgstr "" #: src/export.c:117 src/export.c:268 src/export.c:537 src/export.c:716 msgid "The introduced passphrases are distinct." msgstr "" #: src/export.c:120 src/export.c:178 msgid "Operation cancelled." msgstr "" #: src/export.c:130 src/export.c:190 msgid "There was an error while password-protecting private key." msgstr "" #: src/export.c:368 src/export.c:415 msgid "There was an error while decrypting private key." msgstr "" #: src/export.c:513 src/export.c:747 msgid "Unsupported operation: you cannot generate a PKCS#12 for a CSR." msgstr "" #: src/export.c:521 src/export.c:530 src/export.c:695 src/export.c:731 msgid "" "There was an error while getting the certificate and private key from the " "internal database." msgstr "" #: src/export.c:533 src/export.c:712 msgid "" "You need to supply a passphrase for protecting the exported certificate, so " "nobody else but authorized people can use it. This passphrase will be asked " "by any application that will import the certificate." msgstr "" #: src/export.c:555 src/export.c:629 msgid "There was an error while generating the PKCS#12 package." msgstr "" #: src/export.c:569 src/export.c:578 src/export.c:652 src/export.c:663 msgid "There was an error while exporting the certificate." msgstr "" #: src/gnomint-cli.c:59 msgid "- A Certification Authority manager" msgstr "" #: src/gnomint-cli.c:62 #, c-format msgid "Failed to initialize: %s\n" msgstr "" #: src/import.c:171 #, c-format msgid "" "The whole selected file, or some of its elements, seems to\n" "be cyphered using a password or passphrase. For importing\n" "the file into gnoMint database, you must provide an \n" "appropriate password.\n" msgstr "" #: src/import.c:176 #, c-format msgid "Please introduce password for `%s'" msgstr "" #: src/import.c:218 #, c-format msgid "" "Couldn't import the certificate request. \n" "The database returned this error: \n" "\n" "'%s'" msgstr "" #: src/import.c:298 msgid "" "The imported certificate expires after 2038-01-19, a date this 32-bit build " "cannot represent. Its stored expiration has been capped and may be " "inaccurate. The certificate itself is unchanged; open it on a 64-bit system " "to see the exact date." msgstr "" #: src/import.c:310 #, c-format msgid "" "Couldn't import the certificate. \n" "The database returned this error: \n" "\n" "'%s'" msgstr "" #: src/import.c:666 src/import.c:852 msgid "PKCS#8 crypted private key" msgstr "" #: src/import.c:677 src/import.c:862 msgid "The given password doesn't match the one used for crypting this part" msgstr "" #: src/import.c:771 msgid "Encrypted PKCS#12 bag" msgstr "" #: src/import.c:788 msgid "" "The given password doesn't match with the password used for encrypting this " "part." msgstr "" #: src/import.c:999 msgid "Couldn't find any supported format in the given file" msgstr "" #: src/import.c:1012 src/import.c:1363 #, c-format msgid "Couldn't open %s file. Check permissions." msgstr "" #: src/import.c:1039 #, c-format msgid "Couldn't recognize the file %s as a RSA or DSA private key." msgstr "" #: src/import.c:1055 #, c-format msgid "Private key for %s" msgstr "" #: src/import.c:1057 #, c-format msgid "Private key %s" msgstr "" #: src/import.c:1092 msgid "Problem while calling to openssl for decyphering private key." msgstr "" #: src/import.c:1100 #, c-format msgid "" "OpenSSL has returned the following error while trying to decypher the " "private key:\n" "\n" "%s" msgstr "" #: src/import.c:1211 msgid "There was a problem while importing the public CA root certificate" msgstr "" #: src/import.c:1225 msgid "CA Root certificate" msgstr "" #: src/import.c:1227 msgid "" "There was a problem while importing the private key corresponding to CA root " "certificate" msgstr "" #: src/import.c:1237 msgid "There was a problem while opening the directory certs/." msgstr "" #: src/import.c:1261 msgid "There was a problem while opening the directory newcerts/." msgstr "" #: src/import.c:1288 msgid "There was a problem while opening the directory req." msgstr "" #: src/import.c:1314 msgid "There was a problem while opening the directory crl/." msgstr "" #: src/import.c:1336 msgid "There was a problem while opening the directory keys/." msgstr "" #: src/import.c:1394 msgid "Files in the directory don't belong to any supported CA format." msgstr "" #: src/main.c:567 #, c-format msgid "" "Problem when creating '%s' CA database:\n" "%s" msgstr "" #: src/main.c:577 #, c-format msgid "Problem when opening new '%s' CA database" msgstr "" #: src/main.c:591 msgid "Create new CA database" msgstr "" #: src/main.c:616 #, c-format msgid "Problem when opening '%s' CA database" msgstr "" #: src/main.c:630 msgid "Open CA database" msgstr "" #: src/main.c:662 msgid "Save CA database as..." msgstr "" #: src/main.c:722 msgid "" "gnoMint is a program for creating and managing Certification Authorities, " "and their certificates" msgstr "" #: src/main.c:725 msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU General Public License as published by the Free " "Software Foundation; either version 3 of the License, or (at your option) " "any later version.\n" "\n" "This program is distributed in the hope that it will be useful, but WITHOUT " "ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or " "FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for " "more details.\n" "\n" "You should have received a copy of the GNU General Public License along with " "this program; if not, write to the Free Software Foundation, Inc., 51 " "Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA." msgstr "" #: src/main.c:741 msgid "Code collaborators" msgstr "" #: src/new_ca_window.c:191 src/new_req_window.c:222 msgid "ECDSA curve:" msgstr "" #: src/new_ca_window.c:219 msgid "Please enter a Common Name (CN) for the CA." msgstr "" #: src/new_cert.c:197 msgid "" "The policy of this CA obligue the country field of the certificates to be " "the same as the one in the CA cert." msgstr "" #: src/new_cert.c:203 msgid "" "The policy of this CA obligue the state/province field of the certificates " "to be the same as the one in the CA cert." msgstr "" #: src/new_cert.c:209 msgid "" "The policy of this CA obligue the locality/city field of the certificates to " "be the same as the one in the CA cert." msgstr "" #: src/new_cert.c:215 msgid "" "The policy of this CA obligue the organization field of the certificates to " "be the same as the one in the CA cert." msgstr "" #: src/new_cert.c:221 msgid "" "The policy of this CA obligue the organizational unit field of the " "certificates to be the same as the one in the CA cert." msgstr "" #: src/new_cert.c:659 msgid "" "The expiration date of the new certificate is after the expiration date of " "the CA certificate.\n" "\n" "According to the current standards, this is not allowed. The new certificate " "will be created with the same expiration date as the CA certificate." msgstr "" #: src/new_cert.c:734 msgid "" "This system uses a 32-bit time_t and cannot represent dates after " "2038-01-19. The new certificate's expiration date has been clamped to that " "limit. To issue longer-lived certificates, run gnoMint on a 64-bit platform." msgstr "" #: src/new_cert.c:770 src/new_cert.c:809 src/new_cert.c:838 msgid "Error while signing CSR." msgstr "" #: src/new_req_window.c:374 msgid "Please enter a Common Name (CN) for the certificate request." msgstr "" #: src/pkey_manage.c:124 #, c-format msgid "" "The file that holds private key for certificate '%s' is password-protected.\n" "\n" "Please, insert the password corresponding to this file." msgstr "" #: src/pkey_manage.c:163 #, c-format msgid "" "The file that holds private key for certificate\n" "'%s' is password-protected.\n" "\n" msgstr "" #: src/pkey_manage.c:211 src/pkey_manage.c:303 msgid "" "The given password doesn't match with the one used while crypting the file." msgstr "" #: src/pkey_manage.c:226 src/pkey_manage.c:315 src/pkey_manage.c:476 msgid "" "The file designated in database contains a private key, but it is not the " "private key corresponding to the certificate." msgstr "" #: src/pkey_manage.c:229 src/pkey_manage.c:318 src/pkey_manage.c:479 msgid "" "The file designated in database doesn't contain any recognized private key." msgstr "" #: src/pkey_manage.c:233 src/pkey_manage.c:500 msgid "The file designated in database couldn't be opened." msgstr "" #: src/pkey_manage.c:236 src/pkey_manage.c:503 msgid "The file designated in database doesn't exist." msgstr "" #: src/pkey_manage.c:360 msgid "Select private key file" msgstr "" #: src/pkey_manage.c:1069 src/pkey_manage.c:1164 msgid "The given password doesn't match the one used in the database" msgstr "" #: src/pkey_manage.c:1151 #, c-format msgid "" "This action requires using one or more private keys saved in the database.\n" msgstr "" #: src/pkey_manage.c:1152 msgid "Please insert the database password:" msgstr "" #: src/san_manager.c:71 msgid "Value cannot be empty" msgstr "" #: src/san_manager.c:82 msgid "Invalid DNS name. Use format: example.com or *.example.com" msgstr "" #: src/san_manager.c:93 msgid "Invalid IP address. Use IPv4 (e.g., 192.168.1.1) or IPv6 format" msgstr "" #: src/san_manager.c:103 msgid "Invalid email address. Use format: user@example.com" msgstr "" #: src/san_manager.c:113 msgid "Invalid URI. Must start with http://, https://, ftp://, or ldap://" msgstr "" #: src/san_manager.c:389 msgid "Type" msgstr "" #: src/tls.c:198 src/tls.c:231 src/tls.c:276 src/tls.c:307 #, c-format msgid "Error initializing private key structure." msgstr "" #: src/tls.c:204 src/tls.c:237 src/tls.c:281 src/tls.c:311 #, c-format msgid "Error creating private key: %d" msgstr "" #: src/tls.c:215 src/tls.c:248 src/tls.c:289 src/tls.c:321 src/tls.c:794 #: src/tls.c:1204 #, c-format msgid "Error exporting private key to PEM structure." msgstr "" #: src/tls.c:656 #, c-format msgid "Error when initializing certificate structure" msgstr "" #: src/tls.c:662 src/tls.c:956 #, c-format msgid "Error when setting certificate version" msgstr "" #: src/tls.c:672 src/tls.c:969 #, c-format msgid "Error when setting certificate serial number" msgstr "" #: src/tls.c:681 src/tls.c:978 #, c-format msgid "Error when setting activation time" msgstr "" #: src/tls.c:686 src/tls.c:986 #, c-format msgid "Error when setting expiration time" msgstr "" #: src/tls.c:740 src/tls.c:1040 #, c-format msgid "Error when setting basicConstraint extension" msgstr "" #: src/tls.c:745 src/tls.c:1082 #, c-format msgid "Error when setting keyUsage extension" msgstr "" #: src/tls.c:756 src/tls.c:864 src/tls.c:1120 #, c-format msgid "Error when setting Subject Alternative Name extension" msgstr "" #: src/tls.c:768 src/tls.c:1056 #, c-format msgid "Error when setting subject key identifier extension" msgstr "" #: src/tls.c:772 src/tls.c:1030 #, c-format msgid "Error when setting authority key identifier extension" msgstr "" #: src/tls.c:782 #, c-format msgid "Error when signing self-signed certificate" msgstr "" #: src/tls.c:813 #, c-format msgid "Error when initializing privkey structure" msgstr "" #: src/tls.c:817 #, c-format msgid "Error when importing private key into privkey structure" msgstr "" #: src/tls.c:821 #, c-format msgid "Error when initializing csr structure" msgstr "" #: src/tls.c:825 #, c-format msgid "Error when setting csr version" msgstr "" #: src/tls.c:869 #, c-format msgid "Error when signing self-signed csr" msgstr "" #: src/tls.c:880 #, c-format msgid "Error exporting CSR to PEM structure." msgstr "" #: src/tls.c:933 #, c-format msgid "Error when importing CA private key" msgstr "" #: src/tls.c:940 #, c-format msgid "Error when initializing crt structure" msgstr "" #: src/tls.c:948 #, c-format msgid "Error when copying data from CSR to certificate structure" msgstr "" #: src/tls.c:1182 #, c-format msgid "Error when signing certificate: %s" msgstr "" #: src/tls.c:1482 msgid "Key encipher only" msgstr "" #: src/tls.c:1484 msgid "Key decipher only" msgstr "" #: src/tls.c:1496 msgid "TLS WWW Client." msgstr "" #: src/wizard_window.c:239 #, c-format msgid "" "Key generation failed:\n" "%s" msgstr "" #: src/wizard_window.c:249 #, c-format msgid "" "CSR generation failed:\n" "%s" msgstr "" #: src/wizard_window.c:260 msgid "Failed to parse generated CSR." msgstr "" #: src/wizard_window.c:271 #, c-format msgid "" "Failed to save CSR:\n" "%s" msgstr "" #: src/wizard_window.c:294 #, c-format msgid "" "Failed to sign certificate:\n" "%s" msgstr "" #: src/wizard_window.c:297 #, fuzzy msgid "Certificate generated successfully!" msgstr "Visibilidade de pedidos de certificado" #: src/wizard_window.c:311 msgid "Please enter a server name." msgstr "" #: src/wizard_window.c:318 msgid "Please select a Certificate Authority." msgstr "" #: src/wizard_window.c:325 msgid "Invalid Certificate Authority selected." msgstr "" #: src/wizard_window.c:412 msgid "No Certificate Authority found. Please create a CA first." msgstr "" #, fuzzy #~ msgid "<b>Certificate subject</b>" #~ msgstr "Assunto do certificado" #, fuzzy #~ msgid "<big>CA properties</big>" #~ msgstr "Propriedades da CA\n" gnomint-1.6.4/po/es.gmo0000644000000000000000000031616115212761320013473 0ustar00rootrootv|7I II J J6JOJ`JtJJJJJJ KK'%KMK \K1hKKKK"K0K2K2LJL]L.oL L!LLL%L!M>M1ZM(M'M*M!N *N+KN!wN+N"N!N. O%9O$_OO/O)O'O&PEP*cP!P P)P PQ*G&CnBBB8B{B,Jj#= @/p'Ǐ$.!5P L&);eQO'P:x?BG63~ Óԓ ݓ B8J`rBܔ &Y+YB<L$[9BؖMBi%*ڗ ,>'X"!Ř9ȘBUZ ` ju8#T xBȚ˚!Ԝ  V${ ʝ۝B 1?BXў :!Z#|ϟ +<<yOO$5"Z&}0)ա11DJFV֢-Mj&@V@Sc !Τ2#6*H s&%&)*2=] /֦-+A@  2T ȩDD%1jܪD-rxɭ٭#:/Yծ & Bc| կ(8R/5geͱ-ұ   *+KBwѲ *D _j zȳ ٳ  ' 9 G Q[ d n zŷBԷBZ`_A^_a3w3_K.߻M\%;&a*D=(KfQ $%(J&sJmsSry:td)MXBg756:O40''/@/p3(8-66d\9:20m%'*1sIKH !Rzt8M(ev "B0#s?'!/I'y)  "8? GRcu3;ko3 -1_>cULLEdALF`27K Sah  4> s~!/ )"J(m $" `-f=!* 0;L]ov"%% /BSf 3 "*C]y& ) 4 UW `4l35$ 0CAV <%" 6,(c%C63-<a/,8&45[(%OC0@t.=/";R1.9,))V2%";,8(e;.+<%/b,=0-.+\!"3Vu,7)",LryxBe076 ,W 9-IR+~_/a$*OQH:     $!6F0})0%  /P9SDh;-5i! 8+ad =<@}1(%PhmqvU  ;= y 3    , /5 !e % %  8 5 )K Mu 9 4 D2 #w * , * 2 4Q ;  )  0 >$Jo0%.%H,nb )"I$l%{1m,3/Cs &%%:.`#.- Y'A(Mdw/Ej Zw7? JKP6<60g#"#, K WDxA %O65@0W7?2$'M02~ L !!AC-G<DX   - B "X R{ 4 0!F4!6{!1!*!3"3C"4w"5"3"#[1#7###:#:3$!n$9$$#$ %,,%>Y%E% %?%1?&1q&&B&+'1.'.`',',','8((O(:x(.(4(+))C)-m)')8)")'*%G*\m*[*^&+]+\+@,*U,1,+,,,- -x9-- -%- -....@.o...$.N.7/W/t/j/!/20M0 d0p00b0m1Fn111(1!1 2@2`2f2|2r263E3WY3/33 3 44 -4D:4Z4]4L85X5O5P.6Y6%6!6#!7%E7!k747G77 8B8 E8S8Ir88*889 9&A9$h9'9i9#:RC::': :-:'';'O;w;W;c;:K<B<D<D=RS=D== =>> >+>YB>>>>>>Q?b?"??? ?w?FH@t@KAPAcA4rA;A!AMBJSBIBB,B2CPCWCoCCC+C)C+D4DT7D DLDDDD EE&EE'F 7FQEFF"FG!H$I&I@IZIkITIIIJ (J6JHJH]JJJ=J K K1KBKSK pK|KK!K"K$KL 8L"YL |L L,LBL,M_GMeM/ N#=N6aN=N;N;ONO?eO@ORO"9P!\P~P1PNPoQQQ,Q Q QR%(R"NR3qRRR:R* S/8S6hS7S<S=T:RT TJTT@T:8UNsU UUUUV>V,V'XcdǃmS.Ӈ" 3?[X-18"M;p‰ʉ Ӊ݉  2L5<~r0"5>H8MČOTbcDHPޏِڑ1  ,4T\q x$ #  .JE &<Փ&-T(h9,˔3 8?/xq͕?, &٘ !@ IVe ™6ݙ1=B)+ǚ$3 5.B5I"ij{[S> b'lZ_r pfQ sF#V6T'M6#]n97Vs&f>BHgjo,[ON'lGU=\E.6Ke* ANn%@~; MS7J}7+Z-";NocE,%j<X ?+tW0;SYIO^i+1AZYqvmVFX~G51qRkeoiK?>_DD{evhdF}U!/~t1 ah3pZ`#l[p?3fX^Jw?t.q< B8WG@!(4&-)dnuQAqKPD-k9 !|1&2}&c@zE\  OlEc*'z N/L$u\(;a2 sS|(w):< P$k*:R|8d_(8+`=ULvyg: Hr!GMT^45W[UJO4^QJfH,"B]H4t uA5p,0BmWaP)/yhIaCTYCndI0=]0v-R# R$j@ /M2 )>xmmeCC VFs8w`xPr{Tb`b:=%.bx3u6$LL*X 9rzg c2%yYh] 7"i.ok_QD3 9gK<\ Revocation Activated on: %s Curve: P-%d Distinguished Name: Distinguished Name: %s Expires on: %s Key bitlength: %d Key size: fixed (Ed25519) MD5 fingerprint: %s SHA1 fingerprint: %s SHA256 fingerprint: %s Serial number: %s Subject Alternative Names: %s Type: %s Unique ID: %s %d field differs. %d fields differ. Authors: %s Policies: The password must have, at least, %d characters Error. OK. %d CSR deleted. %d CSRs deleted. %d certificate revoked.%d certificates revoked.%d certificate revoked. %d certificates revoked. %d match. %d matches. %m/%d/%Y %H:%M GMT%s version %s %s '%s' is not a certificate id in this database.(unknown)* Any purpose disabled by policy * Any purpose disabled. * Any purpose enabled. * CRL signing use disabled by policy * CRL signing use disabled. * CRL signing use enabled. * Certification Authority use disabled by policy * Certification Authority use disabled. * Certification Authority use enabled. * Code Signing purpose disabled by policy * Code Signing purpose disabled. * Code Signing purpose enabled. * Data Encipherment use disabled by policy * Data Encipherment use enabled. * Digital Signature use disabled by policy * Digital Signature use disabled. * Digital Signature use enabled. * Email Protection purpose disabled by policy * Email Protection purpose disabled. * Email Protection purpose enabled. * Enable CRL Signing? [Yes]/No * Enable Certification Authority use? [Yes]/No * Enable Digital Signature use? [Yes]/No * Key Agreement use disabled by policy * Key Agreement use disabled. * Key Agreement use enabled. * Key Encipherment use disabled by policy * Key Encipherment use disabled. * Key Encipherment use enabled. * Non Repudiation use disabled by policy * Non Repudiation use disabled. * Non Repudiation use enabled. * OCSP Signing purpose disabled by policy * OCSP Signing purpose disabled. * OCSP Signing purpose enabled. * TLS Web Client purpose disabled by policy * TLS Web Client purpose disabled. * TLS Web Client purpose enabled. * TLS Web Server purpose disabled by policy * TLS Web Server purpose disabled. * TLS Web Server purpose enabled. * Time Stamping purpose disabled by policy * Time Stamping purpose disabled. * Time Stamping purpose enabled. - A Certification Authority manager0 Gnome keyring support %d %d certificate expires in the next %d days. Right-click it to renew with a fresh key.%d certificates expire in the next %d days. Right-click each one to renew with a fresh key.CRL PropertiesCSR subjectCertificate fieldsCertificate hierarchyCertificate purposesCertificate subjectCertificate usesEmmited byFingerprintsInherited fields from CA subjectPurposes of new generated certificatesQuick Certificate GenerationSubject Alternative Names (SAN)This Certificate Signing Request has its corresponding private key saved in a external file.This Certificate Signing Request has its corresponding private key saved in the internal database.This certificate has been verified for the following uses:Uses of new generated certificatesValidityNew Certificate Revocation ListCA Root certificate properties CA Subject Properties CA properties Certificate Request Properties Choose private key file For doing the selected operation, you must provide the file where resides the private key corresponding to the certificate:New Certificate Properties Export both (private and public) parts to a password- protected PKCS#12 file. This kind of file can be imported by other common programs, such as web or mail clients.Export only the certificate to a public file, in PEM format.Export the Certificate Signing Request to a public file, in PEM format.Export the saved private key to a PEM file. This option should only be used for exporting certificates that will be used in unattended servers.Export the saved private key to a PKCS#8 password- protected file. This file should only be accessed by the subject of the certificate.Export the saved private key to a PKCS#8 password-protected file. This file should only be accessed by the subject of the Certificate Signing Request.Import a directory containing the structure of a whole CA made with OpenSSL .Import a single file, encoded in DER or PEM format, containing certificates, private keys (encrypted or plain), signing requests (CSRs), revocation lists (CRLs) or PKCS#12 packages. It is recommended that all the certificates generated by a CA share the same properties. If you want to generate certificates with different properties, you should create a hierarchy of CAs, each one with its own policy for certificate generation. Please, define the maximum set of properties for the certificates that this CA will be able to generate: #Description#PKCS#3 files containing Diffie·Hellman parameters are used by some cryptographic applications for a secure interchange of their keys over insecure channels.The part that is being imported has the description:Please, in this field enter an URL where the CRL for this CA will be available. You can leave it blank. In this case, no CRL Distribution Point will be set in the CA Certificate, and you will be able to set it as a new CA property. This value will be copied into the certificates generated by this CA. The subject of the new certificate request can inherit information from one of the existing Certification Authorities. This is a must if the policy of the CA you are going to use is defined to force some fields of a certificate subject to be the same as the ones in the CA cert subject.=================== AboutActivated onActivationAddAdd CSRAdd _Certificate RequestAdd _Email Server Certificate (wizard)Add _Web Server Certificate (wizard)Add a new Certificate Signing RequestAdd an autosigned CAAdd autosigned CA certificateAlgorithmAll the mandatory data for the certificate generation has been gathered.Any purposeAny purpose enabled in generated certs Are you sure you want to delete %d Certificate Signing Request?Are you sure you want to delete %d Certificate Signing Requests?Are you sure you want to delete this Certificate Signing Request?Are you sure you want to revoke %d certificate?Are you sure you want to revoke %d certificates?Are you sure you want to revoke this CA certificate?Are you sure you want to revoke this certificate?Are you sure? Yes/[No] Are you sure? Yes/[No] : Are you sure? [Yes]/No Authority Key IDAuthority Key IdentifierAutomatic exporting of certificates for gnome-keyringAutomatically export created certificates to Gnome-keyring certificate storeAvailable commands: Basic ConstraintsBoth parts.Bulk delete completed with errors. First error: %sBulk revoke completed with errors. First error: %sCACA PolicyCA Root Certificate Common Name (CN):CA Root certificateCA certificates cannot be renewed. A renewed CA would have a different key, so certificates previously signed by the old CA would no longer chain to it.CA creation process finishedCA database creation failedCA generated successfullyCA propertiesCA use enabled in generated certs CACNCAOCAOUCRL Distribution Point:CRL Distribution PointsCRL Sign use enabled in generated certs CRL distributionCRL distribution URL:CRL distribution point (URL where CRL is published) CRL generated successfullyCRL generated successfully into file '%s' CRL signingCSR couldn't be savedCSR created with ID: %CSR creation process finishedCSR generated successfullyCSR generation failedCSR generation failed: %sCSR properties - gnoMintCancelCannot build chain PEM for that certificate.Cannot decrypt parent CA's private key.Cannot encrypt new private key.Cannot find issuer CA in this database (issuer DN: %s).Cannot find last assigned serial numberCannot find parent CA in databaseCannot load parent CA material from database.Cannot parse certificate.Cannot parse generated CSR.Cannot parse left certificateCannot parse right certificateCannot read PEM for cert id %s.Cannot read PEM of the selected certificate.Cannot read certificate PEM from database.Cannot read file.Cannot write chain file.CertActivationDateCertExpirationDateCertSNCertificateCertificate Common Name (CN):Certificate DNCertificate PoliciesCertificate Requests in Database: Certificate Signing Request deleted. Certificate Signing Request: Certificate Type:Certificate WizardCertificate _Signing RequestsCertificate chain exported successfully.Certificate diff — %d differenceCertificate diff — %d differencesCertificate exported successfullyCertificate generated successfully for: %s Certificate generated successfully!Certificate generation failedCertificate propertiesCertificate properties - gnoMintCertificate purposes: Certificate renewed. A new certificate with a fresh keypair has been added to the database alongside the original.Certificate renewed. New certificate id: %Certificate requests visibilityCertificate revoked. Certificate signed. Certificate signingCertificate signing request exported successfullyCertificate type must be 'web' or 'email'Certificate type: %s Certificate uses: Certificate: Certificates in Database: Certificates whose effective validity ends within this many days are shown in amber in the certificates tree, as a heads-up that they should be renewed soon. Setting this to 0 disables the amber highlight (certificates appear either normally or in gray for already-expired).Certification AuthorityChange CA password - gnoMintChange database pass_wordChange password for the current databaseChange the given CA policyChoose CA for signing the CSRChoose private key file. gnoMintCityCity: CloseClose current file and create a new database with given filenameClose current file and open the file with given filenameClose database and exit programCode collaboratorsCode signingCode signing server purpose enabled in generated certs Common Name (CN)Compare with PEM file…Could not build certificate chain.Couldn't find any supported format in the given fileCouldn't import the certificate request. The database returned this error: '%s'Couldn't import the certificate. The database returned this error: '%s'Couldn't open %s file. Check permissions.Couldn't recognize the file %s as a RSA or DSA private key.CountryCountry in generated certs must be the same than in CA Country:Create a new databaseCreate and manage Certificate Signing Requests (CSRs)Create and manage your own Certification Authority (CA)Create and sign certificates for servers and usersCreate new CA databaseCreating %s certificate for: %s Creating CA Root CertificateCreating CA databaseCreating Certificate Signing RequestCreating new CA - gnoMintCreation process cancelledCriticalCurrent opened file: %s Currently, the database IS password-protected.Currently, the database is not password-protected.DNSDNS NameDSADSA PublicKeyData enciphermentData encipherment use enabled in generated certs Database password protection - gnoMintDays before expiration to highlight certificates in amberDeleteDelete all selected _CSRs...Delete many CSRs at once. Non-CSR ids are silently skipped.Delete the given CSR from the databaseDelete the selected Certificate Signing RequestDelta CRL Distribution PointDetailsDiffie-Hellman parameters created and saved successfully in file '%s' Diffie-Hellman parameters saved successfullyDigital signatureDigital signature use enabled in generated certs Directory NameDirectory imported successfully. Do you want to change any property of the new certificate? Yes/[No] Do you want to change anything? Yes/[No] Do you want to password protect it? [Yes]/No Do you want to proceed with the signing? [Yes]/No Do you want to remove this password protection? Yes/[No] Don't inherit any fields from existing Certification AuthoritiesECDSAECDSA curve:E_xpired CertificatesE_xportEd25519EmailEmail ServerEmail Server (TLS)Email Server WizardEmail addressEmail address:Email protectionEmail protection purpose enabled in generated certs Enable Code Signing purpose? [Yes]/No Enable Data Encipherment use? [Yes]/No Enable Email Protection purpose? [Yes]/No Enable Key Agreement use? [Yes]/No Enable Key Encipherment use? [Yes]/No Enable Non Repudiation use? [Yes]/No Enable OCSP Signing purpose? [Yes]/No Enable TLS Web Client purpose? [Yes]/No Enable TLS Web Server purpose? [Yes]/No Enable Time Stamping purpose? [Yes]/No Enable any purpose? [Yes]/No Encrypted PKCS#12 bagEnter Subject Alternative Names (SAN) [format: DNS:example.com,IP:192.168.1.1]Enter bitlength for the key (it must be a whole multiple of 1024)Enter common name (CN)Enter country (C)Enter curve size for ECDSA (256, 384, or 521)Enter email address (leave blank for none)Enter locality or city (L)Enter new password again for confirmation:Enter organization (O)Enter organizational unit (OU)Enter password - gnoMintEnter state or province (ST)Enter the server DNS name (e.g., my.server.dns.name)Enter type of key you are going to create (RSA/DSA/ECDSA/Ed25519)Error creating private key: %dError exporting CSR to PEM structure.Error exporting private key to PEM structure.Error initializing private key structure.Error opening filename '%s'Error when copying data from CSR to certificate structureError when importing CA private keyError when importing private key into privkey structureError when initializing certificate structureError when initializing crt structureError when initializing csr structureError when initializing privkey structureError when setting Subject Alternative Name extensionError when setting activation timeError when setting authority key identifier extensionError when setting basicConstraint extensionError when setting certificate serial numberError when setting certificate versionError when setting csr versionError when setting expiration timeError when setting keyUsage extensionError when setting subject key identifier extensionError when signing certificate: %sError when signing self-signed certificateError when signing self-signed csrError while changing database password. The operation was cancelled.Error while changing database password. The operation was cancelled.Error while establishing database password. The operation was cancelled.Error while removing database password. The operation was cancelled.Error while removing database password. The operation was cancelled.Error while signing CSR.Error: CSR generation failed: %s Error: Failed to parse generated CSR Error: Failed to save CSR: %s Error: Failed to sign certificate: %s Error: Key generation failed: %s Examples: DNS: example.com, *.example.com IP: 192.168.1.1, 2001:db8::1 EMAIL: admin@example.com URI: https://example.comExiting gnomint-cli... ExpirationExpired certificates visibilityExpires onExportExport CSR - gnoMintExport Certificate Revocation ListExport certificateExport certificate - gnoMintExport certificate chainExport certificate signing requestExport certificates and private keys in several formats (PEM, DER, PKCS#12)Export crypted private keyExport full c_hain...Export optionsExport the full certificate chain (leaf → root) for the given certificate as a PEM bundle.Export unencrypted private keyExport whole certificate in PKCS#12 packageExtended Key UsageExtensionsExtrac_t private keyExtract Private KeyExtract the private key of the CSR with the given internal id and saves it into the given fileExtract the private key of the certificate with the given internal id and saves it into the given fileExtract the private key of the selected item into a external fileFALSEFailed to initialize: %s Failed to parse generated CSR.Failed to save CSR: %sFailed to sign certificate: %sFailed to write chain: %sFieldFile '%s' opened File imported successfully. Files in the directory don't belong to any supported CA format.Filter certificates by subject or serial...Fingerprints: For removing the password-protection, the current database password must be supplied. Full chain (leaf → root) written to %s GeneralGeneral Preferences - gnoMintGenerateGenerate D_H parameters...Generate _CRLGenerate a certificate signing the given CSR with the given CAGenerate a new CRL for the given CA, saving it into the file Generate a new DH-parameter set, saving it into the file Generated certs inherit Country from CA Generated certs inherit Locality from CA Generated certs inherit Organization from CA Generated certs inherit Organizational Unit from CA Generated certs inherit State from CA Generating CSRGenerating new DSA key pairGenerating new ECDSA key pairGenerating new Ed25519 key pairGenerating new RSA key pairGenerating self-signed CA-Root certGet current status (opened file, no. of certificates, etc...)Hours between CRL updates:IPIP AddressId. Description Value Id. Is CA? Certificate Subject Key in DB? Activation ExpirationId. Name Value Id. Parent Id. CSR Subject Key in DB? ImportImport a single file.Import a whole directory.Import existing certificates and CAsImport selection - gnoMintImport the file with the given name Import the given directory, as a OpenSSL-CA directoryIncorrect number of parameters. Inherit fields according to selected Certification Authority and its policy.Inhibit Any-PolicyInsert new password (confirm):Insert new password:Insert passphrase (8 characters or more):Insert passphrase (confirm):Insert password (confirm):Insert password:Introduce number of months before expiration of the new certificate (0 to cancel)Introduce number of months before expiration of the new certification authorityInvalid Certificate Authority selected.Invalid DNS name. Use format: example.com or *.example.comInvalid IP address. Use IPv4 (e.g., 192.168.1.1) or IPv6 formatInvalid URI. Must start with http://, https://, ftp://, or ldap://Invalid command. Try 'help' for getting a list of recognized commands. Invalid email address. Use format: user@example.comIssuerIssuer DNIssuer Unique IDIssuer: Key UsageKey agreementKey agreement use enabled in generated certs Key decipher onlyKey decipherment onlyKey encipher onlyKey enciphermentKey encipherment onlyKey encipherment use enabled in generated certs Key generation failedKey generation failed: %sKey pair Key usage / EKULeftList certificates and CSRs whose subject or serial contains (case-insensitive).List the CSRs in databaseList the certificates in database. With option --see-revoked, lists also the revoked onesLocality in generated certs must be the same than in CA MD5 fingerprintMD5FINGERPRINTMain window showing certificate listManage X.509 certificates and CAs, easily and graphicallyMatches (id serial subject): Maximum number of hours between CRL updates Maximum number of months before expiration of the new generated certificates:Maximum number of months before expiration of new certs ModulusMonths before certificate expiration:Months before root certificate expiration:NameName ConstraintsNew CA - gnoMintNew CRL - gnoMintNew Certificate - gnoMintNew Diffie-Hellman parameters - gnoMintNew certificate Common Name (CN):New certificate request - gnoMintNoNo Certificate Authority found. Please create a CA first.Non repudiationNon reputation use enabled in generated certs NoneNone.Not AfterNot BeforeNothing done. Notice: %d certificate expires within the next %d days. Use `renewcert ` to reissue. Notice: %d certificates expire within the next %d days. Use `renewcert ` to reissue. Number of CSRs in file: %d Number of certificates in file: %d OCSP signingOCSP signing purpose enabled in generated certs OKOK. Now you must supply a new password for protecting the private keys in the database, so nobody else but authorized people can use them. This password will be asked any time gnoMint will make use of any private key in database.OK. You need to supply a password for protecting the private keys in the database, so nobody else but authorized people can use them. This password will be asked any time gnoMint will make use of any private key in database.Only the private key (crypted).Only the private key (uncrypted).Only the pu_blic part.Open CA databaseOpen _recentsOpen an existing databaseOpenSSL has returned the following error while trying to decypher the private key: %sOpening database %s...Operation cancelled.Operation cancelled. OrganizationOrganization (O)Organization Unit:Organization in generated certs must be the same than in CA Organization:Organizational Unit (OU)Organizational Unit in generated certs must be the same than in CAOrganizational unitP-256 (256 bits)P-384 (384 bits)P-521 (521 bits)PKCS#8 crypted private keyParametersPassword (confirm):Password changed successfullyPassword changed successfully. Password established successfullyPassword established successfully. Password protectPassword removed successfullyPassword removed successfully. Password:Path Length ConstraintPlease enter a Common Name (CN) for the CA.Please enter a Common Name (CN) for the certificate request.Please enter a server name.Please enter data corresponding to subject of the Certificate Signing Request: Please enter data corresponding to subject of the new Certification Authority: Please insert the database password:Please introduce password for `%s'Please select a Certificate Authority.Please select a certificate to export its chain.Please select one or more CSRs to delete.Please select one or more certificates to revoke.Please, choose the file:Please, choose the more suitable option for what you want to import:Please, choose which part of the saved certificate you want to export:Please, choose which part of the saved Certificate Signing Request you want to export:Please, enter current password:Please, enter new password:Please, enter passwordPlease, enter the prime size, in bits:Please, insert the current database password (Empty to cancel): Please, select the CA for which a Certificate Revocation List is going to be created:Policy ConstraintsPolicy MappingsPolicy set correctly to '%s'. PreferencesPrivate Key Usage PeriodPrivate key %sPrivate key bit length:Private key exported successfullyPrivate key extracted successfully into file '%s' Private key for %sPrivate key type:Problem when creating '%s' CA database: %sProblem when importing '%s' fileProblem when importing the given file.Problem when opening '%s' CA databaseProblem when opening '%s' CA database Problem when opening new '%s' CA databaseProblem when opening new '%s' CA database Problem while calling to openssl for decyphering private key.PropertiesProtect CA database private keys with password:Public ExponentQuick certificate generation for email serverQuick certificate generation for web serverQuick server certificate generation (cert-type: 'web' or 'email')RFC822 NameRSARSA PublicKeyRe_new with fresh keyReissue a non-CA certificate with the same subject + SAN and a fresh keypair. The old certificate remains in the database. CA certificates cannot be renewed.Remember this password during this gnoMint sessionRenew this certificate? gnoMint will issue a new certificate with the same subject and SAN as the selected one, signed by the same CA, with a freshly-generated keypair. The old certificate will remain in the database — revoke it manually after you have deployed the new one.Renew? [Yes]/No Revo_keRevocationRevokeRevoke _all selected...Revoke certificates and generate Certificate Revocation Lists (CRLs)Revoke many certificates at once. Non-cert ids are silently skipped.Revoke the certificate with the given internal IDRevoke the selected certificateRevoked certificates visibilityRevoking a certificate will include it in the next CRL, marking it as invalid. CSRs in the selection (if any) are not affected; use "Delete selected CSRs" for those.Revoking a certificate will include it in the next CRL, marking it as invalid. This way, any future use of the certificate will be denied (as long as the CRL is checked).Revoking a certificate will include it in the next CRL, marking it as invalid. This way, any future use of the certificate will be denied (as long as the CRL is checked). Moreover, revoking a CA certificate can invalidate all the certificates generated with it, so all them should be regenerated with a new CA certificate.RightRoot certificate propSANSHA-1 fingerprintSHA-256 fingerprintSHA1 fingerprintSHA1FINGERPRINTSHA256 fingerprintSHA256FINGERPRINTSHA512 fingerprintSHA512FINGERPRINTSave CA database as...Save Diffie-Hellman parametersSave the current file with a different filenameSaving CSR in databaseSelect PEM file to importSelect directory to importSelect private key fileSelectedSerialSerial NumberSerial numberServer Name:Server name cannot be emptySet the given program preferenceShow (this) help messageShow CA policyShow about messageShow distribution informationShow program preferencesShow properties of the given CSRShow properties of the given certificateShow version informationShow warranty informationShowing only the %d certificate expiring in the next %d days. Close this banner to show everything again.Showing only the %d certificates expiring in the next %d days. Close this banner to show everything again.Showing policies of the following certificate: Side-by-side diff of two certificates. Each argument is either a numeric DB id or a path to a PEM file.SignSign the selected Certificate Signing RequestSignatureSignature AlgorithmSigning CA:Start a new CSR creation processStart a new self-signed CA creation processState in generated certs must be the same than in CA State or Province nameState or Province name: SubjectSubject Alternative NameSubject Alternative Name (SAN)Subject Alternative NamesSubject Alternative Names:Subject CNSubject CountrySubject DNSubject Directory AttributesSubject Key IDSubject Key IdentifierSubject LocalitySubject OSubject OUSubject Public KeySubject Public Key InfoSubject StateSubject Unique IDSubject emailSubject: SubjectCNSubjectOSubjectOUSyntax: %s THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. For more information about warranty, see section 15 onwards of the GNU General Public License. You should have received a copy of the GNU General Public License along with this program. If not, see . TLS WWW ClientTLS WWW Client.TLS WWW ServerTLS Web clientTLS Web serverTLS web client purpose enabled in generated certs TLS web server purpose enabled in generated certs TRUEThe (width,length) size gnoMint should take when started. This cannot be smaller than (320,200).The bit-length of the prime number must be whole multiple of 1024The current password you have entered doesn't match with the actual current database password.The current password you have entered doesn't match with the actual current database password.The expiration date of the new certificate is after the expiration date of the CA certificate. According to the current standards, this is not allowed. The new certificate will be created with the same expiration date as the CA certificate.The file already exists, so it will be overwritten.The file designated in database contains a private key, but it is not the private key corresponding to the certificate.The file designated in database couldn't be opened.The file designated in database doesn't contain any recognized private key.The file designated in database doesn't exist.The file that holds private key for certificate '%s' is password-protected. The file that holds private key for certificate '%s' is password-protected. Please, insert the password corresponding to this file.The given CA id is not validThe given CA id. is not validThe given CSR id. is not validThe given certificate id is not validThe given certificate id. is not validThe given file contains a valid private key. However, it has not been imported to the database because it doesn't match any key-less certificate in the database.The given file contains a valid private key. However, it has not been imported to the database because it doesn't match any key-less certificate or certificate request in the database.The given password doesn't match the one used for crypting this partThe given password doesn't match the one used in the databaseThe given password doesn't match with the one used while crypting the file.The given password doesn't match with the password used for encrypting this part.The given policy id is not validThe given preference id is not validThe introduced passphrases are distinct.The introduced passwords are distinct.The new certificate will be created with the following uses and purposes: The policy of this CA obligue the country field of the certificates to be the same as the one in the CA cert.The policy of this CA obligue the locality/city field of the certificates to be the same as the one in the CA cert.The policy of this CA obligue the organization field of the certificates to be the same as the one in the CA cert.The policy of this CA obligue the organizational unit field of the certificates to be the same as the one in the CA cert.The policy of this CA obligue the state/province field of the certificates to be the same as the one in the CA cert.The selected database has been created with a newer version of gnoMint than the currently installed.The whole selected file, or some of its elements, seems to be cyphered using a password or passphrase. For importing the file into gnoMint database, you must provide an appropiate password.The whole selected file, or some of its elements, seems to be cyphered using a password or passphrase. For importing the file into gnoMint database, you must provide an appropriate password. There was a problem while importing the private key corresponding to CA root certificateThere was a problem while importing the public CA root certificateThere was a problem while opening the directory certs/.There was a problem while opening the directory crl/.There was a problem while opening the directory keys/.There was a problem while opening the directory newcerts/.There was a problem while opening the directory req.There was an error while decrypting private key.There was an error while exporting CRL.There was an error while exporting CSR.There was an error while exporting certificate.There was an error while exporting private key.There was an error while exporting the certificate.There was an error while generating CRL.There was an error while generating the PKCS#12 package.There was an error while getting private key.There was an error while getting revoked certificates.There was an error while getting the certificate and private key from the internal database.There was an error while password-protecting private key.There was an error while saving Diffie-Hellman parameters.There was an error while uncrypting private key.There was an error while writing CRL.These are the provided CSR properties: These are the provided new CA properties: This Certificate Signing Request will be deleted.This action requires using one or more private keys saved in the CA database. Please insert the database password.This action requires using one or more private keys saved in the database. This certificate already exists in the database: cannot insert it twice.This certificate will be revoked.This is free software, and you are welcome to redistribute it under certain conditions; type 'distribution' for details. This operation cannot be undone. Are you sure? Yes/[No] This program comes with ABSOLUTELY NO WARRANTY; for details type 'warranty'. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.This wizard will create a certificate for your server with default settings. Enter the server name (e.g., my.server.dns.name) and select the CA to sign it.Time stampingTime stamping purpose enabled in generated certs To do. Feature not implemented yet.Translators: %s TypeType:URIUnexpected errorUnknownUnpaired quotes Unsupported operation: you cannot generate a PKCS#12 for a CSR.Usage: deletemany [csr-id ...]Usage: diff Usage: exportchain Usage: renewcert Usage: revokemany [cert-id ...]Usage: search ValidityValidity Validity: ValueValue cannot be emptyValue:VersionWeb ServerWeb Server (TLS)Web Server WizardWhether already-expired certificates should be visible in the certificates tree. CAs are always visible regardless of this setting so that any still-valid certificates they signed remain reachable.Whether the certificate requests should be visible.Whether the created or imported certificates are automatically exported to gnome-keyring certificate-store.Whether the revoked certificates should be visible.Window sizeWith gnoMint you can:X.509 Certification Authority management toolYesYou are about to assign to the policy '%s' the new value '%s'.You are about to assign to the preference 'Gnome keyring support' the new value '%d'.You are about to create a Certificate Signing Request with these properties.You are about to create a new Certification Authority with these properties.You are about to create and export a set of Diffie·Hellman parameters into a PKCS#3 structure file.You are about to sign a Certificate Signing Request, and this way, creating a new certificate. Please check the certificate properties.You are about to sign a Certificate Signing Request. Please, choose the Certification Authority you are going to use for signing it.You are about to sign the following Certificate Signing Request: You must supply the current database password before changing the password. You need to supply a passphrase for protecting the exported certificate, so nobody else but authorized people can use it. This passphrase will be asked by any application that will import the certificate.You need to supply a passphrase for protecting the exported private key, so nobody else but authorized people can use it. This passphrase will be asked by any application that will make use of the private key._Add_Add self-signed CA_Cancel_Certificates_Close_Compare with PEM file…_Edit_Generate Certificate_Help_Import_New certificate database_Next_No_OK_Open certificate database_Previous_Quit_Remove_Revoked Certificates_Save certificate database as..._Save filename in the database for automatic loading_Show them_Sign_View_Yesaddcsr [ca-id-for-inherit-fields]addservercert certificate;x.509;encryption;crlgen delete deletemany [csr-id ...]dhgen diff email serverexportchain extractcertpkey extractcsrpkey gnoMintgnoMint X.509 CA ManagergnoMint is a program for creating and managing Certification Authorities, and their certificatesgnoMint is a tool for easily creating and managing certification authorities (CAs). It provides fancy visualization of all your certificates, and their properties, as well as an easy management of the CA activities.gnoMint provides a simple and intuitive graphical interface based on GTK for all these operations, making certificate management accessible even for users without deep knowledge of X.509 standards and cryptography.gnoMint will issue a new certificate with the same subject and SAN as this one, signed by the same CA, with a fresh keypair. The old certificate stays in place.gnoMint-cli current preferences: importdir importfile labelmay differmust be the samenewdb opendb page 3renewcert revoke revokemany [cert-id ...]savedbas search setpolicy setpreference showcert showcsr showpolicy sign translator-creditsweb serverwith the certificate corresponding to the next CA: Project-Id-Version: gnoMint 0.1 Report-Msgid-Bugs-To: davefx@gmail.com PO-Revision-Date: 2026-05-25 12:00+0200 Last-Translator: DiegoJ Language-Team: Spanish Language: es MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Generator: Launchpad (build Unknown) X-Launchpad-Export-Date: 2009-11-08 11:12+0000 Revocación Activado el: %s Curva: P-%d Nombre distintivo: Nombre distintivo: %s Caduca el: %s Longitud en bits: %d Tamaño de clave: fijo (Ed25519) Huella digital MD5: %s Huella digital SHA1: %s Huella digital SHA256: %s Nº de serie: %s Nombres alternativos del titular: %s Tipo: %s Identificador único: %s %d campo difiere. %d campos difieren. Autores: %s Políticas: La contraseña debe tener, al menos, %d caracteres Error. Correcto. %d solicitud eliminada. %d solicitudes eliminadas. %d certificado revocado.%d certificados revocados.%d certificado revocado. %d certificados revocados. %d coincidencia. %d coincidencias. %d/%m/%Y %H:%M GMT%s versión %s %s '%s' no es un identificador de certificado en esta base de datos.(desconocido)* Uso para cualquier finalidad deshabilitado por política. * Cualquier finalidad deshabilitada. * Cualquier finalidad habilitada. * Uso para firmado de CRL deshabilitado por política * Uso para firma de CRLs deshabilitado. * Uso para firma de CRLs habilitado. * Uso como Autoridad de Certificación deshabilitado por política * Uso como Autoridad de Certificación deshabilitado. * Uso como Autoridad de Certificación habilitado. * Finalidad de firma de código deshabilitada por política * Finalidad de firma de código deshabilitada. * Finalidad de firma de código habilitada. * Uso para cifrado de datos deshabilitado por política Uso para cifrado de datos habilitado. * Uso para firma digital deshabilitado por política * Uso para firma digital deshabilitado. * Uso para firma digital habilitado. * Finalidad de protección de correo electrónico deshabilitada por política. * Finalidad para protección de correo electrónico deshabilitada. * Finalidad para protección de correo electrónico habilitada. * ¿Habilitar uso para firma de CRL? [Sí]/No * ¿Habilitar uso como Autoridad de certificación? [Sí]/No * ¿Habilitar uso para firma digital? [Sí]/No Uso para negociación de claves deshabilitado por politica * Uso para negociación de claves deshabilitado. * Uso para negociación de claves habilitado. * Uso para cifrado de claves deshabilitado por política * Uso para cifrado de claves deshabilitado. * Uso para cifrado de claves habilitado. * Uso para no repudio deshabilitado por política * Uso para no repudio deshabilitado. * Uso para no repudio habilitado. * Finalidad para firma de OCSP deshabilitada por política * Finalidad de firma de OCSP deshabilitada. * Finalidad de firma de OCSP habilitada * Finalidad de cliente web TLS deshabilitada por política * Finalidad de cliente web TLS deshabilitada. * Finalidad de cliente web TLS habilitada. * Finalidad de servidor web TLS deshabilitada por política * Finalidad de servidor web TLS deshabilitada. * Finalidad de servidor web TLS habilitada. * Finalidad de sellado de tiempo deshabilitada por política * Finalidad de sellado de tiempo deshabilitada. * Finalidad de sellado de tiempo habilitada. -Un gestor de Autoridades de Certificación0 Soporte de gnome-keyring %d %d certificado caduca en los próximos %d días. Haga clic con el botón derecho sobre él para renovarlo con una clave nueva.%d certificados caducan en los próximos %d días. Haga clic con el botón derecho sobre cada uno para renovarlo con una clave nueva.Propiedades de CRLTitular de la solicitudCampos del certificadoJerarquía de certificadosFinalidades del certificadoTitular del certificadoUsos del certificadoEmitido porHuellas digitalesCampos heredados del titular de la ACFinalidades de los nuevos certificados generadosGeneración rápida de certificadoNombres alternativos de titular (SAN)La clave privada correspondiente a esta petición de certificación está almacenada en un fichero externo.La clave privada correspondiente a esta solicitud de certificación está almacenada en la base de datos interna.Este certificado ha sido validado para los siguientes usos:Usos de los nuevos certificados generadosValidezNueva lista de certificados revocadosPropiedades del certificado raíz de la AC Propiedades del titular de la AC Propiedades de la AC Propiedades de la solicitud de certificación Seleccione fichero con clave privada Para realizar la operación seleccionada, deberá proporcionar el fichero donde reside la clave privada correspondiente al certificado:Propiedades del nuevo certificado Exporta ambas partes (pública y privada) a un fichero PKCS#12 protegido con clave. Esta clase de ficheros puede ser importada por otros programas comunes, tales como clientes web o de correo.Exporta sólo el certificado a un fichero público en formato PEM.Exporta la solicitud de certificación a un fichero público en formato PEMExporta la clave privada almacenada a un fichero PEM. Esta opción sólo debería ser empleada para exportar certificados que vayan a ser usados en servidores no atendidos.Exporta la clave privada almacenada a un fichero PKCS#8 protegido con clave. Este fichero sólo debería ser accesible para el titular del certificado.Exporta la clave privada almacenada a un fichero PKCS#8 protegido con clave. Este fichero sólo debería ser accesible para el titular de la soliticud de certificación.Importar directorio que contenga la estructura completa de una AC producida con OpenSSL.Importar un único fichero, en formato DER o PEM, que contenga certificados, claves privadas (cifradas o en claro), solicitudes de certificación (CSRs), listas de revocación (CRLs) o paquetes PKCS#12. Se recomienda que todos los certificados generados por una AC compartan las mismas propiedades. Si desea generar certificados con propiedades distintas, sería aconsejable crear una jerarquía de ACs, cada una con su propia política para la generación de certificados. Defina el conjunto máximo de propiedades para los certificados que la presente Autoridad de Certificación podrá otorgar: #Descripción#Los ficheros PKCS#3 con parámetros Diffie-Hellman son usados por ciertas aplicaciones criptográficas para realizar intercambios seguros de sus claves a través de canales inseguros.La parte a ser importada tiene la siguiente descripción:Introduzca en este campo una URL donde estará disponible la CRL de esta AC. Puede dejarlo vacío. En ese caso, no se establecerá ningún punto de distribución de CRL en el certificado de la AC, y podrá configurarlo después como propiedad de la AC. Este valor se copiará en los certificados generados por esta AC. El titular de la nueva solicitud de certificado puede heredar información de una de las autoridades de certificación existentes. Esto es necesario si la política de la AC que va a utilizar obliga a que ciertos campos del titular del certificado sean iguales a los del certificado de la autoridad.==================== Acerca deActivado elActivaciónAñadirAñadir CSRAñadir _solicitud de certificaciónAñadir certificado de servidor de _correo (asistente)Añadir certificado de servidor _web (asistente)Añadir nueva solicitud de certificaciónAñadir autoridad de certificación auto-firmadaAñadir certificado de AC autofirmadoAlgoritmoYa se cuenta con todos los datos necesarios para la generación del certificado.Cualquier propósitoHabilitar cualquier finalidad en certificados generados ¿Está seguro de que desea eliminar %d solicitud de certificación?¿Está seguro de que desea eliminar %d solicitudes de certificación?¿Está seguro de que desea borrar esta solicitud de certificación?¿Está seguro de que desea revocar %d certificado?¿Está seguro de que desea revocar %d certificados?¿Está seguro de que desea revocar este certificado de AC?¿Está seguro de que desea revocar este certificado?¿Está seguro? Sí/[No] ¿Está seguro? Sí/[No] : ¿Está seguro? [Sí]/No Id. de clave de autoridadClave identificadora de autoridadExportación automática de certificados a gnome-keyringExportar automáticamente los certificados creados a el almacén de certificados de Gnome-keyringÓrdenes disponibles: Restricciones básicasAmbas partes.La eliminación masiva terminó con errores. Primer error: %sLa revocación masiva terminó con errores. Primer error: %sACPolítica de la ACNombre común (CN) del certificado raiz de la AC:Certificado raíz de la ACLos certificados de AC no se pueden renovar. Una AC renovada tendría una clave diferente, por lo que los certificados firmados previamente por la antigua AC ya no encadenarían con ella.Proceso de creación de la AC finalizadoError al crear base de datos de la ACAC generada con éxitoPropiedades de la ACHabilitar uso como AC en certificados generados CACNCAOCAOUPunto de distribución de CRL:Puntos de distribución de CRLsHabilitar uso para firma de CRLs en certificados generados Distribución de CRLURL de distribución de CRL:Punto de distribución de CRL (URL donde se publica la CRL)CRL generada con éxitoCRL generada con éxito y guardada en fichero '%s' Firma de CRLsLa solicitud no se pudo guardarCSR creada con ID: %Proceso de creación de solicitud finalizadoSolicitud de certificación generada con éxitoError en generación de solicitudError en generación de solicitud: %sPropiedades de la solicitud - gnoMintCancelarNo se pudo construir la cadena PEM para ese certificado.No se pudo descifrar la clave privada de la AC padre.No se pudo cifrar la nueva clave privada.No se pudo encontrar la AC emisora en esta base de datos (DN del emisor: %s).No se pudo encontrar el último número de serie asignadoNo se pudo encontrar la AC padre en la base de datosNo se pudo cargar el material de la AC padre desde la base de datos.No se pudo analizar el certificado.No se pudo analizar la solicitud generada.No se pudo analizar el certificado izquierdoNo se pudo analizar el certificado derechoNo se pudo leer el PEM del certificado con id. %s.No se pudo leer el PEM del certificado seleccionado.No se pudo leer el PEM del certificado de la base de datos.No se pudo leer el fichero.No se pudo escribir el fichero de cadena.Fecha de activaciónFecha de caducidadNúm de serieCertificadoNombre común (CN) del certificado:Descriptor del certificadoPolíticas de certificadoSolicitudes de certificación en base de datos: Solicitud de certificación borrada. Solicitud de certificación: Tipo de certificado:Asistente de certificados_Solicitudes de firma de certificadosCadena de certificados exportada con éxito.Diferencias entre certificados — %d diferenciaDiferencias entre certificados — %d diferenciasCertificado exportado con éxitoCertificado generado con éxito para: %s ¡Certificado generado con éxito!Error en generación del certificadoPropiedades del certificadoPropiedades del certificado - gnoMintFinalidades del certificado: Certificado renovado. Se ha añadido un nuevo certificado con un par de claves nuevo a la base de datos, junto al original.Certificado renovado. Nuevo id. de certificado: %Visibilidad de solicitudes de certificaciónCertificado revocado. Certificado firmado. Firma de certificadosSolicitud de certificación exportada correctamenteEl tipo de certificado debe ser 'web' o 'email'Tipo de certificado: %s Usos del certificado: Certificado: Certificados en base de datos: Los certificados cuya validez efectiva termina dentro de estos días se muestran en ámbar en el árbol de certificados, como aviso de que deben renovarse pronto. Establecer este valor a 0 desactiva el resaltado en ámbar (los certificados se muestran normalmente o en gris si ya han caducado).Autoridad de certificaciónCambiando contraseña de AC - gnoMintCambiar contrase_ña de base de datosCambiar contraseña de la base de datos actualCambiar política indicada de la ACSeleccione autoridad que firmará la solicitudSeleccione fichero con clave privada. gnoMintCiudadCiudad: CerrarCierra el fichero actual y crea una nueva base de datos con el nombre de fichero indicadoCierra el fichero actual y abre el fichero con el nombre indicadoCerrar base de datos y salir de programaColaboradores de códigoFirma de códigoHabilitar finalidad de firma de código en certificados generados Nombre común (CN)Comparar con un archivo PEM…No se pudo construir la cadena de certificados.No se encontró ningún formato soportado en el fichero proporcionadoNo se pudo importar la solicitud de certificación. La base de datos devolvió el siguiente error: '%s'No se pudo importar el certificado. La base de datos devolvió el siguiente error: '%s'No se pudo abrir el fichero %s. Compruebe los permisos.No se ha reconocido el fichero %s como clave privada RSA o DSA.PaísEl país de los certificados generados debe coincidir con la AC PaísCrear nueva base de datosCrear y gestionar solicitudes de certificación (CSRs)Crear y gestionar su propia Autoridad de Certificación (AC)Crear y firmar certificados para servidores y usuariosCrear nueva base de datos de ACCreando certificado de %s para: %s Creando certificado raíz de la ACCreando base de datos de la ACCreando solicitud de certificaciónCreando nueva AC - gnoMintProceso de creación canceladoEs críticaFichero abierto actualmente: %s En estos momentos, la base de datos ESTÁ protegida con contraseña.En estos momentos, la base de datos no está protegida con clave.DNSNombre DNSDSAClave pública DSACifrado de datosHabilitar uso para cifrado de datos en certificados generados Protección de contraseña de base de datos - gnoMintDías antes de la caducidad para resaltar certificados en ámbarEliminarEliminar todas las _solicitudes seleccionadas...Eliminar varias solicitudes a la vez. Los identificadores que no son de CSR se ignoran.Borrar solicitud de certificación indicada de la base de datosBorrar la solicitud de certificación seleccionadaPunto de distribución de Delta CRLsDetallesParámetros Diffie-Hellman creados y guardados correctamente en fichero '%s' Parámetros Diffie-Hellman guardados correctamenteFirma digitalHabilitar uso para firma digital en certificados generados Nombre de directorioDirectorio importado con éxito. ¿Desea cambiar alguna propiedad del nuevo certificado? Sí/[No] ¿Desea cambiar algo? Sí/[No] ¿Desea protegerlo con contraseña? [Sí]/No ¿Desea continuar con la firma y generación del certificado? [Sí]/No ¿Desea eliminar esta protección con contraseña? Sí/[No] No heredar ningún campo de autoridades de certificación existentesECDSACurva ECDSA:Certificados ca_ducadosE_xportarEd25519CorreoServidor de correoServidor de correo (TLS)Asistente de servidor de correoDirección de correoDirección de correo:Protección de correo electrónicoHabilitar finalidad para protección de correo-e en cert. generados ¿Habilitar finalidad de firma de código? [Sí]/No ¿Habilitar uso para cifrado de datos? [Sí]/No ¿Habilitar finalidad de protección de correo electrónico? [Sí]/No ¿Habilitar uso para negociación de claves? [Sí]/No ¿Habilitar uso para cifrado de claves? [Sí]/No ¿Habilitar uso para no repudio? [Sí]/No ¿Habilitar finalidad para firma de OCSP? [Sí]/No ¿Habilitar finalidad de cliente web TLS? [Sí]/No ¿Habilitar finalidad de servidor web TLS? [Sí]/No ¿Habilitar finalidad de sellado de tiempo? [Sí]/No ¿Habilitar uso para cualquier finalidad? [Sí]/No Contenedor PKCS#12 cifradoIntroduzca nombres alternativos del titular (SAN) [formato: DNS:example.com,IP:192.168.1.1]Introduzca tamaño de clave en bits (múltiplo de 1024)Introduzca Nombre común (CN)Introduzca país (C)Introduzca el tamaño de curva para ECDSA (256, 384 o 521)Introduzca dirección de correo (deje vacío para ninguna)Introduzca ciudad o localidad (L)Introduzca la nueva contraseña otra vez para confirmar:Introduzca organización (O)Introduzca Unidad organizativa (OU)Introduzca contraseña - gnoMintIntroduzca nombre de estado o provincia (ST)Introduzca el nombre DNS del servidor (p.ej., mi.servidor.dns)Introduzca el tipo de clave que se va a crear (RSA/DSA/ECDSA/Ed25519)Error al crear clave privada: %dError al exportar solicitud de certificación a estructura PEM.Error al exportar clave privada a estructura PEM.Error al inicializar estructura de clave privada.Error al abrir fichero '%s'Error al copiar datos de solicitud a la estructura del certificadoError al importar la clave privada de la ACError al exportar clave privada a estructura PEM.Error al inicializar estructura de certificadoError al inicializar estructura de solicitudError al inicializar estructura de solicitudError al inicializar estructura de solicitudError al establecer extensión identificadora de titularError al establecer fecha de activaciónError al establecer extensión identificadora de autoridadError al establecer extensión basicConstraintError al establecer número de serie del certificadoError al establecer versión de certificadoError al establecer versión de solicitudError al establecer fecha y hora de caducidadError al establecer extensión keyUsageError al establecer extensión identificadora de titularError al firmar el certificado: %sError al firmar certificado autofirmadoError al firmar solicitud autofirmadaOcurrió un error al cambiar la contraseña de la base de datos. Se canceló la operación.Ocurrió un error al cambiar la contraseña de la base de datos. Se canceló la operación.Ocurrió un error al establecer la contraseña de la base de datos. Se canceló la operación.Ocurrió un error al eliminar la contraseña de la base de datos. Se canceló la operación.Ocurrió un error al eliminar la contraseña de la base de datos. Se canceló la operación.Error al firmar CSR.Error: Fallo en la generación de CSR: %s Error: No se pudo analizar la solicitud generada Error: No se pudo guardar la solicitud: %s Error: No se pudo firmar el certificado: %s Error: Fallo en la generación de claves: %s Ejemplos: DNS: example.com, *.example.com IP: 192.168.1.1, 2001:db8::1 EMAIL: admin@example.com URI: https://example.comSaliendo de gnomint-cli... CaducidadVisibilidad de certificados caducadosCaduca elExportarExportar solicitud de certificación - gnoMintExportar lista de certificados revocados (CRL)Exportar certificadoExportar certificado - gnoMintExportar cadena de certificadosExportar solicitud de certificaciónExportar certificados y claves privadas en varios formatos (PEM, DER, PKCS#12)Exportar clave privada cifrada.Exportar cadena com_pleta...Opciones de exportaciónExportar la cadena completa de certificados (hoja → raíz) del certificado indicado como un paquete PEM.Exportar clave privada sin cifrarExportar todo el certificado en un paquete PKCS#12Uso extendido de claveExtensionesEx_traer clave privadaExtraer clave privadaExtraer clave privada del CSR con identificador indicado y almacenarla en el fichero proporcionadoExtraer clave privada del certificado con el identificador proporcionado y almacenarla en el fichero indicadoExtrae la clave privada del elemento seleccionado a un fichero externoFALSOFallo al inicializar: %s Error al analizar la solicitud generada.Fallo al guardar la solicitud: %sFallo al firmar certificado: %sError al escribir la cadena: %sCampoFichero '%s' abierto Fichero importado con éxito. Los ficheros existentes en el directorio no pertenecen a ningún formato soportado de Autoridad de Certificación.Filtrar certificados por titular o número de serie...Huellas digitales: Para eliminar la protección mediante clave, debe proporcionar la contraseña actual. Cadena completa (hoja → raíz) escrita en %s GeneralPreferencias generales - gnoMintGenerarGenerar parámetros D_H...Generar _CRLGenerar certificado firmando el CSR indicado con la AC proporcionadaGenerar un nuevo CRL para la AC indicada, almacenándolo en el fichero Generar un nuevo conjunto de parámetros DH, almacenándolo en el fichero Los certificados generados heredan país de la AC Los certificados generados heredan localidad o ciudad de la AC Los certificados generados heredan Organización de la AC Los certificados generados heredan unidad organizacional de la AC Los certificados generados heredan estado/provincia de la AC Generando solicitud de certificaciónGenerando nuevo par de claves DSAGenerando nuevo par de claves ECDSAGenerando nuevo par de claves Ed25519Generando nuevo par de claves RSAGenerando el certificado auto-firmado raíz de la ACObtiene el estado actual (fichero abierto, nº de certificados, etc...)Nº de horas entre actualizaciones consecutivas de CRL:IPDirección IPId. Descripción Valor Id. ¿Es CA? Titular de certificado ¿Clave en BD? Activación CaducidadId. Nombre Valor Id. Id. padre Titular CSR ¿Clave en BD? ImportarImportar un único fichero.Importar un directorio completo.Importar certificados y ACs existentesSelección de importación - gnoMintImportar fichero con el nombre indicadoImportar el directorio proporcionado, interpretándolo como el directorio de una AC realizada con OpenSSLNúmero incorrecto de parámetros. Heredar campos según la política de la autoridad de certificación seleccionada.Restringir «Any-Policy»Introduzca contraseña (confirmación):Introduzca la nueva contraseña:Introduzca contraseña (8 o más caracteres):Introduzca contraseña (confirmación):Introduzca contraseña (confirmación):Introduzca contraseña:Máximo número de meses antes de la caducidad del nuevo certificado (0 para cancelar):Introduzca el número máximo de meses antes de la caducidad de lanueva autoridad de certificaciónLa Autoridad de Certificación seleccionada no es válida.Nombre DNS no válido. Use el formato: ejemplo.com o *.ejemplo.comDirección IP no válida. Use formato IPv4 (ej.: 192.168.1.1) o IPv6URI no válida. Debe empezar por http://, https://, ftp:// o ldap://Orden no válida. Teclee 'help' para conseguir una lista de órdenes reconocidas. Dirección de correo no válida. Use el formato: usuario@ejemplo.comEmisorDN del emisorId. único de emisorEmisor: Uso de claveNegociación de clavesHabilitar uso para negociación de claves en certificados generados Clave de sólo descifradoClave de sólo descifradoClave de sólo cifradoCifrado de clavesClave de sólo cifradoHabilitar uso para cifrado de claves en certificados generados Error en generación de clavesError en generación de claves: %sPar de claves Uso de clave / EKUIzquierdoListar certificados y CSRs cuyo titular o número de serie contenga (sin distinguir mayúsculas/minúsculas).Lista las solicitudes de certificación existentes en la base de datosLista los certificados de la base de datos. Con la opción --see-revoked, lista también los certificados revocados.Localidad o ciudad de certif. generados debe coincidir con la AC Huella digital MD5MD5FINGERPRINTVentana principal mostrando la lista de certificadosGestiona autoridades de certificación y certificados X.509Coincidencias (id serie asunto): Número máximo de horas entre actualizaciones de CRLs Máximo número de meses antes de la caducidad de los nuevos certificados:Máximo nº de meses antes de caducidad de nuevos certificados MóduloMeses antes de la caducidad del certificado:Meses antes de la caducidad del certificado raíz:NombreRestricciones de nombreNueva AC - gnoMintNueva CRL - gnoMintNuevo certificado - gnoMintNuevos parámetros Diffie-Hellman - gnoMintNombre común (CN) del nuevo certificado:Nueva solicitud de certificación - gnoMintNoNo se encontró ninguna Autoridad de Certificación. Por favor, cree primero una AC.No repudioHabilitar uso para no repudio en certificados generados NingunoNinguno.No después deNo antes deNo se ha hecho nada. Aviso: %d certificado caduca en los próximos %d días. Utilice `renewcert ` para reemitirlo. Aviso: %d certificados caducan en los próximos %d días. Utilice `renewcert ` para reemitirlos. Número de CSRs en fichero: %d Número de certificados en fichero: %d Firma de OCSPHabilitar finalidad de firma de OCSP en certificados generados AceptarEs necesario proporcionar una nueva contraseña para proteger las claves privadas de la base de datos, para que sólo las personas autorizadas puedan hacer uso de ellas. Esta contraseña será solicitada siempre que gnoMint vaya a hacer uso de cualquier clave privada de la base de datos.Es necesario proporcionar una contraseña para proteger las claves privadas de la base de datos, de modo que sólo las personas autorizadas puedan hacer uso de ellas. Esta contraseña será solicitada siempre que gnoMint requiera emplear cualquier clave privada de la base de datos.Sólo la clave privada (cifrada).Sólo la clave privada (sin cifrar).Sólo la parte pú_blica.Abrir base de datos de ACAbrir _recientesAbrir base de datos existenteOpenSSL ha devuelto el siguiente error tras intentar descifrar la clave privada: %sAbriendo base de datos %s...Operación cancelada.Operación cancelada. OrganizaciónOrganización (O)Unidad organizativa:Organización de certif. generados debe coincidir con la de la AC Organización:Unidad organizativa (OU)Unidad organizativa de certif. debe coincidir con la de la ACUnidad organizativaP-256 (256 bits)P-384 (384 bits)P-521 (521 bits)Clave privada PKCS#8 cifradaParámetrosContraseña (confirmar):Contraseña cambiada con éxitoContraseña cambiada con éxito. Contraseña establecida con éxitoContraseña establecida con éxito. Proteger con contraseñaContraseña eliminada con éxitoContraseña eliminada con éxito. Contraseña:Restricción de longitud de rutaIntroduzca un nombre común (CN) para la AC.Introduzca un nombre común (CN) para la solicitud de certificado.Por favor, introduzca un nombre de servidor.Por favor: introduzca los datos correspondientes al titular de la solicitud de certificación: Por favor: introduzca los datos correspondientes al titular de la nueva autoridad de certificación: Introduzca la contrase_ña de la base de datos:Introduzca la contraseña para '%s'Por favor, seleccione una Autoridad de Certificación.Por favor, seleccione un certificado para exportar su cadena.Por favor, seleccione una o más solicitudes para eliminar.Por favor, seleccione uno o más certificados para revocar.Seleccione el fichero:Seleccione la opción más adecuada para lo que desea importar:Seleccione qué parte almacenada del certificado desea exportar:Seleccione qué parte almacenada de la solicitud de certificación desea exportar:Introduzca la contraseña actual:Introduzca la nueva contraseña:Introduzca la contraseñaIntroduzca el tamaño del número primo, en bits:Introduzca la contrase_ña actual de la base de datos (Vacía para cancelar): Seleccione la autoridad de certificación para la que se va a crear una CRL (lista de certificados revocados):Restricciones de políticaRelación de políticasPolítica establecida correctamente a '%s'. PreferenciasPeríodo de uso de clave privadaClave privada %sLongitud en bits de la clave privada:Clave privada exportada con éxitoClave privada extraída con éxito al fichero '%s' Clave privada para %sTipo de clave privada:Hubo problemas al crear la base de datos de la AC '%s': %sHubo problemas al importar el fichero '%s'Hubo problemas al importar el fichero indicado.Hubo problemas al abrir la base de datos de la AC '%s'Hubo problemas al abrir la base de datos de la AC '%s' Hubo problemas al abrir la nueva base de datos de la AC '%s'Hubo problemas al abrir la nueva base de datos de la AC '%s' Error al llamar a openssl para descifrar la clave privada.PropiedadesProteger las claves privadas de la base de datos de la AC con contraseña:Exponente públicoGeneración rápida de un certificado para un servidor de correoGeneración rápida de un certificado para un servidor webGeneración rápida de certificado de servidor (tipo-de-cert: 'web' o 'email')Nombre RFC822RSAClave pública RSARe_novar con clave nuevaReemitir un certificado (no de AC) con el mismo titular + SAN y un par de claves nuevo. El certificado antiguo permanece en la base de datos. Los certificados de AC no se pueden renovar.Recordar esta contraseña durante toda esta sesión de gnoMint¿Renovar este certificado? gnoMint emitirá un nuevo certificado con el mismo asunto y SAN que el seleccionado, firmado por la misma AC, con un par de claves recién generado. El certificado antiguo permanecerá en la base de datos — revóquelo manualmente cuando haya desplegado el nuevo.¿Renovar? [Sí]/No Revo_carRevocaciónRevocarRevocar _todos los seleccionados...Revocar certificados y generar listas de certificados revocados (CRLs)Revocar varios certificados a la vez. Los identificadores que no son de certificado se ignoran.Revocar el certificado con identificador proporcionadoRevocar el certificado seleccionadoVisibilidad de certificados revocadosRevocar un certificado hará que se incluya en la siguiente CRL, marcándolo como no válido. Las solicitudes de certificación (CSRs) en la selección (si las hay) no se ven afectadas; utilice "Eliminar CSRs seleccionados" para estas.Revocar un certificado hará que se incluya en la siguiente CRL, marcándolo como no válido. Así, se impedirá cualquier uso futuro del certificado (siempre y cuando se compruebe la CRL)Revocar un certificado hará que se incluya en la siguiente CRL, marcándolo como no válido. Así, se impedirá cualquier uso futuro del certificado (siempre y cuando se compruebe la CRL) Además, revocar el certificado de una AC puede invalidar todos los certificados generados con él, por lo que todos deberían regenerarse con un nuevo certificado de AC.DerechoProp. de certificado raízSANHuella digital SHA-1Huella digital SHA-256Huella digital SHA1SHA1FINGERPRINTHuella digital SHA-256SHA256FINGERPRINTHuella digital SHA-512SHA512FINGERPRINTGuardar base de datos de AC como...Guardar parámetros Diffie-HellmanGuarda el fichero actual con un nombre de fichero distintoGuardando solicitud de certificación en base de datosSeleccione fichero PEM a importarSeleccione directorio a importarSeleccionar fichero de clave privadaSeleccionadoNº serieNº de serieNº de serieNombre del servidor:El nombre del servidor no puede estar vacíoEstablece la preferencia de programa indicadaMostrar (este) mensaje de ayudaMostrar política de la ACMostrar mensaje de "Acerca de..."Mostrar información sobre la distribución del programaMostrar preferencias de programaMostrar propiedades del CSR proporcionadoMostrar propiedades del certificado indicadoMostrar información de versiónMostrar información de garantíaMostrando solo el %d certificado que caduca en los próximos %d días. Cierre este aviso para volver a mostrar todo.Mostrando solo los %d certificados que caducan en los próximos %d días. Cierre este aviso para volver a mostrar todo.Mostrando políticas del siguiente certificado: Comparación lado a lado de dos certificados. Cada argumento es un identificador numérico de la BD o una ruta a un fichero PEM.FirmarFirmar la solicitud de certificación seleccionadaFirmaAlgoritmo de firmaAC firmante:Comienza un nuevo proceso de creación de solicitud de certificaciónIniciar un nuevo proceso de creación de Autoridad de Certificación auto-firmadaEstado o provincia de certif. generados debe coincidir con la AC Nombre de estado o provinciaNombre de estado o provincia: TitularNombre alternativo de titularNombre alternativo de titular (SAN)Nombres alternativos de titularNombres alternativos de titular:CN del titularPaís del titularDN del titularAtributos de directorio de titularId. de clave del titularClave identificadora de titularLocalidad del titularO del titularOU del titularClave pública de titularDatos de clave pública de titularEstado/provincia del titularId. único de titularCorreo del titularTitular: CN del titularO del titularOU del titularSintaxis: %s NO HAY GARANTÍA PARA ESTE PROGRAMA, HASTA EL EXTREMO PERMITIDO POR LA LEY APLICABLE. A NO SER QUE SE INDIQUE LO CONTRARIO, LOS PROPIETARIOS DEL COPYRIGHT, U OTRAS TERCERAS PARTES PROPORCIONAN EL PROGRAMA "TAL CUAL", SIN GARANTÍAS DE NINGÚN TIPO, EXPRESAS O IMPLÍCITAS. ESTO INCLUYE PERO NO SE LIMITA A LAS GARANTÍAS IMPLÍCITAS DE COMERCIABILIDAD O IDONEIDAD PARA UN FIN DETERMINADO. TODO RIESGO DERIVADO DE LA CALIDAD O PRESTACIONES DEL PROGRAMA CORRE DE SU PARTE. SI EL PROGRAMA FUERA DEFECTUOSO, USTED DEBERÁ ASUMIR LOS COSTES DE CUALQUIER OPERACIÓN DE SOPORTE TÉCNICO, REPARACIÓN O CORRECCIÓN. Para más información sobre la garantía, véanse las secciones 15 y siguientes de la Licencia Pública General GNU. Debería haber recibido una copia de la Licencia Pública General de GNU junto con este programa. Si no es así, veáse . Cliente TLS WWWCliente TLS WWWServidor TLS WWWCliente WWW TLSServidor web TLSHabilitar finalidad para cliente web TLS en certific. generados Habilitar finalidad de servidor web TLS para certific. generados VERDADEROEl tamaño (anchura,altura) de gnoMint al iniciarse. No debe ser menor a (320,200).La longitud en bits del número primo debe ser múltiplo entero de 1024La contraseña actual que ha introducido no coincide con la contraseña real de la base de datos.La contraseña actual que ha introducido no coincide con la contraseña real de la base de datos.La fecha de caducidad del nuevo certificado es posterior a la fecha de caducidad del certificado de la AC. Según la normativa actual, no debe generarse ningún certificado así, por lo que el nuevo certificado se creará con la misma fecha de caducidad que la del certificado de la AC.El fichero ya existe, por lo que se sobreescribiráEl fichero indicado en base de datos contiene una clave privada,pero dicha clave no se corresponde con el certificado.No se pudo abrir el fichero indicado en la base de datos.El fichero indicado en la base de datos no contiene ninguna clave privada reconocible.El fichero indicado en la base de datos no existe.El fichero que almacena la clave privada del certificado '%s' está protegido con contraseña El fichero que almacena la clave privada del certificado '%s' está protegida con contraseña.Por favor, introduzca la contraseña correspondiente a este fichero.El identificador de AC proporcionado no es válidoEl identificador de CA proporcionado no es válidoEl identificador de CSR proporcionado no es válidoEl identificador de certificado proporcionado no es válidoEl identificador de certificado proporcionado no es válidoEl fichero indicado contiene una clave privada válida. Sin embargo, ésta no ha sido importada a la base de datos porque no encaja con ninguno de los certificadosexistentes sin clave privada.El fichero indicado contiene una clave privada válida. Sin embargo, ésta no ha sido importada a la base de datos porque no encaja con ninguno de los certificados o solicitudes de certificación existentes sin clave privada.La contraseña que ha introducido no coincide con la contraseña empleada para cifrar este elementoLa contraseña que ha introducido no coincide con la contraseña de la base de datos.La contraseña que ha introducido no coincide con la empleada para cifrar este fichero.La contraseña que ha introducido no coincide con la contraseña empleada para cifrar este elemento.El identificador de política proporcionado no es válidoEl identificador de preferencia proporcionado no es válidoLas contraseñas introducidas son distintas.Las contraseñas introducidas son distintas.El nuevo certificado se validará para los siguientes usos y finalidades: La política de esta AC obliga a que los campos "país" de los certificados expedidos seanigual al del certificado de la AC.La política de esta AC obliga a que los campos "localidad/ciudad" de los certificados expedidos seanigual al del certificado de la AC.La política de esta AC obliga a que los campos "organización" de los certificados expedidos seanigual al del certificado de la AC.La política de esta AC obliga a que los campos "unidad organizativa" de los certificados expedidos seanigual al del certificado de la AC.La política de esta AC obliga a que los campos "estado/provincia" de los certificados expedidos seanigual al del certificado de la AC.La base de datos seleccionada fue creada mediante una versión de gnoMint más reciente que la que se está ejecutando.Todo el fichero seleccionado, o alguno de los elementos que lo conforman, parece haber sido cifrado empleando una contraseña. Para importar el fichero en la base de datos de gnoMint, deberá proporcionar una contraseña adecuada.Todo el fichero seleccionado, o alguno de los elementos que lo conforman, parece haber sido cifrado empleando una contraseña. Para importar el fichero en la base de datos de gnoMint, deberá proporcionar una contraseña adecuada. Hubo un problema al importar la clave privada correspondiente al certificado raíz de la AC.Ocurrió un error al importar el certificado raíz público de la AC.Ocurrió un error al abrir el directorio certs/.Ocurrió un error al abrir el directorio crl.Ocurrió un error al abrir el directorio keys.Ocurrió un error al abrir el directorio newcerts/.Ocurrió un error al abrir el directorio req.Error al descifrar clave privada.Ocurrió un error al exportar la CRLOcurrió un error al exportar la solicitud de certificación.Ocurrió un error al exportar el certificadoError al exportar clave privada.Ocurrió un error al exportar el certificado.Ocurrió un error al generar la CRL.Hubo un problema al generar el fichero PKCS#12Hubo un problema al obtener la clave privada.Ocurrió un error al obtener los certificados revocados.Hubo un problema al obtener el certificado y la clave privada de la base de datos interna.Hubo un error al proteger con contraseña la clave privada.Ocurrió un error al guardar los parámetros Diffie-Hellman.Error al descifrar clave privada.Ocurrió un error al escribir la CRL.Estas son las propiedades proporcionadas del CSR: Estas son las propiedades proporcionadas para la nueva AC: Se borrará esta solicitud de certificación.Esta acción necesita emplear una o más claves privadas almacenadas en la base de datos de la AC. Por favor, introduzca la contraseña de la base de datos.Esta acción necesita emplear una o más claves privadas almacenadas en la base de datos de la AC. Este certificado ya existe en la base de datos: no se puede insertar de nuevo.Este certificado será revocado.Este programa es software libre; se le anima a distribuirlo bajo ciertas condiciones; teclee 'distribution' para más detalles. Esta operación no puede deshacerse. ¿Está seguro? Sí/[No] Este programa se proporciona SIN GARANTÍAS DE NINGÚN TIPO; para más detalles, teclee 'warranty'. Este programa es software libre; puede distribuirlo y/o modificarlo según los términos de la Licencia Pública General GNU (GNU GPL), según fue publicada por la Free Software Foundation; en la versión 3 de la Licencia, o (a su elección) cualquier versión posterior. Este programa se distribuye con la esperanza de que sea útil, pero SIN GARANTÍA DE NINGÚN TIPO; sin ninguna garantía implícita de estar APTO PARA LA COMERCIALIZACIÓN o de IDONEIDAD PARA ALGÚN FIN DETERMINADO. Para más detalles, vea la Licencia Pública General GNU. Debería haber recibido una copia de la Licencia Pública General GNU junto con este programa; si no es así, visite . Este programa es software libre; puede distribuirlo y/o modificarlo según los términos de la Licencia Pública General GNU (GNU GPL), según fue publicada por la Free Software Foundation; en la versión 3 de la Licencia, o (a su elección) cualquier versión posterior. Este programa se distribuye con la esperanza de que sea útil, pero SIN GARANTÍA; sin ninguna garantía implícita de estar APTO PARA LA COMERCIALIZACIÓN o de IDONEIDAD PARA UN FIN DETERMINADO. Para más detalles, vea la Licencia Pública General GNU. Debería haber recibido una copia de la Licencia Pública General GNU junto con este programa; si no es así, escriba a la Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, EE.UU.Este asistente creará un certificado para su servidor con la configuración predeterminada. Introduzca el nombre del servidor (p.ej., mi.servidor.dns) y seleccione la AC que lo firmará.Sellado de tiempoHabilitar finalidad para sellado de tiempo en certific. generados Por hacer. Funcionalidad aún no implementada.Traductores: %s TipoTipo:URIError inesperadoDesconocidoComillas desemparejadas Operación no soporta: no se puede generar un PKCS#12 para una solicitud de certificación.Uso: deletemany [id. de csr ...]Uso: diff Uso: exportchain Uso: renewcert Uso: revokemany [id de certificado ...]Uso: search ValidezValidez Validez: ValorEl valor no puede estar vacíoValor:VersiónServidor WebServidor web (TLS)Asistente de servidor webSi los certificados ya caducados deben ser visibles en el árbol de certificados. Las ACs siempre son visibles independientemente de esta configuración, de modo que los certificados aún válidos que hayan firmado sigan siendo accesibles.Si las solicitudes de certificado deben ser visibles.Si los certificados recién creados o importados son exportados automáticamente al almacén de certificados de gnome-keyring.Si los certificados revocados deben ser visiblesTamaño de ventanaCon gnoMint puede:Herramienta de gestión de Autoridades de Certificación X.509SíSe va a asignar a la política '%s' el nuevo valor '%s'.Va a asignar a la preferencia 'Soporte de gnome-keyring' el nuevo valor '%d'.Se va a proceder a crear una solicitud de certificación con estas propiedades.Se va a proceder a crear una nueva autoridad de certificación con estaspropiedades.Se va a crear y exportar un conjunto de parámetros Diffie-Hellman a un fichero con formato PKCS#3.Se va a proceder a la firma de una solicitud de certificación, creándose así un nuevo certificado. Por favor, compruebe las propiedades de éste.Se va a proceder a la firma de una solicitud de certificación. Por favor, seleccione la autoridad de certificación que se va a emplear para firmarlo.Se va a proceder a firmar la siguiente solicitud de certificación: Debe proporcionar la contraseña actual de la base de datos antes de cambiarla. Es necesario proporcionar una contraseña para proteger la clave privada exportada, de manera que sólo las personas autorizadas puedan hacer uso de ella. Esta contraseña será solicitada por cualquier aplicación que vaya a importar el certificado.Es necesario proporcionar una contraseña para proteger la clave privada exportada, de manera que sólo las personas autorizadas puedan hacer uso de ella. Esta contraseña será solicitada por cualquier aplicación que vaya a hacer uso de la clave privada._Añadir_Añadir autoridad de certificación auto-firmada_CancelarCertificados_Cerrar_Comparar con un archivo PEM…_Editar_Generar certificadoAy_udaI_mportar_Nueva base de datos de certificados_Siguiente_No_AceptarAbrir base de datos de certificados_Anterior_Salir_EliminarCertificados _revocados_Guardar base de datos de certificados como..._Guardar nombre de fichero en base de datos para cargarlo automáticamente_Mostrarlos_Firmar_Ver_Síadd-csr [id-de-CA-para-heredar-campos]addservercert certificado;x.509;cifrado;crlgen delete deletemany [id. de csr ...]dhgen diff servidor de correoexportchain extractcertpkey extractcsrpkey gnoMintgnoMint. Gestor de ACs X.509gnoMint es un programa diseñado para crear y gestionar Autoridades de Certificación, así como sus certificadosgnoMint es una herramienta para crear y gestionar fácilmente autoridades de certificación (ACs). Ofrece una visualización clara de todos sus certificados y sus propiedades, así como una gestión sencilla de las actividades de la AC.gnoMint ofrece una interfaz gráfica sencilla e intuitiva basada en GTK para todas estas operaciones, haciendo accesible la gestión de certificados incluso para usuarios sin conocimientos profundos de los estándares X.509 y la criptografía.gnoMint emitirá un nuevo certificado con el mismo titular y SAN que este, firmado por la misma AC, con un par de claves nuevo. El certificado antiguo permanecerá en la base de datos.Preferencias actuales de gnoMint-cli: importdir importfile etiquetapuede variardebe coincidirnewdb opendb página 3renewcert revoke revokemany [id de certificado ...]savedbas search setpolicy setpreference showcert showcsr showpolicy sign David Marín Carreño Launchpad Contributions: David Marín https://launchpad.net/~davefx DiegoJ https://launchpad.net/~diegojromerolopez Sergio Oller https://launchpad.net/~zeehio Victor Herrero https://launchpad.net/~victorheraservidor webcon el certificado correspondiente a esta AC: gnomint-1.6.4/po/stamp-po0000644000000000000000000000001215212761320014024 0ustar00rootroottimestamp gnomint-1.6.4/po/sk.gmo0000644000000000000000000000400215212761320013465 0ustar00rootroot%013FX#h  5  & 5CHL Q]3v3 rp2r (/3C w 0 53!2Uj    CSR subjectEmmited byValidity#Description#Activated onAdd CSRAdd an autosigned CAAny purposeAutomatic exporting of certificates for gnome-keyringBoth parts.CA PolicyCA Root Certificate Common Name (CN):CA propertiesCACNCAOCAOUCRL signingCSR properties - gnoMintWhether the certificate requests should be visible.Whether the revoked certificates should be visible.Window sizetranslator-creditsProject-Id-Version: gnomint Report-Msgid-Bugs-To: davefx@gmail.com PO-Revision-Date: 2010-04-02 04:51+0000 Last-Translator: David Marín Language-Team: Slovak Language: sk MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2010-08-11 09:00+0000 X-Generator: Launchpad (build Unknown) Subjekt zo žiadosti o vydanie certifikátuVydanýPlatnosť#Popis#AktivovanéPridať žiadosť o vydanie certifikátuPridať self-signed CAĽubovoľný účelAutomatický export certifikátov pre gnome-keyringObe časti.Politika CABežné meno (CN) z certifikátu Koreňovej CA:Vlastnosti CACACNCAOCAOUVydávanie CRLVlastnosti žiadosti o vydanie certifikátu - gnoMintČi majú byť žiadosti o certifikát viditeľné.Či majú byť zrušené certifikáty viditeľné.Veľkosť oknaLaunchpad Contributions: David Marín https://launchpad.net/~davefx jariq https://launchpad.net/~jariqgnomint-1.6.4/po/fi.gmo0000644000000000000000000000302415212761320013451 0ustar00rootroot hik~%9%"3Vhz3 xVXh,z8"7#[x# D    CSR subjectValidityError exporting CSR to PEM structure.Error when copying data from CSR to certificate structureError when initializing crt structureError when setting csr versionError when signing self-signed csrKey decipher onlyKey encipher onlyTLS WWW Client.Whether the revoked certificates should be visible.Window sizetranslator-creditsProject-Id-Version: gnomint Report-Msgid-Bugs-To: davefx@gmail.com PO-Revision-Date: 2009-06-03 22:28+0000 Last-Translator: Ilkka Tuohela Language-Team: Finnish Language: fi MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2010-08-11 09:00+0000 X-Generator: Launchpad (build Unknown) CSR-aiheKelpoisuusVirhe vietäessä CSR:ää PEM-rakenteeseen.Virhe kopioitaessa tietoja CSR:stä varmennerakenteeseenVirhe alustettaessa CRT-rakennettaVirhe asetettaessa CSR-versiotaVirhe allekirjoitettaessa itseallekirjoitettua CSR:ääAvain vain salauksen purkuunAvain vain salaukseenTLS WWW-asiakasNäytetäänkö perutut varmenteet.Ikkunan kokoLaunchpad Contributions: Ilkka Tuohela https://launchpad.net/~hilegnomint-1.6.4/po/quot.sed0000644000000000000000000000023115212761270014035 0ustar00rootroots/"\([^"]*\)"/“\1”/g s/`\([^`']*\)'/‘\1’/g s/ '\([^`']*\)' / ‘\1’ /g s/ '\([^`']*\)'$/ ‘\1’/g s/^'\([^`']*\)' /‘\1’ /g s/“”/""/g gnomint-1.6.4/po/insert-header.sin0000644000000000000000000000124015212761270015616 0ustar00rootroot# Sed script that inserts the file called HEADER before the header entry. # # At each occurrence of a line starting with "msgid ", we execute the following # commands. At the first occurrence, insert the file. At the following # occurrences, do nothing. The distinction between the first and the following # occurrences is achieved by looking at the hold space. /^msgid /{ x # Test if the hold space is empty. s/m/m/ ta # Yes it was empty. First occurrence. Read the file. r HEADER # Output the file's contents by reading the next line. But don't lose the # current line while doing this. g N bb :a # The hold space was nonempty. Following occurrences. Do nothing. x :b } gnomint-1.6.4/po/cs.po0000644000000000000000000030345615212761317013336 0ustar00rootroot# a gnoMint's Czech translation catalog # Copyright (C) 2006 David Marin Carreño # This file is distributed under the same license as the gnoMint package. # Luboš Staněk , 2008. # msgid "" msgstr "" "Project-Id-Version: gnoMint 0.5.2\n" "Report-Msgid-Bugs-To: davefx@gmail.com\n" "POT-Creation-Date: 2026-06-12 10:43+0000\n" "PO-Revision-Date: 2009-11-08 15:27+0000\n" "Last-Translator: Kuvaly [LCT] \n" "Language-Team: Czech \n" "Language: cs\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-08-11 09:00+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: gconf/org.gnome.gnomint.gschema.xml:7 msgid "Window size" msgstr "Velikost okna" #: gconf/org.gnome.gnomint.gschema.xml:8 msgid "" "The (width,length) size gnoMint should take when started. This cannot be " "smaller than (320,200)." msgstr "" #: gconf/org.gnome.gnomint.gschema.xml:16 msgid "Revoked certificates visibility" msgstr "" #: gconf/org.gnome.gnomint.gschema.xml:17 msgid "Whether the revoked certificates should be visible." msgstr "" #: gconf/org.gnome.gnomint.gschema.xml:24 msgid "Expired certificates visibility" msgstr "" #: gconf/org.gnome.gnomint.gschema.xml:25 msgid "" "Whether already-expired certificates should be visible in the certificates " "tree. CAs are always visible regardless of this setting so that any still-" "valid certificates they signed remain reachable." msgstr "" #: gconf/org.gnome.gnomint.gschema.xml:35 msgid "Days before expiration to highlight certificates in amber" msgstr "" #: gconf/org.gnome.gnomint.gschema.xml:36 msgid "" "Certificates whose effective validity ends within this many days are shown " "in amber in the certificates tree, as a heads-up that they should be renewed " "soon. Setting this to 0 disables the amber highlight (certificates appear " "either normally or in gray for already-expired)." msgstr "" #: gconf/org.gnome.gnomint.gschema.xml:47 #, fuzzy msgid "Certificate requests visibility" msgstr "CSR subjekt" #: gconf/org.gnome.gnomint.gschema.xml:48 msgid "Whether the certificate requests should be visible." msgstr "" #: gconf/org.gnome.gnomint.gschema.xml:55 msgid "Automatic exporting of certificates for gnome-keyring" msgstr "" #: gconf/org.gnome.gnomint.gschema.xml:56 msgid "" "Whether the created or imported certificates are automatically exported to " "gnome-keyring certificate-store." msgstr "" #: gui/certificate_popup_menu.ui:7 gui/csr_popup_menu.ui:7 #: gui/main_window.ui:45 #, fuzzy msgid "Properties" msgstr "CSR subjekt" #: gui/certificate_popup_menu.ui:13 gui/main_window.ui:35 msgid "Export full c_hain..." msgstr "" #: gui/certificate_popup_menu.ui:17 gui/csr_popup_menu.ui:13 #: gui/main_window.ui:34 msgid "E_xport" msgstr "E_xportovat" #: gui/certificate_popup_menu.ui:21 gui/csr_popup_menu.ui:17 #: gui/main_window.ui:23 msgid "Extrac_t private key" msgstr "" #: gui/certificate_popup_menu.ui:27 gui/main_window.ui:24 msgid "Re_new with fresh key" msgstr "" #: gui/certificate_popup_menu.ui:31 msgid "_Compare with PEM file…" msgstr "" #: gui/certificate_popup_menu.ui:35 gui/main_window.ui:25 msgid "Revo_ke" msgstr "" #: gui/certificate_popup_menu.ui:41 gui/main_window.ui:21 msgid "Add _Web Server Certificate (wizard)" msgstr "" #: gui/certificate_popup_menu.ui:45 gui/main_window.ui:22 msgid "Add _Email Server Certificate (wizard)" msgstr "" #: gui/certificate_properties_dialog.ui:19 msgid "Certificate properties - gnoMint" msgstr "" #: gui/certificate_properties_dialog.ui:54 #, fuzzy msgid "This certificate has been verified for the following uses:" msgstr "Tento certifikát byl ověřen pro následující použití:" #: gui/certificate_properties_dialog.ui:77 msgid "MD5FINGERPRINT" msgstr "" #: gui/certificate_properties_dialog.ui:88 msgid "SHA1FINGERPRINT" msgstr "" #: gui/certificate_properties_dialog.ui:99 #: gui/certificate_properties_dialog.ui:132 #: gui/certificate_properties_dialog.ui:176 #: gui/certificate_properties_dialog.ui:231 gui/creation_process_window.ui:15 #: gui/creation_process_window.ui:61 gui/csr_properties_dialog.ui:109 #: gui/new_ca_window.ui:56 gui/new_ca_window.ui:306 gui/new_ca_window.ui:521 #: gui/new_req_window.ui:46 gui/new_req_window.ui:157 gui/new_req_window.ui:413 msgid " " msgstr " " #: gui/certificate_properties_dialog.ui:110 msgid "CertExpirationDate" msgstr "" #: gui/certificate_properties_dialog.ui:121 msgid "CertActivationDate" msgstr "" #: gui/certificate_properties_dialog.ui:143 msgid "CAOU" msgstr "CAOU" #: gui/certificate_properties_dialog.ui:154 msgid "CAO" msgstr "CAO" #: gui/certificate_properties_dialog.ui:165 msgid "CACN" msgstr "CACN" #: gui/certificate_properties_dialog.ui:187 msgid "CertSN" msgstr "" #: gui/certificate_properties_dialog.ui:198 gui/csr_properties_dialog.ui:63 msgid "SubjectOU" msgstr "" #: gui/certificate_properties_dialog.ui:209 gui/csr_properties_dialog.ui:87 #, fuzzy msgid "SubjectO" msgstr "Země" #: gui/certificate_properties_dialog.ui:220 gui/csr_properties_dialog.ui:98 #, fuzzy msgid "SubjectCN" msgstr "Země" #: gui/certificate_properties_dialog.ui:242 msgid "MD5 fingerprint" msgstr "" #: gui/certificate_properties_dialog.ui:253 msgid "SHA1 fingerprint" msgstr "" #: gui/certificate_properties_dialog.ui:264 #, fuzzy msgid "Fingerprints" msgstr "CSR subjekt" #: gui/certificate_properties_dialog.ui:276 msgid "Expires on" msgstr "" #: gui/certificate_properties_dialog.ui:287 msgid "Activated on" msgstr "" #: gui/certificate_properties_dialog.ui:298 msgid "Validity" msgstr "Platnost" #: gui/certificate_properties_dialog.ui:310 #: gui/certificate_properties_dialog.ui:389 gui/csr_properties_dialog.ui:120 msgid "Organizational Unit (OU)" msgstr "Organizační jednotka (OU)" #: gui/certificate_properties_dialog.ui:321 #: gui/certificate_properties_dialog.ui:400 gui/csr_properties_dialog.ui:142 msgid "Organization (O)" msgstr "Organizace (O)" #: gui/certificate_properties_dialog.ui:332 #: gui/certificate_properties_dialog.ui:411 gui/csr_properties_dialog.ui:153 msgid "Common Name (CN)" msgstr "Společné jméno (CN)" #: gui/certificate_properties_dialog.ui:343 #, fuzzy msgid "Emmited by" msgstr "Platnost" #: gui/certificate_properties_dialog.ui:355 msgid "Subject Alternative Names" msgstr "" #: gui/certificate_properties_dialog.ui:378 msgid "Serial number" msgstr "" #: gui/certificate_properties_dialog.ui:422 #, fuzzy msgid "Certificate subject" msgstr "CSR subjekt" #: gui/certificate_properties_dialog.ui:434 msgid "SHA256FINGERPRINT" msgstr "" #: gui/certificate_properties_dialog.ui:449 msgid "SHA256 fingerprint" msgstr "" #: gui/certificate_properties_dialog.ui:460 msgid "SHA512FINGERPRINT" msgstr "" #: gui/certificate_properties_dialog.ui:475 msgid "SHA512 fingerprint" msgstr "" #: gui/certificate_properties_dialog.ui:486 #: gui/certificate_properties_dialog.ui:509 gui/csr_properties_dialog.ui:176 msgid "Email address" msgstr "" #: gui/certificate_properties_dialog.ui:536 gui/csr_properties_dialog.ui:203 msgid "General" msgstr "" #: gui/certificate_properties_dialog.ui:557 #, fuzzy msgid "Certificate hierarchy" msgstr "CSR subjekt" #: gui/certificate_properties_dialog.ui:582 #, fuzzy msgid "Certificate fields" msgstr "CSR subjekt" #: gui/certificate_properties_dialog.ui:605 msgid "Details" msgstr "Podrobnosti" #: gui/certificate_properties_dialog.ui:623 msgid "" "\n" "It is recommended that all the certificates generated by a CA\n" "share the same properties.\n" "If you want to generate certificates with different properties, you\n" "should create a hierarchy of CAs, each one with its own policy for\n" "certificate generation.\n" "\n" "Please, define the maximum set of properties for the\n" "certificates that this CA will be able to generate:\n" msgstr "" #: gui/certificate_properties_dialog.ui:649 msgid "" "Maximum number of months before\n" "expiration of the new generated certificates:" msgstr "" #: gui/certificate_properties_dialog.ui:686 msgid "Hours between CRL updates:" msgstr "" #: gui/certificate_properties_dialog.ui:711 msgid "CRL distribution URL:" msgstr "" #: gui/certificate_properties_dialog.ui:727 #, fuzzy msgid "CRL Properties" msgstr "CSR subjekt" #: gui/certificate_properties_dialog.ui:750 #, fuzzy msgid "Country" msgstr "Země:" #: gui/certificate_properties_dialog.ui:761 msgid "State or Province name" msgstr "" #: gui/certificate_properties_dialog.ui:778 #: gui/certificate_properties_dialog.ui:802 #: gui/certificate_properties_dialog.ui:859 #: gui/certificate_properties_dialog.ui:883 #: gui/certificate_properties_dialog.ui:907 msgid "must be the same" msgstr "" #: gui/certificate_properties_dialog.ui:786 #: gui/certificate_properties_dialog.ui:810 #: gui/certificate_properties_dialog.ui:867 #: gui/certificate_properties_dialog.ui:891 #: gui/certificate_properties_dialog.ui:915 msgid "may differ" msgstr "" #: gui/certificate_properties_dialog.ui:820 msgid "City" msgstr "Město" #: gui/certificate_properties_dialog.ui:831 #, fuzzy msgid "Organization" msgstr "Organizace:" #: gui/certificate_properties_dialog.ui:842 msgid "Organizational unit" msgstr "Organizační jednotka" #: gui/certificate_properties_dialog.ui:927 #, fuzzy msgid "Inherited fields from CA subject" msgstr "CSR subjekt" #: gui/certificate_properties_dialog.ui:952 gui/new_cert_window.ui:464 #: src/tls.c:1463 msgid "Certification Authority" msgstr "" #: gui/certificate_properties_dialog.ui:963 gui/new_cert_window.ui:487 #: src/certificate_properties.c:445 src/tls.c:1470 msgid "Non repudiation" msgstr "" #: gui/certificate_properties_dialog.ui:974 gui/new_cert_window.ui:440 #: src/certificate_properties.c:447 src/tls.c:1472 msgid "Key encipherment" msgstr "" #: gui/certificate_properties_dialog.ui:986 gui/new_cert_window.ui:428 #: src/certificate_properties.c:449 src/tls.c:1474 msgid "Data encipherment" msgstr "" #: gui/certificate_properties_dialog.ui:998 gui/new_cert_window.ui:475 #: src/certificate_properties.c:451 src/tls.c:1476 msgid "Key agreement" msgstr "" #: gui/certificate_properties_dialog.ui:1010 gui/new_cert_window.ui:452 #: src/certificate_properties.c:443 src/tls.c:1468 msgid "Digital signature" msgstr "" #: gui/certificate_properties_dialog.ui:1022 gui/new_cert_window.ui:498 #: src/certificate_properties.c:455 src/tls.c:1480 msgid "CRL signing" msgstr "CRL značkování" #: gui/certificate_properties_dialog.ui:1043 msgid "Uses of new generated certificates" msgstr "" #: gui/certificate_properties_dialog.ui:1067 gui/new_cert_window.ui:621 #: src/certificate_properties.c:1480 src/tls.c:1500 msgid "Email protection" msgstr "" #: gui/certificate_properties_dialog.ui:1079 gui/new_cert_window.ui:610 #: src/certificate_properties.c:1479 src/tls.c:1498 msgid "Code signing" msgstr "" #: gui/certificate_properties_dialog.ui:1090 gui/new_cert_window.ui:598 msgid "TLS Web client" msgstr "" #: gui/certificate_properties_dialog.ui:1102 gui/new_cert_window.ui:586 msgid "TLS Web server" msgstr "" #: gui/certificate_properties_dialog.ui:1114 gui/new_cert_window.ui:575 #: src/certificate_properties.c:1481 src/tls.c:1502 msgid "Time stamping" msgstr "" #: gui/certificate_properties_dialog.ui:1125 gui/new_cert_window.ui:564 #: src/certificate_properties.c:1483 src/tls.c:1506 msgid "Any purpose" msgstr "Jakýkoli účel" #: gui/certificate_properties_dialog.ui:1136 gui/new_cert_window.ui:553 #: src/certificate_properties.c:1482 src/tls.c:1504 msgid "OCSP signing" msgstr "" #: gui/certificate_properties_dialog.ui:1159 msgid "Purposes of new generated certificates" msgstr "" #: gui/certificate_properties_dialog.ui:1171 msgid "CA Policy" msgstr "" #: gui/certificate_properties_dialog.ui:1189 gui/csr_properties_dialog.ui:221 #: src/ca.c:2199 msgid "_Close" msgstr "" #: gui/change_password_dialog.ui:9 msgid "Database password protection - gnoMint" msgstr "" #: gui/change_password_dialog.ui:34 msgid "_Yes" msgstr "" #: gui/change_password_dialog.ui:43 msgid "_No" msgstr "" #: gui/change_password_dialog.ui:53 msgid "" "Enter new password again \n" "for confirmation:" msgstr "" #: gui/change_password_dialog.ui:86 msgid "" "Please, enter new \n" "password:" msgstr "" #: gui/change_password_dialog.ui:98 msgid "" "Please, enter current\n" "password:" msgstr "" #: gui/change_password_dialog.ui:121 msgid "" "Protect CA database private\n" "keys with password:" msgstr "" #: gui/change_password_dialog.ui:143 gui/export_certificate_dialog.ui:149 #: gui/get_db_password_dialog.ui:74 gui/get_pkey_dialog.ui:78 #: gui/import_file_or_directory_dialog.ui:94 gui/import_password_dialog.ui:90 #: gui/new_crl_dialog.ui:53 gui/san_editor_dialog.ui:93 msgid "Cancel" msgstr "" #: gui/change_password_dialog.ui:149 gui/get_db_password_dialog.ui:80 #: gui/get_pkey_dialog.ui:84 gui/import_password_dialog.ui:96 #: gui/new_crl_dialog.ui:59 gui/san_editor_dialog.ui:99 msgid "OK" msgstr "" #: gui/creation_process_window.ui:6 msgid "Creating new CA - gnoMint" msgstr "" #: gui/creation_process_window.ui:31 msgid "Creating CA Root Certificate" msgstr "" #: gui/creation_process_window.ui:51 gui/get_password_dialog.ui:90 #: gui/new_ca_window.ui:257 gui/new_ca_window.ui:464 gui/new_ca_window.ui:576 #: gui/new_cert_window.ui:257 gui/new_cert_window.ui:339 #: gui/new_cert_window.ui:661 gui/new_req_window.ui:107 #: gui/new_req_window.ui:357 gui/new_req_window.ui:548 gui/wizard_window.ui:117 msgid "_Cancel" msgstr "" #: gui/csr_popup_menu.ui:23 gui/main_window.ui:26 msgid "_Sign" msgstr "" #: gui/csr_popup_menu.ui:27 gui/main_window.ui:27 msgid "Delete" msgstr "" #: gui/csr_properties_dialog.ui:5 msgid "CSR properties - gnoMint" msgstr "" #: gui/csr_properties_dialog.ui:41 msgid "" "This Certificate Signing Request has its corresponding private key saved " "in the internal database." msgstr "" #: gui/csr_properties_dialog.ui:74 gui/new_cert_window.ui:230 #: src/csr_properties.c:86 src/new_cert.c:105 msgid "None" msgstr "" #: gui/csr_properties_dialog.ui:131 msgid "Subject Alternative Name (SAN)" msgstr "" #: gui/csr_properties_dialog.ui:164 msgid "CSR subject" msgstr "CSR subjekt" #: gui/dh_parameters_dialog.ui:16 msgid "New Diffie-Hellman parameters - gnoMint" msgstr "" #: gui/dh_parameters_dialog.ui:27 msgid "" "You are about to create and export a set of\n" "Diffie·Hellman parameters into a PKCS#3 structure file." msgstr "" #: gui/dh_parameters_dialog.ui:38 msgid "" "PKCS#3 files containing Diffie·Hellman parameters are used by some " "cryptographic\n" "applications for a secure interchange of their keys over insecure channels." msgstr "" #: gui/dh_parameters_dialog.ui:48 msgid "Please, enter the prime size, in bits:" msgstr "" #: gui/dh_parameters_dialog.ui:71 msgid "Close" msgstr "" #: gui/dh_parameters_dialog.ui:77 msgid "Generate" msgstr "" #: gui/export_certificate_dialog.ui:5 msgid "Export certificate - gnoMint" msgstr "" #: gui/export_certificate_dialog.ui:22 msgid "" "Please, choose which part of the\n" "saved certificate you want to export:" msgstr "" #: gui/export_certificate_dialog.ui:36 msgid "Only the pu_blic part." msgstr "" #: gui/export_certificate_dialog.ui:49 msgid "Export only the certificate to a public file, in PEM format." msgstr "" #: gui/export_certificate_dialog.ui:60 msgid "Only the private key (crypted)." msgstr "" #: gui/export_certificate_dialog.ui:74 msgid "" "Export the saved private key to a PKCS#8 password-\n" "protected file. This file should only be accessed by the\n" "subject of the certificate." msgstr "" #: gui/export_certificate_dialog.ui:87 msgid "Only the private key (uncrypted)." msgstr "" #: gui/export_certificate_dialog.ui:100 msgid "" "Export the saved private key to a PEM file. This option\n" "should only be used for exporting certificates that will be\n" "used in unattended servers." msgstr "" #: gui/export_certificate_dialog.ui:113 msgid "Both parts." msgstr "" #: gui/export_certificate_dialog.ui:126 msgid "" "Export both (private and public) parts to a password-\n" "protected PKCS#12 file. This kind of file can be imported\n" "by other common programs, such as web or mail clients." msgstr "" #: gui/export_certificate_dialog.ui:155 #, fuzzy msgid "Export" msgstr "E_xportovat" #: gui/get_db_password_dialog.ui:5 gui/get_password_dialog.ui:5 #: gui/import_password_dialog.ui:5 msgid "Enter password - gnoMint" msgstr "" #: gui/get_db_password_dialog.ui:20 msgid "" "This action requires using one or more private keys saved in the CA " "database.\n" "\n" "Please insert the database password." msgstr "" #: gui/get_db_password_dialog.ui:41 gui/get_password_dialog.ui:68 #: gui/import_password_dialog.ui:65 msgid "Password:" msgstr "Heslo:" #: gui/get_db_password_dialog.ui:58 msgid "Remember this password during this gnoMint session" msgstr "" #: gui/get_password_dialog.ui:19 msgid "Please, enter password" msgstr "" #: gui/get_password_dialog.ui:56 msgid "Password (confirm):" msgstr "Heslo (pro potvrzení):" #: gui/get_password_dialog.ui:97 gui/new_ca_window.ui:592 #: gui/new_cert_window.ui:676 gui/new_req_window.ui:564 #: gui/preferences_dialog.ui:51 msgid "_OK" msgstr "" #: gui/get_pkey_dialog.ui:9 msgid "Choose private key file. gnoMint" msgstr "" #: gui/get_pkey_dialog.ui:22 msgid "" "Choose private key file\n" "\n" "For doing the selected operation, you must provide the\n" "file where resides the private key corresponding to the\n" "certificate:" msgstr "" #: gui/get_pkey_dialog.ui:37 #, fuzzy msgid "Certificate DN" msgstr "CSR subjekt" #: gui/get_pkey_dialog.ui:43 msgid "Please, choose the file:" msgstr "" #: gui/get_pkey_dialog.ui:62 msgid "_Save filename in the database for automatic loading" msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:7 gui/main_window.ui:62 msgid "gnoMint" msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:8 msgid "X.509 Certification Authority management tool" msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:11 msgid "" "gnoMint is a tool for easily creating and managing certification authorities " "(CAs). It provides fancy visualization of all your certificates, and their " "properties, as well as an easy management of the CA activities." msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:16 msgid "With gnoMint you can:" msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:20 msgid "Create and manage your own Certification Authority (CA)" msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:21 msgid "Create and sign certificates for servers and users" msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:22 msgid "Create and manage Certificate Signing Requests (CSRs)" msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:23 msgid "" "Export certificates and private keys in several formats (PEM, DER, PKCS#12)" msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:24 msgid "Revoke certificates and generate Certificate Revocation Lists (CRLs)" msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:25 msgid "Import existing certificates and CAs" msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:27 msgid "" "gnoMint provides a simple and intuitive graphical interface based on GTK for " "all these operations, making certificate management accessible even for " "users without deep knowledge of X.509 standards and cryptography." msgstr "" #: gui/org.gnome.gnomint.appdata.xml.in:38 msgid "Main window showing certificate list" msgstr "" #: gui/org.gnome.gnomint.desktop.in:2 gui/org.gnome.gnomint.desktop.in:3 msgid "gnoMint X.509 CA Manager" msgstr "" #: gui/org.gnome.gnomint.desktop.in:4 msgid "Manage X.509 certificates and CAs, easily and graphically" msgstr "" #: gui/org.gnome.gnomint.desktop.in:5 msgid "certificate;x.509;encryption;" msgstr "" #: gui/import_file_or_directory_dialog.ui:9 msgid "Import selection - gnoMint" msgstr "" #: gui/import_file_or_directory_dialog.ui:24 msgid "" "Please, choose the more suitable option for\n" "what you want to import:" msgstr "" #: gui/import_file_or_directory_dialog.ui:36 msgid "Import a single file." msgstr "" #: gui/import_file_or_directory_dialog.ui:48 msgid "" "Import a single file, encoded in DER or PEM format, containing\n" "certificates, private keys (encrypted or plain), signing\n" "requests (CSRs), revocation lists (CRLs) or PKCS#12\n" "packages." msgstr "" #: gui/import_file_or_directory_dialog.ui:60 msgid "Import a whole directory." msgstr "" #: gui/import_file_or_directory_dialog.ui:72 msgid "" "Import a directory containing the structure of\n" "a whole CA made with OpenSSL ." msgstr "" #: gui/import_file_or_directory_dialog.ui:100 #, fuzzy msgid "Import" msgstr "E_xportovat" #: gui/import_password_dialog.ui:20 msgid "" "The whole selected file, or some of its elements, seems to\n" "be cyphered using a password or passphrase.\n" "\n" "For importing the file into gnoMint database, you must\n" "provide an appropiate password." msgstr "" #: gui/import_password_dialog.ui:37 msgid "" "The part that is being imported has the description:" msgstr "" #: gui/import_password_dialog.ui:48 msgid "#Description#" msgstr "#Popis#" #: gui/main_window.ui:6 #, fuzzy msgid "_Certificates" msgstr "CSR subjekt" #: gui/main_window.ui:8 #, fuzzy msgid "_New certificate database" msgstr "Společné jméno (CN)" #: gui/main_window.ui:9 msgid "_Open certificate database" msgstr "" #: gui/main_window.ui:10 msgid "Open _recents" msgstr "" #: gui/main_window.ui:11 msgid "_Save certificate database as..." msgstr "" #: gui/main_window.ui:15 #, fuzzy msgid "Add" msgstr "Přidat CSR" #: gui/main_window.ui:17 msgid "_Add self-signed CA" msgstr "" #: gui/main_window.ui:18 #, fuzzy msgid "Add _Certificate Request" msgstr "CSR subjekt" #: gui/main_window.ui:29 msgid "Generate _CRL" msgstr "" #: gui/main_window.ui:30 msgid "Generate D_H parameters..." msgstr "" #: gui/main_window.ui:31 msgid "Change database pass_word" msgstr "" #: gui/main_window.ui:33 #, fuzzy msgid "_Import" msgstr "E_xportovat" #: gui/main_window.ui:38 msgid "Revoke _all selected..." msgstr "" #: gui/main_window.ui:39 msgid "Delete all selected _CSRs..." msgstr "" #: gui/main_window.ui:41 msgid "_Quit" msgstr "" #: gui/main_window.ui:44 gui/san_manager_widget.ui:34 msgid "_Edit" msgstr "" #: gui/main_window.ui:46 msgid "Preferences" msgstr "" #: gui/main_window.ui:49 msgid "_View" msgstr "" #: gui/main_window.ui:51 msgid "Certificate _Signing Requests" msgstr "" #: gui/main_window.ui:52 msgid "_Revoked Certificates" msgstr "" #: gui/main_window.ui:53 msgid "E_xpired Certificates" msgstr "" #: gui/main_window.ui:57 gui/new_ca_window.ui:249 gui/new_ca_window.ui:456 #: gui/new_ca_window.ui:568 gui/new_cert_window.ui:249 #: gui/new_cert_window.ui:331 gui/new_cert_window.ui:653 #: gui/new_req_window.ui:99 gui/new_req_window.ui:349 gui/new_req_window.ui:540 msgid "_Help" msgstr "" #: gui/main_window.ui:58 msgid "About" msgstr "" #: gui/main_window.ui:80 msgid "Create a new database" msgstr "" #: gui/main_window.ui:87 msgid "Open an existing database" msgstr "" #: gui/main_window.ui:99 msgid "Add an autosigned CA" msgstr "" #: gui/main_window.ui:100 msgid "Add autosigned CA certificate" msgstr "" #: gui/main_window.ui:111 msgid "Add a new Certificate Signing Request" msgstr "" #: gui/main_window.ui:112 msgid "Add CSR" msgstr "Přidat CSR" #: gui/main_window.ui:129 msgid "Extract the private key of the selected item into a external file" msgstr "" #: gui/main_window.ui:130 msgid "Extract Private Key" msgstr "" #: gui/main_window.ui:142 msgid "Revoke the selected certificate" msgstr "" #: gui/main_window.ui:143 msgid "Revoke" msgstr "" #: gui/main_window.ui:151 msgid "Sign the selected Certificate Signing Request" msgstr "" #: gui/main_window.ui:152 msgid "Sign" msgstr "" #: gui/main_window.ui:164 msgid "Delete the selected Certificate Signing Request" msgstr "" #: gui/main_window.ui:176 msgid "Quick certificate generation for web server" msgstr "" #: gui/main_window.ui:177 msgid "Web Server Wizard" msgstr "" #: gui/main_window.ui:188 msgid "Quick certificate generation for email server" msgstr "" #: gui/main_window.ui:189 msgid "Email Server Wizard" msgstr "" #: gui/main_window.ui:225 msgid "_Show them" msgstr "" #: gui/main_window.ui:243 msgid "Filter certificates by subject or serial..." msgstr "" #: gui/new_ca_window.ui:20 msgid "New CA - gnoMint" msgstr "" #: gui/new_ca_window.ui:46 #, fuzzy msgid "CA Subject Properties\n" msgstr "Ochrana heslem\n" #: gui/new_ca_window.ui:72 gui/new_cert_window.ui:130 gui/new_req_window.ui:303 msgid "Organization:" msgstr "Organizace:" #: gui/new_ca_window.ui:83 gui/new_cert_window.ui:141 gui/new_req_window.ui:292 #, fuzzy msgid "Organization Unit:" msgstr "Organizační jednotka" #: gui/new_ca_window.ui:94 gui/new_cert_window.ui:152 gui/new_req_window.ui:281 msgid "Country:" msgstr "Země:" #: gui/new_ca_window.ui:106 gui/new_cert_window.ui:163 #: gui/new_req_window.ui:270 msgid "State or Province name: " msgstr "" #: gui/new_ca_window.ui:117 gui/new_cert_window.ui:174 #: gui/new_req_window.ui:259 #, fuzzy msgid "City: " msgstr "Město: " #: gui/new_ca_window.ui:164 #, fuzzy msgid "" "CA Root Certificate \n" "Common Name (CN):" msgstr "Společné jméno (CN)" #: gui/new_ca_window.ui:185 gui/new_cert_window.ui:219 #: gui/new_req_window.ui:203 msgid "Email address:" msgstr "" #: gui/new_ca_window.ui:227 gui/new_req_window.ui:326 msgid "Subject Alternative Names (SAN)" msgstr "" #: gui/new_ca_window.ui:265 gui/new_ca_window.ui:480 gui/new_req_window.ui:115 #: gui/new_req_window.ui:373 msgid "_Next" msgstr "" #: gui/new_ca_window.ui:277 gui/new_cert_window.ui:276 #: gui/new_req_window.ui:127 #, fuzzy msgid "CA properties" msgstr "Ochrana heslem\n" #: gui/new_ca_window.ui:296 #, fuzzy msgid "CA Root certificate properties\n" msgstr "Ochrana heslem\n" #: gui/new_ca_window.ui:337 msgid "Months before root certificate expiration:" msgstr "" #: gui/new_ca_window.ui:370 gui/new_req_window.ui:453 msgid "P-256 (256 bits)" msgstr "" #: gui/new_ca_window.ui:371 gui/new_req_window.ui:454 msgid "P-384 (384 bits)" msgstr "" #: gui/new_ca_window.ui:372 gui/new_req_window.ui:455 msgid "P-521 (521 bits)" msgstr "" #: gui/new_ca_window.ui:391 gui/new_req_window.ui:474 #, fuzzy msgid "RSA" msgstr "RSA" #: gui/new_ca_window.ui:400 gui/new_req_window.ui:484 msgid "DSA" msgstr "DSA" #: gui/new_ca_window.ui:409 gui/new_req_window.ui:493 msgid "ECDSA" msgstr "" #: gui/new_ca_window.ui:418 gui/new_req_window.ui:502 msgid "Ed25519" msgstr "" #: gui/new_ca_window.ui:428 gui/new_req_window.ui:512 src/new_ca_window.c:170 #: src/new_ca_window.c:180 src/new_req_window.c:201 src/new_req_window.c:211 msgid "Private key bit length:" msgstr "" #: gui/new_ca_window.ui:439 gui/new_req_window.ui:523 msgid "Private key type:" msgstr "" #: gui/new_ca_window.ui:472 gui/new_ca_window.ui:584 gui/new_req_window.ui:365 #: gui/new_req_window.ui:556 msgid "_Previous" msgstr "" #: gui/new_ca_window.ui:492 gui/new_req_window.ui:385 msgid "Root certificate prop" msgstr "" #: gui/new_ca_window.ui:511 #, fuzzy msgid "CA properties\n" msgstr "Ochrana heslem\n" #: gui/new_ca_window.ui:535 msgid "CRL Distribution Point:" msgstr "" #: gui/new_ca_window.ui:542 msgid "" "Please, in this field enter an URL where the CRL for this CA will be " "available. \n" "You can leave it blank. In this case, no CRL Distribution Point will be set " "in the CA \n" "Certificate, and you will be able to set it as a new CA property. \n" "This value will be copied into the certificates generated by this CA.\n" "" msgstr "" #: gui/new_ca_window.ui:604 #, fuzzy msgid "Password protect" msgstr "Ochrana heslem\n" #: gui/new_cert_window.ui:13 msgid "New Certificate - gnoMint" msgstr "" #: gui/new_cert_window.ui:36 gui/new_cert_window.ui:293 #: gui/new_cert_window.ui:382 #, fuzzy msgid "New Certificate Properties\n" msgstr "Ochrana heslem\n" #: gui/new_cert_window.ui:45 msgid "" "You are about to sign a Certificate Signing Request,\n" "and this way, creating a new certificate. Please\n" "check the certificate properties." msgstr "" #: gui/new_cert_window.ui:64 gui/new_cert_window.ui:75 #: gui/new_cert_window.ui:86 gui/new_cert_window.ui:97 #: gui/new_cert_window.ui:108 gui/new_cert_window.ui:119 msgid "label" msgstr "" #: gui/new_cert_window.ui:185 #, fuzzy msgid "" "New certificate \n" "Common Name (CN):" msgstr "Společné jméno (CN)" #: gui/new_cert_window.ui:197 msgid "Subject Alternative Names:" msgstr "" #: gui/new_cert_window.ui:302 msgid "" "You are about to sign a Certificate Signing Request.\n" "Please, choose the Certification Authority you are\n" "going to use for signing it." msgstr "" #: gui/new_cert_window.ui:366 msgid "Choose CA for signing the CSR" msgstr "" #: gui/new_cert_window.ui:397 msgid "Months before certificate expiration:" msgstr "" #: gui/new_cert_window.ui:519 #, fuzzy msgid "Certificate uses" msgstr "CSR subjekt" #: gui/new_cert_window.ui:635 #, fuzzy msgid "Certificate purposes" msgstr "CSR subjekt" #: gui/new_cert_window.ui:688 msgid "Certificate properties" msgstr "" #: gui/new_crl_dialog.ui:5 msgid "New CRL - gnoMint" msgstr "" #: gui/new_crl_dialog.ui:17 msgid "New Certificate Revocation List" msgstr "" #: gui/new_crl_dialog.ui:26 msgid "" "Please, select the CA for which a Certificate \n" "Revocation List is going to be created:" msgstr "" #: gui/new_req_window.ui:12 msgid "New certificate request - gnoMint" msgstr "" #: gui/new_req_window.ui:36 gui/new_req_window.ui:147 gui/new_req_window.ui:403 #, fuzzy msgid "Certificate Request Properties\n" msgstr "Ochrana heslem\n" #: gui/new_req_window.ui:55 msgid "" "The subject of the new certificate request can inherit information\n" "from one of the existing Certification Authorities. This is a must if the\n" "policy of the CA you are going to use is defined to force some fields\n" "of a certificate subject to be the same as the ones in the CA cert\n" "subject." msgstr "" #: gui/new_req_window.ui:67 msgid "Don't inherit any fields from existing Certification Authorities" msgstr "" #: gui/new_req_window.ui:74 msgid "" "Inherit fields according to selected Certification Authority and its policy." msgstr "" #: gui/new_req_window.ui:191 #, fuzzy msgid "" "Certificate\n" " Common Name (CN):" msgstr "Společné jméno (CN)" #: gui/new_req_window.ui:576 msgid "page 3" msgstr "" #: gui/preferences_dialog.ui:9 msgid "General Preferences - gnoMint" msgstr "" #: gui/preferences_dialog.ui:26 msgid "" "Automatically export created certificates to\n" "Gnome-keyring certificate store" msgstr "" #: gui/preferences_dialog.ui:36 msgid "Export options" msgstr "" #: gui/san_editor_dialog.ui:5 src/certificate_properties.c:1488 msgid "Subject Alternative Name" msgstr "" #: gui/san_editor_dialog.ui:23 msgid "Type:" msgstr "" #: gui/san_editor_dialog.ui:35 #, fuzzy msgid "DNS" msgstr "DSA" #: gui/san_editor_dialog.ui:36 src/certificate_properties.c:900 #: src/certificate_properties.c:914 src/certificate_properties.c:1040 msgid "IP Address" msgstr "" #: gui/san_editor_dialog.ui:37 msgid "Email" msgstr "" #: gui/san_editor_dialog.ui:38 src/certificate_properties.c:889 #: src/certificate_properties.c:1032 msgid "URI" msgstr "" #: gui/san_editor_dialog.ui:51 msgid "Value:" msgstr "" #: gui/san_editor_dialog.ui:74 msgid "" "Examples:\n" "DNS: example.com, *.example.com\n" "IP: 192.168.1.1, 2001:db8::1\n" "EMAIL: admin@example.com\n" "URI: https://example.com" msgstr "" #: gui/san_manager_widget.ui:26 msgid "_Add" msgstr "" #: gui/san_manager_widget.ui:43 msgid "_Remove" msgstr "" #: gui/wizard_window.ui:9 msgid "Certificate Wizard" msgstr "" #: gui/wizard_window.ui:28 #, fuzzy msgid "Quick Certificate Generation" msgstr "CSR subjekt" #: gui/wizard_window.ui:35 msgid "" "This wizard will create a certificate for your server with default " "settings.\n" "Enter the server name (e.g., my.server.dns.name) and select the CA to sign " "it." msgstr "" #: gui/wizard_window.ui:48 msgid "Server Name:" msgstr "" #: gui/wizard_window.ui:59 msgid "Enter the server DNS name (e.g., my.server.dns.name)" msgstr "" #: gui/wizard_window.ui:69 msgid "Signing CA:" msgstr "" #: gui/wizard_window.ui:88 #, fuzzy msgid "Certificate Type:" msgstr "CSR subjekt" #: gui/wizard_window.ui:124 msgid "_Generate Certificate" msgstr "" #: gui/wizard_window.ui:140 msgid "Web Server (TLS)" msgstr "" #: gui/wizard_window.ui:141 msgid "Email Server (TLS)" msgstr "" #: src/ca.c:192 #, c-format msgid "Bulk revoke completed with errors. First error: %s" msgstr "" #: src/ca.c:199 #, c-format msgid "%d certificate revoked." msgid_plural "%d certificates revoked." msgstr[0] "" msgstr[1] "" #: src/ca.c:225 #, c-format msgid "Bulk delete completed with errors. First error: %s" msgstr "" #: src/ca.c:240 msgid "" "Certificate renewed. A new certificate with a fresh keypair has been added " "to the database alongside the original." msgstr "" #: src/ca.c:606 src/ca-cli-callbacks.c:167 src/ca-cli-callbacks.c:221 #: src/ca-cli-callbacks.c:733 src/ca-cli-callbacks.c:737 #: src/ca-cli-callbacks.c:1362 src/ca-cli-callbacks.c:1369 #: src/certificate_properties.c:246 src/certificate_properties.c:252 msgid "%m/%d/%Y %H:%M GMT" msgstr "" #: src/ca.c:806 src/ca.c:1927 src/ca.c:1958 src/ca.c:2093 src/ca.c:2322 #: src/ca.c:2350 msgid "Yes" msgstr "" #: src/ca.c:930 src/certificate_properties.c:653 msgid "Subject" msgstr "" #: src/ca.c:965 src/cert_diff.c:122 msgid "Serial" msgstr "" #: src/ca.c:978 src/cert_diff.c:123 msgid "Activation" msgstr "" #: src/ca.c:991 src/cert_diff.c:124 msgid "Expiration" msgstr "" #: src/ca.c:1004 msgid "Revocation" msgstr "" #: src/ca.c:1047 #, c-format msgid "" "Showing only the %d certificate expiring in the next %d days. Close " "this banner to show everything again." msgid_plural "" "Showing only the %d certificates expiring in the next %d days. Close " "this banner to show everything again." msgstr[0] "" msgstr[1] "" #: src/ca.c:1058 #, c-format msgid "" "%d certificate expires in the next %d days. Right-click it to renew " "with a fresh key." msgid_plural "" "%d certificates expire in the next %d days. Right-click each one to " "renew with a fresh key." msgstr[0] "" msgstr[1] "" #: src/ca.c:1369 src/ca.c:1404 src/ca.c:1416 src/export.c:560 src/export.c:639 msgid "There was an error while exporting certificate." msgstr "" #: src/ca.c:1371 src/ca.c:1406 src/ca.c:1418 msgid "There was an error while exporting CSR." msgstr "" #: src/ca.c:1426 src/ca.c:1590 msgid "Certificate exported successfully" msgstr "" #: src/ca.c:1427 msgid "Certificate signing request exported successfully" msgstr "" #: src/ca.c:1445 msgid "Export certificate" msgstr "" #: src/ca.c:1447 msgid "Export certificate signing request" msgstr "" #: src/ca.c:1461 src/ca.c:1523 src/ca.c:1981 msgid "Private key exported successfully" msgstr "" #: src/ca.c:1509 src/ca.c:2057 msgid "Export crypted private key" msgstr "" #: src/ca.c:1568 msgid "Export unencrypted private key" msgstr "" #: src/ca.c:1633 msgid "Export whole certificate in PKCS#12 package" msgstr "" #: src/ca.c:1676 msgid "Unexpected error" msgstr "" #: src/ca.c:1712 msgid "Export CSR - gnoMint" msgstr "" #: src/ca.c:1717 msgid "" "Please, choose which part of the saved Certificate Signing Request you want " "to export:" msgstr "" #: src/ca.c:1722 msgid "" "Export the Certificate Signing Request to a public file, in PEM format." msgstr "" #: src/ca.c:1727 msgid "" "Export the saved private key to a PKCS#8 password-protected file. This " "file should only be accessed by the subject of the Certificate Signing " "Request." msgstr "" #: src/ca.c:1774 msgid "Could not build certificate chain." msgstr "" #: src/ca.c:1781 #, c-format msgid "Failed to write chain: %s" msgstr "" #: src/ca.c:1786 msgid "Certificate chain exported successfully." msgstr "" #: src/ca.c:1807 msgid "Please select a certificate to export its chain." msgstr "" #: src/ca.c:1831 msgid "Export certificate chain" msgstr "" #: src/ca.c:1911 msgid "Please select one or more certificates to revoke." msgstr "" #: src/ca.c:1916 #, c-format msgid "Are you sure you want to revoke %d certificate?" msgid_plural "Are you sure you want to revoke %d certificates?" msgstr[0] "" msgstr[1] "" #: src/ca.c:1920 msgid "" "Revoking a certificate will include it in the next CRL, marking it as " "invalid. CSRs in the selection (if any) are not affected; use \"Delete " "selected CSRs\" for those." msgstr "" #: src/ca.c:1927 src/ca.c:1958 src/ca.c:2093 src/ca.c:2322 src/ca.c:2350 msgid "No" msgstr "" #: src/ca.c:1948 msgid "Please select one or more CSRs to delete." msgstr "" #: src/ca.c:1953 #, c-format msgid "Are you sure you want to delete %d Certificate Signing Request?" msgid_plural "Are you sure you want to delete %d Certificate Signing Requests?" msgstr[0] "" msgstr[1] "" #: src/ca.c:2076 src/ca-cli-callbacks.c:1934 msgid "" "CA certificates cannot be renewed. A renewed CA would have a different key, " "so certificates previously signed by the old CA would no longer chain to it." msgstr "" #: src/ca.c:2087 msgid "" "Renew this certificate?\n" "\n" "gnoMint will issue a new certificate with the same subject and SAN as the " "selected one, signed by the same CA, with a freshly-generated keypair. The " "old certificate will remain in the database — revoke it manually after you " "have deployed the new one." msgstr "" #: src/ca.c:2118 #, c-format msgid "Certificate diff — %d difference" msgid_plural "Certificate diff — %d differences" msgstr[0] "" msgstr[1] "" #: src/ca.c:2147 msgid "Left" msgstr "" #: src/ca.c:2151 msgid "Right" msgstr "" #: src/ca.c:2241 src/ca-cli-callbacks.c:2141 msgid "Cannot read file." msgstr "" #: src/ca.c:2252 msgid "Selected" msgstr "" #: src/ca.c:2278 msgid "Cannot read PEM of the selected certificate." msgstr "" #: src/ca.c:2290 msgid "Compare with PEM file…" msgstr "" #: src/ca.c:2312 msgid "Are you sure you want to revoke this certificate?" msgstr "" #: src/ca.c:2313 msgid "" "Revoking a certificate will include it in the next CRL, marking it as " "invalid. This way, any future use of the certificate will be denied (as long " "as the CRL is checked)." msgstr "" #: src/ca.c:2316 msgid "Are you sure you want to revoke this CA certificate?" msgstr "" #: src/ca.c:2317 msgid "" "Revoking a certificate will include it in the next CRL, marking it as " "invalid. This way, any future use of the certificate will be denied (as long " "as the CRL is checked). \n" "\n" "Moreover, revoking a CA certificate can invalidate all the certificates " "generated with it, so all them should be regenerated with a new CA " "certificate." msgstr "" #: src/ca.c:2349 msgid "Are you sure you want to delete this Certificate Signing Request?" msgstr "" #: src/ca.c:2572 msgid "" "The current password you have entered doesn't match with the actual current " "database password." msgstr "" #: src/ca.c:2588 msgid "Error while changing database password. The operation was cancelled." msgstr "" #: src/ca.c:2593 msgid "Password changed successfully" msgstr "" #: src/ca.c:2601 src/ca-cli-callbacks.c:1186 msgid "" "Error while establishing database password. The operation was cancelled." msgstr "" #: src/ca.c:2606 msgid "Password established successfully" msgstr "" #: src/ca.c:2616 msgid "Error while removing database password. The operation was cancelled." msgstr "" #: src/ca.c:2621 msgid "Password removed successfully" msgstr "" #: src/ca.c:2708 msgid "Change CA password - gnoMint" msgstr "" #: src/ca.c:2840 msgid "Diffie-Hellman parameters saved successfully" msgstr "" #: src/ca.c:2872 msgid "Save Diffie-Hellman parameters" msgstr "" #: src/ca.c:2951 #, c-format msgid "Problem when importing '%s' file" msgstr "" #: src/ca.c:3012 msgid "Select PEM file to import" msgstr "" #: src/ca.c:3018 msgid "Select directory to import" msgstr "" #: src/cert_diff.c:70 msgid "Cannot parse left certificate" msgstr "" #: src/cert_diff.c:72 msgid "Cannot parse right certificate" msgstr "" #: src/cert_diff.c:113 msgid "Subject CN" msgstr "" #: src/cert_diff.c:114 msgid "Subject O" msgstr "" #: src/cert_diff.c:115 msgid "Subject OU" msgstr "" #: src/cert_diff.c:116 #, fuzzy msgid "Subject Country" msgstr "Země" #: src/cert_diff.c:117 msgid "Subject State" msgstr "" #: src/cert_diff.c:118 msgid "Subject Locality" msgstr "" #: src/cert_diff.c:119 msgid "Subject email" msgstr "" #: src/cert_diff.c:120 msgid "Subject DN" msgstr "" #: src/cert_diff.c:121 msgid "Issuer DN" msgstr "" #: src/cert_diff.c:125 #, fuzzy msgid "SAN" msgstr "RSA" #: src/cert_diff.c:126 msgid "Key usage / EKU" msgstr "" #: src/cert_diff.c:127 msgid "Subject Key ID" msgstr "" #: src/cert_diff.c:128 msgid "Authority Key ID" msgstr "" #: src/cert_diff.c:129 msgid "CRL distribution" msgstr "" #: src/cert_diff.c:130 msgid "SHA-1 fingerprint" msgstr "" #: src/cert_diff.c:131 msgid "SHA-256 fingerprint" msgstr "" #: src/cert_renewal.c:111 msgid "Cannot parse generated CSR." msgstr "" #: src/cert_renewal.c:125 msgid "Cannot encrypt new private key." msgstr "" #: src/cert_renewal.c:181 src/cert_renewal.c:341 msgid "Cannot read certificate PEM from database." msgstr "" #: src/cert_renewal.c:186 src/cert_renewal.c:347 msgid "Cannot parse certificate." msgstr "" #: src/cert_renewal.c:193 src/cert_renewal.c:354 #, c-format msgid "Cannot find issuer CA in this database (issuer DN: %s)." msgstr "" #: src/cert_renewal.c:204 src/cert_renewal.c:315 msgid "Cannot load parent CA material from database." msgstr "" #: src/cert_renewal.c:212 src/cert_renewal.c:221 src/cert_renewal.c:265 #: src/cert_renewal.c:280 msgid "Cannot decrypt parent CA's private key." msgstr "" #: src/ca-cli.c:42 msgid "newdb " msgstr "" #: src/ca-cli.c:42 msgid "Close current file and create a new database with given filename" msgstr "" #: src/ca-cli.c:43 msgid "opendb " msgstr "" #: src/ca-cli.c:43 msgid "Close current file and open the file with given filename" msgstr "" #: src/ca-cli.c:44 msgid "savedbas " msgstr "" #: src/ca-cli.c:44 msgid "Save the current file with a different filename" msgstr "" #: src/ca-cli.c:45 msgid "Get current status (opened file, no. of certificates, etc...)" msgstr "" #: src/ca-cli.c:46 msgid "" "List the certificates in database. With option --see-revoked, lists also the " "revoked ones" msgstr "" #: src/ca-cli.c:48 msgid "List the CSRs in database" msgstr "" #: src/ca-cli.c:49 msgid "addcsr [ca-id-for-inherit-fields]" msgstr "" #: src/ca-cli.c:49 msgid "Start a new CSR creation process" msgstr "" #: src/ca-cli.c:50 msgid "Start a new self-signed CA creation process" msgstr "" #: src/ca-cli.c:51 msgid "extractcertpkey " msgstr "" #: src/ca-cli.c:51 msgid "" "Extract the private key of the certificate with the given internal id and " "saves it into the given file" msgstr "" #: src/ca-cli.c:54 msgid "extractcsrpkey " msgstr "" #: src/ca-cli.c:54 msgid "" "Extract the private key of the CSR with the given internal id and saves it " "into the given file" msgstr "" #: src/ca-cli.c:57 msgid "revoke " msgstr "" #: src/ca-cli.c:57 msgid "Revoke the certificate with the given internal ID" msgstr "" #: src/ca-cli.c:58 msgid "sign " msgstr "" #: src/ca-cli.c:58 msgid "Generate a certificate signing the given CSR with the given CA" msgstr "" #: src/ca-cli.c:59 msgid "delete " msgstr "" #: src/ca-cli.c:59 msgid "Delete the given CSR from the database" msgstr "" #: src/ca-cli.c:60 msgid "crlgen " msgstr "" #: src/ca-cli.c:60 msgid "Generate a new CRL for the given CA, saving it into the file " msgstr "" #: src/ca-cli.c:61 msgid "dhgen " msgstr "" #: src/ca-cli.c:61 msgid "Generate a new DH-parameter set, saving it into the file " msgstr "" #: src/ca-cli.c:62 msgid "Change password for the current database" msgstr "" #: src/ca-cli.c:63 msgid "importfile " msgstr "" #: src/ca-cli.c:63 msgid "Import the file with the given name " msgstr "" #: src/ca-cli.c:64 msgid "importdir " msgstr "" #: src/ca-cli.c:64 msgid "Import the given directory, as a OpenSSL-CA directory" msgstr "" #: src/ca-cli.c:65 msgid "showcert " msgstr "" #: src/ca-cli.c:65 msgid "Show properties of the given certificate" msgstr "" #: src/ca-cli.c:66 msgid "showcsr " msgstr "" #: src/ca-cli.c:66 msgid "Show properties of the given CSR" msgstr "" #: src/ca-cli.c:67 msgid "showpolicy " msgstr "" #: src/ca-cli.c:67 msgid "Show CA policy" msgstr "" #: src/ca-cli.c:68 msgid "setpolicy " msgstr "" #: src/ca-cli.c:68 msgid "Change the given CA policy" msgstr "" #: src/ca-cli.c:69 msgid "Show program preferences" msgstr "" #: src/ca-cli.c:70 msgid "setpreference " msgstr "" #: src/ca-cli.c:70 msgid "Set the given program preference" msgstr "" #: src/ca-cli.c:71 msgid "addservercert " msgstr "" #: src/ca-cli.c:71 msgid "Quick server certificate generation (cert-type: 'web' or 'email')" msgstr "" #: src/ca-cli.c:72 msgid "renewcert " msgstr "" #: src/ca-cli.c:72 msgid "" "Reissue a non-CA certificate with the same subject + SAN and a fresh " "keypair. The old certificate remains in the database. CA certificates cannot " "be renewed." msgstr "" #: src/ca-cli.c:73 msgid "exportchain " msgstr "" #: src/ca-cli.c:73 msgid "" "Export the full certificate chain (leaf → root) for the given certificate as " "a PEM bundle." msgstr "" #: src/ca-cli.c:74 msgid "revokemany [cert-id ...]" msgstr "" #: src/ca-cli.c:74 msgid "Revoke many certificates at once. Non-cert ids are silently skipped." msgstr "" #: src/ca-cli.c:75 msgid "deletemany [csr-id ...]" msgstr "" #: src/ca-cli.c:75 msgid "Delete many CSRs at once. Non-CSR ids are silently skipped." msgstr "" #: src/ca-cli.c:76 msgid "search " msgstr "" #: src/ca-cli.c:76 msgid "" "List certificates and CSRs whose subject or serial contains (case-" "insensitive)." msgstr "" #: src/ca-cli.c:77 msgid "diff " msgstr "" #: src/ca-cli.c:77 msgid "" "Side-by-side diff of two certificates. Each argument is either a numeric DB " "id or a path to a PEM file." msgstr "" #: src/ca-cli.c:78 msgid "Show about message" msgstr "" #: src/ca-cli.c:79 msgid "Show warranty information" msgstr "" #: src/ca-cli.c:80 msgid "Show distribution information" msgstr "" #: src/ca-cli.c:81 msgid "Show version information" msgstr "" #: src/ca-cli.c:82 msgid "Show (this) help message" msgstr "" #: src/ca-cli.c:83 src/ca-cli.c:84 src/ca-cli.c:85 msgid "Close database and exit program" msgstr "" #: src/ca-cli.c:132 #, c-format msgid "Opening database %s..." msgstr "" #: src/ca-cli.c:136 #, c-format msgid " OK.\n" msgstr "" #: src/ca-cli.c:138 #, c-format msgid " Error.\n" msgstr "" #: src/ca-cli.c:153 #, c-format msgid "" "Notice: %d certificate expires within the next %d days. Use `renewcert ` " "to reissue.\n" msgid_plural "" "Notice: %d certificates expire within the next %d days. Use `renewcert ` " "to reissue.\n" msgstr[0] "" msgstr[1] "" #: src/ca-cli.c:187 #, c-format msgid "" "\n" "\n" "%s version %s \"%s\"\n" "%s\n" "\n" msgstr "" #: src/ca-cli.c:188 #, c-format msgid "" "This program comes with ABSOLUTELY NO WARRANTY;\n" "for details type 'warranty'.\n" msgstr "" #: src/ca-cli.c:189 #, c-format msgid "" "This is free software, and you are welcome to redistribute it\n" "under certain conditions; type 'distribution' for details.\n" "\n" msgstr "" #: src/ca-cli.c:231 #, c-format msgid "Unpaired quotes\n" msgstr "" #: src/ca-cli.c:309 #, c-format msgid "" "Invalid command. Try 'help' for getting a list of recognized commands.\n" msgstr "" #: src/ca-cli.c:313 #, c-format msgid "Incorrect number of parameters.\n" msgstr "" #: src/ca-cli.c:314 #, c-format msgid "Syntax: %s\n" msgstr "" #: src/ca-cli-callbacks.c:62 src/ca-cli-callbacks.c:111 msgid "The file already exists, so it will be overwritten." msgstr "" #: src/ca-cli-callbacks.c:62 src/ca-cli-callbacks.c:111 #: src/ca-cli-callbacks.c:824 msgid "Are you sure? Yes/[No] " msgstr "" #: src/ca-cli-callbacks.c:84 #, c-format msgid "Problem when opening new '%s' CA database\n" msgstr "" #: src/ca-cli-callbacks.c:88 #, c-format msgid "File '%s' opened\n" msgstr "" #: src/ca-cli-callbacks.c:98 #, c-format msgid "Problem when opening '%s' CA database\n" msgstr "" #: src/ca-cli-callbacks.c:132 #, c-format msgid "Current opened file: %s\n" msgstr "" #: src/ca-cli-callbacks.c:133 #, c-format msgid "Number of certificates in file: %d\n" msgstr "" #: src/ca-cli-callbacks.c:134 #, c-format msgid "Number of CSRs in file: %d\n" msgstr "" #: src/ca-cli-callbacks.c:169 msgid " (after 2038?)" msgstr "" #: src/ca-cli-callbacks.c:239 #, c-format msgid "Certificates in Database:\n" msgstr "" #: src/ca-cli-callbacks.c:240 #, c-format msgid "Id.\tIs CA?\tCertificate Subject\tKey in DB?\tActivation\t\tExpiration" msgstr "" #: src/ca-cli-callbacks.c:243 #, c-format msgid "\t\tRevocation\n" msgstr "" #: src/ca-cli-callbacks.c:278 #, c-format msgid "Certificate Requests in Database:\n" msgstr "" #: src/ca-cli-callbacks.c:279 #, c-format msgid "Id.\tParent Id.\tCSR Subject\t\tKey in DB?\n" msgstr "" #: src/ca-cli-callbacks.c:309 src/ca-cli-callbacks.c:1129 #: src/ca-cli-callbacks.c:1522 src/ca-cli-callbacks.c:1551 msgid "The given CA id. is not valid" msgstr "" #: src/ca-cli-callbacks.c:362 #, c-format msgid "" "Please enter data corresponding to subject of the Certificate Signing " "Request:\n" msgstr "" #: src/ca-cli-callbacks.c:365 src/ca-cli-callbacks.c:567 msgid "Enter country (C)" msgstr "" #: src/ca-cli-callbacks.c:373 src/ca-cli-callbacks.c:573 msgid "Enter state or province (ST)" msgstr "" #: src/ca-cli-callbacks.c:382 src/ca-cli-callbacks.c:579 msgid "Enter locality or city (L)" msgstr "" #: src/ca-cli-callbacks.c:390 src/ca-cli-callbacks.c:585 msgid "Enter organization (O)" msgstr "" #: src/ca-cli-callbacks.c:398 src/ca-cli-callbacks.c:591 msgid "Enter organizational unit (OU)" msgstr "" #: src/ca-cli-callbacks.c:405 src/ca-cli-callbacks.c:597 msgid "Enter common name (CN)" msgstr "" #: src/ca-cli-callbacks.c:411 src/ca-cli-callbacks.c:603 msgid "Enter email address (leave blank for none)" msgstr "" #: src/ca-cli-callbacks.c:422 src/ca-cli-callbacks.c:614 msgid "" "Enter Subject Alternative Names (SAN) [format: " "DNS:example.com,IP:192.168.1.1]" msgstr "" #: src/ca-cli-callbacks.c:433 src/ca-cli-callbacks.c:625 msgid "Enter type of key you are going to create (RSA/DSA/ECDSA/Ed25519)" msgstr "" #: src/ca-cli-callbacks.c:472 src/ca-cli-callbacks.c:656 msgid "Enter curve size for ECDSA (256, 384, or 521)" msgstr "" #: src/ca-cli-callbacks.c:482 src/ca-cli-callbacks.c:667 msgid "Enter bitlength for the key (it must be a whole multiple of 1024)" msgstr "" #: src/ca-cli-callbacks.c:487 #, c-format msgid "These are the provided CSR properties:\n" msgstr "" #: src/ca-cli-callbacks.c:489 src/ca-cli-callbacks.c:704 #: src/ca-cli-callbacks.c:1350 src/ca-cli-callbacks.c:1411 #, c-format msgid "Subject:\n" msgstr "" #: src/ca-cli-callbacks.c:490 src/ca-cli-callbacks.c:705 #, c-format msgid "\tDistinguished Name: " msgstr "" #: src/ca-cli-callbacks.c:505 src/ca-cli-callbacks.c:720 #: src/ca-cli-callbacks.c:1354 src/ca-cli-callbacks.c:1414 #, c-format msgid "\tSubject Alternative Names: %s\n" msgstr "" #: src/ca-cli-callbacks.c:506 src/ca-cli-callbacks.c:721 #, c-format msgid "Key pair\n" msgstr "" #: src/ca-cli-callbacks.c:512 src/ca-cli-callbacks.c:727 #, c-format msgid "\tType: %s\n" msgstr "" #: src/ca-cli-callbacks.c:514 #, c-format msgid "\tKey size: fixed (Ed25519)\n" msgstr "" #: src/ca-cli-callbacks.c:516 #, c-format msgid "\tCurve: P-%d\n" msgstr "" #: src/ca-cli-callbacks.c:518 src/ca-cli-callbacks.c:729 #, c-format msgid "\tKey bitlength: %d\n" msgstr "" #: src/ca-cli-callbacks.c:521 src/ca-cli-callbacks.c:740 msgid "Do you want to change anything? Yes/[No] " msgstr "" #: src/ca-cli-callbacks.c:525 msgid "" "You are about to create a Certificate Signing Request with these properties." msgstr "" #: src/ca-cli-callbacks.c:526 src/ca-cli-callbacks.c:745 msgid "Are you sure? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:531 src/ca-cli-callbacks.c:750 #: src/ca-cli-callbacks.c:834 src/ca-cli-callbacks.c:965 #: src/ca-cli-callbacks.c:1086 src/ca-cli-callbacks.c:1115 #: src/ca-cli-callbacks.c:1181 src/ca-cli-callbacks.c:1208 #: src/ca-cli-callbacks.c:1236 src/ca-cli-callbacks.c:1251 #: src/ca-cli-callbacks.c:1581 src/ca-cli-callbacks.c:1624 #: src/ca-cli-callbacks.c:1945 #, c-format msgid "Operation cancelled.\n" msgstr "" #: src/ca-cli-callbacks.c:565 #, c-format msgid "" "Please enter data corresponding to subject of the new Certification " "Authority:\n" msgstr "" #: src/ca-cli-callbacks.c:673 msgid "" "Introduce number of months before expiration of the new certification " "authority" msgstr "" #: src/ca-cli-callbacks.c:693 src/new_ca_window.c:457 msgid "" "This system uses a 32-bit time_t and cannot represent dates after " "2038-01-19. The new CA's expiration date has been clamped to that limit. To " "issue longer-lived CAs, run gnoMint on a 64-bit platform." msgstr "" #: src/ca-cli-callbacks.c:702 #, c-format msgid "These are the provided new CA properties:\n" msgstr "" #: src/ca-cli-callbacks.c:730 #, c-format msgid "Validity\n" msgstr "" #: src/ca-cli-callbacks.c:731 src/ca-cli-callbacks.c:1360 #, c-format msgid "Validity:\n" msgstr "" #: src/ca-cli-callbacks.c:734 src/ca-cli-callbacks.c:1363 #, c-format msgid "\tActivated on: %s\n" msgstr "" #: src/ca-cli-callbacks.c:738 src/ca-cli-callbacks.c:1370 #, c-format msgid "\tExpires on: %s\n" msgstr "" #: src/ca-cli-callbacks.c:744 msgid "" "You are about to create a new Certification Authority with these properties." msgstr "" #: src/ca-cli-callbacks.c:770 src/ca-cli-callbacks.c:818 #: src/ca-cli-callbacks.c:1321 msgid "The given certificate id. is not valid" msgstr "" #: src/ca-cli-callbacks.c:777 src/ca-cli-callbacks.c:801 #, c-format msgid "Private key extracted successfully into file '%s'\n" msgstr "" #: src/ca-cli-callbacks.c:794 src/ca-cli-callbacks.c:946 #: src/ca-cli-callbacks.c:1099 src/ca-cli-callbacks.c:1400 msgid "The given CSR id. is not valid" msgstr "" #: src/ca-cli-callbacks.c:824 msgid "This certificate will be revoked." msgstr "" #: src/ca-cli-callbacks.c:830 #, c-format msgid "Certificate revoked.\n" msgstr "" #: src/ca-cli-callbacks.c:844 src/ca-cli-callbacks.c:1381 #, c-format msgid "Certificate uses:\n" msgstr "" #: src/ca-cli-callbacks.c:847 #, c-format msgid "* Certification Authority use enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:849 #, c-format msgid "* Certification Authority use disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:853 #, c-format msgid "* CRL signing use enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:855 #, c-format msgid "* CRL signing use disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:859 #, c-format msgid "* Digital Signature use enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:861 #, c-format msgid "* Digital Signature use disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:865 src/ca-cli-callbacks.c:867 #, c-format msgid "* Data Encipherment use enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:871 #, c-format msgid "* Key Encipherment use enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:873 #, c-format msgid "* Key Encipherment use disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:877 #, c-format msgid "* Non Repudiation use enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:879 #, c-format msgid "* Non Repudiation use disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:883 #, c-format msgid "* Key Agreement use enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:885 #, c-format msgid "* Key Agreement use disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:888 #, c-format msgid "Certificate purposes:\n" msgstr "" #: src/ca-cli-callbacks.c:891 #, c-format msgid "* Email Protection purpose enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:893 #, c-format msgid "* Email Protection purpose disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:897 #, c-format msgid "* Code Signing purpose enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:899 #, c-format msgid "* Code Signing purpose disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:903 #, c-format msgid "* TLS Web Client purpose enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:905 #, c-format msgid "* TLS Web Client purpose disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:909 #, c-format msgid "* TLS Web Server purpose enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:911 #, c-format msgid "* TLS Web Server purpose disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:915 #, c-format msgid "* Time Stamping purpose enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:917 #, c-format msgid "* Time Stamping purpose disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:921 #, c-format msgid "* OCSP Signing purpose enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:923 #, c-format msgid "* OCSP Signing purpose disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:927 #, c-format msgid "* Any purpose enabled.\n" msgstr "" #: src/ca-cli-callbacks.c:929 #, c-format msgid "* Any purpose disabled.\n" msgstr "" #: src/ca-cli-callbacks.c:953 #, c-format msgid "You are about to sign the following Certificate Signing Request:\n" msgstr "" #: src/ca-cli-callbacks.c:955 #, c-format msgid "with the certificate corresponding to the next CA:\n" msgstr "" #: src/ca-cli-callbacks.c:958 msgid "" "Introduce number of months before expiration of the new certificate (0 to " "cancel)" msgstr "" #: src/ca-cli-callbacks.c:984 src/ca-cli-callbacks.c:1072 #, c-format msgid "" "The new certificate will be created with the following uses and purposes:\n" msgstr "" #: src/ca-cli-callbacks.c:987 msgid "Do you want to change any property of the new certificate? Yes/[No] " msgstr "" #: src/ca-cli-callbacks.c:990 msgid "* Enable Certification Authority use? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:992 #, c-format msgid "* Certification Authority use disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:996 msgid "* Enable CRL Signing? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:998 #, c-format msgid "* CRL signing use disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1002 msgid "* Enable Digital Signature use? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1004 #, c-format msgid "* Digital Signature use disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1008 msgid "Enable Data Encipherment use? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1010 #, c-format msgid "* Data Encipherment use disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1014 msgid "Enable Key Encipherment use? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1016 #, c-format msgid "* Key Encipherment use disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1020 msgid "Enable Non Repudiation use? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1022 #, c-format msgid "* Non Repudiation use disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1026 msgid "Enable Key Agreement use? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1028 #, c-format msgid "* Key Agreement use disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1032 msgid "Enable Email Protection purpose? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1034 #, c-format msgid "* Email Protection purpose disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1038 msgid "Enable Code Signing purpose? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1040 #, c-format msgid "* Code Signing purpose disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1044 msgid "Enable TLS Web Client purpose? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1046 #, c-format msgid "* TLS Web Client purpose disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1050 msgid "Enable TLS Web Server purpose? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1052 #, c-format msgid "* TLS Web Server purpose disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1056 msgid "Enable Time Stamping purpose? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1058 #, c-format msgid "* Time Stamping purpose disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1062 msgid "Enable OCSP Signing purpose? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1063 #, c-format msgid "* OCSP Signing purpose disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1067 msgid "Enable any purpose? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1069 #, c-format msgid "* Any purpose disabled by policy\n" msgstr "" #: src/ca-cli-callbacks.c:1077 msgid "" "All the mandatory data for the certificate generation has been gathered." msgstr "" #: src/ca-cli-callbacks.c:1077 msgid "Do you want to proceed with the signing? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1083 #, c-format msgid "Certificate signed.\n" msgstr "" #: src/ca-cli-callbacks.c:1105 msgid "This Certificate Signing Request will be deleted." msgstr "" #: src/ca-cli-callbacks.c:1105 msgid "This operation cannot be undone. Are you sure? Yes/[No] " msgstr "" #: src/ca-cli-callbacks.c:1111 #, c-format msgid "Certificate Signing Request deleted.\n" msgstr "" #: src/ca-cli-callbacks.c:1136 #, c-format msgid "CRL generated successfully into file '%s'\n" msgstr "" #: src/ca-cli-callbacks.c:1153 msgid "The bit-length of the prime number must be whole multiple of 1024" msgstr "" #: src/ca-cli-callbacks.c:1162 #, c-format msgid "Diffie-Hellman parameters created and saved successfully in file '%s'\n" msgstr "" #: src/ca-cli-callbacks.c:1174 msgid "Currently, the database is not password-protected." msgstr "" #: src/ca-cli-callbacks.c:1174 msgid "Do you want to password protect it? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1175 msgid "" "OK. You need to supply a password for protecting the private keys in the\n" "database, so nobody else but authorized people can use them. This password\n" "will be asked any time gnoMint will make use of any private key in database." msgstr "" #: src/ca-cli-callbacks.c:1178 msgid "Insert password:" msgstr "" #: src/ca-cli-callbacks.c:1178 msgid "Insert password (confirm):" msgstr "" #: src/ca-cli-callbacks.c:1179 src/ca-cli-callbacks.c:1249 msgid "The introduced passwords are distinct." msgstr "" #: src/ca-cli-callbacks.c:1190 #, c-format msgid "Password established successfully.\n" msgstr "" #: src/ca-cli-callbacks.c:1197 #, c-format msgid "Nothing done.\n" msgstr "" #: src/ca-cli-callbacks.c:1201 msgid "Currently, the database IS password-protected." msgstr "" #: src/ca-cli-callbacks.c:1201 msgid "Do you want to remove this password protection? Yes/[No] " msgstr "" #: src/ca-cli-callbacks.c:1205 #, c-format msgid "" "For removing the password-protection, the current database password\n" "must be supplied.\n" msgstr "" #: src/ca-cli-callbacks.c:1206 src/ca-cli-callbacks.c:1234 msgid "Please, insert the current database password (Empty to cancel): " msgstr "" #: src/ca-cli-callbacks.c:1213 src/ca-cli-callbacks.c:1241 msgid "" "The current password you have entered\n" "doesn't match with the actual current database password." msgstr "" #: src/ca-cli-callbacks.c:1218 msgid "" "Error while removing database password. \n" "The operation was cancelled." msgstr "" #: src/ca-cli-callbacks.c:1223 #, c-format msgid "Password removed successfully.\n" msgstr "" #: src/ca-cli-callbacks.c:1233 #, c-format msgid "" "You must supply the current database password before changing the password.\n" msgstr "" #: src/ca-cli-callbacks.c:1245 msgid "" "OK. Now you must supply a new password for protecting the private keys in " "the\n" "database, so nobody else but authorized people can use them. This password\n" "will be asked any time gnoMint will make use of any private key in database." msgstr "" #: src/ca-cli-callbacks.c:1248 msgid "Insert new password:" msgstr "" #: src/ca-cli-callbacks.c:1248 msgid "Insert new password (confirm):" msgstr "" #: src/ca-cli-callbacks.c:1257 msgid "" "Error while changing database password. \n" "The operation was cancelled." msgstr "" #: src/ca-cli-callbacks.c:1263 #, c-format msgid "Password changed successfully.\n" msgstr "" #: src/ca-cli-callbacks.c:1281 msgid "Problem when importing the given file." msgstr "" #: src/ca-cli-callbacks.c:1284 #, c-format msgid "File imported successfully.\n" msgstr "" #: src/ca-cli-callbacks.c:1300 #, c-format msgid "Directory imported successfully.\n" msgstr "" #: src/ca-cli-callbacks.c:1343 #, c-format msgid "Certificate:\n" msgstr "" #: src/ca-cli-callbacks.c:1347 #, c-format msgid "\tSerial number: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1351 src/ca-cli-callbacks.c:1357 #: src/ca-cli-callbacks.c:1412 #, c-format msgid "\tDistinguished Name: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1351 src/ca-cli-callbacks.c:1352 #: src/ca-cli-callbacks.c:1357 src/ca-cli-callbacks.c:1358 msgid "None." msgstr "" #: src/ca-cli-callbacks.c:1352 src/ca-cli-callbacks.c:1358 #: src/ca-cli-callbacks.c:1416 #, c-format msgid "\tUnique ID: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1356 #, c-format msgid "Issuer:\n" msgstr "" #: src/ca-cli-callbacks.c:1365 src/ca-cli-callbacks.c:1372 #, c-format msgid "" "\t (warning: this 32-bit build cannot tell a real post-2038 date from an " "overflow; this value may be inaccurate)\n" msgstr "" #: src/ca-cli-callbacks.c:1375 #, c-format msgid "Fingerprints:\n" msgstr "" #: src/ca-cli-callbacks.c:1376 #, c-format msgid "\tSHA1 fingerprint: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1377 #, c-format msgid "\tMD5 fingerprint: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1378 #, c-format msgid "\tSHA256 fingerprint: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1409 #, c-format msgid "Certificate Signing Request:\n" msgstr "" #: src/ca-cli-callbacks.c:1486 msgid "Generated certs inherit Country from CA " msgstr "" #: src/ca-cli-callbacks.c:1487 msgid "Generated certs inherit State from CA " msgstr "" #: src/ca-cli-callbacks.c:1488 msgid "Generated certs inherit Locality from CA " msgstr "" #: src/ca-cli-callbacks.c:1489 msgid "Generated certs inherit Organization from CA " msgstr "" #: src/ca-cli-callbacks.c:1490 msgid "Generated certs inherit Organizational Unit from CA " msgstr "" #: src/ca-cli-callbacks.c:1491 msgid "Country in generated certs must be the same than in CA " msgstr "" #: src/ca-cli-callbacks.c:1492 msgid "State in generated certs must be the same than in CA " msgstr "" #: src/ca-cli-callbacks.c:1493 msgid "Locality in generated certs must be the same than in CA " msgstr "" #: src/ca-cli-callbacks.c:1494 msgid "Organization in generated certs must be the same than in CA " msgstr "" #: src/ca-cli-callbacks.c:1495 msgid "Organizational Unit in generated certs must be the same than in CA" msgstr "" #: src/ca-cli-callbacks.c:1496 msgid "Maximum number of hours between CRL updates " msgstr "" #: src/ca-cli-callbacks.c:1497 msgid "CRL distribution point (URL where CRL is published) " msgstr "" #: src/ca-cli-callbacks.c:1498 msgid "Maximum number of months before expiration of new certs " msgstr "" #: src/ca-cli-callbacks.c:1499 msgid "CA use enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1500 msgid "CRL Sign use enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1501 msgid "Non reputation use enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1502 msgid "Digital signature use enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1503 msgid "Key encipherment use enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1504 msgid "Key agreement use enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1505 msgid "Data encipherment use enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1506 msgid "TLS web server purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1507 msgid "TLS web client purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1508 msgid "Time stamping purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1509 msgid "Code signing server purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1510 msgid "Email protection purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1511 msgid "OCSP signing purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1512 msgid "Any purpose enabled in generated certs " msgstr "" #: src/ca-cli-callbacks.c:1526 #, c-format msgid "Showing policies of the following certificate:\n" msgstr "" #: src/ca-cli-callbacks.c:1528 #, c-format msgid "" "\n" "Policies:\n" msgstr "" #: src/ca-cli-callbacks.c:1530 #, c-format msgid "Id.\tDescription\t\t\t\t\t\t\t\tValue\n" msgstr "" #: src/ca-cli-callbacks.c:1556 msgid "The given policy id is not valid" msgstr "" #: src/ca-cli-callbacks.c:1568 #, c-format msgid "" "You are about to assign to the policy\n" "'%s' the new value '%s'." msgstr "" #: src/ca-cli-callbacks.c:1572 src/ca-cli-callbacks.c:1616 msgid "Are you sure? Yes/[No] : " msgstr "" #: src/ca-cli-callbacks.c:1577 #, c-format msgid "Policy set correctly to '%s'.\n" msgstr "" #: src/ca-cli-callbacks.c:1591 #, c-format msgid "gnoMint-cli current preferences:\n" msgstr "" #: src/ca-cli-callbacks.c:1593 #, c-format msgid "Id.\tName\t\t\tValue\n" msgstr "" #: src/ca-cli-callbacks.c:1594 #, c-format msgid "0\tGnome keyring support\t%d\n" msgstr "" #: src/ca-cli-callbacks.c:1606 msgid "The given preference id is not valid" msgstr "" #: src/ca-cli-callbacks.c:1612 #, c-format msgid "" "You are about to assign to the preference 'Gnome keyring support' the new " "value '%d'." msgstr "" #: src/ca-cli-callbacks.c:1634 #, c-format msgid "" "%s version %s\n" "%s\n" msgstr "" #: src/ca-cli-callbacks.c:1635 #, c-format msgid "" "\n" "Authors:\n" "%s\n" "\n" msgstr "" #: src/ca-cli-callbacks.c:1636 src/ca-cli-callbacks.c:1637 src/main.c:742 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " David Marín https://launchpad.net/~davefx\n" " Kuvaly [LCT] https://launchpad.net/~kuvaly\n" " Luboš Staněk https://launchpad.net/~lubek" #: src/ca-cli-callbacks.c:1637 #, c-format msgid "" "Translators:\n" "%s\n" msgstr "" #: src/ca-cli-callbacks.c:1644 msgid "" "THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY\n" "APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT\n" "HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY\n" "OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,\n" "THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n" "PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM\n" "IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF\n" "ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n" "\n" "For more information about warranty, see section 15 onwards of the GNU\n" "General Public License. You should have received a copy of the GNU General\n" "Public License along with this program. If not, see\n" ".\n" "\n" msgstr "" #: src/ca-cli-callbacks.c:1662 msgid "" "This program is free software: you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation, either version 3 of the License, or\n" "(at your option) any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program. If not, see .\n" "\n" msgstr "" #: src/ca-cli-callbacks.c:1677 #, c-format msgid "%s version %s \"%s\"\n" msgstr "" #: src/ca-cli-callbacks.c:1686 #, c-format msgid "Available commands:\n" msgstr "" #: src/ca-cli-callbacks.c:1687 #, c-format msgid "===================\n" msgstr "" #: src/ca-cli-callbacks.c:1697 #, c-format msgid "Exiting gnomint-cli...\n" msgstr "" #: src/ca-cli-callbacks.c:1738 msgid "The given CA id is not valid" msgstr "" #: src/ca-cli-callbacks.c:1750 msgid "Certificate type must be 'web' or 'email'" msgstr "" #: src/ca-cli-callbacks.c:1756 msgid "Server name cannot be empty" msgstr "" #: src/ca-cli-callbacks.c:1760 #, c-format msgid "Creating %s certificate for: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1761 msgid "web server" msgstr "" #: src/ca-cli-callbacks.c:1761 msgid "email server" msgstr "" #: src/ca-cli-callbacks.c:1837 #, c-format msgid "Error: Key generation failed: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1845 #, c-format msgid "Error: CSR generation failed: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1854 #, c-format msgid "Error: Failed to parse generated CSR\n" msgstr "" #: src/ca-cli-callbacks.c:1865 #, c-format msgid "Error: Failed to save CSR: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1879 msgid "CSR created with ID: %" msgstr "" #: src/ca-cli-callbacks.c:1903 #, c-format msgid "Error: Failed to sign certificate: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1910 #, c-format msgid "Certificate generated successfully for: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1911 #, c-format msgid "Certificate type: %s\n" msgstr "" #: src/ca-cli-callbacks.c:1911 msgid "Web Server" msgstr "" #: src/ca-cli-callbacks.c:1911 msgid "Email Server" msgstr "" #: src/ca-cli-callbacks.c:1925 msgid "Usage: renewcert " msgstr "" #: src/ca-cli-callbacks.c:1930 src/ca-cli-callbacks.c:1968 msgid "The given certificate id is not valid" msgstr "" #: src/ca-cli-callbacks.c:1941 msgid "" "gnoMint will issue a new certificate with the same subject and SAN as this " "one, signed by the same CA, with a fresh keypair. The old certificate stays " "in place." msgstr "" #: src/ca-cli-callbacks.c:1944 msgid "Renew? [Yes]/No " msgstr "" #: src/ca-cli-callbacks.c:1955 msgid "Certificate renewed. New certificate id: %" msgstr "" #: src/ca-cli-callbacks.c:1963 msgid "Usage: exportchain " msgstr "" #: src/ca-cli-callbacks.c:1974 msgid "Cannot build chain PEM for that certificate." msgstr "" #: src/ca-cli-callbacks.c:1979 msgid "Cannot write chain file." msgstr "" #: src/ca-cli-callbacks.c:1985 #, c-format msgid "Full chain (leaf → root) written to %s\n" msgstr "" #: src/ca-cli-callbacks.c:1992 msgid "Usage: revokemany [cert-id ...]" msgstr "" #: src/ca-cli-callbacks.c:2008 #, c-format msgid "%d certificate revoked.\n" msgid_plural "%d certificates revoked.\n" msgstr[0] "" msgstr[1] "" #: src/ca-cli-callbacks.c:2016 msgid "Usage: deletemany [csr-id ...]" msgstr "" #: src/ca-cli-callbacks.c:2032 #, c-format msgid "%d CSR deleted.\n" msgid_plural "%d CSRs deleted.\n" msgstr[0] "" msgstr[1] "" #: src/ca-cli-callbacks.c:2092 msgid "Usage: search " msgstr "" #: src/ca-cli-callbacks.c:2099 #, c-format msgid "Matches (id\tserial\tsubject):\n" msgstr "" #: src/ca-cli-callbacks.c:2102 #, c-format msgid "%d match.\n" msgid_plural "%d matches.\n" msgstr[0] "" msgstr[1] "" #: src/ca-cli-callbacks.c:2126 #, c-format msgid "'%s' is not a certificate id in this database." msgstr "" #: src/ca-cli-callbacks.c:2134 #, c-format msgid "Cannot read PEM for cert id %s." msgstr "" #: src/ca-cli-callbacks.c:2152 msgid "Usage: diff " msgstr "" #: src/ca-cli-callbacks.c:2168 msgid "Field" msgstr "" #: src/ca-cli-callbacks.c:2181 #, c-format msgid "" "\n" "%d field differs.\n" msgid_plural "" "\n" "%d fields differ.\n" msgstr[0] "" msgstr[1] "" #: src/ca_creation.c:55 src/csr_creation.c:57 msgid "Generating new RSA key pair" msgstr "" #: src/ca_creation.c:64 src/ca_creation.c:88 src/ca_creation.c:109 #: src/ca_creation.c:128 src/csr_creation.c:66 src/csr_creation.c:87 #: src/csr_creation.c:104 src/csr_creation.c:121 msgid "Key generation failed" msgstr "" #: src/ca_creation.c:78 src/csr_creation.c:79 msgid "Generating new DSA key pair" msgstr "" #: src/ca_creation.c:101 src/csr_creation.c:97 msgid "Generating new ECDSA key pair" msgstr "" #: src/ca_creation.c:120 src/csr_creation.c:114 msgid "Generating new Ed25519 key pair" msgstr "" #: src/ca_creation.c:139 msgid "Generating self-signed CA-Root cert" msgstr "" #: src/ca_creation.c:147 msgid "Certificate generation failed" msgstr "" #: src/ca_creation.c:159 msgid "Creating CA database" msgstr "" #: src/ca_creation.c:168 msgid "CA database creation failed" msgstr "" #: src/ca_creation.c:180 msgid "CA generated successfully" msgstr "" #: src/ca_file.c:207 #, c-format msgid "Error opening filename '%s'" msgstr "" #: src/ca_file.c:310 msgid "" "The selected database has been created with a newer version of gnoMint than " "the currently installed." msgstr "" #: src/ca_file.c:1221 msgid "Cannot find last assigned serial number" msgstr "" #: src/ca_file.c:1410 msgid "Cannot find parent CA in database" msgstr "" #: src/ca_file.c:1600 msgid "" "This certificate already exists in the database: cannot insert it twice." msgstr "" #: src/ca_file.c:2044 msgid "" "The given file contains a valid private key. However, it has not been " "imported to the database because it doesn't match any key-less certificate " "or certificate request in the database." msgstr "" #: src/ca_file.c:2047 msgid "" "The given file contains a valid private key. However, it has not been " "imported to the database because it doesn't match any key-less certificate " "in the database." msgstr "" #: src/certificate_properties.c:151 msgid "" "This 32-bit build cannot represent dates after 2038-01-19, so it cannot " "distinguish a genuine date from a later one that overflowed. This value may " "be inaccurate." msgstr "" #: src/certificate_properties.c:383 msgid "Unknown" msgstr "" #: src/certificate_properties.c:453 src/tls.c:1478 msgid "Certificate signing" msgstr "" #: src/certificate_properties.c:457 msgid "Key encipherment only" msgstr "" #: src/certificate_properties.c:459 msgid "Key decipherment only" msgstr "" #: src/certificate_properties.c:472 msgid "Version" msgstr "" #: src/certificate_properties.c:507 msgid "Serial Number" msgstr "" #: src/certificate_properties.c:522 src/certificate_properties.c:1262 msgid "Signature" msgstr "" #: src/certificate_properties.c:525 src/certificate_properties.c:676 #: src/certificate_properties.c:679 src/certificate_properties.c:1228 msgid "Algorithm" msgstr "" #: src/certificate_properties.c:529 src/certificate_properties.c:686 #: src/certificate_properties.c:726 src/certificate_properties.c:763 #: src/certificate_properties.c:1232 msgid "Parameters" msgstr "" #: src/certificate_properties.c:529 src/certificate_properties.c:686 #: src/certificate_properties.c:763 src/certificate_properties.c:767 #: src/certificate_properties.c:781 src/certificate_properties.c:790 #: src/certificate_properties.c:1232 msgid "(unknown)" msgstr "" #: src/certificate_properties.c:563 msgid "Issuer" msgstr "" #: src/certificate_properties.c:598 msgid "Validity" msgstr "" #: src/certificate_properties.c:603 msgid "Not Before" msgstr "" #: src/certificate_properties.c:610 msgid "Not After" msgstr "" #: src/certificate_properties.c:616 msgid "Note" msgstr "" #: src/certificate_properties.c:617 msgid "" "This 32-bit build cannot represent dates after 2038-01-19, so a value marked " "⚠ may be a later date that overflowed and is inaccurate." msgstr "" #: src/certificate_properties.c:673 msgid "Subject Public Key Info" msgstr "" #: src/certificate_properties.c:690 msgid "RSA PublicKey" msgstr "" #: src/certificate_properties.c:702 msgid "Modulus" msgstr "" #: src/certificate_properties.c:710 msgid "Public Exponent" msgstr "" #: src/certificate_properties.c:755 msgid "DSA PublicKey" msgstr "" #: src/certificate_properties.c:767 msgid "Subject Public Key" msgstr "" #: src/certificate_properties.c:781 msgid "Issuer Unique ID" msgstr "" #: src/certificate_properties.c:790 msgid "Subject Unique ID" msgstr "" #: src/certificate_properties.c:813 src/certificate_properties.c:836 #: src/certificate_properties.c:945 src/certificate_properties.c:1058 #: src/certificate_properties.c:1085 src/certificate_properties.c:1124 #: src/certificate_properties.c:1182 src/certificate_properties.c:1457 #: src/san_manager.c:399 msgid "Value" msgstr "" #: src/certificate_properties.c:875 src/certificate_properties.c:1018 msgid "DNS Name" msgstr "" #: src/certificate_properties.c:882 src/certificate_properties.c:1025 msgid "RFC822 Name" msgstr "" #: src/certificate_properties.c:905 src/certificate_properties.c:919 #: src/certificate_properties.c:927 msgid "IP" msgstr "" #: src/certificate_properties.c:936 src/certificate_properties.c:1049 msgid "Directory Name" msgstr "" #: src/certificate_properties.c:973 src/certificate_properties.c:1164 msgid "TRUE" msgstr "" #: src/certificate_properties.c:973 src/certificate_properties.c:1164 msgid "FALSE" msgstr "" #: src/certificate_properties.c:977 msgid "CA" msgstr "" #: src/certificate_properties.c:981 msgid "Path Length Constraint" msgstr "" #: src/certificate_properties.c:1154 msgid "Extensions" msgstr "" #: src/certificate_properties.c:1166 msgid "Critical" msgstr "" #: src/certificate_properties.c:1199 msgid "Certificate" msgstr "" #: src/certificate_properties.c:1225 msgid "Signature Algorithm" msgstr "" #: src/certificate_properties.c:1446 msgid "Name" msgstr "" #: src/certificate_properties.c:1477 src/tls.c:1494 msgid "TLS WWW Server" msgstr "" #: src/certificate_properties.c:1478 msgid "TLS WWW Client" msgstr "" #: src/certificate_properties.c:1484 msgid "Subject Directory Attributes" msgstr "" #: src/certificate_properties.c:1485 msgid "Subject Key Identifier" msgstr "" #: src/certificate_properties.c:1486 msgid "Key Usage" msgstr "" #: src/certificate_properties.c:1487 msgid "Private Key Usage Period" msgstr "" #: src/certificate_properties.c:1489 msgid "Basic Constraints" msgstr "" #: src/certificate_properties.c:1490 msgid "Name Constraints" msgstr "" #: src/certificate_properties.c:1491 msgid "CRL Distribution Points" msgstr "" #: src/certificate_properties.c:1492 msgid "Certificate Policies" msgstr "" #: src/certificate_properties.c:1493 msgid "Policy Mappings" msgstr "" #: src/certificate_properties.c:1494 msgid "Authority Key Identifier" msgstr "" #: src/certificate_properties.c:1495 msgid "Policy Constraints" msgstr "" #: src/certificate_properties.c:1496 msgid "Extended Key Usage" msgstr "" #: src/certificate_properties.c:1497 msgid "Delta CRL Distribution Point" msgstr "" #: src/certificate_properties.c:1498 msgid "Inhibit Any-Policy" msgstr "" #: src/creation_process_window.c:69 msgid "CA creation process finished" msgstr "" #: src/creation_process_window.c:193 msgid "Creation process cancelled" msgstr "" #: src/creation_process_window.c:215 msgid "CSR creation process finished" msgstr "" #: src/creation_process_window.c:288 msgid "Creating Certificate Signing Request" msgstr "" #: src/crl.c:101 msgid "CRL generated successfully" msgstr "" #: src/crl.c:146 msgid "Export Certificate Revocation List" msgstr "" #: src/crl.c:180 src/crl.c:253 src/crl.c:299 msgid "There was an error while generating CRL." msgstr "" #: src/crl.c:189 msgid "There was an error while writing CRL." msgstr "" #: src/crl.c:201 src/crl.c:227 src/crl.c:268 src/crl.c:330 src/crl.c:351 msgid "There was an error while exporting CRL." msgstr "" #: src/crl.c:238 src/crl.c:369 msgid "There was an error while getting revoked certificates." msgstr "" #: src/csr_creation.c:131 msgid "Generating CSR" msgstr "" #: src/csr_creation.c:140 msgid "CSR generation failed" msgstr "" #: src/csr_creation.c:151 msgid "Saving CSR in database" msgstr "" #: src/csr_creation.c:169 msgid "CSR couldn't be saved" msgstr "" #: src/csr_creation.c:180 msgid "CSR generated successfully" msgstr "" #: src/csr_properties.c:91 msgid "" "This Certificate Signing Request has its corresponding private key saved " "in a external file." msgstr "" #: src/dialog.c:123 #, c-format msgid "" "\n" "The password must have, at least, %d characters\n" msgstr "" #: src/dialog.c:581 msgid "To do. Feature not implemented yet." msgstr "" #: src/export.c:43 src/export.c:48 src/export.c:53 msgid "There was an error while saving Diffie-Hellman parameters." msgstr "" #: src/export.c:79 src/export.c:138 src/export.c:146 src/export.c:200 #: src/export.c:210 src/export.c:304 src/export.c:341 src/export.c:376 #: src/export.c:384 src/export.c:424 src/export.c:433 src/export.c:474 msgid "There was an error while exporting private key." msgstr "" #: src/export.c:99 src/export.c:284 src/export.c:357 src/export.c:455 msgid "There was an error while getting private key." msgstr "" #: src/export.c:110 src/export.c:248 msgid "There was an error while uncrypting private key." msgstr "" #: src/export.c:113 src/export.c:264 msgid "" "You need to supply a passphrase for protecting the exported private key, so " "nobody else but authorized people can use it. This passphrase will be asked " "by any application that will make use of the private key." msgstr "" #: src/export.c:116 src/export.c:267 src/export.c:536 src/export.c:715 msgid "Insert passphrase (8 characters or more):" msgstr "" #: src/export.c:116 src/export.c:267 src/export.c:536 src/export.c:715 msgid "Insert passphrase (confirm):" msgstr "" #: src/export.c:117 src/export.c:268 src/export.c:537 src/export.c:716 msgid "The introduced passphrases are distinct." msgstr "" #: src/export.c:120 src/export.c:178 msgid "Operation cancelled." msgstr "" #: src/export.c:130 src/export.c:190 msgid "There was an error while password-protecting private key." msgstr "" #: src/export.c:368 src/export.c:415 msgid "There was an error while decrypting private key." msgstr "" #: src/export.c:513 src/export.c:747 msgid "Unsupported operation: you cannot generate a PKCS#12 for a CSR." msgstr "" #: src/export.c:521 src/export.c:530 src/export.c:695 src/export.c:731 msgid "" "There was an error while getting the certificate and private key from the " "internal database." msgstr "" #: src/export.c:533 src/export.c:712 msgid "" "You need to supply a passphrase for protecting the exported certificate, so " "nobody else but authorized people can use it. This passphrase will be asked " "by any application that will import the certificate." msgstr "" #: src/export.c:555 src/export.c:629 msgid "There was an error while generating the PKCS#12 package." msgstr "" #: src/export.c:569 src/export.c:578 src/export.c:652 src/export.c:663 msgid "There was an error while exporting the certificate." msgstr "" #: src/gnomint-cli.c:59 msgid "- A Certification Authority manager" msgstr "" #: src/gnomint-cli.c:62 #, c-format msgid "Failed to initialize: %s\n" msgstr "" #: src/import.c:171 #, c-format msgid "" "The whole selected file, or some of its elements, seems to\n" "be cyphered using a password or passphrase. For importing\n" "the file into gnoMint database, you must provide an \n" "appropriate password.\n" msgstr "" #: src/import.c:176 #, c-format msgid "Please introduce password for `%s'" msgstr "" #: src/import.c:218 #, c-format msgid "" "Couldn't import the certificate request. \n" "The database returned this error: \n" "\n" "'%s'" msgstr "" #: src/import.c:298 msgid "" "The imported certificate expires after 2038-01-19, a date this 32-bit build " "cannot represent. Its stored expiration has been capped and may be " "inaccurate. The certificate itself is unchanged; open it on a 64-bit system " "to see the exact date." msgstr "" #: src/import.c:310 #, c-format msgid "" "Couldn't import the certificate. \n" "The database returned this error: \n" "\n" "'%s'" msgstr "" #: src/import.c:666 src/import.c:852 msgid "PKCS#8 crypted private key" msgstr "" #: src/import.c:677 src/import.c:862 msgid "The given password doesn't match the one used for crypting this part" msgstr "" #: src/import.c:771 msgid "Encrypted PKCS#12 bag" msgstr "" #: src/import.c:788 msgid "" "The given password doesn't match with the password used for encrypting this " "part." msgstr "" #: src/import.c:999 msgid "Couldn't find any supported format in the given file" msgstr "" #: src/import.c:1012 src/import.c:1363 #, c-format msgid "Couldn't open %s file. Check permissions." msgstr "" #: src/import.c:1039 #, c-format msgid "Couldn't recognize the file %s as a RSA or DSA private key." msgstr "" #: src/import.c:1055 #, c-format msgid "Private key for %s" msgstr "" #: src/import.c:1057 #, c-format msgid "Private key %s" msgstr "" #: src/import.c:1092 msgid "Problem while calling to openssl for decyphering private key." msgstr "" #: src/import.c:1100 #, c-format msgid "" "OpenSSL has returned the following error while trying to decypher the " "private key:\n" "\n" "%s" msgstr "" #: src/import.c:1211 msgid "There was a problem while importing the public CA root certificate" msgstr "" #: src/import.c:1225 msgid "CA Root certificate" msgstr "" #: src/import.c:1227 msgid "" "There was a problem while importing the private key corresponding to CA root " "certificate" msgstr "" #: src/import.c:1237 msgid "There was a problem while opening the directory certs/." msgstr "" #: src/import.c:1261 msgid "There was a problem while opening the directory newcerts/." msgstr "" #: src/import.c:1288 msgid "There was a problem while opening the directory req." msgstr "" #: src/import.c:1314 msgid "There was a problem while opening the directory crl/." msgstr "" #: src/import.c:1336 msgid "There was a problem while opening the directory keys/." msgstr "" #: src/import.c:1394 msgid "Files in the directory don't belong to any supported CA format." msgstr "" #: src/main.c:567 #, c-format msgid "" "Problem when creating '%s' CA database:\n" "%s" msgstr "" #: src/main.c:577 #, c-format msgid "Problem when opening new '%s' CA database" msgstr "" #: src/main.c:591 msgid "Create new CA database" msgstr "" #: src/main.c:616 #, c-format msgid "Problem when opening '%s' CA database" msgstr "" #: src/main.c:630 msgid "Open CA database" msgstr "" #: src/main.c:662 msgid "Save CA database as..." msgstr "" #: src/main.c:722 msgid "" "gnoMint is a program for creating and managing Certification Authorities, " "and their certificates" msgstr "" #: src/main.c:725 msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU General Public License as published by the Free " "Software Foundation; either version 3 of the License, or (at your option) " "any later version.\n" "\n" "This program is distributed in the hope that it will be useful, but WITHOUT " "ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or " "FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for " "more details.\n" "\n" "You should have received a copy of the GNU General Public License along with " "this program; if not, write to the Free Software Foundation, Inc., 51 " "Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA." msgstr "" #: src/main.c:741 msgid "Code collaborators" msgstr "" #: src/new_ca_window.c:191 src/new_req_window.c:222 msgid "ECDSA curve:" msgstr "" #: src/new_ca_window.c:219 msgid "Please enter a Common Name (CN) for the CA." msgstr "" #: src/new_cert.c:197 msgid "" "The policy of this CA obligue the country field of the certificates to be " "the same as the one in the CA cert." msgstr "" #: src/new_cert.c:203 msgid "" "The policy of this CA obligue the state/province field of the certificates " "to be the same as the one in the CA cert." msgstr "" #: src/new_cert.c:209 msgid "" "The policy of this CA obligue the locality/city field of the certificates to " "be the same as the one in the CA cert." msgstr "" #: src/new_cert.c:215 msgid "" "The policy of this CA obligue the organization field of the certificates to " "be the same as the one in the CA cert." msgstr "" #: src/new_cert.c:221 msgid "" "The policy of this CA obligue the organizational unit field of the " "certificates to be the same as the one in the CA cert." msgstr "" #: src/new_cert.c:659 msgid "" "The expiration date of the new certificate is after the expiration date of " "the CA certificate.\n" "\n" "According to the current standards, this is not allowed. The new certificate " "will be created with the same expiration date as the CA certificate." msgstr "" #: src/new_cert.c:734 msgid "" "This system uses a 32-bit time_t and cannot represent dates after " "2038-01-19. The new certificate's expiration date has been clamped to that " "limit. To issue longer-lived certificates, run gnoMint on a 64-bit platform." msgstr "" #: src/new_cert.c:770 src/new_cert.c:809 src/new_cert.c:838 msgid "Error while signing CSR." msgstr "" #: src/new_req_window.c:374 msgid "Please enter a Common Name (CN) for the certificate request." msgstr "" #: src/pkey_manage.c:124 #, c-format msgid "" "The file that holds private key for certificate '%s' is password-protected.\n" "\n" "Please, insert the password corresponding to this file." msgstr "" #: src/pkey_manage.c:163 #, c-format msgid "" "The file that holds private key for certificate\n" "'%s' is password-protected.\n" "\n" msgstr "" #: src/pkey_manage.c:211 src/pkey_manage.c:303 msgid "" "The given password doesn't match with the one used while crypting the file." msgstr "" #: src/pkey_manage.c:226 src/pkey_manage.c:315 src/pkey_manage.c:476 msgid "" "The file designated in database contains a private key, but it is not the " "private key corresponding to the certificate." msgstr "" #: src/pkey_manage.c:229 src/pkey_manage.c:318 src/pkey_manage.c:479 msgid "" "The file designated in database doesn't contain any recognized private key." msgstr "" #: src/pkey_manage.c:233 src/pkey_manage.c:500 msgid "The file designated in database couldn't be opened." msgstr "" #: src/pkey_manage.c:236 src/pkey_manage.c:503 msgid "The file designated in database doesn't exist." msgstr "" #: src/pkey_manage.c:360 msgid "Select private key file" msgstr "" #: src/pkey_manage.c:1069 src/pkey_manage.c:1164 msgid "The given password doesn't match the one used in the database" msgstr "" #: src/pkey_manage.c:1151 #, c-format msgid "" "This action requires using one or more private keys saved in the database.\n" msgstr "" #: src/pkey_manage.c:1152 msgid "Please insert the database password:" msgstr "" #: src/san_manager.c:71 msgid "Value cannot be empty" msgstr "" #: src/san_manager.c:82 msgid "Invalid DNS name. Use format: example.com or *.example.com" msgstr "" #: src/san_manager.c:93 msgid "Invalid IP address. Use IPv4 (e.g., 192.168.1.1) or IPv6 format" msgstr "" #: src/san_manager.c:103 msgid "Invalid email address. Use format: user@example.com" msgstr "" #: src/san_manager.c:113 msgid "Invalid URI. Must start with http://, https://, ftp://, or ldap://" msgstr "" #: src/san_manager.c:389 msgid "Type" msgstr "" #: src/tls.c:198 src/tls.c:231 src/tls.c:276 src/tls.c:307 #, c-format msgid "Error initializing private key structure." msgstr "" #: src/tls.c:204 src/tls.c:237 src/tls.c:281 src/tls.c:311 #, c-format msgid "Error creating private key: %d" msgstr "" #: src/tls.c:215 src/tls.c:248 src/tls.c:289 src/tls.c:321 src/tls.c:794 #: src/tls.c:1204 #, c-format msgid "Error exporting private key to PEM structure." msgstr "" #: src/tls.c:656 #, c-format msgid "Error when initializing certificate structure" msgstr "" #: src/tls.c:662 src/tls.c:956 #, c-format msgid "Error when setting certificate version" msgstr "" #: src/tls.c:672 src/tls.c:969 #, c-format msgid "Error when setting certificate serial number" msgstr "" #: src/tls.c:681 src/tls.c:978 #, c-format msgid "Error when setting activation time" msgstr "" #: src/tls.c:686 src/tls.c:986 #, c-format msgid "Error when setting expiration time" msgstr "" #: src/tls.c:740 src/tls.c:1040 #, c-format msgid "Error when setting basicConstraint extension" msgstr "" #: src/tls.c:745 src/tls.c:1082 #, c-format msgid "Error when setting keyUsage extension" msgstr "" #: src/tls.c:756 src/tls.c:864 src/tls.c:1120 #, c-format msgid "Error when setting Subject Alternative Name extension" msgstr "" #: src/tls.c:768 src/tls.c:1056 #, c-format msgid "Error when setting subject key identifier extension" msgstr "" #: src/tls.c:772 src/tls.c:1030 #, c-format msgid "Error when setting authority key identifier extension" msgstr "" #: src/tls.c:782 #, c-format msgid "Error when signing self-signed certificate" msgstr "" #: src/tls.c:813 #, c-format msgid "Error when initializing privkey structure" msgstr "" #: src/tls.c:817 #, c-format msgid "Error when importing private key into privkey structure" msgstr "" #: src/tls.c:821 #, c-format msgid "Error when initializing csr structure" msgstr "" #: src/tls.c:825 #, c-format msgid "Error when setting csr version" msgstr "" #: src/tls.c:869 #, c-format msgid "Error when signing self-signed csr" msgstr "" #: src/tls.c:880 #, c-format msgid "Error exporting CSR to PEM structure." msgstr "" #: src/tls.c:933 #, c-format msgid "Error when importing CA private key" msgstr "" #: src/tls.c:940 #, c-format msgid "Error when initializing crt structure" msgstr "" #: src/tls.c:948 #, c-format msgid "Error when copying data from CSR to certificate structure" msgstr "" #: src/tls.c:1182 #, c-format msgid "Error when signing certificate: %s" msgstr "" #: src/tls.c:1482 msgid "Key encipher only" msgstr "" #: src/tls.c:1484 msgid "Key decipher only" msgstr "" #: src/tls.c:1496 msgid "TLS WWW Client." msgstr "" #: src/wizard_window.c:239 #, c-format msgid "" "Key generation failed:\n" "%s" msgstr "" #: src/wizard_window.c:249 #, c-format msgid "" "CSR generation failed:\n" "%s" msgstr "" #: src/wizard_window.c:260 msgid "Failed to parse generated CSR." msgstr "" #: src/wizard_window.c:271 #, c-format msgid "" "Failed to save CSR:\n" "%s" msgstr "" #: src/wizard_window.c:294 #, c-format msgid "" "Failed to sign certificate:\n" "%s" msgstr "" #: src/wizard_window.c:297 msgid "Certificate generated successfully!" msgstr "" #: src/wizard_window.c:311 msgid "Please enter a server name." msgstr "" #: src/wizard_window.c:318 msgid "Please select a Certificate Authority." msgstr "" #: src/wizard_window.c:325 msgid "Invalid Certificate Authority selected." msgstr "" #: src/wizard_window.c:412 msgid "No Certificate Authority found. Please create a CA first." msgstr "" gnomint-1.6.4/po/de.gmo0000644000000000000000000010167515212761320013456 0ustar00rootrootX  6 JUe1t #c%N#  ! .9A ZAd15 @ U a d      " !%-!S!!q!!! !!" "6"1K"}" """""(# 1#R#@W#8###4$R7$J$)$;$;%D%Z%q%%%%.%2%%&.& 2&&@&g&Fo&,&&&!'D&')k'-'2'9'0(A8(z((+((( )")?)%^)-))))9)-2*%`*"*,*,*&+"*+%M+Es+D+H+EG,D,, , ,--")-L-+[- ---f-A".d.j...?..V/Y/a////=/0 00$0:0T0 o000)00 1&1Q71O1G1!222 H2YR222923% 33383I3'c3!33 3 33#3 444!585O5 `5n5V555 6 !6.6?6 R6`6y6 6666!6# 707A7_7 77$7"77V8X8x8@888!829R9e9*w9 9&9%9&:)7:*a:=: : :2:; ;*;11;c;;;;/;;<*<E< L< Z< h<<<< <(<=1= 6=@=T= k=w=====^=_>3x>>>&>=?KN?$?(?&?d@7t@5@6@:A4TA0A/A/A3B8NB-B6B\B9IC:C0C*C1DsLDHD! E8+E dE#rEEEEE?E F F F+F1F39F3mF FLFLFLGG GGGGGGGG H4&H[HaHgHoH`HH HH II%IJJJJK K 3K=KVK6eKK KKK K&K.K"Lo8LL\L$M=M RM _M"kMM MVM>NONmNANN NN=OABO:O/O)O0P JP!UP!wP!P'P,PQ")QLQ!_QQQ<QQ RR5R1KR}R,R/RRXSJYS)SSJSo*TcTRTLQUUU.U-U#VCV"LV<oVCVVVV"W =WVJW7WW W%WJX)gX7X/X6X 0YS=YYY9YY"Z6Z$RZ1wZAZFZA2[$t[Q[7[+#\'O\2w\3\.\! ]+/]H[]O]Q]JF^P^@^ #_ /_%<_b_+y__6_ __`|7`J``'a.a$LaRqaa_a 6b"@bcb%b%bJbc c%c 6c Wcxcc'cc)c!d!q%Sqyq4q"q6q-r$Fr!krr r r+rrrs6.s2ess ssss s tt $t 2t@t^Etot;u>Pu8u.u[uqSv0v2v2)wz\w;w9x:Mx>x9xHy7JyEy<y=zBCz2zjzV${G{{H{= |@J||]G})}R} "~5.~d~u~}~+~[~  % 2@E:M@c\<`  'BHf%> /e0 ͂Ղ)NUW TA%<3] V{9l5Z)"?qz#mb(>2JBM'i L6I+'C (!Q-1L8E$PT~3Hj7xK/1;6PNI/"Q`oS%=2f s4V gt+u;>a:S,.<R W*GdRDF4J* K[7EkX ^8#OF5w.@Uy|!HOce@0-vG_CA,X=Yn h 9B}D p&:$0?r&M\ Activated on: %s Expires on: %s Key bitlength: %d MD5 fingerprint: %s SHA1 fingerprint: %s Serial number: %s Type: %s Unique ID: %s Authors: %s The password must have, at least, %d characters Error. OK. %s version %s %s (unknown)- A Certification Authority manager0 Gnome keyring support %d Emmited byThis Certificate Signing Request has its corresponding private key saved in a external file.ValidityExport the Certificate Signing Request to a public file, in PEM format.#Description#=================== Activated onActivationAdd CSRAdd _Certificate RequestAlgorithmAre you sure you want to delete this Certificate Signing Request?Are you sure you want to revoke this certificate?Are you sure? Yes/[No] : Are you sure? [Yes]/No Automatic exporting of certificates for gnome-keyringAvailable commands: Both parts.CACA creation process finishedCA database creation failedCA generated successfullyCSR couldn't be savedCSR generated successfullyCSR generation failedCertificateCertificate Requests in Database: Certificate Signing Request deleted. Certificate Signing Request: Certificate exported successfullyCertificate generation failedCertificate propertiesCertificate properties - gnoMintCertificate purposes: Certificate requests visibilityCertificate revoked. Certificate signed. Certificate signing request exported successfullyCertificate uses: Certificate: Certificates in Database: Certification AuthorityChange CA password - gnoMintChange database pass_wordChange password for the current databaseChoose private key file. gnoMintCityClose current file and create a new database with given filenameClose current file and open the file with given filenameClose database and exit programCommon Name (CN)Couldn't find any supported format in the given fileCouldn't import the certificate request. The database returned this error: '%s'Couldn't import the certificate. The database returned this error: '%s'Couldn't open %s file. Check permissions.Couldn't recognize the file %s as a RSA or DSA private key.Country:Create a new databaseCreate new CA databaseCreating CA databaseCreation process cancelledCriticalCurrent opened file: %s Currently, the database IS password-protected.Currently, the database is not password-protected.DNS NameDSADSA PublicKeyDatabase password protection - gnoMintDetailsDiffie-Hellman parameters created and saved successfully in file '%s' Diffie-Hellman parameters saved successfullyDigital signatureDirectory NameDirectory imported successfully. Do you want to change any property of the new certificate? Yes/[No] Do you want to change anything? Yes/[No] Do you want to password protect it? [Yes]/No Do you want to proceed with the signing? [Yes]/No Do you want to remove this password protection? Yes/[No] E_xportEnter bitlength for the key (it must be a whole multiple of 1024)Enter country (C)Enter locality or city (L)Enter new password again for confirmation:Enter organization (O)Enter organizational unit (OU)Enter password - gnoMintEnter state or province (ST)Error creating private key: %dError exporting CSR to PEM structure.Error exporting private key to PEM structure.Error initializing private key structure.Error opening filename '%s'Error when copying data from CSR to certificate structureError when initializing certificate structureError when initializing crt structureError when setting activation timeError when setting basicConstraint extensionError when setting certificate serial numberError when setting certificate versionError when setting expiration timeError when setting keyUsage extensionError while changing database password. The operation was cancelled.Error while changing database password. The operation was cancelled.Error while establishing database password. The operation was cancelled.Error while removing database password. The operation was cancelled.Error while removing database password. The operation was cancelled.Error while signing CSR.ExpirationExpires onExport CSR - gnoMintExport certificateExport certificate signing requestExport optionsExport whole certificate in PKCS#12 packageExtensionsExtrac_t private keyExtract Private KeyExtract the private key of the certificate with the given internal id and saves it into the given fileExtract the private key of the selected item into a external fileFALSEFailed to initialize: %s File '%s' opened File imported successfully. Files in the directory don't belong to any supported CA format.Fingerprints: For removing the password-protection, the current database password must be supplied. GeneralGeneral Preferences - gnoMintGenerating CSRGenerating new DSA key pairGenerating new RSA key pairGet current status (opened file, no. of certificates, etc...)IPIP AddressId. Name Value Import a single file.Import a whole directory.Import selection - gnoMintIncorrect number of parameters. Insert new password (confirm):Insert new password:Insert passphrase (8 characters or more):Insert passphrase (confirm):Insert password (confirm):Insert password:Introduce number of months before expiration of the new certificate (0 to cancel)Introduce number of months before expiration of the new certification authorityInvalid command. Try 'help' for getting a list of recognized commands. Issuer Unique IDKey generation failedKey pair List the certificates in database. With option --see-revoked, lists also the revoked onesMD5 fingerprintMD5FINGERPRINTManage X.509 certificates and CAs, easily and graphicallyModulusMonths before certificate expiration:NameNew CA - gnoMintNew Certificate - gnoMintNew Diffie-Hellman parameters - gnoMintNew certificate request - gnoMintNone.Not AfterNot BeforeNumber of CSRs in file: %d Number of certificates in file: %d OCSP signingOK. You need to supply a password for protecting the private keys in the database, so nobody else but authorized people can use them. This password will be asked any time gnoMint will make use of any private key in database.Only the private key (crypted).Only the private key (uncrypted).Only the pu_blic part.Open CA databaseOpen _recentsOpen an existing databaseOpenSSL has returned the following error while trying to decypher the private key: %sOpening database %s...Operation cancelled.Operation cancelled. OrganizationOrganization (O)Organization Unit:Organization:Organizational Unit (OU)Organizational unitParametersPassword (confirm):Password changed successfullyPassword changed successfully. Password established successfullyPassword established successfully. Password protectPassword removed successfullyPassword removed successfully. Password:Path Length ConstraintPlease insert the database password:Please introduce password for `%s'Please, choose the file:Please, choose which part of the saved Certificate Signing Request you want to export:Please, enter current password:Please, enter new password:Please, insert the current database password (Empty to cancel): Private key %sPrivate key bit length:Private key exported successfullyPrivate key extracted successfully into file '%s' Private key for %sPrivate key type:Problem when creating '%s' CA database: %sProblem when importing '%s' fileProblem when importing the given file.Problem when opening '%s' CA databaseProblem when opening '%s' CA database Problem when opening new '%s' CA databaseProblem when opening new '%s' CA database Problem while calling to openssl for decyphering private key.RFC822 NameRSA PublicKeyRemember this password during this gnoMint sessionRevo_keRevocationRevokeRevoke the certificate with the given internal IDRevoked certificates visibilitySHA1FINGERPRINTSave CA database as...Save Diffie-Hellman parametersSave the current file with a different filenameSaving CSR in databaseSelect PEM file to importSelect directory to importSerialSerial NumberSerial numberSet the given program preferenceShow (this) help messageShow about messageShow program preferencesShow properties of the given CSRShow properties of the given certificateShow version informationSignSignatureSignature AlgorithmState or Province nameSyntax: %s TLS WWW ClientTLS WWW Client.TLS WWW ServerTLS Web clientTRUEThe current password you have entered doesn't match with the actual current database password.The current password you have entered doesn't match with the actual current database password.The file already exists, so it will be overwritten.The given CA id. is not validThe given CSR id. is not validThe given certificate id. is not validThe given password doesn't match the one used in the databaseThe given password doesn't match with the one used while crypting the file.The given preference id is not validThe introduced passphrases are distinct.The introduced passwords are distinct.The selected database has been created with a newer version of gnoMint than the currently installed.There was a problem while opening the directory certs/.There was a problem while opening the directory crl/.There was a problem while opening the directory keys/.There was a problem while opening the directory newcerts/.There was a problem while opening the directory req.There was an error while decrypting private key.There was an error while exporting certificate.There was an error while exporting private key.There was an error while exporting the certificate.There was an error while generating the PKCS#12 package.There was an error while getting private key.There was an error while getting revoked certificates.There was an error while getting the certificate and private key from the internal database.There was an error while password-protecting private key.There was an error while saving Diffie-Hellman parameters.There was an error while uncrypting private key.These are the provided new CA properties: This Certificate Signing Request will be deleted.This action requires using one or more private keys saved in the CA database. Please insert the database password.This certificate already exists in the database: cannot insert it twice.This certificate will be revoked.This operation cannot be undone. Are you sure? Yes/[No] Time stampingTo do. Feature not implemented yet.Translators: %s URIUnexpected errorUnpaired quotes Unsupported operation: you cannot generate a PKCS#12 for a CSR.ValidityValidity Validity: ValueVersionWhether the certificate requests should be visible.Whether the revoked certificates should be visible.Window sizeYou are about to create a Certificate Signing Request with these properties.You are about to create a new Certification Authority with these properties.You must supply the current database password before changing the password. _Certificates_Edit_Help_Import_New certificate database_No_Open certificate database_Revoked Certificates_Save certificate database as..._Save filename in the database for automatic loading_Sign_ViewgnoMintgnoMint X.509 CA ManagergnoMint is a program for creating and managing Certification Authorities, and their certificateslabelmay differmust be the samepage 3translator-creditsProject-Id-Version: gnomint Report-Msgid-Bugs-To: davefx@gmail.com PO-Revision-Date: 2010-04-02 04:45+0000 Last-Translator: Mario Blättermann Language-Team: German Language: de MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2010-08-11 09:00+0000 X-Generator: Launchpad (build Unknown) Aktiviert am: %s Läuft ab am: %s Bitlänge des Schlüssels: %d MD5-Fingerabdruck: %s SHA1-Fingerabdruck: %s Seriennummer: %s Typ: %s Eindeutige Kennung: %s Autoren: %s Das Passwort muss mindestens aus %d Zeichen bestehen Fehler. OK. %s Version %s %s (unbekannt)- Ein Zertifizierungsstellen-Verwalter0 Unterstützung für Gnome-Schlüsselbund %d Ausgegeben vonDer zugehörige geheime Schlüssel für diese Siganturanfrage wurde in einer externen Datei gespeichert.GültigkeitSignaturanfrage für Zertifikat in eine öffentliche Datei im PEM-Format exportieren.#Beschreibung#=================== Aktiviert amAktivierungZertifizierungsanfrage hinzufügen_Zertifikatanfrage hinzufügenAlgorithmusSind Sie sicher, dass Sie diese Signaturanfrage für ein Zertifikat widerrufen wollen?Sind Sie sicher, dass Sie dieses Zertifikat widerrufen wollen?Sind Sie sicher? Ja/[Nein] : Sind Sie sicher? [Ja]/Nein Automatischer Export von Zertifikaten in den GNOME-SchlüsselbundVerfügbare Befehle: Beide Teile.ZertifizierungsstelleVorgang der Erzeugung der Zertifizierungsstelle abgeschlossenErzeugung der Zertifizierungsstellen-Datenbank ist fehlgeschlagenZertifizierungsstellen-Datenbank wurde erfolgreich erzeugtSignaturanfrage konnte nicht gespeichert werdenSignaturanfrage wurde erfolgreich erzeugtErzeugung der Signaturanfrage ist fehlgeschlagenZertifikatZertifikatanfragen in Datenbank: Signaturanfrage wurde gelöscht. Signaturanfrage für Zertifikat: Zertifikat wurde erfolgreich exportiertErzeugung des Zertifikats ist fehlgeschlagenZertifikat-EigenschaftenZertifikat-Eigenschaften - gnoMintZertifikatzwecke: Zertifikat-Anfragen sind sichtbarZertifikat wurde widerrufen. Zertifikat wurde signiert. Signaturanfrage für Zertifikat wurde erfolgreich exportiertZertifikat benutzt: Zertifikat: Zertifikate in Datenbank: ZertifizierungsstelleZertifizierungsstellen-Passwort ändern - gnoMintPass_wort der Datenbank ändernPasswort für die aktuelle Datenbank ändernDatei des geheimen Schlüssels wählen. gnoMintStadtAktuelle Datei schließen und eine neue Datenbank mit dem angegebenen Dateinamen anlegenAktuelle Datei schließen und eine Datei mit dem angegebenen Namen öffnenDatenbank schließen und Programm beendenVoller Name (CN)In der angegebenen Datei konnte kein unterstütztes Format gefunden werdenDie Zertifizierungsanfrage konnte nicht importiert werden. Die Daenbank gab folgenden Fehler zurück: »%s«Das Zertifikat konnte nicht importiert werden. Die Daenbank gab folgenden Fehler zurück: »%s«Datei %s konnte nicht geöffnet werden. Bitte überprüfen Sie die Zugriffsrechte.Datei %s konnte nicht als geheimer RSA- oder DSA-Schlüssel erkannte werden.Land:Eine neue Datenbank erstellenNeue Zertifizierungsstellen-Datenbank erzeugenZertifizierungsstellen-Datenbank wird erzeugtErzeugungsvorgang wurde abgebrochenKritischGegenwärtig geöffnete Datei: %s Gegenwärtig IST die Datenbank durchein Passwort geschützt.Gegenwärtig ist die Datenbank nicht durch ein Passwort geschützt.DNS-NameDSAÖffentlicher DSA-SchlüsselDatenbank-Passwortschutz - gnoMintEinzelheitenDiffie-Hellman-Parameter wurden erstellt und erfolgreich in Datei »%s« gespeichert. Diffie-Hellman-Parameter wurden erfolgreich gespeichertDigitale SignaturOrdnernameOrdner wurde erfolgreich importiert. Wollen Sie irgeneine Eigenschaft des neuen Zertifikats ändern? Ja/[Nein] Wollen Sie noch etwas ändern? Ja/[Nein] Wollen Sie sie durch ein Passwort schützen? [Ja]/Nein Wollen Sie das Signieren fortsetzen? [Ja]/Nein Wollen Sie diesen Passwortschutz entfernen? Ja/[Nein] E_xportierenBitlänge des Schlüssels eingeben (muss ein ganzzahliges Vielfaches von 1024 sein)Land eingeben (C)Ort oder Stadt eingeben (L)Geben Sie das neue Passwort zur Bestätigung erneut ein:Organisation eingeben (O)Organisationseinheit eingeben (OU)Passwort eingeben - gnoMintBundesland oder Kanton eingeben (ST)Fehler beim Erzeugen des geheimen Schlüssels: %dFehler beim Exportieren der Signaturanfrage in eine PEM-Struktur.Fehler beim Exportieren des geheimen Schlüssels in eine PEM-Struktur.Fehler beim Initialisieren der Struktur des geheimen Schlüssels.Fehler beim Öffnen der Datei »%s«Fehler beim Kopieren der Daten aus der Signaturanfrage in die ZertifikatsstrukturFehler beim Initialisieren der Struktur des ZertifikatsFehler beim Initialisieren der CRT-StrukturFehler beim Setzen der AktivierungszeitFehler beim Setzen der basicConstraint-ErweiterungFehler beim Setzen der Seriennummer des ZertifikatsFehler beim Setzen der Version des ZertifikatsFehler beim Setzen der AblaufzeitFehler beim Setzen der keyUsage-ErweiterungFehler beim Ändern des Datenbank-Passworts. Vorgang wurde abgebrochen.Fehler beim Ändern des Passworts der Datenbank. Der Vorgang wurde abgebrochen.Fehler beim Ermitteln des Passworts der Datenbank. Der Vorgang wurde abgebrochen.Fehler beim Entfernen des Datenbank-Passworts. Vorgang wurde abgebrochen.Fehler beim Löschen des Passworts der Datenbank. Der Vorgang wurde abgebrochen.Fehler beim Bestätigen der Signaturanfrage für ein Zertifikat.AblaufdatumLäuft ab amSignaturanfrage exportieren - gnoMintZertifikat exportierenSignaturanfrage für Zertifikat exportierenExport-OptionenGesamtes Zertifikat in einem PKCS#12-Paket exportierenErweiterungenGeheimen Schlüssel en_tpackenGeheimen Schlüssel entpackenDen geheimen Schlüssel des Zertifikats mit der angegebenen internen Kennung entpacken und in die angegebene Datei speichernGeheimen Schlüssel des gewählten Objekts in eine externe Datei entpackenFALSCHInitialisierung ist fehlgeschlagen: %s Datei »%s« wurde geöffnet Datei wurde erfolgreich importiert. Dateien im Ordner entsprechen keinem unterstützten Zertifizierungsstellen-Format.Fingerabdrücke: Zum Entfernen des Passwortschutzes muss das aktuelle Passwort der Datenbank eingegeben werden. AllgemeinAllgemeine Einstellungen - gnoMintSignaturanfrage wird erzeugtNeues DSA-Schlüsselpaar wird erzeugtNeues RSA-Schlüsselpaar wird erzeugtAktuellen Status ermitteln (geöffnete Datei, Anzahl der Zertifikate usw.)IPIP-AdresseId. Name Wert Eine einzelne Datei importieren.Einen ganzen Ordner importieren.Importauswahl - gnoMintFalsche Anzahl der Parameter. Neues Passwort eingeben (Bestätigung):Neues Passwort eingeben:Kennwort eingeben (mindestens 8 Zeichen):Kennwort eingeben (Bestätigung):Passwort eingeben (Bestätigung):Passwort eingeben:Geben Sie die Anzahl der Monate bis zum Ablauf des neuen Zertifikats ein (0 für abbrechen)Geben Sie die Anzahl der Monate bis zum Ablauf der neuen Zertifizierungsstelle anUngültiger Befehl. Geben Sie »help« ein, um eine Liste der möglichen Befehle zu erhalten. Eindeutige AusstellerkennungSchlüsselerzeugung ist fehlgeschlagenSchlüsselpaar Liste der Zertifikate in der Datenbank. Die Option --see-revoked listet auch die widerrufenen Zertifikate aufMD5-FingerabdruckMD5FINGERPRINTX.509-Zertifikate und Zertifizierungsstellen verwalten, einfach und grafischModulusMonate vor Zertifikatablauf:NameNeue Zertifizierungsstelle - gnoMintNeues Zertifikat - gnoMintNeue Diffie-Hellman-Parameter - gnoMintNeue Zertifikatanfrage - gnoMintNichts.Nicht nachNicht vorAnzahl der Siganturanfragen in Datei: %d Anzahl der Zertifikate in Datei: %d OCSP-SignaturOK. Sie müssen zum Schutz der geheimen Schlüssel in der Datenbank ein Passwort eingeben, so dass niemand anderes als zugelassene Personen diese benutzen können. Dieses Passwort wird jedesmal abgefragt, wenn gnoMint einen geheimen Schlüssel in der Datenbank benutzen will.Nur den geheimen Schlüssel (verschlüsselt)Nur den geheimen Schlüssel (unverschlüsselt)Nur den ö_ffentlichen Teil.Zertifizierungsstellen-Datenbank öffnen_Zuletzt geöffnetEine existierende Datenbank öffnenOpenSSL gab folgenden Fehler beim Versuch zurück, den geheimen Schlüssel zu entschlüsseln: %sDatenbank »%s« wird geöffnet …Vorgang wurde abgebrochen.Vorgang wurde abgebrochen. OrganisationOrganisation (O)Organisationseinheit:Organisation:Organisationseinheit (OU)OrganisationseinheitParameterPasswort (bestätigen):Das Passwort wurde erfolgreich geändertPasswort wurde erfolgreich geändert. Passwort wurde erfolgreich ermitteltPasswort wurde erfolgreich festgelegt. PasswortschutzPasswort wurde erfolgreich gelöschtPasswort wurde erfolgreich entfernt. Passwort:Beschränkung der PfadlängeBitte geben Sie das Datenbankpasswort ein:Bitte Passwort für »%s« eingebenBitte Datei auswählen:Bitte wählen Sie den Teil der gespeicherten Siganturanfrage aus, den Sie exportieren wollen:Bitte geben Sie das aktuelle Passwort ein:Bitte geben Sia das neue Passwort ein:Bitte geben Sie das aktuelle Passwort der Datenbank ein (leer lassen, um abzubrechen): Geheimer Schlüssel %sLänge des geheimen Schlüssels in BitGeheimer Schlüssel wurde erfolgreich exportiertGeheimer Schlüssel wurde erfolgreich in Datei »%s« entpackt Geheimer Schlüssel für %sTyp des geheimen Schlüssels:Problem beim Erzeugen der Zertifizierungsstellen-Datenbank »%s«: %sProblem beim Importieren der Datei »%s«Problem beim Importieren der angegebenen Datei.Problem beim Öffnen der Zertifizierungsstellen-Datenbank »%s«Problem beim Öffnen der Zertifizierungsstellen-Datenbank »%s« Problem beim Öffnen der neuen Zertifizierungsstellen-Datenbank »%s«Problem beim Öffnen der neuen Zertifizierungsstellen-Datenbank »%s« Problem beim Aufruf von openssl für die Verarbeitung des geheimen Schlüssels.RFC822-NameÖffentlicher RSA-SchlüsselAn dieses Passwort während der gnoMint-Sitzung erinnernWider_rufenWiderrufWiderrufenDas Zertifikat mit der angegebenen internen Kennung widerrufenWiderrufene Zertifikate sind sichtbarSHA1FINGERPRINTZertifizierungsstellen-Datenbank speichern unter …Diffie-Hellman-Parameter speichernDie aktuelle Datei unter einem anderen Namen speichernSignaturanfrage wird in Datenbank gespeichertPEM-Datei zum Importieren auswählenOrdner zum Importieren auswählenSeriellSeriennummerSeriennummerDie gewählte Programmeinstellung festlegen(Diese) Hilfemeldung anzeigenInfo-Meldung anzeigenProgrammeinstellungen anzeigenEigenschaften der angegebenen Signaturanfrage anzeigenEigenschaften des angegebenen Zertifikats anzeigenVersionsinformation anzeigenSignierenSignaturSignatur-AlgorithmusName des Bundeslandes/KantonsSyntax: %s TLS-WebclientTLS-Webclient.TLS-WebserverTLS-WebclientWAHRDas aktuell eingebene Passwort stimmt nicht mit dem aktuellen Passwort der Datenbank überein.Das von Ihnen eingegebene Passwort stimmt nicht mit dem derzeit für die Datenbank geltenden Passwort überein.Die Datei existiert bereits und wird überschrieben werden.Die angegebene Kennung der Zertifizierungsstelle ist ungültigDie angegebene Kennung der Siganturanfrage ist ungültigDie angegebene Zertifikatkennung ist ungültigDas angegebene Passwort stimmt nicht mit dem in der Datenbank verwendeten Passwort übereinDas angegebene Passwort stimmt nicht mit demjenigen überein, das zur Verschlüsselung der Datei verwendet wurde.Die angegebene Einstellungskennung ist ungültigDie eingegebenen Kennwörter sind unterschiedlich.Die eingegebenen Passwörter sind unterschiedlich.Die ausgewählte Datenbank wurde mit einer neueren Version von gnoMint erzeugt, als die gegenwärtig installierte Version.Beim Öffnen des Ordners certs/ ist ein Fehler aufgetreten.Beim Öffnen des Ordners crl/ ist ein Fehler aufgetreten.Beim Öffnen des Ordners keys/ ist ein Fehler aufgetreten.Beim Öffnen des Ordners newcerts/ ist ein Fehler aufgetreten.Beim Öffnen des Ordners req/ ist ein Fehler aufgetreten.Beim Entschlüsseln des geheimen Schlüssels ist ein Fehler aufgetreten.Beim Export des Zertifikats ist ein Fehler aufgetreten.Beim Exportieren des geheimen Schlüssels ist ein Fehler aufgetreten.Beim Exportieren des Zertifikats ist ein Fehler aufgetreten.Beim Erstellen des PKCS#12-Pakets ist ein Fehler aufgetreten.Beim Erhalten des geheimen Schlüssels ist ein Fehler aufgetreten.Fehler beim Erhalten der widerrufenen Zertifikate.Beim Holen des Zertifikats und geheimen Schlüssels aus der internen Datenbank ist ein Fehler aufgetreten.Beim Schützen des geheimen Schlüssels durch ein Passwort ist ein Fehler aufgetreten.Beim Speichern der Diffie-Hellman-Parameter ist ein Fehler aufgetreten.Beim Entschlüsseln des geheimen Schlüssels ist ein Fehler aufgetreten.Dies sind die Eigenschaften der neuen Zertifizierungsstelle: Diese Signaturanfrage für ein Zertifikat wird gelöscht werden.Für diese Aktion werden ein oder mehrere private Schlüssel benötigt, die in der Zertifizierungsstellen-Datenbank gespeichert sind. Bitte geben Sie das Passwort für die Datenbank ein.Dieses Zertikat existiert bereits in der Datenbank. Es kann nicht nochmals eingefügt werden.Dieses Zertifikat wird widerrufen werden.Dieser Vorgang kann nicht rückgängig gemacht werden. Sind Sie sicher? Ja/[Nein] ZeitstempelDieses Funktionsmerkmal ist noch nicht implementiert.Übersetzer: %s AdresseUnerwarteter FehlerNicht übereinstimmende Anführungszeichen Nicht unterstützter Vorgang: Sie können kein PKCS#12 für eine Signaturanfrage erstellen.GültigkeitGültigkeit Gültigkeit: WertVersionLegt fest, ob die Zertifikatanfragen sichtbar sein sollen.Legt fest, ob die widerrufenen Zertifikate sichtbar sein sollen.FenstergrößeSie sind dabei, eine Signaturanfrage für ein Zertifikat mit den folgenden Parametern zu erstellen.Sie sind dabei, eine neue Zertfizierungsstelle mit den folgenden Eigenschaften zu erstellen:Sie müssen das aktuelle Datenbank-Passwort eingeben, bevor das Passwort geändert werden kann. _Zertifikate_Bearbeiten_Hilfe_Importieren_Neue Zertifikat-Datenbank_NeinZertifikat-Datenbank ö_ffnenWider_rufene ZertifikateZertifikat-Datenbank speichern _unterDateiname in der Datenbank für automatisches Laden _speichern_Signieren_AnsichtgnoMintgnoMint X.509 Zertifizierungsstellen-VerwaltunggnoMint ist ein Programm zum Erzeugen und Verwalten von Zertifizierungsstellen und deren ZertifikatenBezeichnungkann unterschiedlich seinmuss gleich seinSeite 3Launchpad Contributions: David Marín https://launchpad.net/~davefx Gregor Goldbach https://launchpad.net/~glauschwuffel Mario Blättermann https://launchpad.net/~mariobl-freenet Michael Honsel https://launchpad.net/~lesnohgnomint-1.6.4/po/Makefile.in.in0000644000000000000000000004225115212761270015032 0ustar00rootroot# Makefile for PO directory in any package using GNU gettext. # Copyright (C) 1995-1997, 2000-2007, 2009-2010 by Ulrich Drepper # # Copying and distribution of this file, with or without modification, # are permitted in any medium without royalty provided the copyright # notice and this notice are preserved. This file is offered as-is, # without any warranty. # # Origin: gettext-0.19.8 GETTEXT_MACRO_VERSION = 0.19 PACKAGE = @PACKAGE@ VERSION = @VERSION@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ SED = @SED@ SHELL = /bin/sh @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ datarootdir = @datarootdir@ datadir = @datadir@ localedir = @localedir@ gettextsrcdir = $(datadir)/gettext/po INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ # We use $(mkdir_p). # In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as # "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions, # @install_sh@ does not start with $(SHELL), so we add it. # In automake >= 1.10, @mkdir_p@ is derived from ${MKDIR_P}, which is defined # either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake # versions, $(mkinstalldirs) and $(install_sh) are unused. mkinstalldirs = $(SHELL) @install_sh@ -d install_sh = $(SHELL) @install_sh@ MKDIR_P = @MKDIR_P@ mkdir_p = @mkdir_p@ # When building gettext-tools, we prefer to use the built programs # rather than installed programs. However, we can't do that when we # are cross compiling. CROSS_COMPILING = @CROSS_COMPILING@ GMSGFMT_ = @GMSGFMT@ GMSGFMT_no = @GMSGFMT@ GMSGFMT_yes = @GMSGFMT_015@ GMSGFMT = $(GMSGFMT_$(USE_MSGCTXT)) MSGFMT_ = @MSGFMT@ MSGFMT_no = @MSGFMT@ MSGFMT_yes = @MSGFMT_015@ MSGFMT = $(MSGFMT_$(USE_MSGCTXT)) XGETTEXT_ = @XGETTEXT@ XGETTEXT_no = @XGETTEXT@ XGETTEXT_yes = @XGETTEXT_015@ XGETTEXT = $(XGETTEXT_$(USE_MSGCTXT)) MSGMERGE = msgmerge MSGMERGE_UPDATE = @MSGMERGE@ --update MSGINIT = msginit MSGCONV = msgconv MSGFILTER = msgfilter POFILES = @POFILES@ GMOFILES = @GMOFILES@ UPDATEPOFILES = @UPDATEPOFILES@ DUMMYPOFILES = @DUMMYPOFILES@ DISTFILES.common = Makefile.in.in remove-potcdate.sin \ $(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3) DISTFILES = $(DISTFILES.common) Makevars POTFILES.in \ $(POFILES) $(GMOFILES) \ $(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3) POTFILES = \ CATALOGS = @CATALOGS@ POFILESDEPS_ = $(srcdir)/$(DOMAIN).pot POFILESDEPS_yes = $(POFILESDEPS_) POFILESDEPS_no = POFILESDEPS = $(POFILESDEPS_$(PO_DEPENDS_ON_POT)) DISTFILESDEPS_ = update-po DISTFILESDEPS_yes = $(DISTFILESDEPS_) DISTFILESDEPS_no = DISTFILESDEPS = $(DISTFILESDEPS_$(DIST_DEPENDS_ON_UPDATE_PO)) # Makevars gets inserted here. (Don't remove this line!) .SUFFIXES: .SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update .po.mo: @echo "$(MSGFMT) -c -o $@ $<"; \ $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@ .po.gmo: @lang=`echo $* | sed -e 's,.*/,,'`; \ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o $${lang}.gmo $${lang}.po"; \ cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo .sin.sed: sed -e '/^#/d' $< > t-$@ mv t-$@ $@ all: all-@USE_NLS@ all-yes: stamp-po all-no: # Ensure that the gettext macros and this Makefile.in.in are in sync. CHECK_MACRO_VERSION = \ test "$(GETTEXT_MACRO_VERSION)" = "@GETTEXT_MACRO_VERSION@" \ || { echo "*** error: gettext infrastructure mismatch: using a Makefile.in.in from gettext version $(GETTEXT_MACRO_VERSION) but the autoconf macros are from gettext version @GETTEXT_MACRO_VERSION@" 1>&2; \ exit 1; \ } # $(srcdir)/$(DOMAIN).pot is only created when needed. When xgettext finds no # internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because # we don't want to bother translators with empty POT files). We assume that # LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty. # In this case, stamp-po is a nop (i.e. a phony target). # stamp-po is a timestamp denoting the last time at which the CATALOGS have # been loosely updated. Its purpose is that when a developer or translator # checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS, # "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent # invocations of "make" will do nothing. This timestamp would not be necessary # if updating the $(CATALOGS) would always touch them; however, the rule for # $(POFILES) has been designed to not touch files that don't need to be # changed. stamp-po: $(srcdir)/$(DOMAIN).pot @$(CHECK_MACRO_VERSION) test ! -f $(srcdir)/$(DOMAIN).pot || \ test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES) @test ! -f $(srcdir)/$(DOMAIN).pot || { \ echo "touch stamp-po" && \ echo timestamp > stamp-poT && \ mv stamp-poT stamp-po; \ } # Note: Target 'all' must not depend on target '$(DOMAIN).pot-update', # otherwise packages like GCC can not be built if only parts of the source # have been downloaded. # This target rebuilds $(DOMAIN).pot; it is an expensive operation. # Note that $(DOMAIN).pot is not touched if it doesn't need to be changed. # The determination of whether the package xyz is a GNU one is based on the # heuristic whether some file in the top level directory mentions "GNU xyz". # If GNU 'find' is available, we avoid grepping through monster files. $(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed package_gnu="$(PACKAGE_GNU)"; \ test -n "$$package_gnu" || { \ if { if (LC_ALL=C find --version) 2>/dev/null | grep GNU >/dev/null; then \ LC_ALL=C find -L $(top_srcdir) -maxdepth 1 -type f \ -size -10000000c -exec grep 'GNU @PACKAGE@' \ /dev/null '{}' ';' 2>/dev/null; \ else \ LC_ALL=C grep 'GNU @PACKAGE@' $(top_srcdir)/* 2>/dev/null; \ fi; \ } | grep -v 'libtool:' >/dev/null; then \ package_gnu=yes; \ else \ package_gnu=no; \ fi; \ }; \ if test "$$package_gnu" = "yes"; then \ package_prefix='GNU '; \ else \ package_prefix=''; \ fi; \ if test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT'@'; then \ msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \ else \ msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \ fi; \ case `$(XGETTEXT) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].* | 0.16 | 0.16.[0-1]*) \ $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \ --files-from=$(srcdir)/POTFILES.in \ --copyright-holder='$(COPYRIGHT_HOLDER)' \ --msgid-bugs-address="$$msgid_bugs_address" \ ;; \ *) \ $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \ --files-from=$(srcdir)/POTFILES.in \ --copyright-holder='$(COPYRIGHT_HOLDER)' \ --package-name="$${package_prefix}@PACKAGE@" \ --package-version='@VERSION@' \ --msgid-bugs-address="$$msgid_bugs_address" \ ;; \ esac test ! -f $(DOMAIN).po || { \ if test -f $(srcdir)/$(DOMAIN).pot-header; then \ sed -e '1,/^#$$/d' < $(DOMAIN).po > $(DOMAIN).1po && \ cat $(srcdir)/$(DOMAIN).pot-header $(DOMAIN).1po > $(DOMAIN).po; \ rm -f $(DOMAIN).1po; \ fi; \ if test -f $(srcdir)/$(DOMAIN).pot; then \ sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \ sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \ if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \ rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \ else \ rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \ mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ fi; \ else \ mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ fi; \ } # This rule has no dependencies: we don't need to update $(DOMAIN).pot at # every "make" invocation, only create it when it is missing. # Only "make $(DOMAIN).pot-update" or "make dist" will force an update. $(srcdir)/$(DOMAIN).pot: $(MAKE) $(DOMAIN).pot-update # This target rebuilds a PO file if $(DOMAIN).pot has changed. # Note that a PO file is not touched if it doesn't need to be changed. $(POFILES): $(POFILESDEPS) @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \ if test -f "$(srcdir)/$${lang}.po"; then \ test -f $(srcdir)/$(DOMAIN).pot || $(MAKE) $(srcdir)/$(DOMAIN).pot; \ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ echo "$${cdcmd}$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot"; \ cd $(srcdir) \ && { case `$(MSGMERGE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \ $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) $${lang}.po $(DOMAIN).pot;; \ *) \ $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot;; \ esac; \ }; \ else \ $(MAKE) $${lang}.po-create; \ fi install: install-exec install-data install-exec: install-data: install-data-@USE_NLS@ if test "$(PACKAGE)" = "gettext-tools"; then \ $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ for file in $(DISTFILES.common) Makevars.template; do \ $(INSTALL_DATA) $(srcdir)/$$file \ $(DESTDIR)$(gettextsrcdir)/$$file; \ done; \ for file in Makevars; do \ rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ done; \ else \ : ; \ fi install-data-no: all install-data-yes: all @catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ dir=$(localedir)/$$lang/LC_MESSAGES; \ $(mkdir_p) $(DESTDIR)$$dir; \ if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \ $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \ echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \ for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ if test -n "$$lc"; then \ if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ for file in *; do \ if test -f $$file; then \ ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ fi; \ done); \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ else \ if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ :; \ else \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ fi; \ fi; \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \ fi; \ done; \ done install-strip: install installdirs: installdirs-exec installdirs-data installdirs-exec: installdirs-data: installdirs-data-@USE_NLS@ if test "$(PACKAGE)" = "gettext-tools"; then \ $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ else \ : ; \ fi installdirs-data-no: installdirs-data-yes: @catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ dir=$(localedir)/$$lang/LC_MESSAGES; \ $(mkdir_p) $(DESTDIR)$$dir; \ for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ if test -n "$$lc"; then \ if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ for file in *; do \ if test -f $$file; then \ ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ fi; \ done); \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ else \ if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ :; \ else \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ fi; \ fi; \ fi; \ done; \ done # Define this as empty until I found a useful application. installcheck: uninstall: uninstall-exec uninstall-data uninstall-exec: uninstall-data: uninstall-data-@USE_NLS@ if test "$(PACKAGE)" = "gettext-tools"; then \ for file in $(DISTFILES.common) Makevars.template; do \ rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ done; \ else \ : ; \ fi uninstall-data-no: uninstall-data-yes: catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ done; \ done check: all info dvi ps pdf html tags TAGS ctags CTAGS ID: mostlyclean: rm -f remove-potcdate.sed rm -f stamp-poT rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po rm -fr *.o clean: mostlyclean distclean: clean rm -f Makefile Makefile.in POTFILES *.mo maintainer-clean: distclean @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." rm -f stamp-po $(GMOFILES) distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) dist distdir: test -z "$(DISTFILESDEPS)" || $(MAKE) $(DISTFILESDEPS) @$(MAKE) dist2 # This is a separate target because 'update-po' must be executed before. dist2: stamp-po $(DISTFILES) dists="$(DISTFILES)"; \ if test "$(PACKAGE)" = "gettext-tools"; then \ dists="$$dists Makevars.template"; \ fi; \ if test -f $(srcdir)/$(DOMAIN).pot; then \ dists="$$dists $(DOMAIN).pot stamp-po"; \ fi; \ if test -f $(srcdir)/ChangeLog; then \ dists="$$dists ChangeLog"; \ fi; \ for i in 0 1 2 3 4 5 6 7 8 9; do \ if test -f $(srcdir)/ChangeLog.$$i; then \ dists="$$dists ChangeLog.$$i"; \ fi; \ done; \ if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \ for file in $$dists; do \ if test -f $$file; then \ cp -p $$file $(distdir) || exit 1; \ else \ cp -p $(srcdir)/$$file $(distdir) || exit 1; \ fi; \ done update-po: Makefile $(MAKE) $(DOMAIN).pot-update test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES) $(MAKE) update-gmo # General rule for creating PO files. .nop.po-create: @lang=`echo $@ | sed -e 's/\.po-create$$//'`; \ echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \ exit 1 # General rule for updating PO files. .nop.po-update: @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \ if test "$(PACKAGE)" = "gettext-tools" && test "$(CROSS_COMPILING)" != "yes"; then PATH=`pwd`/../src:$$PATH; fi; \ tmpdir=`pwd`; \ echo "$$lang:"; \ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ echo "$${cdcmd}$(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \ cd $(srcdir); \ if { case `$(MSGMERGE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \ $(MSGMERGE) $(MSGMERGE_OPTIONS) -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \ *) \ $(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \ esac; \ }; then \ if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ rm -f $$tmpdir/$$lang.new.po; \ else \ if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ :; \ else \ echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ exit 1; \ fi; \ fi; \ else \ echo "msgmerge for $$lang.po failed!" 1>&2; \ rm -f $$tmpdir/$$lang.new.po; \ fi $(DUMMYPOFILES): update-gmo: Makefile $(GMOFILES) @: # Recreate Makefile by invoking config.status. Explicitly invoke the shell, # because execution permission bits may not work on the current file system. # Use @SHELL@, which is the shell determined by autoconf for the use by its # scripts, not $(SHELL) which is hardwired to /bin/sh and may be deficient. Makefile: Makefile.in.in Makevars $(top_builddir)/config.status @POMAKEFILEDEPS@ cd $(top_builddir) \ && @SHELL@ ./config.status $(subdir)/$@.in po-directories force: # Tell versions [3.59,3.63) of GNU make not to export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: gnomint-1.6.4/depcomp0000755000000000000000000005622415212761274013330 0ustar00rootroot#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2025-06-18.21; # UTC # Copyright (C) 1999-2025 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by 'PROGRAMS ARGS'. object Object file output by 'PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputting dependencies. libtool Whether libtool is used (yes/no). Report bugs to . GNU Automake home page: . General help using GNU software: . EOF exit $? ;; -v | --v*) echo "depcomp (GNU Automake) $scriptversion" exit $? ;; esac # Get the directory component of the given path, and save it in the # global variables '$dir'. Note that this directory component will # be either empty or ending with a '/' character. This is deliberate. set_dir_from () { case $1 in */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; *) dir=;; esac } # Get the suffix-stripped basename of the given path, and save it the # global variable '$base'. set_base_from () { base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` } # If no dependency file was actually created by the compiler invocation, # we still have to create a dummy depfile, to avoid errors with the # Makefile "include basename.Plo" scheme. make_dummy_depfile () { echo "#dummy" > "$depfile" } # Factor out some common post-processing of the generated depfile. # Requires the auxiliary global variable '$tmpdepfile' to be set. aix_post_process_depfile () { # If the compiler actually managed to produce a dependency file, # post-process it. if test -f "$tmpdepfile"; then # Each line is of the form 'foo.o: dependency.h'. # Do two passes, one to just change these to # $object: dependency.h # and one to simply output # dependency.h: # which is needed to avoid the deleted-header problem. { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" } > "$depfile" rm -f "$tmpdepfile" else make_dummy_depfile fi } # A tabulation character. tab=' ' # A newline character. nl=' ' # Character ranges might be problematic outside the C locale. # These definitions help. upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ lower=abcdefghijklmnopqrstuvwxyz alpha=${upper}${lower} if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Avoid interference from the environment. gccflag= dashmflag= # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then # This is just like msvisualcpp but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvisualcpp fi if test "$depmode" = msvc7msys; then # This is just like msvc7 but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvc7 fi if test "$depmode" = xlc; then # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. gccflag=-qmakedep=gcc,-MF depmode=gcc fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## Note that this doesn't just cater to obsolete pre-3.x GCC compilers. ## but also to in-use compilers like IBM xlc/xlC and the HP C compiler. ## (see the conditional assignment to $gccflag above). ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). Also, it might not be ## supported by the other compilers which use the 'gcc' depmode. ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The second -e expression handles DOS-style file names with drive # letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the "deleted header file" problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. ## Some versions of gcc put a space before the ':'. On the theory ## that the space means something, we add a space to the output as ## well. hp depmode also adds that space, but also prefixes the VPATH ## to the object. Take care to not repeat it in the output. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like '#:fec' to the end of the # dependency line. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ | tr "$nl" ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" ;; xlc) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts '$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else tmpdepfile1=$dir$base.u tmpdepfile2=$dir$base.u tmpdepfile3=$dir$base.u "$@" -M fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done aix_post_process_depfile ;; tcc) # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 # FIXME: That version still under development at the moment of writing. # Make that this statement remains true also for stable, released # versions. # It will wrap lines (doesn't matter whether long or short) with a # trailing '\', as in: # # foo.o : \ # foo.c \ # foo.h \ # # It will put a trailing '\' even on the last line, and will use leading # spaces rather than leading tabs (at least since its commit 0394caf7 # "Emit spaces for -MD"). "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. # We have to change lines of the first kind to '$object: \'. sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" # And for each line of the second kind, we have to emit a 'dep.h:' # dummy dependency, to avoid the deleted-header problem. sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" rm -f "$tmpdepfile" ;; ## The order of this option in the case statement is important, since the ## shell code in configure will try each of these formats in the order ## listed in this file. A plain '-MD' option would be understood by many ## compilers, so we must ensure this comes after the gcc and icc options. pgcc) # Portland's C compiler understands '-MD'. # Will always output deps to 'file.d' where file is the root name of the # source file under compilation, even if file resides in a subdirectory. # The object file name does not affect the name of the '.d' file. # pgcc 10.2 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using '\' : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... set_dir_from "$object" # Use the source, not the object, to determine the base name, since # that's sadly what pgcc will do too. set_base_from "$source" tmpdepfile=$base.d # For projects that build the same source file twice into different object # files, the pgcc approach of using the *source* file root name can cause # problems in parallel builds. Use a locking strategy to avoid stomping on # the same $tmpdepfile. lockdir=$base.d-lock trap " echo '$0: caught signal, cleaning up...' >&2 rmdir '$lockdir' exit 1 " 1 2 13 15 numtries=100 i=$numtries while test $i -gt 0; do # mkdir is a portable test-and-set. if mkdir "$lockdir" 2>/dev/null; then # This process acquired the lock. "$@" -MD stat=$? # Release the lock. rmdir "$lockdir" break else # If the lock is being held by a different process, wait # until the winning process is done or we timeout. while test -d "$lockdir" && test $i -gt 0; do sleep 1 i=`expr $i - 1` done fi i=`expr $i - 1` done trap - 1 2 13 15 if test $i -le 0; then echo "$0: failed to acquire lock after $numtries attempts" >&2 echo "$0: check lockdir '$lockdir'" >&2 exit 1 fi if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" # Add 'dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// s/$/:/ p }' "$tmpdepfile" >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in 'foo.d' instead, so we check for that too. # Subdirectories are respected. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then # Libtool generates 2 separate objects for the 2 libraries. These # two compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir$base.o.d # libtool 1.5 tmpdepfile2=$dir.libs/$base.o.d # Likewise. tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d "$@" -MD fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done # Same post-processing that is required for AIX mode. aix_post_process_depfile ;; msvc7) if test "$libtool" = yes; then showIncludes=-Wc,-showIncludes else showIncludes=-showIncludes fi "$@" $showIncludes > "$tmpdepfile" stat=$? grep -v '^Note: including file: ' "$tmpdepfile" if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The first sed program below extracts the file names and escapes # backslashes for cygpath. The second sed program outputs the file # name when reading, but also accumulates all include files in the # hold buffer in order to output them again at the end. This only # works with sed implementations that can handle large buffers. sed < "$tmpdepfile" -n ' /^Note: including file: *\(.*\)/ { s//\1/ s/\\/\\\\/g p }' | $cygpath_u | sort -u | sed -n ' s/ /\\ /g s/\(.*\)/'"$tab"'\1 \\/p s/.\(.*\) \\/\1:/ H $ { s/.*/'"$tab"'/ G p }' >> "$depfile" echo >> "$depfile" # make sure the fragment doesn't end with a backslash rm -f "$tmpdepfile" ;; msvc7msys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for ':' # in the target name. This is to cope with DOS-style filenames: # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. "$@" $dashmflag | sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this sed invocation # correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift cleared=no eat=no for arg do case $cleared in no) set ""; shift cleared=yes ;; esac if test $eat = yes; then eat=no continue fi case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -arch) eat=yes ;; -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix=`echo "$object" | sed 's/^.*\././'` touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" # makedepend may prepend the VPATH from the source file name to the object. # No need to regex-escape $object, excess matching of '.' is harmless. sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process the last invocation # correctly. Breaking it into two sed invocations is a workaround. sed '1,2d' "$tmpdepfile" \ | tr ' ' "$nl" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E \ | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi IFS=" " for arg do case "$arg" in -o) shift ;; $object) shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E 2>/dev/null | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" echo "$tab" >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; msvcmsys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp nil t) # time-stamp-start: "scriptversion=" # time-stamp-format: "%Y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: gnomint-1.6.4/TODO0000644000000000000000000000150415212761266012433 0ustar00rootrootTo-do list in gnoMint ===================== - Issues about certificates expiration: * Visual distinction * Checkings for avoiding the use of certificates later than their expiring date. (Perhaps allowing it in a hidden non-standard-compliant mode??) - Support for Issuer and Subject alternative names - Support for CRL distribution point - Allow deleting imported certificates (perhaps deleting whole certificate hierarchies). - Option to re-new certificate -> generate CSR from Cert. - While importing a certificate, detect if it corresponds to a previous CSR and, perhaps after asking, copy its private key as the private key of the new certificate. - Implement revoking causes, and CRL serial number. (Support for these subjects must be previously implemented in GnuTLS). gnomint-1.6.4/MAINTAINERS0000644000000000000000000000005115212761266013434 0ustar00rootrootDavid Marín Carreño gnomint-1.6.4/configure0000755000000000000000000240401415212761273013655 0ustar00rootroot#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.72 for gnoMint 1.6.4. # # Report bugs to <>. # # # Copyright (C) 1992-1996, 1998-2017, 2020-2023 Free Software Foundation, # Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case e in #( e) case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac ;; esac fi # Reset variables that may have inherited troublesome values from # the environment. # IFS needs to be set, to space, tab, and newline, in precisely that order. # (If _AS_PATH_WALK were called with IFS unset, it would have the # side effect of setting IFS to empty, thus disabling word splitting.) # Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl IFS=" "" $as_nl" PS1='$ ' PS2='> ' PS4='+ ' # Ensure predictable behavior from utilities with locale-dependent output. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # We cannot yet rely on "unset" to work, but we need these variables # to be unset--not just set to an empty or harmless value--now, to # avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct # also avoids known problems related to "unset" and subshell syntax # in other old shells (e.g. bash 2.01 and pdksh 5.2.14). for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH do eval test \${$as_var+y} \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done # Ensure that fds 0, 1, and 2 are open. if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as 'sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed 'exec'. printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case e in #( e) case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ) then : else case e in #( e) exitcode=1; echo positional parameters were not saved. ;; esac fi test x\$exitcode = x0 || exit 1 blah=\$(echo \$(echo blah)) test x\"\$blah\" = xblah || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null then : as_have_required=yes else case e in #( e) as_have_required=no ;; esac fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null then : else case e in #( e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null then : CONFIG_SHELL=$as_shell as_have_required=yes if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null then : break 2 fi fi done;; esac as_found=false done IFS=$as_save_IFS if $as_found then : else case e in #( e) if { test -f "$SHELL" || test -f "$SHELL.exe"; } && as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null then : CONFIG_SHELL=$SHELL as_have_required=yes fi ;; esac fi if test "x$CONFIG_SHELL" != x then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed 'exec'. printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno then : printf "%s\n" "$0: This script requires a shell more modern than all" printf "%s\n" "$0: the shells that I found on your system." if test ${ZSH_VERSION+y} ; then printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." else printf "%s\n" "$0: Please tell bug-autoconf@gnu.org and $0: about your system, including any error possibly output $0: before this message. Then install a modern shell, or $0: manually run the script under such a shell if you do $0: have one." fi exit 1 fi ;; esac fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null then : eval 'as_fn_append () { eval $1+=\$2 }' else case e in #( e) as_fn_append () { eval $1=\$$1\$2 } ;; esac fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null then : eval 'as_fn_arith () { as_val=$(( $* )) }' else case e in #( e) as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } ;; esac fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' t clear :clear s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } # Determine whether it's possible to make 'echo' print without a newline. # These variables are no longer used directly by Autoconf, but are AC_SUBSTed # for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac # For backward compatibility with old third-party macros, we provide # the shell variables $as_echo and $as_echo_n. New code should use # AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. as_echo='printf %s\n' as_echo_n='printf %s' rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. # In both cases, we have to default to 'cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated # Sed expression to map a string onto a valid variable name. as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" as_tr_sh="eval sed '$as_sed_sh'" # deprecated SHELL=${CONFIG_SHELL-/bin/sh} test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='gnoMint' PACKAGE_TARNAME='gnomint' PACKAGE_VERSION='1.6.4' PACKAGE_STRING='gnoMint 1.6.4' PACKAGE_BUGREPORT='' PACKAGE_URL='' # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_STDIO_H # include #endif #ifdef HAVE_STDLIB_H # include #endif #ifdef HAVE_STRING_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_header_c_list= ac_func_c_list= gt_needs= ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS GSETTINGS_RULES GLIB_COMPILE_SCHEMAS gsettingsschemadir GSETTINGS_DISABLE_SCHEMAS_COMPILE GLIB_GENMARSHAL GNOMINTCLI_LIBS GNOMINTCLI_CFLAGS WINSOCK_LIBS READLINE_LIBS GNOMINT_LIBS GNOMINT_CFLAGS LIBGCRYPT_LIBS LIBGCRYPT_CFLAGS LIBGCRYPT_CONFIG GPGRT_CONFIG SQLITE_LIBS SQLITE_CFLAGS PKG_CONFIG_LIBDIR PKG_CONFIG_PATH PKG_CONFIG POSUB LTLIBINTL LIBINTL INTLLIBS LTLIBICONV LIBICONV INTL_MACOSX_LIBS CPP XGETTEXT_EXTRA_OPTIONS MSGMERGE XGETTEXT_015 XGETTEXT GMSGFMT_015 MSGFMT_015 GMSGFMT MSGFMT GETTEXT_MACRO_VERSION USE_NLS GETTEXT_PACKAGE LIBOBJS LT_SYS_LIBRARY_PATH OTOOL64 OTOOL LIPO NMEDIT DSYMUTIL MANIFEST_TOOL RANLIB ac_ct_AR AR DLLTOOL OBJDUMP FILECMD NM ac_ct_DUMPBIN DUMPBIN LD FGREP EGREP GREP SED LIBTOOL LN_S am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__include DEPDIR OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC MAINT MAINTAINER_MODE_FALSE MAINTAINER_MODE_TRUE ACLOCAL_AMFLAGS host_os host_vendor host_cpu host build_os build_vendor build_cpu build am__xargs_n am__rm_f_notfound AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V AM_V CSCOPE ETAGS CTAGS am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir runstatedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL am__quote' ac_subst_files='' ac_user_opts=' enable_option_checking enable_silent_rules enable_maintainer_mode enable_dependency_tracking enable_static enable_shared enable_pic with_pic enable_fast_install enable_aix_soname with_aix_soname with_gnu_ld with_sysroot enable_libtool_lock enable_nls enable_rpath with_libiconv_prefix with_libintl_prefix with_libgcrypt_prefix enable_schemas_compile enable_debug enable_debug_signal ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS LT_SYS_LIBRARY_PATH CPP PKG_CONFIG PKG_CONFIG_PATH PKG_CONFIG_LIBDIR SQLITE_CFLAGS SQLITE_LIBS GNOMINT_CFLAGS GNOMINT_LIBS GNOMINTCLI_CFLAGS GNOMINTCLI_LIBS GLIB_COMPILE_SCHEMAS' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: '$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: '$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -runstatedir | --runstatedir | --runstatedi | --runstated \ | --runstate | --runstat | --runsta | --runst | --runs \ | --run | --ru | --r) ac_prev=runstatedir ;; -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ | --run=* | --ru=* | --r=*) runstatedir=$ac_optarg ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: '$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: '$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: '$ac_option' Try '$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: '$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: '$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but 'cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF 'configure' configures gnoMint 1.6.4 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print 'checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for '--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or '..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, 'make install' will install all the files in '$ac_default_prefix/bin', '$ac_default_prefix/lib' etc. You can specify an installation prefix other than '$ac_default_prefix' using '--prefix', for instance '--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/gnomint] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of gnoMint 1.6.4:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-silent-rules less verbose build output (undo: "make V=1") --disable-silent-rules verbose build output (undo: "make V=0") --disable-maintainer-mode disable make rules and dependencies not useful (and sometimes confusing) to the casual installer --enable-dependency-tracking do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build --enable-static[=PKGS] build static libraries [default=no] --enable-shared[=PKGS] build shared libraries [default=yes] --enable-pic[=PKGS] try to use only PIC/non-PIC objects [default=use both] --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --enable-aix-soname=aix|svr4|both shared library versioning (aka "SONAME") variant to provide on AIX, [default=aix]. --disable-libtool-lock avoid locking (might break parallel builds) --disable-nls do not use Native Language Support --disable-rpath do not hardcode runtime library paths --disable-schemas-compile Disable regeneration of gschemas.compiled on install --enable-debug debug default=no --enable-debug-signal debug signals sent default=no Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-sysroot[=DIR] Search for dependent libraries within DIR (or the compiler's sysroot if not specified). --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib --without-libiconv-prefix don't search for libiconv in includedir and libdir --with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib --without-libintl-prefix don't search for libintl in includedir and libdir --with-libgcrypt-prefix=PFX prefix where LIBGCRYPT is installed (optional) Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory LT_SYS_LIBRARY_PATH User-defined run-time library search path. CPP C preprocessor PKG_CONFIG path to pkg-config utility PKG_CONFIG_PATH directories to add to pkg-config's search path PKG_CONFIG_LIBDIR path overriding pkg-config's built-in search path SQLITE_CFLAGS C compiler flags for SQLITE, overriding pkg-config SQLITE_LIBS linker flags for SQLITE, overriding pkg-config GNOMINT_CFLAGS C compiler flags for GNOMINT, overriding pkg-config GNOMINT_LIBS linker flags for GNOMINT, overriding pkg-config GNOMINTCLI_CFLAGS C compiler flags for GNOMINTCLI, overriding pkg-config GNOMINTCLI_LIBS linker flags for GNOMINTCLI, overriding pkg-config GLIB_COMPILE_SCHEMAS value of glib_compile_schemas for gio-2.0, overriding pkg-config Use these variables to override the choices made by 'configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to <>. _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for configure.gnu first; this name is used for a wrapper for # Metaconfig's "Configure" on case-insensitive file systems. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF gnoMint configure 1.6.4 generated by GNU Autoconf 2.72 Copyright (C) 2023 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest.beam if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext then : ac_retval=0 else case e in #( e) printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 ;; esac fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext } then : ac_retval=0 else case e in #( e) printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 ;; esac fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 printf %s "checking for $2... " >&6; } if eval test \${$3+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO" then : eval "$3=yes" else case e in #( e) eval "$3=no" ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 printf %s "checking for $2... " >&6; } if eval test \${$3+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (void); below. */ #include #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (void); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main (void) { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval "$3=yes" else case e in #( e) eval "$3=no" ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ;; esac fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func # ac_fn_c_check_type LINENO TYPE VAR INCLUDES # ------------------------------------------- # Tests whether TYPE exists after having included INCLUDES, setting cache # variable VAR accordingly. ac_fn_c_check_type () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 printf %s "checking for $2... " >&6; } if eval test \${$3+y} then : printf %s "(cached) " >&6 else case e in #( e) eval "$3=no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main (void) { if (sizeof ($2)) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main (void) { if (sizeof (($2))) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : else case e in #( e) eval "$3=yes" ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_type # ac_fn_c_try_run LINENO # ---------------------- # Try to run conftest.$ac_ext, and return whether this succeeded. Assumes that # executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; } then : ac_retval=0 else case e in #( e) printf "%s\n" "$as_me: program exited with status $ac_status" >&5 printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status ;; esac fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err } then : ac_retval=0 else case e in #( e) printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 ;; esac fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp ac_configure_args_raw= for ac_arg do case $ac_arg in *\'*) ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append ac_configure_args_raw " '$ac_arg'" done case $ac_configure_args_raw in *$as_nl*) ac_safe_unquote= ;; *) ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab. ac_unsafe_a="$ac_unsafe_z#~" ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; esac cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by gnoMint $as_me 1.6.4, which was generated by GNU Autoconf 2.72. Invocation command line was $ $0$ac_configure_args_raw _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac printf "%s\n" "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Sanitize IFS. IFS=" "" $as_nl" # Save into config.log some information that might help in debugging. { echo printf "%s\n" "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo printf "%s\n" "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then printf "%s\n" "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then printf "%s\n" "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && printf "%s\n" "$as_me: caught signal $ac_signal" printf "%s\n" "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h printf "%s\n" "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. if test -n "$CONFIG_SITE"; then ac_site_files="$CONFIG_SITE" elif test "x$prefix" != xNONE; then ac_site_files="$prefix/share/config.site $prefix/etc/config.site" else ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi for ac_site_file in $ac_site_files do case $ac_site_file in #( */*) : ;; #( *) : ac_site_file=./$ac_site_file ;; esac if test -f "$ac_site_file" && test -r "$ac_site_file"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See 'config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 printf "%s\n" "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 printf "%s\n" "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Test code for whether the C compiler supports C89 (global declarations) ac_c_conftest_c89_globals=' /* Does the compiler advertise C89 conformance? Do not test the value of __STDC__, because some compilers set it to 0 while being otherwise adequately conformant. */ #if !defined __STDC__ # error "Compiler does not advertise C89 conformance" #endif #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */ struct buf { int x; }; struct buf * (*rcsopen) (struct buf *, struct stat *, int); static char *e (char **p, int i) { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* C89 style stringification. */ #define noexpand_stringify(a) #a const char *stringified = noexpand_stringify(arbitrary+token=sequence); /* C89 style token pasting. Exercises some of the corner cases that e.g. old MSVC gets wrong, but not very hard. */ #define noexpand_concat(a,b) a##b #define expand_concat(a,b) noexpand_concat(a,b) extern int vA; extern int vbee; #define aye A #define bee B int *pvA = &expand_concat(v,aye); int *pvbee = &noexpand_concat(v,bee); /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not \xHH hex character constants. These do not provoke an error unfortunately, instead are silently treated as an "x". The following induces an error, until -std is added to get proper ANSI mode. Curiously \x00 != x always comes out true, for an array size at least. It is necessary to write \x00 == 0 to get something that is true only with -std. */ int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) '\''x'\'' int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int), int, int);' # Test code for whether the C compiler supports C89 (body of main). ac_c_conftest_c89_main=' ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]); ' # Test code for whether the C compiler supports C99 (global declarations) ac_c_conftest_c99_globals=' /* Does the compiler advertise C99 conformance? */ #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L # error "Compiler does not advertise C99 conformance" #endif // See if C++-style comments work. #include extern int puts (const char *); extern int printf (const char *, ...); extern int dprintf (int, const char *, ...); extern void *malloc (size_t); extern void free (void *); // Check varargs macros. These examples are taken from C99 6.10.3.5. // dprintf is used instead of fprintf to avoid needing to declare // FILE and stderr. #define debug(...) dprintf (2, __VA_ARGS__) #define showlist(...) puts (#__VA_ARGS__) #define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) static void test_varargs_macros (void) { int x = 1234; int y = 5678; debug ("Flag"); debug ("X = %d\n", x); showlist (The first, second, and third items.); report (x>y, "x is %d but y is %d", x, y); } // Check long long types. #define BIG64 18446744073709551615ull #define BIG32 4294967295ul #define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) #if !BIG_OK #error "your preprocessor is broken" #endif #if BIG_OK #else #error "your preprocessor is broken" #endif static long long int bignum = -9223372036854775807LL; static unsigned long long int ubignum = BIG64; struct incomplete_array { int datasize; double data[]; }; struct named_init { int number; const wchar_t *name; double average; }; typedef const char *ccp; static inline int test_restrict (ccp restrict text) { // Iterate through items via the restricted pointer. // Also check for declarations in for loops. for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i) continue; return 0; } // Check varargs and va_copy. static bool test_varargs (const char *format, ...) { va_list args; va_start (args, format); va_list args_copy; va_copy (args_copy, args); const char *str = ""; int number = 0; float fnumber = 0; while (*format) { switch (*format++) { case '\''s'\'': // string str = va_arg (args_copy, const char *); break; case '\''d'\'': // int number = va_arg (args_copy, int); break; case '\''f'\'': // float fnumber = va_arg (args_copy, double); break; default: break; } } va_end (args_copy); va_end (args); return *str && number && fnumber; } ' # Test code for whether the C compiler supports C99 (body of main). ac_c_conftest_c99_main=' // Check bool. _Bool success = false; success |= (argc != 0); // Check restrict. if (test_restrict ("String literal") == 0) success = true; char *restrict newvar = "Another string"; // Check varargs. success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234); test_varargs_macros (); // Check flexible array members. struct incomplete_array *ia = malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); ia->datasize = 10; for (int i = 0; i < ia->datasize; ++i) ia->data[i] = i * 1.234; // Work around memory leak warnings. free (ia); // Check named initializers. struct named_init ni = { .number = 34, .name = L"Test wide string", .average = 543.34343, }; ni.number = 58; int dynamic_array[ni.number]; dynamic_array[0] = argv[0][0]; dynamic_array[ni.number - 1] = 543; // work around unused variable warnings ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\'' || dynamic_array[ni.number - 1] != 543); ' # Test code for whether the C compiler supports C11 (global declarations) ac_c_conftest_c11_globals=' /* Does the compiler advertise C11 conformance? */ #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L # error "Compiler does not advertise C11 conformance" #endif // Check _Alignas. char _Alignas (double) aligned_as_double; char _Alignas (0) no_special_alignment; extern char aligned_as_int; char _Alignas (0) _Alignas (int) aligned_as_int; // Check _Alignof. enum { int_alignment = _Alignof (int), int_array_alignment = _Alignof (int[100]), char_alignment = _Alignof (char) }; _Static_assert (0 < -_Alignof (int), "_Alignof is signed"); // Check _Noreturn. int _Noreturn does_not_return (void) { for (;;) continue; } // Check _Static_assert. struct test_static_assert { int x; _Static_assert (sizeof (int) <= sizeof (long int), "_Static_assert does not work in struct"); long int y; }; // Check UTF-8 literals. #define u8 syntax error! char const utf8_literal[] = u8"happens to be ASCII" "another string"; // Check duplicate typedefs. typedef long *long_ptr; typedef long int *long_ptr; typedef long_ptr long_ptr; // Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1. struct anonymous { union { struct { int i; int j; }; struct { int k; long int l; } w; }; int m; } v1; ' # Test code for whether the C compiler supports C11 (body of main). ac_c_conftest_c11_main=' _Static_assert ((offsetof (struct anonymous, i) == offsetof (struct anonymous, w.k)), "Anonymous union alignment botch"); v1.i = 2; v1.w.k = 5; ok |= v1.i != 5; ' # Test code for whether the C compiler supports C11 (complete). ac_c_conftest_c11_program="${ac_c_conftest_c89_globals} ${ac_c_conftest_c99_globals} ${ac_c_conftest_c11_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} ${ac_c_conftest_c99_main} ${ac_c_conftest_c11_main} return ok; } " # Test code for whether the C compiler supports C99 (complete). ac_c_conftest_c99_program="${ac_c_conftest_c89_globals} ${ac_c_conftest_c99_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} ${ac_c_conftest_c99_main} return ok; } " # Test code for whether the C compiler supports C89 (complete). ac_c_conftest_c89_program="${ac_c_conftest_c89_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} return ok; } " as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H" as_fn_append ac_header_c_list " stdlib.h stdlib_h HAVE_STDLIB_H" as_fn_append ac_header_c_list " string.h string_h HAVE_STRING_H" as_fn_append ac_header_c_list " inttypes.h inttypes_h HAVE_INTTYPES_H" as_fn_append ac_header_c_list " stdint.h stdint_h HAVE_STDINT_H" as_fn_append ac_header_c_list " strings.h strings_h HAVE_STRINGS_H" as_fn_append ac_header_c_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H" as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H" as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H" as_fn_append ac_header_c_list " sys/time.h sys_time_h HAVE_SYS_TIME_H" as_fn_append ac_func_c_list " alarm HAVE_ALARM" gt_needs="$gt_needs " # Auxiliary files required by this configure script. ac_aux_files="config.rpath ltmain.sh compile config.guess config.sub missing install-sh" # Locations in which to look for auxiliary files. ac_aux_dir_candidates="${srcdir}${PATH_SEPARATOR}${srcdir}/..${PATH_SEPARATOR}${srcdir}/../.." # Search for a directory containing all of the required auxiliary files, # $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates. # If we don't find one directory that contains all the files we need, # we report the set of missing files from the *first* directory in # $ac_aux_dir_candidates and give up. ac_missing_aux_files="" ac_first_candidate=: printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in $ac_aux_dir_candidates do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac as_found=: printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5 ac_aux_dir_found=yes ac_install_sh= for ac_aux in $ac_aux_files do # As a special case, if "install-sh" is required, that requirement # can be satisfied by any of "install-sh", "install.sh", or "shtool", # and $ac_install_sh is set appropriately for whichever one is found. if test x"$ac_aux" = x"install-sh" then if test -f "${as_dir}install-sh"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5 ac_install_sh="${as_dir}install-sh -c" elif test -f "${as_dir}install.sh"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5 ac_install_sh="${as_dir}install.sh -c" elif test -f "${as_dir}shtool"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5 ac_install_sh="${as_dir}shtool install -c" else ac_aux_dir_found=no if $ac_first_candidate; then ac_missing_aux_files="${ac_missing_aux_files} install-sh" else break fi fi else if test -f "${as_dir}${ac_aux}"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5 else ac_aux_dir_found=no if $ac_first_candidate; then ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}" else break fi fi fi done if test "$ac_aux_dir_found" = yes; then ac_aux_dir="$as_dir" break fi ac_first_candidate=false as_found=false done IFS=$as_save_IFS if $as_found then : else case e in #( e) as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 ;; esac fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. if test -f "${ac_aux_dir}config.guess"; then ac_config_guess="$SHELL ${ac_aux_dir}config.guess" fi if test -f "${ac_aux_dir}config.sub"; then ac_config_sub="$SHELL ${ac_aux_dir}config.sub" fi if test -f "$ac_aux_dir/configure"; then ac_configure="$SHELL ${ac_aux_dir}configure" fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&5 printf "%s\n" "$as_me: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was not set in the previous run" >&5 printf "%s\n" "$as_me: error: '$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' has changed since the previous run:" >&5 printf "%s\n" "$as_me: error: '$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&5 printf "%s\n" "$as_me: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: '$ac_old_val'" >&5 printf "%s\n" "$as_me: former value: '$ac_old_val'" >&2;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: '$ac_new_val'" >&5 printf "%s\n" "$as_me: current value: '$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run '${MAKE-make} distclean' and/or 'rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu PACKAGE_CODENAME="Tempered Anvil" printf "%s\n" "#define PACKAGE_CODENAME \"$PACKAGE_CODENAME\"" >>confdefs.h PACKAGE_COPYRIGHT="(c) 2006-2026 David Marín Carreño " PACKAGE_WEBSITE="https://github.com/davefx/gnoMint" PACKAGE_AUTHORS=$(awk 'NR>1{printf "\\n"}{printf "%s",$0}' AUTHORS) printf "%s\n" "#define PACKAGE_COPYRIGHT \"$PACKAGE_COPYRIGHT\"" >>confdefs.h printf "%s\n" "#define PACKAGE_WEBSITE \"$PACKAGE_WEBSITE\"" >>confdefs.h printf "%s\n" "#define PACKAGE_AUTHORS \"$PACKAGE_AUTHORS\"" >>confdefs.h am__api_version='1.18' # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 printf %s "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if test ${ac_cv_path_install+y} then : printf %s "(cached) " >&6 else case e in #( e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac # Account for fact that we put trailing slashes in our PATH walk. case $as_dir in #(( ./ | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir ;; esac fi if test ${ac_cv_path_install+y}; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 printf "%s\n" "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether sleep supports fractional seconds" >&5 printf %s "checking whether sleep supports fractional seconds... " >&6; } if test ${am_cv_sleep_fractional_seconds+y} then : printf %s "(cached) " >&6 else case e in #( e) if sleep 0.001 2>/dev/null then : am_cv_sleep_fractional_seconds=yes else case e in #( e) am_cv_sleep_fractional_seconds=no ;; esac fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_sleep_fractional_seconds" >&5 printf "%s\n" "$am_cv_sleep_fractional_seconds" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking filesystem timestamp resolution" >&5 printf %s "checking filesystem timestamp resolution... " >&6; } if test ${am_cv_filesystem_timestamp_resolution+y} then : printf %s "(cached) " >&6 else case e in #( e) # Default to the worst case. am_cv_filesystem_timestamp_resolution=2 # Only try to go finer than 1 sec if sleep can do it. # Don't try 1 sec, because if 0.01 sec and 0.1 sec don't work, # - 1 sec is not much of a win compared to 2 sec, and # - it takes 2 seconds to perform the test whether 1 sec works. # # Instead, just use the default 2s on platforms that have 1s resolution, # accept the extra 1s delay when using $sleep in the Automake tests, in # exchange for not incurring the 2s delay for running the test for all # packages. # am_try_resolutions= if test "$am_cv_sleep_fractional_seconds" = yes; then # Even a millisecond often causes a bunch of false positives, # so just try a hundredth of a second. The time saved between .001 and # .01 is not terribly consequential. am_try_resolutions="0.01 0.1 $am_try_resolutions" fi # In order to catch current-generation FAT out, we must *modify* files # that already exist; the *creation* timestamp is finer. Use names # that make ls -t sort them differently when they have equal # timestamps than when they have distinct timestamps, keeping # in mind that ls -t prints the *newest* file first. rm -f conftest.ts? : > conftest.ts1 : > conftest.ts2 : > conftest.ts3 # Make sure ls -t actually works. Do 'set' in a subshell so we don't # clobber the current shell's arguments. (Outer-level square brackets # are removed by m4; they're present so that m4 does not expand # ; be careful, easy to get confused.) if ( set X `ls -t conftest.ts[12]` && { test "$*" != "X conftest.ts1 conftest.ts2" || test "$*" != "X conftest.ts2 conftest.ts1"; } ); then :; else # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". printf "%s\n" ""Bad output from ls -t: \"`ls -t conftest.ts[12]`\""" >&5 { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "ls -t produces unexpected output. Make sure there is not a broken ls alias in your environment. See 'config.log' for more details" "$LINENO" 5; } fi for am_try_res in $am_try_resolutions; do # Any one fine-grained sleep might happen to cross the boundary # between two values of a coarser actual resolution, but if we do # two fine-grained sleeps in a row, at least one of them will fall # entirely within a coarse interval. echo alpha > conftest.ts1 sleep $am_try_res echo beta > conftest.ts2 sleep $am_try_res echo gamma > conftest.ts3 # We assume that 'ls -t' will make use of high-resolution # timestamps if the operating system supports them at all. if (set X `ls -t conftest.ts?` && test "$2" = conftest.ts3 && test "$3" = conftest.ts2 && test "$4" = conftest.ts1); then # # Ok, ls -t worked. If we're at a resolution of 1 second, we're done, # because we don't need to test make. make_ok=true if test $am_try_res != 1; then # But if we've succeeded so far with a subsecond resolution, we # have one more thing to check: make. It can happen that # everything else supports the subsecond mtimes, but make doesn't; # notably on macOS, which ships make 3.81 from 2006 (the last one # released under GPLv2). https://bugs.gnu.org/68808 # # We test $MAKE if it is defined in the environment, else "make". # It might get overridden later, but our hope is that in practice # it does not matter: it is the system "make" which is (by far) # the most likely to be broken, whereas if the user overrides it, # probably they did so with a better, or at least not worse, make. # https://lists.gnu.org/archive/html/automake/2024-06/msg00051.html # # Create a Makefile (real tab character here): rm -f conftest.mk echo 'conftest.ts1: conftest.ts2' >conftest.mk echo ' touch conftest.ts2' >>conftest.mk # # Now, running # touch conftest.ts1; touch conftest.ts2; make # should touch ts1 because ts2 is newer. This could happen by luck, # but most often, it will fail if make's support is insufficient. So # test for several consecutive successes. # # (We reuse conftest.ts[12] because we still want to modify existing # files, not create new ones, per above.) n=0 make=${MAKE-make} until test $n -eq 3; do echo one > conftest.ts1 sleep $am_try_res echo two > conftest.ts2 # ts2 should now be newer than ts1 if $make -f conftest.mk | grep 'up to date' >/dev/null; then make_ok=false break # out of $n loop fi n=`expr $n + 1` done fi # if $make_ok; then # Everything we know to check worked out, so call this resolution good. am_cv_filesystem_timestamp_resolution=$am_try_res break # out of $am_try_res loop fi # Otherwise, we'll go on to check the next resolution. fi done rm -f conftest.ts? # (end _am_filesystem_timestamp_resolution) ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_filesystem_timestamp_resolution" >&5 printf "%s\n" "$am_cv_filesystem_timestamp_resolution" >&6; } # This check should not be cached, as it may vary across builds of # different projects. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 printf %s "checking whether build environment is sane... " >&6; } # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). am_build_env_is_sane=no am_has_slept=no rm -f conftest.file for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file if ( set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi test "$2" = conftest.file ); then am_build_env_is_sane=yes break fi # Just in case. sleep "$am_cv_filesystem_timestamp_resolution" am_has_slept=yes done { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_build_env_is_sane" >&5 printf "%s\n" "$am_build_env_is_sane" >&6; } if test "$am_build_env_is_sane" = no; then as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if test -e conftest.file || grep 'slept: no' conftest.file >/dev/null 2>&1 then : else case e in #( e) ( sleep "$am_cv_filesystem_timestamp_resolution" ) & am_sleep_pid=$! ;; esac fi rm -f conftest.file test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was 's,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`printf "%s\n" "$program_transform_name" | sed "$ac_script"` # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` if test x"${MISSING+set}" != xset; then MISSING="\${SHELL} '$am_aux_dir/missing'" fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 printf "%s\n" "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_STRIP+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 printf "%s\n" "$STRIP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_STRIP+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 printf "%s\n" "$ac_ct_STRIP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a race-free mkdir -p" >&5 printf %s "checking for a race-free mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if test ${ac_cv_path_mkdir+y} then : printf %s "(cached) " >&6 else case e in #( e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext" || continue case `"$as_dir$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir ('*'coreutils) '* | \ *'BusyBox '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS ;; esac fi test -d ./--version && rmdir ./--version if test ${ac_cv_path_mkdir+y}; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use plain mkdir -p, # in the hope it doesn't have the bugs of ancient mkdir. MKDIR_P='mkdir -p' fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 printf "%s\n" "$MKDIR_P" >&6; } for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_AWK+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 printf "%s\n" "$AWK" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$AWK" && break done { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 printf %s "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`printf "%s\n" "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval test \${ac_cv_prog_make_${ac_make}_set+y} then : printf %s "(cached) " >&6 else case e in #( e) cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make ;; esac fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } SET_MAKE= else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AM_DEFAULT_VERBOSITY=1 # Check whether --enable-silent-rules was given. if test ${enable_silent_rules+y} then : enableval=$enable_silent_rules; fi am_make=${MAKE-make} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 printf %s "checking whether $am_make supports nested variables... " >&6; } if test ${am_cv_make_support_nested_variables+y} then : printf %s "(cached) " >&6 else case e in #( e) if printf "%s\n" 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 printf "%s\n" "$am_cv_make_support_nested_variables" >&6; } AM_BACKSLASH='\' am__rm_f_notfound= if (rm -f && rm -fr && rm -rf) 2>/dev/null then : else case e in #( e) am__rm_f_notfound='""' ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking xargs -n works" >&5 printf %s "checking xargs -n works... " >&6; } if test ${am_cv_xargs_n_works+y} then : printf %s "(cached) " >&6 else case e in #( e) if test "`echo 1 2 3 | xargs -n2 echo`" = "1 2 3" then : am_cv_xargs_n_works=yes else case e in #( e) am_cv_xargs_n_works=no ;; esac fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_xargs_n_works" >&5 printf "%s\n" "$am_cv_xargs_n_works" >&6; } if test "$am_cv_xargs_n_works" = yes then : am__xargs_n='xargs -n' else case e in #( e) am__xargs_n='am__xargs_n () { shift; sed "s/ /\\n/g" | while read am__xargs_n_arg; do "" "$am__xargs_n_arg"; done; }' ;; esac fi if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='gnomint' VERSION='1.6.4' printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h printf "%s\n" "#define VERSION \"$VERSION\"" >>confdefs.h # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # mkdir_p='$(MKDIR_P)' # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar plaintar pax cpio none' # The POSIX 1988 'ustar' format is defined with fixed-size fields. # There is notably a 21 bits limit for the UID and the GID. In fact, # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 # and bug#13588). am_max_uid=2097151 # 2^21 - 1 am_max_gid=$am_max_uid # The $UID and $GID variables are not portable, so we need to resort # to the POSIX-mandated id(1) utility. Errors in the 'id' calls # below are definitely unexpected, so allow the users to see them # (that is, avoid stderr redirection). am_uid=`id -u || echo unknown` am_gid=`id -g || echo unknown` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether UID '$am_uid' is supported by ustar format" >&5 printf %s "checking whether UID '$am_uid' is supported by ustar format... " >&6; } if test x$am_uid = xunknown; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: ancient id detected; assuming current UID is ok, but dist-ustar might not work" >&5 printf "%s\n" "$as_me: WARNING: ancient id detected; assuming current UID is ok, but dist-ustar might not work" >&2;} elif test $am_uid -le $am_max_uid; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } _am_tools=none fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether GID '$am_gid' is supported by ustar format" >&5 printf %s "checking whether GID '$am_gid' is supported by ustar format... " >&6; } if test x$gm_gid = xunknown; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: ancient id detected; assuming current GID is ok, but dist-ustar might not work" >&5 printf "%s\n" "$as_me: WARNING: ancient id detected; assuming current GID is ok, but dist-ustar might not work" >&2;} elif test $am_gid -le $am_max_gid; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } _am_tools=none fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to create a ustar tar archive" >&5 printf %s "checking how to create a ustar tar archive... " >&6; } # Go ahead even if we have the value already cached. We do so because we # need to set the values for the 'am__tar' and 'am__untar' variables. _am_tools=${am_cv_prog_tar_ustar-$_am_tools} for _am_tool in $_am_tools; do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do { echo "$as_me:$LINENO: $_am_tar --version" >&5 ($_am_tar --version) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && break done am__tar="$_am_tar --format=ustar -chf - "'"$$tardir"' am__tar_="$_am_tar --format=ustar -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x ustar -w "$$tardir"' am__tar_='pax -L -x ustar -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H ustar -L' am__tar_='find "$tardir" -print | cpio -o -H ustar -L' am__untar='cpio -i -H ustar -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_ustar}" && break # tar/untar a dummy directory, and stop if the command works. rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file { echo "$as_me:$LINENO: tardir=conftest.dir && eval $am__tar_ >conftest.tar" >&5 (tardir=conftest.dir && eval $am__tar_ >conftest.tar) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } rm -rf conftest.dir if test -s conftest.tar; then { echo "$as_me:$LINENO: $am__untar &5 ($am__untar &5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { echo "$as_me:$LINENO: cat conftest.dir/file" >&5 (cat conftest.dir/file) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } grep GrepMe conftest.dir/file >/dev/null 2>&1 && break fi done rm -rf conftest.dir if test ${am_cv_prog_tar_ustar+y} then : printf %s "(cached) " >&6 else case e in #( e) am_cv_prog_tar_ustar=$_am_tool ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_tar_ustar" >&5 printf "%s\n" "$am_cv_prog_tar_ustar" >&6; } # Variables for tags utilities; see am/tags.am if test -z "$CTAGS"; then CTAGS=ctags fi if test -z "$ETAGS"; then ETAGS=etags fi if test -z "$CSCOPE"; then CSCOPE=cscope fi # Make sure we can run config.sub. $SHELL "${ac_aux_dir}config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL ${ac_aux_dir}config.sub" "$LINENO" 5 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 printf %s "checking build system type... " >&6; } if test ${ac_cv_build+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` || as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5 ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 printf "%s\n" "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 printf %s "checking host system type... " >&6; } if test ${ac_cv_host+y} then : printf %s "(cached) " >&6 else case e in #( e) if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` || as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5 fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 printf "%s\n" "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac ac_config_headers="$ac_config_headers config.h" ACLOCAL_AMFLAGS="-I $ac_macro_dir \${ACLOCAL_FLAGS}" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 printf %s "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } # Check whether --enable-maintainer-mode was given. if test ${enable_maintainer_mode+y} then : enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval else case e in #( e) USE_MAINTAINER_MODE=yes ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 printf "%s\n" "$USE_MAINTAINER_MODE" >&6; } if test $USE_MAINTAINER_MODE = yes; then MAINTAINER_MODE_TRUE= MAINTAINER_MODE_FALSE='#' else MAINTAINER_MODE_TRUE='#' MAINTAINER_MODE_FALSE= fi MAINT=$MAINTAINER_MODE_TRUE AM_DEFAULT_VERBOSITY=0 # Check for programs DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5 printf %s "checking whether ${MAKE-make} supports the include directive... " >&6; } cat > confinc.mk << 'END' am__doit: @echo this is the am__doit target >confinc.out .PHONY: am__doit END am__include="#" am__quote= # BSD make does it like this. echo '.include "confinc.mk" # ignored' > confmf.BSD # Other make implementations (GNU, Solaris 10, AIX) do it like this. echo 'include confinc.mk # ignored' > confmf.GNU _am_result=no for s in GNU BSD; do { echo "$as_me:$LINENO: ${MAKE-make} -f confmf.$s && cat confinc.out" >&5 (${MAKE-make} -f confmf.$s && cat confinc.out) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } case $?:`cat confinc.out 2>/dev/null` in #( '0:this is the am__doit target') : case $s in #( BSD) : am__include='.include' am__quote='"' ;; #( *) : am__include='include' am__quote='' ;; esac ;; #( *) : ;; esac if test "$am__include" != "#"; then _am_result="yes ($s style)" break fi done rm -f confinc.* confmf.* { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5 printf "%s\n" "${_am_result}" >&6; } # Check whether --enable-dependency-tracking was given. if test ${enable_dependency_tracking+y} then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" fi fi fi ;; esac fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. set dummy ${ac_tool_prefix}clang; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}clang" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "clang", so it can be a program name with args. set dummy clang; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="clang" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi fi test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See 'config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion -version; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 printf %s "checking whether the C compiler works... " >&6; } ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : # Autoconf-2.13 could set the ac_cv_exeext variable to 'no'. # So ignore a value of 'no', otherwise this would lead to 'EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an '-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else case e in #( e) ac_file='' ;; esac fi if test -z "$ac_file" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See 'config.log' for more details" "$LINENO" 5; } else case e in #( e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 printf %s "checking for C compiler default output file name... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 printf "%s\n" "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 printf %s "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : # If both 'conftest.exe' and 'conftest' are 'present' (well, observable) # catch 'conftest.exe'. For instance with Cygwin, 'ls conftest' will # work properly (i.e., refer to 'conftest.exe'), while it won't with # 'rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else case e in #( e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See 'config.log' for more details" "$LINENO" 5; } ;; esac fi rm -f conftest conftest$ac_cv_exeext { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 printf "%s\n" "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { FILE *f = fopen ("conftest.out", "w"); if (!f) return 1; return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 printf %s "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error 77 "cannot run C compiled programs. If you meant to cross compile, use '--host'. See 'config.log' for more details" "$LINENO" 5; } fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 printf "%s\n" "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext \ conftest.o conftest.obj conftest.out ac_clean_files=$ac_clean_files_save { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 printf %s "checking for suffix of object files... " >&6; } if test ${ac_cv_objext+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else case e in #( e) printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See 'config.log' for more details" "$LINENO" 5; } ;; esac fi rm -f conftest.$ac_cv_objext conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 printf "%s\n" "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 printf %s "checking whether the compiler supports GNU C... " >&6; } if test ${ac_cv_c_compiler_gnu+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_compiler_gnu=yes else case e in #( e) ac_compiler_gnu=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } ac_compiler_gnu=$ac_cv_c_compiler_gnu if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+y} ac_save_CFLAGS=$CFLAGS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 printf %s "checking whether $CC accepts -g... " >&6; } if test ${ac_cv_prog_cc_g+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes else case e in #( e) CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : else case e in #( e) ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 printf "%s\n" "$ac_cv_prog_cc_g" >&6; } if test $ac_test_CFLAGS; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi ac_prog_cc_stdc=no if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 printf %s "checking for $CC option to enable C11 features... " >&6; } if test ${ac_cv_prog_cc_c11+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_cv_prog_cc_c11=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c11_program _ACEOF for ac_arg in '' -std=gnu11 do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c11=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c11" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC ;; esac fi if test "x$ac_cv_prog_cc_c11" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else case e in #( e) if test "x$ac_cv_prog_cc_c11" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else case e in #( e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } CC="$CC $ac_cv_prog_cc_c11" ;; esac fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 ac_prog_cc_stdc=c11 ;; esac fi fi if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 printf %s "checking for $CC option to enable C99 features... " >&6; } if test ${ac_cv_prog_cc_c99+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_cv_prog_cc_c99=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c99_program _ACEOF for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c99=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c99" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC ;; esac fi if test "x$ac_cv_prog_cc_c99" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else case e in #( e) if test "x$ac_cv_prog_cc_c99" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else case e in #( e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } CC="$CC $ac_cv_prog_cc_c99" ;; esac fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 ac_prog_cc_stdc=c99 ;; esac fi fi if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 printf %s "checking for $CC option to enable C89 features... " >&6; } if test ${ac_cv_prog_cc_c89+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c89_program _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC ;; esac fi if test "x$ac_cv_prog_cc_c89" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else case e in #( e) if test "x$ac_cv_prog_cc_c89" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else case e in #( e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } CC="$CC $ac_cv_prog_cc_c89" ;; esac fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 ac_prog_cc_stdc=c89 ;; esac fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 printf %s "checking whether $CC understands -c and -o together... " >&6; } if test ${am_cv_prog_cc_c_o+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done # aligned with autoconf, so not including core; see bug#72225. rm -f -r a.out a.exe b.out conftest.$ac_ext conftest.$ac_objext \ conftest.dSYM conftest1.$ac_ext conftest1.$ac_objext conftest1.dSYM \ conftest2.$ac_ext conftest2.$ac_objext conftest2.dSYM unset am_i ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 printf "%s\n" "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CC" am_compiler_list= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 printf %s "checking dependency style of $depcc... " >&6; } if test ${am_cv_CC_dependencies_compiler_type+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thus: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 printf "%s\n" "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing strerror" >&5 printf %s "checking for library containing strerror... " >&6; } if test ${ac_cv_search_strerror+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. The 'extern "C"' is for builds by C++ compilers; although this is not generally supported in C code supporting it here has little cost and some practical benefit (sr 110532). */ #ifdef __cplusplus extern "C" #endif char strerror (void); int main (void) { return strerror (); ; return 0; } _ACEOF for ac_lib in '' cposix do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO" then : ac_cv_search_strerror=$ac_res fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext if test ${ac_cv_search_strerror+y} then : break fi done if test ${ac_cv_search_strerror+y} then : else case e in #( e) ac_cv_search_strerror=no ;; esac fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_strerror" >&5 printf "%s\n" "$ac_cv_search_strerror" >&6; } ac_res=$ac_cv_search_strerror if test "$ac_res" != no then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" fi fi fi ;; esac fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. set dummy ${ac_tool_prefix}clang; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}clang" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "clang", so it can be a program name with args. set dummy clang; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="clang" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi fi test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See 'config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion -version; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 printf %s "checking whether the compiler supports GNU C... " >&6; } if test ${ac_cv_c_compiler_gnu+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_compiler_gnu=yes else case e in #( e) ac_compiler_gnu=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } ac_compiler_gnu=$ac_cv_c_compiler_gnu if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+y} ac_save_CFLAGS=$CFLAGS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 printf %s "checking whether $CC accepts -g... " >&6; } if test ${ac_cv_prog_cc_g+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes else case e in #( e) CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : else case e in #( e) ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 printf "%s\n" "$ac_cv_prog_cc_g" >&6; } if test $ac_test_CFLAGS; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi ac_prog_cc_stdc=no if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 printf %s "checking for $CC option to enable C11 features... " >&6; } if test ${ac_cv_prog_cc_c11+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_cv_prog_cc_c11=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c11_program _ACEOF for ac_arg in '' -std=gnu11 do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c11=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c11" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC ;; esac fi if test "x$ac_cv_prog_cc_c11" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else case e in #( e) if test "x$ac_cv_prog_cc_c11" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else case e in #( e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } CC="$CC $ac_cv_prog_cc_c11" ;; esac fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 ac_prog_cc_stdc=c11 ;; esac fi fi if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 printf %s "checking for $CC option to enable C99 features... " >&6; } if test ${ac_cv_prog_cc_c99+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_cv_prog_cc_c99=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c99_program _ACEOF for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c99=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c99" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC ;; esac fi if test "x$ac_cv_prog_cc_c99" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else case e in #( e) if test "x$ac_cv_prog_cc_c99" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else case e in #( e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } CC="$CC $ac_cv_prog_cc_c99" ;; esac fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 ac_prog_cc_stdc=c99 ;; esac fi fi if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 printf %s "checking for $CC option to enable C89 features... " >&6; } if test ${ac_cv_prog_cc_c89+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c89_program _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC ;; esac fi if test "x$ac_cv_prog_cc_c89" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else case e in #( e) if test "x$ac_cv_prog_cc_c89" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else case e in #( e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } CC="$CC $ac_cv_prog_cc_c89" ;; esac fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 ac_prog_cc_stdc=c89 ;; esac fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 printf %s "checking whether $CC understands -c and -o together... " >&6; } if test ${am_cv_prog_cc_c_o+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done # aligned with autoconf, so not including core; see bug#72225. rm -f -r a.out a.exe b.out conftest.$ac_ext conftest.$ac_objext \ conftest.dSYM conftest1.$ac_ext conftest1.$ac_objext conftest1.dSYM \ conftest2.$ac_ext conftest2.$ac_objext conftest2.dSYM unset am_i ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 printf "%s\n" "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CC" am_compiler_list= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 printf %s "checking dependency style of $depcc... " >&6; } if test ${am_cv_CC_dependencies_compiler_type+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thus: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 printf "%s\n" "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 printf %s "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 printf "%s\n" "no, using $LN_S" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 printf %s "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`printf "%s\n" "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval test \${ac_cv_prog_make_${ac_make}_set+y} then : printf %s "(cached) " >&6 else case e in #( e) cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make ;; esac fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } SET_MAKE= else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi # Check whether --enable-static was given. if test ${enable_static+y} then : enableval=$enable_static; p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS=$lt_save_ifs ;; esac else case e in #( e) enable_static=no ;; esac fi case `pwd` in *\ * | *\ *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 printf "%s\n" "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; esac macro_version='2.5.4' macro_revision='2.5.4' ltmain=$ac_aux_dir/ltmain.sh # Backslashify metacharacters that are still active within # double-quoted strings. sed_quote_subst='s/\(["`$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 printf %s "checking how to print strings... " >&6; } # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "" } case $ECHO in printf*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: printf" >&5 printf "%s\n" "printf" >&6; } ;; print*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 printf "%s\n" "print -r" >&6; } ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: cat" >&5 printf "%s\n" "cat" >&6; } ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 printf %s "checking for a sed that does not truncate output... " >&6; } if test ${ac_cv_path_SED+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" done echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed { ac_script=; unset ac_script;} if test -z "$SED"; then ac_path_SED_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in sed gsed do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_SED="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_SED" || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED case `"$ac_path_SED" --version 2>&1` in #( *GNU*) ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; #( *) ac_count=0 printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" printf "%s\n" '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_SED_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_SED="$ac_path_SED" ac_path_SED_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_SED_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_SED"; then as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 fi else ac_cv_path_SED=$SED fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 printf "%s\n" "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 printf %s "checking for grep that handles long lines and -e... " >&6; } if test ${ac_cv_path_GREP+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in grep ggrep do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in #( *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; #( *) ac_count=0 printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" printf "%s\n" 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 printf "%s\n" "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 printf %s "checking for egrep... " >&6; } if test ${ac_cv_path_EGREP+y} then : printf %s "(cached) " >&6 else case e in #( e) if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in egrep do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in #( *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; #( *) ac_count=0 printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" printf "%s\n" 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 printf "%s\n" "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" EGREP_TRADITIONAL=$EGREP ac_cv_path_EGREP_TRADITIONAL=$EGREP { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 printf %s "checking for fgrep... " >&6; } if test ${ac_cv_path_FGREP+y} then : printf %s "(cached) " >&6 else case e in #( e) if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 then ac_cv_path_FGREP="$GREP -F" else if test -z "$FGREP"; then ac_path_FGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in fgrep do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_FGREP="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_FGREP" || continue # Check for GNU ac_path_FGREP and select it if it is found. # Check for GNU $ac_path_FGREP case `"$ac_path_FGREP" --version 2>&1` in #( *GNU*) ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; #( *) ac_count=0 printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" printf "%s\n" 'FGREP' >> "conftest.nl" "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_FGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_FGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_FGREP"; then as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_FGREP=$FGREP fi fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 printf "%s\n" "$ac_cv_path_FGREP" >&6; } FGREP="$ac_cv_path_FGREP" test -z "$GREP" && GREP=grep # Check whether --with-gnu-ld was given. if test ${with_gnu_ld+y} then : withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes else case e in #( e) with_gnu_ld=no ;; esac fi ac_prog=ld if test yes = "$GCC"; then # Check if gcc -print-prog-name=ld gives a path. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 printf %s "checking for ld used by $CC... " >&6; } case $host in *-*-mingw* | *-*-windows*) # gcc leaves a trailing carriage return, which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD=$ac_prog ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test yes = "$with_gnu_ld"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 printf %s "checking for GNU ld... " >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 printf %s "checking for non-GNU ld... " >&6; } fi if test ${lt_cv_path_LD+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -z "$LD"; then lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD=$ac_dir/$ac_prog # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 printf "%s\n" "$LD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 printf %s "checking if the linker ($LD) is GNU ld... " >&6; } if test ${lt_cv_prog_gnu_ld+y} then : printf %s "(cached) " >&6 else case e in #( e) # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 printf "%s\n" "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 printf %s "checking for BSD- or MS-compatible name lister (nm)... " >&6; } if test ${lt_cv_path_NM+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM=$NM else lt_nm_to_check=${ac_tool_prefix}nm if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. tmp_nm=$ac_dir/$lt_tmp_nm if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then # Check to see if the nm accepts a BSD-compat flag. # Adding the 'sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty case $build_os in mingw* | windows*) lt_bad_file=conftest.nm/nofile ;; *) lt_bad_file=/dev/null ;; esac case `"$tmp_nm" -B $lt_bad_file 2>&1 | $SED '1q'` in *$lt_bad_file* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break 2 ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | $SED '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break 2 ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS=$lt_save_ifs done : ${lt_cv_path_NM=no} fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 printf "%s\n" "$lt_cv_path_NM" >&6; } if test no != "$lt_cv_path_NM"; then NM=$lt_cv_path_NM else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else if test -n "$ac_tool_prefix"; then for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_DUMPBIN+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$DUMPBIN"; then ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi DUMPBIN=$ac_cv_prog_DUMPBIN if test -n "$DUMPBIN"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 printf "%s\n" "$DUMPBIN" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$DUMPBIN" && break done fi if test -z "$DUMPBIN"; then ac_ct_DUMPBIN=$DUMPBIN for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_DUMPBIN+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_DUMPBIN"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN if test -n "$ac_ct_DUMPBIN"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 printf "%s\n" "$ac_ct_DUMPBIN" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$ac_ct_DUMPBIN" && break done if test "x$ac_ct_DUMPBIN" = x; then DUMPBIN=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DUMPBIN=$ac_ct_DUMPBIN fi fi case `$DUMPBIN -symbols -headers /dev/null 2>&1 | $SED '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols -headers" ;; *) DUMPBIN=: ;; esac fi if test : != "$DUMPBIN"; then NM=$DUMPBIN fi fi test -z "$NM" && NM=nm { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 printf %s "checking the name lister ($NM) interface... " >&6; } if test ${lt_cv_nm_interface+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: output\"" >&5) cat conftest.out >&5 if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest* ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 printf "%s\n" "$lt_cv_nm_interface" >&6; } # find the maximum length of command line arguments { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 printf %s "checking the maximum length of command line arguments... " >&6; } if test ${lt_cv_sys_max_cmd_len+y} then : printf %s "(cached) " >&6 else case e in #( e) i=0 teststring=ABCD case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu* | ironclad*) # Under GNU Hurd and Ironclad, this test is not required because there # is no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | windows* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; darwin* | dragonfly* | freebsd* | midnightbsd* | netbsd* | openbsd*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | $SED 's/.*[ ]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len" && \ test undefined != "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test X`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test 17 != "$i" # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac ;; esac fi if test -n "$lt_cv_sys_max_cmd_len"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 printf "%s\n" "$lt_cv_sys_max_cmd_len" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none" >&5 printf "%s\n" "none" >&6; } fi max_cmd_len=$lt_cv_sys_max_cmd_len : ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 printf %s "checking how to convert $build file names to $host format... " >&6; } if test ${lt_cv_to_host_file_cmd+y} then : printf %s "(cached) " >&6 else case e in #( e) case $host in *-*-mingw* ) case $build in *-*-mingw* | *-*-windows* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* | *-*-windows* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac ;; esac fi to_host_file_cmd=$lt_cv_to_host_file_cmd { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 printf "%s\n" "$lt_cv_to_host_file_cmd" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 printf %s "checking how to convert $build file names to toolchain format... " >&6; } if test ${lt_cv_to_tool_file_cmd+y} then : printf %s "(cached) " >&6 else case e in #( e) #assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* | *-*-windows* ) case $build in *-*-mingw* | *-*-windows* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac ;; esac fi to_tool_file_cmd=$lt_cv_to_tool_file_cmd { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 printf "%s\n" "$lt_cv_to_tool_file_cmd" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 printf %s "checking for $LD option to reload object files... " >&6; } if test ${lt_cv_ld_reload_flag+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_ld_reload_flag='-r' ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 printf "%s\n" "$lt_cv_ld_reload_flag" >&6; } reload_flag=$lt_cv_ld_reload_flag case $reload_flag in "" | " "*) ;; *) reload_flag=" $reload_flag" ;; esac reload_cmds='$LD$reload_flag -o $output$reload_objs' case $host_os in cygwin* | mingw* | windows* | pw32* | cegcc*) if test yes != "$GCC"; then reload_cmds=false fi ;; darwin*) if test yes = "$GCC"; then reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs' else reload_cmds='$LD$reload_flag -o $output$reload_objs' fi ;; esac # Extract the first word of "file", so it can be a program name with args. set dummy file; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_FILECMD+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$FILECMD"; then ac_cv_prog_FILECMD="$FILECMD" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_FILECMD="file" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_FILECMD" && ac_cv_prog_FILECMD=":" fi ;; esac fi FILECMD=$ac_cv_prog_FILECMD if test -n "$FILECMD"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $FILECMD" >&5 printf "%s\n" "$FILECMD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_OBJDUMP+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 printf "%s\n" "$OBJDUMP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_OBJDUMP"; then ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_OBJDUMP+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OBJDUMP="objdump" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 printf "%s\n" "$ac_ct_OBJDUMP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then OBJDUMP="false" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJDUMP=$ac_ct_OBJDUMP fi else OBJDUMP="$ac_cv_prog_OBJDUMP" fi test -z "$OBJDUMP" && OBJDUMP=objdump { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 printf %s "checking how to recognize dependent libraries... " >&6; } if test ${lt_cv_deplibs_check_method+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # 'unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'file_magic [[regex]]' -- check by looking for files in library path # that responds to the $file_magic_cmd with a given extended regex. # If you have 'file' or equivalent on your system and you're not sure # whether 'pass_all' will *always* work, you probably want this one. case $host_os in aix[4-9]*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[45]*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='$FILECMD -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | windows* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. if ( file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64|pe-aarch64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly* | midnightbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=$FILECMD lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=$FILECMD case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[3-9]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) lt_cv_deplibs_check_method=pass_all ;; *-mlibc) lt_cv_deplibs_check_method=pass_all ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=$FILECMD lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; serenity*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; os2*) lt_cv_deplibs_check_method=pass_all ;; esac ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 printf "%s\n" "$lt_cv_deplibs_check_method" >&6; } file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | windows* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` fi ;; esac fi file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. set dummy ${ac_tool_prefix}dlltool; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_DLLTOOL+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$DLLTOOL"; then ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi DLLTOOL=$ac_cv_prog_DLLTOOL if test -n "$DLLTOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 printf "%s\n" "$DLLTOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_DLLTOOL"; then ac_ct_DLLTOOL=$DLLTOOL # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_DLLTOOL+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_DLLTOOL"; then ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DLLTOOL="dlltool" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL if test -n "$ac_ct_DLLTOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 printf "%s\n" "$ac_ct_DLLTOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_DLLTOOL" = x; then DLLTOOL="false" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DLLTOOL=$ac_ct_DLLTOOL fi else DLLTOOL="$ac_cv_prog_DLLTOOL" fi test -z "$DLLTOOL" && DLLTOOL=dlltool { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 printf %s "checking how to associate runtime and link libraries... " >&6; } if test ${lt_cv_sharedlib_from_linklib_cmd+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | windows* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh; # decide which one to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd=$ECHO ;; esac ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 printf "%s\n" "$lt_cv_sharedlib_from_linklib_cmd" >&6; } sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_RANLIB+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 printf "%s\n" "$RANLIB" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_RANLIB+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 printf "%s\n" "$ac_ct_RANLIB" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi if test -n "$ac_tool_prefix"; then for ac_prog in ar do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_AR+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AR="$ac_tool_prefix$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi AR=$ac_cv_prog_AR if test -n "$AR"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 printf "%s\n" "$AR" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$AR" && break done fi if test -z "$AR"; then ac_ct_AR=$AR for ac_prog in ar do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_AR+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 printf "%s\n" "$ac_ct_AR" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$ac_ct_AR" && break done if test "x$ac_ct_AR" = x; then AR="false" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi fi : ${AR=ar} # Use ARFLAGS variable as AR's operation code to sync the variable naming with # Automake. If both AR_FLAGS and ARFLAGS are specified, AR_FLAGS should have # higher priority because that's what people were doing historically (setting # ARFLAGS for automake and AR_FLAGS for libtool). FIXME: Make the AR_FLAGS # variable obsoleted/removed. test ${AR_FLAGS+y} || AR_FLAGS=${ARFLAGS-cr} lt_ar_flags=$AR_FLAGS # Make AR_FLAGS overridable by 'make ARFLAGS='. Don't try to run-time override # by AR_FLAGS because that was never working and AR_FLAGS is about to die. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 printf %s "checking for archiver @FILE support... " >&6; } if test ${lt_cv_ar_at_file+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_ar_at_file=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test 0 -eq "$ac_status"; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test 0 -ne "$ac_status"; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 printf "%s\n" "$lt_cv_ar_at_file" >&6; } if test no = "$lt_cv_ar_at_file"; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_STRIP+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 printf "%s\n" "$STRIP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_STRIP+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 printf "%s\n" "$ac_ct_STRIP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi test -z "$STRIP" && STRIP=: test -z "$RANLIB" && RANLIB=: # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Check for command to grab the raw symbol name followed by C symbol from nm. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 printf %s "checking command to parse $NM output from $compiler object... " >&6; } if test ${lt_cv_sys_global_symbol_pipe+y} then : printf %s "(cached) " >&6 else case e in #( e) # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[BCDT]' ;; cygwin* | mingw* | windows* | pw32* | cegcc*) symcode='[ABCDGISTW]' ;; hpux*) if test ia64 = "$host_cpu"; then symcode='[ABCDEGRST]' fi ;; irix* | nonstopux*) symcode='[BCDEGRST]' ;; osf*) symcode='[BCDEGQRST]' ;; solaris*) symcode='[BCDRT]' ;; sco3.2v5*) symcode='[DT]' ;; sysv4.2uw2*) symcode='[DT]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[ABDT]' ;; sysv4) symcode='[DFNSTU]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[ABCDGIRSTW]' ;; esac if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Gets list of data symbols to import. lt_cv_sys_global_symbol_to_import="$SED -n -e 's/^I .* \(.*\)$/\1/p'" # Adjust the below global symbol transforms to fixup imported variables. lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" lt_c_name_lib_hook="\ -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" else # Disable hooks by default. lt_cv_sys_global_symbol_to_import= lt_cdecl_hook= lt_c_name_hook= lt_c_name_lib_hook= fi # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="$SED -n"\ $lt_cdecl_hook\ " -e 's/^T .* \(.*\)$/extern int \1();/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="$SED -n"\ $lt_c_name_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" # Transform an extracted symbol line into symbol name with lib prefix and # symbol address. lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="$SED -n"\ $lt_c_name_lib_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw* | windows*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function, # D for any global variable and I for any imported variable. # Also find C++ and __fastcall symbols from MSVC++ or ICC, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK '"\ " {last_section=section; section=\$ 3};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ " /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ " /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ " {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ " s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx" else lt_cv_sys_global_symbol_pipe="$SED -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | $SED '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(void){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Now try to grab the symbols. nlist=conftest.nm $ECHO "$as_me:$LINENO: $NM conftest.$ac_objext | $lt_cv_sys_global_symbol_pipe > $nlist" >&5 if eval "$NM" conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist 2>&5 && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE /* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS=conftstm.$ac_objext CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest$ac_exeext; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test yes = "$pipe_works"; then break else lt_cv_sys_global_symbol_pipe= fi done ;; esac fi if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: failed" >&5 printf "%s\n" "failed" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5 printf "%s\n" "ok" >&6; } fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then nm_file_list_spec='@' fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 printf %s "checking for sysroot... " >&6; } # Check whether --with-sysroot was given. if test ${with_sysroot+y} then : withval=$with_sysroot; else case e in #( e) with_sysroot=no ;; esac fi lt_sysroot= case $with_sysroot in #( yes) if test yes = "$GCC"; then # Trim trailing / since we'll always append absolute paths and we want # to avoid //, if only for less confusing output for the user. lt_sysroot=`$CC --print-sysroot 2>/dev/null | $SED 's:/\+$::'` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | $SED -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 printf "%s\n" "$with_sysroot" >&6; } as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 printf "%s\n" "${lt_sysroot:-no}" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 printf %s "checking for a working dd... " >&6; } if test ${ac_cv_path_lt_DD+y} then : printf %s "(cached) " >&6 else case e in #( e) printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i : ${lt_DD:=$DD} if test -z "$lt_DD"; then ac_path_lt_DD_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in dd do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_lt_DD="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_lt_DD" || continue if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: fi $ac_path_lt_DD_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_lt_DD"; then : fi else ac_cv_path_lt_DD=$lt_DD fi rm -f conftest.i conftest2.i conftest.out ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 printf "%s\n" "$ac_cv_path_lt_DD" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 printf %s "checking how to truncate binary pipes... " >&6; } if test ${lt_cv_truncate_bin+y} then : printf %s "(cached) " >&6 else case e in #( e) printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i lt_cv_truncate_bin= if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" fi rm -f conftest.i conftest2.i conftest.out test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q" ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 printf "%s\n" "$lt_cv_truncate_bin" >&6; } # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. func_cc_basename () { for cc_temp in $*""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` } # Check whether --enable-libtool-lock was given. if test ${enable_libtool_lock+y} then : enableval=$enable_libtool_lock; fi test no = "$enable_libtool_lock" || enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out what ABI is being produced by ac_compile, and set mode # options accordingly. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `$FILECMD conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE=32 ;; *ELF-64*) HPUX_IA64_MODE=64 ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo '#line '$LINENO' "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then if test yes = "$lt_cv_prog_gnu_ld"; then case `$FILECMD conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `$FILECMD conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; mips64*-*linux*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo '#line '$LINENO' "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then emul=elf case `$FILECMD conftest.$ac_objext` in *32-bit*) emul="${emul}32" ;; *64-bit*) emul="${emul}64" ;; esac case `$FILECMD conftest.$ac_objext` in *MSB*) emul="${emul}btsmip" ;; *LSB*) emul="${emul}ltsmip" ;; esac case `$FILECMD conftest.$ac_objext` in *N32*) emul="${emul}n32" ;; esac LD="${LD-ld} -m $emul" fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*|x86_64-gnu*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. Note that the listed cases only cover the # situations where additional linker options are needed (such as when # doing 32-bit compilation for a host where ld defaults to 64-bit, or # vice versa); the common cases where no linker options are needed do # not appear in the list. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `$FILECMD conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*|x86_64-gnu*) case `$FILECMD conftest.o` in *x86-64*) LD="${LD-ld} -m elf32_x86_64" ;; *) LD="${LD-ld} -m elf_i386" ;; esac ;; powerpc64le-*linux*) LD="${LD-ld} -m elf32lppclinux" ;; powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*|x86_64-gnu*) LD="${LD-ld} -m elf_x86_64" ;; powerpcle-*linux*) LD="${LD-ld} -m elf64lppc" ;; powerpc-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS=$CFLAGS CFLAGS="$CFLAGS -belf" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 printf %s "checking whether the C compiler needs -belf... " >&6; } if test ${lt_cv_cc_needs_belf+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : lt_cv_cc_needs_belf=yes else case e in #( e) lt_cv_cc_needs_belf=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 printf "%s\n" "$lt_cv_cc_needs_belf" >&6; } if test yes != "$lt_cv_cc_needs_belf"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS=$SAVE_CFLAGS fi ;; *-*solaris*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `$FILECMD conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-solaris*|x86_64-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then LD=${LD-ld}_sol2 fi ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks=$enable_libtool_lock if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. set dummy ${ac_tool_prefix}mt; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_MANIFEST_TOOL+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$MANIFEST_TOOL"; then ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL if test -n "$MANIFEST_TOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 printf "%s\n" "$MANIFEST_TOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_MANIFEST_TOOL"; then ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL # Extract the first word of "mt", so it can be a program name with args. set dummy mt; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_MANIFEST_TOOL+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_MANIFEST_TOOL"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL if test -n "$ac_ct_MANIFEST_TOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 printf "%s\n" "$ac_ct_MANIFEST_TOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_MANIFEST_TOOL" = x; then MANIFEST_TOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL fi else MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" fi test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 printf %s "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } if test ${lt_cv_path_manifest_tool+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_path_manifest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&5 if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_manifest_tool=yes fi rm -f conftest* ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_manifest_tool" >&5 printf "%s\n" "$lt_cv_path_manifest_tool" >&6; } if test yes != "$lt_cv_path_manifest_tool"; then MANIFEST_TOOL=: fi case $host_os in rhapsody* | darwin*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_DSYMUTIL+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$DSYMUTIL"; then ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi DSYMUTIL=$ac_cv_prog_DSYMUTIL if test -n "$DSYMUTIL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 printf "%s\n" "$DSYMUTIL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_DSYMUTIL"; then ac_ct_DSYMUTIL=$DSYMUTIL # Extract the first word of "dsymutil", so it can be a program name with args. set dummy dsymutil; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_DSYMUTIL+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_DSYMUTIL"; then ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL if test -n "$ac_ct_DSYMUTIL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 printf "%s\n" "$ac_ct_DSYMUTIL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_DSYMUTIL" = x; then DSYMUTIL=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DSYMUTIL=$ac_ct_DSYMUTIL fi else DSYMUTIL="$ac_cv_prog_DSYMUTIL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. set dummy ${ac_tool_prefix}nmedit; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_NMEDIT+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$NMEDIT"; then ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi NMEDIT=$ac_cv_prog_NMEDIT if test -n "$NMEDIT"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 printf "%s\n" "$NMEDIT" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_NMEDIT"; then ac_ct_NMEDIT=$NMEDIT # Extract the first word of "nmedit", so it can be a program name with args. set dummy nmedit; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_NMEDIT+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_NMEDIT"; then ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_NMEDIT="nmedit" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT if test -n "$ac_ct_NMEDIT"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 printf "%s\n" "$ac_ct_NMEDIT" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_NMEDIT" = x; then NMEDIT=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac NMEDIT=$ac_ct_NMEDIT fi else NMEDIT="$ac_cv_prog_NMEDIT" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. set dummy ${ac_tool_prefix}lipo; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_LIPO+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$LIPO"; then ac_cv_prog_LIPO="$LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_LIPO="${ac_tool_prefix}lipo" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi LIPO=$ac_cv_prog_LIPO if test -n "$LIPO"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 printf "%s\n" "$LIPO" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_LIPO"; then ac_ct_LIPO=$LIPO # Extract the first word of "lipo", so it can be a program name with args. set dummy lipo; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_LIPO+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_LIPO"; then ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_LIPO="lipo" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO if test -n "$ac_ct_LIPO"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 printf "%s\n" "$ac_ct_LIPO" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_LIPO" = x; then LIPO=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac LIPO=$ac_ct_LIPO fi else LIPO="$ac_cv_prog_LIPO" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. set dummy ${ac_tool_prefix}otool; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_OTOOL+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$OTOOL"; then ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL="${ac_tool_prefix}otool" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi OTOOL=$ac_cv_prog_OTOOL if test -n "$OTOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 printf "%s\n" "$OTOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL"; then ac_ct_OTOOL=$OTOOL # Extract the first word of "otool", so it can be a program name with args. set dummy otool; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_OTOOL+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_OTOOL"; then ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL="otool" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL if test -n "$ac_ct_OTOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 printf "%s\n" "$ac_ct_OTOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_OTOOL" = x; then OTOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL=$ac_ct_OTOOL fi else OTOOL="$ac_cv_prog_OTOOL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. set dummy ${ac_tool_prefix}otool64; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_OTOOL64+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$OTOOL64"; then ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi OTOOL64=$ac_cv_prog_OTOOL64 if test -n "$OTOOL64"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 printf "%s\n" "$OTOOL64" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL64"; then ac_ct_OTOOL64=$OTOOL64 # Extract the first word of "otool64", so it can be a program name with args. set dummy otool64; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_OTOOL64+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_OTOOL64"; then ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL64="otool64" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 if test -n "$ac_ct_OTOOL64"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 printf "%s\n" "$ac_ct_OTOOL64" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_OTOOL64" = x; then OTOOL64=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL64=$ac_ct_OTOOL64 fi else OTOOL64="$ac_cv_prog_OTOOL64" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 printf %s "checking for -single_module linker flag... " >&6; } if test ${lt_cv_apple_cc_single_mod+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_apple_cc_single_mod=no if test -z "$LT_MULTI_MODULE"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&5 $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? # If there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&5 # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. elif test -f libconftest.dylib && test 0 = "$_lt_result"; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&5 fi rm -rf libconftest.dylib* rm -f conftest.* fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 printf "%s\n" "$lt_cv_apple_cc_single_mod" >&6; } # Feature test to disable chained fixups since it is not # compatible with '-undefined dynamic_lookup' { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -no_fixup_chains linker flag" >&5 printf %s "checking for -no_fixup_chains linker flag... " >&6; } if test ${lt_cv_support_no_fixup_chains+y} then : printf %s "(cached) " >&6 else case e in #( e) save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -Wl,-no_fixup_chains" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : lt_cv_support_no_fixup_chains=yes else case e in #( e) lt_cv_support_no_fixup_chains=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_support_no_fixup_chains" >&5 printf "%s\n" "$lt_cv_support_no_fixup_chains" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 printf %s "checking for -exported_symbols_list linker flag... " >&6; } if test ${lt_cv_ld_exported_symbols_list+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : lt_cv_ld_exported_symbols_list=yes else case e in #( e) lt_cv_ld_exported_symbols_list=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 printf "%s\n" "$lt_cv_ld_exported_symbols_list" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 printf %s "checking for -force_load linker flag... " >&6; } if test ${lt_cv_ld_force_load+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 echo "$AR $AR_FLAGS libconftest.a conftest.o" >&5 $AR $AR_FLAGS libconftest.a conftest.o 2>&5 echo "$RANLIB libconftest.a" >&5 $RANLIB libconftest.a 2>&5 cat > conftest.c << _LT_EOF int main(void) { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&5 elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then lt_cv_ld_force_load=yes else cat conftest.err >&5 fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 printf "%s\n" "$lt_cv_ld_force_load" >&6; } case $host_os in rhapsody* | darwin1.[012]) _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; darwin*) case $MACOSX_DEPLOYMENT_TARGET,$host in 10.[012],*|,*powerpc*-darwin[5-8]*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; *) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' if test yes = "$lt_cv_support_no_fixup_chains"; then as_fn_append _lt_dar_allow_undefined ' $wl-no_fixup_chains' fi ;; esac ;; esac if test yes = "$lt_cv_apple_cc_single_mod"; then _lt_dar_single_mod='$single_module' fi _lt_dar_needs_single_mod=no case $host_os in rhapsody* | darwin1.*) _lt_dar_needs_single_mod=yes ;; darwin*) # When targeting Mac OS X 10.4 (darwin 8) or later, # -single_module is the default and -multi_module is unsupported. # The toolchain on macOS 10.14 (darwin 18) and later cannot # target any OS version that needs -single_module. case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*-darwin[567].*|10.[0-3],*-darwin[5-9].*|10.[0-3],*-darwin1[0-7].*) _lt_dar_needs_single_mod=yes ;; esac ;; esac if test yes = "$lt_cv_ld_exported_symbols_list"; then _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' fi if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac # func_munge_path_list VARIABLE PATH # ----------------------------------- # VARIABLE is name of variable containing _space_ separated list of # directories to be munged by the contents of PATH, which is string # having a format: # "DIR[:DIR]:" # string "DIR[ DIR]" will be prepended to VARIABLE # ":DIR[:DIR]" # string "DIR[ DIR]" will be appended to VARIABLE # "DIRP[:DIRP]::[DIRA:]DIRA" # string "DIRP[ DIRP]" will be prepended to VARIABLE and string # "DIRA[ DIRA]" will be appended to VARIABLE # "DIR[:DIR]" # VARIABLE will be replaced by "DIR[ DIR]" func_munge_path_list () { case x$2 in x) ;; *:) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" ;; x:*) eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" ;; *::*) eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" ;; *) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" ;; esac } ac_header= ac_cache= for ac_item in $ac_header_c_list do if test $ac_cache; then ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default" if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then printf "%s\n" "#define $ac_item 1" >> confdefs.h fi ac_header= ac_cache= elif test $ac_header; then ac_cache=$ac_item else ac_header=$ac_item fi done if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes then : printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default " if test "x$ac_cv_header_dlfcn_h" = xyes then : printf "%s\n" "#define HAVE_DLFCN_H 1" >>confdefs.h fi # Set options enable_dlopen=no enable_win32_dll=no # Check whether --enable-shared was given. if test ${enable_shared+y} then : enableval=$enable_shared; p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS=$lt_save_ifs ;; esac else case e in #( e) enable_shared=yes ;; esac fi # Check whether --enable-pic was given. if test ${enable_pic+y} then : enableval=$enable_pic; lt_p=${PACKAGE-default} case $enableval in yes|no) pic_mode=$enableval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for lt_pkg in $enableval; do IFS=$lt_save_ifs if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS=$lt_save_ifs ;; esac else case e in #( e) # Check whether --with-pic was given. if test ${with_pic+y} then : withval=$with_pic; lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for lt_pkg in $withval; do IFS=$lt_save_ifs if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS=$lt_save_ifs ;; esac else case e in #( e) pic_mode=default ;; esac fi ;; esac fi # Check whether --enable-fast-install was given. if test ${enable_fast_install+y} then : enableval=$enable_fast_install; p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS=$lt_save_ifs ;; esac else case e in #( e) enable_fast_install=yes ;; esac fi shared_archive_member_spec= case $host,$enable_shared in power*-*-aix[5-9]*,yes) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 printf %s "checking which variant of shared library versioning to provide... " >&6; } # Check whether --enable-aix-soname was given. if test ${enable_aix_soname+y} then : enableval=$enable_aix_soname; case $enableval in aix|svr4|both) ;; *) as_fn_error $? "Unknown argument to --enable-aix-soname" "$LINENO" 5 ;; esac lt_cv_with_aix_soname=$enable_aix_soname else case e in #( e) # Check whether --with-aix-soname was given. if test ${with_aix_soname+y} then : withval=$with_aix_soname; case $withval in aix|svr4|both) ;; *) as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5 ;; esac lt_cv_with_aix_soname=$with_aix_soname else case e in #( e) if test ${lt_cv_with_aix_soname+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_with_aix_soname=aix ;; esac fi ;; esac fi enable_aix_soname=$lt_cv_with_aix_soname ;; esac fi with_aix_soname=$enable_aix_soname { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 printf "%s\n" "$with_aix_soname" >&6; } if test aix != "$with_aix_soname"; then # For the AIX way of multilib, we name the shared archive member # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, # the AIX toolchain works better with OBJECT_MODE set (default 32). if test 64 = "${OBJECT_MODE-32}"; then shared_archive_member_spec=shr_64 else shared_archive_member_spec=shr fi fi ;; *) with_aix_soname=aix ;; esac # This can be used to rebuild libtool when needed LIBTOOL_DEPS=$ltmain # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' test -z "$LN_S" && LN_S="ln -s" if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 printf %s "checking for objdir... " >&6; } if test ${lt_cv_objdir+y} then : printf %s "(cached) " >&6 else case e in #( e) rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 printf "%s\n" "$lt_cv_objdir" >&6; } objdir=$lt_cv_objdir printf "%s\n" "#define LT_OBJDIR \"$lt_cv_objdir/\"" >>confdefs.h case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a '.a' archive for static linking (except MSVC and # ICC, which need '.lib'). libext=a with_gnu_ld=$lt_cv_prog_gnu_ld old_CC=$CC old_CFLAGS=$CFLAGS # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o func_cc_basename $compiler cc_basename=$func_cc_basename_result # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 printf %s "checking for ${ac_tool_prefix}file... " >&6; } if test ${lt_cv_path_MAGIC_CMD+y} then : printf %s "(cached) " >&6 else case e in #( e) case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD=$MAGIC_CMD lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/${ac_tool_prefix}file"; then lt_cv_path_MAGIC_CMD=$ac_dir/"${ac_tool_prefix}file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD=$lt_cv_path_MAGIC_CMD if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS=$lt_save_ifs MAGIC_CMD=$lt_save_MAGIC_CMD ;; esac ;; esac fi MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 printf "%s\n" "$MAGIC_CMD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for file" >&5 printf %s "checking for file... " >&6; } if test ${lt_cv_path_MAGIC_CMD+y} then : printf %s "(cached) " >&6 else case e in #( e) case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD=$MAGIC_CMD lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/file"; then lt_cv_path_MAGIC_CMD=$ac_dir/"file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD=$lt_cv_path_MAGIC_CMD if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS=$lt_save_ifs MAGIC_CMD=$lt_save_MAGIC_CMD ;; esac ;; esac fi MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 printf "%s\n" "$MAGIC_CMD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi else MAGIC_CMD=: fi fi fi ;; esac # Use C for the default configuration in the libtool script lt_save_CC=$CC ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o objext=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(void){return(0);}' # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then lt_prog_compiler_no_builtin_flag= if test yes = "$GCC"; then case $cc_basename in nvcc*) lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; *) lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 printf %s "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } if test ${lt_cv_prog_compiler_rtti_exceptions+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $RM conftest* ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 printf "%s\n" "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl= lt_prog_compiler_pic= lt_prog_compiler_static= if test yes = "$GCC"; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi lt_prog_compiler_pic='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | windows* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) lt_prog_compiler_pic='-fPIC' ;; esac ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic=-Kconform_pic fi ;; *) lt_prog_compiler_pic='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 lt_prog_compiler_wl='-Xlinker ' if test -n "$lt_prog_compiler_pic"; then lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl='-Wl,' if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' case $cc_basename in nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; esac ;; mingw* | windows* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static='$wl-static' ;; esac ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static='$wl-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64, which still supported -KPIC. ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; *flang* | ftn | f18* | f95*) # Flang compiler. lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; # Lahey Fortran 8.1. lf95*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='--shared' lt_prog_compiler_static='--static' ;; nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; tcc*) # Fabrice Bellard et al's Tiny C Compiler lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; ccc*) lt_prog_compiler_wl='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-qpic' lt_prog_compiler_static='-qstaticlink' ;; *) case `$CC -V 2>&1 | $SED 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='' ;; *Sun\ F* | *Sun*Fortran*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Wl,' ;; *Intel*\ [CF]*Compiler*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; *Portland\ Group*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; esac ;; esac ;; newsos6) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; *-mlibc) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static='-non_shared' ;; rdos*) lt_prog_compiler_static='-non_shared' ;; serenity*) ;; solaris*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) lt_prog_compiler_wl='-Qoption ld ';; *) lt_prog_compiler_wl='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl='-Qoption ld ' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic='-Kconform_pic' lt_prog_compiler_static='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; unicos*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_can_build_shared=no ;; uts4*) lt_prog_compiler_pic='-pic' lt_prog_compiler_static='-Bstatic' ;; *) lt_prog_compiler_can_build_shared=no ;; esac fi case $host_os in # For platforms that do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; *) lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 printf %s "checking for $compiler option to produce PIC... " >&6; } if test ${lt_cv_prog_compiler_pic+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_prog_compiler_pic=$lt_prog_compiler_pic ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 printf "%s\n" "$lt_cv_prog_compiler_pic" >&6; } lt_prog_compiler_pic=$lt_cv_prog_compiler_pic # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 printf %s "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } if test ${lt_cv_prog_compiler_pic_works+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic -DPIC" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works=yes fi fi $RM conftest* ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 printf "%s\n" "$lt_cv_prog_compiler_pic_works" >&6; } if test yes = "$lt_cv_prog_compiler_pic_works"; then case $lt_prog_compiler_pic in "" | " "*) ;; *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; esac else lt_prog_compiler_pic= lt_prog_compiler_can_build_shared=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 printf %s "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if test ${lt_cv_prog_compiler_static_works+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_prog_compiler_static_works=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works=yes fi else lt_cv_prog_compiler_static_works=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 printf "%s\n" "$lt_cv_prog_compiler_static_works" >&6; } if test yes = "$lt_cv_prog_compiler_static_works"; then : else lt_prog_compiler_static= fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test ${lt_cv_prog_compiler_c_o+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 printf "%s\n" "$lt_cv_prog_compiler_c_o" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test ${lt_cv_prog_compiler_c_o+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 printf "%s\n" "$lt_cv_prog_compiler_c_o" >&6; } hard_links=nottested if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then # do not overwrite the value of need_locks provided by the user { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 printf %s "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 printf "%s\n" "$hard_links" >&6; } if test no = "$hard_links"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 printf "%s\n" "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 printf %s "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag= always_export_symbols=no archive_cmds= archive_expsym_cmds= compiler_needs_object=no enable_shared_with_static_runtimes=no export_dynamic_flag_spec= export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' hardcode_automatic=no hardcode_direct=no hardcode_direct_absolute=no hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_minus_L=no hardcode_shlibpath_var=unsupported inherit_rpath=no link_all_deplibs=unknown module_cmds= module_expsym_cmds= old_archive_from_new_cmds= old_archive_from_expsyms_cmds= thread_safe_flag_spec= whole_archive_flag_spec= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ' (' and ')$', so one must not match beginning or # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', # as well as any symbol that contains 'd'. exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | windows* | pw32* | cegcc*) # FIXME: the MSVC++ and ICC port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++ or Intel C++ Compiler. if test yes != "$GCC"; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++ or ICC) with_gnu_ld=yes ;; esac ld_shlibs=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test yes = "$with_gnu_ld"; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; *\ \(GNU\ Binutils\)\ [3-9]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test yes = "$lt_use_gnu_ld_interface"; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='$wl' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' export_dynamic_flag_spec='$wl--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else whole_archive_flag_spec= fi supports_anon_versioning=no case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test ia64 != "$host_cpu"; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw* | windows* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' export_dynamic_flag_spec='$wl--export-all-symbols' allow_undefined_flag=unsupported always_export_symbols=no enable_shared_with_static_runtimes=yes export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' file_list_spec='@' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file, use it as # is; otherwise, prepend EXPORTS... archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs=no fi ;; haiku*) archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' link_all_deplibs=no ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported shrext_cmds=.dll archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' old_archive_from_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes=yes file_list_spec='@' ;; interix[3-9]*) hardcode_direct=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='$wl-rpath,$libdir' export_dynamic_flag_spec='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test linux-dietlibc = "$host_os"; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test no = "$tmp_diet" then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 whole_archive_flag_spec= tmp_sharedflag='--shared' ;; nagfor*) # NAGFOR 5.3 tmp_sharedflag='-Wl,-shared' ;; xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object=yes ;; esac case `$CC -V 2>&1 | $SED 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi case $cc_basename in tcc*) hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' export_dynamic_flag_spec='-rdynamic' ;; xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test yes = "$supports_anon_versioning"; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else ld_shlibs=no fi ;; *-mlibc) archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test no = "$ld_shlibs"; then runpath_var= hardcode_libdir_flag_spec= export_dynamic_flag_spec= whole_archive_flag_spec= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix[4-9]*) if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag= else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to GNU nm, but means don't demangle to AIX nm. # Without the "-l" option, or with the "-B" option, AIX nm treats # weak defined symbols like other global defined symbols, whereas # GNU nm marks them as "W". # While the 'weak' keyword is ignored in the Export File, we need # it in the Import File for the 'aix-soname' feature, so we have # to replace the "-B" option with "-P" for AIX nm. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # have runtime linking enabled, and use it for executables. # For shared libraries, we enable/disable runtime linking # depending on the kind of the shared library created - # when "with_aix_soname,aix_use_runtimelinking" is: # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables # "aix,yes" lib.so shared, rtl:yes, for executables # lib.a static archive # "both,no" lib.so.V(shr.o) shared, rtl:yes # lib.a(lib.so.V) shared, rtl:no, for executables # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a(lib.so.V) shared, rtl:no # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a static archive case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then aix_use_runtimelinking=yes break fi done if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then # With aix-soname=svr4, we create the lib.so.V shared archives only, # so we don't have lib.a shared libs to link our executables. # We have to force runtime linking in this case. aix_use_runtimelinking=yes LDFLAGS="$LDFLAGS -Wl,-brtl" fi ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds='' hardcode_direct=yes hardcode_direct_absolute=yes hardcode_libdir_separator=':' link_all_deplibs=yes file_list_spec='$wl-f,' case $with_aix_soname,$aix_use_runtimelinking in aix,*) ;; # traditional, no import file svr4,* | *,yes) # use import file # The Import File defines what to hardcode. hardcode_direct=no hardcode_direct_absolute=no ;; esac if test yes = "$GCC"; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi ;; esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; then shared_flag="$shared_flag "'$wl-G' fi # Need to ensure runtime linking is disabled for the traditional # shared library, or the linker may eventually find shared libraries # /with/ Import File - we do not want to mix them. shared_flag_aix='-shared' shared_flag_svr4='-shared $wl-G' else # not using gcc if test ia64 = "$host_cpu"; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test yes = "$aix_use_runtimelinking"; then shared_flag='$wl-G' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi export_dynamic_flag_spec='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols=yes if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' # Determine the default libpath from the value encoded in an # empty executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if test ${lt_cv_aix_libpath_+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=/usr/lib:/lib fi ;; esac fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else if test ia64 = "$host_cpu"; then hardcode_libdir_flag_spec='$wl-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if test ${lt_cv_aix_libpath_+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=/usr/lib:/lib fi ;; esac fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag=' $wl-bernotok' allow_undefined_flag=' $wl-berok' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec='$convenience' fi archive_cmds_need_lc=yes archive_expsym_cmds='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' # -brtl affects multiple linker settings, -berok does not and is overridden later compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' if test svr4 != "$with_aix_soname"; then # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' fi if test aix != "$with_aix_soname"; then archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' else # used by -dlpreopen to get the symbols archive_expsym_cmds="$archive_expsym_cmds"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; bsdi[45]*) export_dynamic_flag_spec=-rdynamic ;; cygwin* | mingw* | windows* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++ or Intel C++ Compiler. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl* | icl*) # Native MSVC or ICC hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported always_export_symbols=yes file_list_spec='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -Fe$output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then cp "$export_symbols" "$output_objdir/$soname.def"; echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; else $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -Fe$tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, )='true' enable_shared_with_static_runtimes=yes exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib old_postinstall_cmds='chmod 644 $oldlib' postlink_cmds='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC and ICC wrapper hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_from_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' enable_shared_with_static_runtimes=yes ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc=no hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported if test yes = "$lt_cv_ld_force_load"; then whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec='' fi link_all_deplibs=yes allow_undefined_flag=$_lt_dar_allow_undefined case $cc_basename in ifort*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test yes = "$_lt_dar_can_shared"; then output_verbose_link_cmd=func_echo_all archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" archive_expsym_cmds="$SED 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" module_expsym_cmds="$SED -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" else ld_shlibs=no fi ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly* | midnightbsd*) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9*) if test yes = "$GCC"; then archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' else archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes export_dynamic_flag_spec='$wl-E' ;; hpux10*) if test yes,no = "$GCC,$with_gnu_ld"; then archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test no = "$with_gnu_ld"; then hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes fi ;; hpux11*) if test yes,no = "$GCC,$with_gnu_ld"; then case $host_cpu in hppa*64*) archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 printf %s "checking if $CC understands -b... " >&6; } if test ${lt_cv_prog_compiler__b+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_prog_compiler__b=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -b" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler__b=yes fi else lt_cv_prog_compiler__b=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 printf "%s\n" "$lt_cv_prog_compiler__b" >&6; } if test yes = "$lt_cv_prog_compiler__b"; then archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi ;; esac fi if test no = "$with_gnu_ld"; then hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: case $host_cpu in hppa*64*|ia64*) hardcode_direct=no hardcode_shlibpath_var=no ;; *) hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test yes = "$GCC"; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 printf %s "checking whether the $host_os linker accepts -exported_symbol... " >&6; } if test ${lt_cv_irix_exported_symbol+y} then : printf %s "(cached) " >&6 else case e in #( e) save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int foo (void) { return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : lt_cv_irix_exported_symbol=yes else case e in #( e) lt_cv_irix_exported_symbol=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 printf "%s\n" "$lt_cv_irix_exported_symbol" >&6; } if test yes = "$lt_cv_irix_exported_symbol"; then archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' fi else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: inherit_rpath=yes link_all_deplibs=yes ;; linux*) case $cc_basename in tcc*) # Fabrice Bellard et al's Tiny C Compiler ld_shlibs=yes archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' ;; esac ;; *-mlibc) ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; *nto* | *qnx*) ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes hardcode_shlibpath_var=no hardcode_direct_absolute=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec='$wl-rpath,$libdir' export_dynamic_flag_spec='$wl-E' else archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='$wl-rpath,$libdir' fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported shrext_cmds=.dll archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' old_archive_from_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes=yes file_list_spec='@' ;; osf3*) if test yes = "$GCC"; then allow_undefined_flag=' $wl-expect_unresolved $wl\*' archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test yes = "$GCC"; then allow_undefined_flag=' $wl-expect_unresolved $wl\*' archive_cmds='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi archive_cmds_need_lc='no' hardcode_libdir_separator=: ;; serenity*) ;; solaris*) no_undefined_flag=' -z defs' if test yes = "$GCC"; then wlarc='$wl' archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' archive_cmds='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='$wl' archive_cmds='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. GCC discards it without '$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test yes = "$GCC"; then whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' else whole_archive_flag_spec='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs=yes ;; sunos4*) if test sequent = "$host_vendor"; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) case $host_vendor in sni) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds='$CC -r -o $output$reload_objs' hardcode_direct=no ;; motorola) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag='$wl-z,text' archive_cmds_need_lc=no hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag='$wl-z,text' allow_undefined_flag='$wl-z,nodefs' archive_cmds_need_lc=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='$wl-R,$libdir' hardcode_libdir_separator=':' link_all_deplibs=yes export_dynamic_flag_spec='$wl-Bexport' runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac if test sni = "$host_vendor"; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) export_dynamic_flag_spec='$wl-Blargedynsym' ;; esac fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 printf "%s\n" "$ld_shlibs" >&6; } test no = "$ld_shlibs" && can_build_shared=no with_gnu_ld=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc" in x|xyes) # Assume -lc should be added archive_cmds_need_lc=yes if test yes,yes = "$GCC,$enable_shared"; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 printf %s "checking whether -lc should be explicitly linked in... " >&6; } if test ${lt_cv_archive_cmds_need_lc+y} then : printf %s "(cached) " >&6 else case e in #( e) $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl pic_flag=$lt_prog_compiler_pic compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc=no else lt_cv_archive_cmds_need_lc=yes fi allow_undefined_flag=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 printf "%s\n" "$lt_cv_archive_cmds_need_lc" >&6; } archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc ;; esac fi ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 printf %s "checking dynamic linker characteristics... " >&6; } if test yes = "$GCC"; then case $host_os in darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; *) lt_awk_arg='/^libraries:/' ;; esac case $host_os in mingw* | windows* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;; *) lt_sed_strip_eq='s|=/|/|g' ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary... lt_tmp_lt_search_path_spec= lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` # ...but if some path component already ends with the multilib dir we assume # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). case "$lt_multi_os_dir; $lt_search_path_spec " in "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) lt_multi_os_dir= ;; esac for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" elif test -n "$lt_multi_os_dir"; then test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS = " "; FS = "/|\n";} { lt_foo = ""; lt_count = 0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo = "/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[lt_foo]++; } if (lt_freq[lt_foo] == 1) { print lt_foo; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | windows* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's|/\([A-Za-z]:\)|\1|g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=.so postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='$libname$release$shared_ext$major' ;; aix[4-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test ia64 = "$host_cpu"; then # AIX 5 supports IA64 library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line '#! .'. This would cause the generated library to # depend on '.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # Using Import Files as archive members, it is possible to support # filename-based versioning of shared library archives on AIX. While # this would work for both with and without runtime linking, it will # prevent static linking of such archives. So we do filename-based # shared library versioning with .so extension only, which is used # when both runtime linking and shared linking is enabled. # Unfortunately, runtime linking may impact performance, so we do # not want this to be the default eventually. Also, we use the # versioned .so libs for executables only if there is the -brtl # linker flag in LDFLAGS as well, or --enable-aix-soname=svr4 only. # To allow for filename-based versioning support, we need to create # libNAME.so.V as an archive file, containing: # *) an Import File, referring to the versioned filename of the # archive as well as the shared archive member, telling the # bitwidth (32 or 64) of that shared object, and providing the # list of exported symbols of that shared object, eventually # decorated with the 'weak' keyword # *) the shared object with the F_LOADONLY flag set, to really avoid # it being seen by the linker. # At run time we better use the real file rather than another symlink, # but for link time we create the symlink libNAME.so -> libNAME.so.V case $with_aix_soname,$aix_use_runtimelinking in # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. aix,yes) # traditional libtool dynamic_linker='AIX unversionable lib.so' # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; aix,no) # traditional AIX only dynamic_linker='AIX lib.a(lib.so.V)' # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' ;; svr4,*) # full svr4 only dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,yes) # both, prefer svr4 dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # unpreferred sharedlib libNAME.a needs extra handling postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,no) # both, prefer aix dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' ;; esac shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='$libname$shared_ext' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | windows* | pw32* | cegcc*) version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds # If user builds GCC with multilib enabled, # it should just install on $(libdir) # not on $(libdir)/../bin or 32 bits dlls would override 64 bit ones. if test xyes = x"$multilib"; then postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ $install_prog $dir/$dlname $destdir/$dlname~ chmod a+x $destdir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib $destdir/$dlname'\'' || exit \$?; fi' else postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' fi postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo $libname | $SED -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" ;; mingw* | windows* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo $libname | $SED -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl* | *,icl*) # Native MSVC or ICC libname_spec='$name' soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' library_names_spec='$libname.dll.lib' case $build_os in mingw* | windows*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec=$LIB if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC and ICC wrapper library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' soname_spec='$libname$release$major$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly* | midnightbsd*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' need_version=yes ;; esac case $host_cpu in powerpc64) # On FreeBSD bi-arch platforms, a different variable is used for 32-bit # binaries. See . cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int test_pointer_size[sizeof (void *) - 5]; _ACEOF if ac_fn_c_try_compile "$LINENO" then : shlibpath_var=LD_LIBRARY_PATH else case e in #( e) shlibpath_var=LD_32_LIBRARY_PATH ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; *) shlibpath_var=LD_LIBRARY_PATH ;; esac case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec='/boot/system/non-packaged/develop/lib /boot/system/develop/lib' sys_lib_dlsearch_path_spec='/boot/home/config/non-packaged/lib /boot/home/config/lib /boot/system/non-packaged/lib /boot/system/lib' hardcode_into_libs=no ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' if test 32 = "$HPUX_IA64_MODE"; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" sys_lib_dlsearch_path_spec=/usr/lib/hpux32 else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" sys_lib_dlsearch_path_spec=/usr/lib/hpux64 fi ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test yes = "$lt_cv_prog_gnu_ld"; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; linux*android*) version_type=none # Android doesn't support versioned libraries. need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext $libname$shared_ext' soname_spec='$libname$release$shared_ext' finish_cmds= shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes dynamic_linker='Android linker' # -rpath works at least for libraries that are not overridden by # libraries installed in system locations. hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH if test ${lt_cv_shlibpath_overrides_runpath+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir ;; esac fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Add ABI-specific directories to the system library path. sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" # Ideally, we could use ldconfig to report *all* directories which are # searched for libraries, however this is still not possible. Aside from not # being certain /sbin/ldconfig is available, command # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, # even though it is searched at run-time. Try to do the best guess by # appending ld.so.conf contents (and includes) to the search path. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; *-mlibc) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='mlibc ld.so' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec=/usr/lib need_lib_prefix=no if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then need_version=no else need_version=yes fi library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no # OS/2 can only load a DLL with a base name of 8 characters or less. soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; v=$($ECHO $release$versuffix | tr -d .-); n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); $ECHO $n$v`$shared_ext' library_names_spec='${libname}_dll.$libext' dynamic_linker='OS/2 ld.exe' shlibpath_var=BEGINLIBPATH sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; rdos*) dynamic_linker=no ;; serenity*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no dynamic_linker='SerenityOS LibELF' ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test yes = "$with_gnu_ld"; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec; then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' soname_spec='$libname$shared_ext.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=sco need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test yes = "$with_gnu_ld"; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; emscripten*) version_type=none need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext' soname_spec='$libname$release$shared_ext' finish_cmds= dynamic_linker="Emscripten linker" lt_prog_compiler_wl= lt_prog_compiler_pic= lt_prog_compiler_static= if test yes = "$GCC"; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi lt_prog_compiler_pic='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | windows* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) lt_prog_compiler_pic='-fPIC' ;; esac ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic=-Kconform_pic fi ;; *) lt_prog_compiler_pic='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 lt_prog_compiler_wl='-Xlinker ' if test -n "$lt_prog_compiler_pic"; then lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl='-Wl,' if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' case $cc_basename in nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; esac ;; mingw* | windows* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static='$wl-static' ;; esac ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static='$wl-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64, which still supported -KPIC. ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; *flang* | ftn | f18* | f95*) # Flang compiler. lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; # Lahey Fortran 8.1. lf95*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='--shared' lt_prog_compiler_static='--static' ;; nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; tcc*) # Fabrice Bellard et al's Tiny C Compiler lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; ccc*) lt_prog_compiler_wl='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-qpic' lt_prog_compiler_static='-qstaticlink' ;; *) case `$CC -V 2>&1 | $SED 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='' ;; *Sun\ F* | *Sun*Fortran*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Wl,' ;; *Intel*\ [CF]*Compiler*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; *Portland\ Group*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; esac ;; esac ;; newsos6) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; *-mlibc) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static='-non_shared' ;; rdos*) lt_prog_compiler_static='-non_shared' ;; serenity*) ;; solaris*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) lt_prog_compiler_wl='-Qoption ld ';; *) lt_prog_compiler_wl='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl='-Qoption ld ' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic='-Kconform_pic' lt_prog_compiler_static='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; unicos*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_can_build_shared=no ;; uts4*) lt_prog_compiler_pic='-pic' lt_prog_compiler_static='-Bstatic' ;; *) lt_prog_compiler_can_build_shared=no ;; esac fi case $host_os in # For platforms that do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; *) lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 printf %s "checking for $compiler option to produce PIC... " >&6; } if test ${lt_cv_prog_compiler_pic+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_prog_compiler_pic=$lt_prog_compiler_pic ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 printf "%s\n" "$lt_cv_prog_compiler_pic" >&6; } lt_prog_compiler_pic=$lt_cv_prog_compiler_pic # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 printf %s "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } if test ${lt_cv_prog_compiler_pic_works+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic -DPIC" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works=yes fi fi $RM conftest* ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 printf "%s\n" "$lt_cv_prog_compiler_pic_works" >&6; } if test yes = "$lt_cv_prog_compiler_pic_works"; then case $lt_prog_compiler_pic in "" | " "*) ;; *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; esac else lt_prog_compiler_pic= lt_prog_compiler_can_build_shared=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 printf %s "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if test ${lt_cv_prog_compiler_static_works+y} then : printf %s "(cached) " >&6 else case e in #( e) lt_cv_prog_compiler_static_works=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works=yes fi else lt_cv_prog_compiler_static_works=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 printf "%s\n" "$lt_cv_prog_compiler_static_works" >&6; } if test yes = "$lt_cv_prog_compiler_static_works"; then : else lt_prog_compiler_static= fi ='-fPIC' archive_cmds='$CC -sSIDE_MODULE=2 -shared $libobjs $deplibs $compiler_flags -o $lib' archive_expsym_cmds='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -sSIDE_MODULE=2 -shared $libobjs $deplibs $compiler_flags -o $lib -s EXPORTED_FUNCTIONS=@$output_objdir/$soname.expsym' archive_cmds_need_lc=no no_undefined_flag= ;; *) dynamic_linker=no ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 printf "%s\n" "$dynamic_linker" >&6; } test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test yes = "$GCC"; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec fi if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec fi # remember unaugmented sys_lib_dlsearch_path content for libtool script decls... configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec # ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" # to be used as default LT_SYS_LIBRARY_PATH value in generated libtool configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 printf %s "checking how to hardcode library paths into programs... " >&6; } hardcode_action= if test -n "$hardcode_libdir_flag_spec" || test -n "$runpath_var" || test yes = "$hardcode_automatic"; then # We can hardcode non-existent directories. if test no != "$hardcode_direct" && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, )" && test no != "$hardcode_minus_L"; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 printf "%s\n" "$hardcode_action" >&6; } if test relink = "$hardcode_action" || test yes = "$inherit_rpath"; then # Fast installation is not supported enable_fast_install=no elif test yes = "$shlibpath_overrides_runpath" || test no = "$enable_shared"; then # Fast installation is not necessary enable_fast_install=needless fi if test yes != "$enable_dlopen"; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen=load_add_on lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | windows* | pw32* | cegcc*) lt_cv_dlopen=LoadLibrary lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen=dlopen lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 printf %s "checking for dlopen in -ldl... " >&6; } if test ${ac_cv_lib_dl_dlopen+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. The 'extern "C"' is for builds by C++ compilers; although this is not generally supported in C code supporting it here has little cost and some practical benefit (sr 110532). */ #ifdef __cplusplus extern "C" #endif char dlopen (void); int main (void) { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_dl_dlopen=yes else case e in #( e) ac_cv_lib_dl_dlopen=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl else case e in #( e) lt_cv_dlopen=dyld lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; esac fi ;; tpf*) # Don't try to run any link tests for TPF. We know it's impossible # because TPF is a cross-compiler, and we know how we open DSOs. lt_cv_dlopen=dlopen lt_cv_dlopen_libs= lt_cv_dlopen_self=no ;; *) ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" if test "x$ac_cv_func_shl_load" = xyes then : lt_cv_dlopen=shl_load else case e in #( e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 printf %s "checking for shl_load in -ldld... " >&6; } if test ${ac_cv_lib_dld_shl_load+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. The 'extern "C"' is for builds by C++ compilers; although this is not generally supported in C code supporting it here has little cost and some practical benefit (sr 110532). */ #ifdef __cplusplus extern "C" #endif char shl_load (void); int main (void) { return shl_load (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_dld_shl_load=yes else case e in #( e) ac_cv_lib_dld_shl_load=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 printf "%s\n" "$ac_cv_lib_dld_shl_load" >&6; } if test "x$ac_cv_lib_dld_shl_load" = xyes then : lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld else case e in #( e) ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" if test "x$ac_cv_func_dlopen" = xyes then : lt_cv_dlopen=dlopen else case e in #( e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 printf %s "checking for dlopen in -ldl... " >&6; } if test ${ac_cv_lib_dl_dlopen+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. The 'extern "C"' is for builds by C++ compilers; although this is not generally supported in C code supporting it here has little cost and some practical benefit (sr 110532). */ #ifdef __cplusplus extern "C" #endif char dlopen (void); int main (void) { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_dl_dlopen=yes else case e in #( e) ac_cv_lib_dl_dlopen=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl else case e in #( e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 printf %s "checking for dlopen in -lsvld... " >&6; } if test ${ac_cv_lib_svld_dlopen+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. The 'extern "C"' is for builds by C++ compilers; although this is not generally supported in C code supporting it here has little cost and some practical benefit (sr 110532). */ #ifdef __cplusplus extern "C" #endif char dlopen (void); int main (void) { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_svld_dlopen=yes else case e in #( e) ac_cv_lib_svld_dlopen=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 printf "%s\n" "$ac_cv_lib_svld_dlopen" >&6; } if test "x$ac_cv_lib_svld_dlopen" = xyes then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld else case e in #( e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 printf %s "checking for dld_link in -ldld... " >&6; } if test ${ac_cv_lib_dld_dld_link+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. The 'extern "C"' is for builds by C++ compilers; although this is not generally supported in C code supporting it here has little cost and some practical benefit (sr 110532). */ #ifdef __cplusplus extern "C" #endif char dld_link (void); int main (void) { return dld_link (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_dld_dld_link=yes else case e in #( e) ac_cv_lib_dld_dld_link=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 printf "%s\n" "$ac_cv_lib_dld_dld_link" >&6; } if test "x$ac_cv_lib_dld_dld_link" = xyes then : lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld fi ;; esac fi ;; esac fi ;; esac fi ;; esac fi ;; esac fi ;; esac if test no = "$lt_cv_dlopen"; then enable_dlopen=no else enable_dlopen=yes fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS=$CPPFLAGS test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS=$LDFLAGS wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS=$LIBS LIBS="$lt_cv_dlopen_libs $LIBS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 printf %s "checking whether a program can dlopen itself... " >&6; } if test ${lt_cv_dlopen_self+y} then : printf %s "(cached) " >&6 else case e in #( e) if test yes = "$cross_compiling"; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord (void) __attribute__((visibility("default"))); #endif int fnord (void) { return 42; } int main (void) { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 printf "%s\n" "$lt_cv_dlopen_self" >&6; } if test yes = "$lt_cv_dlopen_self"; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 printf %s "checking whether a statically linked program can dlopen itself... " >&6; } if test ${lt_cv_dlopen_self_static+y} then : printf %s "(cached) " >&6 else case e in #( e) if test yes = "$cross_compiling"; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord (void) __attribute__((visibility("default"))); #endif int fnord (void) { return 42; } int main (void) { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 printf "%s\n" "$lt_cv_dlopen_self_static" >&6; } fi CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi striplib= old_striplib= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 printf %s "checking whether stripping libraries is possible... " >&6; } if test -z "$STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } else if $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then old_striplib="$STRIP --strip-debug" striplib="$STRIP --strip-unneeded" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else case $host_os in darwin*) # FIXME - insert some real tests, host_os isn't really good enough striplib="$STRIP -x" old_striplib="$STRIP -S" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; freebsd*) if $STRIP -V 2>&1 | $GREP "elftoolchain" >/dev/null; then old_striplib="$STRIP --strip-debug" striplib="$STRIP --strip-unneeded" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } ;; esac fi fi # Report what library types will actually be built { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 printf %s "checking if libtool supports shared libraries... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 printf "%s\n" "$can_build_shared" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 printf %s "checking whether to build shared libraries... " >&6; } test no = "$can_build_shared" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[4-9]*) if test ia64 != "$host_cpu"; then case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in yes,aix,yes) ;; # shared object as lib.so file only yes,svr4,*) ;; # shared object as lib.so archive member only yes,*) enable_static=no ;; # shared object in lib.a archive as well esac fi ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 printf "%s\n" "$enable_shared" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 printf %s "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 printf "%s\n" "$enable_static" >&6; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC=$lt_save_CC ac_config_commands="$ac_config_commands libtool" # Only expand once: # Use 64-bit file offsets everywhere (safe, independent of the C library ABI). printf "%s\n" "#define _FILE_OFFSET_BITS 64" >>confdefs.h # NOTE: We deliberately do NOT define _TIME_BITS=64 here. # # _TIME_BITS is a glibc ABI switch, not a private compiler flag: it changes the # size of time_t for this program. It MUST stay consistent with every linked # library (GnuTLS, GLib, SQLite, ...). On platforms where 64-bit time_t is the # ABI (amd64, and 32-bit ports such as armhf) the toolchain already sets it, so # forcing it here is redundant. On i386 the distribution toolchains (Debian, # Ubuntu, Gentoo, openSUSE) keep the legacy 32-bit time_t for binary # compatibility, and the system GnuTLS/GLib are built that way. Forcing # _TIME_BITS=64 only in gnoMint made time_t 8 bytes here while GnuTLS still # expected 4, so gnutls_x509_crt_set_*_time() read the wrong number of bytes off # the stack and corrupted following arguments (manifesting as "Error when # setting certificate serial number"). See issue #86. Letting the toolchain # decide is the only ABI-correct choice. # Checks for header files. # Autoupdate added the next two lines to ensure that your configure # script's behavior did not change. They are probably safe to remove. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 printf %s "checking for egrep... " >&6; } if test ${ac_cv_path_EGREP+y} then : printf %s "(cached) " >&6 else case e in #( e) if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in egrep do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in #( *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; #( *) ac_count=0 printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" printf "%s\n" 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 printf "%s\n" "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" EGREP_TRADITIONAL=$EGREP ac_cv_path_EGREP_TRADITIONAL=$EGREP ac_fn_c_check_header_compile "$LINENO" "libintl.h" "ac_cv_header_libintl_h" "$ac_includes_default" if test "x$ac_cv_header_libintl_h" = xyes then : printf "%s\n" "#define HAVE_LIBINTL_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "locale.h" "ac_cv_header_locale_h" "$ac_includes_default" if test "x$ac_cv_header_locale_h" = xyes then : printf "%s\n" "#define HAVE_LOCALE_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default" if test "x$ac_cv_header_stdlib_h" = xyes then : printf "%s\n" "#define HAVE_STDLIB_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "string.h" "ac_cv_header_string_h" "$ac_includes_default" if test "x$ac_cv_header_string_h" = xyes then : printf "%s\n" "#define HAVE_STRING_H 1" >>confdefs.h fi # Checks for typedefs, structures, and compiler characteristics. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 printf %s "checking for an ANSI C-conforming const... " >&6; } if test ${ac_cv_c_const+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __cplusplus /* Ultrix mips cc rejects this sort of thing. */ typedef int charset[2]; const charset cs = { 0, 0 }; /* SunOS 4.1.1 cc rejects this. */ char const *const *pcpcc; char **ppc; /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; /* IBM XL C 1.02.0.0 rejects this. It does not let you subtract one const X* pointer from another in an arm of an if-expression whose if-part is not a constant expression */ const char *g = "string"; pcpcc = &g + (g ? g-g : 0); /* HPUX 7.0 cc rejects these. */ ++pcpcc; ppc = (char**) pcpcc; pcpcc = (char const *const *) ppc; { /* SCO 3.2v4 cc rejects this sort of thing. */ char tx; char *t = &tx; char const *s = 0 ? (char *) 0 : (char const *) 0; *t++ = 0; if (s) return 0; } { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ int x[] = {25, 17}; const int *foo = &x[0]; ++foo; } { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ typedef const int *iptr; iptr p = 0; ++p; } { /* IBM XL C 1.02.0.0 rejects this sort of thing, saying "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ struct s { int j; const int *ap[3]; } bx; struct s *b = &bx; b->j = 5; } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; if (!foo) return 0; } return !cs[0] && !zero.x; #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_c_const=yes else case e in #( e) ac_cv_c_const=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 printf "%s\n" "$ac_cv_c_const" >&6; } if test $ac_cv_c_const = no; then printf "%s\n" "#define const /**/" >>confdefs.h fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 printf %s "checking for inline... " >&6; } if test ${ac_cv_c_inline+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifndef __cplusplus typedef int foo_t; static $ac_kw foo_t static_foo (void) {return 0; } $ac_kw foo_t foo (void) {return 0; } #endif _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_c_inline=$ac_kw fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext test "$ac_cv_c_inline" != no && break done ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 printf "%s\n" "$ac_cv_c_inline" >&6; } case $ac_cv_c_inline in inline | yes) ;; *) case $ac_cv_c_inline in no) ac_val=;; *) ac_val=$ac_cv_c_inline;; esac cat >>confdefs.h <<_ACEOF #ifndef __cplusplus #define inline $ac_val #endif _ACEOF ;; esac ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" if test "x$ac_cv_type_size_t" = xyes then : else case e in #( e) printf "%s\n" "#define size_t unsigned int" >>confdefs.h ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5 printf %s "checking whether struct tm is in sys/time.h or time.h... " >&6; } if test ${ac_cv_struct_tm+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main (void) { struct tm tm; int *p = &tm.tm_sec; return !p; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_struct_tm=time.h else case e in #( e) ac_cv_struct_tm=sys/time.h ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_tm" >&5 printf "%s\n" "$ac_cv_struct_tm" >&6; } if test $ac_cv_struct_tm = sys/time.h; then printf "%s\n" "#define TM_IN_SYS_TIME 1" >>confdefs.h fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working volatile" >&5 printf %s "checking for working volatile... " >&6; } if test ${ac_cv_c_volatile+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { volatile int x; int * volatile y = (int *) 0; return !x && !y; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_c_volatile=yes else case e in #( e) ac_cv_c_volatile=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_volatile" >&5 printf "%s\n" "$ac_cv_c_volatile" >&6; } if test $ac_cv_c_volatile = no; then printf "%s\n" "#define volatile /**/" >>confdefs.h fi # Checks for library functions. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU libc compatible malloc" >&5 printf %s "checking for GNU libc compatible malloc... " >&6; } if test ${ac_cv_func_malloc_0_nonnull+y} then : printf %s "(cached) " >&6 else case e in #( e) if test "$cross_compiling" = yes then : case "$host_os" in # (( # Guess yes on platforms where we know the result. *-gnu* | freebsd* | netbsd* | openbsd* | bitrig* \ | hpux* | solaris* | cygwin* | mingw* | windows* | msys* ) ac_cv_func_malloc_0_nonnull=yes ;; # If we don't know, assume the worst. *) ac_cv_func_malloc_0_nonnull=no ;; esac else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { void *p = malloc (0); int result = !p; free (p); return result; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : ac_cv_func_malloc_0_nonnull=yes else case e in #( e) ac_cv_func_malloc_0_nonnull=no ;; esac fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_malloc_0_nonnull" >&5 printf "%s\n" "$ac_cv_func_malloc_0_nonnull" >&6; } if test $ac_cv_func_malloc_0_nonnull = yes then : printf "%s\n" "#define HAVE_MALLOC 1" >>confdefs.h else case e in #( e) printf "%s\n" "#define HAVE_MALLOC 0" >>confdefs.h case " $LIBOBJS " in *" malloc.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS malloc.$ac_objext" ;; esac printf "%s\n" "#define malloc rpl_malloc" >>confdefs.h ;; esac fi ac_func= for ac_item in $ac_func_c_list do if test $ac_func; then ac_fn_c_check_func "$LINENO" $ac_func ac_cv_func_$ac_func if eval test \"x\$ac_cv_func_$ac_func\" = xyes; then echo "#define $ac_item 1" >> confdefs.h fi ac_func= else ac_func=$ac_item fi done { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working mktime" >&5 printf %s "checking for working mktime... " >&6; } if test ${ac_cv_func_working_mktime+y} then : printf %s "(cached) " >&6 else case e in #( e) if test "$cross_compiling" = yes then : ac_cv_func_working_mktime=no else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Test program from Paul Eggert and Tony Leneis. */ #include #ifdef HAVE_SYS_TIME_H # include #endif #include #include #ifdef HAVE_UNISTD_H # include #endif #ifndef HAVE_ALARM # define alarm(X) /* empty */ #endif /* Work around redefinition to rpl_putenv by other config tests. */ #undef putenv static time_t time_t_max; static time_t time_t_min; /* Values we'll use to set the TZ environment variable. */ static const char *tz_strings[] = { (const char *) 0, "TZ=GMT0", "TZ=JST-9", "TZ=EST+3EDT+2,M10.1.0/00:00:00,M2.3.0/00:00:00" }; #define N_STRINGS (sizeof (tz_strings) / sizeof (tz_strings[0])) /* Return 0 if mktime fails to convert a date in the spring-forward gap. Based on a problem report from Andreas Jaeger. */ static int spring_forward_gap (void) { /* glibc (up to about 1998-10-07) failed this test. */ struct tm tm; /* Use the portable POSIX.1 specification "TZ=PST8PDT,M4.1.0,M10.5.0" instead of "TZ=America/Vancouver" in order to detect the bug even on systems that don't support the Olson extension, or don't have the full zoneinfo tables installed. */ putenv ((char*) "TZ=PST8PDT,M4.1.0,M10.5.0"); tm.tm_year = 98; tm.tm_mon = 3; tm.tm_mday = 5; tm.tm_hour = 2; tm.tm_min = 0; tm.tm_sec = 0; tm.tm_isdst = -1; return mktime (&tm) != (time_t) -1; } static int mktime_test1 (time_t now) { struct tm *lt; return ! (lt = localtime (&now)) || mktime (lt) == now; } static int mktime_test (time_t now) { return (mktime_test1 (now) && mktime_test1 ((time_t) (time_t_max - now)) && mktime_test1 ((time_t) (time_t_min + now))); } static int irix_6_4_bug (void) { /* Based on code from Ariel Faigon. */ struct tm tm; tm.tm_year = 96; tm.tm_mon = 3; tm.tm_mday = 0; tm.tm_hour = 0; tm.tm_min = 0; tm.tm_sec = 0; tm.tm_isdst = -1; mktime (&tm); return tm.tm_mon == 2 && tm.tm_mday == 31; } static int bigtime_test (int j) { struct tm tm; time_t now; tm.tm_year = tm.tm_mon = tm.tm_mday = tm.tm_hour = tm.tm_min = tm.tm_sec = j; now = mktime (&tm); if (now != (time_t) -1) { struct tm *lt = localtime (&now); if (! (lt && lt->tm_year == tm.tm_year && lt->tm_mon == tm.tm_mon && lt->tm_mday == tm.tm_mday && lt->tm_hour == tm.tm_hour && lt->tm_min == tm.tm_min && lt->tm_sec == tm.tm_sec && lt->tm_yday == tm.tm_yday && lt->tm_wday == tm.tm_wday && ((lt->tm_isdst < 0 ? -1 : 0 < lt->tm_isdst) == (tm.tm_isdst < 0 ? -1 : 0 < tm.tm_isdst)))) return 0; } return 1; } static int year_2050_test (void) { /* The correct answer for 2050-02-01 00:00:00 in Pacific time, ignoring leap seconds. */ unsigned long int answer = 2527315200UL; struct tm tm; time_t t; tm.tm_year = 2050 - 1900; tm.tm_mon = 2 - 1; tm.tm_mday = 1; tm.tm_hour = tm.tm_min = tm.tm_sec = 0; tm.tm_isdst = -1; /* Use the portable POSIX.1 specification "TZ=PST8PDT,M4.1.0,M10.5.0" instead of "TZ=America/Vancouver" in order to detect the bug even on systems that don't support the Olson extension, or don't have the full zoneinfo tables installed. */ putenv ((char*) "TZ=PST8PDT,M4.1.0,M10.5.0"); t = mktime (&tm); /* Check that the result is either a failure, or close enough to the correct answer that we can assume the discrepancy is due to leap seconds. */ return (t == (time_t) -1 || (0 < t && answer - 120 <= t && t <= answer + 120)); } int main (void) { time_t t, delta; int i, j; /* This test makes some buggy mktime implementations loop. Give up after 60 seconds; a mktime slower than that isn't worth using anyway. */ alarm (60); for (;;) { t = (time_t_max << 1) + 1; if (t <= time_t_max) break; time_t_max = t; } time_t_min = - ((time_t) ~ (time_t) 0 == (time_t) -1) - time_t_max; delta = time_t_max / 997; /* a suitable prime number */ for (i = 0; i < N_STRINGS; i++) { if (tz_strings[i]) putenv ((char*) tz_strings[i]); for (t = 0; t <= time_t_max - delta; t += delta) if (! mktime_test (t)) return 1; if (! (mktime_test ((time_t) 1) && mktime_test ((time_t) (60 * 60)) && mktime_test ((time_t) (60 * 60 * 24)))) return 1; for (j = 1; ; j <<= 1) if (! bigtime_test (j)) return 1; else if (INT_MAX / 2 < j) break; if (! bigtime_test (INT_MAX)) return 1; } return ! (irix_6_4_bug () && spring_forward_gap () && year_2050_test ()); } _ACEOF if ac_fn_c_try_run "$LINENO" then : ac_cv_func_working_mktime=yes else case e in #( e) ac_cv_func_working_mktime=no ;; esac fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_working_mktime" >&5 printf "%s\n" "$ac_cv_func_working_mktime" >&6; } if test $ac_cv_func_working_mktime = no; then case " $LIBOBJS " in *" mktime.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS mktime.$ac_objext" ;; esac fi for ac_func in strftime do : ac_fn_c_check_func "$LINENO" "strftime" "ac_cv_func_strftime" if test "x$ac_cv_func_strftime" = xyes then : printf "%s\n" "#define HAVE_STRFTIME 1" >>confdefs.h else case e in #( e) # strftime is in -lintl on SCO UNIX. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for strftime in -lintl" >&5 printf %s "checking for strftime in -lintl... " >&6; } if test ${ac_cv_lib_intl_strftime+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_check_lib_save_LIBS=$LIBS LIBS="-lintl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. The 'extern "C"' is for builds by C++ compilers; although this is not generally supported in C code supporting it here has little cost and some practical benefit (sr 110532). */ #ifdef __cplusplus extern "C" #endif char strftime (void); int main (void) { return strftime (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_intl_strftime=yes else case e in #( e) ac_cv_lib_intl_strftime=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_strftime" >&5 printf "%s\n" "$ac_cv_lib_intl_strftime" >&6; } if test "x$ac_cv_lib_intl_strftime" = xyes then : printf "%s\n" "#define HAVE_STRFTIME 1" >>confdefs.h LIBS="-lintl $LIBS" fi ;; esac fi done ac_fn_c_check_func "$LINENO" "memset" "ac_cv_func_memset" if test "x$ac_cv_func_memset" = xyes then : printf "%s\n" "#define HAVE_MEMSET 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "strcasecmp" "ac_cv_func_strcasecmp" if test "x$ac_cv_func_strcasecmp" = xyes then : printf "%s\n" "#define HAVE_STRCASECMP 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "strdup" "ac_cv_func_strdup" if test "x$ac_cv_func_strdup" = xyes then : printf "%s\n" "#define HAVE_STRDUP 1" >>confdefs.h fi # gettext stuff GETTEXT_PACKAGE=${PACKAGE} printf "%s\n" "#define GETTEXT_PACKAGE \"$GETTEXT_PACKAGE\"" >>confdefs.h { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 printf %s "checking whether NLS is requested... " >&6; } # Check whether --enable-nls was given. if test ${enable_nls+y} then : enableval=$enable_nls; USE_NLS=$enableval else case e in #( e) USE_NLS=yes ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 printf "%s\n" "$USE_NLS" >&6; } GETTEXT_MACRO_VERSION=0.19 # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which # contains only /bin. Note that ksh looks also at the FPATH variable, # so we have to set that as well for the test. PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ || PATH_SEPARATOR=';' } fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_MSGFMT+y} then : printf %s "(cached) " >&6 else case e in #( e) case "$MSGFMT" in [\\/]* | ?:[\\/]*) ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then echo "$as_me: trying $ac_dir/$ac_word..." >&5 if $ac_dir/$ac_word --statistics /dev/null >&5 2>&1 && (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" ;; esac ;; esac fi MSGFMT="$ac_cv_path_MSGFMT" if test "$MSGFMT" != ":"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 printf "%s\n" "$MSGFMT" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_GMSGFMT+y} then : printf %s "(cached) " >&6 else case e in #( e) case $GMSGFMT in [\\/]* | ?:[\\/]*) ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_GMSGFMT="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" ;; esac ;; esac fi GMSGFMT=$ac_cv_path_GMSGFMT if test -n "$GMSGFMT"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 printf "%s\n" "$GMSGFMT" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;; *) MSGFMT_015=$MSGFMT ;; esac case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; *) GMSGFMT_015=$GMSGFMT ;; esac # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which # contains only /bin. Note that ksh looks also at the FPATH variable, # so we have to set that as well for the test. PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ || PATH_SEPARATOR=';' } fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_XGETTEXT+y} then : printf %s "(cached) " >&6 else case e in #( e) case "$XGETTEXT" in [\\/]* | ?:[\\/]*) ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then echo "$as_me: trying $ac_dir/$ac_word..." >&5 if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&5 2>&1 && (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" ;; esac ;; esac fi XGETTEXT="$ac_cv_path_XGETTEXT" if test "$XGETTEXT" != ":"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 printf "%s\n" "$XGETTEXT" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi rm -f messages.po case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;; *) XGETTEXT_015=$XGETTEXT ;; esac # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which # contains only /bin. Note that ksh looks also at the FPATH variable, # so we have to set that as well for the test. PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ || PATH_SEPARATOR=';' } fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "msgmerge", so it can be a program name with args. set dummy msgmerge; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_MSGMERGE+y} then : printf %s "(cached) " >&6 else case e in #( e) case "$MSGMERGE" in [\\/]* | ?:[\\/]*) ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then echo "$as_me: trying $ac_dir/$ac_word..." >&5 if $ac_dir/$ac_word --update -q /dev/null /dev/null >&5 2>&1; then ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" ;; esac ;; esac fi MSGMERGE="$ac_cv_path_MSGMERGE" if test "$MSGMERGE" != ":"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 printf "%s\n" "$MSGMERGE" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$localedir" || localedir='${datadir}/locale' test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= ac_config_commands="$ac_config_commands po-directories" if test "X$prefix" = "XNONE"; then acl_final_prefix="$ac_default_prefix" else acl_final_prefix="$prefix" fi if test "X$exec_prefix" = "XNONE"; then acl_final_exec_prefix='${prefix}' else acl_final_exec_prefix="$exec_prefix" fi acl_save_prefix="$prefix" prefix="$acl_final_prefix" eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" prefix="$acl_save_prefix" # Check whether --with-gnu-ld was given. if test ${with_gnu_ld+y} then : withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else case e in #( e) with_gnu_ld=no ;; esac fi # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which # contains only /bin. Note that ksh looks also at the FPATH variable, # so we have to set that as well for the test. PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ || PATH_SEPARATOR=';' } fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 printf %s "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`echo "$ac_prog"| sed 's%\\\\%/%g'` while echo "$ac_prog" | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 printf %s "checking for GNU ld... " >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 printf %s "checking for non-GNU ld... " >&6; } fi if test ${acl_cv_path_LD+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -z "$LD"; then acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$acl_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then acl_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$acl_cv_path_LD" -v 2>&1 &5 printf "%s\n" "$LD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 printf %s "checking if the linker ($LD) is GNU ld... " >&6; } if test ${acl_cv_prog_gnu_ld+y} then : printf %s "(cached) " >&6 else case e in #( e) # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 printf "%s\n" "$acl_cv_prog_gnu_ld" >&6; } with_gnu_ld=$acl_cv_prog_gnu_ld { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5 printf %s "checking for shared library run path origin... " >&6; } if test ${acl_cv_rpath+y} then : printf %s "(cached) " >&6 else case e in #( e) CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh . ./conftest.sh rm -f ./conftest.sh acl_cv_rpath=done ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5 printf "%s\n" "$acl_cv_rpath" >&6; } wl="$acl_cv_wl" acl_libext="$acl_cv_libext" acl_shlibext="$acl_cv_shlibext" acl_libname_spec="$acl_cv_libname_spec" acl_library_names_spec="$acl_cv_library_names_spec" acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" acl_hardcode_direct="$acl_cv_hardcode_direct" acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" # Check whether --enable-rpath was given. if test ${enable_rpath+y} then : enableval=$enable_rpath; : else case e in #( e) enable_rpath=yes ;; esac fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 printf %s "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if test ${ac_cv_prog_CPP+y} then : printf %s "(cached) " >&6 else case e in #( e) # Double quotes because $CC needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO" then : else case e in #( e) # Broken: fails on valid input. continue ;; esac fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO" then : # Broken: success on invalid input. continue else case e in #( e) # Passes both tests. ac_preproc_ok=: break ;; esac fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of 'break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok then : break fi done ac_cv_prog_CPP=$CPP ;; esac fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 printf "%s\n" "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO" then : else case e in #( e) # Broken: fails on valid input. continue ;; esac fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO" then : # Broken: success on invalid input. continue else case e in #( e) # Passes both tests. ac_preproc_ok=: break ;; esac fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of 'break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok then : else case e in #( e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See 'config.log' for more details" "$LINENO" 5; } ;; esac fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep -e" >&5 printf %s "checking for egrep -e... " >&6; } if test ${ac_cv_path_EGREP_TRADITIONAL+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -z "$EGREP_TRADITIONAL"; then ac_path_EGREP_TRADITIONAL_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in grep ggrep do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue # Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found. # Check for GNU $ac_path_EGREP_TRADITIONAL case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in #( *GNU*) ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_found=:;; #( *) ac_count=0 printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" printf "%s\n" 'EGREP_TRADITIONAL' >> "conftest.nl" "$ac_path_EGREP_TRADITIONAL" -E 'EGR(EP|AC)_TRADITIONAL$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_TRADITIONAL_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_TRADITIONAL_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP_TRADITIONAL"; then : fi else ac_cv_path_EGREP_TRADITIONAL=$EGREP_TRADITIONAL fi if test "$ac_cv_path_EGREP_TRADITIONAL" then : ac_cv_path_EGREP_TRADITIONAL="$ac_cv_path_EGREP_TRADITIONAL -E" else case e in #( e) if test -z "$EGREP_TRADITIONAL"; then ac_path_EGREP_TRADITIONAL_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in egrep do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue # Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found. # Check for GNU $ac_path_EGREP_TRADITIONAL case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in #( *GNU*) ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_found=:;; #( *) ac_count=0 printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" printf "%s\n" 'EGREP_TRADITIONAL' >> "conftest.nl" "$ac_path_EGREP_TRADITIONAL" 'EGR(EP|AC)_TRADITIONAL$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_TRADITIONAL_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_TRADITIONAL_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP_TRADITIONAL"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP_TRADITIONAL=$EGREP_TRADITIONAL fi ;; esac fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP_TRADITIONAL" >&5 printf "%s\n" "$ac_cv_path_EGREP_TRADITIONAL" >&6; } EGREP_TRADITIONAL=$ac_cv_path_EGREP_TRADITIONAL acl_libdirstem=lib acl_libdirstem2= case "$host_os" in solaris*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for 64-bit host" >&5 printf %s "checking for 64-bit host... " >&6; } if test ${gl_cv_solaris_64bit+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef _LP64 sixtyfour bits #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP_TRADITIONAL "sixtyfour bits" >/dev/null 2>&1 then : gl_cv_solaris_64bit=yes else case e in #( e) gl_cv_solaris_64bit=no ;; esac fi rm -rf conftest* ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_solaris_64bit" >&5 printf "%s\n" "$gl_cv_solaris_64bit" >&6; } if test $gl_cv_solaris_64bit = yes; then acl_libdirstem=lib/64 case "$host_cpu" in sparc*) acl_libdirstem2=lib/sparcv9 ;; i*86 | x86_64) acl_libdirstem2=lib/amd64 ;; esac fi ;; *) searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` if test -n "$searchpath"; then acl_save_IFS="${IFS= }"; IFS=":" for searchdir in $searchpath; do if test -d "$searchdir"; then case "$searchdir" in */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; */../ | */.. ) # Better ignore directories of this form. They are misleading. ;; *) searchdir=`cd "$searchdir" && pwd` case "$searchdir" in */lib64 ) acl_libdirstem=lib64 ;; esac ;; esac fi done IFS="$acl_save_IFS" fi ;; esac test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem" use_additional=yes acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" # Check whether --with-libiconv-prefix was given. if test ${with_libiconv_prefix+y} then : withval=$with_libiconv_prefix; if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" if test "$acl_libdirstem2" != "$acl_libdirstem" \ && ! test -d "$withval/$acl_libdirstem"; then additional_libdir="$withval/$acl_libdirstem2" fi fi fi fi LIBICONV= LTLIBICONV= INCICONV= LIBICONV_PREFIX= HAVE_LIBICONV= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='iconv ' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value" else : fi else found_dir= found_la= found_so= found_a= eval libname=\"$acl_libname_spec\" # typically: libname=lib$name if test -n "$acl_shlibext"; then shrext=".$acl_shlibext" # typically: shrext=.so else shrext= fi if test $use_additional = yes; then dir="$additional_libdir" if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext"; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext"; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then if test "$enable_rpath" = no \ || test "X$found_dir" = "X/usr/$acl_libdirstem" \ || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi if test "$acl_hardcode_direct" = yes; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else haveit= for x in $LDFLAGS $LIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir" fi if test "$acl_hardcode_minus_L" != no; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a" else LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name" fi fi additional_includedir= case "$found_dir" in */$acl_libdirstem | */$acl_libdirstem/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` if test "$name" = 'iconv'; then LIBICONV_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; */$acl_libdirstem2 | */$acl_libdirstem2/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` if test "$name" = 'iconv'; then LIBICONV_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INCICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir" fi fi fi fi fi if test -n "$found_la"; then save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" for dep in $dependency_libs; do case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then haveit= if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir" fi fi haveit= for x in $LDFLAGS $LTLIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) LIBICONV="${LIBICONV}${LIBICONV:+ }$dep" LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep" ;; esac done fi else LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$acl_hardcode_libdir_separator"; then alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" done acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" else for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then for found_dir in $ltrpathdirs; do LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir" done fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5 printf %s "checking for CFPreferencesCopyAppValue... " >&6; } if test ${gt_cv_func_CFPreferencesCopyAppValue+y} then : printf %s "(cached) " >&6 else case e in #( e) gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { CFPreferencesCopyAppValue(NULL, NULL) ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : gt_cv_func_CFPreferencesCopyAppValue=yes else case e in #( e) gt_cv_func_CFPreferencesCopyAppValue=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS="$gt_save_LIBS" ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 printf "%s\n" "$gt_cv_func_CFPreferencesCopyAppValue" >&6; } if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then printf "%s\n" "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5 printf %s "checking for CFLocaleCopyCurrent... " >&6; } if test ${gt_cv_func_CFLocaleCopyCurrent+y} then : printf %s "(cached) " >&6 else case e in #( e) gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { CFLocaleCopyCurrent(); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : gt_cv_func_CFLocaleCopyCurrent=yes else case e in #( e) gt_cv_func_CFLocaleCopyCurrent=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS="$gt_save_LIBS" ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 printf "%s\n" "$gt_cv_func_CFLocaleCopyCurrent" >&6; } if test $gt_cv_func_CFLocaleCopyCurrent = yes; then printf "%s\n" "#define HAVE_CFLOCALECOPYCURRENT 1" >>confdefs.h fi INTL_MACOSX_LIBS= if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" fi LIBINTL= LTLIBINTL= POSUB= case " $gt_needs " in *" need-formatstring-macros "*) gt_api_version=3 ;; *" need-ngettext "*) gt_api_version=2 ;; *) gt_api_version=1 ;; esac gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" if test "$USE_NLS" = "yes"; then gt_use_preinstalled_gnugettext=no if test $gt_api_version -ge 3; then gt_revision_test_code=' #ifndef __GNU_GETTEXT_SUPPORTED_REVISION #define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) #endif typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; ' else gt_revision_test_code= fi if test $gt_api_version -ge 2; then gt_expression_test_code=' + * ngettext ("", "", 0)' else gt_expression_test_code= fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5 printf %s "checking for GNU gettext in libc... " >&6; } if eval test \${$gt_func_gnugettext_libc+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #ifndef __GNU_GETTEXT_SUPPORTED_REVISION extern int _nl_msg_cat_cntr; extern int *_nl_domain_bindings; #define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_domain_bindings) #else #define __GNU_GETTEXT_SYMBOL_EXPRESSION 0 #endif $gt_revision_test_code int main (void) { bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval "$gt_func_gnugettext_libc=yes" else case e in #( e) eval "$gt_func_gnugettext_libc=no" ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ;; esac fi eval ac_res=\$$gt_func_gnugettext_libc { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then am_save_CPPFLAGS="$CPPFLAGS" for element in $INCICONV; do haveit= for x in $CPPFLAGS; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" fi done { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 printf %s "checking for iconv... " >&6; } if test ${am_cv_func_iconv+y} then : printf %s "(cached) " >&6 else case e in #( e) am_cv_func_iconv="no, consider installing GNU libiconv" am_cv_lib_iconv=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main (void) { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : am_cv_func_iconv=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test "$am_cv_func_iconv" != yes; then am_save_LIBS="$LIBS" LIBS="$LIBS $LIBICONV" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main (void) { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : am_cv_lib_iconv=yes am_cv_func_iconv=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS="$am_save_LIBS" fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 printf "%s\n" "$am_cv_func_iconv" >&6; } if test "$am_cv_func_iconv" = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5 printf %s "checking for working iconv... " >&6; } if test ${am_cv_func_iconv_works+y} then : printf %s "(cached) " >&6 else case e in #( e) am_save_LIBS="$LIBS" if test $am_cv_lib_iconv = yes; then LIBS="$LIBS $LIBICONV" fi am_cv_func_iconv_works=no for ac_iconv_const in '' 'const'; do if test "$cross_compiling" = yes then : case "$host_os" in aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; *) am_cv_func_iconv_works="guessing yes" ;; esac else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #ifndef ICONV_CONST # define ICONV_CONST $ac_iconv_const #endif int main (void) { int result = 0; /* Test against AIX 5.1 bug: Failures are not distinguishable from successful returns. */ { iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); if (cd_utf8_to_88591 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\342\202\254"; /* EURO SIGN */ char buf[10]; ICONV_CONST char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_utf8_to_88591, &inptr, &inbytesleft, &outptr, &outbytesleft); if (res == 0) result |= 1; iconv_close (cd_utf8_to_88591); } } /* Test against Solaris 10 bug: Failures are not distinguishable from successful returns. */ { iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646"); if (cd_ascii_to_88591 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\263"; char buf[10]; ICONV_CONST char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_ascii_to_88591, &inptr, &inbytesleft, &outptr, &outbytesleft); if (res == 0) result |= 2; iconv_close (cd_ascii_to_88591); } } /* Test against AIX 6.1..7.1 bug: Buffer overrun. */ { iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1"); if (cd_88591_to_utf8 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\304"; static char buf[2] = { (char)0xDE, (char)0xAD }; ICONV_CONST char *inptr = input; size_t inbytesleft = 1; char *outptr = buf; size_t outbytesleft = 1; size_t res = iconv (cd_88591_to_utf8, &inptr, &inbytesleft, &outptr, &outbytesleft); if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD) result |= 4; iconv_close (cd_88591_to_utf8); } } #if 0 /* This bug could be worked around by the caller. */ /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ { iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); if (cd_88591_to_utf8 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; char buf[50]; ICONV_CONST char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_88591_to_utf8, &inptr, &inbytesleft, &outptr, &outbytesleft); if ((int)res > 0) result |= 8; iconv_close (cd_88591_to_utf8); } } #endif /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is provided. */ if (/* Try standardized names. */ iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1) /* Try IRIX, OSF/1 names. */ && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1) /* Try AIX names. */ && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1) /* Try HP-UX names. */ && iconv_open ("utf8", "eucJP") == (iconv_t)(-1)) result |= 16; return result; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : am_cv_func_iconv_works=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi test "$am_cv_func_iconv_works" = no || break done LIBS="$am_save_LIBS" ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5 printf "%s\n" "$am_cv_func_iconv_works" >&6; } case "$am_cv_func_iconv_works" in *no) am_func_iconv=no am_cv_lib_iconv=no ;; *) am_func_iconv=yes ;; esac else am_func_iconv=no am_cv_lib_iconv=no fi if test "$am_func_iconv" = yes; then printf "%s\n" "#define HAVE_ICONV 1" >>confdefs.h fi if test "$am_cv_lib_iconv" = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5 printf %s "checking how to link with libiconv... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5 printf "%s\n" "$LIBICONV" >&6; } else CPPFLAGS="$am_save_CPPFLAGS" LIBICONV= LTLIBICONV= fi use_additional=yes acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" # Check whether --with-libintl-prefix was given. if test ${with_libintl_prefix+y} then : withval=$with_libintl_prefix; if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" if test "$acl_libdirstem2" != "$acl_libdirstem" \ && ! test -d "$withval/$acl_libdirstem"; then additional_libdir="$withval/$acl_libdirstem2" fi fi fi fi LIBINTL= LTLIBINTL= INCINTL= LIBINTL_PREFIX= HAVE_LIBINTL= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='intl ' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value" else : fi else found_dir= found_la= found_so= found_a= eval libname=\"$acl_libname_spec\" # typically: libname=lib$name if test -n "$acl_shlibext"; then shrext=".$acl_shlibext" # typically: shrext=.so else shrext= fi if test $use_additional = yes; then dir="$additional_libdir" if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext"; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext"; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then if test "$enable_rpath" = no \ || test "X$found_dir" = "X/usr/$acl_libdirstem" \ || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi if test "$acl_hardcode_direct" = yes; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else haveit= for x in $LDFLAGS $LIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir" fi if test "$acl_hardcode_minus_L" != no; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a" else LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name" fi fi additional_includedir= case "$found_dir" in */$acl_libdirstem | */$acl_libdirstem/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` if test "$name" = 'intl'; then LIBINTL_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; */$acl_libdirstem2 | */$acl_libdirstem2/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` if test "$name" = 'intl'; then LIBINTL_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INCINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir" fi fi fi fi fi if test -n "$found_la"; then save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" for dep in $dependency_libs; do case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then haveit= if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir" fi fi haveit= for x in $LDFLAGS $LTLIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) LIBINTL="${LIBINTL}${LIBINTL:+ }$dep" LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep" ;; esac done fi else LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$acl_hardcode_libdir_separator"; then alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" done acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" else for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then for found_dir in $ltrpathdirs; do LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir" done fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5 printf %s "checking for GNU gettext in libintl... " >&6; } if eval test \${$gt_func_gnugettext_libintl+y} then : printf %s "(cached) " >&6 else case e in #( e) gt_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $INCINTL" gt_save_LIBS="$LIBS" LIBS="$LIBS $LIBINTL" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #ifndef __GNU_GETTEXT_SUPPORTED_REVISION extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *); #define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_expand_alias ("")) #else #define __GNU_GETTEXT_SYMBOL_EXPRESSION 0 #endif $gt_revision_test_code int main (void) { bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval "$gt_func_gnugettext_libintl=yes" else case e in #( e) eval "$gt_func_gnugettext_libintl=no" ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then LIBS="$LIBS $LIBICONV" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #ifndef __GNU_GETTEXT_SUPPORTED_REVISION extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *); #define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_expand_alias ("")) #else #define __GNU_GETTEXT_SYMBOL_EXPRESSION 0 #endif $gt_revision_test_code int main (void) { bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : LIBINTL="$LIBINTL $LIBICONV" LTLIBINTL="$LTLIBINTL $LTLIBICONV" eval "$gt_func_gnugettext_libintl=yes" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi CPPFLAGS="$gt_save_CPPFLAGS" LIBS="$gt_save_LIBS" ;; esac fi eval ac_res=\$$gt_func_gnugettext_libintl { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } fi if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \ && test "$PACKAGE" != gettext-runtime \ && test "$PACKAGE" != gettext-tools; }; then gt_use_preinstalled_gnugettext=yes else LIBINTL= LTLIBINTL= INCINTL= fi if test -n "$INTL_MACOSX_LIBS"; then if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" fi fi if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then printf "%s\n" "#define ENABLE_NLS 1" >>confdefs.h else USE_NLS=no fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5 printf %s "checking whether to use NLS... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 printf "%s\n" "$USE_NLS" >&6; } if test "$USE_NLS" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5 printf %s "checking where the gettext function comes from... " >&6; } if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then gt_source="external libintl" else gt_source="libc" fi else gt_source="included intl directory" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5 printf "%s\n" "$gt_source" >&6; } fi if test "$USE_NLS" = "yes"; then if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5 printf %s "checking how to link with libintl... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5 printf "%s\n" "$LIBINTL" >&6; } for element in $INCINTL; do haveit= for x in $CPPFLAGS; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" fi done fi printf "%s\n" "#define HAVE_GETTEXT 1" >>confdefs.h printf "%s\n" "#define HAVE_DCGETTEXT 1" >>confdefs.h fi POSUB=po fi INTLLIBS="$LIBINTL" gnomint_save_prefix="$prefix" gnomint_save_exec_prefix="$exec_prefix" gnomint_save_datarootdir="$datarootdir" test "x$prefix" = xNONE && prefix=$ac_default_prefix test "x$exec_prefix" = xNONE && exec_prefix=$prefix datarootdir=`eval echo "${datarootdir}"` gnomint_localedir=`eval echo "${datadir}/locale"` prefix="$gnomint_save_prefix" exec_prefix="$gnomint_save_exec_prefix" datarootdir="$gnomint_save_datarootdir" printf "%s\n" "#define PACKAGE_LOCALE_DIR \"$gnomint_localedir\"" >>confdefs.h # required versions GNUTLS_REQUIRED=2.0 GNUTLS_ADVANCED_FEATURES_MINIMUM_VERSION=2.7.4 SQLITE_REQUIRED=3.0 GLIB_REQUIRED=2.66.0 GTK_REQUIRED=4.10.0 ISO_CODES_REQUIRED=0.35 # check for sqlite if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_PKG_CONFIG+y} then : printf %s "(cached) " >&6 else case e in #( e) case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 printf "%s\n" "$PKG_CONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_path_PKG_CONFIG"; then ac_pt_PKG_CONFIG=$PKG_CONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_ac_pt_PKG_CONFIG+y} then : printf %s "(cached) " >&6 else case e in #( e) case $ac_pt_PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac ;; esac fi ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG if test -n "$ac_pt_PKG_CONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 printf "%s\n" "$ac_pt_PKG_CONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_pt_PKG_CONFIG" = x; then PKG_CONFIG="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKG_CONFIG=$ac_pt_PKG_CONFIG fi else PKG_CONFIG="$ac_cv_path_PKG_CONFIG" fi fi if test -n "$PKG_CONFIG"; then _pkg_min_version=0.9.0 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 printf %s "checking pkg-config is at least version $_pkg_min_version... " >&6; } if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } PKG_CONFIG="" fi fi if test -z "$PKG_CONFIG"; then as_fn_error $? "pkg-config not found" "$LINENO" 5 fi pkg_failed=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sqlite3 >= $SQLITE_REQUIRED" >&5 printf %s "checking for sqlite3 >= $SQLITE_REQUIRED... " >&6; } if test -n "$SQLITE_CFLAGS"; then pkg_cv_SQLITE_CFLAGS="$SQLITE_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sqlite3 >= \$SQLITE_REQUIRED\""; } >&5 ($PKG_CONFIG --exists --print-errors "sqlite3 >= $SQLITE_REQUIRED") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_SQLITE_CFLAGS=`$PKG_CONFIG --cflags "sqlite3 >= $SQLITE_REQUIRED" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$SQLITE_LIBS"; then pkg_cv_SQLITE_LIBS="$SQLITE_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sqlite3 >= \$SQLITE_REQUIRED\""; } >&5 ($PKG_CONFIG --exists --print-errors "sqlite3 >= $SQLITE_REQUIRED") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_SQLITE_LIBS=`$PKG_CONFIG --libs "sqlite3 >= $SQLITE_REQUIRED" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then SQLITE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "sqlite3 >= $SQLITE_REQUIRED" 2>&1` else SQLITE_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "sqlite3 >= $SQLITE_REQUIRED" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$SQLITE_PKG_ERRORS" >&5 as_fn_error $? "Package requirements (sqlite3 >= $SQLITE_REQUIRED) were not met: $SQLITE_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables SQLITE_CFLAGS and SQLITE_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables SQLITE_CFLAGS and SQLITE_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See 'config.log' for more details" "$LINENO" 5; } else SQLITE_CFLAGS=$pkg_cv_SQLITE_CFLAGS SQLITE_LIBS=$pkg_cv_SQLITE_LIBS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi # check for libgcrypt gcrypt=0 # Extract the first word of "gpgrt-config", so it can be a program name with args. set dummy gpgrt-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_GPGRT_CONFIG+y} then : printf %s "(cached) " >&6 else case e in #( e) case $GPGRT_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_GPGRT_CONFIG="$GPGRT_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$prefix/bin:$PATH" for as_dir in $as_dummy do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_GPGRT_CONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_GPGRT_CONFIG" && ac_cv_path_GPGRT_CONFIG="no" ;; esac ;; esac fi GPGRT_CONFIG=$ac_cv_path_GPGRT_CONFIG if test -n "$GPGRT_CONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GPGRT_CONFIG" >&5 printf "%s\n" "$GPGRT_CONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "$GPGRT_CONFIG" != "no"; then # Determine gpgrt_libdir # # Get the prefix of gpgrt-config assuming it's something like: # /bin/gpgrt-config gpgrt_prefix=${GPGRT_CONFIG%/*/*} possible_libdir1=${gpgrt_prefix}/lib # Determine by using system libdir-format with CC, it's like: # Normal style: /usr/lib # GNU cross style: /usr//lib # Debian style: /usr/lib/ # Fedora/openSUSE style: /usr/lib, /usr/lib32 or /usr/lib64 # It is assumed that CC is specified to the one of host on cross build. if libdir_candidates=$(${CC:-cc} -print-search-dirs | \ sed -n -e "/^libraries/{s/libraries: =//;s/:/\\ /g;p;}"); then # From the output of -print-search-dirs, select valid pkgconfig dirs. libdir_candidates=$(for dir in $libdir_candidates; do if p=$(cd $dir 2>/dev/null && pwd); then test -d "$p/pkgconfig" && echo $p; fi done) for possible_libdir0 in $libdir_candidates; do # possible_libdir0: # Fallback candidate, the one of system-installed (by $CC) # (/usr//lib, /usr/lib/ or /usr/lib32) # possible_libdir1: # Another candidate, user-locally-installed # (/lib) # possible_libdir2 # Most preferred # (//lib, # /lib/ or /lib32) if test "${possible_libdir0##*/}" = "lib"; then possible_prefix0=${possible_libdir0%/lib} possible_prefix0_triplet=${possible_prefix0##*/} if test -z "$possible_prefix0_triplet"; then continue fi possible_libdir2=${gpgrt_prefix}/$possible_prefix0_triplet/lib else possible_prefix0=${possible_libdir0%%/lib*} possible_libdir2=${gpgrt_prefix}${possible_libdir0#$possible_prefix0} fi if test -f ${possible_libdir2}/pkgconfig/gpg-error.pc; then gpgrt_libdir=${possible_libdir2} elif test -f ${possible_libdir1}/pkgconfig/gpg-error.pc; then gpgrt_libdir=${possible_libdir1} elif test -f ${possible_libdir0}/pkgconfig/gpg-error.pc; then gpgrt_libdir=${possible_libdir0} fi if test -n "$gpgrt_libdir"; then break; fi done fi if test -z "$gpgrt_libdir"; then # No valid pkgconfig dir in any of the system directories, fallback gpgrt_libdir=${possible_libdir1} fi else unset GPGRT_CONFIG fi if test -n "$gpgrt_libdir"; then # Add the --libdir option to GPGRT_CONFIG GPGRT_CONFIG="$GPGRT_CONFIG --libdir=$gpgrt_libdir" # Make sure if gpgrt-config really works, by testing config gpg-error if ! $GPGRT_CONFIG gpg-error --exists; then # If it doesn't work, clear the GPGRT_CONFIG variable. unset GPGRT_CONFIG fi else # GPGRT_CONFIG found but no suitable dir for --libdir found. # This is a failure. Clear the GPGRT_CONFIG variable. unset GPGRT_CONFIG fi # Check whether --with-libgcrypt-prefix was given. if test ${with_libgcrypt_prefix+y} then : withval=$with_libgcrypt_prefix; libgcrypt_config_prefix="$withval" else case e in #( e) libgcrypt_config_prefix="" ;; esac fi if test x"${LIBGCRYPT_CONFIG}" = x ; then if test x"${libgcrypt_config_prefix}" != x ; then LIBGCRYPT_CONFIG="${libgcrypt_config_prefix}/bin/libgcrypt-config" fi fi use_gpgrt_config="" if test x"$GPGRT_CONFIG" != x && test "$GPGRT_CONFIG" != "no"; then if $GPGRT_CONFIG libgcrypt --exists; then LIBGCRYPT_CONFIG="$GPGRT_CONFIG libgcrypt" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Use gpgrt-config as libgcrypt-config" >&5 printf "%s\n" "$as_me: Use gpgrt-config as libgcrypt-config" >&6;} use_gpgrt_config=yes fi fi if test -z "$use_gpgrt_config"; then if test x"${LIBGCRYPT_CONFIG}" = x ; then case "${SYSROOT}" in /*) if test -x "${SYSROOT}/bin/libgcrypt-config" ; then LIBGCRYPT_CONFIG="${SYSROOT}/bin/libgcrypt-config" fi ;; '') ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring \$SYSROOT as it is not an absolute path." >&5 printf "%s\n" "$as_me: WARNING: Ignoring \$SYSROOT as it is not an absolute path." >&2;} ;; esac fi # Extract the first word of "libgcrypt-config", so it can be a program name with args. set dummy libgcrypt-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_LIBGCRYPT_CONFIG+y} then : printf %s "(cached) " >&6 else case e in #( e) case $LIBGCRYPT_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_LIBGCRYPT_CONFIG="$LIBGCRYPT_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_LIBGCRYPT_CONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_LIBGCRYPT_CONFIG" && ac_cv_path_LIBGCRYPT_CONFIG="no" ;; esac ;; esac fi LIBGCRYPT_CONFIG=$ac_cv_path_LIBGCRYPT_CONFIG if test -n "$LIBGCRYPT_CONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIBGCRYPT_CONFIG" >&5 printf "%s\n" "$LIBGCRYPT_CONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi tmp=1.2.0 if echo "$tmp" | grep ':' >/dev/null 2>/dev/null ; then req_libgcrypt_api=`echo "$tmp" | sed 's/\(.*\):\(.*\)/\1/'` min_libgcrypt_version=`echo "$tmp" | sed 's/\(.*\):\(.*\)/\2/'` else req_libgcrypt_api=0 min_libgcrypt_version="$tmp" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for LIBGCRYPT - version >= $min_libgcrypt_version" >&5 printf %s "checking for LIBGCRYPT - version >= $min_libgcrypt_version... " >&6; } ok=no if test "$LIBGCRYPT_CONFIG" != "no" ; then req_major=`echo $min_libgcrypt_version | \ sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)/\1/'` req_minor=`echo $min_libgcrypt_version | \ sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)/\2/'` req_micro=`echo $min_libgcrypt_version | \ sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)/\3/'` if test -z "$use_gpgrt_config"; then libgcrypt_config_version=`$LIBGCRYPT_CONFIG --version` else libgcrypt_config_version=`$LIBGCRYPT_CONFIG --modversion` fi major=`echo $libgcrypt_config_version | \ sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\1/'` minor=`echo $libgcrypt_config_version | \ sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\2/'` micro=`echo $libgcrypt_config_version | \ sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\3/'` if test "$major" -gt "$req_major"; then ok=yes else if test "$major" -eq "$req_major"; then if test "$minor" -gt "$req_minor"; then ok=yes else if test "$minor" -eq "$req_minor"; then if test "$micro" -ge "$req_micro"; then ok=yes fi fi fi fi fi fi if test $ok = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes ($libgcrypt_config_version)" >&5 printf "%s\n" "yes ($libgcrypt_config_version)" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test $ok = yes; then # If we have a recent libgcrypt, we should also check that the # API is compatible if test "$req_libgcrypt_api" -gt 0 ; then if test -z "$use_gpgrt_config"; then tmp=`$LIBGCRYPT_CONFIG --api-version 2>/dev/null || echo 0` else tmp=`$LIBGCRYPT_CONFIG --variable=api_version 2>/dev/null || echo 0` fi if test "$tmp" -gt 0 ; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking LIBGCRYPT API version" >&5 printf %s "checking LIBGCRYPT API version... " >&6; } if test "$req_libgcrypt_api" -eq "$tmp" ; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: okay" >&5 printf "%s\n" "okay" >&6; } else ok=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: does not match. want=$req_libgcrypt_api got=$tmp" >&5 printf "%s\n" "does not match. want=$req_libgcrypt_api got=$tmp" >&6; } fi fi fi fi if test $ok = yes; then LIBGCRYPT_CFLAGS=`$LIBGCRYPT_CONFIG --cflags` LIBGCRYPT_LIBS=`$LIBGCRYPT_CONFIG --libs` gcrypt=1 if test -z "$use_gpgrt_config"; then libgcrypt_config_host=`$LIBGCRYPT_CONFIG --host 2>/dev/null || echo none` else libgcrypt_config_host=`$LIBGCRYPT_CONFIG --variable=host 2>/dev/null || echo none` fi if test x"$libgcrypt_config_host" != xnone ; then if test x"$libgcrypt_config_host" != x"$host" ; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: *** *** The config script \"$LIBGCRYPT_CONFIG\" was *** built for $libgcrypt_config_host and thus may not match the *** used host $host. *** You may want to use the configure option --with-libgcrypt-prefix *** to specify a matching config script or use \$SYSROOT. ***" >&5 printf "%s\n" "$as_me: WARNING: *** *** The config script \"$LIBGCRYPT_CONFIG\" was *** built for $libgcrypt_config_host and thus may not match the *** used host $host. *** You may want to use the configure option --with-libgcrypt-prefix *** to specify a matching config script or use \$SYSROOT. ***" >&2;} gpg_config_script_warn="$gpg_config_script_warn libgcrypt" fi fi else LIBGCRYPT_CFLAGS="" LIBGCRYPT_LIBS="" : fi if test $gcrypt = 0 then as_fn_error $? "gnoMint needs libgcrypt" "$LINENO" 5 fi pkg_failed=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for glib-2.0 >= $GLIB_REQUIRED \ gthread-2.0 >= $GLIB_REQUIRED \ gio-2.0 >= $GLIB_REQUIRED \ gtk4 >= $GTK_REQUIRED \ gnutls >= $GNUTLS_REQUIRED \ " >&5 printf %s "checking for glib-2.0 >= $GLIB_REQUIRED \ gthread-2.0 >= $GLIB_REQUIRED \ gio-2.0 >= $GLIB_REQUIRED \ gtk4 >= $GTK_REQUIRED \ gnutls >= $GNUTLS_REQUIRED \ ... " >&6; } if test -n "$GNOMINT_CFLAGS"; then pkg_cv_GNOMINT_CFLAGS="$GNOMINT_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= \$GLIB_REQUIRED \\ gthread-2.0 >= \$GLIB_REQUIRED \\ gio-2.0 >= \$GLIB_REQUIRED \\ gtk4 >= \$GTK_REQUIRED \\ gnutls >= \$GNUTLS_REQUIRED \\ \""; } >&5 ($PKG_CONFIG --exists --print-errors "glib-2.0 >= $GLIB_REQUIRED \ gthread-2.0 >= $GLIB_REQUIRED \ gio-2.0 >= $GLIB_REQUIRED \ gtk4 >= $GTK_REQUIRED \ gnutls >= $GNUTLS_REQUIRED \ ") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GNOMINT_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0 >= $GLIB_REQUIRED \ gthread-2.0 >= $GLIB_REQUIRED \ gio-2.0 >= $GLIB_REQUIRED \ gtk4 >= $GTK_REQUIRED \ gnutls >= $GNUTLS_REQUIRED \ " 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GNOMINT_LIBS"; then pkg_cv_GNOMINT_LIBS="$GNOMINT_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= \$GLIB_REQUIRED \\ gthread-2.0 >= \$GLIB_REQUIRED \\ gio-2.0 >= \$GLIB_REQUIRED \\ gtk4 >= \$GTK_REQUIRED \\ gnutls >= \$GNUTLS_REQUIRED \\ \""; } >&5 ($PKG_CONFIG --exists --print-errors "glib-2.0 >= $GLIB_REQUIRED \ gthread-2.0 >= $GLIB_REQUIRED \ gio-2.0 >= $GLIB_REQUIRED \ gtk4 >= $GTK_REQUIRED \ gnutls >= $GNUTLS_REQUIRED \ ") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GNOMINT_LIBS=`$PKG_CONFIG --libs "glib-2.0 >= $GLIB_REQUIRED \ gthread-2.0 >= $GLIB_REQUIRED \ gio-2.0 >= $GLIB_REQUIRED \ gtk4 >= $GTK_REQUIRED \ gnutls >= $GNUTLS_REQUIRED \ " 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GNOMINT_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "glib-2.0 >= $GLIB_REQUIRED \ gthread-2.0 >= $GLIB_REQUIRED \ gio-2.0 >= $GLIB_REQUIRED \ gtk4 >= $GTK_REQUIRED \ gnutls >= $GNUTLS_REQUIRED \ " 2>&1` else GNOMINT_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "glib-2.0 >= $GLIB_REQUIRED \ gthread-2.0 >= $GLIB_REQUIRED \ gio-2.0 >= $GLIB_REQUIRED \ gtk4 >= $GTK_REQUIRED \ gnutls >= $GNUTLS_REQUIRED \ " 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GNOMINT_PKG_ERRORS" >&5 as_fn_error $? "Package requirements (glib-2.0 >= $GLIB_REQUIRED \ gthread-2.0 >= $GLIB_REQUIRED \ gio-2.0 >= $GLIB_REQUIRED \ gtk4 >= $GTK_REQUIRED \ gnutls >= $GNUTLS_REQUIRED \ ) were not met: $GNOMINT_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables GNOMINT_CFLAGS and GNOMINT_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables GNOMINT_CFLAGS and GNOMINT_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See 'config.log' for more details" "$LINENO" 5; } else GNOMINT_CFLAGS=$pkg_cv_GNOMINT_CFLAGS GNOMINT_LIBS=$pkg_cv_GNOMINT_LIBS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi ####################### # Check for readline. ######################## ac_fn_c_check_header_compile "$LINENO" "readline/readline.h" "ac_cv_header_readline_readline_h" "$ac_includes_default" if test "x$ac_cv_header_readline_readline_h" = xyes then : readline_found=true else case e in #( e) as_fn_error $? "libreadline is needed for compiling gnoMint." "$LINENO" 5 ;; esac fi old_LIBS=$LIBS LIBS="-lreadline" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : READLINE_LIBS="-lreadline" else case e in #( e) LIBS="$LIBS -ltermcap" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : READLINE_LIBS='-lreadline -ltermcap' else case e in #( e) as_fn_error $? "Cannot figure out how to link with the readline library; see config.log for more information" "$LINENO" 5 ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$old_LIBS # On Windows (MinGW), inet_pton/inet_ntop live in ws2_32 case "$host_os" in mingw*|msys*|cygwin*) WINSOCK_LIBS="-lws2_32" ;; *) WINSOCK_LIBS="" ;; esac pkg_failed=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for glib-2.0 >= $GLIB_REQUIRED \ gio-2.0 >= $GLIB_REQUIRED \ gnutls >= $GNUTLS_REQUIRED \ " >&5 printf %s "checking for glib-2.0 >= $GLIB_REQUIRED \ gio-2.0 >= $GLIB_REQUIRED \ gnutls >= $GNUTLS_REQUIRED \ ... " >&6; } if test -n "$GNOMINTCLI_CFLAGS"; then pkg_cv_GNOMINTCLI_CFLAGS="$GNOMINTCLI_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= \$GLIB_REQUIRED \\ gio-2.0 >= \$GLIB_REQUIRED \\ gnutls >= \$GNUTLS_REQUIRED \\ \""; } >&5 ($PKG_CONFIG --exists --print-errors "glib-2.0 >= $GLIB_REQUIRED \ gio-2.0 >= $GLIB_REQUIRED \ gnutls >= $GNUTLS_REQUIRED \ ") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GNOMINTCLI_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0 >= $GLIB_REQUIRED \ gio-2.0 >= $GLIB_REQUIRED \ gnutls >= $GNUTLS_REQUIRED \ " 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GNOMINTCLI_LIBS"; then pkg_cv_GNOMINTCLI_LIBS="$GNOMINTCLI_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= \$GLIB_REQUIRED \\ gio-2.0 >= \$GLIB_REQUIRED \\ gnutls >= \$GNUTLS_REQUIRED \\ \""; } >&5 ($PKG_CONFIG --exists --print-errors "glib-2.0 >= $GLIB_REQUIRED \ gio-2.0 >= $GLIB_REQUIRED \ gnutls >= $GNUTLS_REQUIRED \ ") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GNOMINTCLI_LIBS=`$PKG_CONFIG --libs "glib-2.0 >= $GLIB_REQUIRED \ gio-2.0 >= $GLIB_REQUIRED \ gnutls >= $GNUTLS_REQUIRED \ " 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GNOMINTCLI_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "glib-2.0 >= $GLIB_REQUIRED \ gio-2.0 >= $GLIB_REQUIRED \ gnutls >= $GNUTLS_REQUIRED \ " 2>&1` else GNOMINTCLI_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "glib-2.0 >= $GLIB_REQUIRED \ gio-2.0 >= $GLIB_REQUIRED \ gnutls >= $GNUTLS_REQUIRED \ " 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GNOMINTCLI_PKG_ERRORS" >&5 as_fn_error $? "Package requirements (glib-2.0 >= $GLIB_REQUIRED \ gio-2.0 >= $GLIB_REQUIRED \ gnutls >= $GNUTLS_REQUIRED \ ) were not met: $GNOMINTCLI_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables GNOMINTCLI_CFLAGS and GNOMINTCLI_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables GNOMINTCLI_CFLAGS and GNOMINTCLI_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See 'config.log' for more details" "$LINENO" 5; } else GNOMINTCLI_CFLAGS=$pkg_cv_GNOMINTCLI_CFLAGS GNOMINTCLI_LIBS=$pkg_cv_GNOMINTCLI_LIBS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether gnutls >= $GNUTLS_ADVANCED_FEATURES_MINIMUM_VERSION (for advanced features)" >&5 printf %s "checking whether gnutls >= $GNUTLS_ADVANCED_FEATURES_MINIMUM_VERSION (for advanced features)... " >&6; } if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gnutls >= \$GNUTLS_ADVANCED_FEATURES_MINIMUM_VERSION\""; } >&5 ($PKG_CONFIG --exists --print-errors "gnutls >= $GNUTLS_ADVANCED_FEATURES_MINIMUM_VERSION") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then have_advanced_gnutls=yes else have_advanced_gnutls=no fi if test "x$have_advanced_gnutls" = "xyes"; then printf "%s\n" "#define ADVANCED_GNUTLS \"yes\"" >>confdefs.h { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"iso-codes >= \$ISO_CODES_REQUIRED\""; } >&5 ($PKG_CONFIG --exists --print-errors "iso-codes >= $ISO_CODES_REQUIRED") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then have_iso_codes=yes else have_iso_codes=no fi if test "x$have_iso_codes" = "xyes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether iso-codes has iso-639 and iso-3166 domains" >&5 printf %s "checking whether iso-codes has iso-639 and iso-3166 domains... " >&6; } if $PKG_CONFIG --variable=domains iso-codes | grep 639 > /dev/null && \ $PKG_CONFIG --variable=domains iso-codes | grep 3166 > /dev/null ; then result=yes else result=no have_iso_codes=no fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $result" >&5 printf "%s\n" "$result" >&6; } fi GLIB_GENMARSHAL=`$PKG_CONFIG --variable=glib_genmarshal glib-2.0` # Check whether --enable-schemas-compile was given. if test ${enable_schemas_compile+y} then : enableval=$enable_schemas_compile; case ${enableval} in yes) GSETTINGS_DISABLE_SCHEMAS_COMPILE="" ;; no) GSETTINGS_DISABLE_SCHEMAS_COMPILE="1" ;; *) as_fn_error $? "bad value ${enableval} for --enable-schemas-compile" "$LINENO" 5 ;; esac fi if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_PKG_CONFIG+y} then : printf %s "(cached) " >&6 else case e in #( e) case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 printf "%s\n" "$PKG_CONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_path_PKG_CONFIG"; then ac_pt_PKG_CONFIG=$PKG_CONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_ac_pt_PKG_CONFIG+y} then : printf %s "(cached) " >&6 else case e in #( e) case $ac_pt_PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac ;; esac fi ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG if test -n "$ac_pt_PKG_CONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 printf "%s\n" "$ac_pt_PKG_CONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_pt_PKG_CONFIG" = x; then PKG_CONFIG="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKG_CONFIG=$ac_pt_PKG_CONFIG fi else PKG_CONFIG="$ac_cv_path_PKG_CONFIG" fi fi if test -n "$PKG_CONFIG"; then _pkg_min_version=0.16 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 printf %s "checking pkg-config is at least version $_pkg_min_version... " >&6; } if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } PKG_CONFIG="" fi fi if test -z "$PKG_CONFIG"; then as_fn_error $? "pkg-config not found" "$LINENO" 5 fi gsettingsschemadir=${datadir}/glib-2.0/schemas if test x$cross_compiling != xyes then : if test -n "$GLIB_COMPILE_SCHEMAS"; then pkg_cv_GLIB_COMPILE_SCHEMAS="$GLIB_COMPILE_SCHEMAS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gio-2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "gio-2.0") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GLIB_COMPILE_SCHEMAS=`$PKG_CONFIG --variable="glib_compile_schemas" "gio-2.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi GLIB_COMPILE_SCHEMAS=$pkg_cv_GLIB_COMPILE_SCHEMAS if test "x$GLIB_COMPILE_SCHEMAS" = x"" then : fi else case e in #( e) # Extract the first word of "glib-compile-schemas", so it can be a program name with args. set dummy glib-compile-schemas; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_GLIB_COMPILE_SCHEMAS+y} then : printf %s "(cached) " >&6 else case e in #( e) case $GLIB_COMPILE_SCHEMAS in [\\/]* | ?:[\\/]*) ac_cv_path_GLIB_COMPILE_SCHEMAS="$GLIB_COMPILE_SCHEMAS" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_GLIB_COMPILE_SCHEMAS="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac ;; esac fi GLIB_COMPILE_SCHEMAS=$ac_cv_path_GLIB_COMPILE_SCHEMAS if test -n "$GLIB_COMPILE_SCHEMAS"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GLIB_COMPILE_SCHEMAS" >&5 printf "%s\n" "$GLIB_COMPILE_SCHEMAS" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi ;; esac fi if test "x$GLIB_COMPILE_SCHEMAS" = "x"; then as_fn_error $? "glib-compile-schemas not found." "$LINENO" 5 else : fi GSETTINGS_RULES=' .PHONY : uninstall-gsettings-schemas install-gsettings-schemas clean-gsettings-schemas mostlyclean-am: clean-gsettings-schemas gsettings__enum_file = $(addsuffix .enums.xml,$(gsettings_ENUM_NAMESPACE)) %.gschema.valid: %.gschema.xml $(gsettings__enum_file) $(AM_V_GEN) $(GLIB_COMPILE_SCHEMAS) --strict --dry-run $(addprefix --schema-file=,$(gsettings__enum_file)) --schema-file=$< && mkdir -p $(@D) && touch $@ all-am: $(gsettings_SCHEMAS:.xml=.valid) uninstall-am: uninstall-gsettings-schemas install-data-am: install-gsettings-schemas .SECONDARY: $(gsettings_SCHEMAS) install-gsettings-schemas: $(gsettings_SCHEMAS) $(gsettings__enum_file) @$(NORMAL_INSTALL) if test -n "$^"; then \ test -z "$(gsettingsschemadir)" || $(MKDIR_P) "$(DESTDIR)$(gsettingsschemadir)"; \ $(INSTALL_DATA) $^ "$(DESTDIR)$(gsettingsschemadir)"; \ test -n "$(GSETTINGS_DISABLE_SCHEMAS_COMPILE)$(DESTDIR)" || $(GLIB_COMPILE_SCHEMAS) $(gsettingsschemadir); \ fi uninstall-gsettings-schemas: @$(NORMAL_UNINSTALL) @list='\''$(gsettings_SCHEMAS) $(gsettings__enum_file)'\''; test -n "$(gsettingsschemadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e '\''s|^.*/||'\''`; \ test -n "$$files" || exit 0; \ echo " ( cd '\''$(DESTDIR)$(gsettingsschemadir)'\'' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(gsettingsschemadir)" && rm -f $$files test -n "$(GSETTINGS_DISABLE_SCHEMAS_COMPILE)$(DESTDIR)" || $(GLIB_COMPILE_SCHEMAS) $(gsettingsschemadir) clean-gsettings-schemas: rm -f $(gsettings_SCHEMAS:.xml=.valid) $(gsettings__enum_file) ifdef gsettings_ENUM_NAMESPACE $(gsettings__enum_file): $(gsettings_ENUM_FILES) $(AM_V_GEN) glib-mkenums --comments '\'''\'' --fhead "" --vhead " <@type@ id='\''$(gsettings_ENUM_NAMESPACE).@EnumName@'\''>" --vprod " " --vtail " " --ftail "" $^ > $@.tmp && mv $@.tmp $@ endif ' # Check whether --enable-debug was given. if test ${enable_debug+y} then : enableval=$enable_debug; use_debug="Yes"; printf "%s\n" "#define debug 1" >>confdefs.h else case e in #( e) use_debug="No" ;; esac fi # Check whether --enable-debug-signal was given. if test ${enable_debug_signal+y} then : enableval=$enable_debug_signal; use_debug_sig="Yes"; printf "%s\n" "#define debug_signal 1" >>confdefs.h else case e in #( e) use_debug_sig="No" ;; esac fi if test "x$GCC" = "xyes"; then CFLAGS="${CFLAGS:--Wall}" if test "x$use_debug" = "xYes"; then CFLAGS="$CFLAGS -g -O0" fi fi ac_config_files="$ac_config_files Makefile src/Makefile gui/Makefile po/Makefile.in mime/Makefile gconf/Makefile tests/Makefile gnomint.spec" 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 # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # 'ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* 'ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # 'set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # 'set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 printf "%s\n" "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 printf %s "checking that generated files are newer than configure... " >&6; } if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: done" >&5 printf "%s\n" "done" >&6; } case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; esac if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case e in #( e) case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac ;; esac fi # Reset variables that may have inherited troublesome values from # the environment. # IFS needs to be set, to space, tab, and newline, in precisely that order. # (If _AS_PATH_WALK were called with IFS unset, it would have the # side effect of setting IFS to empty, thus disabling word splitting.) # Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl IFS=" "" $as_nl" PS1='$ ' PS2='> ' PS4='+ ' # Ensure predictable behavior from utilities with locale-dependent output. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # We cannot yet rely on "unset" to work, but we need these variables # to be unset--not just set to an empty or harmless value--now, to # avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct # also avoids known problems related to "unset" and subshell syntax # in other old shells (e.g. bash 2.01 and pdksh 5.2.14). for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH do eval test \${$as_var+y} \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done # Ensure that fds 0, 1, and 2 are open. if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as 'sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null then : eval 'as_fn_append () { eval $1+=\$2 }' else case e in #( e) as_fn_append () { eval $1=\$$1\$2 } ;; esac fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null then : eval 'as_fn_arith () { as_val=$(( $* )) }' else case e in #( e) as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } ;; esac fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # Determine whether it's possible to make 'echo' print without a newline. # These variables are no longer used directly by Autoconf, but are AC_SUBSTed # for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac # For backward compatibility with old third-party macros, we provide # the shell variables $as_echo and $as_echo_n. New code should use # AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. as_echo='printf %s\n' as_echo_n='printf %s' rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. # In both cases, we have to default to 'cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated # Sed expression to map a string onto a valid variable name. as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" as_tr_sh="eval sed '$as_sed_sh'" # deprecated exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by gnoMint $as_me 1.6.4, which was generated by GNU Autoconf 2.72. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ '$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to <>." _ACEOF ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ gnoMint config.status 1.6.4 configured by $0, generated by GNU Autoconf 2.72, with options \\"\$ac_cs_config\\" Copyright (C) 2023 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) printf "%s\n" "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) printf "%s\n" "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: '$1' Try '$0 --help' for more information.";; --help | --hel | -h ) printf "%s\n" "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: '$1' Try '$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX printf "%s\n" "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`' SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' FILECMD='`$ECHO "$FILECMD" | $SED "$delay_single_quote_subst"`' OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' lt_ar_flags='`$ECHO "$lt_ar_flags" | $SED "$delay_single_quote_subst"`' AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`' nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`' objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`' configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`' hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } # Quote evaled strings. for var in SHELL \ ECHO \ PATH_SEPARATOR \ SED \ GREP \ EGREP \ FGREP \ LD \ NM \ LN_S \ lt_SP2NL \ lt_NL2SP \ reload_flag \ FILECMD \ OBJDUMP \ deplibs_check_method \ file_magic_cmd \ file_magic_glob \ want_nocaseglob \ DLLTOOL \ sharedlib_from_linklib_cmd \ AR \ archiver_list_spec \ STRIP \ RANLIB \ CC \ CFLAGS \ compiler \ lt_cv_sys_global_symbol_pipe \ lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_import \ lt_cv_sys_global_symbol_to_c_name_address \ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ lt_cv_nm_interface \ nm_file_list_spec \ lt_cv_truncate_bin \ lt_prog_compiler_no_builtin_flag \ lt_prog_compiler_pic \ lt_prog_compiler_wl \ lt_prog_compiler_static \ lt_cv_prog_compiler_c_o \ need_locks \ MANIFEST_TOOL \ DSYMUTIL \ NMEDIT \ LIPO \ OTOOL \ OTOOL64 \ shrext_cmds \ export_dynamic_flag_spec \ whole_archive_flag_spec \ compiler_needs_object \ with_gnu_ld \ allow_undefined_flag \ no_undefined_flag \ hardcode_libdir_flag_spec \ hardcode_libdir_separator \ exclude_expsyms \ include_expsyms \ file_list_spec \ variables_saved_for_relink \ libname_spec \ library_names_spec \ soname_spec \ install_override_mode \ finish_eval \ old_striplib \ striplib; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in reload_cmds \ old_postinstall_cmds \ old_postuninstall_cmds \ old_archive_cmds \ extract_expsyms_cmds \ old_archive_from_new_cmds \ old_archive_from_expsyms_cmds \ archive_cmds \ archive_expsym_cmds \ module_cmds \ module_expsym_cmds \ export_symbols_cmds \ prelink_cmds \ postlink_cmds \ postinstall_cmds \ postuninstall_cmds \ finish_cmds \ sys_lib_search_path_spec \ configure_time_dlsearch_path \ configure_time_lt_sys_library_path; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done ac_aux_dir='$ac_aux_dir' # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi PACKAGE='$PACKAGE' VERSION='$VERSION' RM='$RM' ofile='$ofile' # Capture the value of obsolete ALL_LINGUAS because we need it to compute # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it # from automake < 1.5. eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' # Capture the value of LINGUAS because we need it to compute CATALOGS. LINGUAS="${LINGUAS-%UNSET%}" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; "po-directories") CONFIG_COMMANDS="$CONFIG_COMMANDS po-directories" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "gui/Makefile") CONFIG_FILES="$CONFIG_FILES gui/Makefile" ;; "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; "mime/Makefile") CONFIG_FILES="$CONFIG_FILES mime/Makefile" ;; "gconf/Makefile") CONFIG_FILES="$CONFIG_FILES gconf/Makefile" ;; "tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;; "gnomint.spec") CONFIG_FILES="$CONFIG_FILES gnomint.spec" ;; *) as_fn_error $? "invalid argument: '$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files test ${CONFIG_HEADERS+y} || CONFIG_HEADERS=$config_headers test ${CONFIG_COMMANDS+y} || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to '$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with './config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with './config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script 'defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag '$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain ':'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: '$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is 'configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 printf "%s\n" "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`printf "%s\n" "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when '$srcdir' = '.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable 'datarootdir' which seems to be undefined. Please make sure it is defined" >&5 printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable 'datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { printf "%s\n" "/* $configure_input */" >&1 \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 printf "%s\n" "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else printf "%s\n" "/* $configure_input */" >&1 \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 printf "%s\n" "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. # TODO: see whether this extra hack can be removed once we start # requiring Autoconf 2.70 or later. case $CONFIG_FILES in #( *\'*) : eval set x "$CONFIG_FILES" ;; #( *) : set x $CONFIG_FILES ;; #( *) : ;; esac shift # Used to flag and report bootstrapping failures. am_rc=0 for am_mf do # Strip MF so we end up with the name of the file. am_mf=`printf "%s\n" "$am_mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile which includes # dependency-tracking related rules and includes. # Grep'ing the whole file directly is not great: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ || continue am_dirpart=`$as_dirname -- "$am_mf" || $as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$am_mf" : 'X\(//\)[^/]' \| \ X"$am_mf" : 'X\(//\)$' \| \ X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$am_mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` am_filepart=`$as_basename -- "$am_mf" || $as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \ X"$am_mf" : 'X\(//\)$' \| \ X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X/"$am_mf" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` { echo "$as_me:$LINENO: cd "$am_dirpart" \ && sed -e '/# am--include-marker/d' "$am_filepart" \ | $MAKE -f - am--depfiles" >&5 (cd "$am_dirpart" \ && sed -e '/# am--include-marker/d' "$am_filepart" \ | $MAKE -f - am--depfiles) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } || am_rc=$? done if test $am_rc -ne 0; then { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "Something went wrong bootstrapping makefile fragments for automatic dependency tracking. If GNU make was not used, consider re-running the configure script with MAKE=\"gmake\" (or whatever is necessary). You can also try re-running configure with the '--disable-dependency-tracking' option to at least be able to build the package (albeit without support for automatic dependency tracking). See 'config.log' for more details" "$LINENO" 5; } fi { am_dirpart=; unset am_dirpart;} { am_filepart=; unset am_filepart;} { am_mf=; unset am_mf;} { am_rc=; unset am_rc;} rm -f conftest-deps.mk } ;; "libtool":C) # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi cfgfile=${ofile}T trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # Generated automatically by $as_me ($PACKAGE) $VERSION # NOTE: Changes made to this file will be lost: look at ltmain.sh. # Provide generalized library-building support services. # Written by Gordon Matzigkeit, 1996 # Copyright (C) 2024 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # GNU Libtool is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program or library that is built # using GNU Libtool, you may include this file under the same # distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # The names of the tagged configurations supported by this script. available_tags='' # Configured defaults for sys_lib_dlsearch_path munging. : \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} # ### BEGIN LIBTOOL CONFIG # Whether or not to build static libraries. build_old_libs=$enable_static # Which release of libtool.m4 was used? macro_version=$macro_version macro_revision=$macro_revision # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # What type of objects to build. pic_mode=$pic_mode # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # Shared archive member basename,for filename based shared library versioning on AIX. shared_archive_member_spec=$shared_archive_member_spec # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # An echo program that protects backslashes. ECHO=$lt_ECHO # The PATH separator for the build system. PATH_SEPARATOR=$lt_PATH_SEPARATOR # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="\$SED -e 1s/^X//" # A grep program that handles long lines. GREP=$lt_GREP # An ERE matcher. EGREP=$lt_EGREP # A literal string matcher. FGREP=$lt_FGREP # A BSD- or MS-compatible name lister. NM=$lt_NM # Whether we need soft or hard links. LN_S=$lt_LN_S # What is the maximum length of a command? max_cmd_len=$max_cmd_len # Object file suffix (normally "o"). objext=$ac_objext # Executable file suffix (normally ""). exeext=$exeext # whether the shell understands "unset". lt_unset=$lt_unset # turn spaces into newlines. SP2NL=$lt_lt_SP2NL # turn newlines into spaces. NL2SP=$lt_lt_NL2SP # convert \$build file names to \$host format. to_host_file_cmd=$lt_cv_to_host_file_cmd # convert \$build files to toolchain format. to_tool_file_cmd=$lt_cv_to_tool_file_cmd # A file(cmd) program that detects file types. FILECMD=$lt_FILECMD # An object symbol dumper. OBJDUMP=$lt_OBJDUMP # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method = "file_magic". file_magic_cmd=$lt_file_magic_cmd # How to find potential files when deplibs_check_method = "file_magic". file_magic_glob=$lt_file_magic_glob # Find potential files using nocaseglob when deplibs_check_method = "file_magic". want_nocaseglob=$lt_want_nocaseglob # DLL creation program. DLLTOOL=$lt_DLLTOOL # Command to associate shared and link libraries. sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd # The archiver. AR=$lt_AR # Flags to create an archive (by configure). lt_ar_flags=$lt_ar_flags # Flags to create an archive. AR_FLAGS=\${ARFLAGS-"\$lt_ar_flags"} # How to feed a file listing to the archiver. archiver_list_spec=$lt_archiver_list_spec # A symbol stripping program. STRIP=$lt_STRIP # Commands used to install an old-style archive. RANLIB=$lt_RANLIB old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Whether to use a lock for old archive extraction. lock_old_archive_extraction=$lock_old_archive_extraction # A C compiler. LTCC=$lt_CC # LTCC compiler flags. LTCFLAGS=$lt_CFLAGS # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration. global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm into a list of symbols to manually relocate. global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import # Transform the output of nm in a C name address pair. global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # Transform the output of nm in a C name address pair when lib prefix is needed. global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix # The name lister interface. nm_interface=$lt_lt_cv_nm_interface # Specify filename containing input files for \$NM. nm_file_list_spec=$lt_nm_file_list_spec # The root where to search for dependent libraries,and where our libraries should be installed. lt_sysroot=$lt_sysroot # Command to truncate a binary pipe. lt_truncate_bin=$lt_lt_cv_truncate_bin # The name of the directory that contains temporary libtool files. objdir=$objdir # Used to examine libraries when file_magic_cmd begins with "file". MAGIC_CMD=$MAGIC_CMD # Must we lock files when doing compilation? need_locks=$lt_need_locks # Manifest tool. MANIFEST_TOOL=$lt_MANIFEST_TOOL # Tool to manipulate archived DWARF debug symbol files on Mac OS X. DSYMUTIL=$lt_DSYMUTIL # Tool to change global to local symbols on Mac OS X. NMEDIT=$lt_NMEDIT # Tool to manipulate fat objects and archives on Mac OS X. LIPO=$lt_LIPO # ldd/readelf like tool for Mach-O binaries on Mac OS X. OTOOL=$lt_OTOOL # ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. OTOOL64=$lt_OTOOL64 # Old archive suffix (normally "a"). libext=$libext # Shared library suffix (normally ".so"). shrext_cmds=$lt_shrext_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Variables whose values should be saved in libtool wrapper scripts and # restored at link time. variables_saved_for_relink=$lt_variables_saved_for_relink # Do we need the "lib" prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Library versioning type. version_type=$version_type # Shared library runtime path variable. runpath_var=$runpath_var # Shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Permission mode override for installation of shared libraries. install_override_mode=$lt_install_override_mode # Command to use after installation of a shared archive. postinstall_cmds=$lt_postinstall_cmds # Command to use after uninstallation of a shared archive. postuninstall_cmds=$lt_postuninstall_cmds # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # As "finish_cmds", except a single script fragment to be evaled but # not shown. finish_eval=$lt_finish_eval # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Compile-time system search path for libraries. sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Detected run-time system search path for libraries. sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path # Explicit LT_SYS_LIBRARY_PATH set during ./configure time. configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # The linker used to build libraries. LD=$lt_LD # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds # A language specific compiler. CC=$lt_compiler # Is the compiler the GNU compiler? with_gcc=$GCC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds module_expsym_cmds=$lt_module_expsym_cmds # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e. impossible to change by setting \$shlibpath_var if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds # Specify filename containing input files. file_list_spec=$lt_file_list_spec # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # ### END LIBTOOL CONFIG _LT_EOF cat <<'_LT_EOF' >> "$cfgfile" # ### BEGIN FUNCTIONS SHARED WITH CONFIGURE # func_munge_path_list VARIABLE PATH # ----------------------------------- # VARIABLE is name of variable containing _space_ separated list of # directories to be munged by the contents of PATH, which is string # having a format: # "DIR[:DIR]:" # string "DIR[ DIR]" will be prepended to VARIABLE # ":DIR[:DIR]" # string "DIR[ DIR]" will be appended to VARIABLE # "DIRP[:DIRP]::[DIRA:]DIRA" # string "DIRP[ DIRP]" will be prepended to VARIABLE and string # "DIRA[ DIRA]" will be appended to VARIABLE # "DIR[:DIR]" # VARIABLE will be replaced by "DIR[ DIR]" func_munge_path_list () { case x$2 in x) ;; *:) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" ;; x:*) eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" ;; *::*) eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" ;; *) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" ;; esac } # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. func_cc_basename () { for cc_temp in $*""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` } # ### END FUNCTIONS SHARED WITH CONFIGURE _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac ltmain=$ac_aux_dir/ltmain.sh # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? $SED '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ;; "po-directories":C) for ac_file in $CONFIG_FILES; do # Support "outfile[:infile[:infile...]]" case "$ac_file" in *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; esac # PO directories have a Makefile.in generated from Makefile.in.in. case "$ac_file" in */Makefile.in) # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'` ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac # Treat a directory as a PO directory if and only if it has a # POTFILES.in file. This allows packages to have multiple PO # directories under different names or in different locations. if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then rm -f "$ac_dir/POTFILES" test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" gt_tab=`printf '\t'` cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ${gt_tab}]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" POMAKEFILEDEPS="POTFILES.in" # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend # on $ac_dir but don't depend on user-specified configuration # parameters. if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then # The LINGUAS file contains the set of available languages. if test -n "$OBSOLETE_ALL_LINGUAS"; then test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" fi ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` # Hide the ALL_LINGUAS assignment from automake < 1.5. eval 'ALL_LINGUAS''=$ALL_LINGUAS_' POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" else # The set of available languages was given in configure.in. # Hide the ALL_LINGUAS assignment from automake < 1.5. eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' fi # Compute POFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) # Compute UPDATEPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) # Compute DUMMYPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) # Compute GMOFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) case "$ac_given_srcdir" in .) srcdirpre= ;; *) srcdirpre='$(srcdir)/' ;; esac POFILES= UPDATEPOFILES= DUMMYPOFILES= GMOFILES= for lang in $ALL_LINGUAS; do POFILES="$POFILES $srcdirpre$lang.po" UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" DUMMYPOFILES="$DUMMYPOFILES $lang.nop" GMOFILES="$GMOFILES $srcdirpre$lang.gmo" done # CATALOGS depends on both $ac_dir and the user's LINGUAS # environment variable. INST_LINGUAS= if test -n "$ALL_LINGUAS"; then for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "$LINGUAS"; then desiredlanguages="$LINGUAS" else desiredlanguages="$ALL_LINGUAS" fi for desiredlang in $desiredlanguages; do # Use the presentlang catalog if desiredlang is # a. equal to presentlang, or # b. a variant of presentlang (because in this case, # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in "$presentlang"*) useit=yes;; esac done if test $useit = yes; then INST_LINGUAS="$INST_LINGUAS $presentlang" fi done fi CATALOGS= if test -n "$INST_LINGUAS"; then for lang in $INST_LINGUAS; do CATALOGS="$CATALOGS $lang.gmo" done fi test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do if test -f "$f"; then case "$f" in *.orig | *.bak | *~) ;; *) cat "$f" >> "$ac_dir/Makefile" ;; esac fi done fi ;; esac done ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi echo " Configure summary: Source code location .......: ${srcdir} Compiler ...................: ${CC} Compiler flags .............: ${CFLAGS} Installing into prefix .....: ${prefix} ALL_LINGUAS ................: ${ALL_LINGUAS} Type make to build ${PACKAGE_STRING} " gnomint-1.6.4/packaging/0000755000000000000000000000000015212761357013670 5ustar00rootrootgnomint-1.6.4/packaging/debian/0000755000000000000000000000000015212761357015112 5ustar00rootrootgnomint-1.6.4/packaging/debian/changelog.in0000644000000000000000000000021715212761266017370 0ustar00rootrootgnomint (@PACKAGE_VERSION@-1) unstable; urgency=medium * New upstream release. -- David Marín Carreño @BUILD_DATE@ gnomint-1.6.4/packaging/debian/source/0000755000000000000000000000000015212761357016412 5ustar00rootrootgnomint-1.6.4/packaging/debian/source/format0000644000000000000000000000001515212761266017620 0ustar00rootroot3.0 (native) gnomint-1.6.4/packaging/debian/rules0000755000000000000000000000026115212761266016170 0ustar00rootroot#!/usr/bin/make -f %: dh $@ override_dh_auto_clean: [ ! -f Makefile ] || dh_auto_clean override_dh_auto_configure: ./autogen.sh dh_auto_configure override_dh_auto_test: gnomint-1.6.4/packaging/debian/control0000644000000000000000000000154415212761266016520 0ustar00rootrootSource: gnomint Section: utils Priority: optional Maintainer: David Marín Carreño Build-Depends: debhelper-compat (= 13), autoconf, automake, libtool, pkg-config, intltool, libgtk-4-dev, libglib2.0-dev, libgnutls28-dev, libsqlite3-dev, libgcrypt20-dev, libreadline-dev, libgdk-pixbuf-2.0-dev, iso-codes Standards-Version: 4.6.2 Homepage: https://github.com/davefx/gnoMint Package: gnomint Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, iso-codes Description: X.509 Certification Authority management tool gnoMint is an X.509 Certification Authority management tool for GTK/GNOME environments. It allows creating and managing your own CAs, signing certificates, generating CRLs, and importing/exporting in PEM, DER, and PKCS#12 formats. gnomint-1.6.4/packaging/arch/0000755000000000000000000000000015212761357014605 5ustar00rootrootgnomint-1.6.4/packaging/arch/PKGBUILD.in0000644000000000000000000000072515212761266016341 0ustar00rootrootpkgname=gnomint pkgver=@PACKAGE_VERSION@ pkgrel=1 pkgdesc='X.509 Certification Authority management tool' arch=('x86_64') url='https://github.com/davefx/gnoMint' license=('GPL-3.0-or-later') depends=('gtk4' 'glib2' 'gnutls' 'sqlite' 'libgcrypt' 'readline' 'iso-codes') makedepends=('autoconf' 'automake' 'libtool' 'pkgconf' 'intltool' 'gettext') source=() build() { cd "$startdir" make -j$(nproc) } package() { cd "$startdir" make DESTDIR="$pkgdir" install } gnomint-1.6.4/packaging/windows/0000755000000000000000000000000015212761357015362 5ustar00rootrootgnomint-1.6.4/packaging/windows/collect-files.sh0000644000000000000000000000615415212761266020450 0ustar00rootroot#!/bin/sh # collect-files.sh - Assemble a relocatable directory tree for the # Windows MSI installer. Run inside the MSYS2/MinGW64 shell after # `make install DESTDIR=$STAGING`. # # Usage: ./packaging/windows/collect-files.sh set -eu STAGING=${1:?Usage: collect-files.sh } PREFIX=${MINGW_PREFIX:-/mingw64} mkdir -p "$STAGING/bin" \ "$STAGING/lib/gdk-pixbuf-2.0/2.10.0/loaders" \ "$STAGING/share/glib-2.0/schemas" \ "$STAGING/share/icons" \ "$STAGING/etc/gtk-4.0" # ── 1. Executables ───────────────────────────────────────────────── cp src/gnomint.exe src/gnomint-cli.exe "$STAGING/bin/" # ── 2. MinGW runtime DLLs (ntldd recursive) ─────────────────────── for exe in "$STAGING/bin/"*.exe; do ntldd -R "$exe" 2>/dev/null \ | grep -io '[a-z]:\\.*mingw64\\[^ ]*\.dll' \ | sort -u \ | while IFS= read -r dll; do unix_path=$(cygpath -u "$dll") cp -n "$unix_path" "$STAGING/bin/" 2>/dev/null || true done done # ── 3. GDK-Pixbuf loaders ───────────────────────────────────────── cp "$PREFIX/lib/gdk-pixbuf-2.0/2.10.0/loaders/"*.dll \ "$STAGING/lib/gdk-pixbuf-2.0/2.10.0/loaders/" GDK_PIXBUF_MODULEDIR="$STAGING/lib/gdk-pixbuf-2.0/2.10.0/loaders" \ gdk-pixbuf-query-loaders \ > "$STAGING/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache" # ── 4. Icons (Adwaita + hicolor) ────────────────────────────────── cp -r "$PREFIX/share/icons/Adwaita" "$STAGING/share/icons/" cp -r "$PREFIX/share/icons/hicolor" "$STAGING/share/icons/" # ── 5. GLib schemas (system + app) ──────────────────────────────── cp "$PREFIX/share/glib-2.0/schemas/"*.xml \ "$STAGING/share/glib-2.0/schemas/" 2>/dev/null || true cp gconf/org.gnome.gnomint.gschema.xml \ "$STAGING/share/glib-2.0/schemas/" glib-compile-schemas "$STAGING/share/glib-2.0/schemas/" # ── 6. App data files (.ui, icons, locale) ───────────────────────── mkdir -p "$STAGING/share/gnomint" cp gui/*.ui gui/*.png "$STAGING/share/gnomint/" if [ -d po ]; then for mo in po/*.gmo; do [ -f "$mo" ] || continue lang=$(basename "$mo" .gmo) mkdir -p "$STAGING/share/locale/$lang/LC_MESSAGES" cp "$mo" "$STAGING/share/locale/$lang/LC_MESSAGES/gnomint.mo" done fi # ── 7. GTK settings ─────────────────────────────────────────────── cat > "$STAGING/etc/gtk-4.0/settings.ini" <<'EOF' [Settings] gtk-theme-name=Windows10 EOF echo "Staging tree ready at $STAGING" echo " Executables: $(ls "$STAGING/bin/"*.exe | wc -l)" echo " DLLs: $(ls "$STAGING/bin/"*.dll 2>/dev/null | wc -l)" echo " UI files: $(ls "$STAGING/share/gnomint/"*.ui 2>/dev/null | wc -l)" gnomint-1.6.4/packaging/windows/gnomint.ico0000644000000000000000000105544615212761266017547 0ustar00rootroot hF  00 %V ( :(  ;;ZX$Z8dy,A݇kPnbTppP~~+>*;)Q2O-X*],\7:;cEL8KE5E%yF'yE'xE&zAB;>A8CF&zO,L)P"SO,PF'z)W==&DF:HD#{9.t"S4(f9;) X/OE%y)Q<=GL4Z>/E&z)P)P)P-MC"{7H<@KTrk>?1X<4C%zF'zE'xD%zA@)P=@m~DG?B=KFOZF@ECDFGIQEGOV( @ vv[]^4\z ۀV*x(9z(:y(:_,P17.6/7=U6))))mhmEgI9q286732`.RU(OR.[.4AE)P:I075?-));ۥV8p:92N)P)P8G>A4N)Y(W)T)P+P06:@-)aJ?+7)P)P)Q*]+_*_3X+].d2i/e+S&6:A0CF<<)P)T*[F+|3.3/0:B@5j,U)638dzڱ9(53J)P;D2=9K)P)P)P)PG12A}.b+^@B)6+699v#HR68+P=E)F4)P)P)P)P)P)P)P*PC"{:-b(W)P)P@C48\JO)61O@G1E5)P)P)P)P)P)P)P)P)P)P>E$y/e)P)P?E=; BJ98+QBDG-}=)P;> QN(X9.n2&a)P)P)P,"[;3~(5R)Y)P48\iś/6*Q)PAA4=B9AA R/"] Q?5~B+P)P5KA6FC"{E%y+`+P,7fLY9=)R)P<>3)P RJ)P)P)P)PEIGEH)PC;5,`=C9;+u67-b)P9<0)PJ&V)P)P)P)P%TG6)gB/"_)P.P0*]=F::ڦ.7I])Q5:1)PJ"U)P)P)P)P:?A:HA/Q)P8I/)[)P&5^k08*[4:+*P."\D/Q)P)P)P)PGQL)P)PE7;(X)P?A<;ڄ27-c286F3+PNCIE9F)P-"Z :8-n)P)P;F0(R)P)P.6g:92g;C>00*P)P;;7-p8G)P)P+P<<)P)P=F/)P)P)P:<==897c)P+6;D"{)P)P)P)P)P)P)P)P)P+Q3E5)P)P=C,6U19DR)R6K&66@~+P)P)P)P)P)P)P?A.F*y=G)P6J)6tas179l)P9G%5C#z-B!{B=.P9GD5;/E2@=+P)P/7M]>E36Eh+_.L+7.6D%z5,.;D-|7:=<)P)P)P26ԎN\5838@J5k1N4;.7/708089=-K)P)P)P?F08p~8=88DM-b)Q)P(T1^DL@L9k2i1`-6Zh/898HLBB4788A?6<88;938OWiwBDIL{??????(0` $#]5`j2MWUA{}+<}+=mo۫rGgܠbfz,A*<*<`4[֡LGG~Ye/ q/G*<*<*dihGJGGGG`)))))):J\H[H[H[H[Cmk=yy-A*<*<*<*<*<*G&6-688>O)D))))))/kuH[H[d7uO9h=8~79?9zM%Vm%?t'8t'8m&>H&X#5%627@?;95780z-*))))VۆQfBqW9f+7@)P)P)P)P3N,7 4)~-))))xkec6pE9s56)P)P)P)P7J>==<>G)P)P)P)P)P)P)P/N)506#~/))G׾‚c4T)7@D)P)P)P)P)P)Q)\2h8m8m9mAs9l-b(T)P1O$6'5!.*h#G?4)P)P)P)P)R-b/d*[)R0P9M8M.Q)Y/eIu:m(V3L!4)5*}2AB16)P)P)P)[*_*PG08    -D$y9F*]Fu.d3N$44G`ټނ'5A?)P)P(T)SE1#"C!{E;1O)P.P>KE*y4 @~/M3h6l+Q48$6#6.9=Emܭp51O)P)P.P> F){*P)P)P)P)P)P)P)P)P=C5!E:+`:n)P+Q=>/7+7#7>;M&9898)P)P.P5(AC)P)P)P)P)P)P)P)P)P)P)P)PE'z E6,a.e)P)P)P)P4M5P\܋+4;!40N:J+Q@~'3J)P)P)P)P)P)P)P)P)P)P)P)P)P)PF,| A>6l)Y)P)P)P)P57AE`\9:!58I+P@=E3 =B)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)PB |+-R7l)P)P)P)P)6Vg d87261O)PA@:I'F(y)P)P*P>4}."]/%^A7}.Q>7:3)P)P)P)P)P@?=/t.PE)|.d(Y)P)P?E,6-8,6,P)P)P>:E6+Q)P6NK ; @ ? <P&W ?7J)P)P)P)PID)PF(y'+T2h)P)P*5298g|&60^)P)P.N::=A})P)PM =6)e/Q/O?9<1w?B ;-#])P)P)PD/6-b)P)P@C=A$E8)P@; :%V)P)P)P)P)P)PGD"T#U%VL ;A>)P)P-E'{1f)S?A.6DJ48=p)P)P6;;H 0P)P*![ :@;)P)P)P)P)P)P-!\ 7ADC 9H)P)P)P<@~+`)W9;)7%6Rk)Y)P385K )P)PT =;R)P)P)P)P)P)PE.7l.708Bs)P187G +O)P$V <:K)P)P)P)P)P)P)PKE)P%V >9J)P)P)P@}<*])V)P"4@F{,7Ql)V7:8> =K)P6(f 96'f)P)P)P)P)P)P)P2%b <>AEL)P)P)P)P9B {,`(Q)P;@#4t1909.dC&V&VIP)P)P)PN =A/Q)P)P)P?C +M(U)P)P)P99*6ݲp+6>p)P*5E< @C)P)P=5~MCCM7*h)P)P)PD'578)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)PC: ;D)P)P)P)P>D5duq/7Gt)P)P&5?< F){)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P0J$E#{)P)P)P)P:J 6?H'6Om(S)P8L4F.} E-~)P)P)P)P)P)P)P)P)P)P)P)P)P0L.8+P,M)P)P4M"67?&6CD1f)P)P<@4E,} D"{.P)P)P)P)P)P)P)P)P)P)PD<$83MA@)P)P)P+65;%JR-6Uw)Z)P)P;=4B7)"E(z1O)P)P)P)P)P)P>?; E$y;G:9+N)P)P>B4&*7.7W,`)P)P>E5-7F+|& ,<?}?7! =@D8:99-N)P)P)P67=?Hӗ68+6N`Fu,a)R1O/74)5@9E'z?~;;D"{F2AC2706@C)P)P)P)P)P#5\m7:B'627FGRw:n)\0O:;&55!4#5$4%5'4/7@G)P)P)P)P)P)P;K4wMP(6478PgDt)X)P)P)P,N)P)P)P)Q(Y)Y(T)P)P)P)P<899@yB@/65;Rv-d)R)P)P)R+_@`GGDB@FSlRxCs9lCD4j|{)6"5JPYEuAnCB)517<:79+6*6*606(616Xi PX37.6,7.799R^Fl ɾSiR[4\t);R@#搦Sd T;v{*=y)9c1SiGG_RXKx,A*<**<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<}+>^@2ÍGGGGGGGGGGGGGGGGGG\P\?x,A*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<_3^~aGGGGGGGGGGGGGGGGGGGq)aRo/H*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*tR0 ^Fu.E*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<~*`@2ԇGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG`xlfeb[OA1))))))))))))))Rv\H[H[H[H[H[H[H[H[H[H[H[H[H[H[H[H[H[H[H[H[H[H[H[I\LaSl|Xyt`sjuÿhAv*<|);*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<`4^/[GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGb~rjfd`YPB2)))))))))))))))))))))d}zJ\H[H[H[H[H[H[H[H[H[H[H[H[H[H[H[H[H[H[H[H[H[H[H[H[H[H[H[H[H[I\MaRiWuv]qf}r~zOy^6Z});*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*we2S*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<**<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*)))))))))))))))))))))))))))))))))))))b~K]H[H[H[H[H[H[H[H[H[H[H[H[H[H[H[H[H[H[H[H[H[H[H[H[H[H[H[H[H[H[H[H[H[H[H[H[n=yb5X*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*<*At_0)).;n>>"4433333367777777 6(6IZ;:77774333333677777777333334t'9t'8t'8t'8t'8t'8t'8t'8t'8t'8t'8t'8t'8t'8t'8t'8t'8t'8t'8t'8t'8t'8t'8t'8t'8t'8t'8t'8t'9?']2/U8=SS<>(677777744455"7.7374747/7%67764333333)7NQ1)))),!.))))))))))))))))))))))))))))))))+eB*SkH[H[H[H[H[H[H[H[H[H[H[H[H[c8x5F5F5F5F5FV9dc5Rg2QW):433467)62718)8.=;=yT2T35@78>4+YS%Rt'8t'8t'8t'8t'8t'8t'8t'8t'8t'8t'8t'8t'8t'8t'8t'8t'8t'8t'8t'8t'8t'8t'8t'8N&U20Q02H9-k*6/7777777777!677A?1N)P)P)P)P)P)P)P8MB>1776333334(7BE:w*))..)))))))))))))))))))))))))))))))OkgH[H[H[H[H[H[H[H[H[H[H[H[w?u5G5F5F5F5FR:bg1Qd4QB?q2>(6767677777633349&`#$Y(,F78;3-W\&Kt'8t'8t'8t'8t'8t'8t'8t'8t'8t'8t'8t'8t'8t'8t'8t'8t'8t'8t'8t'8S%Q3/T46<#&R?']336777777737D@-Q)P)P)P)P)P)P)P)P)P)P)P)P)PCJ887543677697777776,6MR /)))))))))))))))))))))))))))a䃁~J\H[H[H[H[H[H[H[H[Eg~5Q5F5F5Fg5Vg2Pf1Q48367777(677;9=;;967,676543333347$7;8E:|Q9dN0Xm,CJ&VB&[=(]=(]:(]=(]=(]@'\D&ZQ&Rd/N\9TN9fA798653333356:99N)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)PL)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P>:7633334LM$-))))))))))))))))))))))*f;+RhH[H[H[H[H[H[c9z5F5F5Fs5Sf3Qd3R#4333557)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P+PBB577777775333333333333477777!6::>M)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)PA?7433334OP'*)))))))))))))))))))))KldH[H[H[H[H[Fa}4R5F5F5FU9`g1QC8u3334)7-P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P2NA>/777633333333333333777)6@;;Q)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)PA@743333&5KW)*))))))))))))))))))))d`WM`H[H[H[H[e:{5F5F5Fs6Tf2Q]7V43447BB)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P8J=:,755556667544456$788HF/O)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P@B743334.7F`*+))))))))))))))))));{u\H[H[H[H]v4Z5F5F5FS9ag1Q=;777746)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P,M@?87-7#777777'736=:GD/Q)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P?B65456737Ah,*)))))))))))))))))_~|I[H[H[n=y5F5F5Fz6Oe3RW9Z377777>G)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P*M,L.F3M+P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P@A777777687n,()))))))))))))))/nUqH[H[m5f5F5F5FS:af1P:>777706)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P@>77777789/w-*))))))))))))))V߷ooH[@n5Lc4W5F`8`g2QX>x'6777!7+P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P;9777534@?"~-*)))))))))))Gncy5Wv-C*<*p>p>p>p>p8m7k4j2g/f-b*])Y(U)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P57774334DB",*))))))))))c`Vf7s}+?*<~+>h0PJ@b54777@B)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P(V,`4jCsPwVxTuTuTuTuTuTuTuTuTuTuTuTuTuTuTuTuTuTuTuRvEt7k-c)W)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P+Q.6733334ED!++))))))))8y`Fz,Az,?j2Mf4Q7A3477!6+P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)V.d@rQvTuTuTuTuTuTuTuTuTuTuTuTuTuTuTuTuTuTuTuTuTuTuTuTuTuTuTuTuTuTuRv>p/d(V)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P3M'6533335HE ),)))))))]ux]5_t6TR:e]p>pBtJvNvQvSxTuTuTuTuTuTuTuTuTuTuTuTuTuTuTuKu3i)X)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P;I 7433335IF%,)))))-na9{5FU:^OB\%73357@>)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)W2iNwTuTuTuTuTuVuMw?p4j,`)Y)U)Q)P)P)P)P)P)P)P)P)P)P)P)P)P)V)\,c4j=pLwVxTuTuTuTuTuTuTuTuTuTuTuJu/e(U)P)P)P)P)P)P)P)P)P)P)P)P)P)PBE5333335IH #.))))R߹abv6Se3Q>Ar433473K)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)Q,aGuTuTuTuTuVtDr2h*\)Q)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P(S*]2g@rTvTuTuTuTuTuTuTuTuTuTtj-sPa!53336,M)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P(T6jQtTuPv2h(T)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P+M:L=G8A1<,8'6"3 2 2 22 2%5)7-:6>;D=I4M)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)S/eNvTuUwX~V{TuTuVx=o(V)P)P)P)P)P)P)P)P)PBB677533507JZ>wQb433416)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)Q-bRvTuNw-b)Q)P)P)P)P)P)P)P)P)P)P)P)P)P)P+M=J8@+8;.C#{>4)   &/<C$|8+/'67>=H/N)P)P)P)P)P)P)P)P)P)P)P)P)Q+`IuTuTuTuTuTuTuVt0e)Q)P)P)P)P)P)P)P)P@E!7773334#5KL"!cU NO3346>:)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)ZHtTuQv-d)R)P)P)P)P)P)P)P)P)P)P)P)P+O11C$|8#  1B"|,*%58A:L)P)P)P)P)P)P)P)P)P)P)P)P*]JuTuTuTuTuTuTuIv)Z)P)P)P)P)P)P)P)P?G#77433334=@1t4e-A|8;4777*3  5?)%5>F*P)P)P)P)P)P)P)P)P)P)R1fVtTuTuTuTuTuBt)U)P)P)P)P)P)P)P5M)64333333.6NP4zbTTc&777757)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P,cRwKu)[)P)P)P)P)P)P)P)P)P)P.P;A2.>  (/58;;:55,#  ;0.7@3P)P)P)P)P)P)P)P)P)P)VCsTuTuUw^\Sw*\)P)P)P)P)P)P)P1O374333333*6EGQuuJJ6777@<)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P4jRw0e(Q)P)P)P)P)P)P)P)P)P0P7?;,0 "5B!|=+$3,84>;C=E=G=J=J=J=J=J=GpCs)V)P)P)P)P)P)P)P)P)P4M3=?)* ;@(*16>=G6L)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P9M1M)P)P)P)P)P)P)P)P)TBrUv\a_Vx:n)Q)P)P)P)P)P)P)P>G,7533337626:=PSWlgVu4446*6)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)S@r-b)P)P)P)P)P)P)P)P)P+M7@;,'#@~2,0;=H/N)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P.P=G0;5.?~")9-;D*P)P)P)P)P)P)P)P)Q0eTtVz\X}TuCs)R)P)P)P)P)P)P)P+P@;664577776$508DCSWQjU~_m8 JP3335<8)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)S/d)T)P)P)P)P)P)P)P)P)P=G+18 58,0;=I*P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P;K2;11?~ 220<+& A|7@*P)P)P)P)P)P)P)P/fSxTuTuTuNw(U)P)P)P)P)P)P)P)P)P)P)P)P@E98%7754433333347777765%5HLPxi'63336>C)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P;J'2. >$3>I)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P4M1 @*;J)P)P)P)P)P)P)P+^TvTuWzW{Iu)R)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P.N?FA><967/7#77777777777.7QP]m[p6;3335>:)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P5?A'  B!|(66O)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P=E;, B!|=E)P)P)P)P)P)P)P+^SxZa[@q)Q)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P6NB@98*67777777'5MMfRe!543471N)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P*P.:B {6,6=?)P)P)P)P)P)P)P*]Ty^a[5j)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P=G987777754SXri@A777757)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P.P'6?7#28L)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P;CA( '5;+O)P)P)P)P)P)P+_Tx^aX~-c)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P:I2777763/9WvSX.67777f8fAH67776:I)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P*P+8> 6-=H)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P+O1<;75+Q)P)P)P)P)P)Po)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P;K6333*6Vk9NM4677798)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P/:B!| 3.>F)P)P)P)P)P)P6kTuTuTu-c)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)PB@7763QR䨕S\'53367727,P)P)P)P)P)P)P)P)P+P,6?F)P)P)P)P)P+Q#4* <,=I)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P3=2A%~7763NR~ ȉRU#533347-70L)P)P)P)P)P)P)P)P)P9947)P)P)P)P)P)P3=>B&~=G)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P*P+5% 2-3P)P)P)P)P)P)[SxTuTu8m)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P>:7763RXCzQT433335)66N)P)P)P)P)P)P)P)P)P@B7:I)P)P)P)P)P=K9+?:A)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P.P.3 #&5+O)P)P)P)P)P6jTuTuQu)Y)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P577773Tg"fII433335(7:K)P)P)P)P)P)P)P)P)P.O(698)P)P)P)P)P+Q%3.-:)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P7M?)<7?)P)P)P)P)P)RNvTuVyCs)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)7777-7a6[~AE433336-65M)P)P)P)P)P)P)P)P)P)P=974J)P)P)P)P)P7>< -2.P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P=H@}>);K)P)P)P)P)P,`Tu]Tu*])P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P9K7777=@u[KSp8?35666727.L)P)P)P)P)P)P)P)P)P)P:K698)P)P)P)P)P:L:,@(9L)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P2<'2.P)P)P)P)P)PFtVyTuIt)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P?<7777GJ kQe4;56777787-P)P)P)P)P)P)P)P)P)P)P)P6769K)P)P)P)P)P'6&;:7777FDߑkOP0677777073K)P)P)P)P)P)P)P)P)P)P)P)P)PAI6/7)P)P)P)P)P=H@}1:@)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P1M>*<*>F)P)P)P)P)P=pTuTu=p)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P*P%7777)7UZ\gML,677777;8,P)P)P)P)P)P)P)P)P)P)P)P)P)P)P887A@)P)P)P)P)P(0  4.+O)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P,Q4R+P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)PIB!|:=H)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P6PPPED275.{4)m3&f2%e2%e3(i4*t30.89>HIPPDQ,N)P)P)P)P)P)P)P)P3QLQNQPPPPOQNPAQ)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)PERKRKRNPLQGQ+P)P)P)P)P)P)P*P5/9+:B)P)P)P)P)PAsTuTu2h)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P/77777JHuCqAG36777)6AI)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P@;7;8)P)P)P)P)P*7  /4)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)PJR>B6)m" [TM G C @ ? ? B F JOSX" [0%a6/{@EQO:R)P)P)P)P)PPO&!\#![#!\&!])"^*#_2)pJQ)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)PLQ7)m*#^*"^&!]$!\#![ Z>6)P)P)P)P)P)P>G6/0+O)P)P)P)P*\TuTuQv)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)PN)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P,N*67 8 7 7 7 7 7 7 7 7 7 7 7 : @ GPU# \5-tEF GV.5)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P8;N ? ? ? B CU>8)P)P)P)P)P)P)P605+=D)P)P)P)P)QNvTuTu*\)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P7763554:gJX33337578Q)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)PGH7,7)P)P)P)P)P4=$ 04)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P3OEF4'fQ B 8 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 @L Y)28N)P)PLQ.#` > 7 7 7 7K.$`HQ)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)PJR.$a A 7 7 7 7 :WGG)P)P)P)P)P)P)P=G47!3)P)P)P)P)P1gTuTu9l)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P4J73334RV׷Qi43335787R)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P986>:)P)P)P)P+M6-8=J)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)PEQ15X D 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 G)"^MK)P)P/Q32J 7 7 7 7 ;WAC)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P=AU 8 7 7 7 7 C.#aPQ)P)P)P)P)P)P)P*P8. -=H)P)P)P)P(USxTuSv)Q)P)P)P)P)P)P)P)P)P)P)P)P)P)P<95333&5[}Da&8333416>W)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P/Q#66;J)P)P)P)P>G970)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)PNP4.{O ; 7 7 7 7 7 7 7 7 7 7 8 : < 9 7 7 7 7 7 7 7 7 7 7 7 @%!\GL)P)P)PFHU 7 7 7 7 7 J6,r7P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P:Q1/ H 7 7 7 7 7L00?Q)P)P)P)P)P)P)P)P:A%C&}-9)P)P)P)P)PBrTuTu*])P)P)P)P)P)P)P)P)P)P)P)P)P,N#63333KL7EI3333#5FX1f)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)PHE5*6)P)P)P)P)P1: (QQP:=7*o2%e8E)P)P)P)P)PMQ+#_ A 7 7 7 7 9 ZQN)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)PQO#![ ? 7 7 7 7 8WAH)P)P)P)P)P)P)P)P)P)P)P*P@(,-.P)P)P)P)P0fTuTu-c)P)P)P)P)P)P)P)P)P)P)P7774334.7)P)P)P)P)P?*B'}*P)P)P)P)P)P)P)P)P)P)P)P)P)PNO,#^ = 7 7 7 7 7 <T6/wNQ)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P,N32L 7 7 7 7 7O4;)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P3<S 8 7 7 7 7 C1$bOQ)P)P)P)P)P)P)P)P)P)P)P)P3<  ,>G)P)P)P)P(XTuTu;n)P)P)P)P)P)P)P)P)P)P-Q!7774!5S]1f9:77737@cTuTu*Z)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P884<8)P)P)P)P6L; 6<)P)P)P)P)P)P)P)P)P)P)P)P)P@Q11H 7 7 7 7 7 9Q7,rJQ)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)PIIW 9 7 7 7 7 F2&c@Q)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P@Q5'iK 7 7 7 7 7N19.Q)P)P)P)P)P)P)P)P)P)P)P)P=I3>*1;)P)P)P)P)PPvTuNv)P)P)P)P)P)P)P)P)P)PCA77769=b<ܷTh.7777FHMvTuTu)V)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P+P(54B@)P)P)P)PXHI)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P+P3:K 7 7 7 7 7R9<)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P4;U 9 7 7 7 7 J5)j?Q)P)P)P)P)P)P)P)P)P)P)P)P)P)P15$,3P)P)P)P)P1gTuTu*])P)P)P)P)P)P)P)P,P777736SiGF466%79`^]Tu(W)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)PFD56)P)P)P)P)P@*=/)P)P)P)P)P)P)P)P)P)P)P)P)PGI!Z : 7 7 7 7 7N8/x9P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)PMNY 9 7 7 7 7 J.$`3O)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)PGR/#` J 7 7 7 7 7S:@)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P8A ,=H)P)P)P)P*\TuTu0e)P)P)P)P)P)P)P)PAE7777=>e(9<333 63i`aUv*])P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)PA;4+6)P)P)P)P.P> 6>)P)P)P)P)P)P)P)P)P)P)P)P6P/8L 7 7 7 7 7 =YQO)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)PDQ3(f E 7 7 7 7 @WEDNNQPQPQPPOONONONONONJJFGFGACABAB;?5<194'eU ; 7 7 7 7 B&"\NP)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P=I42.8?)P)P)P)P)RSxTu;n)P)P)P)P)P)P)P)P>:7776MNN|29333!68maaY~-b)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P77478)P)P)P)P:K/(=G)P)P)P)P)P)P)P)P)P)P)P)PQP0%b B 7 7 7 7 7 I6)k:Q)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P5=P 7 7 7 7 7HSVXXYYYY YZZZZZZYXWURS C 7 7 7 7 7P5.{.Q)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P.PB!|C$|+8)P)P)P)P)PLwTuFt)P)P)P)P)P)P)P)P576554S\^z.8334$7@p`a\8m)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P,63@;)P)P)P)P=D93P)P)P)P)P)P)P)P)P)P)P)P)PAHY 9 7 7 7 7 8SAF)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)PQO" [ = 7 7 7 7 7 7 8 9 < < < < < < ; 9 9 8 7 7 7 7 7 7 7 7 7 7 7 7 7 <WFG)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P>,;2)P)P)P)P)P@qTuOv)P)P)P)P)P)P)P)P+6333 5Vuc09334%7Bqaa_Lw)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P+P!54B@)P)P)P)P5? C#{)P)P)P)P)P)P)P)P)P)P)P)P1Q16P 7 7 7 7 7 >#![PP)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P2>/)P)P)P)P)P)P)P)P)P)P)P)PKQ3'f J 7 7 7 7 7 F3&d:Q)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P;AT 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7S45)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P7> ,.P)P)P)P)P/dTuTu)V)P)P)P)P)P)P)P6333"6_@GAD367%7>p_aaUv2g)P)P)P)P)P)P)P)P)P)P)P)P)P)P)PCN547M)P)P)P)PB&|0:)P)P)P)P)P)P)P)P)P)P)P)PQO'!] C 7 7 7 7 7N68)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)PPP'"^ B 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 ? ZPM)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P=E& ,:K)P)P)P)P+^TuTu)Y)P)P)P)P)P)P)P6333$5a+RZ477%7>c]a`TuNw)Q)P)P)P)P)P)P)P)P)P)P)P)P)P)PEE44+P)P)P)P)PB { 8@)P)P)P)P)P)P)P)P)P)P)P)PJMY > 7 7 7 7 7SEH)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P3O5.{M 7 7 7 7 7 7 < B F GI JKMMMLKK J I E @ 7 7 7 7 7 7 J4'f>Q)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P;K4*=H)P)P)P)P)YTuTu*])P)P)P)P)P)P)P7333$5^Wt'577!6RR[a\TuTu*_)P)P)P)P)P)P)P)P)P)P)P)P)P)PD?45)P)P)P)P)P= ;D)P)P)P)P)P)P)P)P)P)P)P)P8AV : 7 7 7 7 8XPN)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)PCFV 9 7 7 7 7 =W4(h4-r5/{3131313131407-v7-v5*o5*j3'e.$aW < 7 7 7 7 8T9=)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P4M=5+=E)P)P)P)P)VTuTu,`)P)P)P)P)P)P)P!7534%5U{Fp88777<! ZPP)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)PMP,"` D 7 7 7 7 8W@K3O)P)P)P)P)P)P)P)P)P.Q@QPO*JV 7 7 7 7 7 A#!\QO)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P*PA|@';D)P)P)P)P)RTuTu-b)P)P)P)P)P)P)P)6767)7RbJG777%7LVTuTuTuTuTu+_)P)P)P)P)P)P)P)P)P)P)P)P)P=:44)P)P)P)P4M++=K)P)P)P)P)P)P)P)P)P)P)P.Q52U 7 7 7 7 7 A&"]LQ)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P,N53O 7 7 7 7 7P18)P)P)P)P)P)P)P)P)P)P)P)P)P58N 7 7 7 7 7M6,r7P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)PD#{C&}:B)P)P)P)P)QSxTu-b)P)P)P)P)P)P)P577776MM9)Ti)6777;:JtTuTuTuTuNv(R)P)P)P)P)P)P)P)P)P)P)P)P;934)P)P)P)P:L&/:K)P)P)P)P)P)P)P)P)P)P)P6P6,qT 7 7 7 7 7 D,"`CQ)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)PMLW ; 7 7 7 7 G3'e9Q)P)P)P)P)P)P)P)P)P)P)P;7777<Q)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)PFQ0%b F 7 7 7 7 > [QO)P)P)P)P)P)P)P)P)P)P)PPPY > 7 7 7 7 D)"^OP)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)PA)B"|8@)P)P)P)P)PPwTu-d)P)P)P)P)P)P)P:H7777/7QfRlOQ533307IsTuTuTuTuSx)Y)P)P)P)P)P)P)P)P)P)P)P6734)P)P)P)P:L!66N)P)P)P)P)P)P)P)P)P)P)PAQ3'eT 7 7 7 7 7 H1%b9P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P4;P 7 7 7 7 8T:@)P)P)P)P)P)P)P)P)P)P)P?>T 7 7 7 7 7O411Q)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P@)B {;A)P)P)P)P)PNvTu-b)P)P)P)P)P)P)P)P)67777GDs `*53334NOTuTuTuTuTuHu)P)P)P)P)P)P)P)P)P)P)P6734)P)P)P)P:L45M)P)P)P)P)P)P)P)P)P)P)P>Q5(hU 7 7 7 7 7 H1%b4R)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)PNKZ < 7 7 7 7 L5(j4R)P)P)P)P)P)P)P)P)P3O4(g J 7 7 7 7 ;XDF)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)PA+A}Q5'g H 7 7 7 7 B"![OQ)P)P)P)P)P)P)P)P)PPP!![ @ 7 7 7 7 F/%aLQ)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)PA*B!|=E)P)P)P)P)PRvTu*^)P)P)P)P)P)P)P)P2K67755IFv `#63334LKQuY~aa^Qw)S)P)P)P)P)P)P)P)P)P8733)P)P)P)P9L"/H)P)P)P)P)PRvTu)[)P)P)P)P)P)P)P)P)P977633#5SgbIM3333*6Aj_aaaY~3i)P)P)P)P)P)P)P)P)P97335R)P)P)P6N&)>H)P)P)P)P)P)P)P)P)P)P)P)P66X ; 7 7 7 7 D$ \CQ)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)PPP#!\ ? 7 7 7 7N7+o2O)P)P)P)P)P)P)P9R3(g J 7 7 7 7 ; ZKL)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)PC$|A':K)P)P)P)P)PRwTu(V)P)P)P)P)P)P)P)P)P8I763337=k%e&63335KHX~aaa^Rw)R)P)P)P)P)P)P)P)P;933=I)P)P)P.P+=D)P)P)P)P)P)P)P)P)P)P)P)P>EV > 7 7 7 7 @ YNQ)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P4R7+n J 7 7 7 7 D%!\OQ)P)P)P)P)P)P)PQO Z > 7 7 7 7 H4'iAQ)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)PB {?)0P)P)P)P)P)PSxVx)Q)P)P)P)P)P)P)P)P)P)P7863333OZ*O[434727Af_aaaUv-d)P)P)P)P)P)P)P)P>:33A)P)P)P)P)P)P)P9=R 7 7 7 7 7R6=)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P4N>8+)P)P)P)P)P(UTuRv)P)P)P)P)P)P)P)P)P)P)P8I74333(6_2|z9>3677IEU|aaaTvLv)P)P)P)P)P)P)P)P>;436<)P)P)P)P9 1<)P)P)P)P)P)P)P)P)P)P)P)POQ" [K 7 7 7 7 7V;<)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)PNQ'"^ A 7 7 7 7O5,r1Q)P)P)P)P)P;R3(g F 7 7 7 7 ?%!\QO)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P=J5"2)P)P)P)P)P)YTuFt)P)P)P)P)P)P)P)P)P)P)P)P>:43334JOUm$577727Ce]aZTuTu)Y)P)P)P)P)P)P)P>?43.8)P)P)P)P@ }52)P)P)P)P)P)P)P)P)P)P)P)P>Q.$`R 7 7 7 7 7N5'i*P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P.Q6/{M 7 7 7 7 D& \OQ)P)P)P)P)PNK Z < 7 7 7 7K4-u4R)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P=D( )7)P)P)P)P)P*^Tu8m)P)P)P)P)P)P)P)P)P)P)P)P,M#63333!5Xv#(LJ!7777GDTyX}TvTuTu4j)P)P)P)P)P)P)P7C53%5)P)P)P)PD&{B()P)P)P)P)P)P)P)P)P)P)P)P)P94W : 7 7 7 7 E"!\EQ)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)PHHV 9 7 7 7 8U?B)P)P)P)P)P3;O 7 7 7 7 8U@D)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P7@  5?)P)P)P)P)P-cTu/f)P)P)P)P)P)P)P)P)P)P)P)P)P?C43333BD\y7:77707CfTuTuTuTuPv)Q)P)P)P)P)P)P,K534)P)P)P)PC0@~.P)P)P)P)P)P)P)P)P)P)P)P)PJJW C 7 7 7 7 9VAC)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)PJR,#_ C 7 7 7 7 M6,t/Q)P)P)P>Q3(g E 7 7 7 7 B*"_MQ)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P-9 .>G)P)P)P)P)P2gTu*])P)P)P)P)P)P)P)P)P)P)P)P)P)P274347/6Ql OP&6777GDSxTuTuTuTu*[)P)P)P)P)P)P)P634.Q)P)P)P?>3=I)P)P)P)P)P)P)P)P)P)P)P)PKQ("]N 7 7 7 7 7N3'e/Q)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P+P43N 7 7 7 7 A&!^NP)P)P)PLLZ : 7 7 7 7M41,Q)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P<-<4M)P)P)P)P)P:nQu(S)P)P)P)P)P)P)P)P)P)P)P)P)P)P7L66777GDwSZ{7;665)6@gTuTuTuTu5k)P)P)P)P)P)P)P#633BK)P)P)P:K 9@)P)P)P)P)P)P)P)P)P)P)P)P+P91{V : 7 7 7 7 >XII)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)PKKW ; 7 7 7 8TAD)P)P)P5:O 7 7 7 7 :WHI)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P.PB"{B%~)P)P)P)P)P)PHuLv)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P>;7777.7Wm޷ON4333HHTuTuTuTuNw)P)P)P)P)P)P)P0633:=)P)P)P+M-25)P)P)P)P)P)P)P)P)P)P)P)P)PPOY G 7 7 7 7 7N4(j7P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)PER1%b F 7 7 7 7 J5-u/Q)P@Q3(g F 7 7 7 7 E/%aCQ)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P?*P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P59P 7 7 7 7 ?'"]NP)PQO Z < 7 7 7 7P56)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P7? ;C)P)P)P)P)P)WTu,a)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)PA@777717Yy*:A3334H[TuTuTuTu/e)P)P)P)P)P)P;>534)P)P)P)PC({:Q5(jI 7 7 7 7 J6-wNP3&cI 7 7 7 7 I3(g7P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P.PC#|B {)P)P)P)P)P)P3iFu)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P@<7763,9hUXt 433327KuTv]]Nv)P)P)P)P)P)P)P733>=)P)P)P6L"6/)P)P)P)P)P)P)P)P)P)P)P)P)P)PNQ&!\L 7 7 7 7 7 8O3&gNN*P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P8>R 8 7 7 7 >$!\)JY > 7 7 7 8S;?)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P=H2=5)P)P)P)P)P)PAs2g)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P0Q!77434Uo`Gt1:333&5>jX}a`Vx)S)P)P)P)P)P)P2733*6)P)P)P)P=@}6N)P)P)P)P)P)P)P)P)P)P)P)P)P)PDDW C 7 7 7 7 7 8L/$bQ)P)P)P)P)P)P)P)P)P)P)P)P)P)P)PAQDE%545;R)P)P)P)P)P)P)P)P)P)P/OPP;?1$aXL JX:8/Q)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P7P5-xJ 7 7 7 7 JX H 7 7 7 7L7+q/O)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P+MA';)P)P)P)P)P)P(UJu)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)PA<5333EFBR^4357KJW|aaUy)\)P)P)P)P)P)P1E634EC)P)P)P>G 2.)P)P)P)P)P)P)P)P)P)P)P)P)P)P)PR>RCQNQPO@F7.v#!\T I ; 7 7K# \QP)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P>BU 8 7 7 7 ;M 8 7 7 7 8VDF)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P=F1D.)P)P)P)P)P)P*_/f)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)PFE53335 B D D C ? : 7 7 7 7 7 7 7 7 7M8?)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P,N32L 7 7 7 7 7 7 7 7 7O61+P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P7MA!|@~)P)P)P)P)P)P)P)W)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)PBM7333-9d]i08677:8Nv`aVz2g)P)P)P)P)P)P)P;D534@<)P)P)P>H A(1M)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P7R<6 YI 8 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 BQ:@)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)PMMX 9 7 7 7 7 7 7 7 :WMM)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P3=B;)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)PDF77531;f68{=;77767Gs_aVy4j)P)P)P)P)P)P)P)P"633(5*P)P)P+O=(7@)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P*PJI2&dR C 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 : ESV6.wJQ)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)PQDD7+q(!]RH A = 9 7 7 7 8 > BFOX)"]4'h5;NK:Q)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P6P6'f*#^'"]&!]$!\#![#![)!^$18R)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P.P>*"1O)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P7K7777/7R[LL777.76k[`TuONMP3O)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P:RQPPOPOQPQPQOOP3O)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P7@'E'z)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P9977778:\}3QW777*67gZ^Tu@q)P)P)P)P)P)P)P)P)PDA53467)P)P)PQ?Q>Q4R+P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P3P@(0P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P8J7777 6PNS\777%6=`X~[TuDt)P)P)P)P)P)P)P)P)P+P%6336CJ)P)P)PA*A(8M)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P/:E'z)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P16677758ToS^777!7A]UwTvTuHu)P)P)P)P)P)P)P)P)P)P?;43467)P)P)P>H,+8)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P=J@}&/N)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P=;6357#7QP(S`$6777FYTuTuTuJv)P)P)P)P)P)P)P)P)P)P/N5335EI)P)P)P;/A}>F)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P+O0/ F2)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P>B64333(8\}XݻTd)6777HTTuTuTuNw)P)P)P)P)P)P)P)P)P)P)P?;43306,N)P)P:K5 4.3P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P6@,3)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P6J!643334PaSg,6777JOTuTuTuRv)P)P)P)P)P)P)P)P)P)P)P8M"6335C>)P)P)P86 '*8)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P=JB"{ A@)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P/N+763334EKUk17777IHTuTuTuRw)P)P)P)P)P)P)P)P)P)P)P)PA=433 6:O)P)P4NC$|A};D)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P.P50 F'z)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P,L.7733337?j gVp47777HCTuTuTuVx)Q)P)P)P)P)P)P)P)P)P)P)P4Q$533487)P)P)P;C+>*e59777A=OvTuTuTu*])P)P)P)P)P)P)P)P)P)P)P)P+P27434"6=N)P)P4MC&}&+6+Q)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P>GA }F(|)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P+P7777773#6Uo*!o58777;9GuTuTuTu,c)P)P)P)P)P)P)P)P)P)P)P)P)PIK533336,Q)P)P=E:6-9*P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P;LA'?)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P+P9866664 5Ri<2977777)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P8N;,  =C)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P>:753334P^[?C676+7A\TuTuTuVw(T)P)P)P)P)P)P)P)P)P)P)P)P)P)PFJ6334#6=N)P)P4M;, C#{5?)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P4M7.  C:)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)PB=775334OXzPT3536OSTuTuTuTu.d)P)P)P)P)P)P)P)P)P)P)P)P)P)P)PC=4334,65P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P9M;,  E1)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)PEB777334MS|Ta3335JGRvTuVyUyMv)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P/Q58433436.Q)P)P>FB&~?-9+M)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P+ F*|)P)P)P)P)P)P)P)P>E0L)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)PBG777634KO|:^| 4333=<@qTu__Tw+_)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P=Q(5333499*P)P)PF)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)PB=777745:\}UޤR^4334DCJvaaa[Hu)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)PB=43335=:*P)P)Pa$5336479caaa`Uv-b)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P+P=:43335<9+P)P)P;I3- '0.>F)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P*P7>A}!@9)P)P)P)P)P)P)P*P787=9)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P575464 4R_$??3677LL]aaaY~Qw)S)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P.Q9843335;9.Q)P)P8N'/4 A })78M)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P;K:/%0>H)P)P)P)P)P)P)P0O277:8)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)PBB63333IHuߺSd4677878m`aaX}Tu=p)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P/Q4643335477M)P)P.P)7B"{<*4=0P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P4M0:<B {:K)P)P)P)P)P)P)P8J)7768,Q)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P(63333/8Z}'9l.:6777IIX}\ZTuTuTu-c)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P/O6643334*6CJ)P)P*P8A:,.6-9@/N)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P.P8@B"{ @0.P)P)P)P)P)P)P)P>C"77470Q)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P?@63334SaOY477716;jTuTuTuTuTuSx)Y)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P.Q::43334!7FC)P)P)P:L#4>46-8?0P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P.P8@D'|6@D)P)P)P)P)P)P)P)P=;77262N)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P,643337>kdbd.:7777B=OwTuTuTuTuTuSv)W)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P+P>;533346?<,N)P)P+O8@;, -<+0;;K)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P8L463334627?K)P)P)P:L%5B"{ A }.0:B4M)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P/N=E=0:  ???*P)P)P)P)P)P)P)P?C%666<:/O)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P6763334=kcmHI5533"5+P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P77434S_St.93333,6FtTuTuTuTuVyW{Tu*_)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P?K*643334667;N)P)P)P*P@+<-:/=J)P)P)P)P)P)P)P)P>C(675#7FC)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P?>7763-9a:.R_ 5333378MwTuTuZaa\Sy1g)Q)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P2N78533346!6@<.Q)P)P)P.P:B11:  ':C%{7/,97>=D=I:L1M)P)P)P)P)P)P.P4MF:A8=>/C#z9# 1=-=E)P)P)P)P)P)P)P)P0N8775526HM)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P477775ONoNP43334A=NwTuaaaa]UuHt)W)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)PB?5333346+6FD)P)P)P)P)P=H25?  %07<?~A }B!|B!|A }?~;8-"  ;31=E*P)P)P)P)P)P)P)P*P@< 7746;:;R)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P!777726Se^EE33347A=Lv]aaaa\TuRw/e)Q)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P9J07433334747BJ)P)P)P)P)P8M3=?+5 'C$|,7=I)P)P)P)P)P)P)P)P)P?@)6744(6JG+P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P=E77778:b|Z@@43677>;@r]aaaaVxTuTuMw+`)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)PC?6433334656CF)P)P)P)P)P*P=I29D${/  )A!|.2;A3P)P)P)P)P)P)P)P)P)P?B,7754599CQ)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P;97777II}>Y~=>4777768@cYzYX~UwTuTuTuTuTuDt*])P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P4M665433334637EG)P)P)P)P)P)P)P:K6>@+=# 9A(*68?9M)P)P)P)P)P)P)P)P)P*P@>,67545/7LI,N)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P/7777(7SX&YCA77777*7HJNwTuTuTuTuTuTuTuTuTuLv,b)Q)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P=E-653333346/6B>2O)P)P)P)P)P)P)P0P=H4==0C#{8&   %4A!|<+%42<>G.P)P)P)P)P)P)P)P)P)P)P0K=:%76544$6C@;R)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P+P777727Tk"aIF!777776<9@`QtTuTuTuTuTuTuTuTuTuOv3j)W)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P@B(554333335678CE+P)P)P)P)P)P)P)P)P)P6L>H:B3=23>,C'C%}C$|B!|A }A!|C#{C%}@(>*..'6/:7>=D9M)P)P)P)P)P)P)P)P)P)P)P)P*P@A5766545"7<:EN)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P>F767719aiNS0766534!6DBDnVxTuTuTuTuTuTuTuTuTuTuIt/d(T)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P>='6433333346(6:8DD,N)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P*P3P3P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P*M?A78!775445$7=;HN)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P@;6354?@vB⩊Sg38333334(5HECmVxTuTuX}^^a`]YUxSxBr,c(S)P)P)P)P)P)P)P)P)P)P)P)P)P)P>B055433333356!746A<;L)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P7H>;377653345'6>H_Px\`aaaaa`UwTvTuTuVt=p*_)Q)P)P)P)P)P)P)P)P)P)P)P)P)M<>27644333333444557*62777<8?;;97737(666644333335'6>:LO+P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P;K7333 4Y|bIc~AI43477777%698LKAiU}[^aaaWyTuTuTuTuTuTuRv5k(X)P)P)P)P)P)P)P)P)P)P)P)P)P,N>=27755333333333334455555555545443333333334'6<9II.Q)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)PB>7333+8i\w?F5!67777777/7>;MR@jRxWzVyTuTuTuTuTuTuTuTuTuTuFt-b)R)P)P)P)P)P)P)P)P)P)P)P)P)P*M6C;:065654433333333333333333333333345507C??N)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P466333AE \vML8;)677777777.7=:LN>hPwTuTuTuTuTuTuTuTuTuTuTuTv9m)V)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P*P3D;<9817%656565454444433454556$627>;DD7O)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P3R!77433Pg;ᨱgSY?@27777777545#569KM=iQxTuTuTuTuTuTuTuVyYW{Ru;n)X)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P*P0E7A=>><;99968576887878798<:@=AA:koT̰hRfHG*75677777,6IFEuW|]^X}TuTuTuTu7l)Q)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)Z4jPwTuTuTuTuTuTuTuTuTuTuTuTuTuTuTuTuTuTuTuTuTuSwCs2i*^(T)P)P)P)P)P)P)P)P)P)P)P)P(S-cItIu@;6477)6Qg׹iߚ\}SV;@.777777767HXSwTuTuTuTuTuTuTuHu)Y)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P(T1gMwTwY^`VzTuTuTuTuTuTuTuTuTuTuTuTuTuTuTuTuTuTuTuTuTuTuTuVxLw;o2h,a*\)Y)V)W)Z,`1gBrSxTuBrDA43356JG~%⦺kSaBD1777777#6C>EpTuTuTuTuTuTuTuVu4j)R)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)Q*]>oSxX{]`\X}QuNv?p6l4j1g1g4j8l>pJuQtTuTuTuTuTuUu[^_^[UxTuTuTuTuTuTuTuTuTuTuTuTuTuTuVu4iDA43333+8[}pT\;>'677754+6EUSwTuTuTuTuTuTuTuNv*])P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P(U1gNvTuX}]\WGu?bNTJF?<893706,6(6,6071757?;GBKT@eHuSxTvZ^a`][TuTuTuTuTvTuTuTuTuTuTuTuTuIuEpTuTuTuTuTuTuTuTuEt)\)Q)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)P)R,`CrSxTuUvYY{EpMWHG9:/7777777777763334%657?o3i<]LN@<06777764'7Rd-nNO5333334D@EpTuTuTuZaa`\VxTuLw;n/f+_)Z)Z)Z*],a2h=pNvTuTuTuTuTuTv@iLJ99(6777777777777764333336777776567%7/74798<9<:=:;98816 54477777"79'647777777(74779?@HGOPSVSVSVQRJI ᰍP_#5334677/6GCEcU}\^aaaaaaa]TuTuTuRv:nFZA=/67754333506;>RSTll7'\鵽^SgSU;?*6+6-6%7777777777%64$68@RSUqH];>4577777,7?=MQDdKuT{X}YYYWKv;o=bLSB?57677777733"5ADR`gW 8ںhYxTcSXLM9C-=&:(;5@BDGJGLRTS^Ywpz ޻Q`*667777777/799@S^c@=O`ffZE& 㒾gPQ99%67777777777777777774,9MPWq}⠼jS]DB68,67777545677$70779DCRWTtkۿ9`SbSSED8=+6&6%6'6*97>LKSUSd]~}ܸI3md__afr-(H`jubQ3??????????????@@??????????????????????????????gnomint-1.6.4/packaging/windows/Package.wxs0000644000000000000000000001063215212761266017461 0ustar00rootroot gnomint-1.6.4/config.guess0000755000000000000000000014324515212761274014273 0ustar00rootroot#!/usr/bin/sh # Attempt to guess a canonical system name. # Copyright 1992-2025 Free Software Foundation, Inc. # shellcheck disable=SC2006,SC2268 # see below for rationale timestamp='2025-07-10' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: # https://git.savannah.gnu.org/cgit/config.git/plain/config.guess # # Please send patches to . # The "shellcheck disable" line above the timestamp inhibits complaints # about features and limitations of the classic Bourne shell that were # superseded or lifted in POSIX. However, this script identifies a wide # variety of pre-POSIX systems that do not have POSIX shells at all, and # even some reasonably current systems (Solaris 10 as case-in-point) still # have a pre-POSIX /bin/sh. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system '$me' is run on. Options: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright 1992-2025 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try '$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi # Just in case it came from the environment. GUESS= # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, 'CC_FOR_BUILD' used to be named 'HOST_CC'. We still # use 'HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. tmp= # shellcheck disable=SC2172 trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15 set_cc_for_build() { # prevent multiple calls if $tmp is already set test "$tmp" && return 0 : "${TMPDIR=/tmp}" # shellcheck disable=SC2039,SC3028 { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } dummy=$tmp/dummy case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in ,,) echo "int x;" > "$dummy.c" for driver in cc gcc c17 c99 c89 ; do if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then CC_FOR_BUILD=$driver break fi done if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac } # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if test -f /.attbin/uname ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown case $UNAME_SYSTEM in Linux|GNU|GNU/*) LIBC=unknown set_cc_for_build cat <<-EOF > "$dummy.c" #if defined(__ANDROID__) LIBC=android #else #include #if defined(__UCLIBC__) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc #elif defined(__GLIBC__) LIBC=gnu #elif defined(__LLVM_LIBC__) LIBC=llvm #else #include /* First heuristic to detect musl libc. */ #ifdef __DEFINED_va_list LIBC=musl #endif #endif #endif EOF cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` eval "$cc_set_libc" # Second heuristic to detect musl libc. if [ "$LIBC" = unknown ] && command -v ldd >/dev/null && ldd --version 2>&1 | grep -q ^musl; then LIBC=musl fi # If the system lacks a compiler, then just pick glibc. # We could probably try harder. if [ "$LIBC" = unknown ]; then LIBC=gnu fi ;; esac # Note: order is significant - the case branches are not exclusive. case $UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ /sbin/sysctl -n hw.machine_arch 2>/dev/null || \ /usr/sbin/sysctl -n hw.machine_arch 2>/dev/null || \ echo unknown)` case $UNAME_MACHINE_ARCH in aarch64eb) machine=aarch64_be-unknown ;; armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; earmv*) arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'` endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'` machine=${arch}${endian}-unknown ;; *) machine=$UNAME_MACHINE_ARCH-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently (or will in the future) and ABI. case $UNAME_MACHINE_ARCH in earm*) os=netbsdelf ;; arm*|i386|m68k|ns32k|sh3*|sparc|vax) set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # Determine ABI tags. case $UNAME_MACHINE_ARCH in earm*) expr='s/^earmv[0-9]/-eabi/;s/eb$//' abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"` ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case $UNAME_VERSION in Debian*) release='-gnu' ;; *) release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. GUESS=$machine-${os}${release}${abi-} ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` GUESS=$UNAME_MACHINE_ARCH-unknown-bitrig$UNAME_RELEASE ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` GUESS=$UNAME_MACHINE_ARCH-unknown-openbsd$UNAME_RELEASE ;; *:SecBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/SecBSD.//'` GUESS=$UNAME_MACHINE_ARCH-unknown-secbsd$UNAME_RELEASE ;; *:LibertyBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` GUESS=$UNAME_MACHINE_ARCH-unknown-libertybsd$UNAME_RELEASE ;; *:MidnightBSD:*:*) GUESS=$UNAME_MACHINE-unknown-midnightbsd$UNAME_RELEASE ;; *:ekkoBSD:*:*) GUESS=$UNAME_MACHINE-unknown-ekkobsd$UNAME_RELEASE ;; *:SolidBSD:*:*) GUESS=$UNAME_MACHINE-unknown-solidbsd$UNAME_RELEASE ;; *:OS108:*:*) GUESS=$UNAME_MACHINE-unknown-os108_$UNAME_RELEASE ;; macppc:MirBSD:*:*) GUESS=powerpc-unknown-mirbsd$UNAME_RELEASE ;; *:MirBSD:*:*) GUESS=$UNAME_MACHINE-unknown-mirbsd$UNAME_RELEASE ;; *:Sortix:*:*) GUESS=$UNAME_MACHINE-unknown-sortix ;; *:Twizzler:*:*) GUESS=$UNAME_MACHINE-unknown-twizzler ;; *:Redox:*:*) GUESS=$UNAME_MACHINE-unknown-redox ;; mips:OSF1:*.*) GUESS=mips-dec-osf1 ;; alpha:OSF1:*:*) # Reset EXIT trap before exiting to avoid spurious non-zero exit code. trap '' 0 case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case $ALPHA_CPU_TYPE in "EV4 (21064)") UNAME_MACHINE=alpha ;; "EV4.5 (21064)") UNAME_MACHINE=alpha ;; "LCA4 (21066/21068)") UNAME_MACHINE=alpha ;; "EV5 (21164)") UNAME_MACHINE=alphaev5 ;; "EV5.6 (21164A)") UNAME_MACHINE=alphaev56 ;; "EV5.6 (21164PC)") UNAME_MACHINE=alphapca56 ;; "EV5.7 (21164PC)") UNAME_MACHINE=alphapca57 ;; "EV6 (21264)") UNAME_MACHINE=alphaev6 ;; "EV6.7 (21264A)") UNAME_MACHINE=alphaev67 ;; "EV6.8CB (21264C)") UNAME_MACHINE=alphaev68 ;; "EV6.8AL (21264B)") UNAME_MACHINE=alphaev68 ;; "EV6.8CX (21264D)") UNAME_MACHINE=alphaev68 ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE=alphaev69 ;; "EV7 (21364)") UNAME_MACHINE=alphaev7 ;; "EV7.9 (21364A)") UNAME_MACHINE=alphaev79 ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. OSF_REL=`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` GUESS=$UNAME_MACHINE-dec-osf$OSF_REL ;; Amiga*:UNIX_System_V:4.0:*) GUESS=m68k-unknown-sysv4 ;; *:[Aa]miga[Oo][Ss]:*:*) GUESS=$UNAME_MACHINE-unknown-amigaos ;; *:[Mm]orph[Oo][Ss]:*:*) GUESS=$UNAME_MACHINE-unknown-morphos ;; *:OS/390:*:*) GUESS=i370-ibm-openedition ;; *:z/VM:*:*) GUESS=s390-ibm-zvmoe ;; *:OS400:*:*) GUESS=powerpc-ibm-os400 ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) GUESS=arm-acorn-riscix$UNAME_RELEASE ;; arm*:riscos:*:*|arm*:RISCOS:*:*) GUESS=arm-unknown-riscos ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) GUESS=hppa1.1-hitachi-hiuxmpp ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. case `(/bin/universe) 2>/dev/null` in att) GUESS=pyramid-pyramid-sysv3 ;; *) GUESS=pyramid-pyramid-bsd ;; esac ;; NILE*:*:*:dcosx) GUESS=pyramid-pyramid-svr4 ;; DRS?6000:unix:4.0:6*) GUESS=sparc-icl-nx6 ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) GUESS=sparc-icl-nx7 ;; esac ;; s390x:SunOS:*:*) SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=$UNAME_MACHINE-ibm-solaris2$SUN_REL ;; sun4H:SunOS:5.*:*) SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=sparc-hal-solaris2$SUN_REL ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=sparc-sun-solaris2$SUN_REL ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) GUESS=i386-pc-auroraux$UNAME_RELEASE ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) set_cc_for_build SUN_ARCH=i386 # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if test "$CC_FOR_BUILD" != no_compiler_found; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -m64 -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH=x86_64 fi fi SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=$SUN_ARCH-pc-solaris2$SUN_REL ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=sparc-sun-solaris3$SUN_REL ;; sun4*:SunOS:*:*) case `/usr/bin/arch -k` in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like '4.1.3-JL'. SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'` GUESS=sparc-sun-sunos$SUN_REL ;; sun3*:SunOS:*:*) GUESS=m68k-sun-sunos$UNAME_RELEASE ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3 case `/bin/arch` in sun3) GUESS=m68k-sun-sunos$UNAME_RELEASE ;; sun4) GUESS=sparc-sun-sunos$UNAME_RELEASE ;; esac ;; aushp:SunOS:*:*) GUESS=sparc-auspex-sunos$UNAME_RELEASE ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) GUESS=m68k-atari-mint$UNAME_RELEASE ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) GUESS=m68k-atari-mint$UNAME_RELEASE ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) GUESS=m68k-atari-mint$UNAME_RELEASE ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) GUESS=m68k-milan-mint$UNAME_RELEASE ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) GUESS=m68k-hades-mint$UNAME_RELEASE ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) GUESS=m68k-unknown-mint$UNAME_RELEASE ;; m68k:machten:*:*) GUESS=m68k-apple-machten$UNAME_RELEASE ;; powerpc:machten:*:*) GUESS=powerpc-apple-machten$UNAME_RELEASE ;; RISC*:Mach:*:*) GUESS=mips-dec-mach_bsd4.3 ;; RISC*:ULTRIX:*:*) GUESS=mips-dec-ultrix$UNAME_RELEASE ;; VAX*:ULTRIX*:*:*) GUESS=vax-dec-ultrix$UNAME_RELEASE ;; 2020:CLIX:*:* | 2430:CLIX:*:*) GUESS=clipper-intergraph-clix$UNAME_RELEASE ;; mips:*:*:UMIPS | mips:*:*:RISCos) set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o "$dummy" "$dummy.c" && dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`"$dummy" "$dummyarg"` && { echo "$SYSTEM_NAME"; exit; } GUESS=mips-mips-riscos$UNAME_RELEASE ;; Motorola:PowerMAX_OS:*:*) GUESS=powerpc-motorola-powermax ;; Motorola:*:4.3:PL8-*) GUESS=powerpc-harris-powermax ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) GUESS=powerpc-harris-powermax ;; Night_Hawk:Power_UNIX:*:*) GUESS=powerpc-harris-powerunix ;; m88k:CX/UX:7*:*) GUESS=m88k-harris-cxux7 ;; m88k:*:4*:R4*) GUESS=m88k-motorola-sysv4 ;; m88k:*:3*:R3*) GUESS=m88k-motorola-sysv3 ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110 then if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \ test "$TARGET_BINARY_INTERFACE"x = x then GUESS=m88k-dg-dgux$UNAME_RELEASE else GUESS=m88k-dg-dguxbcs$UNAME_RELEASE fi else GUESS=i586-dg-dgux$UNAME_RELEASE fi ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) GUESS=m88k-dolphin-sysv3 ;; M88*:*:R3*:*) # Delta 88k system running SVR3 GUESS=m88k-motorola-sysv3 ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) GUESS=m88k-tektronix-sysv3 ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) GUESS=m68k-tektronix-bsd ;; *:IRIX*:*:*) IRIX_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/g'` GUESS=mips-sgi-irix$IRIX_REL ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. GUESS=romp-ibm-aix # uname -m gives an 8 hex-code CPU id ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) GUESS=i386-ibm-aix ;; ia64:AIX:*:*) if test -x /usr/bin/oslevel ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=$UNAME_VERSION.$UNAME_RELEASE fi GUESS=$UNAME_MACHINE-ibm-aix$IBM_REV ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #include int main () { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` then GUESS=$SYSTEM_NAME else GUESS=rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then GUESS=rs6000-ibm-aix3.2.4 else GUESS=rs6000-ibm-aix3.2 fi ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if test -x /usr/bin/lslpp ; then IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | \ awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` else IBM_REV=$UNAME_VERSION.$UNAME_RELEASE fi GUESS=$IBM_ARCH-ibm-aix$IBM_REV ;; *:AIX:*:*) GUESS=rs6000-ibm-aix ;; ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*) GUESS=romp-ibm-bsd4.4 ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and GUESS=romp-ibm-bsd$UNAME_RELEASE # 4.3 with uname added to ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) GUESS=rs6000-bull-bosx ;; DPX/2?00:B.O.S.:*:*) GUESS=m68k-bull-sysv3 ;; 9000/[34]??:4.3bsd:1.*:*) GUESS=m68k-hp-bsd ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) GUESS=m68k-hp-bsd4.4 ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` case $UNAME_MACHINE in 9000/31?) HP_ARCH=m68000 ;; 9000/[34]??) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if test -x /usr/bin/getconf; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case $sc_cpu_version in 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case $sc_kernel_bits in 32) HP_ARCH=hppa2.0n ;; 64) HP_ARCH=hppa2.0w ;; '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 esac ;; esac fi if test "$HP_ARCH" = ""; then set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if test "$HP_ARCH" = hppa2.0w then set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH=hppa2.0w else HP_ARCH=hppa64 fi fi GUESS=$HP_ARCH-hp-hpux$HPUX_REV ;; ia64:HP-UX:*:*) HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` GUESS=ia64-hp-hpux$HPUX_REV ;; 3050*:HI-UX:*:*) set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` && { echo "$SYSTEM_NAME"; exit; } GUESS=unknown-hitachi-hiuxwe2 ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) GUESS=hppa1.1-hp-bsd ;; 9000/8??:4.3bsd:*:*) GUESS=hppa1.0-hp-bsd ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) GUESS=hppa1.0-hp-mpeix ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*) GUESS=hppa1.1-hp-osf ;; hp8??:OSF1:*:*) GUESS=hppa1.0-hp-osf ;; i*86:OSF1:*:*) if test -x /usr/sbin/sysversion ; then GUESS=$UNAME_MACHINE-unknown-osf1mk else GUESS=$UNAME_MACHINE-unknown-osf1 fi ;; parisc*:Lites*:*:*) GUESS=hppa1.1-hp-lites ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) GUESS=c1-convex-bsd ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) GUESS=c34-convex-bsd ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) GUESS=c38-convex-bsd ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) GUESS=c4-convex-bsd ;; CRAY*Y-MP:*:*:*) CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` GUESS=ymp-cray-unicos$CRAY_REL ;; CRAY*[A-Z]90:*:*:*) echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` GUESS=t90-cray-unicos$CRAY_REL ;; CRAY*T3E:*:*:*) CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` GUESS=alphaev5-cray-unicosmk$CRAY_REL ;; CRAY*SV1:*:*:*) CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` GUESS=sv1-cray-unicos$CRAY_REL ;; *:UNICOS/mp:*:*) CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` GUESS=craynv-cray-unicosmp$CRAY_REL ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'` GUESS=${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` GUESS=sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) GUESS=$UNAME_MACHINE-pc-bsdi$UNAME_RELEASE ;; sparc*:BSD/OS:*:*) GUESS=sparc-unknown-bsdi$UNAME_RELEASE ;; *:BSD/OS:*:*) GUESS=$UNAME_MACHINE-unknown-bsdi$UNAME_RELEASE ;; arm:FreeBSD:*:*) UNAME_PROCESSOR=`uname -p` set_cc_for_build if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabi else FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabihf fi ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`uname -p` case $UNAME_PROCESSOR in amd64) UNAME_PROCESSOR=x86_64 ;; i386) UNAME_PROCESSOR=i586 ;; esac FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL ;; i*:CYGWIN*:*) GUESS=$UNAME_MACHINE-pc-cygwin ;; *:MINGW64*:*) GUESS=$UNAME_MACHINE-pc-mingw64 ;; *:MINGW*:*) GUESS=$UNAME_MACHINE-pc-mingw32 ;; *:MSYS*:*) GUESS=$UNAME_MACHINE-pc-msys ;; i*:PW*:*) GUESS=$UNAME_MACHINE-pc-pw32 ;; *:SerenityOS:*:*) GUESS=$UNAME_MACHINE-pc-serenity ;; *:Interix*:*) case $UNAME_MACHINE in x86) GUESS=i586-pc-interix$UNAME_RELEASE ;; authenticamd | genuineintel | EM64T) GUESS=x86_64-unknown-interix$UNAME_RELEASE ;; IA64) GUESS=ia64-unknown-interix$UNAME_RELEASE ;; esac ;; i*:UWIN*:*) GUESS=$UNAME_MACHINE-pc-uwin ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) GUESS=x86_64-pc-cygwin ;; prep*:SunOS:5.*:*) SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=powerpcle-unknown-solaris2$SUN_REL ;; *:GNU:*:*) # the GNU system GNU_ARCH=`echo "$UNAME_MACHINE" | sed -e 's,[-/].*$,,'` GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's,/.*$,,'` GUESS=$GNU_ARCH-unknown-$LIBC$GNU_REL ;; *:GNU/*:*:*) # other systems with GNU libc and userland GNU_SYS=`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"` GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC ;; x86_64:[Mm]anagarm:*:*|i?86:[Mm]anagarm:*:*) GUESS="$UNAME_MACHINE-pc-managarm-mlibc" ;; *:[Mm]anagarm:*:*) GUESS="$UNAME_MACHINE-unknown-managarm-mlibc" ;; *:Minix:*:*) GUESS=$UNAME_MACHINE-unknown-minix ;; aarch64:Linux:*:*) set_cc_for_build CPU=$UNAME_MACHINE LIBCABI=$LIBC if test "$CC_FOR_BUILD" != no_compiler_found; then ABI=64 sed 's/^ //' << EOF > "$dummy.c" #ifdef __ARM_EABI__ #ifdef __ARM_PCS_VFP ABI=eabihf #else ABI=eabi #endif #endif EOF cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'` eval "$cc_set_abi" case $ABI in eabi | eabihf) CPU=armv8l; LIBCABI=$LIBC$ABI ;; esac fi GUESS=$CPU-unknown-linux-$LIBCABI ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC=gnulibc1 ; fi GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; arc:Linux:*:* | arceb:Linux:*:* | arc32:Linux:*:* | arc64:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; arm*:Linux:*:*) set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then GUESS=$UNAME_MACHINE-unknown-linux-$LIBC else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabi else GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabihf fi fi ;; avr32*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; cris:Linux:*:*) GUESS=$UNAME_MACHINE-axis-linux-$LIBC ;; crisv32:Linux:*:*) GUESS=$UNAME_MACHINE-axis-linux-$LIBC ;; e2k:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; frv:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; hexagon:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; i*86:Linux:*:*) GUESS=$UNAME_MACHINE-pc-linux-$LIBC ;; ia64:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; k1om:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; kvx:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; kvx:cos:*:*) GUESS=$UNAME_MACHINE-unknown-cos ;; kvx:mbr:*:*) GUESS=$UNAME_MACHINE-unknown-mbr ;; loongarch32:Linux:*:* | loongarch64:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; m32r*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; m68*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; mips:Linux:*:* | mips64:Linux:*:*) set_cc_for_build IS_GLIBC=0 test x"${LIBC}" = xgnu && IS_GLIBC=1 sed 's/^ //' << EOF > "$dummy.c" #undef CPU #undef mips #undef mipsel #undef mips64 #undef mips64el #if ${IS_GLIBC} && defined(_ABI64) LIBCABI=gnuabi64 #else #if ${IS_GLIBC} && defined(_ABIN32) LIBCABI=gnuabin32 #else LIBCABI=${LIBC} #endif #endif #if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 CPU=mipsisa64r6 #else #if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 CPU=mipsisa32r6 #else #if defined(__mips64) CPU=mips64 #else CPU=mips #endif #endif #endif #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) MIPS_ENDIAN=el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) MIPS_ENDIAN= #else MIPS_ENDIAN= #endif #endif EOF cc_set_vars=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'` eval "$cc_set_vars" test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; } ;; mips64el:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; openrisc*:Linux:*:*) GUESS=or1k-unknown-linux-$LIBC ;; or32:Linux:*:* | or1k*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; padre:Linux:*:*) GUESS=sparc-unknown-linux-$LIBC ;; parisc64:Linux:*:* | hppa64:Linux:*:*) GUESS=hppa64-unknown-linux-$LIBC ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) GUESS=hppa1.1-unknown-linux-$LIBC ;; PA8*) GUESS=hppa2.0-unknown-linux-$LIBC ;; *) GUESS=hppa-unknown-linux-$LIBC ;; esac ;; ppc64:Linux:*:*) GUESS=powerpc64-unknown-linux-$LIBC ;; ppc:Linux:*:*) GUESS=powerpc-unknown-linux-$LIBC ;; ppc64le:Linux:*:*) GUESS=powerpc64le-unknown-linux-$LIBC ;; ppcle:Linux:*:*) GUESS=powerpcle-unknown-linux-$LIBC ;; riscv32:Linux:*:* | riscv32be:Linux:*:* | riscv64:Linux:*:* | riscv64be:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; s390:Linux:*:* | s390x:Linux:*:*) GUESS=$UNAME_MACHINE-ibm-linux-$LIBC ;; sh64*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; sh*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; sparc:Linux:*:* | sparc64:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; tile*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; vax:Linux:*:*) GUESS=$UNAME_MACHINE-dec-linux-$LIBC ;; x86_64:Linux:*:*) set_cc_for_build CPU=$UNAME_MACHINE LIBCABI=$LIBC if test "$CC_FOR_BUILD" != no_compiler_found; then ABI=64 sed 's/^ //' << EOF > "$dummy.c" #ifdef __i386__ ABI=x86 #else #ifdef __ILP32__ ABI=x32 #endif #endif EOF cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'` eval "$cc_set_abi" case $ABI in x86) CPU=i686 ;; x32) LIBCABI=${LIBC}x32 ;; esac fi GUESS=$CPU-pc-linux-$LIBCABI ;; xtensa*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. GUESS=i386-sequent-sysv4 ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION ;; i*86:OS/2:*:*) # If we were able to find 'uname', then EMX Unix compatibility # is probably installed. GUESS=$UNAME_MACHINE-pc-os2-emx ;; i*86:XTS-300:*:STOP) GUESS=$UNAME_MACHINE-unknown-stop ;; i*86:atheos:*:*) GUESS=$UNAME_MACHINE-unknown-atheos ;; i*86:syllable:*:*) GUESS=$UNAME_MACHINE-pc-syllable ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) GUESS=i386-unknown-lynxos$UNAME_RELEASE ;; i*86:*DOS:*:*) GUESS=$UNAME_MACHINE-pc-msdosdjgpp ;; i*86:*:4.*:*) UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then GUESS=$UNAME_MACHINE-univel-sysv$UNAME_REL else GUESS=$UNAME_MACHINE-pc-sysv$UNAME_REL fi ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac GUESS=$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 GUESS=$UNAME_MACHINE-pc-sco$UNAME_REL else GUESS=$UNAME_MACHINE-pc-sysv32 fi ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configure will decide that # this is a cross-build. GUESS=i586-pc-msdosdjgpp ;; Intel:Mach:3*:*) GUESS=i386-pc-mach3 ;; paragon:*:*:*) GUESS=i860-intel-osf1 ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then GUESS=i860-stardent-sysv$UNAME_RELEASE # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. GUESS=i860-unknown-sysv$UNAME_RELEASE # Unknown i860-SVR4 fi ;; mini*:CTIX:SYS*5:*) # "miniframe" GUESS=m68010-convergent-sysv ;; mc68k:UNIX:SYSTEM5:3.51m) GUESS=m68k-convergent-sysv ;; M680?0:D-NIX:5.3:*) GUESS=m68k-diab-dnix ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) GUESS=m68k-unknown-lynxos$UNAME_RELEASE ;; mc68030:UNIX_System_V:4.*:*) GUESS=m68k-atari-sysv4 ;; TSUNAMI:LynxOS:2.*:*) GUESS=sparc-unknown-lynxos$UNAME_RELEASE ;; rs6000:LynxOS:2.*:*) GUESS=rs6000-unknown-lynxos$UNAME_RELEASE ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) GUESS=powerpc-unknown-lynxos$UNAME_RELEASE ;; SM[BE]S:UNIX_SV:*:*) GUESS=mips-dde-sysv$UNAME_RELEASE ;; RM*:ReliantUNIX-*:*:*) GUESS=mips-sni-sysv4 ;; RM*:SINIX-*:*:*) GUESS=mips-sni-sysv4 ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` GUESS=$UNAME_MACHINE-sni-sysv4 else GUESS=ns32k-sni-sysv fi ;; PENTIUM:*:4.0*:*) # Unisys 'ClearPath HMP IX 4000' SVR4/MP effort # says GUESS=i586-unisys-sysv4 ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm GUESS=hppa1.1-stratus-sysv4 ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. GUESS=i860-stratus-sysv4 ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. GUESS=$UNAME_MACHINE-stratus-vos ;; *:VOS:*:*) # From Paul.Green@stratus.com. GUESS=hppa1.1-stratus-vos ;; mc68*:A/UX:*:*) GUESS=m68k-apple-aux$UNAME_RELEASE ;; news*:NEWS-OS:6*:*) GUESS=mips-sony-newsos6 ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if test -d /usr/nec; then GUESS=mips-nec-sysv$UNAME_RELEASE else GUESS=mips-unknown-sysv$UNAME_RELEASE fi ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. GUESS=powerpc-be-beos ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. GUESS=powerpc-apple-beos ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. GUESS=i586-pc-beos ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. GUESS=i586-pc-haiku ;; ppc:Haiku:*:*) # Haiku running on Apple PowerPC GUESS=powerpc-apple-haiku ;; *:Haiku:*:*) # Haiku modern gcc (not bound by BeOS compat) GUESS=$UNAME_MACHINE-unknown-haiku ;; SX-4:SUPER-UX:*:*) GUESS=sx4-nec-superux$UNAME_RELEASE ;; SX-5:SUPER-UX:*:*) GUESS=sx5-nec-superux$UNAME_RELEASE ;; SX-6:SUPER-UX:*:*) GUESS=sx6-nec-superux$UNAME_RELEASE ;; SX-7:SUPER-UX:*:*) GUESS=sx7-nec-superux$UNAME_RELEASE ;; SX-8:SUPER-UX:*:*) GUESS=sx8-nec-superux$UNAME_RELEASE ;; SX-8R:SUPER-UX:*:*) GUESS=sx8r-nec-superux$UNAME_RELEASE ;; SX-ACE:SUPER-UX:*:*) GUESS=sxace-nec-superux$UNAME_RELEASE ;; Power*:Rhapsody:*:*) GUESS=powerpc-apple-rhapsody$UNAME_RELEASE ;; *:Rhapsody:*:*) GUESS=$UNAME_MACHINE-apple-rhapsody$UNAME_RELEASE ;; arm64:Darwin:*:*) GUESS=aarch64-apple-darwin$UNAME_RELEASE ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` case $UNAME_PROCESSOR in unknown) UNAME_PROCESSOR=powerpc ;; esac if command -v xcode-select > /dev/null 2> /dev/null && \ ! xcode-select --print-path > /dev/null 2> /dev/null ; then # Avoid executing cc if there is no toolchain installed as # cc will be a stub that puts up a graphical alert # prompting the user to install developer tools. CC_FOR_BUILD=no_compiler_found else set_cc_for_build fi if test "$CC_FOR_BUILD" != no_compiler_found; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then case $UNAME_PROCESSOR in i386) UNAME_PROCESSOR=x86_64 ;; powerpc) UNAME_PROCESSOR=powerpc64 ;; esac fi # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_PPC >/dev/null then UNAME_PROCESSOR=powerpc fi elif test "$UNAME_PROCESSOR" = i386 ; then # uname -m returns i386 or x86_64 UNAME_PROCESSOR=$UNAME_MACHINE fi GUESS=$UNAME_PROCESSOR-apple-darwin$UNAME_RELEASE ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = x86; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi GUESS=$UNAME_PROCESSOR-$UNAME_MACHINE-nto-qnx$UNAME_RELEASE ;; *:QNX:*:4*) GUESS=i386-pc-qnx ;; NEO-*:NONSTOP_KERNEL:*:*) GUESS=neo-tandem-nsk$UNAME_RELEASE ;; NSE-*:NONSTOP_KERNEL:*:*) GUESS=nse-tandem-nsk$UNAME_RELEASE ;; NSR-*:NONSTOP_KERNEL:*:*) GUESS=nsr-tandem-nsk$UNAME_RELEASE ;; NSV-*:NONSTOP_KERNEL:*:*) GUESS=nsv-tandem-nsk$UNAME_RELEASE ;; NSX-*:NONSTOP_KERNEL:*:*) GUESS=nsx-tandem-nsk$UNAME_RELEASE ;; *:NonStop-UX:*:*) GUESS=mips-compaq-nonstopux ;; BS2000:POSIX*:*:*) GUESS=bs2000-siemens-sysv ;; DS/*:UNIX_System_V:*:*) GUESS=$UNAME_MACHINE-$UNAME_SYSTEM-$UNAME_RELEASE ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "${cputype-}" = 386; then UNAME_MACHINE=i386 elif test "x${cputype-}" != x; then UNAME_MACHINE=$cputype fi GUESS=$UNAME_MACHINE-unknown-plan9 ;; *:TOPS-10:*:*) GUESS=pdp10-unknown-tops10 ;; *:TENEX:*:*) GUESS=pdp10-unknown-tenex ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) GUESS=pdp10-dec-tops20 ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) GUESS=pdp10-xkl-tops20 ;; *:TOPS-20:*:*) GUESS=pdp10-unknown-tops20 ;; *:ITS:*:*) GUESS=pdp10-unknown-its ;; SEI:*:*:SEIUX) GUESS=mips-sei-seiux$UNAME_RELEASE ;; *:DragonFly:*:*) DRAGONFLY_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` GUESS=$UNAME_MACHINE-unknown-dragonfly$DRAGONFLY_REL ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case $UNAME_MACHINE in A*) GUESS=alpha-dec-vms ;; I*) GUESS=ia64-dec-vms ;; V*) GUESS=vax-dec-vms ;; esac ;; *:XENIX:*:SysV) GUESS=i386-pc-xenix ;; i*86:skyos:*:*) SKYOS_REL=`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'` GUESS=$UNAME_MACHINE-pc-skyos$SKYOS_REL ;; i*86:rdos:*:*) GUESS=$UNAME_MACHINE-pc-rdos ;; i*86:Fiwix:*:*) GUESS=$UNAME_MACHINE-pc-fiwix ;; *:AROS:*:*) GUESS=$UNAME_MACHINE-unknown-aros ;; x86_64:VMkernel:*:*) GUESS=$UNAME_MACHINE-unknown-esx ;; amd64:Isilon\ OneFS:*:*) GUESS=x86_64-unknown-onefs ;; *:Unleashed:*:*) GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE ;; x86_64:[Ii]ronclad:*:*|i?86:[Ii]ronclad:*:*) GUESS=$UNAME_MACHINE-pc-ironclad-mlibc ;; *:[Ii]ronclad:*:*) GUESS=$UNAME_MACHINE-unknown-ironclad-mlibc ;; esac # Do we have a guess based on uname results? if test "x$GUESS" != x; then echo "$GUESS" exit fi # No uname command or uname output not recognized. set_cc_for_build cat > "$dummy.c" < #include #endif #if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) #if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) #include #if defined(_SIZE_T_) || defined(SIGLOST) #include #endif #endif #endif int main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) #if !defined (ultrix) #include #if defined (BSD) #if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); #else #if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); #else printf ("vax-dec-bsd\n"); exit (0); #endif #endif #else printf ("vax-dec-bsd\n"); exit (0); #endif #else #if defined(_SIZE_T_) || defined(SIGLOST) struct utsname un; uname (&un); printf ("vax-dec-ultrix%s\n", un.release); exit (0); #else printf ("vax-dec-ultrix\n"); exit (0); #endif #endif #endif #if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) #if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) #if defined(_SIZE_T_) || defined(SIGLOST) struct utsname *un; uname (&un); printf ("mips-dec-ultrix%s\n", un.release); exit (0); #else printf ("mips-dec-ultrix\n"); exit (0); #endif #endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`"$dummy"` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; } echo "$0: unable to guess system type" >&2 case $UNAME_MACHINE:$UNAME_SYSTEM in mips:Linux | mips64:Linux) # If we got here on MIPS GNU/Linux, output extra information. cat >&2 <&2 <&2 </dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = "$UNAME_MACHINE" UNAME_RELEASE = "$UNAME_RELEASE" UNAME_SYSTEM = "$UNAME_SYSTEM" UNAME_VERSION = "$UNAME_VERSION" EOF fi exit 1 # Local variables: # eval: (add-hook 'before-save-hook 'time-stamp nil t) # time-stamp-start: "timestamp='" # time-stamp-format: "%Y-%02m-%02d" # time-stamp-end: "'" # End: gnomint-1.6.4/certs/0000755000000000000000000000000015212761357013064 5ustar00rootrootgnomint-1.6.4/certs/davefx.pem0000644000000000000000000000375515212761266015055 0ustar00rootroot-----BEGIN CERTIFICATE----- MIIFrjCCBRegAwIBAgIEPH1k+jANBgkqhkiG9w0BAQUFADA2MQswCQYDVQQGEwJF UzENMAsGA1UEChMERk5NVDEYMBYGA1UECxMPRk5NVCBDbGFzZSAyIENBMB4XDTA0 MTExNzEyMTQyNVoXDTA3MTExNzEyMTQyNVowfzELMAkGA1UEBhMCRVMxDTALBgNV BAoTBEZOTVQxGDAWBgNVBAsTD0ZOTVQgQ2xhc2UgMiBDQTESMBAGA1UECxMJNzAx MDAyMTgxMTMwMQYDVQQDFCpOT01CUkUgTUFSSU4gQ0FSUkXxTyBEQVZJRCAtIE5J RiAwMjI0NjU1NlAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC420yP nyKso6XywDrzDqYnyASYIuFtBT6NmnxeurK1acFtsrDyFL4/8yHSzeeQOrFtTlpy Q3u5c1fGxcyVA58HXVqCQYFiMv7PMmCN8ji7WY0D2IZZ6IvPWV6Stx6d0mFp+yHI 124STh0jvoUfpwN7YY8sBQ7kqt3bQxDEdYxstHMaYsnWGU3I3tl7e/YZY0ojVAwP WpJj4IPM8K4ao0EVUqzOiscHP6w4cCZG2zG4LbP9aLE09BoJVeXafMth/NsLPPM9 tPFRLrq/ms4+tkRvlgLlEt0bV/7UWnSZbZFu/2lQ+/vWY08jc6euRAWQcIEFENBC MuuS/IzhddxRxnjBAgMBAAGjggL6MIIC9jB6BgNVHREEczBxgQ1ETUFSSU5ARFlS LkVTpGAwXjEYMBYGCSsGAQQBrGYBBBMJMDIyNDY1NTZQMRYwFAYJKwYBBAGsZgED FAdDQVJSRfFPMRQwEgYJKwYBBAGsZgECEwVNQVJJTjEUMBIGCSsGAQQBrGYBARMF REFWSUQwCQYDVR0TBAIwADArBgNVHRAEJDAigA8yMDA0MTExNzEyMTQyNVqBDzIw MDcxMTE3MTIxNDI1WjALBgNVHQ8EBAMCBaAwEQYJYIZIAYb4QgEBBAQDAgWgMB0G A1UdDgQWBBQN7tVGoTZrfpSuhlc8VqjRkI2ZyDAfBgNVHSMEGDAWgBRAmnZEl3QH xKwUyx6NTzpFfDDXYTCCATEGA1UdIASCASgwggEkMIIBIAYJKwYBBAGsZgMFMIIB ETA0BggrBgEFBQcCARYoaHR0cDovL3d3dy5jZXJ0LmZubXQuZXMvY29udmVuaW8v ZHBjLnBkZjCB2AYIKwYBBQUHAgIwgcsagchDZXJ0aWZpY2FkbyBSZWNvbm9jaWRv IGV4cGVkaWRvIHNlZ/puIGxlZ2lzbGFjafNuIHZpZ2VudGUuVXNvIGxpbWl0YWRv IGEgbGEgQ29tdW5pZGFkIEVsZWN0cvNuaWNhIHBvciB2YWxvciBt4XhpbW8gZGUg MTAwIGUgc2Fsdm8gZXhjZXBjaW9uZXMgZW4gRFBDLkNvbnRhY3RvIEZOTVQ6Qy9K b3JnZSBKdWFuIDEwNi0yODAwOS1NYWRyaWQtRXNwYfFhLjAdBgkrBgEEAaxmASEE EBYOUEVSU09OQSBGSVNJQ0EwLwYIKwYBBQUHAQMEIzAhMAgGBgQAjkYBATAVBgYE AI5GAQIwCxMDRVVSAgFkAgEAMFsGA1UdHwRUMFIwUKBOoEykSjBIMQswCQYDVQQG EwJFUzENMAsGA1UEChMERk5NVDEYMBYGA1UECxMPRk5NVCBDbGFzZSAyIENBMRAw DgYDVQQDEwdDUkwxNTc3MA0GCSqGSIb3DQEBBQUAA4GBAIoQgFTNNnja+E6vg0Yq JWftgETw7yLkQ9H7m98r8XIZabEqoIHGwVrA6/dVtU5ACANZqAezx4AGMlJvN953 IC+6E2XXfewwyhnfxplOq+boT4sIJe+FoCpdxsIhPLlpCp0SfzdfGw7/7x43WLeE /pde6IFlpNDv+lHEXdQECbue -----END CERTIFICATE----- gnomint-1.6.4/certs/example-ca.gnomint0000644000000000000000000024000015212761266016470 0ustar00rootrootSQLite format 3@ &&.zq  : > >  t  G tableca_crlca_crl CREATE TABLE ca_crl (id INTEGER PRIMARY KEY, ca_id INTEGER, crl_version INTEGER, date TIMESTAMP, UNIQUE (ca_id, crl_version))+ ?indexsqlite_autoindex_ca_crl_1ca_crl ##gtableca_policiesca_policiesCREATE TABLE ca_policies (id INTEGER PRIMARY KEY, ca_id INTEGER, name TEXT, value TEXT, UNIQUE (ca_id, name))5I#indexsqlite_autoindex_ca_policies_1ca_policiesB''Ctablecert_requestscert_requestsCREATE TABLE cert_requests (id INTEGER PRIMARY KEY, subject TEXT, pem TEXT, private_key_in_db BOOLEAN, private_key TEXT, dn TEXT UNIQUE, parent_ca INTEGER)9M'indexsqlite_autoindex_cert_requests_1cert_requests %%[tablecertificatescertificatesCREATE TABLE certificates (id INTEGER PRIMARY KEY, is_ca BOOLEAN, serial TEXT, subject TEXT, activation TIMESTAMP, expiration TIMESTAMP, revocation TIMESTAMP, pem TEXT, private_key_in_db BOOLEAN, private_key TEXT, dn TEXT, parent_dn TEXT, parent_id INTEGER DEFAULT 0, parent_route TEXT, expired_already_in_crl INTEGER, subject_key_id TEXT, issuer_key_id TEXT)k''viewca_propertiesca_propertiesCREATE VIEW ca_properties AS SELECT id, name, value FROM db_properties''?tabledb_propertiesdb_propertiesCREATE TABLE db_properties (id INTEGER PRIMARY KEY, name TEXT, value TEXT, UNIQUE (name))9M'indexsqlite_autoindex_db_properties_1db_properties + hashed_password7is_password_protected0'ca_db_version12 +hashed_password7is_password_protected' ca_db_version      pp  / +[Guillermo Puertas-----BEGIN NEW CERTIFICATE REQUEST----- MIIChDCCAWwCAQAwPzELMAkGA1UEBhMCRVMxFDASBgNVBAoTC1B1ZXJ0YXMgSW5j MRowGAYDVQQDExFHdWlsbGVybW8gUHVlcnRhczCCASIwDQYJKoZIhvcNAQEBBQAD ggEPADCCAQoCggEBAK255ZfimIuzCaYWwxTSvJNLa6EAiyybMIiNsko9c5RCewd1 8VFc38b28pS5ngeagMQjqkyFP1xAXOvGl1K1OaISKHHcpyt4dJOl4i/d+g5j+dEY ZlbHdf3Mhpe0oD18LxCO7ci8E1tS10RC4Lnr+H36vdugT3xDq7awmnP4XHilt+Mc +A1xcWcQjAadTW1R4ZattpCqZXMiobPxxBUA4nJvqaITLSeMoeWD2ftkYdQpuSxf AP/LT6PXWWyDlbFQYDrma/rFxFVSdW34q8qxljCQN2rIaZV6TZrX2weylcWWGfPi 8NajCPdTlx3mhwjL8HnSfWp3yjX3/RJ2BKJvQQMCAwEAAaAAMA0GCSqGSIb3DQEB DQUAA4IBAQAYS19d35T1NQvqAF8rYkYNbnjrAiJA1Td5Duq9moH0rs/+8KvHg0ZD cICAcdGUwKm7UT686nlwoPseC5FUUsqZoTgVG4nvTn0/ix0Npt/FnNtu/sRc1F+y tevP9Z+zepD2se90IzHmDAPUHBPC+q3Qac7zIu9SyFkdwdYKQv/9rBII5bfL3AN0 CUegMy/CeWgHvG4wkUrR1KPsFDpbioZ3zUfqUCc9ydb/TCjl1K3+rYSuLBkFpPiX wIsYr3CjP2pSTabxsBg8Gwgu2x8Rpq4VDUl5co2OeLPZn4AwvoKmq0duWUlgk6u1 SzpM4zidlix4SJCFb4T7ZQ8CKGAFPogp -----END NEW CERTIFICATE REQUEST----- -----BEGIN RSA PRIVATE KEY----- MIIEpAIBAAKCAQEArbnll+KYi7MJphbDFNK8k0troQCLLJswiI2ySj1zlEJ7B3Xx UVzfxvbylLmeB5qAxCOqTIU/XEBc68aXUrU5ohIocdynK3h0k6XiL936DmP50Rhm Vsd1/cyGl7SgPXwvEI7tyLwTW1LXRELguev4ffq926BPfEOrtrCac/hceKW34xz4 DXFxZxCMBp1NbVHhlq22kKplcyKhs/HEFQDicm+pohMtJ4yh5YPZ+2Rh1Cm5LF8A /8tPo9dZbIOVsVBgOuZr+sXEVVJ1bfiryrGWMJA3ashplXpNmtfbB7KVxZYZ8+Lw 1qMI91OXHeaHCMvwedJ9anfKNff9EnYEom9BAwIDAQABAoIBAAHxa1T4jtY5KWl3 JbVs6fkHxetmEyhrj+5nD1BvQYSt/axGsG1FiaczCeGJ9e+F1dzbvULf1qaUfbWR Yg3lwwBCDbvASQpebYddOptocyyIB7pD+JkN4A73o6W8unIVmn0n7Bbrq5fA5HF6 AgNyVTQrgsYbE+iC5T/E1+VmKLqcsyaDYcNV1kT63L+ze3APRQqZKcORzS0S1oZD L/khNqPwLfFs7kwPVfQru8ZjjN7GTrsBzejmKka+YGGZ6kw5bc9jUu3J7/Z/c/yF Kxq83yZYfjzPfXNj/Co2rs2zMLbbjjlDHWTv6U/3ikXT/p1nAEtLmFH3vHjWk6jZ genfrskCgYEA5jU0agXophTkL2ovpy1ZOTykSMzbrvnMmRXm0aKAOXtJIG8YLiRG numobK2+HBC0d16OaTEsuOGVYct3mStJz+14y59JIpezbn6LbAag7QidbJTMGFL+ v7snQoB/OclRkcPXApm24mSLtXNtvEtEoEJSgUAEGDVn1PbekWAIYW0CgYEAwTCw 7XkuIJoSnK0ckzOAIZZitc28/WpQPJ7XhmsaaP/x1zhDY0Ar0Cpqo2TvhkLfQKV2 3WlPmOLb8VmyQ7jDJX75kJoMnAAuv7KabvKGDERcwrJ1EQoZ62dAew62LupcmhAl i7s+fIgBbInl89AsQ+O3/8+gmE5twaDyVnzeFi8CgYBIUly2FkchrhyF3Nk9rxyB w9Bk4p79mJKzYVMTdvbLmDTAEMbK8DCTihqUkfzQulrHyZf56i3/ozcX8yEOqK/W t+ckKVWDnZ8MToskk+yIqxUx4IlB9wj7WSObW90cXWfX4Guy8HGpLCdMCQhniEn2 AwAChQcER/rnx+riRwY6/QKBgQC6K+YUs1bUbCXLfreu006DD52Iff/GZpF0Gc6w 5r3Iuf2g3cNy/gA61uV1GGwLAp6KeeoWbMocF2LFLx8vS/ojRD3UL+A+5Z4ndkKE 8Iplf+u0ZK2UAhwAUrw82myOwaMDhNPp2EPbVmWo5ysGznIZ6nUCvF+S5uG2Wxeu aR7MWQKBgQCjB6uZZQcWvXQEy3APtULHE/Udaq/j17wuZmyNouyEfJ4EOu4QZnMi J0tzs1pfYgxM7YX6RvcCqgUww5Ophj7qHJWggimHmOkoqb8ykWnND4Y9sLEyDMLW UdgkLklvvMNtorBI9ypMFxHQVfdq34r8OTiky/vbMfHorVdYvUeO5A== -----END RSA PRIVATE KEY----- C=ES,O=Puertas Inc,CN=Guillermo Puertas *[ C=ES,O=Puertas Inc,CN=Guillermo Puertas 8 3~fQ8" nU?% r X ? )   \ B )  } l [ I  z c L 39- EMAIL_PROTECTION18) TLS_WEB_CLIENT17) TLS_WEB_SERVER16/ DATA_ENCIPHERMENT15' KEY_AGREEMENT14- KEY_ENCIPHERMENT13/ DIGITAL_SIGNATURE1!2? HOURS_BETWEEN_CRL_UPDATES241- MONTHS_TO_EXPIRE60-0;- ca_last_assigned_serial0000000000000001. !OU_INHERIT1- O_INHERIT1, L_INHERIT1+ !ST_INHERIT1* C_INHERIT1/ !CN_INHERIT1(-EMAIL_PROTECTION1')TLS_WEB_CLIENT1&)TLS_WEB_SERVER1%/DATA_ENCIPHERMENT1$'KEY_AGREEMENT1#-KEY_ENCIPHERMENT1"/DIGITAL_SIGNATURE1!!?HOURS_BETWEEN_CRL_UPDATES24 -MONTHS_TO_EXPIRE60-;-ca_last_assigned_serial0000000000000003-EMAIL_PROTECTION1)TLS_WEB_CLIENT1)TLS_WEB_SERVER1/DATA_ENCIPHERMENT1'KEY_AGREEMENT1-KEY_ENCIPHERMENT1/DIGITAL_SIGNATURE1!?HOURS_BETWEEN_CRL_UPDATES24-MONTHS_TO_EXPIRE60-;-ca_last_assigned_serial0000000000000003-EMAIL_PROTECTION1)TLS_WEB_CLIENT1)TLS_WEB_SERVER1/DATA_ENCIPHERMENT1'KEY_AGREEMENT1-KEY_ENCIPHERMENT1/DIGITAL_SIGNATURE1! ?HOURS_BETWEEN_CRL_UPDATES24 -MONTHS_TO_EXPIRE60- ;-ca_last_assigned_serial0000000000000002  -EMAIL_PROTECTION1  )TLS_WEB_CLIENT1 )TLS_WEB_SERVER1 /DATA_ENCIPHERMENT1 'KEY_AGREEMENT1 -KEY_ENCIPHERMENT1 /DIGITAL_SIGNATURE1  ?HOURS_BETWEEN_CRL_UPDATES24 -MONTHS_TO_EXPIRE60, ;-ca_last_assigned_serial0000000000000001 8 7 (Xo  0Dj)@U y 8 O d G  ^ s  : } R f  % - EMAIL_PROTECTION9) TLS_WEB_CLIENT8) TLS_WEB_SERVER7/ DATA_ENCIPHERMENT6' KEY_AGREEMENT5- KEY_ENCIPHERMENT4/ DIGITAL_SIGNATURE3? HOURS_BETWEEN_CRL_UPDATES2- MONTHS_TO_EXPIRE1; ca_last_assigned_serial0 !OU_INHERIT. O_INHERIT- L_INHERIT, !ST_INHERIT+ C_INHERIT* !CN_INHERIT/-EMAIL_PROTECTION()TLS_WEB_CLIENT')TLS_WEB_SERVER&/DATA_ENCIPHERMENT%'KEY_AGREEMENT$-KEY_ENCIPHERMENT#/DIGITAL_SIGNATURE"?HOURS_BETWEEN_CRL_UPDATES!-MONTHS_TO_EXPIRE ;ca_last_assigned_serial-EMAIL_PROTECTION)TLS_WEB_CLIENT)TLS_WEB_SERVER/DATA_ENCIPHERMENT'KEY_AGREEMENT-KEY_ENCIPHERMENT/DIGITAL_SIGNATURE?HOURS_BETWEEN_CRL_UPDATES-MONTHS_TO_EXPIRE;ca_last_assigned_serial-EMAIL_PROTECTION)TLS_WEB_CLIENT)TLS_WEB_SERVER/DATA_ENCIPHERMENT'KEY_AGREEMENT-KEY_ENCIPHERMENT/DIGITAL_SIGNATURE?HOURS_BETWEEN_CRL_UPDATES -MONTHS_TO_EXPIRE ;ca_last_assigned_serial  -EMAIL_PROTECTION  )TLS_WEB_CLIENT  )TLS_WEB_SERVER /DATA_ENCIPHERMENT 'KEY_AGREEMENT -KEY_ENCIPHERMENT /DIGITAL_SIGNATURE ?HOURS_BETWEEN_CRL_UPDATES -MONTHS_TO_EXPIRE ; ca_last_assigned_serial   > #' #OO01DFX Root CAj&A ދ-----BEGIN CERTIFICATE----- MIIDXjCCAkagAwIBAgIBATANBgkqhkiG9w0BAQ0FADBAMQswCQYDVQQGEwJFUzEM MAoGA1UEChMDREZYMQ0wCwYDVQQLEwRSb290MRQwEgYDVQQDEwtERlggUm9vdCBD QTAeFw0yNjA2MDgwNDExNTVaFw00NjA2MDgwNDExNTVaMEAxCzAJBgNVBAYTAkVT MQwwCgYDVQQKEwNERlgxDTALBgNVBAsTBFJvb3QxFDASBgNVBAMTC0RGWCBSb290 IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzU7ZOGCw6uskXW5L fNpymQYHTkhqmMHgMObpctV1AYa1XmiJd5CwFHIoB/0r+VyeMhHLDot4Th0/bimX yaRXioHDr4EM6XNO1OhAKpoHrxTaZ9Rh5D9N8u5CKrkst6ciPi6+4O0MvxCGMzlF kjiU66Xdl8VR3Y9zs3tCF+zPpY6DBOrthXRfvpTmhkL04Jugu8yqu2GacTGOG2q3 iOWQA5hx/klMzZ6TIKiVMJ6+Rg5kU/sHQIKJYuK0Sdim2Z3Y4OMF9+VFFRSGAyn4 gxydEMUv0Vg0OsLpfXUxCnoqtLIsBDSWXP5WveeAX8jySxZR5HmyqvEbDxXKQlDH xQ+YmwIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAd BgNVHQ4EFgQUr7GiWLJ5Bq6155waq6OKOdD95ccwHwYDVR0jBBgwFoAUr7GiWLJ5 Bq6155waq6OKOdD95ccwDQYJKoZIhvcNAQENBQADggEBAFGNhBM2BeUoudJPzIT3 EZ9OeXBr6zsn3nUNAjYy7MO4fEiH4ek2dc3JMMp6Mq1LDROiPbsqp6m2KsXkWCjE u1PAJs4ag/dGzhbqEK003rzgns/jPHjWs2zUrgvI7xQstx9045kT8R9F/cOcHvPG sjZD08RhHxCbh3NLqs4pIgN5aflICyx2dZFudmLiiGQbwiUK9OlCkKEimA0B6i21 kfXVG9ZAEoOo5z2z98E4DFm9Ch+HHvkVzY+UzlYr1zpAiQZOpH1ERymQm1p1cW7x vQ7GG0p0Ws5cqj7Rg9pDQYfy9ToNxKPNDjjbbJdRVnIULeIp4IpNQy/W3jlun7Fj EgA= -----END CERTIFICATE----- -----BEGIN RSA PRIVATE KEY----- MIIEogIBAAKCAQEAzU7ZOGCw6uskXW5LfNpymQYHTkhqmMHgMObpctV1AYa1XmiJ d5CwFHIoB/0r+VyeMhHLDot4Th0/bimXyaRXioHDr4EM6XNO1OhAKpoHrxTaZ9Rh 5D9N8u5CKrkst6ciPi6+4O0MvxCGMzlFkjiU66Xdl8VR3Y9zs3tCF+zPpY6DBOrt hXRfvpTmhkL04Jugu8yqu2GacTGOG2q3iOWQA5hx/klMzZ6TIKiVMJ6+Rg5kU/sH QIKJYuK0Sdim2Z3Y4OMF9+VFFRSGAyn4gxydEMUv0Vg0OsLpfXUxCnoqtLIsBDSW XP5WveeAX8jySxZR5HmyqvEbDxXKQlDHxQ+YmwIDAQABAoIBAD/E8et0/P66srzi eUf6ggXNvY8vJwzzizMlRfWJH6KtuL/uMGSW6FoxawWwOWxmvCxJIo0N/PwmUYFi IedbyGUZETL+HoiUbDPtP6D73s8e5wfBC/bdQtTl9F9YzO7uVtCBrIAooQDnnQdk DpvwPzFCf6WYgGkVGZbx/gF4aLa/Ee3fF6vg31gwijjkuB0q+j4b7UGNlSkUy/XG ryS1MGiZ4hpg4jad+Q4it55MmWI2Ssk17PRcMB5AexaW5Bkr9sbTIMnImfXLWlan woeYz2GdKmmmmR+/cKTIaOVpxdmHRDkZsuHuoRgrL+QGaj5qd4ENKv8dfDh0JLgp zlHCMmECgYEAze6P5TU5RC0MM/psLPUZwFhbsDreTir91c6eAG1T9+prQq6sSy1S l4zmNB+hMQYGsas1jp+XWVawMu7hK0JPBK5gPWCCLYwhRV2TFoiOdZIggHI85m3z tmOcD4zcERnEO3VzbFLyqrhzsXP6etkgkQHTNG4RE9NR50XUcRcFGG8CgYEA/zl0 kVsj4HJ/XFtCEWQmLb5DnJ1z3uDqD5itD+clrUEKCcfNvnnPvAqIAPjKjAHocjmw ni1nr30fn80iG3VNHoMs6yOeZ302dTCa14YCBMEJ2OM+e3J0i7weE8jwtZvFRYR3 3uOLJ+/Efv8+0Ye7oKVr1l4rsdearCaCMWjdoJUCgYBYi3H9uOPVp5TuqIdo0T5w UM2jubwqWhvomb2gK2IGYBocguR8MpGnriKxWMRDQvcP37DYkVBPTpHWZJYWtp0p Qx0IZv2yPeV0YObEspSmgt1MvVHoNnCrBKtumD9rbuvMMRUfB49lzoeYTmjt93wk PWelzIm1P5Cg44qT0bUUKwKBgG2nRMLSsoZTCw8mEiugqJqMnUXjjA3c+hL7WJd1 iwV15Rcwpd/JPAwhRi+MtJEUnMa+rHg5L8wA6R5iJt4/NoP+fcUEx6DU9hnBaTVh 2Oor+cwaThUBprsGdrGvamPMaiQk9s9nWbkt1XFuvpGNTHqHt94hFYrSBB0kallK IbZFAoGAcRo+K4meIlQWlGBCxyIbbQAa94D2GqK5vp/uORo5jSCB0dyDqMEoRkD0 5sednzAKAPBWbnEKT777O2Fw1j11CGAHwDJncsq+wJoxR5qz6GE9sn70MvXdWKll dh9l9UcyUHU6ytxY/0fgAxqcPgDYYEvamVZY1XsJrIzRyfoJ9Nk= -----END RSA PRIVATE KEY----- C=ES,O=DFX,OU=Root,CN=DFX Root CAC=ES,O=DFX,OU=Root,CN=DFX Root CA:AF:B1:A2:58:B2:79:06:AE:B5:E7:9C:1A:AB:A3:8A:39:D0:FD:E5:C7AF:B1:A2:58:B2:79:06:AE:B5:E7:9C:1A:AB:A3:8A:39:D0:FD:E5:C7 kk 3 +wO 01Signing Software CAj&A|8-----BEGIN CERTIFICATE----- MIIDhjCCAm6gAwIBAgIBATANBgkqhkiG9w0BAQ0FADBUMQswCQYDVQQGEwJFUzEM MAoGA1UEChMDREZYMRkwFwYDVQQLExBTb2Z0d2FyZSBTaWduaW5nMRwwGgYDVQQD ExNTaWduaW5nIFNvZnR3YXJlIENBMB4XDTI2MDYwODA0MTIxM1oXDTM2MDYwODA0 MTIxM1owVDELMAkGA1UEBhMCRVMxDDAKBgNVBAoTA0RGWDEZMBcGA1UECxMQU29m dHdhcmUgU2lnbmluZzEcMBoGA1UEAxMTU2lnbmluZyBTb2Z0d2FyZSBDQTCCASIw DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOEmjUDx7TOWu8vfQyzTMRI+woum DA2VN/qQs+FitT8cafFVU4Zr1JbtBcsx+swuWpVtjAoHPUUzhK9dKOW85ZRTHitZ 0W+oOMk/m06AnsMuHjvJSMdHfZr+Of2QZdnZ6QyL5T6QPIkfrlOOhl50+T2O+aDi 8MPsydC+8Y7NFlX4N4Lopzm9cZpkXgZKukZZ19+qgCaKeOnIFm38PRGvlJA2m7vI ibhQu9HzCRG6g9QznDd6Y4FjXZ1DPaJjELMKIHxJ/pr3rzf95EvweathoEjXbKuG ofQjdVM3xeZAK8zPs6Cl2rJV5wh080q62ulnxnKMEPoSgGOG8ssw8z2Bq4MCAwEA AaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE FHMXrwn4+tF5VupD33qxwVxVkPcNMB8GA1UdIwQYMBaAFHMXrwn4+tF5VupD33qx wVxVkPcNMA0GCSqGSIb3DQEBDQUAA4IBAQBehQ5Btc3bIH01OZP0xhCP01GXjQeO 9B3y8M1bFRUd0+9q483516Wu5bR7JOJhBVFRg3q8njG6YsnovY1Tp0A2wRFOYAMy RESUPAN8R8Q4+2R6GyWmgjRpZ4QZcQGz26S8lD0msj9/iR0mAAFJT/KYbZvogk1A VrDBEWxABcEiT3BzbzBPO9bTJimO3AtUCHERDLJIyj5RwDIXpJYSAQ8gD+8f3XBj OVQdBr8ZT/HvoQ1TEKqZO2B9ytHBtaU6kAloootB0aazcAigfFc8dZKhboffgPt8 s2bMdD5o/o17viRNR6j0RC8BPRPFNNFh1FD3RdT3L02jKBkq9mc+QXNf -----END CERTIFICATE----- -----BEGIN RSA PRIVATE KEY----- MIIEpgIBAAKCAQEA4SaNQPHtM5a7y99DLNMxEj7Ci6YMDZU3+pCz4WK1Pxxp8VVT hmvUlu0FyzH6zC5alW2MCgc9RTOEr10o5bzllFMeK1nRb6g4yT+bToCewy4eO8lI x0d9mv45/ZBl2dnpDIvlPpA8iR+uU46GXnT5PY75oOLww+zJ0L7xjs0WVfg3guin Ob1xmmReBkq6RlnX36qAJop46cgWbfw9Ea+UkDabu8iJuFC70fMJEbqD1DOcN3pj gWNdnUM9omMQswogfEn+mvevN/3kS/B5q2GgSNdsq4ah9CN1UzfF5kArzM+zoKXa slXnCHTzSrra6WfGcowQ+hKAY4byyzDzPYGrgwIDAQABAoIBAQDXGhHRflBz/Qol 2INBC/PRzovnBxh00Z7Nj/mK1tb6GJdOrYpC3joYhxIF8xX8hDyeji5AVnI+7t1Q /NvZwQJFFrO4DvN8jWbTPiWOdms3ZZQU4lTZrn9d2Ixmp9Hms71m8zBs+TgceVv/ ECdnjrGgEjyDbM1BIbQd7o6xM1angdX0Uw6wYA0woZ7JKuJTX7UgaIfoeD/lmQee VFNQZgcVp1GrzdjOXizx/HNpOn1/AnDFnyXGVD5LmsvatJijHuQZthSjrIUWm/22 jd7h0w2b9uobKzcap2ooBSS4etZbmR8Vb4i2W+iqsYebCWzUzvRt1jPKqnpMlDmn Kt8HKAhhAoGBAOjqC0+asGoxsRaOqlPHFY9i/VJ+fLwm6Ucw5yBQWGUQresSI+BO Dailysr+uSzyrpH/6wEO6ORmrvy5DNEPZmzE4GG7UnzSOXxmFRkoMXYBUPinwj0p Ekk1wiEWtH0llzEWfJbWFR+O9cIioL6cnWg45ip2e5Odjw96x5rwJBA3AoGBAPd3 g2U/QBDHBc6tLm01rbx1KbOhSDyQydqsU8sLUt65QZUoXICb99RrO0YMaBGDuc0R C41GKlEL9E6PvnrPyF9XExIMPWP4342mhFTaUWqjnchpqvggAMgXkyDWjBiKNatq fOC6EbbhW0SI3lWt8DEAUGhmQZ1oaL4X4zYMFOEVAoGBAJT3fByB12tUNOs0fAPx RPzcVyE3/Rdp27HIuUqVmLOrI1FB3OhNg7blsvp6SH1TCgwfHnMi0hmjAzBoOqZL rzrKAKkBYhSrcFD8CWp5pojO9rbStQzhA+0HEQ6QsweHz1d6Bl2CtyfkC5MLCrxe 9t395lgqR4d2MlW4NYoHJUmpAoGBAJS5jAteXwd2RUQ4Cq3x089ubriZVounzNiS Nu3RiWV32zVkg2t70Q8lvwLTU/wquZDIDLREFgyNba+Fbknq9JZwA3MWThL2MIy2 JdPFPackXCBleS4UNcQLfw3+Q0ZAUg8KObDpwtmxSKPAyjaeCbu5X5nO0uJiLIkK XDBQRIAdAoGBAKIuIlMw5a1IhqhQRm0dcFPt0UFD3W+Oxtu13jXn1rwPDqeN6FCd OyK6BBOcZmBj8ZZ6Q8qY8TSAYbvym+OWRBsTl7p+OoBibAI7RMbdVpffcbFd6ccM b7liqFcyAHM0C3EUTrxA4ykasSLk6Lo7uOg3yPAIpHd1hOB0giqM+aZ2 -----END RSA PRIVATE KEY----- C=ES,O=DFX,OU=Software Signing,CN=Signing Software CAC=ES,O=DFX,OU=Root,CN=DFX Root CA:1:73:17:AF:09:F8:FA:D1:79:56:EA:43:DF:7A:B1:C1:5C:55:90:F7:0D73:17:AF:09:F8:FA:D1:79:56:EA:43:DF:7A:B1:C1:5C:55:90:F7:0D  { u SOO 01People CAj&A|8-----BEGIN CERTIFICATE----- MIIB0TCCAXigAwIBAgIBATAKBggqhkjOPQQDBDBAMQswCQYDVQQGEwJFUzEMMAoG A1UEChMDREZYMQ8wDQYDVQQLEwZQZW9wbGUxEjAQBgNVBAMTCVBlb3BsZSBDQTAe Fw0yNjA2MDgwNDEyMTRaFw0zNjA2MDgwNDEyMTRaMEAxCzAJBgNVBAYTAkVTMQww CgYDVQQKEwNERlgxDzANBgNVBAsTBlBlb3BsZTESMBAGA1UEAxMJUGVvcGxlIENB MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEzenvWFeX9cjLIoUVJTTbOZyCKoRe SbOo4tyj9kDZjyFUIemuvyv5PxYTS7PNvnF2SD6g8eCLYolQEGdBj6TOB6NjMGEw DwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFER1uJrq aiqvPHmRuS3gCEMzP+OdMB8GA1UdIwQYMBaAFER1uJrqaiqvPHmRuS3gCEMzP+Od MAoGCCqGSM49BAMEA0cAMEQCICYwvO5KuozQtPsopyDBj1kzGjNifP+AN9l2XHNP x36TAiBE0tld2TZU0VVH1E5djXjV51i3npxXo/5CrGDhW8OEyw== -----END CERTIFICATE----- -----BEGIN EC PRIVATE KEY----- MHcCAQEEINS7RSbapUl1gIoRtvvx8zMMM5fNaR9E8e2dBA5FLM0goAoGCCqGSM49 AwEHoUQDQgAEzenvWFeX9cjLIoUVJTTbOZyCKoReSbOo4tyj9kDZjyFUIemuvyv5 PxYTS7PNvnF2SD6g8eCLYolQEGdBj6TOBw== -----END EC PRIVATE KEY----- C=ES,O=DFX,OU=People,CN=People CAC=ES,O=DFX,OU=Root,CN=DFX Root CA:1:44:75:B8:9A:EA:6A:2A:AF:3C:79:91:B9:2D:E0:08:43:33:3F:E3:9D44:75:B8:9A:EA:6A:2A:AF:3C:79:91:B9:2D:E0:08:43:33:3F:E3:9D &  +CO 01VPN CAj&A|8-----BEGIN CERTIFICATE----- MIIDUjCCAjqgAwIBAgIBATANBgkqhkiG9w0BAQ0FADA6MQswCQYDVQQGEwJFUzEM MAoGA1UEChMDREZYMQwwCgYDVQQLEwNWUE4xDzANBgNVBAMTBlZQTiBDQTAeFw0y NjA2MDgwNDEyMTRaFw0zNjA2MDgwNDEyMTRaMDoxCzAJBgNVBAYTAkVTMQwwCgYD VQQKEwNERlgxDDAKBgNVBAsTA1ZQTjEPMA0GA1UEAxMGVlBOIENBMIIBIjANBgkq hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA6kMzxk+LGehENzjlGiY4Qo8nQda8OrsS AtgBwPLZ9heTFJAXBZxDYzKus6/ps3B3gZsyaPqpM82oZVTqVD5GF1QK40v0rCKw hKaOLht/9Y1+9bH+VZCDZN0UDdiKs+XVCaU4GyBWWOKGNwnye9HOmiFkTwOyjRyI HwncTjfLHpy4VR3aVDIPmTZiyndYrE1auiNRa8kP+g74p9aDzqHZZ4SvrYG8mkni Sh7aTAObjqLUk91OH72UpbtK5zleec7/XBUleeNT6+DCquiCcxKLR7WZ+6qrbJif t8p0+NmZUBWEzwXqxVG63BcWjUVPn0RF7I6PSNO3W+pwc7XTIFf91QIDAQABo2Mw YTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUpP5F Cz1hJLoGHS326+tp8L/T32cwHwYDVR0jBBgwFoAUpP5FCz1hJLoGHS326+tp8L/T 32cwDQYJKoZIhvcNAQENBQADggEBAFM2KXTFKV6B8RpkVqUyq8l4Vc0psK7yEAiE pIykTgZTVX0orQrCgy0B+Eb/cHzkCVR6Z4F9cFy+p3ZrRhn9AedONbeXAu0r0QCG UHMrw4GOGD8VAlMBxd44rJAaCtY6KZKkqpHp6u41DjTkjvZ7XGY0jfEj5UCTJby3 +ZdVTCFzIawKnYqzY1LKeaotiu5q2VMtCrs5xe43xCoQACM0ZvkA1hXb1cFF6mDi GAPLoj7EPiGXkKwaU4ufb1yRnaoGDFAQFE10wjOZ2oHrSdAlINLGgEpQo2nvb2S5 ph2Wk96LnXvkYz77mEfFNviSr4YHYDftR9teLk6tFrlS6+Wko3E= -----END CERTIFICATE----- -----BEGIN RSA PRIVATE KEY----- MIIEpQIBAAKCAQEA6kMzxk+LGehENzjlGiY4Qo8nQda8OrsSAtgBwPLZ9heTFJAX BZxDYzKus6/ps3B3gZsyaPqpM82oZVTqVD5GF1QK40v0rCKwhKaOLht/9Y1+9bH+ VZCDZN0UDdiKs+XVCaU4GyBWWOKGNwnye9HOmiFkTwOyjRyIHwncTjfLHpy4VR3a VDIPmTZiyndYrE1auiNRa8kP+g74p9aDzqHZZ4SvrYG8mkniSh7aTAObjqLUk91O H72UpbtK5zleec7/XBUleeNT6+DCquiCcxKLR7WZ+6qrbJift8p0+NmZUBWEzwXq xVG63BcWjUVPn0RF7I6PSNO3W+pwc7XTIFf91QIDAQABAoIBAQCPIk6BLdrVEoiT oSzChHW9nVAkNzs9O03u9OJlbTzl01Onrb6TS/4Un0QFQEevvtkWFKiBYh5+K3tn prGilYYn/M7GQIOXpX5rHoUjAOR3OWRIZN/8kdbmivoU16kv8A7x3MRiNqjrmETf XjGNnAz7OcnbSWwQMk2tgU3dcNOnuHjM8G7flgircC6vmcS8i1XgSNF3fUwgnqny nWKkdwOxoz+UqcL2AtHBLaPAhh4B6IXyZ+dQ8UBXtm0p7mR3bQ5NZ6b44PSlgDiT FOw43/U+K8ng8IXm0bFxOHD1hvoxqEsypz75dEj6GHf5VJ271G8XxJNjJ8spEFxk UnrxmrLhAoGBAPBpS5UEoph59EMuq86Gdtzqh67NfbTHupO5OVoAUO8KlzmC/hke KaOyqligmXiUyeZWYUx0QzPLp70s/rzD8w6pgyXU028N9EURDl1LUzMRVGNi4dIH rKlfl1/YrsgNloeG7GRt0NEA8hIDu/z6meDXnUFGVmklSVFqYyb/LxedAoGBAPlz 1w3TIAtUuZdO+Owbke3J/YdEPgXKlVT/pkP2DtXJJpu9Mikdj2qE0Q3LCSzQmHT0 5DJ070S46q0/6yZX5wPNvCisJwvragTqfep6/b9E0LJBIdlT/s0YvFeBdVF9MdNE LyydvkJaiaA8nEwWYQwH2F7bejp46pgzdFfhXxWZAoGBAMEXAQKuF125zarL6GfW 7c7fe5y1JPq21C7jvKGB0X88lVs2z5ki9bSpwlGuo7UKY+LhjAJY+sS2FIJHik3Y X/ZtxYz0E+GFZqS2X0AlSKyihZHRkKgdS9s5kJ4FrdO1vioZ/vFmlinXxZUcdLdq G39QDdiogqyuquV+OibPHGatAoGBAMhd3LJ1D/sp/bzkqRr1djy7D1K0ZOE//Lz+ b+2M2hOsc7+Ks5zE6qqTrlvW5zLBBoSDJDzHIl1f7thkTBxLZPrwKR++T8rKOClk tOlAC0u0GbHkkSzAxBy3rqjXCoX++qOI1B+RQP6JPJyhsqWHIEKKlqhywHXxI/ZG 9j+UfkyZAoGAcf3bTRd18B/uwjfLQvyDlTt/j/4pB5IRxpyw5RwKBsp8qvqYS1Ls CUryEK3ILxKBo0LiM9I0K1hag9NO91C2S35NTBws/dSOxPnmJ+jl2AmszdsJzyTD sUvA0kXhODBq+FUJ+Ve8FPFbdkwtK+JzQSSRCCKHQ5TrXbMIcf46W4I= -----END RSA PRIVATE KEY----- C=ES,O=DFX,OU=VPN,CN=VPN CAC=ES,O=DFX,OU=Root,CN=DFX Root CA:1:A4:FE:45:0B:3D:61:24:BA:06:1D:2D:F6:EB:EB:69:F0:BF:D3:DF:67A4:FE:45:0B:3D:61:24:BA:06:1D:2D:F6:EB:EB:69:F0:BF:D3:DF:67 i+U +1w02gnomint-programj&A9lt-----BEGIN CERTIFICATE----- MIIDPzCCAiegAwIBAgIBAjANBgkqhkiG9w0BAQ0FADBUMQswCQYDVQQGEwJFUzEM MAoGA1UEChMDREZYMRkwFwYDVQQLExBTb2Z0d2FyZSBTaWduaW5nMRwwGgYDVQQD ExNTaWduaW5nIFNvZnR3YXJlIENBMB4XDTI2MDYwODA0MTI0MVoXDTI3MDYwODA0 MTI0MVowGjEYMBYGA1UEAxMPZ25vbWludC1wcm9ncmFtMIIBIjANBgkqhkiG9w0B AQEFAAOCAQ8AMIIBCgKCAQEAwg+U2PiWpKerb+7WJl6Ui6f7XCu4nOyl3W8nO8d2 Dkt89Jjw25sqh7t2JwqHs5wNm5uaJZJK8NnV/DPbT7R5DRHUQQvujc10HcZFuM2i 57u9RzLbbTknFhR35XgNbJAIg0n3gw8tXcre0mufrh004K3NM2rWahY9Zj4YmM/V OfUjxaFojYz3GGEFBdeqbKf6fluHBXUw7/dy0BkorUYFdYvTDi0Jfw+65EbbXf6q UDzfiIdrZpY2feVmL6NFiskyseDh8EdjjKYfUZn8f0aL3yhujuKumHvI2E/PXK0H 2drgUE+T4gcWaJgZuzZQhW7eyX6d0ggJWxs5KzDwrUJfhwIDAQABo1YwVDAfBgNV HSMEGDAWgBRzF68J+PrReVbqQ996scFcVZD3DTAMBgNVHRMBAf8EAjAAMA4GA1Ud DwEB/wQEAwIFoDATBgNVHSUEDDAKBggrBgEFBQcDATANBgkqhkiG9w0BAQ0FAAOC AQEAwwOArVdXACMF/BOr86neJ7Kq/kwjALOTHt4O7U6KkX0cXGiXdb1zuypQoo/n xzPEKEFsYhT2L6S/Vnsd+Qn2Q32euIdkQB+M+9EJw02VnRcaWMIGryGeAzeDtQQV prc0xHVo7f6Dhb3WcGkAwa+2idwEUWssKtmf+C5upGpYd4HYkxKcNDvYZcHJ1iqA RgC3kuQIWvb72poBxjnnmVGWxZQJifbROMkhi62E/WEsd85iyo6KPOYjMGKQ/k6W udzruEXJIas4y4yl2oaTGYcJoP1zCIShd3mj7JnM2igueKsoJhJuxIWljj2G1+VJ jLC/AW8c2blO3AoI5mWUDTTAQw== -----END CERTIFICATE----- -----BEGIN RSA PRIVATE KEY----- MIIEpAIBAAKCAQEAwg+U2PiWpKerb+7WJl6Ui6f7XCu4nOyl3W8nO8d2Dkt89Jjw 25sqh7t2JwqHs5wNm5uaJZJK8NnV/DPbT7R5DRHUQQvujc10HcZFuM2i57u9RzLb bTknFhR35XgNbJAIg0n3gw8tXcre0mufrh004K3NM2rWahY9Zj4YmM/VOfUjxaFo jYz3GGEFBdeqbKf6fluHBXUw7/dy0BkorUYFdYvTDi0Jfw+65EbbXf6qUDzfiIdr ZpY2feVmL6NFiskyseDh8EdjjKYfUZn8f0aL3yhujuKumHvI2E/PXK0H2drgUE+T 4gcWaJgZuzZQhW7eyX6d0ggJWxs5KzDwrUJfhwIDAQABAoIBAQCmd2s9u/Ctic78 E6rL+zH9orlyVWbl5fJaQvEqzG0u0f58a32hRDd1e49c6iGCJwldRFs0g4uZk6OF 1o34j12Poo2qxqt6JJXIvL4uSufFVTyGiM/Fn9Mxk5lN1G/fgqZqyNZzLF/EJzSA 2CV/3DnxyeVOiAUpt64vuHCtFQtZzLkP0Ew+iDWr/tiGJbnszMXX6ZlecyBYskkc sUFwAJt0dQuC5UGfOreCQTZEXWx7Ul5IWQt69Ypg/m68KQcBXaC2G2uRb6RD7Rue yZXAIVHmPYNPF96w4NCfXquGrQ9MZetwRGn2WVYtNqcUqeiIouYHzU1b2T+rvjTo wfGhcDCRAoGBAMo7D+5RsUNuDf7VQxPJ8z5YM2PF+7uEbvSfoMuFglFDaxofzrFd 5VYR2FyyrKgSYUfgaFDgNZWkAco/655KEbhhIgz/+a5dLLzGgTu7W7T4oivKIeLq fk8PR8QRtNCOSXu/KrfKXQ8JY/L6hjKjOioHumDgGEs79slFCwKPsGibAoGBAPWo bzJrDPsl/ctznBoI5/YPVg98EqaS0dOcwWntYsRknfMHC80vTs+caY5j+W92nHrb GUQ8nv1e7SVT9rLV66BeCqlYxOEmGwHJacUetESL6JF0Kln2EYFTS0xXRWIVkImY ySf/yapfqhdF8Wb6Jt5wNCUBbOhryBzFd4fcQwWFAoGBALelLvBiqzDqrjbuf31m 9Ud2XSSL0/ATcZcfpqtrUE5vhMEyhUa4V9zzU6HKd9Qg7MqS1Ogs0zxStXVu2o7i AHmJa5yWj6xx3ICJWy5dFAihiNNvOZqRC6bL34YD9kk2DTEdBrPkRuGyy1sJefhe FiG45t22YxlfGNrpoffveGllAoGAZrxaRKugcighS8S9s+WlnLItO6yX4DHmrqkP +kzc0WWC6PA5b0Ypn4m6W2JUHtlr97VJi9AObcgVRVcoBQKR2C98JfaJ398fzE9/ fICqwz//s1TxoU3XZE6BXxvgWHTMTb8n4SKIJEh9yd3mZzqWptAl/pPqCAmLVvz+ UEM9hEECgYBfabJigiNEoOWIPL+B1wRW2xoMGWkaw6pmkgq0fFEZLH11TK3qbUZp z5mmwPiOvIMSa1ZXXIEgdj+RuT6rFic9oT4ZuJULHy+tPg3MmJ9Gc+5CTZls+sN7 hgYYouHTNqbd3j5fE8JQ7neHOyJPkBM/T1tjsgvhiQBhT0ZFMjBpCA== -----END RSA PRIVATE KEY----- CN=gnomint-programC=ES,O=DFX,OU=Software Signing,CN=Signing Software CA:1:2:73:17:AF:09:F8:FA:D1:79:56:EA:43:DF:7A:B1:C1:5C:55:90:F7:0D @@=#= #)O02david-marinj&AClt-----BEGIN CERTIFICATE----- MIICejCCAiCgAwIBAgIBAjAKBggqhkjOPQQDAjBAMQswCQYDVQQGEwJFUzEMMAoG A1UEChMDREZYMQ8wDQYDVQQLEwZQZW9wbGUxEjAQBgNVBAMTCVBlb3BsZSBDQTAe Fw0yNjA2MDgwNDEyNTFaFw0yNzA2MDgwNDEyNTFaMBYxFDASBgNVBAMTC2Rhdmlk LW1hcmluMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtr9IU1IDBa1V VWl1Qzp3TKD1TISPqotp8Bc3XWOdsp/gFQLBJVCDPNArJKlb1toLMbS+viisH2H1 snX6eRv3jV7hJIXHTngjMFNBuj0bnu7MkoeIglg23PonxDjOedHZVVdDrqRFxb5v OoQLWED1wYkiZvGCJM6uArwFGdg24jUWBj8Ho+fLP/ZnaSYrMZ32IP8GpDuJ1zv+ VvMH3Hru4Pn9xgIAs2vxrhspFBmFgh9CnVG4EZFK9AoBRgB4ZaHWod6nm/gfiIS6 yGXAk5QvYQkiBojt9qxqocHBOY4cdfJODvwaOG8CKaG4eL+IwxVvRQXtsL+oQxqG QSGwHYH6wQIDAQABo2owaDAfBgNVHSMEGDAWgBREdbia6moqrzx5kbkt4AhDMz/j nTAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIFoDAnBgNVHSUEIDAeBggrBgEF BQcDBAYIKwYBBQUHAwIGCCsGAQUFBwMBMAoGCCqGSM49BAMCA0gAMEUCIQDyeUsq E3V47/Sq6sLvEBx6G9PvY7FZzDKl4pYL08khCQIgZkSD1DPofyWW4zjsymzit5RM PjUJtq+o7ttAf+k+rQI= -----END CERTIFICATE----- -----BEGIN RSA PRIVATE KEY----- MIIEowIBAAKCAQEAtr9IU1IDBa1VVWl1Qzp3TKD1TISPqotp8Bc3XWOdsp/gFQLB JVCDPNArJKlb1toLMbS+viisH2H1snX6eRv3jV7hJIXHTngjMFNBuj0bnu7MkoeI glg23PonxDjOedHZVVdDrqRFxb5vOoQLWED1wYkiZvGCJM6uArwFGdg24jUWBj8H o+fLP/ZnaSYrMZ32IP8GpDuJ1zv+VvMH3Hru4Pn9xgIAs2vxrhspFBmFgh9CnVG4 EZFK9AoBRgB4ZaHWod6nm/gfiIS6yGXAk5QvYQkiBojt9qxqocHBOY4cdfJODvwa OG8CKaG4eL+IwxVvRQXtsL+oQxqGQSGwHYH6wQIDAQABAoIBABHKVVQnK7wlv6Ts +0lsK6j+EmM8lG/Z2ppQ6EbjJ7r37WyeNAdZ6yzEZy7Ofe5Qk75nBhqlAvybILwa 2CNqIZNVpT1U+K4e6+4MbN2gjUvPm4K4RwXJaK3ifHSRwygA0dOJB0G9JD236EQe Dqysxj/tBbhX0n+azz3c5/I4Jj+nGS8A+a9Qnk8QiS5RBoWRSCFGaGhlbvydmktK Lfvi3gaj7ys3kwc5BgyQnKfzLXkTXVehA2+sbtzemrjXJMpTPFMdstGteXQXJfT3 56zImTKWphdXD3ZXVZTZoUa9ADIs7cKGbJ45oVOmQf0DN0u9TGZFAJzojbQhe38w mczuMbECgYEAzZnNc+n977YduO12xHTH6RHqyoLa/O7UyyDE1Mc3U/AEs9hPHGxW yP5Dekj7tdGC2z8lycSzTkTCuOuuZ6JIJgF3/3X+8MdA4zxouLv/cbIr5FZA7nF3 0X27wb9dP28q8Zfqvpfv3OVt6eHPnB0KEpW6cgwbjMmk/4NdpC/8pa8CgYEA44tV di6qjgdnrboIIANN4KhqrX4Su179eSeOSfOvYrSH6iSkCRSu3k+YZWvyGQdooBC3 H4vzEkzVBZs/s+8qjoGA5sTbr2oWqKz6HaSH0kKIJdrEmGwOFLgysUxbR0/DB74A iiV2VgHukKpPP/2nhkWg6ibr6D86zDYjWEPe8o8CgYBZXlxe4TwfIVNEGfxBIt3u onojcsPLo+jdLq5AKyQSmUcCAalJmpISpesg0W6QNrShpo4/aP/jqqHVjaRuqayg 0Iyff2PEt2euHokKm7VKb38Crrdkre++IOAnNI5Mz36kKzu/gv2hUBz5x8zdeAXz 1B+KCVdEWDYfVrOydaVlQwKBgDjfDlEngMFW4HbvVDCMIt7PuTn7lLr4Fuo9FLcv DNrivEWtOsJ6ROqTgkd3H19aFrBK/ToJRIuCYIuyLc3PLRfJDmqfMTk6jsdB1JGs GbZXoqezcgeWmj5be3AM4ZOFP/2jY4cjrdv5R6Morf4Ua9aHeJyNddDqXMvFjDf3 XrXJAoGBAKryjsBfhPWZr1vJlE1VRt7jm8CHDuwzJ5bJuuf9V72NAoH0+p3l2vJv sKKCvD3dZ9wo6lw/851qQznvbgwWo0GpiebLPzv4Z505R4SQnK4vp1jl54ud32Lh wYHJ8n+lxjHGEMD5CjV1oe1I5xS528iQzEDpXNoASjAhbA5xYbIZ -----END RSA PRIVATE KEY----- CN=david-marinC=ES,O=DFX,OU=People,CN=People CA:1:3:44:75:B8:9A:EA:6A:2A:AF:3C:79:91:B9:2D:E0:08:43:33:3F:E3:9D 44I'E +-O03guido-pirellij&ADlt-----BEGIN CERTIFICATE----- MIICfTCCAiKgAwIBAgIBAzAKBggqhkjOPQQDAjBAMQswCQYDVQQGEwJFUzEMMAoG A1UEChMDREZYMQ8wDQYDVQQLEwZQZW9wbGUxEjAQBgNVBAMTCVBlb3BsZSBDQTAe Fw0yNjA2MDgwNDEyNTJaFw0yNzA2MDgwNDEyNTJaMBgxFjAUBgNVBAMTDWd1aWRv LXBpcmVsbGkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDFdjcwHQWi H+1fBU31UYTCr+HscKcg9oSaO7BwBwppTu7Uo8uFBhi+kqRH59A3AzdEoArvad4T uxQ2yq72wCImgkBN6y3FFbdfzoECvjFmYodGPQGiQQqdseIuVgTfSTJBmfkH/MXn qu9+8sR0cbLCzSp3H11W4XAgbCAE42pBSnqKgB4VtAsp0n2Zo5N8VjC+gqyE0RmS pKvtfix4z46HQ7alAhmsbuyGszN7St8KI7njfbxjV+JuL/uN9pQU7ukB8pDbPyw8 KRy2G6KX3IyNc1RbrpYQkrxNpw2RzttKRKiVmgrliyOm0khMuk7GtcHOr+f4QWoJ qaw68HmnHNG7AgMBAAGjajBoMB8GA1UdIwQYMBaAFER1uJrqaiqvPHmRuS3gCEMz P+OdMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgWgMCcGA1UdJQQgMB4GCCsG AQUFBwMEBggrBgEFBQcDAgYIKwYBBQUHAwEwCgYIKoZIzj0EAwIDSQAwRgIhAOjU 2huvBqD5yhfXlN7FPtymkLFQnFPUZCL+tm9DL9fCAiEA9TWwXlYLnXLC/7bN4Brn 9RXHLgzlgRbMuo2v434gxUs= -----END CERTIFICATE----- -----BEGIN RSA PRIVATE KEY----- MIIEpAIBAAKCAQEAxXY3MB0Foh/tXwVN9VGEwq/h7HCnIPaEmjuwcAcKaU7u1KPL hQYYvpKkR+fQNwM3RKAK72neE7sUNsqu9sAiJoJATestxRW3X86BAr4xZmKHRj0B okEKnbHiLlYE30kyQZn5B/zF56rvfvLEdHGyws0qdx9dVuFwIGwgBONqQUp6ioAe FbQLKdJ9maOTfFYwvoKshNEZkqSr7X4seM+Oh0O2pQIZrG7shrMze0rfCiO54328 Y1fibi/7jfaUFO7pAfKQ2z8sPCkcthuil9yMjXNUW66WEJK8TacNkc7bSkSolZoK 5YsjptJITLpOxrXBzq/n+EFqCamsOvB5pxzRuwIDAQABAoIBAEYlLYuw85xZPSih KMV51PCYLGiiyCwkhoyHobDaP2+Tc7IkEZtKxCWG0Ece6U9xnAOL2vabpCFcNt0T +T18mWUWpiNH5TV69m5ZXGkOCVx2qdlguKDb/Bpy44dUVVzAktLNELMur1sR1QxC z1kSPs+GtIwmnzDK2tsZrfIum0Nfwfr2VwyOPIey4y43BcH3bAsvpq6taaaa7nVa IMzqIk1FDQmH9OIpEGfeqiKxwGigNuI1YIMLKRtmIVqU+2XEm0VXdjryIhpsIEbc MnZDlSMkT8/hE7jeoufpZrZA0uYAjAcR/7ECdbyTUHENF1AWiI/g+rW/Y/CSvHaA Lp+UNYECgYEAx+/hEtF+PCjROAtNA6AVFvwrjv4ML83c3FX/0o2448Zm2hGVnDWq BFNkA3VdSMAxHDskL+djN2UoBB4o0Wc+p/NVYRS2bEfniT9XC84Y3UKEwZDzsYRM n4dCL6NI6thj935UkKY+ex2q4XyH3+oRM1E4UFXWXyXyfb7nEcOb9nsCgYEA/NSn tXQ/vLUHRBIGbDjfVZI5iYxl7OFf/DBVMPJH3HOF+mbg8fSLBHM6lLMNQTJrlAgI 8ILSJlQLOV9Zk3P4T6Ny9JFuGEHzt0zjvMZKBQKgsEgFTsVRUeQc8hSTJNUGSX1s v0fXfJ3ybBku5jj06Kzua6zRv90T1ZFI+92fTcECgYAT3pn+lcU201OffzgDITiX VS47ArJRWeMWHpHS6fSy5je4ekDlCkxAK81nrpU7sqXuyU3aWON6UNo+NoUV8m2+ oSceA8HxVuACusG60ZuU+ZRZ7D7bqGs4+2cvdsm7VQ/yO6LJ0UuqTpN53zddoFRf RjYTfcRVJl9H8d3i3Q612wKBgQDMGTs9fxeI1baE2+w1Zv/bS0yJXj5VqGZc5gOP nLYoH1XzmyNSDzA+KmsK6TP1AqfXe1kEFwdgi434BaIBJ6g3WeINzmzKxkrhGP/r P0M3ojRnuewW97C64+P+BF/4ZsNJhifIjk1FOxgc7YNvtGD4h8l8QKmeMfC2Ai+h qvnTwQKBgQCijoH/D532k51LvKGxeEsRMSngDz2AhWhx/2d7rfGHtloxGbP3Jf/8 omp3jdgTTqe+pdvaIllIydtkeZbH0nKx4S6T0A2RXzg5FeX0YdS1vxeGllrLyGjC Pfj5jWwWPjWKY2Gt+3KUkB9hhuUwHkNsxihkljCH75TpJ972G1zt/w== -----END RSA PRIVATE KEY----- CN=guido-pirelliC=ES,O=DFX,OU=People,CN=People CA:1:3:44:75:B8:9A:EA:6A:2A:AF:3C:79:91:B9:2D:E0:08:43:33:3F:E3:9D II41 +7C02dfx-openvpn-serverj&ADlt-----BEGIN CERTIFICATE----- MIIDKDCCAhCgAwIBAgIBAjANBgkqhkiG9w0BAQ0FADA6MQswCQYDVQQGEwJFUzEM MAoGA1UEChMDREZYMQwwCgYDVQQLEwNWUE4xDzANBgNVBAMTBlZQTiBDQTAeFw0y NjA2MDgwNDEyNTJaFw0yNzA2MDgwNDEyNTJaMB0xGzAZBgNVBAMTEmRmeC1vcGVu dnBuLXNlcnZlcjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOdsFWO4 OHmCfntrpyc8uR1Ovpe+Xi9c0ijIDoGNDZ2iG9S0yKJ5sxueGKFYOrSpAYKut+Ac gvHy9bBCgV+l8TH4whoyKqUs13szY43Io7b2kQF932sm3NAKVYqkOHdrTFoJxLqZ GCQYhWX2lo1Opqy8WvvZAH5VCRvPHqNnt5cCFsVgiHLH6CBPnHj+FSI/JOkm//U8 PnKjjkUxBoDfFgCpxWuZGvH6191uuzQxjkyZGzKrZsc2SnWF51MDBnAOaMLHrRlx HM44XMXd1qj26M+dGhO8HrEsskLwGkinoXE4t8YoiES7OTtY5lkQ6mmNHXh+1OGc r2BEsFiJEUavVXUCAwEAAaNWMFQwHwYDVR0jBBgwFoAUpP5FCz1hJLoGHS326+tp 8L/T32cwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYI KwYBBQUHAwEwDQYJKoZIhvcNAQENBQADggEBAJXTdoaNHRc+T31trC0tRSuqL4EM XBuyjrydjMum4UILjvCojLVsqxu2JOhzY5kMrMccq+zvVWPP8VD7OiVE4qkWSgrz SPpZHypj12ER7SC5rYKGwJ0atPRYPMB2BTYEj/yFXznrL8RuRomvD4KF+WxDqk1L wbYd5Ol2PZU2qhiJakrLX5B/A8JV1BzTyK3X/6o9DA4jhgGigQNBAdLoy8hL4Xx4 CYnIRBCD3D4z/AI+WrrK5CEqguaYHvQGcoInj70D6rmDEN6BW5DLinfgH8PjtUAx urM51fnEywWQou0vbVgMYC2qTUmyqBygcYK/Hgej+O21DqrSH3xSKnrtl7M= -----END CERTIFICATE----- -----BEGIN RSA PRIVATE KEY----- MIIEpQIBAAKCAQEA52wVY7g4eYJ+e2unJzy5HU6+l75eL1zSKMgOgY0NnaIb1LTI onmzG54YoVg6tKkBgq634ByC8fL1sEKBX6XxMfjCGjIqpSzXezNjjcijtvaRAX3f aybc0ApViqQ4d2tMWgnEupkYJBiFZfaWjU6mrLxa+9kAflUJG88eo2e3lwIWxWCI csfoIE+ceP4VIj8k6Sb/9Tw+cqOORTEGgN8WAKnFa5ka8frX3W67NDGOTJkbMqtm xzZKdYXnUwMGcA5owsetGXEczjhcxd3WqPboz50aE7wesSyyQvAaSKehcTi3xiiI RLs5O1jmWRDqaY0deH7U4ZyvYESwWIkRRq9VdQIDAQABAoIBAD5SVBxLsyG967Pv FM+zQaLL3vXcdV7J32rOHWH0C3OlAVux58ohfgN0+usQaJbYYKjBxpDa/MSNim6S KmcIuECd3h/R3LworEroVuoK21PdaMV/EVi42YRJFCpG+VHnmmMw+ELMEb0+wUXp NzgMs0QXYWUrVj+vRMmxaG3W85D9osxTnbAr/wvxxBHgaANRfYnCyI+VjzDxdlZj 2gaNUtI1geGE6kyWDeNuYjnvYjViAhvdCcyaja3ePjmzse7wszsd7N2bdEq+BXxN gbHQgoDFCkxSVeHwYOog4Z0XehP7rPQEtX3ed9I7CRcpDNaHO7rxqHTCUjGHJisk YdVcRE0CgYEA/nNBkWWU/ywP7P/fymW2NZrNgkvJQrFYs2T6s5ys/UdpNNYAxeTS +U6C+w0Gg4w62W0p29QNntjiB0EDFZC91S7bsbvON26TxeZjAD2zbuwa9vZc9Q/V 6fPhqR+0Gh1vethq260Ao5mVqK4w66a5NU5AU5FpL9oxcBsWlzC7jtMCgYEA6NTr 81OrSM3xj5idzsBIz1kFSMVmEApUmSuFENgMxQWLSymmuVFTDv+IyZdXbOkf0ekG 3SBSkken8yjniL7mt0q90ACcU5+xWbq5XnUYVVxiv0kcHgH3zi0POqLDeIo6KTEU DxpN2C9+aOAQIzQyx+N/TtgWgNEelXP+JYZhLZcCgYEAvueWYBII0dIrOLNZIi9h n6I/YeyeWY1ZcW7nsW5xU64KPvv4pIDj0OyY1OaW5oeFd6+xYh8dAPrTyoF6YOmx o4p+hkDTnT83W5lY2ctxHl3CdVutrqds5RR3UD5bD+TZyR8qPRr1icknQeE/Du6N snK9THWip6ZaxTNtpY2IisUCgYEA0PNc+VdqTYE9O3Bsl0KrVSIAAwnciaKrv3Z2 CeLKuvo5wu+TR5a7YqdjW/9tHzmsK9bkKQi78blK+YcJGwivx2jVJdmWcdnL8MoJ V8LgXqL1n9N931RGzwpTM30kzYXHonYAGXmyyMP+vyHueZl7xTXeZ6S3tU13FAsv 1v9dMOsCgYEA0SX3zM2BP8c0+YvlVUL9AtXaqlZfVTpHqGs7M05zt/kYnu0sMqvd 9ghV1ygc97mLtHPM7R9KNi4/I3Nw1NdRb061YPg+chYjwKKEU2KebcebhNS1Ai8/ U225JWiO/froIJRqMpYtc/kgyrtcy8hmm1omYCUTMBz3rO7viuZsj/A= -----END RSA PRIVATE KEY----- CN=dfx-openvpn-serverC=ES,O=DFX,OU=VPN,CN=VPN CA:1:4:A4:FE:45:0B:3D:61:24:BA:06:1D:2D:F6:EB:EB:69:F0:BF:D3:DF:67 KK2 / +5C03portable-computerj&ADlt-----BEGIN CERTIFICATE----- MIIDJzCCAg+gAwIBAgIBAzANBgkqhkiG9w0BAQ0FADA6MQswCQYDVQQGEwJFUzEM MAoGA1UEChMDREZYMQwwCgYDVQQLEwNWUE4xDzANBgNVBAMTBlZQTiBDQTAeFw0y NjA2MDgwNDEyNTJaFw0yNzA2MDgwNDEyNTJaMBwxGjAYBgNVBAMTEXBvcnRhYmxl LWNvbXB1dGVyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxlS38TWM nfKr8tvib45EP6KorWsUfVgRFzO6klgaCZTmS/LJEYV99+TFlbUfb0y/UvgCGJa5 088vKHyCtCeM7QtnPmD1RGJ9JJxFY+O3kWuIVjgxasx+mrTHMcx3CZcPNdnflXiA /9N+Aumxm/ISRzn2RbKOCj8L+sI0b5Nr+DMSFV5nOQpTtdBEo2JipJ0ni2TLMRZz KZiNqj63sUe16ZT/wcR9/FxdYOmQ+dGpyKKb/GaGLbSsUpyBrdsrzp4gNwqdz8Za c+fJqVuWGITUa2993B3IYZS7HyBuGG5QlNDq2KXCKzaMRqAuPww3c67V2eqvZNpz Nt+NBUzQ6NcjRQIDAQABo1YwVDAfBgNVHSMEGDAWgBSk/kULPWEkugYdLfbr62nw v9PfZzAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIFoDATBgNVHSUEDDAKBggr BgEFBQcDATANBgkqhkiG9w0BAQ0FAAOCAQEAZ/ppvkbwy0bZvB85kFZOU2SwPgRg LzlzEcAF/MSXCqu9/Nv3v9ZPTz7dGGJd4cYXQk7M8ac4kFdkCjXpukvi/73VzP0M K/yXWCdoNySAH+i1eA6C4Yh90o2QO1PwVO0Fr0fyqrQW8w+jF233zH9NcT1NUmdP gL05TfOgiVAz9dfrOozqhGmYZO8Zbx6mg+ouoo/lnanJybU5wZ3mIzG3juhxPRAw Bd5BMJbFWTYoshunHN0AZwqwuu+nSSlv8pJf9p3JwVqaz9UGoMzNPT7iaGn3dKpl lILFTuodMkyP/DyYI1ULbEN9C5Pa8KfDeFG9mnFE+IlAZ1/0+xFUjB90UA== -----END CERTIFICATE----- -----BEGIN RSA PRIVATE KEY----- MIIEpQIBAAKCAQEAxlS38TWMnfKr8tvib45EP6KorWsUfVgRFzO6klgaCZTmS/LJ EYV99+TFlbUfb0y/UvgCGJa5088vKHyCtCeM7QtnPmD1RGJ9JJxFY+O3kWuIVjgx asx+mrTHMcx3CZcPNdnflXiA/9N+Aumxm/ISRzn2RbKOCj8L+sI0b5Nr+DMSFV5n OQpTtdBEo2JipJ0ni2TLMRZzKZiNqj63sUe16ZT/wcR9/FxdYOmQ+dGpyKKb/GaG LbSsUpyBrdsrzp4gNwqdz8Zac+fJqVuWGITUa2993B3IYZS7HyBuGG5QlNDq2KXC KzaMRqAuPww3c67V2eqvZNpzNt+NBUzQ6NcjRQIDAQABAoIBAQCmPNSBJbVbntBp m8zMXJ7wB9MCqMJf3bVVkVJM3/PTHC98cV//g7j2U5cZyNs0W0vyq1Z2bcAMvZh1 gwe7IXuKJQjAzFxImZTzXtj6xSBUj6GTQz6Imid0XRqprwwHycpCBQDXNE5MIGV6 446ve9O+R+MYwHU2OWo9IRL6gsL5IbuCipGp30VvZYurJgG78vfu0A1mLZSWMMKi eDkQzj4WX23bVkAb4Et6ULNJZ54CAESkE4+Bp7kg2uoZ1dUXsFUd2DjWfti05pzO Edo4Q0IkccjO7G7zOdREahMz4PKSWiLVIL+NF/mLbusjd9OBPdpZhZqsPh64cMpd vkaQADhxAoGBANkWhAMcuJ28EaBW8C9CRDJUUDDA+n14NiBY8+p8BVh9OHNfGPFP Q9/b7ph8VzHva2jxaK6TDLj9ojNUuvRvCoa0j2FDwuk7+0WYSV+bWk6/Gvgx7BXk KBPi9kxD/WcUV5fQehwBtEqN0tbcCewGmKUf/NeID5EKGfLqXLz0BkbHAoGBAOnh gIoUrAMegov8unf5ixDoYJV808liPwYC7ga/rHBN0fMkQj9vhZTwdwB+/lH/z53M tdVEr7E6OjaKMJtgXxopS6bO0zibMQ0+ixmRB+Aj84amRhA4OXxGcZEu9lDjreMY QoTJJ44KtaLo7rBYQhLdruQQWbepNFFa96nbxImTAoGAa2SVGAkMV5PjUGPR3D83 B4LoTMYa5RkkBaqbuAN0jYsc8w43g6EH3eWqSisw45Yil77dX4eFgrqOlEA1YJjS J0OJrr9b3A/9RTeKDM8IxO4LhH8F4OqG3Repap8z69uHXaYX0mURcNRqWjpueiHl P8LsTR+VO9Y4chB4ok1CEZ8CgYEAmQHhMPSjMAs2xtRZPYIxG6ebAFFA0OAIcStb g2jELFiNAO94s72G+9BxWg663PRpZEf3sYWVF3ILgYDYmd3redcIWiG3B7Jn3c1L /TbnmxiKCk4fSh8uZIJFbAD4PiUlrotBgVOEICYbfG+9L/sdhvAmqaeUulXlF1BW 9HYFVycCgYEAoWH2MmGZsQVyntzP6nkV0FsfHVjdEfx8PX6srb1FLzXj42E6H51b wqmYsq59l643sEDsowsPbV+PQIPVM6b7CQ5DmTC9D0ipGTkNKv6/OT0c5oD4c8Di k1VXlb8qhGkwqnPlPq4R7dlwEb1z7wjauTKEqVd6Vo82644+1yT3C44= -----END RSA PRIVATE KEY----- CN=portable-computerC=ES,O=DFX,OU=VPN,CN=VPN CA:1:4:A4:FE:45:0B:3D:61:24:BA:06:1D:2D:F6:EB:EB:69:F0:BF:D3:DF:67   5= +GG01Y2038 Future Test CAj+8-----BEGIN CERTIFICATE----- MIIDODCCAiCgAwIBAgIBATANBgkqhkiG9w0BAQ0FADAsMQswCQYDVQQLEwJFUzEd MBsGA1UEAxMUWTIwMzggRnV0dXJlIFRlc3QgQ0EwIBcNMjYwNjEyMDgzNjM0WhgP MjA3NjA2MTIwODM2MzRaMCwxCzAJBgNVBAsTAkVTMR0wGwYDVQQDExRZMjAzOCBG dXR1cmUgVGVzdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL9l QkJIF3/0wFEOcmN7jghFpAk8+UbqDstJPBtrZIOEGQ5rhWyZM4WhDB/cA7xb5AIr FkpfUSlsjaxv5eE7Ymh/G2QPQe+lxsJsxQfwUtPaAuKKTDsbJENaxi9KA+tcDqb8 pL7a63c3d4A7r3YnTVzqNstsc1vhevtoK74NHzVOXrZzuBUAc5K0lzPbP57OqMp7 F/nJw8dGcyqCJPC5NL5BJEVtUWqmWV1sNSbnMGRAHbBBCRi5wZS2aRKhUU3u2LrY RZiG3u7QfFn0jax+25uH1r8KIbRMJ3KKWK+xEgpnNXmw3sJGVwSl91ilzpHX7k92 iG/6SySzsASg3zmSuLMCAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8B Af8EBAMCAQYwHQYDVR0OBBYEFPQIsHacUGoy/NFG2ltG/+ClZ+IjMB8GA1UdIwQY MBaAFPQIsHacUGoy/NFG2ltG/+ClZ+IjMA0GCSqGSIb3DQEBDQUAA4IBAQAGYoVA jYX5fc09M7uJnicMke/kDODsQStHxVg5jfZ/Mz+q0XeQyBmMR2CPyHgWkkhEwgW4 0J8/ciuZH/kTKO88xXEv1bGyobdPWIO07b+fS+v4RwSBChWX6+t7QNm5dXN8xoqU Rx3Js4Uhje7AwKlyIOrbMxlBaRdnPCSmQwBNxJ/0H1nNNQRYmWrsVMCbmaDx2ZzM px2vZM+mdLaxJIcokuiyW5k6hd3Cl8Rq4n2YWEulJ1FEBRPWSCXOON5lobwcCrek weaLDSfqxxNcpmlu/6p2oddk7tfKD/IZ1UDCclpdAE9cWtaYx18g0RFRcYi9w7OW X1vug/dPxs14mPXg -----END CERTIFICATE----- -----BEGIN RSA PRIVATE KEY----- MIIEpgIBAAKCAQEAv2VCQkgXf/TAUQ5yY3uOCEWkCTz5RuoOy0k8G2tkg4QZDmuF bJkzhaEMH9wDvFvkAisWSl9RKWyNrG/l4TtiaH8bZA9B76XGwmzFB/BS09oC4opM OxskQ1rGL0oD61wOpvykvtrrdzd3gDuvdidNXOo2y2xzW+F6+2grvg0fNU5etnO4 FQBzkrSXM9s/ns6oynsX+cnDx0ZzKoIk8Lk0vkEkRW1RaqZZXWw1JucwZEAdsEEJ GLnBlLZpEqFRTe7YuthFmIbe7tB8WfSNrH7bm4fWvwohtEwncopYr7ESCmc1ebDe wkZXBKX3WKXOkdfuT3aIb/pLJLOwBKDfOZK4swIDAQABAoIBAQCRUrBBpX16YXsY 0JBYKvtIGqCXhx17E8LR5bRm2V8DYOypf0hakeSF5SdQlXycq2TvpImTRNZaTpsv v/La1n08/K3uhos5DDVjcLUV9wrc4p7oJbwF8PDS13y9cUSSk15oulHYvF6nMY1h 52+tld/u2cNrJ9hbflQjyg/UiSAWFzAoiZI0jogzzB8dpfClp/kLRGAdVdKa12dw xoiXdLVgOTTzYtySUbbcZNU4JUhFW2w0ot+K8Ox3vmUWTc1lthFfluxOTyfZIe4y idtrJ6a40QSTGxtfUEIyKeh6bU5X66Htq8Lpe+XWp2iGi5p/DT9oSs0KYuVrptZU GbeoquO5AoGBANitIGf0rnnlqhTmTZxetKYp1+Uc0wlGONK9BZuqZ+xBRTB88gby KPpCfRtbvXLL9jdMIta3nogI2O2BB8URHdjV549QXeyLcuBy/8ObOVcOWPb9SxoU YL6siGgZIzPJU+pNnWp8PbDoVU+gekFE2IMi6CtTsOrVMPRiXoWRbhd1AoGBAOIh lBRfBMl+wjZmnL7vfjKUOLAxJ8Rfh/FptJBntvORGggkcoEQaxeDNMVTHdgbV/O8 YM7bsHOr8UEU2WN5bXYrkvEuXNL2qAyt8t7glTFUhu1GsxORebdhchqgwxxZJvUA /IrWI9DYCOcR9UAmLD25VOWcaGjNLnGuPu95wbKHAoGBAIclbPoKPq1fV3eTskLf O1QM81E/ak31k8m2BoJyhkFw8KPuutMkRfTadcgTr5WjrB4PigddHi+BPTTebyc2 puQxfy3/laXN0Mg4UlkCP4CSPWFI2YgZv8IOQUKUs0VAxOt2n8HkXmIyd8ujr714 IIeixScJG2dNtCwqEwTCkeVlAoGBAKVQVPgbit1fbM3mcDrpzMFfOJ4eIWtfR3vG gjl7iPVBI93F/2u5PAFBa0fCfrPpMYA/PCqd0r6Ned7RRieBsvNL4a2t7jBQIAS8 +ivT1V3t5IH8SJhKpsfYVll/I4RK7L76TKWW7TIVbVS3/So7feZV4enGUVIkhgqX juz1fxRrAoGBAKRARJMlWBRT8GCJhNd4L2oFABToWN1QAtOLjAPxc8kxGq+aWcVb 2S9/ECkFQd7Mzi3ruCgtHb2sQswod/BsppiCrkZi5DgNmum3heNttug26ZtkN1wh FaDD+Oewcxs5Ze919hU9Sz53ukYdey0W2N12rjuIX6l2sLgua7/OKq9T -----END RSA PRIVATE KEY----- OU=ES,CN=Y2038 Future Test CAOU=ES,CN=Y2038 Future Test CA:F4:08:B0:76:9C:50:6A:32:FC:D1:46:DA:5B:46:FF:E0:A5:67:E2:23F4:08:B0:76:9C:50:6A:32:FC:D1:46:DA:5B:46:FF:E0:A5:67:E2:23gnomint-1.6.4/AUTHORS0000644000000000000000000000022615212761266013013 0ustar00rootrootDavid Marín Carreño Ahmed Baizid Jaroslav Imrich Staněk Luboš gnomint-1.6.4/NEWS0000644000000000000000000005632315212761266012453 0ustar00rootroot* Version 1.6.4 "Tempered Anvil" (2026.06.12) i386 / Year-2038 correctness. - FIX: Certificate signing crashed on 32-bit (i386) systems. configure.ac forced _TIME_BITS=64, a glibc ABI switch inconsistent with the system GnuTLS (built with 32-bit time_t on i386), corrupting the stack inside gnutls_x509_crt_set_*_time(). The hardcode is removed; gnoMint now uses the platform's native time_t. This completes the partial 1.6.3 fix. (issue #86) - FEATURE: Correct handling of certificate dates beyond 2038 on every architecture. Dates are stored as 64-bit integers and rendered with a 64-bit-safe formatter, so a certificate expiring after 2038-01-19 shows the right date even where time_t is 32-bit. On such platforms gnoMint never caches a wrong date: it warns and clamps when generating a cert, stores NULL (deriving the date from the certificate) when importing one, and a 64-bit host opening the database backfills those dates automatically. - FIX: All certificate and CRL date input/output is now unconditionally 64-bit (g_ascii_strtoll / %lld), independent of time_t — guarding even a future 64-bit-time_t i386, where sizeof(long) stays 32 bits. - TESTS/CI: New 32-bit i386 multilib build-and-test CI job, plus Year-2038 tests (import, list/detail consistency, NULL-date self-healing backfill) run on every platform. Database-compatible with 1.4.0 — no migration needed. * Version 1.6.3 "Tempered Anvil" (2026.06.11) i386 crash fix (community contribution). - FIX: Segfault on 32-bit (i386) systems. Four sqlite3_mprintf calls in ca_file.c used %ld for time_t values, but _TIME_BITS=64 makes time_t 8 bytes (long long) on 32-bit targets. va_arg read only 4 bytes per value, corrupting the stack and crashing when the shifted expiration_time was dereferenced as a char*. Now uses %lld with explicit (long long) casts. (PR #85 by tzbkk, reported via Debian CI: ci.debian.net) Database-compatible with 1.4.0 — no migration needed. * Version 1.6.2 "Tempered Anvil" (2026.06.11) New application icon and desktop integration fix. - FEATURE: New application icon — a wax-seal "CA" badge with colored ribbons, rendered from SVG at all sizes. The scalable SVG is now installed in hicolor/scalable/apps/ for sharp rendering at any DPI. - FIX: Taskbar icon not showing in GNOME Shell. The desktop file, appdata, and icon filenames now use the org.gnome.gnomint reverse-DNS name matching the GtkApplication ID, so the compositor correctly associates the running window with its desktop entry and icon. - FIX: Flatpak manifest updated from net.sourceforge.gnomint to org.gnome.gnomint; removed post-install rename hacks that are no longer needed. Database-compatible with 1.4.0 — no migration needed. * Version 1.6.1 "Tempered Anvil" (2026.06.10) Multi-platform CI and Windows installer release. - FEATURE: Multi-platform CI via GitHub Actions. Automated builds and tests on Fedora (latest), Arch Linux (rolling), macOS (Homebrew), and Windows (MSYS2/MinGW64) on every push and pull request. - FEATURE: Windows MSI installer built with WiX v5. The installer bundles both gnomint and gnomint-cli with all required MinGW runtime DLLs, GTK 4 theme and icons, GLib schemas, translations, and UI files. Includes Start Menu shortcuts, .gnomint file association, and PATH entry for gnomint-cli. Uploaded as a CI artifact on every build. - FIX: Windows portability — replaced POSIX arpa/inet.h with winsock2.h and POSIX regex.h with GLib GRegex for MinGW compatibility. - FIX: Windows relocatable install — PACKAGE_DATA_DIR is now resolved at runtime relative to the executable location via g_win32_get_package_installation_directory_of_module(), so the MSI-installed binary finds its data files regardless of install path. - FIX: GSettings on Windows — uses the keyfile backend so preferences persist without a D-Bus session or system registry. - TESTS: All CLI shell tests now pass on MSYS2/MinGW64 with proper POSIX-to-Windows path conversion (cygpath) and MSYS2 argument mangling suppression (MSYS2_ARG_CONV_EXCL) for openssl commands. Database-compatible with 1.4.0 — no migration needed. * Version 1.6.0 "Tempered Anvil" (2026.06.08) The first fully stabilized release of the GTK 4 port, with a comprehensive automated test suite (16 tests: C unit, Python AT-SPI end-to-end GUI, and CLI shell scripts). No new user-facing features; this release is entirely bug fixes, polish, and quality infrastructure. - BUGFIX: EdDSA (Ed25519) key generation hang. A blocking g_main_context_iteration(NULL, TRUE) inside a timer callback caused a deadlock after private key generation completed. The callback now returns G_SOURCE_REMOVE and uses async gtk_alert_dialog_choose. - BUGFIX: CSR wizard crash. The CN entry widget ID in the code ("new_req_cn_entry") did not match the .ui file ("cn_entry1"), causing a NULL dereference on wizard open. - BUGFIX: CSR wizard commit button silently broken. The signal was connected to widget "new_req_commit" but the .ui file defines "new_req_ca_commit2". - BUGFIX: Country selector search not filtering. GtkDropDown with enable-search=1 requires gtk_drop_down_set_expression() to know which property to match against. - BUGFIX: Certificate and CSR properties Close button not working. Missing g_signal_connect_swapped for the close action. - BUGFIX: All dialogs and wizards now set transient_for, fixing modality on Wayland (dialogs could previously be sent behind the parent window). - BUGFIX: Tab navigation could not reach wizard Next/Cancel/Help buttons due to GtkNotebook wrapping focus within the current page. Added a capture-phase key handler (dialog_notebook_fix_tab_focus). - BUGFIX: SAN button labels displayed literal underscores ("_Add", "_Edit", "_Remove"). Added use-underline=1 in the .ui file. - BUGFIX: Missing padding/margins on SAN editor dialog, New CRL dialog, and other secondary dialogs. - BUGFIX: View toggle state (Show CSR / Show Revoked / Show Expired) lost on application restart. Now persisted via GSettings. - BUGFIX: Menus and buttons showing in English even with Spanish locale. Regenerated .pot with proper GMenu/ITS attribute extraction; updated es.po (862/862 strings translated). - BUGFIX: Opening a .gnomint file from the command line was broken. - BUILD: Added AC_CONFIG_HEADERS([config.h]) so make properly detects changes to version, codename, and other autoconf-defined values. All source files now #include . - BUILD: Removed GTK 3 leftover attributes (can_focus=False, focus-on-click=0, can-target=0) from all .ui files. - BUILD: Minimum GTK raised to 4.10; all deprecated API removed. - TESTS: 16 automated tests via make check, all running under headless Wayland (weston) with full process isolation. Includes 26 AT-SPI-driven end-to-end GUI scenarios. GitHub Actions CI runs all tests on every push and pull request. Database-compatible with 1.4.0 — no migration needed. * Version 1.5.0 "Belt and Braces" (2026.05.24) Six weeks after Lazarus, gnoMint 1.5.0 closes the running-a-CA-over- years loop (warning → filter → renew → diff) and finishes pulling the gnomint-cli interface to parity with the GUI. Every state-mutating command in ca_commands[] now has shell-test coverage; the test suite went from 5 suites to 14, all green. - FEATURE: ECDSA and Ed25519 key support (#49). New ECDSA generator selects between NIST P-256, P-384 and P-521 from key_bitlength; new Ed25519 generator ignores key length (fixed by the curve). Both algorithms are available from the New-CA wizard, the New-CSR wizard, and gnomint-cli's addca/addcsr prompts. - FEATURE: Algorithm-aware key-size selector. The bit-length input in the New-CA and New-CSR wizards swaps to match the chosen algorithm: spinbutton for RSA/DSA, P-256/P-384/P-521 dropdown for ECDSA, hidden entirely for Ed25519 (curve size is fixed). The CLI prompts do the same. - FEATURE: Certificate renewal (#50). Right-click → "Renew with fresh key" reissues a certificate with the same subject and SAN, signed by the same CA, with a freshly-generated keypair. The old cert stays in the database — standard "issue new, deploy, revoke old" pattern. CLI verb: renewcert . - FEATURE: Search / filter box (#53). A GtkSearchEntry above the tree view filters certificates and CSRs as you type, matching on subject or serial substring (case-insensitive). Ctrl+F focuses the entry. CAs are always shown so the tree path to each match stays visible. CLI verb: search . - FEATURE: Side-by-side certificate diff (#55). Right-click a cert → "Compare with PEM file…" opens a 3-column dialog (field, left, right) showing every X.509 property; differing rows are highlighted in amber. CLI verb: diff (either argument can be a DB id or a path to a PEM file). - FEATURE: Startup expiry banner (#56). Opening a database surfaces a GtkInfoBar above the tree counting any certificates whose effective expiration is inside the warning window (default 30 days, configurable via expire-warning-days). The banner's "Show them" action filters the tree to only the expiring rows; closing the banner restores the full view. gnomint-cli prints the same notice on stderr at startup. - FEATURE: Editable SAN list when signing a CSR (#40). The sign-CSR dialog now embeds the full SAN manager widget, pre-populated from the CSR's request. A CA operator can add, remove, or override SAN entries before signing — restoring the authority a CA is supposed to have. - FEATURE: GitHub Pages site under docs/. A new Jekyll site (landing page, features overview, install guide, task-oriented user manual, tutorial, release history) lives in the docs/ tree and is served from https://davefx.github.io/gnoMint/ once Pages is enabled in repo settings. The same content is browsable offline as Markdown. - FEATURE: Full user manual (#57). docs/manual.md covers every workflow: quick start, concepts, bootstrapping a CA, issuing certificates, wizards, importing CSRs, renewing/revoking/CRLs, exporting, bulk operations, search/filter, comparing certificates, expiry warnings, importing OpenSSL CA layouts, the CLI, and a troubleshooting section. - FEATURE: CLI parity pass. gnomint-cli gained renewcert, exportchain, revokemany, deletemany, search, diff, and the per-algorithm prompt flow. Every GUI menu entry now has a matching CLI verb. The CLI also prints the expiry-window notice on database open. - FEATURE: Comprehensive CLI test coverage. Every state-mutating command in ca_commands[] is now tested by at least one shell or python-pty script. New test files: check_cli_info.sh, check_cli_lifecycle.sh, check_cli_keys.sh, check_cli_banner.sh, check_cli_import.sh, check_cli_importdir.sh, check_cli_dhgen.sh, check_cli_passphrase.py. The pty-driven script in particular exercises extractcertpkey, extractcsrpkey, and changepassword end-to-end — the commands that read passphrases via getpass(). - BUGFIX: ECDSA prompt no longer aborts. addca and addcsr pre-set key_bitlength to 2048 before the algorithm prompt, then the ECDSA branch called dialog_ask_for_number(min=256, max=521, default=2048) and tripped an assertion. The default is now clamped to a valid curve size before the prompt fires. - BUGFIX: gnomint-cli importfile no longer segfaults. The shared import path called dialog_refresh_list() on success; dialog_refresh_list() dereferenced a NULL function pointer because the CLI never registers a refresh callback (the GUI does). Added a null check. - BUGFIX: Copyright bumped from 2006-2016 to 2006-2026 and dead sourceforge URLs replaced with GitHub repo links throughout. The legacy gnomint.sourceforge.net site is gone; its content has been archived into docs/. - POLISH: GTK 3 screenshots throughout the docs site, captured live from the build (main window with a sample CA hierarchy, all four key-algorithm wizard states, the new-CA / new-CSR / export / import / preferences dialogs). This release is database-compatible with 1.4.0 — no migration step needed. * Version 1.4.0 "Lazarus" (2026.05.19) After a decade-long hiatus since 1.3.0, gnoMint returns. This release accumulates ten years of patches from the Debian downstream community, modernizes the build for current toolchains, and adds a test suite to keep regressions out of the next release. - FEATURE: Subject Alternative Name (SAN) support throughout the workflow: a SAN editor when creating a CA or CSR, SAN display in certificate and CSR property dialogs, and proper parsing of SANs from existing certificates. - FEATURE: Year 2038 (Y2K38) safe handling of certificate dates. The build now forces 64-bit time_t even on 32-bit systems, so certificates with validity periods decades past 2038 work correctly. - FEATURE: XDG Base Directory Specification compliance. The default database lives under $XDG_DATA_HOME/gnomint/ instead of ~/.gnomint/. Existing databases at the old location are migrated automatically on first run. - FEATURE: AppData file for software-center integration, and improved gnomint.desktop entry (Exec=gnomint %f so .gnomint files open from file managers). - FEATURE: New test suite runnable via "make check". Includes a static .ui consistency checker (catches GtkBuilder layout files that fail to load, GtkGrid cell collisions, and orphan signal handlers) plus a runtime workflow regression test that exercises GUI callbacks under a headless Wayland compositor. - FEATURE: Devcontainer configuration for VS Code Dev Containers with all build dependencies pre-installed, plus a GitHub Actions workflow for build verification. - FIX: Crash when exporting a certificate's private key on 64-bit systems, caused by passing a gint pointer to gtk_tree_model_get for a G_TYPE_UINT64 column. - FIX: Segmentation fault when right-clicking a CA certificate in the tree view. - FIX: Latent layout collision in the certificate properties dialog where the "Validity" header overlapped the issuer's OU row. - FIX: CSR field inheritance now correctly respects CA policy using an integer check rather than a string comparison. - FIX: Memory leak in ca_file_insert_cert_in_db. - FIX: Various uninitialized-variable warnings cleaned up. - FIX: User-facing spelling errors corrected ("Emmited" -> "Emitted", "appropiate" -> "appropriate", and others). - FIX: Build system now respects external CFLAGS instead of hardcoding -Wall, and configure.ac no longer references a non-existent m4/Makefile that caused autoreconf failures. - FIX: All GtkBuilder .ui files ported to the GTK 3 widget set (GtkVBox/HBox/Table/Alignment/HButtonBox -> GtkBox/Grid/ButtonBox). Forward-port from the Debian community gtk3-port.patch. - I18N: New Italian translation. POT template regenerated (456 -> 617 msgids); all 12 existing translation files updated. * Version 1.3.0 "Sha Sha dance" (2016.03.15) - FEATURE: New certificates are now signed with SHA512 by default, upgraded from SHA1. - FEATURE: SHA256 support, including SHA256 fingerprint display in the certificate properties dialog. - FIX: Bug #2931708 — invalid DSA key lengths can no longer be entered when creating a CA or CSR. - FIX: "make dist" works correctly again. - FIX: Compilation on Ubuntu 15.04 and other modern toolchains. - BUILD: -Werror removed; deprecated GnuTLS functions cleaned up; autotools and .gitignore tidied. - I18N: Spanish translation completed. * Version 1.2.1 "All you need is a giant pacifier" (2010.08.11) - FIX: Crash when revoking a CA certificate if revoked certificates were hidden in the tree view. - FIX: Use-after-free in ca-cli-callbacks.c (RedHat Bugzilla #584069). - FEATURE: Distinct warning message when revoking a CA certificate versus a leaf certificate. - I18N: New Occitan (oc) translation; all translations updated. * Version 1.2.0 (2010.08.10) - FEATURE: Microsoft Windows support, by Jaroslav Imrich. - FEATURE: CRL distribution points can be configured per-CA and embedded in issued certificates. - FIX: Bug #3006946 — CA policies could no longer be established. - FIX: Export-from-menu action. - I18N: New Slovak translation, by Jaroslav Imrich. * Version 1.1.0 (2009.11.08) - FEATURE: Hierarchical tree built using node routes instead of subject-name matching, so CAs with identical common names work correctly. - FIX: Bug #2890061 — gnomint-cli showpolicy failed with "invalid ca-id". - BUILD: libgcrypt is now explicitly checked in configure (Debian bug #554669). - I18N: Translations updated; gettext comments preserved. * Version 1.0.0 (2009.06.05) - FEATURE: When creating a certificate whose expiration date is past the CA's, gnoMint clamps the expiration to the CA's and shows an informational message. - FEATURE: New dialog_info helper for informational messages. - BUILD: Compiles cleanly with GnuTLS 2.8.0. - FIX: gnomint-cli's crlgen subcommand was missing from the CLI dispatch table. - I18N: New Russian and Finnish translations. * Version 0.9.9 (2009.04.18) - FEATURE: Functional toolbar with proper action sensitivity (Extract private key correctly disables when there's no selection, etc.). - FEATURE: New password-ciphering scheme with a unique initialisation vector and counter per encrypted key, replacing the previous scheme that reused both. - FIX: Encrypted private key exports produced incorrect output. - FIX: Attempting to export a CSR as PKCS#12 is no longer possible (PKCS#12 is certificate-only). - FIX: Extracting a CSR's private key was returning the certificate's key instead. - FIX: While importing a CA certificate, the grand-children's parent-route is correctly updated alongside the children's. - FIX: uint160_write is now platform-independent. - FIX: When the database is password-unprotected, the password entry is reset and the old password property is deleted. - FIX: PKCS#12 export works against password-less databases. - BUILD: libgnomeui dependency removed. - I18N: Translations updated. * Version 0.9.1 (2008.12.18) - FIX: Missing include that prevented compilation on OpenSUSE. * Version 0.9.0 (2008.12.16) - FEATURE: New gnomint-cli command-line interface using readline, with commands addca, addcsr, delete, crlgen, dhgen, changepassword, and informational commands. * Version 0.6.0 (2008.12.01) - FEATURE: OpenSSL CA import — full CA hierarchies with certificates, private keys, and last-serial state can be imported from an on-disk OpenSSL CA directory. - FEATURE: PKCS#12 import and export. - FEATURE: PKCS#8 import. - FEATURE: PKCS#7 import (untested at release time — no PKCS#7 file found in the wild yet). - FEATURE: --enable-debug configure option for building with -g -O0. - FIX: Buffer overrun in uint160_read_escaped. - FIX: Architecture-dependent value saved in the database (now serialised portably). - FIX: Serial-number display from imported certificates. - I18N: New German and Italian translations. * Version 0.5.4 (2008.10.02) - FEATURE: Certificate import: single files and entire OpenSSL CA directories, including hierarchies. - FEATURE: CSR import, including the corresponding private key. - FEATURE: CRL import. - FEATURE: Full hierarchical view of CAs and their issued certificates and CSRs. - FEATURE: Subject fields inherited from the parent CA when creating a CSR; the CA used to generate a CSR is remembered as the default when signing it later. - FEATURE: 20-byte (160-bit) certificate serial numbers, with a new uint160 type for portable handling. - FEATURE: Database password protection covering all private keys in the database. - FEATURE: Dependences between certificate uses (key usage) and certificate purposes (extended key usage). - FEATURE: RFC 5280-compliant Authority Key Identifier and Subject Key Identifier extensions, including reuse of an existing AKI when the signing CA has one. - FEATURE: gconf-backed preferences (window size, view options, optional export of new certificates to gnome-keyring-manager). - FEATURE: Recent-files menu. - FEATURE: Pop-up context menus for certificates and CSRs. - FEATURE: Diffie-Hellman parameter generation. - FIX: Several segmentation faults (during CRL generation; when CSR/CA fields are NULL; when sorting more than 10 certificates). - FIX: Race condition assigning serial numbers when multiple CAs share a database. - FIX: Bug #2100270 — CRLs can now be generated for every CA in a hierarchy. - FIX: DSA-keyed CSR generation. - FIX: i18n setup for languages other than Spanish (patch from Staněk Luboš). - FIX: Permissions on newly-created database files (now 0600). - I18N: New French translation (Ahmed Baizid); new Czech translation (Staněk Luboš); new Swedish translation. * Version 0.3.2 (2007.11.03) - FIX: Fixing database upgrading from version 3 (gnoMint 0.1.5 or lower). * Version 0.3.1 (2007.11.01) - FEATURE: now, PKCS#12 structures can be exported, so certificates created in gnoMint can be easily imported in other programs as web browsers, or mail clients. - FEATURE: gnoMint is able to revoke certificates, and generate the corresponding Certificate Revocation Lists (CRLs). - FEATURE: gnoMint license has changed to GNU-GPLv3. - FIX: Fixed a lot of compilation errors in x86-64 architecture. - FIX: Fixing internal serial number in created certificates. * Version 0.1.5 (2007.05.15) - FEATURE: gnoMint can import the public part of Certificate Signing Requests made by other applications as long as they are formatted in PEM or in DER formats. This way, gnoMint now is able to make certificates for remote people or systems that can create their CSRs with other instances of gnoMint or other software. - FEATURE: gnoMint DB format version 3. This version of database format ensures that there won't be two or more CSRs in the database with the same Distinguished Name (DN). - FIX: Now the private key of CSRs can be exported without errors. - FIX: A just created CA has a default policy so it will be able to create useful certificates without change its default properties. - FIX: Some UI bugs are corrected: some label alignments now look OK, and the progress bar again moves while creating certificates or CSRs. * Version 0.1.4 (2007.05.14) - FEATURE: It allows defining policies for each Certification Authorities in the database, so as all the new certificates signed by the CA have common properties (uses, purposes and validity time). - FEATURE: It requires SQLite3, for proper UTF-8 support. Due to this change, all the pre 0.1.4 databases must be converted to a new format. A conversion script is included in the package. * Version 0.1.3 (2006.11.10) - FEATURE: it allows exporting uncrypted private keys (useful for unattended SSL/TLS servers). - FEATURE: it requires a minimum length (8 characters) for private-key export passphrase (so OpenSSL can import this keys) - FIX: checks that passphrase and confirmation are the same in private-key export passphrase - FIX: The focus is grabbed correctly when asking for passphrase, so no mouse action is needed. * Version 0.1.2 (2006.10.15) - FIX: version 0.1.1 couldn't save the certification authority database if the new file and /tmp were in different partitions. * Version 0.1.1 (2006.09.17) - FIX: version 0.1.0 couldn't be compiled on 64-bit architectures due to an type-conversion error * Version 0.1.0 (2006.09.15) - Initial version gnomint-1.6.4/configure.ac0000644000000000000000000001676415212761266014247 0ustar00rootrootAC_PREREQ([2.69]) AC_INIT([gnoMint],[1.6.4],[],[gnomint]) PACKAGE_CODENAME="Tempered Anvil" AC_DEFINE_UNQUOTED([PACKAGE_CODENAME], ["$PACKAGE_CODENAME"], [Release codename]) PACKAGE_COPYRIGHT="(c) 2006-2026 David Marín Carreño " PACKAGE_WEBSITE="https://github.com/davefx/gnoMint" PACKAGE_AUTHORS=$(awk 'NR>1{printf "\\n"}{printf "%s",$0}' AUTHORS) AC_DEFINE_UNQUOTED([PACKAGE_COPYRIGHT], ["$PACKAGE_COPYRIGHT"], [Copyright notice]) AC_DEFINE_UNQUOTED([PACKAGE_WEBSITE], ["$PACKAGE_WEBSITE"], [Project website URL]) AC_DEFINE_UNQUOTED([PACKAGE_AUTHORS], ["$PACKAGE_AUTHORS"], [Author list]) AM_INIT_AUTOMAKE([1.12 foreign]) AC_CANONICAL_HOST AC_CONFIG_HEADERS([config.h]) AC_CONFIG_MACRO_DIR([m4]) dnl Put the ACLOCAL flags in the Makefile AC_SUBST([ACLOCAL_AMFLAGS], ["-I $ac_macro_dir \${ACLOCAL_FLAGS}"]) dnl Initialize maintainer mode AM_MAINTAINER_MODE([enable]) AM_SILENT_RULES([yes]) # Check for programs AC_SEARCH_LIBS([strerror],[cposix]) AC_PROG_CC AC_PROG_INSTALL AC_PROG_LN_S AC_PROG_MAKE_SET AC_DISABLE_STATIC LT_INIT AM_PROG_CC_C_O # Use 64-bit file offsets everywhere (safe, independent of the C library ABI). AC_DEFINE([_FILE_OFFSET_BITS], [64], [Use 64-bit file offsets]) # NOTE: We deliberately do NOT define _TIME_BITS=64 here. # # _TIME_BITS is a glibc ABI switch, not a private compiler flag: it changes the # size of time_t for this program. It MUST stay consistent with every linked # library (GnuTLS, GLib, SQLite, ...). On platforms where 64-bit time_t is the # ABI (amd64, and 32-bit ports such as armhf) the toolchain already sets it, so # forcing it here is redundant. On i386 the distribution toolchains (Debian, # Ubuntu, Gentoo, openSUSE) keep the legacy 32-bit time_t for binary # compatibility, and the system GnuTLS/GLib are built that way. Forcing # _TIME_BITS=64 only in gnoMint made time_t 8 bytes here while GnuTLS still # expected 4, so gnutls_x509_crt_set_*_time() read the wrong number of bytes off # the stack and corrupted following arguments (manifesting as "Error when # setting certificate serial number"). See issue #86. Letting the toolchain # decide is the only ABI-correct choice. # Checks for header files. m4_warn([obsolete], [The preprocessor macro 'STDC_HEADERS' is obsolete. Except in unusual embedded environments, you can safely include all C89 headers unconditionally.])dnl # Autoupdate added the next two lines to ensure that your configure # script's behavior did not change. They are probably safe to remove. AC_CHECK_INCLUDES_DEFAULT AC_PROG_EGREP AC_CHECK_HEADERS([libintl.h locale.h stdlib.h string.h]) # Checks for typedefs, structures, and compiler characteristics. AC_C_CONST AC_C_INLINE AC_TYPE_SIZE_T AC_STRUCT_TM AC_C_VOLATILE # Checks for library functions. AC_FUNC_MALLOC AC_FUNC_MKTIME AC_FUNC_STRFTIME AC_CHECK_FUNCS([memset strcasecmp strdup]) # gettext stuff GETTEXT_PACKAGE=${PACKAGE} AC_SUBST(GETTEXT_PACKAGE) AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE], ["$GETTEXT_PACKAGE"], [Gettext package name]) AM_GNU_GETTEXT([external]) AM_GNU_GETTEXT_VERSION([0.19.8]) dnl Define locale directory — replaces deprecated AM_GLIB_DEFINE_LOCALEDIR gnomint_save_prefix="$prefix" gnomint_save_exec_prefix="$exec_prefix" gnomint_save_datarootdir="$datarootdir" test "x$prefix" = xNONE && prefix=$ac_default_prefix test "x$exec_prefix" = xNONE && exec_prefix=$prefix datarootdir=`eval echo "${datarootdir}"` gnomint_localedir=`eval echo "${datadir}/locale"` prefix="$gnomint_save_prefix" exec_prefix="$gnomint_save_exec_prefix" datarootdir="$gnomint_save_datarootdir" AC_DEFINE_UNQUOTED([PACKAGE_LOCALE_DIR], ["$gnomint_localedir"], [Define the location where the catalogs will be installed]) # required versions GNUTLS_REQUIRED=2.0 GNUTLS_ADVANCED_FEATURES_MINIMUM_VERSION=2.7.4 SQLITE_REQUIRED=3.0 GLIB_REQUIRED=2.66.0 GTK_REQUIRED=4.10.0 ISO_CODES_REQUIRED=0.35 # check for sqlite PKG_CHECK_MODULES(SQLITE, sqlite3 >= $SQLITE_REQUIRED) AC_SUBST(SQLITE_CFLAGS) AC_SUBST(SQLITE_LIBS) # check for libgcrypt gcrypt=0 AM_PATH_LIBGCRYPT(1.2.0, gcrypt=1) if test $gcrypt = 0 then AC_MSG_ERROR([gnoMint needs libgcrypt]) fi PKG_CHECK_MODULES(GNOMINT, glib-2.0 >= $GLIB_REQUIRED \ gthread-2.0 >= $GLIB_REQUIRED \ gio-2.0 >= $GLIB_REQUIRED \ gtk4 >= $GTK_REQUIRED \ gnutls >= $GNUTLS_REQUIRED \ ) AC_SUBST(GNOMINT_CFLAGS) AC_SUBST(GNOMINT_LIBS) ####################### # Check for readline. ######################## AC_CHECK_HEADER(readline/readline.h, readline_found=true, [AC_MSG_ERROR([libreadline is needed for compiling gnoMint.])] ) old_LIBS=$LIBS LIBS="-lreadline" AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[]])],[ READLINE_LIBS="-lreadline" ],[ LIBS="$LIBS -ltermcap" AC_TRY_LINK(,,[ READLINE_LIBS='-lreadline -ltermcap' ],[ AC_MSG_ERROR([Cannot figure out how to link with the readline library; see config.log for more information]) ]) ]) LIBS=$old_LIBS AC_SUBST(READLINE_LIBS) # On Windows (MinGW), inet_pton/inet_ntop live in ws2_32 case "$host_os" in mingw*|msys*|cygwin*) WINSOCK_LIBS="-lws2_32" ;; *) WINSOCK_LIBS="" ;; esac AC_SUBST(WINSOCK_LIBS) PKG_CHECK_MODULES(GNOMINTCLI, glib-2.0 >= $GLIB_REQUIRED \ gio-2.0 >= $GLIB_REQUIRED \ gnutls >= $GNUTLS_REQUIRED \ ) AC_SUBST(GNOMINTCLI_CFLAGS) AC_SUBST(GNOMINTCLI_LIBS) dnl Check gnutls version dnl (if >= GNUTLS_ADVANCED_FEATURES_MINIMUM_VERSION it enables some extra characteristics and functionalities) AC_MSG_CHECKING([whether gnutls >= $GNUTLS_ADVANCED_FEATURES_MINIMUM_VERSION (for advanced features)]) PKG_CHECK_EXISTS([gnutls >= $GNUTLS_ADVANCED_FEATURES_MINIMUM_VERSION], [have_advanced_gnutls=yes],[have_advanced_gnutls=no]) if test "x$have_advanced_gnutls" = "xyes"; then AC_DEFINE_UNQUOTED([ADVANCED_GNUTLS], ["yes"], [GnuTLS has advanced features]) AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi dnl Check iso-codes dnl (just a chek for packagers, it is required for l10n at runtime) PKG_CHECK_EXISTS([iso-codes >= $ISO_CODES_REQUIRED], [have_iso_codes=yes],[have_iso_codes=no]) if test "x$have_iso_codes" = "xyes"; then AC_MSG_CHECKING([whether iso-codes has iso-639 and iso-3166 domains]) if $PKG_CONFIG --variable=domains iso-codes | grep 639 > /dev/null && \ $PKG_CONFIG --variable=domains iso-codes | grep 3166 > /dev/null ; then result=yes else result=no have_iso_codes=no fi AC_MSG_RESULT([$result]) fi dnl glib-genmarshal GLIB_GENMARSHAL=`$PKG_CONFIG --variable=glib_genmarshal glib-2.0` AC_SUBST(GLIB_GENMARSHAL) dnl GSettings GLIB_GSETTINGS dnl dnl Check if src should be build with the debug mode dnl AC_ARG_ENABLE(debug, [ --enable-debug debug [default=no]], use_debug="Yes"; AC_DEFINE([debug], [1], [Enable debug mode]), use_debug="No") dnl dnl Check if src should be build with the debug_signals mode dnl AC_ARG_ENABLE(debug-signal, [ --enable-debug-signal debug signals sent [default=no]], use_debug_sig="Yes"; AC_DEFINE([debug_signal], [1], [Enable debug signal tracing]), use_debug_sig="No") dnl dnl if test "x$GCC" = "xyes"; then CFLAGS="${CFLAGS:--Wall}" if test "x$use_debug" = "xYes"; then CFLAGS="$CFLAGS -g -O0" fi fi AC_SUBST(CFLAGS) AC_SUBST(CPPFLAGS) AC_SUBST(LDFLAGS) AC_CONFIG_FILES([ Makefile src/Makefile gui/Makefile po/Makefile.in mime/Makefile gconf/Makefile tests/Makefile gnomint.spec ]) AC_OUTPUT dnl dnl Print a little note dnl echo " Configure summary: Source code location .......: ${srcdir} Compiler ...................: ${CC} Compiler flags .............: ${CFLAGS} Installing into prefix .....: ${prefix} ALL_LINGUAS ................: ${ALL_LINGUAS} Type make to build ${PACKAGE_STRING} " gnomint-1.6.4/BUGS0000644000000000000000000000000015212761266012414 0ustar00rootrootgnomint-1.6.4/intltool-extract.in0000644000000000000000000000000015212761267015576 0ustar00rootrootgnomint-1.6.4/README0000644000000000000000000000424615212761266012631 0ustar00rootrootgnoMint - A Certification Authority Software using GTK libraries. Documentation ------------- The full user manual, install guide, tutorial, and feature reference are published as a GitHub Pages site: https://davefx.github.io/gnomint The Markdown source for the same content lives under docs/ in this repository, so you can also read it offline: docs/index.md Landing page docs/install.md Install guide (packages + source build) docs/manual.md Task-oriented user manual docs/tutorial.md Worked example: small-firm CA with OpenVPN docs/features.md Feature overview docs/releases.md Release history since 2006 The legacy site at gnomint.sourceforge.net is no longer maintained; its content has been archived into the docs/ tree above. Quick start ----------- ./autogen.sh # only after a fresh clone / when configure.ac changes ./configure make sudo make install gnomint & # GUI gnomint-cli # readline shell See docs/install.md for the full dependency list. Two binaries ------------ The build produces two binaries from a shared source tree: gnomint The GTK 3 desktop application. gnomint-cli A readline CLI with the same capabilities. Use it in cron jobs, CI pipelines, and anywhere a script is more convenient than clicking. Year 2038 (Y2K38) Support ------------------------- gnoMint is designed to handle certificates with expiration dates beyond January 19, 2038 (the Year 2038 problem). The application uses 64-bit time_t values to ensure proper handling of dates far into the future. The following measures have been implemented: - Compile-time flags (_TIME_BITS=64, _FILE_OFFSET_BITS=64) to ensure 64-bit time_t even on 32-bit systems - Static assertions to verify time_t is 64-bit at compile time - Support for certificate expiration dates well beyond 2038 This ensures gnoMint can safely create and manage certificates with validity periods extending decades into the future. Issues and patches ------------------ https://github.com/davefx/gnoMint/issues https://github.com/davefx/gnoMint/pulls gnomint-1.6.4/ABOUT-NLS0000644000000000000000000026747415212761267013217 0ustar00rootroot1 Notes on the Free Translation Project *************************************** Free software is going international! The Free Translation Project is a way to get maintainers of free software, translators, and users all together, so that free software will gradually become able to speak many languages. A few packages already provide translations for their messages. If you found this 'ABOUT-NLS' file inside a distribution, you may assume that the distributed package does use GNU 'gettext' internally, itself available at your nearest GNU archive site. But you do _not_ need to install GNU 'gettext' prior to configuring, installing or using this package with messages translated. Installers will find here some useful hints. These notes also explain how users should proceed for getting the programs to use the available translations. They tell how people wanting to contribute and work on translations can contact the appropriate team. 1.1 INSTALL Matters =================== Some packages are "localizable" when properly installed; the programs they contain can be made to speak your own native language. Most such packages use GNU 'gettext'. Other packages have their own ways to internationalization, predating GNU 'gettext'. By default, this package will be installed to allow translation of messages. It will automatically detect whether the system already provides the GNU 'gettext' functions. Installers may use special options at configuration time for changing the default behaviour. The command: ./configure --disable-nls will _totally_ disable translation of messages. When you already have GNU 'gettext' installed on your system and run configure without an option for your new package, 'configure' will probably detect the previously built and installed 'libintl' library and will decide to use it. If not, you may have to to use the '--with-libintl-prefix' option to tell 'configure' where to look for it. Internationalized packages usually have many 'po/LL.po' files, where LL gives an ISO 639 two-letter code identifying the language. Unless translations have been forbidden at 'configure' time by using the '--disable-nls' switch, all available translations are installed together with the package. However, the environment variable 'LINGUAS' may be set, prior to configuration, to limit the installed set. 'LINGUAS' should then contain a space separated list of two-letter codes, stating which languages are allowed. 1.2 Using This Package ====================== As a user, if your language has been installed for this package, you only have to set the 'LANG' environment variable to the appropriate 'LL_CC' combination. If you happen to have the 'LC_ALL' or some other 'LC_xxx' environment variables set, you should unset them before setting 'LANG', otherwise the setting of 'LANG' will not have the desired effect. Here 'LL' is an ISO 639 two-letter language code, and 'CC' is an ISO 3166 two-letter country code. For example, let's suppose that you speak German and live in Germany. At the shell prompt, merely execute 'setenv LANG de_DE' (in 'csh'), 'export LANG; LANG=de_DE' (in 'sh') or 'export LANG=de_DE' (in 'bash'). This can be done from your '.login' or '.profile' file, once and for all. You might think that the country code specification is redundant. But in fact, some languages have dialects in different countries. For example, 'de_AT' is used for Austria, and 'pt_BR' for Brazil. The country code serves to distinguish the dialects. The locale naming convention of 'LL_CC', with 'LL' denoting the language and 'CC' denoting the country, is the one use on systems based on GNU libc. On other systems, some variations of this scheme are used, such as 'LL' or 'LL_CC.ENCODING'. You can get the list of locales supported by your system for your language by running the command 'locale -a | grep '^LL''. Not all programs have translations for all languages. By default, an English message is shown in place of a nonexistent translation. If you understand other languages, you can set up a priority list of languages. This is done through a different environment variable, called 'LANGUAGE'. GNU 'gettext' gives preference to 'LANGUAGE' over 'LANG' for the purpose of message handling, but you still need to have 'LANG' set to the primary language; this is required by other parts of the system libraries. For example, some Swedish users who would rather read translations in German than English for when Swedish is not available, set 'LANGUAGE' to 'sv:de' while leaving 'LANG' to 'sv_SE'. Special advice for Norwegian users: The language code for Norwegian bokma*l changed from 'no' to 'nb' recently (in 2003). During the transition period, while some message catalogs for this language are installed under 'nb' and some older ones under 'no', it's recommended for Norwegian users to set 'LANGUAGE' to 'nb:no' so that both newer and older translations are used. In the 'LANGUAGE' environment variable, but not in the 'LANG' environment variable, 'LL_CC' combinations can be abbreviated as 'LL' to denote the language's main dialect. For example, 'de' is equivalent to 'de_DE' (German as spoken in Germany), and 'pt' to 'pt_PT' (Portuguese as spoken in Portugal) in this context. 1.3 Translating Teams ===================== For the Free Translation Project to be a success, we need interested people who like their own language and write it well, and who are also able to synergize with other translators speaking the same language. Each translation team has its own mailing list. The up-to-date list of teams can be found at the Free Translation Project's homepage, 'http://translationproject.org/', in the "Teams" area. If you'd like to volunteer to _work_ at translating messages, you should become a member of the translating team for your own language. The subscribing address is _not_ the same as the list itself, it has '-request' appended. For example, speakers of Swedish can send a message to 'sv-request@li.org', having this message body: subscribe Keep in mind that team members are expected to participate _actively_ in translations, or at solving translational difficulties, rather than merely lurking around. If your team does not exist yet and you want to start one, or if you are unsure about what to do or how to get started, please write to 'coordinator@translationproject.org' to reach the coordinator for all translator teams. The English team is special. It works at improving and uniformizing the terminology in use. Proven linguistic skills are praised more than programming skills, here. 1.4 Available Packages ====================== Languages are not equally supported in all packages. The following matrix shows the current state of internationalization, as of Jun 2014. The matrix shows, in regard of each package, for which languages PO files have been submitted to translation coordination, with a translation percentage of at least 50%. Ready PO files af am an ar as ast az be bg bn bn_IN bs ca crh cs +---------------------------------------------------+ a2ps | [] [] [] | aegis | | anubis | | aspell | [] [] [] | bash | [] [] [] | bfd | | binutils | [] | bison | | bison-runtime | [] | buzztrax | [] | ccd2cue | | ccide | | cflow | | clisp | | coreutils | [] [] | cpio | | cppi | | cpplib | [] | cryptsetup | [] | datamash | | denemo | [] [] | dfarc | [] | dialog | [] [] [] | dico | | diffutils | [] | dink | [] | direvent | | doodle | [] | dos2unix | | dos2unix-man | | e2fsprogs | [] [] | enscript | [] | exif | [] | fetchmail | [] [] | findutils | [] | flex | [] | freedink | [] [] | fusionforge | | gas | | gawk | [] | gcal | [] | gcc | | gdbm | | gettext-examples | [] [] [] [] [] | gettext-runtime | [] [] [] | gettext-tools | [] [] | gjay | | glunarclock | [] [] [] | gnubiff | [] | gnubik | [] | gnucash | () () [] | gnuchess | | gnulib | [] | gnunet | | gnunet-gtk | | gold | | gphoto2 | [] | gprof | [] | gramadoir | | grep | [] [] [] | grub | [] | gsasl | | gss | | gst-plugins-bad | [] [] | gst-plugins-base | [] [] [] | gst-plugins-good | [] [] [] | gst-plugins-ugly | [] [] [] | gstreamer | [] [] [] [] | gtick | [] | gtkam | [] [] | gtkspell | [] [] [] [] [] | guix | | guix-packages | | gutenprint | [] | hello | [] | help2man | | help2man-texi | | hylafax | | idutils | | iso_15924 | [] | iso_3166 | [] [] [] [] [] [] [] [] [] [] | iso_3166_2 | | iso_4217 | [] | iso_639 | [] [] [] [] [] [] [] [] [] | iso_639_3 | [] [] | iso_639_5 | | jwhois | | kbd | [] | klavaro | [] [] [] [] [] | ld | [] | leafpad | [] [] [] [] | libc | [] [] [] | libexif | () | libextractor | | libgnutls | [] | libgphoto2 | [] | libgphoto2_port | [] | libgsasl | | libiconv | [] [] | libidn | [] | liferea | [] [] [] [] | lilypond | [] [] | lordsawar | [] | lprng | | lynx | [] [] | m4 | [] | mailfromd | | mailutils | | make | [] | man-db | [] [] | man-db-manpages | | midi-instruments | [] [] [] | minicom | [] | mkisofs | [] | myserver | [] | nano | [] [] [] | opcodes | | parted | [] | pies | | pnmixer | | popt | [] | procps-ng | | procps-ng-man | | psmisc | [] | pspp | [] | pushover | [] | pwdutils | | pyspread | | radius | [] | recode | [] [] [] | recutils | | rpm | | rush | | sarg | | sed | [] [] [] [] | sharutils | [] | shishi | | skribilo | | solfege | [] [] | solfege-manual | | spotmachine | | sudo | [] [] | sudoers | [] [] | sysstat | [] | tar | [] [] [] | texinfo | [] [] | texinfo_document | [] [] | tigervnc | [] | tin | | tin-man | | tracgoogleappsa... | | trader | | util-linux | [] | ve | | vice | | vmm | | vorbis-tools | [] | wastesedge | | wcd | | wcd-man | | wdiff | [] [] | wget | [] | wyslij-po | | xboard | | xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] | +---------------------------------------------------+ af am an ar as ast az be bg bn bn_IN bs ca crh cs 4 0 2 5 3 11 0 8 25 3 3 1 55 4 74 da de el en en_GB en_ZA eo es et eu fa fi fr +--------------------------------------------------+ a2ps | [] [] [] [] [] [] [] [] [] | aegis | [] [] [] [] | anubis | [] [] [] [] [] | aspell | [] [] [] [] [] [] [] | bash | [] [] [] | bfd | [] [] [] [] | binutils | [] [] [] | bison | [] [] [] [] [] [] [] [] | bison-runtime | [] [] [] [] [] [] [] [] | buzztrax | [] [] [] [] | ccd2cue | [] [] [] [] | ccide | [] [] [] [] [] [] | cflow | [] [] [] [] [] | clisp | [] [] [] [] [] | coreutils | [] [] [] [] [] | cpio | [] [] [] [] [] | cppi | [] [] [] [] [] | cpplib | [] [] [] [] [] [] | cryptsetup | [] [] [] [] [] | datamash | [] [] [] [] | denemo | [] | dfarc | [] [] [] [] [] [] | dialog | [] [] [] [] [] [] [] [] [] | dico | [] [] [] [] | diffutils | [] [] [] [] [] [] | dink | [] [] [] [] [] [] | direvent | [] [] [] [] | doodle | [] [] [] [] | dos2unix | [] [] [] [] [] | dos2unix-man | [] [] [] | e2fsprogs | [] [] [] [] [] | enscript | [] [] [] [] [] [] | exif | [] [] [] [] [] [] | fetchmail | [] () [] [] [] [] [] | findutils | [] [] [] [] [] [] [] [] | flex | [] [] [] [] [] [] | freedink | [] [] [] [] [] [] [] [] | fusionforge | [] [] [] | gas | [] [] [] | gawk | [] [] [] [] [] | gcal | [] [] [] [] | gcc | [] | gdbm | [] [] [] [] [] | gettext-examples | [] [] [] [] [] [] [] | gettext-runtime | [] [] [] [] [] [] | gettext-tools | [] [] [] [] [] | gjay | [] [] [] [] | glunarclock | [] [] [] [] [] | gnubiff | () [] [] () | gnubik | [] [] [] [] [] | gnucash | [] () () () () () () | gnuchess | [] [] [] [] | gnulib | [] [] [] [] [] [] [] | gnunet | [] | gnunet-gtk | [] | gold | [] [] [] | gphoto2 | [] () [] [] | gprof | [] [] [] [] [] [] | gramadoir | [] [] [] [] [] | grep | [] [] [] [] [] [] [] | grub | [] [] [] [] [] | gsasl | [] [] [] [] [] | gss | [] [] [] [] [] | gst-plugins-bad | [] [] [] | gst-plugins-base | [] [] [] [] [] [] | gst-plugins-good | [] [] [] [] [] [] [] | gst-plugins-ugly | [] [] [] [] [] [] [] [] | gstreamer | [] [] [] [] [] [] [] | gtick | [] () [] [] [] | gtkam | [] () [] [] [] [] | gtkspell | [] [] [] [] [] [] [] [] | guix | [] [] | guix-packages | | gutenprint | [] [] [] [] | hello | [] [] [] [] [] [] [] [] | help2man | [] [] [] [] [] [] [] | help2man-texi | [] [] [] | hylafax | [] [] | idutils | [] [] [] [] [] | iso_15924 | [] () [] [] () [] () | iso_3166 | [] () [] [] [] [] () [] () | iso_3166_2 | [] () () () | iso_4217 | [] () [] [] [] () [] () | iso_639 | [] () [] [] () [] () | iso_639_3 | () () () | iso_639_5 | () () () | jwhois | [] [] [] [] [] | kbd | [] [] [] [] [] [] | klavaro | [] [] [] [] [] [] [] | ld | [] [] [] [] | leafpad | [] [] [] [] [] [] [] [] | libc | [] [] [] [] [] | libexif | [] [] () [] [] | libextractor | [] | libgnutls | [] [] [] [] | libgphoto2 | [] () [] | libgphoto2_port | [] () [] [] [] [] | libgsasl | [] [] [] [] [] | libiconv | [] [] [] [] [] [] [] | libidn | [] [] [] [] [] | liferea | [] () [] [] [] [] [] | lilypond | [] [] [] [] [] [] | lordsawar | [] [] | lprng | | lynx | [] [] [] [] [] [] | m4 | [] [] [] [] [] [] | mailfromd | [] | mailutils | [] [] [] [] | make | [] [] [] [] [] | man-db | [] [] [] [] | man-db-manpages | [] [] | midi-instruments | [] [] [] [] [] [] [] [] [] | minicom | [] [] [] [] [] | mkisofs | [] [] [] | myserver | [] [] [] [] | nano | [] [] [] [] [] [] [] | opcodes | [] [] [] [] [] | parted | [] [] [] | pies | [] | pnmixer | [] [] | popt | [] [] [] [] [] [] | procps-ng | [] [] | procps-ng-man | [] [] | psmisc | [] [] [] [] [] [] [] | pspp | [] [] [] | pushover | () [] [] [] | pwdutils | [] [] [] | pyspread | [] [] [] | radius | [] [] | recode | [] [] [] [] [] [] [] | recutils | [] [] [] [] | rpm | [] [] [] [] [] | rush | [] [] [] | sarg | [] [] | sed | [] [] [] [] [] [] [] [] | sharutils | [] [] [] [] | shishi | [] [] [] | skribilo | [] [] [] | solfege | [] [] [] [] [] [] [] [] | solfege-manual | [] [] [] [] [] | spotmachine | [] [] [] [] [] | sudo | [] [] [] [] [] [] | sudoers | [] [] [] [] [] [] | sysstat | [] [] [] [] [] [] | tar | [] [] [] [] [] [] [] | texinfo | [] [] [] [] [] | texinfo_document | [] [] [] [] | tigervnc | [] [] [] [] [] [] | tin | [] [] [] [] | tin-man | [] | tracgoogleappsa... | [] [] [] [] [] | trader | [] [] [] [] [] [] | util-linux | [] [] [] [] | ve | [] [] [] [] [] | vice | () () () | vmm | [] [] | vorbis-tools | [] [] [] [] | wastesedge | [] | wcd | [] [] [] [] | wcd-man | [] | wdiff | [] [] [] [] [] [] [] | wget | [] [] [] [] [] [] | wyslij-po | [] [] [] [] | xboard | [] [] [] [] | xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] [] [] [] [] | +--------------------------------------------------+ da de el en en_GB en_ZA eo es et eu fa fi fr 119 131 32 1 6 0 94 95 22 13 4 102 139 ga gd gl gu he hi hr hu hy ia id is it ja ka kk +-------------------------------------------------+ a2ps | [] [] [] [] | aegis | [] | anubis | [] [] [] [] | aspell | [] [] [] [] [] | bash | [] [] [] [] | bfd | [] [] | binutils | [] [] [] | bison | [] | bison-runtime | [] [] [] [] [] [] [] [] | buzztrax | | ccd2cue | [] | ccide | [] [] | cflow | [] [] [] | clisp | | coreutils | [] [] | cpio | [] [] [] [] [] [] | cppi | [] [] [] [] [] | cpplib | [] [] | cryptsetup | [] | datamash | | denemo | [] | dfarc | [] [] [] | dialog | [] [] [] [] [] [] [] [] [] [] | dico | | diffutils | [] [] [] [] | dink | [] | direvent | [] | doodle | [] [] | dos2unix | [] [] | dos2unix-man | | e2fsprogs | [] [] | enscript | [] [] [] | exif | [] [] [] [] [] [] | fetchmail | [] [] [] | findutils | [] [] [] [] [] [] [] | flex | [] | freedink | [] [] [] [] | fusionforge | | gas | [] | gawk | [] () [] | gcal | | gcc | | gdbm | | gettext-examples | [] [] [] [] [] [] [] | gettext-runtime | [] [] [] [] [] [] [] | gettext-tools | [] [] [] | gjay | [] | glunarclock | [] [] [] [] [] [] | gnubiff | [] [] () | gnubik | [] [] [] | gnucash | () () () () () | gnuchess | | gnulib | [] [] [] [] [] | gnunet | | gnunet-gtk | | gold | [] [] | gphoto2 | [] [] [] [] | gprof | [] [] [] [] | gramadoir | [] [] [] | grep | [] [] [] [] [] [] [] | grub | [] [] [] | gsasl | [] [] [] [] [] | gss | [] [] [] [] [] | gst-plugins-bad | [] [] [] | gst-plugins-base | [] [] [] [] | gst-plugins-good | [] [] [] [] [] [] | gst-plugins-ugly | [] [] [] [] [] [] | gstreamer | [] [] [] [] [] | gtick | [] [] [] [] [] | gtkam | [] [] [] [] [] | gtkspell | [] [] [] [] [] [] [] [] [] [] | guix | | guix-packages | | gutenprint | [] [] [] | hello | [] [] [] [] [] | help2man | [] [] [] | help2man-texi | | hylafax | [] | idutils | [] [] | iso_15924 | [] [] [] [] [] [] | iso_3166 | [] [] [] [] [] [] [] [] [] [] [] [] [] | iso_3166_2 | [] [] | iso_4217 | [] [] [] [] [] [] | iso_639 | [] [] [] [] [] [] [] [] [] | iso_639_3 | [] [] | iso_639_5 | | jwhois | [] [] [] [] | kbd | [] [] [] | klavaro | [] [] [] [] [] | ld | [] [] [] [] | leafpad | [] [] [] [] [] [] [] () | libc | [] [] [] [] [] | libexif | [] | libextractor | | libgnutls | [] | libgphoto2 | [] [] | libgphoto2_port | [] [] | libgsasl | [] [] [] [] | libiconv | [] [] [] [] [] [] [] | libidn | [] [] [] [] | liferea | [] [] [] [] [] | lilypond | [] | lordsawar | | lprng | [] | lynx | [] [] [] [] | m4 | [] [] [] [] [] | mailfromd | | mailutils | | make | [] [] [] [] | man-db | [] [] | man-db-manpages | [] [] | midi-instruments | [] [] [] [] [] [] [] [] [] | minicom | [] [] [] | mkisofs | [] [] | myserver | [] | nano | [] [] [] [] [] [] | opcodes | [] [] [] | parted | [] [] [] [] [] | pies | | pnmixer | [] [] | popt | [] [] [] [] [] [] [] [] [] [] | procps-ng | | procps-ng-man | | psmisc | [] [] [] [] | pspp | [] [] | pushover | [] | pwdutils | [] | pyspread | | radius | [] | recode | [] [] [] [] [] [] [] | recutils | | rpm | [] | rush | [] | sarg | | sed | [] [] [] [] [] [] [] | sharutils | | shishi | | skribilo | [] | solfege | [] [] | solfege-manual | | spotmachine | | sudo | [] [] [] [] | sudoers | [] [] [] | sysstat | [] [] [] [] | tar | [] [] [] [] [] [] | texinfo | [] [] [] | texinfo_document | [] [] [] | tigervnc | | tin | | tin-man | | tracgoogleappsa... | [] [] [] [] | trader | [] [] | util-linux | [] | ve | [] | vice | () () | vmm | | vorbis-tools | [] [] | wastesedge | [] | wcd | | wcd-man | | wdiff | [] [] [] | wget | [] [] [] [] | wyslij-po | [] [] [] | xboard | | xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] [] [] [] | +-------------------------------------------------+ ga gd gl gu he hi hr hu hy ia id is it ja ka kk 35 2 47 4 8 2 60 71 2 6 81 11 87 57 0 3 kn ko ku ky lg lt lv mk ml mn mr ms mt nb ne nl +--------------------------------------------------+ a2ps | [] [] | aegis | [] | anubis | [] [] [] | aspell | [] [] | bash | [] [] | bfd | | binutils | | bison | [] | bison-runtime | [] [] [] [] [] [] | buzztrax | | ccd2cue | | ccide | [] [] | cflow | [] | clisp | [] | coreutils | [] [] | cpio | [] | cppi | | cpplib | [] | cryptsetup | [] | datamash | [] [] | denemo | | dfarc | [] [] | dialog | [] [] [] [] [] [] | dico | | diffutils | [] [] [] | dink | [] | direvent | [] | doodle | [] | dos2unix | [] [] | dos2unix-man | [] | e2fsprogs | [] | enscript | [] | exif | [] [] [] | fetchmail | [] | findutils | [] [] | flex | [] | freedink | [] [] | fusionforge | | gas | | gawk | [] | gcal | | gcc | | gdbm | | gettext-examples | [] [] [] [] [] [] | gettext-runtime | [] [] [] | gettext-tools | [] | gjay | | glunarclock | [] [] | gnubiff | [] | gnubik | [] [] | gnucash | () () () () () () () [] | gnuchess | [] [] | gnulib | [] | gnunet | | gnunet-gtk | | gold | | gphoto2 | [] | gprof | [] [] | gramadoir | [] | grep | [] [] | grub | [] [] [] | gsasl | [] | gss | | gst-plugins-bad | [] [] [] | gst-plugins-base | [] [] [] | gst-plugins-good | [] [] [] [] | gst-plugins-ugly | [] [] [] [] [] | gstreamer | [] [] [] | gtick | [] | gtkam | [] [] | gtkspell | [] [] [] [] [] [] [] | guix | | guix-packages | | gutenprint | [] | hello | [] [] [] | help2man | [] | help2man-texi | | hylafax | [] | idutils | [] | iso_15924 | () [] [] | iso_3166 | [] [] [] () [] [] [] [] [] [] | iso_3166_2 | () [] | iso_4217 | () [] [] [] | iso_639 | [] [] () [] [] [] [] | iso_639_3 | [] () [] | iso_639_5 | () | jwhois | [] [] | kbd | [] | klavaro | [] [] | ld | | leafpad | [] [] [] [] [] | libc | [] [] | libexif | [] | libextractor | [] | libgnutls | [] [] | libgphoto2 | [] | libgphoto2_port | [] | libgsasl | [] | libiconv | [] [] | libidn | [] | liferea | [] [] [] | lilypond | [] | lordsawar | | lprng | | lynx | [] | m4 | [] | mailfromd | | mailutils | | make | [] [] | man-db | [] | man-db-manpages | [] | midi-instruments | [] [] [] [] [] [] [] | minicom | [] | mkisofs | [] | myserver | | nano | [] [] [] | opcodes | [] | parted | [] [] | pies | | pnmixer | [] | popt | [] [] [] [] [] | procps-ng | | procps-ng-man | | psmisc | [] | pspp | [] [] | pushover | | pwdutils | [] | pyspread | | radius | [] | recode | [] [] | recutils | [] | rpm | [] | rush | [] | sarg | | sed | [] [] | sharutils | [] | shishi | | skribilo | | solfege | [] [] | solfege-manual | [] | spotmachine | [] | sudo | [] [] [] | sudoers | [] [] [] | sysstat | [] [] | tar | [] [] [] | texinfo | [] | texinfo_document | [] | tigervnc | [] | tin | | tin-man | | tracgoogleappsa... | [] [] [] | trader | [] | util-linux | [] | ve | [] | vice | [] | vmm | [] | vorbis-tools | [] | wastesedge | [] | wcd | [] | wcd-man | [] | wdiff | [] | wget | [] [] | wyslij-po | [] | xboard | [] | xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] | +--------------------------------------------------+ kn ko ku ky lg lt lv mk ml mn mr ms mt nb ne nl 5 15 4 6 0 13 23 3 3 3 4 11 2 42 1 125 nn or pa pl ps pt pt_BR ro ru rw sk sl sq sr +------------------------------------------------+ a2ps | [] [] [] [] [] [] [] | aegis | [] [] | anubis | [] [] [] | aspell | [] [] [] [] [] [] [] | bash | [] [] [] [] [] [] | bfd | [] [] | binutils | [] [] | bison | [] [] [] | bison-runtime | [] [] [] [] [] [] [] [] | buzztrax | [] | ccd2cue | [] [] | ccide | [] [] [] | cflow | [] [] [] | clisp | [] | coreutils | [] [] [] [] | cpio | [] [] [] | cppi | [] [] [] | cpplib | [] [] [] | cryptsetup | [] [] [] | datamash | [] [] | denemo | | dfarc | [] [] [] | dialog | [] [] [] [] [] [] [] | dico | [] | diffutils | [] [] [] | dink | | direvent | [] [] [] | doodle | [] [] | dos2unix | [] [] [] [] | dos2unix-man | [] [] | e2fsprogs | [] | enscript | [] [] [] [] [] [] | exif | [] [] [] [] [] [] | fetchmail | [] [] [] | findutils | [] [] [] [] [] [] | flex | [] [] [] [] [] | freedink | [] [] [] [] [] | fusionforge | | gas | | gawk | [] | gcal | | gcc | | gdbm | [] [] [] | gettext-examples | [] [] [] [] [] [] [] [] | gettext-runtime | [] [] [] [] [] [] [] [] [] | gettext-tools | [] [] [] [] [] [] [] | gjay | [] | glunarclock | [] [] [] [] [] [] | gnubiff | [] | gnubik | [] [] [] [] | gnucash | () () () () () [] | gnuchess | [] [] | gnulib | [] [] [] [] [] | gnunet | | gnunet-gtk | | gold | | gphoto2 | [] [] [] [] [] | gprof | [] [] [] [] | gramadoir | [] [] | grep | [] [] [] [] [] [] | grub | [] [] [] [] [] | gsasl | [] [] [] | gss | [] [] [] [] | gst-plugins-bad | [] [] [] [] [] | gst-plugins-base | [] [] [] [] [] [] | gst-plugins-good | [] [] [] [] [] [] [] | gst-plugins-ugly | [] [] [] [] [] [] [] | gstreamer | [] [] [] [] [] [] [] | gtick | [] [] [] [] [] | gtkam | [] [] [] [] [] [] | gtkspell | [] [] [] [] [] [] [] [] [] | guix | | guix-packages | | gutenprint | [] [] | hello | [] [] [] [] [] [] | help2man | [] [] [] [] | help2man-texi | [] | hylafax | | idutils | [] [] [] | iso_15924 | [] () [] [] [] [] | iso_3166 | [] [] [] [] () [] [] [] [] [] [] [] [] | iso_3166_2 | [] () [] | iso_4217 | [] [] () [] [] [] [] [] | iso_639 | [] [] [] () [] [] [] [] [] [] | iso_639_3 | [] () | iso_639_5 | () [] | jwhois | [] [] [] [] | kbd | [] [] | klavaro | [] [] [] [] [] | ld | | leafpad | [] [] [] [] [] [] [] [] | libc | [] [] [] | libexif | [] () [] | libextractor | [] | libgnutls | [] | libgphoto2 | [] | libgphoto2_port | [] [] [] [] [] | libgsasl | [] [] [] [] | libiconv | [] [] [] [] [] | libidn | [] [] [] | liferea | [] [] [] [] () [] [] | lilypond | | lordsawar | | lprng | [] | lynx | [] [] | m4 | [] [] [] [] [] | mailfromd | [] | mailutils | [] | make | [] [] [] | man-db | [] [] [] | man-db-manpages | [] [] [] | midi-instruments | [] [] [] [] [] [] [] [] | minicom | [] [] [] [] | mkisofs | [] [] [] | myserver | [] [] | nano | [] [] [] [] [] [] | opcodes | | parted | [] [] [] [] [] [] | pies | [] | pnmixer | [] | popt | [] [] [] [] [] [] | procps-ng | [] | procps-ng-man | [] | psmisc | [] [] [] [] | pspp | [] [] | pushover | | pwdutils | [] | pyspread | [] [] | radius | [] [] | recode | [] [] [] [] [] [] [] [] | recutils | [] [] | rpm | [] | rush | [] [] [] | sarg | [] [] | sed | [] [] [] [] [] [] [] [] | sharutils | [] [] [] | shishi | [] [] | skribilo | [] | solfege | [] [] [] | solfege-manual | [] [] | spotmachine | [] [] | sudo | [] [] [] [] [] [] | sudoers | [] [] [] [] | sysstat | [] [] [] [] [] | tar | [] [] [] [] [] | texinfo | [] [] [] | texinfo_document | [] [] | tigervnc | [] [] [] | tin | [] | tin-man | | tracgoogleappsa... | [] [] [] [] | trader | [] [] | util-linux | [] [] | ve | [] [] [] | vice | | vmm | | vorbis-tools | [] [] [] | wastesedge | | wcd | | wcd-man | | wdiff | [] [] [] [] [] | wget | [] [] [] [] [] | wyslij-po | [] [] [] [] | xboard | [] [] [] | xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] [] | +------------------------------------------------+ nn or pa pl ps pt pt_BR ro ru rw sk sl sq sr 7 3 6 114 1 12 88 32 82 3 40 45 7 101 sv sw ta te tg th tr uk ur vi wa wo zh_CN +----------------------------------------------+ a2ps | [] [] [] [] [] | aegis | [] | anubis | [] [] [] [] | aspell | [] [] [] [] [] | bash | [] [] [] [] | bfd | [] [] [] | binutils | [] [] [] | bison | [] [] [] [] | bison-runtime | [] [] [] [] [] [] | buzztrax | [] [] [] | ccd2cue | [] [] [] | ccide | [] [] [] [] | cflow | [] [] [] [] | clisp | | coreutils | [] [] [] | cpio | [] [] [] [] [] | cppi | [] [] [] [] | cpplib | [] [] [] [] [] | cryptsetup | [] [] [] | datamash | [] [] [] | denemo | [] | dfarc | [] [] | dialog | [] [] [] [] [] [] | dico | [] | diffutils | [] [] [] [] [] | dink | [] | direvent | [] [] | doodle | [] [] | dos2unix | [] [] [] [] | dos2unix-man | [] [] [] | e2fsprogs | [] [] [] [] | enscript | [] [] [] [] | exif | [] [] [] [] [] | fetchmail | [] [] [] [] | findutils | [] [] [] [] [] | flex | [] [] [] [] | freedink | [] [] [] | fusionforge | | gas | [] | gawk | [] [] [] | gcal | [] [] [] | gcc | [] | gdbm | [] [] | gettext-examples | [] [] [] [] [] | gettext-runtime | [] [] [] [] [] | gettext-tools | [] [] [] [] [] | gjay | [] [] [] | glunarclock | [] [] [] [] | gnubiff | [] [] | gnubik | [] [] [] [] | gnucash | () () () () [] | gnuchess | [] [] [] | gnulib | [] [] [] [] | gnunet | | gnunet-gtk | | gold | [] [] | gphoto2 | [] [] [] [] | gprof | [] [] [] [] | gramadoir | [] [] [] | grep | [] [] [] [] [] | grub | [] [] [] [] | gsasl | [] [] [] [] | gss | [] [] [] | gst-plugins-bad | [] [] [] [] [] | gst-plugins-base | [] [] [] [] [] | gst-plugins-good | [] [] [] [] [] | gst-plugins-ugly | [] [] [] [] [] | gstreamer | [] [] [] [] [] | gtick | [] [] [] | gtkam | [] [] [] [] | gtkspell | [] [] [] [] [] [] [] | guix | | guix-packages | | gutenprint | [] [] [] [] | hello | [] [] [] [] [] [] | help2man | [] [] [] | help2man-texi | [] | hylafax | [] | idutils | [] [] [] | iso_15924 | [] () [] [] () [] | iso_3166 | [] [] () [] [] () [] [] | iso_3166_2 | () [] [] () [] | iso_4217 | [] () [] [] () [] | iso_639 | [] [] [] () [] [] () [] [] | iso_639_3 | [] () [] [] () | iso_639_5 | () [] () | jwhois | [] [] [] [] | kbd | [] [] [] [] | klavaro | [] [] [] [] [] [] | ld | [] [] [] [] [] | leafpad | [] [] [] [] [] [] | libc | [] [] [] [] [] | libexif | [] [] () | libextractor | [] [] | libgnutls | [] [] [] [] | libgphoto2 | [] [] [] | libgphoto2_port | [] [] [] [] | libgsasl | [] [] [] [] | libiconv | [] [] [] [] [] | libidn | () [] [] [] | liferea | [] [] [] [] [] | lilypond | [] | lordsawar | | lprng | [] | lynx | [] [] [] [] | m4 | [] [] [] | mailfromd | [] [] | mailutils | [] | make | [] [] [] [] | man-db | [] [] [] | man-db-manpages | [] [] | midi-instruments | [] [] [] [] [] [] | minicom | [] [] | mkisofs | [] [] [] | myserver | [] | nano | [] [] [] [] | opcodes | [] [] [] | parted | [] [] [] [] [] | pies | [] [] | pnmixer | [] [] [] | popt | [] [] [] [] [] [] [] | procps-ng | [] [] | procps-ng-man | [] | psmisc | [] [] [] [] | pspp | [] [] [] | pushover | [] | pwdutils | [] [] | pyspread | [] | radius | [] [] | recode | [] [] [] [] | recutils | [] [] [] | rpm | [] [] [] [] | rush | [] [] | sarg | | sed | [] [] [] [] [] | sharutils | [] [] [] [] | shishi | [] [] | skribilo | [] [] | solfege | [] [] [] [] | solfege-manual | [] | spotmachine | [] [] [] | sudo | [] [] [] [] [] | sudoers | [] [] [] [] | sysstat | [] [] [] [] [] | tar | [] [] [] [] [] | texinfo | [] [] [] | texinfo_document | [] | tigervnc | [] [] [] | tin | [] | tin-man | | tracgoogleappsa... | [] [] [] [] [] | trader | [] | util-linux | [] [] [] [] | ve | [] [] [] [] | vice | () () | vmm | | vorbis-tools | [] [] | wastesedge | | wcd | [] [] [] | wcd-man | [] | wdiff | [] [] [] [] | wget | [] [] [] | wyslij-po | [] [] | xboard | [] [] | xdg-user-dirs | [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] [] | +----------------------------------------------+ sv sw ta te tg th tr uk ur vi wa wo zh_CN 106 1 4 3 0 13 51 115 1 125 7 1 100 zh_HK zh_TW +-------------+ a2ps | | 30 aegis | | 9 anubis | | 19 aspell | | 29 bash | [] | 23 bfd | | 11 binutils | | 12 bison | [] | 18 bison-runtime | [] | 38 buzztrax | | 9 ccd2cue | | 10 ccide | | 17 cflow | | 16 clisp | | 10 coreutils | | 18 cpio | | 20 cppi | | 17 cpplib | [] | 19 cryptsetup | | 14 datamash | | 11 denemo | | 5 dfarc | | 17 dialog | [] | 42 dico | | 6 diffutils | | 22 dink | | 10 direvent | | 11 doodle | | 12 dos2unix | [] | 18 dos2unix-man | | 9 e2fsprogs | | 15 enscript | | 21 exif | | 27 fetchmail | | 19 findutils | | 29 flex | [] | 19 freedink | | 24 fusionforge | | 3 gas | | 5 gawk | | 13 gcal | | 8 gcc | | 2 gdbm | | 10 gettext-examples | [] [] | 40 gettext-runtime | [] [] | 35 gettext-tools | [] | 24 gjay | | 9 glunarclock | [] | 27 gnubiff | | 9 gnubik | | 19 gnucash | () | 6 gnuchess | | 11 gnulib | | 23 gnunet | | 1 gnunet-gtk | | 1 gold | | 7 gphoto2 | [] | 19 gprof | | 21 gramadoir | | 14 grep | [] | 31 grub | | 21 gsasl | [] | 19 gss | | 17 gst-plugins-bad | | 21 gst-plugins-base | | 27 gst-plugins-good | | 32 gst-plugins-ugly | | 34 gstreamer | [] | 32 gtick | | 19 gtkam | | 24 gtkspell | [] [] | 48 guix | | 2 guix-packages | | 0 gutenprint | | 15 hello | [] | 30 help2man | | 18 help2man-texi | | 5 hylafax | | 5 idutils | | 14 iso_15924 | [] | 23 iso_3166 | [] [] | 58 iso_3166_2 | | 9 iso_4217 | [] [] | 28 iso_639 | [] [] | 46 iso_639_3 | | 10 iso_639_5 | | 2 jwhois | [] | 20 kbd | | 17 klavaro | | 30 ld | [] | 15 leafpad | [] | 39 libc | [] | 24 libexif | | 10 libextractor | | 5 libgnutls | | 13 libgphoto2 | | 10 libgphoto2_port | [] | 19 libgsasl | | 18 libiconv | [] | 29 libidn | | 17 liferea | | 29 lilypond | | 11 lordsawar | | 3 lprng | | 3 lynx | | 19 m4 | [] | 22 mailfromd | | 4 mailutils | | 6 make | | 19 man-db | | 15 man-db-manpages | | 10 midi-instruments | [] | 43 minicom | [] | 17 mkisofs | | 13 myserver | | 9 nano | [] | 30 opcodes | | 12 parted | [] | 23 pies | | 4 pnmixer | | 9 popt | [] | 36 procps-ng | | 5 procps-ng-man | | 4 psmisc | [] | 22 pspp | | 13 pushover | | 6 pwdutils | | 8 pyspread | | 6 radius | | 9 recode | | 31 recutils | | 10 rpm | [] | 13 rush | | 10 sarg | | 4 sed | [] | 35 sharutils | | 13 shishi | | 7 skribilo | | 7 solfege | | 21 solfege-manual | | 9 spotmachine | | 11 sudo | | 26 sudoers | | 22 sysstat | | 23 tar | [] | 30 texinfo | | 17 texinfo_document | | 13 tigervnc | | 14 tin | [] | 7 tin-man | | 1 tracgoogleappsa... | [] | 22 trader | | 12 util-linux | | 13 ve | | 14 vice | | 1 vmm | | 3 vorbis-tools | | 13 wastesedge | | 3 wcd | | 8 wcd-man | | 3 wdiff | [] | 23 wget | | 21 wyslij-po | | 14 xboard | | 10 xdg-user-dirs | [] [] | 68 xkeyboard-config | [] | 28 +-------------+ 89 teams zh_HK zh_TW 166 domains 7 42 2809 Some counters in the preceding matrix are higher than the number of visible blocks let us expect. This is because a few extra PO files are used for implementing regional variants of languages, or language dialects. For a PO file in the matrix above to be effective, the package to which it applies should also have been internationalized and distributed as such by its maintainer. There might be an observable lag between the mere existence a PO file and its wide availability in a distribution. If Jun 2014 seems to be old, you may fetch a more recent copy of this 'ABOUT-NLS' file on most GNU archive sites. The most up-to-date matrix with full percentage details can be found at 'http://translationproject.org/extra/matrix.html'. 1.5 Using 'gettext' in new packages =================================== If you are writing a freely available program and want to internationalize it you are welcome to use GNU 'gettext' in your package. Of course you have to respect the GNU Lesser General Public License which covers the use of the GNU 'gettext' library. This means in particular that even non-free programs can use 'libintl' as a shared library, whereas only free software can use 'libintl' as a static library or use modified versions of 'libintl'. Once the sources are changed appropriately and the setup can handle the use of 'gettext' the only thing missing are the translations. The Free Translation Project is also available for packages which are not developed inside the GNU project. Therefore the information given above applies also for every other Free Software Project. Contact 'coordinator@translationproject.org' to make the '.pot' files available to the translation teams. gnomint-1.6.4/test-driver0000755000000000000000000001214415212761274014142 0ustar00rootroot#! /bin/sh # test-driver - basic testsuite driver script. scriptversion=2025-06-18.21; # UTC # Copyright (C) 2011-2025 Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . # Make unconditional expansion of undefined variables an error. This # helps a lot in preventing typo-related bugs. set -u usage_error () { echo "$0: $*" >&2 print_usage >&2 exit 2 } print_usage () { cat <. GNU Automake home page: . General help using GNU software: . END } test_name= # Used for reporting. log_file= # Where to save the output of the test script. trs_file= # Where to save the metadata of the test run. expect_failure=no color_tests=no collect_skipped_logs=yes enable_hard_errors=yes while test $# -gt 0; do case $1 in --help) print_usage; exit $?;; --version) echo "test-driver (GNU Automake) $scriptversion"; exit $?;; --test-name) test_name=$2; shift;; --log-file) log_file=$2; shift;; --trs-file) trs_file=$2; shift;; --color-tests) color_tests=$2; shift;; --collect-skipped-logs) collect_skipped_logs=$2; shift;; --expect-failure) expect_failure=$2; shift;; --enable-hard-errors) enable_hard_errors=$2; shift;; --) shift; break;; -*) usage_error "invalid option: '$1'";; *) break;; esac shift done missing_opts= test x"$test_name" = x && missing_opts="$missing_opts --test-name" test x"$log_file" = x && missing_opts="$missing_opts --log-file" test x"$trs_file" = x && missing_opts="$missing_opts --trs-file" if test x"$missing_opts" != x; then usage_error "the following mandatory options are missing:$missing_opts" fi if test $# -eq 0; then usage_error "missing argument" fi if test $color_tests = yes; then # Keep this in sync with 'lib/am/check.am:$(am__tty_colors)'. red='' # Red. grn='' # Green. lgn='' # Light green. blu='' # Blue. mgn='' # Magenta. std='' # No color. else red= grn= lgn= blu= mgn= std= fi do_exit='rm -f $log_file $trs_file; (exit $st); exit $st' trap "st=129; $do_exit" 1 trap "st=130; $do_exit" 2 trap "st=141; $do_exit" 13 trap "st=143; $do_exit" 15 # Test script is run here. We create the file first, then append to it, # to ameliorate tests themselves also writing to the log file. Our tests # don't, but others can (automake bug#35762). : >"$log_file" "$@" >>"$log_file" 2>&1 estatus=$? if test $enable_hard_errors = no && test $estatus -eq 99; then tweaked_estatus=1 else tweaked_estatus=$estatus fi case $tweaked_estatus:$expect_failure in 0:yes) col=$red res=XPASS recheck=yes gcopy=yes;; 0:*) col=$grn res=PASS recheck=no gcopy=no;; 77:*) col=$blu res=SKIP recheck=no gcopy=$collect_skipped_logs;; 99:*) col=$mgn res=ERROR recheck=yes gcopy=yes;; *:yes) col=$lgn res=XFAIL recheck=no gcopy=yes;; *:*) col=$red res=FAIL recheck=yes gcopy=yes;; esac # Report the test outcome and exit status in the logs, so that one can # know whether the test passed or failed simply by looking at the '.log' # file, without the need of also peaking into the corresponding '.trs' # file (automake bug#11814). echo "$res $test_name (exit status: $estatus)" >>"$log_file" # Report outcome to console. echo "${col}${res}${std}: $test_name" # Register the test result, and other relevant metadata. echo ":test-result: $res" > $trs_file echo ":global-test-result: $res" >> $trs_file echo ":recheck: $recheck" >> $trs_file echo ":copy-in-global-log: $gcopy" >> $trs_file # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp nil t) # time-stamp-start: "scriptversion=" # time-stamp-format: "%Y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: gnomint-1.6.4/Makefile.am0000644000000000000000000000241315212761266013777 0ustar00rootrootACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS} SUBDIRS = src po gui mime gconf tests DIST_SUBDIRS = src po gui mime gconf tests AM_CPPFLAGS = \ -I$(top_srcdir) EXTRA_DIST = \ AUTHORS \ BUGS \ MAINTAINERS \ NEWS \ README \ TODO \ intltool-extract.in \ intltool-merge.in \ intltool-update.in \ certs/davefx.pem \ certs/example-ca.gnomint \ packaging/arch/PKGBUILD.in \ packaging/debian/control \ packaging/debian/rules \ packaging/debian/changelog.in \ packaging/debian/source/format \ packaging/windows/Package.wxs \ packaging/windows/collect-files.sh \ packaging/windows/gnomint.ico pkgconfigdir=$(libdir)/pkgconfig pkgconfig_DATA = # to include gnomint.spec in the distro dist-hook: gnomint.spec @cp gnomint.spec $(distdir) ; \ if test -d "$(srcdir)/.git"; \ then \ echo Creating ChangeLog && \ ( cd "$(top_srcdir)" && \ echo '# Generated by Makefile. Do not edit.'; echo; \ $(top_srcdir)/missing --run git log --stat ) > ChangeLog.tmp \ && mv -f ChangeLog.tmp $(distdir)/ChangeLog \ || ( rm -f ChangeLog.tmp ; \ echo Failed to generate ChangeLog >&2 ); \ else \ echo A git clone is required to generate a ChangeLog >&2; \ fi DISTCLEANFILES = \ intltool-extract \ intltool-merge \ intltool-update \ po/.intltool-merge-cache.lock gnomint-1.6.4/mime/0000755000000000000000000000000015212761360012665 5ustar00rootrootgnomint-1.6.4/mime/gnomint.xml0000644000000000000000000000056615212761266015076 0ustar00rootroot gnoMint certificate database Base de datos de certificados de gnoMint gnomint-1.6.4/mime/Makefile.am0000644000000000000000000000012615212761266014725 0ustar00rootrootmimedir = $(datadir)/mime/packages mime_DATA = gnomint.xml EXTRA_DIST = $(mime_DATA) gnomint-1.6.4/mime/Makefile.in0000644000000000000000000003732715212761274014752 0ustar00rootroot# Makefile.in generated by automake 1.18.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2025 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) am__rm_f = rm -f $(am__rm_f_notfound) am__rm_rf = rm -rf $(am__rm_f_notfound) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = mime ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && echo $$files | $(am__xargs_n) 40 $(am__rm_f); }; \ } am__installdirs = "$(DESTDIR)$(mimedir)" DATA = $(mime_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GNOMINTCLI_CFLAGS = @GNOMINTCLI_CFLAGS@ GNOMINTCLI_LIBS = @GNOMINTCLI_LIBS@ GNOMINT_CFLAGS = @GNOMINT_CFLAGS@ GNOMINT_LIBS = @GNOMINT_LIBS@ GPGRT_CONFIG = @GPGRT_CONFIG@ GREP = @GREP@ GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBGCRYPT_CFLAGS = @LIBGCRYPT_CFLAGS@ LIBGCRYPT_CONFIG = @LIBGCRYPT_CONFIG@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ READLINE_LIBS = @READLINE_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SQLITE_CFLAGS = @SQLITE_CFLAGS@ SQLITE_LIBS = @SQLITE_LIBS@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ WINSOCK_LIBS = @WINSOCK_LIBS@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__rm_f_notfound = @am__rm_f_notfound@ am__tar = @am__tar@ am__untar = @am__untar@ am__xargs_n = @am__xargs_n@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ gsettingsschemadir = @gsettingsschemadir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ mimedir = $(datadir)/mime/packages mime_DATA = gnomint.xml EXTRA_DIST = $(mime_DATA) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign mime/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign mime/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-mimeDATA: $(mime_DATA) @$(NORMAL_INSTALL) @list='$(mime_DATA)'; test -n "$(mimedir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(mimedir)'"; \ $(MKDIR_P) "$(DESTDIR)$(mimedir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(mimedir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(mimedir)" || exit $$?; \ done uninstall-mimeDATA: @$(NORMAL_UNINSTALL) @list='$(mime_DATA)'; test -n "$(mimedir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(mimedir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(mimedir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -$(am__rm_f) $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-mimeDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-mimeDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ cscopelist-am ctags-am distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-mimeDATA install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags-am uninstall uninstall-am uninstall-mimeDATA .PRECIOUS: Makefile # 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. .NOEXPORT: # Tell GNU make to disable its built-in pattern rules. %:: %,v %:: RCS/%,v %:: RCS/% %:: s.% %:: SCCS/s.% gnomint-1.6.4/COPYING0000644000000000000000000010451315212761266013002 0ustar00rootroot GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . gnomint-1.6.4/ltmain.sh0000644000000000000000000122264715212761272013576 0ustar00rootroot#! /usr/bin/env sh ## DO NOT EDIT - This file generated from ./build-aux/ltmain.in ## by inline-source v2019-02-19.15 # libtool (GNU libtool) 2.5.4 # Provide generalized library-building support services. # Written by Gordon Matzigkeit , 1996 # Copyright (C) 1996-2019, 2021-2024 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # GNU Libtool is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . PROGRAM=libtool PACKAGE=libtool VERSION=2.5.4 package_revision=2.5.4 ## ------ ## ## Usage. ## ## ------ ## # Run './libtool --help' for help with using this script from the # command line. ## ------------------------------- ## ## User overridable command paths. ## ## ------------------------------- ## # After configure completes, it has a better idea of some of the # shell tools we need than the defaults used by the functions shared # with bootstrap, so set those here where they can still be over- # ridden by the user, but otherwise take precedence. : ${AUTOCONF="autoconf"} : ${AUTOMAKE="automake"} ## -------------------------- ## ## Source external libraries. ## ## -------------------------- ## # Much of our low-level functionality needs to be sourced from external # libraries, which are installed to $pkgauxdir. # Set a version string for this script. scriptversion=2019-02-19.15; # UTC # General shell script boiler plate, and helper functions. # Written by Gary V. Vaughan, 2004 # This is free software. There is NO warranty; not even for # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # # Copyright (C) 2004-2019, 2021, 2023-2024 Bootstrap Authors # # This file is dual licensed under the terms of the MIT license # , and GPL version 2 or later # . You must apply one of # these licenses when using or redistributing this software or any of # the files within it. See the URLs above, or the file `LICENSE` # included in the Bootstrap distribution for the full license texts. # Please report bugs or propose patches to: # ## ------ ## ## Usage. ## ## ------ ## # Evaluate this file near the top of your script to gain access to # the functions and variables defined here: # # . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh # # If you need to override any of the default environment variable # settings, do that before evaluating this file. ## -------------------- ## ## Shell normalisation. ## ## -------------------- ## # Some shells need a little help to be as Bourne compatible as possible. # Before doing anything else, make sure all that help has been provided! DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi # NLS nuisances: We save the old values in case they are required later. _G_user_locale= _G_safe_locale= for _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test set = \"\${$_G_var+set}\"; then save_$_G_var=\$$_G_var $_G_var=C export $_G_var _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\" _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\" fi" done # These NLS vars are set unconditionally (bootstrap issue #24). Unset those # in case the environment reset is needed later and the $save_* variant is not # defined (see the code above). LC_ALL=C LANGUAGE=C export LANGUAGE LC_ALL # Make sure IFS has a sensible default sp=' ' nl=' ' IFS="$sp $nl" # There are apparently some systems that use ';' as a PATH separator! if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # func_unset VAR # -------------- # Portably unset VAR. # In some shells, an 'unset VAR' statement leaves a non-zero return # status if VAR is already unset, which might be problematic if the # statement is used at the end of a function (thus poisoning its return # value) or when 'set -e' is active (causing even a spurious abort of # the script in this case). func_unset () { { eval $1=; (eval unset $1) >/dev/null 2>&1 && eval unset $1 || : ; } } # Make sure CDPATH doesn't cause `cd` commands to output the target dir. func_unset CDPATH # Make sure ${,E,F}GREP behave sanely. func_unset GREP_OPTIONS ## ------------------------- ## ## Locate command utilities. ## ## ------------------------- ## # func_executable_p FILE # ---------------------- # Check that FILE is an executable regular file. func_executable_p () { test -f "$1" && test -x "$1" } # func_path_progs PROGS_LIST CHECK_FUNC [PATH] # -------------------------------------------- # Search for either a program that responds to --version with output # containing "GNU", or else returned by CHECK_FUNC otherwise, by # trying all the directories in PATH with each of the elements of # PROGS_LIST. # # CHECK_FUNC should accept the path to a candidate program, and # set $func_check_prog_result if it truncates its output less than # $_G_path_prog_max characters. func_path_progs () { _G_progs_list=$1 _G_check_func=$2 _G_PATH=${3-"$PATH"} _G_path_prog_max=0 _G_path_prog_found=false _G_save_IFS=$IFS; IFS=${PATH_SEPARATOR-:} for _G_dir in $_G_PATH; do IFS=$_G_save_IFS test -z "$_G_dir" && _G_dir=. for _G_prog_name in $_G_progs_list; do for _exeext in '' .EXE; do _G_path_prog=$_G_dir/$_G_prog_name$_exeext func_executable_p "$_G_path_prog" || continue case `"$_G_path_prog" --version 2>&1` in *GNU*) func_path_progs_result=$_G_path_prog _G_path_prog_found=: ;; *) $_G_check_func $_G_path_prog func_path_progs_result=$func_check_prog_result ;; esac $_G_path_prog_found && break 3 done done done IFS=$_G_save_IFS test -z "$func_path_progs_result" && { echo "no acceptable sed could be found in \$PATH" >&2 exit 1 } } # We want to be able to use the functions in this file before configure # has figured out where the best binaries are kept, which means we have # to search for them ourselves - except when the results are already set # where we skip the searches. # Unless the user overrides by setting SED, search the path for either GNU # sed, or the sed that truncates its output the least. test -z "$SED" && { _G_sed_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for _G_i in 1 2 3 4 5 6 7; do _G_sed_script=$_G_sed_script$nl$_G_sed_script done echo "$_G_sed_script" 2>/dev/null | sed 99q >conftest.sed _G_sed_script= func_check_prog_sed () { _G_path_prog=$1 _G_count=0 printf 0123456789 >conftest.in while : do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo '' >> conftest.nl "$_G_path_prog" -f conftest.sed conftest.out 2>/dev/null || break diff conftest.out conftest.nl >/dev/null 2>&1 || break _G_count=`expr $_G_count + 1` if test "$_G_count" -gt "$_G_path_prog_max"; then # Best one so far, save it but keep looking for a better one func_check_prog_result=$_G_path_prog _G_path_prog_max=$_G_count fi # 10*(2^10) chars as input seems more than enough test 10 -lt "$_G_count" && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out } func_path_progs "sed gsed" func_check_prog_sed "$PATH:/usr/xpg4/bin" rm -f conftest.sed SED=$func_path_progs_result } # Unless the user overrides by setting GREP, search the path for either GNU # grep, or the grep that truncates its output the least. test -z "$GREP" && { func_check_prog_grep () { _G_path_prog=$1 _G_count=0 _G_path_prog_max=0 printf 0123456789 >conftest.in while : do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo 'GREP' >> conftest.nl "$_G_path_prog" -e 'GREP$' -e '-(cannot match)-' conftest.out 2>/dev/null || break diff conftest.out conftest.nl >/dev/null 2>&1 || break _G_count=`expr $_G_count + 1` if test "$_G_count" -gt "$_G_path_prog_max"; then # Best one so far, save it but keep looking for a better one func_check_prog_result=$_G_path_prog _G_path_prog_max=$_G_count fi # 10*(2^10) chars as input seems more than enough test 10 -lt "$_G_count" && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out } func_path_progs "grep ggrep" func_check_prog_grep "$PATH:/usr/xpg4/bin" GREP=$func_path_progs_result } ## ------------------------------- ## ## User overridable command paths. ## ## ------------------------------- ## # All uppercase variable names are used for environment variables. These # variables can be overridden by the user before calling a script that # uses them if a suitable command of that name is not already available # in the command search PATH. : ${CP="cp -f"} : ${ECHO="printf %s\n"} : ${EGREP="$GREP -E"} : ${FGREP="$GREP -F"} : ${LN_S="ln -s"} : ${MAKE="make"} : ${MKDIR="mkdir"} : ${MV="mv -f"} : ${RM="rm -f"} : ${SHELL="${CONFIG_SHELL-/bin/sh}"} ## -------------------- ## ## Useful sed snippets. ## ## -------------------- ## sed_dirname='s|/[^/]*$||' sed_basename='s|^.*/||' # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='s|\([`"$\\]\)|\\\1|g' # Same as above, but do not quote variable references. sed_double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution that turns a string into a regex matching for the # string literally. sed_make_literal_regex='s|[].[^$\\*\/]|\\&|g' # Sed substitution that converts a w32 file name or path # that contains forward slashes, into one that contains # (escaped) backslashes. A very naive implementation. sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' # Re-'\' parameter expansions in output of sed_double_quote_subst that # were '\'-ed in input to the same. If an odd number of '\' preceded a # '$' in input to sed_double_quote_subst, that '$' was protected from # expansion. Since each input '\' is now two '\'s, look for any number # of runs of four '\'s followed by two '\'s and then a '$'. '\' that '$'. _G_bs='\\' _G_bs2='\\\\' _G_bs4='\\\\\\\\' _G_dollar='\$' sed_double_backslash="\ s/$_G_bs4/&\\ /g s/^$_G_bs2$_G_dollar/$_G_bs&/ s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g s/\n//g" # require_check_ifs_backslash # --------------------------- # Check if we can use backslash as IFS='\' separator, and set # $check_ifs_backshlash_broken to ':' or 'false'. require_check_ifs_backslash=func_require_check_ifs_backslash func_require_check_ifs_backslash () { _G_save_IFS=$IFS IFS='\' _G_check_ifs_backshlash='a\\b' for _G_i in $_G_check_ifs_backshlash do case $_G_i in a) check_ifs_backshlash_broken=false ;; '') break ;; *) check_ifs_backshlash_broken=: break ;; esac done IFS=$_G_save_IFS require_check_ifs_backslash=: } ## ----------------- ## ## Global variables. ## ## ----------------- ## # Except for the global variables explicitly listed below, the following # functions in the '^func_' namespace, and the '^require_' namespace # variables initialised in the 'Resource management' section, sourcing # this file will not pollute your global namespace with anything # else. There's no portable way to scope variables in Bourne shell # though, so actually running these functions will sometimes place # results into a variable named after the function, and often use # temporary variables in the '^_G_' namespace. If you are careful to # avoid using those namespaces casually in your sourcing script, things # should continue to work as you expect. And, of course, you can freely # overwrite any of the functions or variables defined here before # calling anything to customize them. EXIT_SUCCESS=0 EXIT_FAILURE=1 EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. # Allow overriding, eg assuming that you follow the convention of # putting '$debug_cmd' at the start of all your functions, you can get # bash to show function call trace with: # # debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash your-script-name debug_cmd=${debug_cmd-":"} exit_cmd=: # By convention, finish your script with: # # exit $exit_status # # so that you can set exit_status to non-zero if you want to indicate # something went wrong during execution without actually bailing out at # the point of failure. exit_status=$EXIT_SUCCESS # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh # is ksh but when the shell is invoked as "sh" and the current value of # the _XPG environment variable is not equal to 1 (one), the special # positional parameter $0, within a function call, is the name of the # function. progpath=$0 # The name of this program. progname=`$ECHO "$progpath" |$SED "$sed_basename"` # Make sure we have an absolute progpath for reexecution: case $progpath in [\\/]*|[A-Za-z]:\\*) ;; *[\\/]*) progdir=`$ECHO "$progpath" |$SED "$sed_dirname"` progdir=`cd "$progdir" && pwd` progpath=$progdir/$progname ;; *) _G_IFS=$IFS IFS=${PATH_SEPARATOR-:} for progdir in $PATH; do IFS=$_G_IFS test -x "$progdir/$progname" && break done IFS=$_G_IFS test -n "$progdir" || progdir=`pwd` progpath=$progdir/$progname ;; esac ## ----------------- ## ## Standard options. ## ## ----------------- ## # The following options affect the operation of the functions defined # below, and should be set appropriately depending on run-time para- # meters passed on the command line. opt_dry_run=false opt_quiet=false opt_verbose=false # Categories 'all' and 'none' are always available. Append any others # you will pass as the first argument to func_warning from your own # code. warning_categories= # By default, display warnings according to 'opt_warning_types'. Set # 'warning_func' to ':' to elide all warnings, or func_fatal_error to # treat the next displayed warning as a fatal error. warning_func=func_warn_and_continue # Set to 'all' to display all warnings, 'none' to suppress all # warnings, or a space delimited list of some subset of # 'warning_categories' to display only the listed warnings. opt_warning_types=all ## -------------------- ## ## Resource management. ## ## -------------------- ## # This section contains definitions for functions that each ensure a # particular resource (a file, or a non-empty configuration variable for # example) is available, and if appropriate to extract default values # from pertinent package files. Call them using their associated # 'require_*' variable to ensure that they are executed, at most, once. # # It's entirely deliberate that calling these functions can set # variables that don't obey the namespace limitations obeyed by the rest # of this file, in order that that they be as useful as possible to # callers. # require_term_colors # ------------------- # Allow display of bold text on terminals that support it. require_term_colors=func_require_term_colors func_require_term_colors () { $debug_cmd test -t 1 && { # COLORTERM and USE_ANSI_COLORS environment variables take # precedence, because most terminfo databases neglect to describe # whether color sequences are supported. test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"} if test 1 = "$USE_ANSI_COLORS"; then # Standard ANSI escape sequences tc_reset='' tc_bold=''; tc_standout='' tc_red=''; tc_green='' tc_blue=''; tc_cyan='' else # Otherwise trust the terminfo database after all. test -n "`tput sgr0 2>/dev/null`" && { tc_reset=`tput sgr0` test -n "`tput bold 2>/dev/null`" && tc_bold=`tput bold` tc_standout=$tc_bold test -n "`tput smso 2>/dev/null`" && tc_standout=`tput smso` test -n "`tput setaf 1 2>/dev/null`" && tc_red=`tput setaf 1` test -n "`tput setaf 2 2>/dev/null`" && tc_green=`tput setaf 2` test -n "`tput setaf 4 2>/dev/null`" && tc_blue=`tput setaf 4` test -n "`tput setaf 5 2>/dev/null`" && tc_cyan=`tput setaf 5` } fi } require_term_colors=: } ## ----------------- ## ## Function library. ## ## ----------------- ## # This section contains a variety of useful functions to call in your # scripts. Take note of the portable wrappers for features provided by # some modern shells, which will fall back to slower equivalents on # less featureful shells. # func_append VAR VALUE # --------------------- # Append VALUE onto the existing contents of VAR. # We should try to minimise forks, especially on Windows where they are # unreasonably slow, so skip the feature probes when bash or zsh are # being used: if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then : ${_G_HAVE_ARITH_OP="yes"} : ${_G_HAVE_XSI_OPS="yes"} # The += operator was introduced in bash 3.1 case $BASH_VERSION in [12].* | 3.0 | 3.0*) ;; *) : ${_G_HAVE_PLUSEQ_OP="yes"} ;; esac fi # _G_HAVE_PLUSEQ_OP # Can be empty, in which case the shell is probed, "yes" if += is # usable or anything else if it does not work. test -z "$_G_HAVE_PLUSEQ_OP" \ && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \ && _G_HAVE_PLUSEQ_OP=yes if test yes = "$_G_HAVE_PLUSEQ_OP" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_append () { $debug_cmd eval "$1+=\$2" }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_append () { $debug_cmd eval "$1=\$$1\$2" } fi # func_append_quoted VAR VALUE # ---------------------------- # Quote VALUE and append to the end of shell variable VAR, separated # by a space. if test yes = "$_G_HAVE_PLUSEQ_OP"; then eval 'func_append_quoted () { $debug_cmd func_quote_arg pretty "$2" eval "$1+=\\ \$func_quote_arg_result" }' else func_append_quoted () { $debug_cmd func_quote_arg pretty "$2" eval "$1=\$$1\\ \$func_quote_arg_result" } fi # func_append_uniq VAR VALUE # -------------------------- # Append unique VALUE onto the existing contents of VAR, assuming # entries are delimited by the first character of VALUE. For example: # # func_append_uniq options " --another-option option-argument" # # will only append to $options if " --another-option option-argument " # is not already present somewhere in $options already (note spaces at # each end implied by leading space in second argument). func_append_uniq () { $debug_cmd eval _G_current_value='`$ECHO $'$1'`' _G_delim=`expr "$2" : '\(.\)'` case $_G_delim$_G_current_value$_G_delim in *"$2$_G_delim"*) ;; *) func_append "$@" ;; esac } # func_arith TERM... # ------------------ # Set func_arith_result to the result of evaluating TERMs. test -z "$_G_HAVE_ARITH_OP" \ && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \ && _G_HAVE_ARITH_OP=yes if test yes = "$_G_HAVE_ARITH_OP"; then eval 'func_arith () { $debug_cmd func_arith_result=$(( $* )) }' else func_arith () { $debug_cmd func_arith_result=`expr "$@"` } fi # func_basename FILE # ------------------ # Set func_basename_result to FILE with everything up to and including # the last / stripped. if test yes = "$_G_HAVE_XSI_OPS"; then # If this shell supports suffix pattern removal, then use it to avoid # forking. Hide the definitions single quotes in case the shell chokes # on unsupported syntax... _b='func_basename_result=${1##*/}' _d='case $1 in */*) func_dirname_result=${1%/*}$2 ;; * ) func_dirname_result=$3 ;; esac' else # ...otherwise fall back to using sed. _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`' _d='func_dirname_result=`$ECHO "$1" |$SED "$sed_dirname"` if test "X$func_dirname_result" = "X$1"; then func_dirname_result=$3 else func_append func_dirname_result "$2" fi' fi eval 'func_basename () { $debug_cmd '"$_b"' }' # func_dirname FILE APPEND NONDIR_REPLACEMENT # ------------------------------------------- # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. eval 'func_dirname () { $debug_cmd '"$_d"' }' # func_dirname_and_basename FILE APPEND NONDIR_REPLACEMENT # -------------------------------------------------------- # Perform func_basename and func_dirname in a single function # call: # dirname: Compute the dirname of FILE. If nonempty, # add APPEND to the result, otherwise set result # to NONDIR_REPLACEMENT. # value returned in "$func_dirname_result" # basename: Compute filename of FILE. # value returned in "$func_basename_result" # For efficiency, we do not delegate to the functions above but instead # duplicate the functionality here. eval 'func_dirname_and_basename () { $debug_cmd '"$_b"' '"$_d"' }' # func_echo ARG... # ---------------- # Echo program name prefixed message. func_echo () { $debug_cmd _G_message=$* func_echo_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_IFS $ECHO "$progname: $_G_line" done IFS=$func_echo_IFS } # func_echo_all ARG... # -------------------- # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } # func_echo_infix_1 INFIX ARG... # ------------------------------ # Echo program name, followed by INFIX on the first line, with any # additional lines not showing INFIX. func_echo_infix_1 () { $debug_cmd $require_term_colors _G_infix=$1; shift _G_indent=$_G_infix _G_prefix="$progname: $_G_infix: " _G_message=$* # Strip color escape sequences before counting printable length for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan" do test -n "$_G_tc" && { _G_esc_tc=`$ECHO "$_G_tc" | $SED "$sed_make_literal_regex"` _G_indent=`$ECHO "$_G_indent" | $SED "s|$_G_esc_tc||g"` } done _G_indent="$progname: "`echo "$_G_indent" | $SED 's|.| |g'`" " ## exclude from sc_prohibit_nested_quotes func_echo_infix_1_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_infix_1_IFS $ECHO "$_G_prefix$tc_bold$_G_line$tc_reset" >&2 _G_prefix=$_G_indent done IFS=$func_echo_infix_1_IFS } # func_error ARG... # ----------------- # Echo program name prefixed message to standard error. func_error () { $debug_cmd $require_term_colors func_echo_infix_1 " $tc_standout${tc_red}error$tc_reset" "$*" >&2 } # func_fatal_error ARG... # ----------------------- # Echo program name prefixed message to standard error, and exit. func_fatal_error () { $debug_cmd func_error "$*" exit $EXIT_FAILURE } # func_grep EXPRESSION FILENAME # ----------------------------- # Check whether EXPRESSION matches any line of FILENAME, without output. func_grep () { $debug_cmd $GREP "$1" "$2" >/dev/null 2>&1 } # func_len STRING # --------------- # Set func_len_result to the length of STRING. STRING may not # start with a hyphen. test -z "$_G_HAVE_XSI_OPS" \ && (eval 'x=a/b/c; test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ && _G_HAVE_XSI_OPS=yes if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_len () { $debug_cmd func_len_result=${#1} }' else func_len () { $debug_cmd func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` } fi # func_mkdir_p DIRECTORY-PATH # --------------------------- # Make sure the entire path to DIRECTORY-PATH is available. func_mkdir_p () { $debug_cmd _G_directory_path=$1 _G_dir_list= if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then # Protect directory names starting with '-' case $_G_directory_path in -*) _G_directory_path=./$_G_directory_path ;; esac # While some portion of DIR does not yet exist... while test ! -d "$_G_directory_path"; do # ...make a list in topmost first order. Use a colon delimited # list in case some portion of path contains whitespace. _G_dir_list=$_G_directory_path:$_G_dir_list # If the last portion added has no slash in it, the list is done case $_G_directory_path in */*) ;; *) break ;; esac # ...otherwise throw away the child directory and loop _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"` done _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'` func_mkdir_p_IFS=$IFS; IFS=: for _G_dir in $_G_dir_list; do IFS=$func_mkdir_p_IFS # mkdir can fail with a 'File exist' error if two processes # try to create one of the directories concurrently. Don't # stop in that case! $MKDIR "$_G_dir" 2>/dev/null || : done IFS=$func_mkdir_p_IFS # Bail out if we (or some other process) failed to create a directory. test -d "$_G_directory_path" || \ func_fatal_error "Failed to create '$1'" fi } # func_mktempdir [BASENAME] # ------------------------- # Make a temporary directory that won't clash with other running # libtool processes, and avoids race conditions if possible. If # given, BASENAME is the basename for that directory. func_mktempdir () { $debug_cmd _G_template=${TMPDIR-/tmp}/${1-$progname} if test : = "$opt_dry_run"; then # Return a directory name, but don't create it in dry-run mode _G_tmpdir=$_G_template-$$ else # If mktemp works, use that first and foremost _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null` if test ! -d "$_G_tmpdir"; then # Failing that, at least try and use $RANDOM to avoid a race _G_tmpdir=$_G_template-${RANDOM-0}$$ func_mktempdir_umask=`umask` umask 0077 $MKDIR "$_G_tmpdir" umask $func_mktempdir_umask fi # If we're not in dry-run mode, bomb out on failure test -d "$_G_tmpdir" || \ func_fatal_error "cannot create temporary directory '$_G_tmpdir'" fi $ECHO "$_G_tmpdir" } # func_normal_abspath PATH # ------------------------ # Remove doubled-up and trailing slashes, "." path components, # and cancel out any ".." path components in PATH after making # it an absolute path. func_normal_abspath () { $debug_cmd # These SED scripts presuppose an absolute path with a trailing slash. _G_pathcar='s|^/\([^/]*\).*$|\1|' _G_pathcdr='s|^/[^/]*||' _G_removedotparts=':dotsl s|/\./|/|g t dotsl s|/\.$|/|' _G_collapseslashes='s|/\{1,\}|/|g' _G_finalslash='s|/*$|/|' # Start from root dir and reassemble the path. func_normal_abspath_result= func_normal_abspath_tpath=$1 func_normal_abspath_altnamespace= case $func_normal_abspath_tpath in "") # Empty path, that just means $cwd. func_stripname '' '/' "`pwd`" func_normal_abspath_result=$func_stripname_result return ;; # The next three entries are used to spot a run of precisely # two leading slashes without using negated character classes; # we take advantage of case's first-match behaviour. ///*) # Unusual form of absolute path, do nothing. ;; //*) # Not necessarily an ordinary path; POSIX reserves leading '//' # and for example Cygwin uses it to access remote file shares # over CIFS/SMB, so we conserve a leading double slash if found. func_normal_abspath_altnamespace=/ ;; /*) # Absolute path, do nothing. ;; *) # Relative path, prepend $cwd. func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath ;; esac # Cancel out all the simple stuff to save iterations. We also want # the path to end with a slash for ease of parsing, so make sure # there is one (and only one) here. func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"` while :; do # Processed it all yet? if test / = "$func_normal_abspath_tpath"; then # If we ascended to the root using ".." the result may be empty now. if test -z "$func_normal_abspath_result"; then func_normal_abspath_result=/ fi break fi func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_pathcar"` func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_pathcdr"` # Figure out what to do with it case $func_normal_abspath_tcomponent in "") # Trailing empty path component, ignore it. ;; ..) # Parent dir; strip last assembled component from result. func_dirname "$func_normal_abspath_result" func_normal_abspath_result=$func_dirname_result ;; *) # Actual path component, append it. func_append func_normal_abspath_result "/$func_normal_abspath_tcomponent" ;; esac done # Restore leading double-slash if one was found on entry. func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result } # func_notquiet ARG... # -------------------- # Echo program name prefixed message only when not in quiet mode. func_notquiet () { $debug_cmd $opt_quiet || func_echo ${1+"$@"} # A bug in bash halts the script if the last line of a function # fails when set -e is in force, so we need another command to # work around that: : } # func_relative_path SRCDIR DSTDIR # -------------------------------- # Set func_relative_path_result to the relative path from SRCDIR to DSTDIR. func_relative_path () { $debug_cmd func_relative_path_result= func_normal_abspath "$1" func_relative_path_tlibdir=$func_normal_abspath_result func_normal_abspath "$2" func_relative_path_tbindir=$func_normal_abspath_result # Ascend the tree starting from libdir while :; do # check if we have found a prefix of bindir case $func_relative_path_tbindir in $func_relative_path_tlibdir) # found an exact match func_relative_path_tcancelled= break ;; $func_relative_path_tlibdir*) # found a matching prefix func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" func_relative_path_tcancelled=$func_stripname_result if test -z "$func_relative_path_result"; then func_relative_path_result=. fi break ;; *) func_dirname $func_relative_path_tlibdir func_relative_path_tlibdir=$func_dirname_result if test -z "$func_relative_path_tlibdir"; then # Have to descend all the way to the root! func_relative_path_result=../$func_relative_path_result func_relative_path_tcancelled=$func_relative_path_tbindir break fi func_relative_path_result=../$func_relative_path_result ;; esac done # Now calculate path; take care to avoid doubling-up slashes. func_stripname '' '/' "$func_relative_path_result" func_relative_path_result=$func_stripname_result func_stripname '/' '/' "$func_relative_path_tcancelled" if test -n "$func_stripname_result"; then func_append func_relative_path_result "/$func_stripname_result" fi # Normalisation. If bindir is libdir, return '.' else relative path. if test -n "$func_relative_path_result"; then func_stripname './' '' "$func_relative_path_result" func_relative_path_result=$func_stripname_result fi test -n "$func_relative_path_result" || func_relative_path_result=. : } # func_quote_portable EVAL ARG # ---------------------------- # Internal function to portably implement func_quote_arg. Note that we still # keep attention to performance here so we as much as possible try to avoid # calling sed binary (so far O(N) complexity as long as func_append is O(1)). func_quote_portable () { $debug_cmd $require_check_ifs_backslash func_quote_portable_result=$2 # one-time-loop (easy break) while true do if $1; then func_quote_portable_result=`$ECHO "$2" | $SED \ -e "$sed_double_quote_subst" -e "$sed_double_backslash"` break fi # Quote for eval. case $func_quote_portable_result in *[\\\`\"\$]*) # Fallback to sed for $func_check_bs_ifs_broken=:, or when the string # contains the shell wildcard characters. case $check_ifs_backshlash_broken$func_quote_portable_result in :*|*[\[\*\?]*) func_quote_portable_result=`$ECHO "$func_quote_portable_result" \ | $SED "$sed_quote_subst"` break ;; esac func_quote_portable_old_IFS=$IFS for _G_char in '\' '`' '"' '$' do # STATE($1) PREV($2) SEPARATOR($3) set start "" "" func_quote_portable_result=dummy"$_G_char$func_quote_portable_result$_G_char"dummy IFS=$_G_char for _G_part in $func_quote_portable_result do case $1 in quote) func_append func_quote_portable_result "$3$2" set quote "$_G_part" "\\$_G_char" ;; start) set first "" "" func_quote_portable_result= ;; first) set quote "$_G_part" "" ;; esac done done IFS=$func_quote_portable_old_IFS ;; *) ;; esac break done func_quote_portable_unquoted_result=$func_quote_portable_result case $func_quote_portable_result in # double-quote args containing shell metacharacters to delay # word splitting, command substitution and variable expansion # for a subsequent eval. # many bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") func_quote_portable_result=\"$func_quote_portable_result\" ;; esac } # func_quotefast_eval ARG # ----------------------- # Quote one ARG (internal). This is equivalent to 'func_quote_arg eval ARG', # but optimized for speed. Result is stored in $func_quotefast_eval. if test xyes = `(x=; printf -v x %q yes; echo x"$x") 2>/dev/null`; then printf -v _GL_test_printf_tilde %q '~' if test '\~' = "$_GL_test_printf_tilde"; then func_quotefast_eval () { printf -v func_quotefast_eval_result %q "$1" } else # Broken older Bash implementations. Make those faster too if possible. func_quotefast_eval () { case $1 in '~'*) func_quote_portable false "$1" func_quotefast_eval_result=$func_quote_portable_result ;; *) printf -v func_quotefast_eval_result %q "$1" ;; esac } fi else func_quotefast_eval () { func_quote_portable false "$1" func_quotefast_eval_result=$func_quote_portable_result } fi # func_quote_arg MODEs ARG # ------------------------ # Quote one ARG to be evaled later. MODEs argument may contain zero or more # specifiers listed below separated by ',' character. This function returns two # values: # i) func_quote_arg_result # double-quoted (when needed), suitable for a subsequent eval # ii) func_quote_arg_unquoted_result # has all characters that are still active within double # quotes backslashified. Available only if 'unquoted' is specified. # # Available modes: # ---------------- # 'eval' (default) # - escape shell special characters # 'expand' # - the same as 'eval'; but do not quote variable references # 'pretty' # - request aesthetic output, i.e. '"a b"' instead of 'a\ b'. This might # be used later in func_quote to get output like: 'echo "a b"' instead # of 'echo a\ b'. This is slower than default on some shells. # 'unquoted' # - produce also $func_quote_arg_unquoted_result which does not contain # wrapping double-quotes. # # Examples for 'func_quote_arg pretty,unquoted string': # # string | *_result | *_unquoted_result # ------------+-----------------------+------------------- # " | \" | \" # a b | "a b" | a b # "a b" | "\"a b\"" | \"a b\" # * | "*" | * # z="${x-$y}" | "z=\"\${x-\$y}\"" | z=\"\${x-\$y}\" # # Examples for 'func_quote_arg pretty,unquoted,expand string': # # string | *_result | *_unquoted_result # --------------+---------------------+-------------------- # z="${x-$y}" | "z=\"${x-$y}\"" | z=\"${x-$y}\" func_quote_arg () { _G_quote_expand=false case ,$1, in *,expand,*) _G_quote_expand=: ;; esac case ,$1, in *,pretty,*|*,expand,*|*,unquoted,*) func_quote_portable $_G_quote_expand "$2" func_quote_arg_result=$func_quote_portable_result func_quote_arg_unquoted_result=$func_quote_portable_unquoted_result ;; *) # Faster quote-for-eval for some shells. func_quotefast_eval "$2" func_quote_arg_result=$func_quotefast_eval_result ;; esac } # func_quote MODEs ARGs... # ------------------------ # Quote all ARGs to be evaled later and join them into single command. See # func_quote_arg's description for more info. func_quote () { $debug_cmd _G_func_quote_mode=$1 ; shift func_quote_result= while test 0 -lt $#; do func_quote_arg "$_G_func_quote_mode" "$1" if test -n "$func_quote_result"; then func_append func_quote_result " $func_quote_arg_result" else func_append func_quote_result "$func_quote_arg_result" fi shift done } # func_stripname PREFIX SUFFIX NAME # --------------------------------- # strip PREFIX and SUFFIX from NAME, and store in func_stripname_result. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_stripname () { $debug_cmd # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are # positional parameters, so assign one to ordinary variable first. func_stripname_result=$3 func_stripname_result=${func_stripname_result#"$1"} func_stripname_result=${func_stripname_result%"$2"} }' else func_stripname () { $debug_cmd case $2 in .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;; *) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;; esac } fi # func_show_eval CMD [FAIL_EXP] # ----------------------------- # Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. func_show_eval () { $debug_cmd _G_cmd=$1 _G_fail_exp=${2-':'} func_quote_arg pretty,expand "$_G_cmd" eval "func_notquiet $func_quote_arg_result" $opt_dry_run || { eval "$_G_cmd" _G_status=$? if test 0 -ne "$_G_status"; then eval "(exit $_G_status); $_G_fail_exp" fi } } # func_show_eval_locale CMD [FAIL_EXP] # ------------------------------------ # Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. Use the saved locale for evaluation. func_show_eval_locale () { $debug_cmd _G_cmd=$1 _G_fail_exp=${2-':'} $opt_quiet || { func_quote_arg expand,pretty "$_G_cmd" eval "func_echo $func_quote_arg_result" } $opt_dry_run || { eval "$_G_user_locale $_G_cmd" _G_status=$? eval "$_G_safe_locale" if test 0 -ne "$_G_status"; then eval "(exit $_G_status); $_G_fail_exp" fi } } # func_tr_sh # ---------- # Turn $1 into a string suitable for a shell variable name. # Result is stored in $func_tr_sh_result. All characters # not in the set a-zA-Z0-9_ are replaced with '_'. Further, # if $1 begins with a digit, a '_' is prepended as well. func_tr_sh () { $debug_cmd case $1 in [0-9]* | *[!a-zA-Z0-9_]*) func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'` ;; * ) func_tr_sh_result=$1 ;; esac } # func_verbose ARG... # ------------------- # Echo program name prefixed message in verbose mode only. func_verbose () { $debug_cmd $opt_verbose && func_echo "$*" : } # func_warn_and_continue ARG... # ----------------------------- # Echo program name prefixed warning message to standard error. func_warn_and_continue () { $debug_cmd $require_term_colors func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2 } # func_warning CATEGORY ARG... # ---------------------------- # Echo program name prefixed warning message to standard error. Warning # messages can be filtered according to CATEGORY, where this function # elides messages where CATEGORY is not listed in the global variable # 'opt_warning_types'. func_warning () { $debug_cmd # CATEGORY must be in the warning_categories list! case " $warning_categories " in *" $1 "*) ;; *) func_internal_error "invalid warning category '$1'" ;; esac _G_category=$1 shift case " $opt_warning_types " in *" $_G_category "*) $warning_func ${1+"$@"} ;; esac } # func_sort_ver VER1 VER2 # ----------------------- # 'sort -V' is not generally available. # Note this deviates from the version comparison in automake # in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a # but this should suffice as we won't be specifying old # version formats or redundant trailing .0 in bootstrap.conf. # If we did want full compatibility then we should probably # use m4_version_compare from autoconf. func_sort_ver () { $debug_cmd printf '%s\n%s\n' "$1" "$2" \ | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n -k 5,5n -k 6,6n -k 7,7n -k 8,8n -k 9,9n } # func_lt_ver PREV CURR # --------------------- # Return true if PREV and CURR are in the correct order according to # func_sort_ver, otherwise false. Use it like this: # # func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "..." func_lt_ver () { $debug_cmd test "x$1" = x`func_sort_ver "$1" "$2" | $SED 1q` } # Local variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" # time-stamp-time-zone: "UTC" # End: #! /bin/sh # A portable, pluggable option parser for Bourne shell. # Written by Gary V. Vaughan, 2010 # This is free software. There is NO warranty; not even for # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # # Copyright (C) 2010-2019, 2021, 2023-2024 Bootstrap Authors # # This file is dual licensed under the terms of the MIT license # , and GPL version 2 or later # . You must apply one of # these licenses when using or redistributing this software or any of # the files within it. See the URLs above, or the file `LICENSE` # included in the Bootstrap distribution for the full license texts. # Please report bugs or propose patches to: # # Set a version string for this script. scriptversion=2019-02-19.15; # UTC ## ------ ## ## Usage. ## ## ------ ## # This file is a library for parsing options in your shell scripts along # with assorted other useful supporting features that you can make use # of too. # # For the simplest scripts you might need only: # # #!/bin/sh # . relative/path/to/funclib.sh # . relative/path/to/options-parser # scriptversion=1.0 # func_options ${1+"$@"} # eval set dummy "$func_options_result"; shift # ...rest of your script... # # In order for the '--version' option to work, you will need to have a # suitably formatted comment like the one at the top of this file # starting with '# Written by ' and ending with '# Copyright'. # # For '-h' and '--help' to work, you will also need a one line # description of your script's purpose in a comment directly above the # '# Written by ' line, like the one at the top of this file. # # The default options also support '--debug', which will turn on shell # execution tracing (see the comment above debug_cmd below for another # use), and '--verbose' and the func_verbose function to allow your script # to display verbose messages only when your user has specified # '--verbose'. # # After sourcing this file, you can plug in processing for additional # options by amending the variables from the 'Configuration' section # below, and following the instructions in the 'Option parsing' # section further down. ## -------------- ## ## Configuration. ## ## -------------- ## # You should override these variables in your script after sourcing this # file so that they reflect the customisations you have added to the # option parser. # The usage line for option parsing errors and the start of '-h' and # '--help' output messages. You can embed shell variables for delayed # expansion at the time the message is displayed, but you will need to # quote other shell meta-characters carefully to prevent them being # expanded when the contents are evaled. usage='$progpath [OPTION]...' # Short help message in response to '-h' and '--help'. Add to this or # override it after sourcing this library to reflect the full set of # options your script accepts. usage_message="\ --debug enable verbose shell tracing -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] -v, --verbose verbosely report processing --version print version information and exit -h, --help print short or long help message and exit " # Additional text appended to 'usage_message' in response to '--help'. long_help_message=" Warning categories include: 'all' show all warnings 'none' turn off all the warnings 'error' warnings are treated as fatal errors" # Help message printed before fatal option parsing errors. fatal_help="Try '\$progname --help' for more information." ## ------------------------- ## ## Hook function management. ## ## ------------------------- ## # This section contains functions for adding, removing, and running hooks # in the main code. A hook is just a list of function names that can be # run in order later on. # func_hookable FUNC_NAME # ----------------------- # Declare that FUNC_NAME will run hooks added with # 'func_add_hook FUNC_NAME ...'. func_hookable () { $debug_cmd func_append hookable_fns " $1" } # func_add_hook FUNC_NAME HOOK_FUNC # --------------------------------- # Request that FUNC_NAME call HOOK_FUNC before it returns. FUNC_NAME must # first have been declared "hookable" by a call to 'func_hookable'. func_add_hook () { $debug_cmd case " $hookable_fns " in *" $1 "*) ;; *) func_fatal_error "'$1' does not accept hook functions." ;; esac eval func_append ${1}_hooks '" $2"' } # func_remove_hook FUNC_NAME HOOK_FUNC # ------------------------------------ # Remove HOOK_FUNC from the list of hook functions to be called by # FUNC_NAME. func_remove_hook () { $debug_cmd eval ${1}_hooks='`$ECHO "\$'$1'_hooks" |$SED "s| '$2'||"`' } # func_propagate_result FUNC_NAME_A FUNC_NAME_B # --------------------------------------------- # If the *_result variable of FUNC_NAME_A _is set_, assign its value to # *_result variable of FUNC_NAME_B. func_propagate_result () { $debug_cmd func_propagate_result_result=: if eval "test \"\${${1}_result+set}\" = set" then eval "${2}_result=\$${1}_result" else func_propagate_result_result=false fi } # func_run_hooks FUNC_NAME [ARG]... # --------------------------------- # Run all hook functions registered to FUNC_NAME. # It's assumed that the list of hook functions contains nothing more # than a whitespace-delimited list of legal shell function names, and # no effort is wasted trying to catch shell meta-characters or preserve # whitespace. func_run_hooks () { $debug_cmd case " $hookable_fns " in *" $1 "*) ;; *) func_fatal_error "'$1' does not support hook functions." ;; esac eval _G_hook_fns=\$$1_hooks; shift for _G_hook in $_G_hook_fns; do func_unset "${_G_hook}_result" eval $_G_hook '${1+"$@"}' func_propagate_result $_G_hook func_run_hooks if $func_propagate_result_result; then eval set dummy "$func_run_hooks_result"; shift fi done } ## --------------- ## ## Option parsing. ## ## --------------- ## # In order to add your own option parsing hooks, you must accept the # full positional parameter list from your hook function. You may remove # or edit any options that you action, and then pass back the remaining # unprocessed options in '_result', escaped # suitably for 'eval'. # # The '_result' variable is automatically unset # before your hook gets called; for best performance, only set the # *_result variable when necessary (i.e. don't call the 'func_quote' # function unnecessarily because it can be an expensive operation on some # machines). # # Like this: # # my_options_prep () # { # $debug_cmd # # # Extend the existing usage message. # usage_message=$usage_message' # -s, --silent don'\''t print informational messages # ' # # No change in '$@' (ignored completely by this hook). Leave # # my_options_prep_result variable intact. # } # func_add_hook func_options_prep my_options_prep # # # my_silent_option () # { # $debug_cmd # # args_changed=false # # # Note that, for efficiency, we parse as many options as we can # # recognise in a loop before passing the remainder back to the # # caller on the first unrecognised argument we encounter. # while test $# -gt 0; do # opt=$1; shift # case $opt in # --silent|-s) opt_silent=: # args_changed=: # ;; # # Separate non-argument short options: # -s*) func_split_short_opt "$_G_opt" # set dummy "$func_split_short_opt_name" \ # "-$func_split_short_opt_arg" ${1+"$@"} # shift # args_changed=: # ;; # *) # Make sure the first unrecognised option "$_G_opt" # # is added back to "$@" in case we need it later, # # if $args_changed was set to 'true'. # set dummy "$_G_opt" ${1+"$@"}; shift; break ;; # esac # done # # # Only call 'func_quote' here if we processed at least one argument. # if $args_changed; then # func_quote eval ${1+"$@"} # my_silent_option_result=$func_quote_result # fi # } # func_add_hook func_parse_options my_silent_option # # # my_option_validation () # { # $debug_cmd # # $opt_silent && $opt_verbose && func_fatal_help "\ # '--silent' and '--verbose' options are mutually exclusive." # } # func_add_hook func_validate_options my_option_validation # # You'll also need to manually amend $usage_message to reflect the extra # options you parse. It's preferable to append if you can, so that # multiple option parsing hooks can be added safely. # func_options_finish [ARG]... # ---------------------------- # Finishing the option parse loop (call 'func_options' hooks ATM). func_options_finish () { $debug_cmd func_run_hooks func_options ${1+"$@"} func_propagate_result func_run_hooks func_options_finish } # func_options [ARG]... # --------------------- # All the functions called inside func_options are hookable. See the # individual implementations for details. func_hookable func_options func_options () { $debug_cmd _G_options_quoted=false for my_func in options_prep parse_options validate_options options_finish do func_unset func_${my_func}_result func_unset func_run_hooks_result eval func_$my_func '${1+"$@"}' func_propagate_result func_$my_func func_options if $func_propagate_result_result; then eval set dummy "$func_options_result"; shift _G_options_quoted=: fi done $_G_options_quoted || { # As we (func_options) are top-level options-parser function and # nobody quoted "$@" for us yet, we need to do it explicitly for # caller. func_quote eval ${1+"$@"} func_options_result=$func_quote_result } } # func_options_prep [ARG]... # -------------------------- # All initialisations required before starting the option parse loop. # Note that when calling hook functions, we pass through the list of # positional parameters. If a hook function modifies that list, and # needs to propagate that back to rest of this script, then the complete # modified list must be put in 'func_run_hooks_result' before returning. func_hookable func_options_prep func_options_prep () { $debug_cmd # Option defaults: opt_verbose=false opt_warning_types= func_run_hooks func_options_prep ${1+"$@"} func_propagate_result func_run_hooks func_options_prep } # func_parse_options [ARG]... # --------------------------- # The main option parsing loop. func_hookable func_parse_options func_parse_options () { $debug_cmd _G_parse_options_requote=false # this just eases exit handling while test $# -gt 0; do # Defer to hook functions for initial option parsing, so they # get priority in the event of reusing an option name. func_run_hooks func_parse_options ${1+"$@"} func_propagate_result func_run_hooks func_parse_options if $func_propagate_result_result; then eval set dummy "$func_parse_options_result"; shift # Even though we may have changed "$@", we passed the "$@" array # down into the hook and it quoted it for us (because we are in # this if-branch). No need to quote it again. _G_parse_options_requote=false fi # Break out of the loop if we already parsed every option. test $# -gt 0 || break # We expect that one of the options parsed in this function matches # and thus we remove _G_opt from "$@" and need to re-quote. _G_match_parse_options=: _G_opt=$1 shift case $_G_opt in --debug|-x) debug_cmd='set -x' func_echo "enabling shell trace mode" >&2 $debug_cmd ;; --no-warnings|--no-warning|--no-warn) set dummy --warnings none ${1+"$@"} shift ;; --warnings|--warning|-W) if test $# = 0 && func_missing_arg $_G_opt; then _G_parse_options_requote=: break fi case " $warning_categories $1" in *" $1 "*) # trailing space prevents matching last $1 above func_append_uniq opt_warning_types " $1" ;; *all) opt_warning_types=$warning_categories ;; *none) opt_warning_types=none warning_func=: ;; *error) opt_warning_types=$warning_categories warning_func=func_fatal_error ;; *) func_fatal_error \ "unsupported warning category: '$1'" ;; esac shift ;; --verbose|-v) opt_verbose=: ;; --version) func_version ;; -\?|-h) func_usage ;; --help) func_help ;; # Separate optargs to long options (plugins may need this): --*=*) func_split_equals "$_G_opt" set dummy "$func_split_equals_lhs" \ "$func_split_equals_rhs" ${1+"$@"} shift ;; # Separate optargs to short options: -W*) func_split_short_opt "$_G_opt" set dummy "$func_split_short_opt_name" \ "$func_split_short_opt_arg" ${1+"$@"} shift ;; # Separate non-argument short options: -\?*|-h*|-v*|-x*) func_split_short_opt "$_G_opt" set dummy "$func_split_short_opt_name" \ "-$func_split_short_opt_arg" ${1+"$@"} shift ;; --) _G_parse_options_requote=: ; break ;; -*) func_fatal_help "unrecognised option: '$_G_opt'" ;; *) set dummy "$_G_opt" ${1+"$@"}; shift _G_match_parse_options=false break ;; esac if $_G_match_parse_options; then _G_parse_options_requote=: fi done if $_G_parse_options_requote; then # save modified positional parameters for caller func_quote eval ${1+"$@"} func_parse_options_result=$func_quote_result fi } # func_validate_options [ARG]... # ------------------------------ # Perform any sanity checks on option settings and/or unconsumed # arguments. func_hookable func_validate_options func_validate_options () { $debug_cmd # Display all warnings if -W was not given. test -n "$opt_warning_types" || opt_warning_types=" $warning_categories" func_run_hooks func_validate_options ${1+"$@"} func_propagate_result func_run_hooks func_validate_options # Bail if the options were screwed! $exit_cmd $EXIT_FAILURE } ## ----------------- ## ## Helper functions. ## ## ----------------- ## # This section contains the helper functions used by the rest of the # hookable option parser framework in ascii-betical order. # func_fatal_help ARG... # ---------------------- # Echo program name prefixed message to standard error, followed by # a help hint, and exit. func_fatal_help () { $debug_cmd eval \$ECHO \""Usage: $usage"\" eval \$ECHO \""$fatal_help"\" func_error ${1+"$@"} exit $EXIT_FAILURE } # func_help # --------- # Echo long help message to standard output and exit. func_help () { $debug_cmd func_usage_message $ECHO "$long_help_message" exit 0 } # func_missing_arg ARGNAME # ------------------------ # Echo program name prefixed message to standard error and set global # exit_cmd. func_missing_arg () { $debug_cmd func_error "Missing argument for '$1'." exit_cmd=exit } # func_split_equals STRING # ------------------------ # Set func_split_equals_lhs and func_split_equals_rhs shell variables # after splitting STRING at the '=' sign. test -z "$_G_HAVE_XSI_OPS" \ && (eval 'x=a/b/c; test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ && _G_HAVE_XSI_OPS=yes if test yes = "$_G_HAVE_XSI_OPS" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_split_equals () { $debug_cmd func_split_equals_lhs=${1%%=*} func_split_equals_rhs=${1#*=} if test "x$func_split_equals_lhs" = "x$1"; then func_split_equals_rhs= fi }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_split_equals () { $debug_cmd func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'` func_split_equals_rhs= test "x$func_split_equals_lhs=" = "x$1" \ || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'` } fi #func_split_equals # func_split_short_opt SHORTOPT # ----------------------------- # Set func_split_short_opt_name and func_split_short_opt_arg shell # variables after splitting SHORTOPT after the 2nd character. if test yes = "$_G_HAVE_XSI_OPS" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_split_short_opt () { $debug_cmd func_split_short_opt_arg=${1#??} func_split_short_opt_name=${1%"$func_split_short_opt_arg"} }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_split_short_opt () { $debug_cmd func_split_short_opt_name=`expr "x$1" : 'x\(-.\)'` func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'` } fi #func_split_short_opt # func_usage # ---------- # Echo short help message to standard output and exit. func_usage () { $debug_cmd func_usage_message $ECHO "Run '$progname --help |${PAGER-more}' for full usage" exit 0 } # func_usage_message # ------------------ # Echo short help message to standard output. func_usage_message () { $debug_cmd eval \$ECHO \""Usage: $usage"\" echo $SED -n 's|^# || /^Written by/{ x;p;x } h /^Written by/q' < "$progpath" echo eval \$ECHO \""$usage_message"\" } # func_version # ------------ # Echo version message to standard output and exit. # The version message is extracted from the calling file's header # comments, with leading '# ' stripped: # 1. First display the progname and version # 2. Followed by the header comment line matching /^# Written by / # 3. Then a blank line followed by the first following line matching # /^# Copyright / # 4. Immediately followed by any lines between the previous matches, # except lines preceding the intervening completely blank line. # For example, see the header comments of this file. func_version () { $debug_cmd printf '%s\n' "$progname $scriptversion" $SED -n ' /^# Written by /!b s|^# ||; p; n :fwd2blnk /./ { n b fwd2blnk } p; n :holdwrnt s|^# || s|^# *$|| /^Copyright /!{ /./H n b holdwrnt } s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2| G s|\(\n\)\n*|\1|g p; q' < "$progpath" exit $? } # Local variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-pattern: "30/scriptversion=%:y-%02m-%02d.%02H; # UTC" # time-stamp-time-zone: "UTC" # End: # Set a version string. scriptversion='(GNU libtool) 2.5.4' # func_version # ------------ # Echo version message to standard output and exit. func_version () { $debug_cmd year=`date +%Y` cat < This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Originally written by Gordon Matzigkeit, 1996 (See AUTHORS for complete contributor listing) EOF exit $? } # func_echo ARG... # ---------------- # Libtool also displays the current mode in messages, so override # funclib.sh func_echo with this custom definition. func_echo () { $debug_cmd _G_message=$* func_echo_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_IFS $ECHO "$progname${opt_mode+: $opt_mode}: $_G_line" done IFS=$func_echo_IFS } ## ---------------- ## ## Options parsing. ## ## ---------------- ## # Hook in the functions to make sure our own options are parsed during # the option parsing loop. usage='$progpath [OPTION]... [MODE-ARG]...' # Short help message in response to '-h'. usage_message="Options: --config show all configuration variables --debug enable verbose shell tracing -n, --dry-run display commands without modifying any files --features display basic configuration information --finish use operation '--mode=finish' --mode=MODE use operation mode MODE --no-finish don't update shared library cache --no-quiet, --no-silent print default informational messages --no-warnings equivalent to '-Wnone' --preserve-dup-deps don't remove duplicate dependency libraries --quiet, --silent don't print informational messages --reorder-cache=DIRS reorder shared library cache for preferred DIRS --tag=TAG use configuration variables from tag TAG -v, --verbose print more informational messages than default --version print version information -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] -h, --help, --help-all print short, long, or detailed help message " # Additional text appended to 'usage_message' in response to '--help'. func_help () { $debug_cmd func_usage_message $ECHO "$long_help_message MODE must be one of the following: clean remove files from the build directory compile compile a source file into a libtool object execute automatically set library path, then run a program finish complete the installation of libtool libraries install install libraries or executables link create a library or an executable uninstall remove libraries from an installed directory MODE-ARGS vary depending on the MODE. When passed as first option, '--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that. Try '$progname --help --mode=MODE' for a more detailed description of MODE. When reporting a bug, please describe a test case to reproduce it and include the following information: host-triplet: $host shell: $SHELL compiler: $LTCC compiler flags: $LTCFLAGS linker: $LD (gnu? $with_gnu_ld) version: $progname $scriptversion automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q` autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q` Report bugs to . GNU libtool home page: . General help using GNU software: ." exit 0 } # func_lo2o OBJECT-NAME # --------------------- # Transform OBJECT-NAME from a '.lo' suffix to the platform specific # object suffix. lo2o=s/\\.lo\$/.$objext/ o2lo=s/\\.$objext\$/.lo/ if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_lo2o () { case $1 in *.lo) func_lo2o_result=${1%.lo}.$objext ;; * ) func_lo2o_result=$1 ;; esac }' # func_xform LIBOBJ-OR-SOURCE # --------------------------- # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise) # suffix to a '.lo' libtool-object suffix. eval 'func_xform () { func_xform_result=${1%.*}.lo }' else # ...otherwise fall back to using sed. func_lo2o () { func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"` } func_xform () { func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'` } fi # func_fatal_configuration ARG... # ------------------------------- # Echo program name prefixed message to standard error, followed by # a configuration failure hint, and exit. func_fatal_configuration () { func_fatal_error ${1+"$@"} \ "See the $PACKAGE documentation for more information." \ "Fatal configuration error." } # func_config # ----------- # Display the configuration for all the tags in this script. func_config () { re_begincf='^# ### BEGIN LIBTOOL' re_endcf='^# ### END LIBTOOL' # Default configuration. $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" # Now print the configurations for the tags. for tagname in $taglist; do $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" done exit $? } # func_features # ------------- # Display the features supported by this script. func_features () { echo "host: $host" if test yes = "$build_libtool_libs"; then echo "enable shared libraries" else echo "disable shared libraries" fi if test yes = "$build_old_libs"; then echo "enable static libraries" else echo "disable static libraries" fi exit $? } # func_enable_tag TAGNAME # ----------------------- # Verify that TAGNAME is valid, and either flag an error and exit, or # enable the TAGNAME tag. We also add TAGNAME to the global $taglist # variable here. func_enable_tag () { # Global variable: tagname=$1 re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" sed_extractcf=/$re_begincf/,/$re_endcf/p # Validate tagname. case $tagname in *[!-_A-Za-z0-9,/]*) func_fatal_error "invalid tag name: $tagname" ;; esac # Don't test for the "default" C tag, as we know it's # there but not specially marked. case $tagname in CC) ;; *) if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then taglist="$taglist $tagname" # Evaluate the configuration. Be careful to quote the path # and the sed script, to avoid splitting on whitespace, but # also don't use non-portable quotes within backquotes within # quotes we have to do it in 2 steps: extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` eval "$extractedcf" else func_error "ignoring unknown tag $tagname" fi ;; esac } # func_check_version_match # ------------------------ # Ensure that we are using m4 macros, and libtool script from the same # release of libtool. func_check_version_match () { if test "$package_revision" != "$macro_revision"; then if test "$VERSION" != "$macro_version"; then if test -z "$macro_version"; then cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from an older release. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from $PACKAGE $macro_version. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF fi else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, $progname: but the definition of this LT_INIT comes from revision $macro_revision. $progname: You should recreate aclocal.m4 with macros from revision $package_revision $progname: of $PACKAGE $VERSION and run autoconf again. _LT_EOF fi exit $EXIT_MISMATCH fi } # libtool_options_prep [ARG]... # ----------------------------- # Preparation for options parsed by libtool. libtool_options_prep () { $debug_mode # Option defaults: opt_config=false opt_dlopen= opt_dry_run=false opt_help=false opt_mode= opt_reorder_cache=false opt_preserve_dup_deps=false opt_quiet=false opt_finishing=true opt_warning= nonopt= preserve_args= _G_rc_lt_options_prep=: # Shorthand for --mode=foo, only valid as the first argument case $1 in clean|clea|cle|cl) shift; set dummy --mode clean ${1+"$@"}; shift ;; compile|compil|compi|comp|com|co|c) shift; set dummy --mode compile ${1+"$@"}; shift ;; execute|execut|execu|exec|exe|ex|e) shift; set dummy --mode execute ${1+"$@"}; shift ;; finish|finis|fini|fin|fi|f) shift; set dummy --mode finish ${1+"$@"}; shift ;; install|instal|insta|inst|ins|in|i) shift; set dummy --mode install ${1+"$@"}; shift ;; link|lin|li|l) shift; set dummy --mode link ${1+"$@"}; shift ;; uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) shift; set dummy --mode uninstall ${1+"$@"}; shift ;; *) _G_rc_lt_options_prep=false ;; esac if $_G_rc_lt_options_prep; then # Pass back the list of options. func_quote eval ${1+"$@"} libtool_options_prep_result=$func_quote_result fi } func_add_hook func_options_prep libtool_options_prep # libtool_parse_options [ARG]... # --------------------------------- # Provide handling for libtool specific options. libtool_parse_options () { $debug_cmd _G_rc_lt_parse_options=false # Perform our own loop to consume as many options as possible in # each iteration. while test $# -gt 0; do _G_match_lt_parse_options=: _G_opt=$1 shift case $_G_opt in --dry-run|--dryrun|-n) opt_dry_run=: ;; --config) func_config ;; --dlopen|-dlopen) opt_dlopen="${opt_dlopen+$opt_dlopen }$1" shift ;; --preserve-dup-deps) opt_preserve_dup_deps=: ;; --features) func_features ;; --finish) set dummy --mode finish ${1+"$@"}; shift ;; --help) opt_help=: ;; --help-all) opt_help=': help-all' ;; --mode) test $# = 0 && func_missing_arg $_G_opt && break opt_mode=$1 case $1 in # Valid mode arguments: clean|compile|execute|finish|install|link|relink|uninstall) ;; # Catch anything else as an error *) func_error "invalid argument '$1' for $_G_opt" exit_cmd=exit ;; esac shift ;; --no-finish) opt_finishing=false func_append preserve_args " $_G_opt" ;; --no-silent|--no-quiet) opt_quiet=false func_append preserve_args " $_G_opt" ;; --no-warnings|--no-warning|--no-warn) opt_warning=false func_append preserve_args " $_G_opt" ;; --no-verbose) opt_verbose=false func_append preserve_args " $_G_opt" ;; --reorder-cache) opt_reorder_cache=true shared_lib_dirs=$1 if test -n "$shared_lib_dirs"; then case $1 in # Must begin with /: /*) ;; # Catch anything else as an error (relative paths) *) func_error "invalid argument '$1' for $_G_opt" func_error "absolute paths are required for $_G_opt" exit_cmd=exit ;; esac fi shift ;; --silent|--quiet) opt_quiet=: opt_verbose=false func_append preserve_args " $_G_opt" ;; --tag) test $# = 0 && func_missing_arg $_G_opt && break opt_tag=$1 func_append preserve_args " $_G_opt $1" func_enable_tag "$1" shift ;; --verbose|-v) opt_quiet=false opt_verbose=: func_append preserve_args " $_G_opt" ;; # An option not handled by this hook function: *) set dummy "$_G_opt" ${1+"$@"} ; shift _G_match_lt_parse_options=false break ;; esac $_G_match_lt_parse_options && _G_rc_lt_parse_options=: done if $_G_rc_lt_parse_options; then # save modified positional parameters for caller func_quote eval ${1+"$@"} libtool_parse_options_result=$func_quote_result fi } func_add_hook func_parse_options libtool_parse_options # func_warning ARG... # ------------------- # Libtool warnings are not categorized, so override funclib.sh # func_warning with this simpler definition. func_warning () { if $opt_warning; then $debug_cmd $warning_func ${1+"$@"} fi } # libtool_validate_options [ARG]... # --------------------------------- # Perform any sanity checks on option settings and/or unconsumed # arguments. libtool_validate_options () { # save first non-option argument if test 0 -lt $#; then nonopt=$1 shift fi # preserve --debug test : = "$debug_cmd" || func_append preserve_args " --debug" # Keeping compiler generated duplicates in $postdeps and $predeps is not # harmful, and is necessary in a majority of systems that use it to satisfy # symbol dependencies. opt_duplicate_compiler_generated_deps=: $opt_help || { # Sanity checks first: func_check_version_match test yes != "$build_libtool_libs" \ && test yes != "$build_old_libs" \ && func_fatal_configuration "not configured to build any kind of library" # Darwin sucks eval std_shrext=\"$shrext_cmds\" # Only execute mode is allowed to have -dlopen flags. if test -n "$opt_dlopen" && test execute != "$opt_mode"; then func_error "unrecognized option '-dlopen'" $ECHO "$help" 1>&2 exit $EXIT_FAILURE fi # Change the help message to a mode-specific one. generic_help=$help help="Try '$progname --help --mode=$opt_mode' for more information." } # Pass back the unparsed argument list func_quote eval ${1+"$@"} libtool_validate_options_result=$func_quote_result } func_add_hook func_validate_options libtool_validate_options # Process options as early as possible so that --help and --version # can return quickly. func_options ${1+"$@"} eval set dummy "$func_options_result"; shift ## ----------- ## ## Main. ## ## ----------- ## magic='%%%MAGIC variable%%%' magic_exe='%%%MAGIC EXE variable%%%' # Global variables. extracted_archives= extracted_serial=0 # If this variable is set in any of the actions, the command in it # will be execed at the end. This prevents here-documents from being # left over by shells. exec_cmd= # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } # func_generated_by_libtool # True iff stdin has been generated by Libtool. This function is only # a basic sanity check; it will hardly flush out determined imposters. func_generated_by_libtool_p () { $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 } # func_lalib_p file # True iff FILE is a libtool '.la' library or '.lo' object file. # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_lalib_p () { test -f "$1" && $SED -e 4q "$1" 2>/dev/null | func_generated_by_libtool_p } # func_lalib_unsafe_p file # True iff FILE is a libtool '.la' library or '.lo' object file. # This function implements the same check as func_lalib_p without # resorting to external programs. To this end, it redirects stdin and # closes it afterwards, without saving the original file descriptor. # As a safety measure, use it only where a negative result would be # fatal anyway. Works if 'file' does not exist. func_lalib_unsafe_p () { lalib_p=no if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then for lalib_p_l in 1 2 3 4 do read lalib_p_line case $lalib_p_line in \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; esac done exec 0<&5 5<&- fi test yes = "$lalib_p" } # func_ltwrapper_script_p file # True iff FILE is a libtool wrapper script # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_script_p () { test -f "$1" && $lt_truncate_bin < "$1" 2>/dev/null | func_generated_by_libtool_p } # func_ltwrapper_executable_p file # True iff FILE is a libtool wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_executable_p () { func_ltwrapper_exec_suffix= case $1 in *.exe) ;; *) func_ltwrapper_exec_suffix=.exe ;; esac $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 } # func_ltwrapper_scriptname file # Assumes file is an ltwrapper_executable # uses $file to determine the appropriate filename for a # temporary ltwrapper_script. func_ltwrapper_scriptname () { func_dirname_and_basename "$1" "" "." func_stripname '' '.exe' "$func_basename_result" func_ltwrapper_scriptname_result=$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper } # func_ltwrapper_p file # True iff FILE is a libtool wrapper script or wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_p () { func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" } # func_execute_cmds commands fail_cmd # Execute tilde-delimited COMMANDS. # If FAIL_CMD is given, eval that upon failure. # FAIL_CMD may read-access the current command in variable CMD! func_execute_cmds () { $debug_cmd save_ifs=$IFS; IFS='~' for cmd in $1; do IFS=$sp$nl eval cmd=\"$cmd\" IFS=$save_ifs func_show_eval "$cmd" "${2-:}" done IFS=$save_ifs } # func_source file # Source FILE, adding directory component if necessary. # Note that it is not necessary on cygwin/mingw to append a dot to # FILE even if both FILE and FILE.exe exist: automatic-append-.exe # behavior happens only for exec(3), not for open(2)! Also, sourcing # 'FILE.' does not work on cygwin managed mounts. func_source () { $debug_cmd case $1 in */* | *\\*) . "$1" ;; *) . "./$1" ;; esac } # func_resolve_sysroot PATH # Replace a leading = in PATH with a sysroot. Store the result into # func_resolve_sysroot_result func_resolve_sysroot () { func_resolve_sysroot_result=$1 case $func_resolve_sysroot_result in =*) func_stripname '=' '' "$func_resolve_sysroot_result" func_resolve_sysroot_result=$lt_sysroot$func_stripname_result ;; esac } # func_replace_sysroot PATH # If PATH begins with the sysroot, replace it with = and # store the result into func_replace_sysroot_result. func_replace_sysroot () { case $lt_sysroot:$1 in ?*:"$lt_sysroot"*) func_stripname "$lt_sysroot" '' "$1" func_replace_sysroot_result='='$func_stripname_result ;; *) # Including no sysroot. func_replace_sysroot_result=$1 ;; esac } # func_infer_tag arg # Infer tagged configuration to use if any are available and # if one wasn't chosen via the "--tag" command line option. # Only attempt this if the compiler in the base compile # command doesn't match the default compiler. # arg is usually of the form 'gcc ...' func_infer_tag () { $debug_cmd if test -n "$available_tags" && test -z "$tagname"; then CC_quoted= for arg in $CC; do func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case $@ in # Blanks in the command may have been stripped by the calling shell, # but not from the CC environment variable when configure was run. " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; # Blanks at the start of $base_compile will cause this to fail # if we don't check for them as well. *) for z in $available_tags; do if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then # Evaluate the configuration. eval "`$SED -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" CC_quoted= for arg in $CC; do # Double-quote args containing other shell metacharacters. func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case "$@ " in " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) # The compiler in the base compile command matches # the one in the tagged configuration. # Assume this is the tagged configuration we want. tagname=$z break ;; esac fi done # If $tagname still isn't set, then no tagged configuration # was found and let the user know that the "--tag" command # line option must be used. if test -z "$tagname"; then func_echo "unable to infer tagged configuration" func_fatal_error "specify a tag with '--tag'" # else # func_verbose "using $tagname tagged configuration" fi ;; esac fi } # func_write_libtool_object output_name pic_name nonpic_name # Create a libtool object file (analogous to a ".la" file), # but don't create it if we're doing a dry run. func_write_libtool_object () { write_libobj=$1 if test yes = "$build_libtool_libs"; then write_lobj=\'$2\' else write_lobj=none fi if test yes = "$build_old_libs"; then write_oldobj=\'$3\' else write_oldobj=none fi $opt_dry_run || { cat >${write_libobj}T </dev/null` if test "$?" -eq 0 && test -n "$func_convert_core_file_wine_to_w32_tmp"; then func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | $SED -e "$sed_naive_backslashify"` else func_convert_core_file_wine_to_w32_result= fi fi } # end: func_convert_core_file_wine_to_w32 # func_convert_core_path_wine_to_w32 ARG # Helper function used by path conversion functions when $build is *nix, and # $host is mingw, windows, cygwin, or some other w32 environment. Relies on a # correctly configured wine environment available, with the winepath program # in $build's $PATH. Assumes ARG has no leading or trailing path separator # characters. # # ARG is path to be converted from $build format to win32. # Result is available in $func_convert_core_path_wine_to_w32_result. # Unconvertible file (directory) names in ARG are skipped; if no directory names # are convertible, then the result may be empty. func_convert_core_path_wine_to_w32 () { $debug_cmd # unfortunately, winepath doesn't convert paths, only file names func_convert_core_path_wine_to_w32_result= if test -n "$1"; then oldIFS=$IFS IFS=: for func_convert_core_path_wine_to_w32_f in $1; do IFS=$oldIFS func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" if test -n "$func_convert_core_file_wine_to_w32_result"; then if test -z "$func_convert_core_path_wine_to_w32_result"; then func_convert_core_path_wine_to_w32_result=$func_convert_core_file_wine_to_w32_result else func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" fi fi done IFS=$oldIFS fi } # end: func_convert_core_path_wine_to_w32 # func_cygpath ARGS... # Wrapper around calling the cygpath program via LT_CYGPATH. This is used when # when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) # $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or # (2), returns the Cygwin file name or path in func_cygpath_result (input # file name or path is assumed to be in w32 format, as previously converted # from $build's *nix or MSYS format). In case (3), returns the w32 file name # or path in func_cygpath_result (input file name or path is assumed to be in # Cygwin format). Returns an empty string on error. # # ARGS are passed to cygpath, with the last one being the file name or path to # be converted. # # Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH # environment variable; do not put it in $PATH. func_cygpath () { $debug_cmd if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` if test "$?" -ne 0; then # on failure, ensure result is empty func_cygpath_result= fi else func_cygpath_result= func_error "LT_CYGPATH is empty or specifies non-existent file: '$LT_CYGPATH'" fi } #end: func_cygpath # func_convert_core_msys_to_w32 ARG # Convert file name or path ARG from MSYS format to w32 format. Return # result in func_convert_core_msys_to_w32_result. func_convert_core_msys_to_w32 () { $debug_cmd # awkward: cmd appends spaces to result func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"` } #end: func_convert_core_msys_to_w32 # func_convert_file_check ARG1 ARG2 # Verify that ARG1 (a file name in $build format) was converted to $host # format in ARG2. Otherwise, emit an error message, but continue (resetting # func_to_host_file_result to ARG1). func_convert_file_check () { $debug_cmd if test -z "$2" && test -n "$1"; then func_error "Could not determine host file name corresponding to" func_error " '$1'" func_error "Continuing, but uninstalled executables may not work." # Fallback: func_to_host_file_result=$1 fi } # end func_convert_file_check # func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH # Verify that FROM_PATH (a path in $build format) was converted to $host # format in TO_PATH. Otherwise, emit an error message, but continue, resetting # func_to_host_file_result to a simplistic fallback value (see below). func_convert_path_check () { $debug_cmd if test -z "$4" && test -n "$3"; then func_error "Could not determine the host path corresponding to" func_error " '$3'" func_error "Continuing, but uninstalled executables may not work." # Fallback. This is a deliberately simplistic "conversion" and # should not be "improved". See libtool.info. if test "x$1" != "x$2"; then lt_replace_pathsep_chars="s|$1|$2|g" func_to_host_path_result=`echo "$3" | $SED -e "$lt_replace_pathsep_chars"` else func_to_host_path_result=$3 fi fi } # end func_convert_path_check # func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG # Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT # and appending REPL if ORIG matches BACKPAT. func_convert_path_front_back_pathsep () { $debug_cmd case $4 in $1 ) func_to_host_path_result=$3$func_to_host_path_result ;; esac case $4 in $2 ) func_append func_to_host_path_result "$3" ;; esac } # end func_convert_path_front_back_pathsep # func_convert_delimited_path PATH ORIG_DELIMITER NEW_DELIMITER # Replaces a delimiter for a given path. func_convert_delimited_path () { converted_path=`$ECHO "$1" | $SED "s#$2#$3#g"` } # end func_convert_delimited_path ################################################## # $build to $host FILE NAME CONVERSION FUNCTIONS # ################################################## # invoked via '$to_host_file_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # Result will be available in $func_to_host_file_result. # func_to_host_file ARG # Converts the file name ARG from $build format to $host format. Return result # in func_to_host_file_result. func_to_host_file () { $debug_cmd $to_host_file_cmd "$1" } # end func_to_host_file # func_to_tool_file ARG LAZY # converts the file name ARG from $build format to toolchain format. Return # result in func_to_tool_file_result. If the conversion in use is listed # in (the comma separated) LAZY, no conversion takes place. func_to_tool_file () { $debug_cmd case ,$2, in *,"$to_tool_file_cmd",*) func_to_tool_file_result=$1 ;; *) $to_tool_file_cmd "$1" func_to_tool_file_result=$func_to_host_file_result ;; esac } # end func_to_tool_file # func_convert_file_noop ARG # Copy ARG to func_to_host_file_result. func_convert_file_noop () { func_to_host_file_result=$1 } # end func_convert_file_noop # func_convert_file_msys_to_w32 ARG # Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_file_result. func_convert_file_msys_to_w32 () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_to_host_file_result=$func_convert_core_msys_to_w32_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_w32 # func_convert_file_cygwin_to_w32 ARG # Convert file name ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_file_cygwin_to_w32 () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then # because $build is cygwin, we call "the" cygpath in $PATH; no need to use # LT_CYGPATH in this case. func_to_host_file_result=`cygpath -m "$1"` fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_cygwin_to_w32 # func_convert_file_nix_to_w32 ARG # Convert file name ARG from *nix to w32 format. Requires a wine environment # and a working winepath. Returns result in func_to_host_file_result. func_convert_file_nix_to_w32 () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_file_wine_to_w32 "$1" func_to_host_file_result=$func_convert_core_file_wine_to_w32_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_w32 # func_convert_file_msys_to_cygwin ARG # Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_file_msys_to_cygwin () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_cygpath -u "$func_convert_core_msys_to_w32_result" func_to_host_file_result=$func_cygpath_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_cygwin # func_convert_file_nix_to_cygwin ARG # Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed # in a wine environment, working winepath, and LT_CYGPATH set. Returns result # in func_to_host_file_result. func_convert_file_nix_to_cygwin () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. func_convert_core_file_wine_to_w32 "$1" func_cygpath -u "$func_convert_core_file_wine_to_w32_result" func_to_host_file_result=$func_cygpath_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_cygwin ############################################# # $build to $host PATH CONVERSION FUNCTIONS # ############################################# # invoked via '$to_host_path_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # The result will be available in $func_to_host_path_result. # # Path separators are also converted from $build format to $host format. If # ARG begins or ends with a path separator character, it is preserved (but # converted to $host format) on output. # # All path conversion functions are named using the following convention: # file name conversion function : func_convert_file_X_to_Y () # path conversion function : func_convert_path_X_to_Y () # where, for any given $build/$host combination the 'X_to_Y' value is the # same. If conversion functions are added for new $build/$host combinations, # the two new functions must follow this pattern, or func_init_to_host_path_cmd # will break. # func_init_to_host_path_cmd # Ensures that function "pointer" variable $to_host_path_cmd is set to the # appropriate value, based on the value of $to_host_file_cmd. to_host_path_cmd= func_init_to_host_path_cmd () { $debug_cmd if test -z "$to_host_path_cmd"; then func_stripname 'func_convert_file_' '' "$to_host_file_cmd" to_host_path_cmd=func_convert_path_$func_stripname_result fi } # func_to_host_path ARG # Converts the path ARG from $build format to $host format. Return result # in func_to_host_path_result. func_to_host_path () { $debug_cmd func_init_to_host_path_cmd $to_host_path_cmd "$1" } # end func_to_host_path # func_convert_path_noop ARG # Copy ARG to func_to_host_path_result. func_convert_path_noop () { func_to_host_path_result=$1 } # end func_convert_path_noop # func_convert_path_msys_to_w32 ARG # Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_path_result. func_convert_path_msys_to_w32 () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # Remove leading and trailing path separator characters from ARG. MSYS # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; # and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result=$func_convert_core_msys_to_w32_result func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_msys_to_w32 # func_convert_path_cygwin_to_w32 ARG # Convert path ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_path_cygwin_to_w32 () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_cygwin_to_w32 # func_convert_path_nix_to_w32 ARG # Convert path ARG from *nix to w32 format. Requires a wine environment and # a working winepath. Returns result in func_to_host_file_result. func_convert_path_nix_to_w32 () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result=$func_convert_core_path_wine_to_w32_result func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_nix_to_w32 # func_convert_path_msys_to_cygwin ARG # Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_path_msys_to_cygwin () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_msys_to_w32_result" func_to_host_path_result=$func_cygpath_result func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_msys_to_cygwin # func_convert_path_nix_to_cygwin ARG # Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a # a wine environment, working winepath, and LT_CYGPATH set. Returns result in # func_to_host_file_result. func_convert_path_nix_to_cygwin () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # Remove leading and trailing path separator characters from # ARG. msys behavior is inconsistent here, cygpath turns them # into '.;' and ';.', and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" func_to_host_path_result=$func_cygpath_result func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_nix_to_cygwin # func_dll_def_p FILE # True iff FILE is a Windows DLL '.def' file. # Keep in sync with _LT_DLL_DEF_P in libtool.m4 func_dll_def_p () { $debug_cmd func_dll_def_p_tmp=`$SED -n \ -e 's/^[ ]*//' \ -e '/^\(;.*\)*$/d' \ -e 's/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p' \ -e q \ "$1"` test DEF = "$func_dll_def_p_tmp" } # func_reorder_shared_lib_cache DIRS # Reorder the shared library cache by unconfiguring previous shared library cache # and configuring preferred search directories before previous search directories. # Previous shared library cache: /usr/lib /usr/local/lib # Preferred search directories: /tmp/testing # Reordered shared library cache: /tmp/testing /usr/lib /usr/local/lib func_reorder_shared_lib_cache () { $debug_cmd case $host_os in openbsd*) get_search_directories=`PATH="$PATH:/sbin" ldconfig -r | $GREP "search directories" | $SED "s#.*search directories:\ ##g"` func_convert_delimited_path "$get_search_directories" ':' '\ ' save_search_directories=$converted_path func_convert_delimited_path "$1" ':' '\ ' # Ensure directories exist for dir in $converted_path; do # Ensure each directory is an absolute path case $dir in /*) ;; *) func_error "Directory '$dir' is not an absolute path" exit $EXIT_FAILURE ;; esac # Ensure no trailing slashes func_stripname '' '/' "$dir" dir=$func_stripname_result if test -d "$dir"; then if test -n "$preferred_search_directories"; then preferred_search_directories="$preferred_search_directories $dir" else preferred_search_directories=$dir fi else func_error "Directory '$dir' does not exist" exit $EXIT_FAILURE fi done PATH="$PATH:/sbin" ldconfig -U $save_search_directories PATH="$PATH:/sbin" ldconfig -m $preferred_search_directories $save_search_directories get_search_directories=`PATH="$PATH:/sbin" ldconfig -r | $GREP "search directories" | $SED "s#.*search directories:\ ##g"` func_convert_delimited_path "$get_search_directories" ':' '\ ' reordered_search_directories=$converted_path $ECHO "Original: $save_search_directories" $ECHO "Reordered: $reordered_search_directories" exit $EXIT_SUCCESS ;; *) func_error "--reorder-cache is not supported for host_os=$host_os." exit $EXIT_FAILURE ;; esac } # end func_reorder_shared_lib_cache # func_mode_compile arg... func_mode_compile () { $debug_cmd # Get the compilation command and the source file. base_compile= srcfile=$nonopt # always keep a non-empty value in "srcfile" suppress_opt=yes suppress_output= arg_mode=normal libobj= later= pie_flag= for arg do case $arg_mode in arg ) # do not "continue". Instead, add this to base_compile lastarg=$arg arg_mode=normal ;; target ) libobj=$arg arg_mode=normal continue ;; normal ) # Accept any command-line options. case $arg in -o) test -n "$libobj" && \ func_fatal_error "you cannot specify '-o' more than once" arg_mode=target continue ;; -pie | -fpie | -fPIE) func_append pie_flag " $arg" continue ;; -shared | -static | -prefer-pic | -prefer-non-pic) func_append later " $arg" continue ;; -no-suppress) suppress_opt=no continue ;; -Xcompiler) arg_mode=arg # the next one goes into the "base_compile" arg list continue # The current "srcfile" will either be retained or ;; # replaced later. I would guess that would be a bug. -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result lastarg= save_ifs=$IFS; IFS=, for arg in $args; do IFS=$save_ifs func_append_quoted lastarg "$arg" done IFS=$save_ifs func_stripname ' ' '' "$lastarg" lastarg=$func_stripname_result # Add the arguments to base_compile. func_append base_compile " $lastarg" continue ;; *) # Accept the current argument as the source file. # The previous "srcfile" becomes the current argument. # lastarg=$srcfile srcfile=$arg ;; esac # case $arg ;; esac # case $arg_mode # Aesthetically quote the previous argument. func_append_quoted base_compile "$lastarg" done # for arg case $arg_mode in arg) func_fatal_error "you must specify an argument for -Xcompile" ;; target) func_fatal_error "you must specify a target with '-o'" ;; *) # Get the name of the library object. test -z "$libobj" && { func_basename "$srcfile" libobj=$func_basename_result } ;; esac # Recognize several different file suffixes. # If the user specifies -o file.o, it is replaced with file.lo case $libobj in *.[cCFSifmso] | \ *.ada | *.adb | *.ads | *.asm | \ *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) func_xform "$libobj" libobj=$func_xform_result ;; esac case $libobj in *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; *) func_fatal_error "cannot determine name of library object from '$libobj'" ;; esac func_infer_tag $base_compile for arg in $later; do case $arg in -shared) test yes = "$build_libtool_libs" \ || func_fatal_configuration "cannot build a shared library" build_old_libs=no continue ;; -static) build_libtool_libs=no build_old_libs=yes continue ;; -prefer-pic) pic_mode=yes continue ;; -prefer-non-pic) pic_mode=no continue ;; esac done func_quote_arg pretty "$libobj" test "X$libobj" != "X$func_quote_arg_result" \ && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ && func_warning "libobj name '$libobj' may not contain shell special characters." func_dirname_and_basename "$obj" "/" "" objname=$func_basename_result xdir=$func_dirname_result lobj=$xdir$objdir/$objname test -z "$base_compile" && \ func_fatal_help "you must specify a compilation command" # Delete any leftover library objects. if test yes = "$build_old_libs"; then removelist="$obj $lobj $libobj ${libobj}T" else removelist="$lobj $libobj ${libobj}T" fi # On Cygwin there's no "real" PIC flag so we must build both object types case $host_os in cygwin* | mingw* | windows* | pw32* | os2* | cegcc*) pic_mode=default ;; esac if test no = "$pic_mode" && test pass_all != "$deplibs_check_method"; then # non-PIC code in shared libraries is not supported pic_mode=default fi # Calculate the filename of the output object if compiler does # not support -o with -c if test no = "$compiler_c_o"; then output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.$objext lockfile=$output_obj.lock else output_obj= need_locks=no lockfile= fi # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file if test yes = "$need_locks"; then until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done elif test warn = "$need_locks"; then if test -f "$lockfile"; then $ECHO "\ *** ERROR, $lockfile exists and contains: `cat $lockfile 2>/dev/null` This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi func_append removelist " $output_obj" $ECHO "$srcfile" > "$lockfile" fi $opt_dry_run || $RM $removelist func_append removelist " $lockfile" trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 srcfile=$func_to_tool_file_result func_quote_arg pretty "$srcfile" qsrcfile=$func_quote_arg_result # Only build a PIC object if we are building libtool libraries. if test yes = "$build_libtool_libs"; then # Without this assignment, base_compile gets emptied. fbsd_hideous_sh_bug=$base_compile if test no != "$pic_mode"; then command="$base_compile $qsrcfile $pic_flag" else # Don't build PIC code command="$base_compile $qsrcfile" fi func_mkdir_p "$xdir$objdir" if test -z "$output_obj"; then # Place PIC objects in $objdir func_append command " -o $lobj" fi func_show_eval_locale "$command" \ 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' if test warn = "$need_locks" && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed, then go on to compile the next one if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then func_show_eval '$MV "$output_obj" "$lobj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi # Allow error messages only from the first compilation. if test yes = "$suppress_opt"; then suppress_output=' >/dev/null 2>&1' fi fi # Only build a position-dependent object if we build old libraries. if test yes = "$build_old_libs"; then if test yes != "$pic_mode"; then # Don't build PIC code command="$base_compile $qsrcfile$pie_flag" else command="$base_compile $qsrcfile $pic_flag" fi if test yes = "$compiler_c_o"; then func_append command " -o $obj" fi # Suppress compiler output if we already did a PIC compilation. func_append command "$suppress_output" func_show_eval_locale "$command" \ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' if test warn = "$need_locks" && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then func_show_eval '$MV "$output_obj" "$obj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi fi $opt_dry_run || { func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" # Unlock the critical section if it was locked if test no != "$need_locks"; then removelist=$lockfile $RM "$lockfile" fi } exit $EXIT_SUCCESS } $opt_help || { test compile = "$opt_mode" && func_mode_compile ${1+"$@"} } func_mode_help () { # We need to display help for each of the modes. case $opt_mode in "") # Generic help is extracted from the usage comments # at the start of this file. func_help ;; clean) $ECHO \ "Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... Remove files from the build directory. RM is the name of the program to use to delete files associated with each FILE (typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed to RM. If FILE is a libtool library, object or program, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; compile) $ECHO \ "Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE Compile a source file into a libtool library object. This mode accepts the following additional options: -o OUTPUT-FILE set the output file name to OUTPUT-FILE -no-suppress do not suppress compiler output for multiple passes -prefer-pic try to build PIC objects only -prefer-non-pic try to build non-PIC objects only -shared do not build a '.o' file suitable for static linking -static only build a '.o' file suitable for static linking -Wc,FLAG -Xcompiler FLAG pass FLAG directly to the compiler COMPILE-COMMAND is a command to be used in creating a 'standard' object file from the given SOURCEFILE. The output file name is determined by removing the directory component from SOURCEFILE, then substituting the C source code suffix '.c' with the library object suffix, '.lo'." ;; execute) $ECHO \ "Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... Automatically set library path, then run a program. This mode accepts the following additional options: -dlopen FILE add the directory containing FILE to the library path This mode sets the library path environment variable according to '-dlopen' flags. If any of the ARGS are libtool executable wrappers, then they are translated into their corresponding uninstalled binary, and any of their required library directories are added to the library path. Then, COMMAND is executed, with ARGS as arguments." ;; finish) $ECHO \ "Usage: $progname [OPTION]... --mode=finish [LIBDIR]... Complete the installation of libtool libraries. Each LIBDIR is a directory that contains libtool libraries. The commands that this mode executes may require superuser privileges. Use the '--dry-run' option if you just want to see what would be executed." ;; install) $ECHO \ "Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... Install executables or libraries. INSTALL-COMMAND is the installation command. The first component should be either the 'install' or 'cp' program. The following components of INSTALL-COMMAND are treated specially: -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation The rest of the components are interpreted as arguments to that command (only BSD-compatible install options are recognized)." ;; link) $ECHO \ "Usage: $progname [OPTION]... --mode=link LINK-COMMAND... Link object files or libraries together to form another library, or to create an executable program. LINK-COMMAND is a command using the C compiler that you would use to create a program from several object files. The following components of LINK-COMMAND are treated specially: -all-static do not do any dynamic linking at all -avoid-version do not add a version suffix if possible -bindir BINDIR specify path to binaries directory (for systems where libraries must be found in the PATH setting at runtime) -dlopen FILE '-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -export-symbols SYMFILE try to export only the symbols listed in SYMFILE -export-symbols-regex REGEX try to export only the symbols matching REGEX -LLIBDIR search LIBDIR for required installed libraries -lNAME OUTPUT-FILE requires the installed library libNAME -module build a library that can dlopened -no-fast-install disable the fast-install mode -no-install link a not-installable executable -no-undefined declare that a library does not refer to external symbols -o OUTPUT-FILE create OUTPUT-FILE from the specified objects -objectlist FILE use a list of object files found in FILE to specify objects -os2dllname NAME force a short DLL name on OS/2 (no effect on other OSes) -precious-files-regex REGEX don't remove output files matching REGEX -release RELEASE specify package release information -rpath LIBDIR the created library will eventually be installed in LIBDIR -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries -shared only do dynamic linking of libtool libraries -shrext SUFFIX override the standard shared library file extension -static do not do any dynamic linking of uninstalled libtool libraries -static-libtool-libs do not do any dynamic linking of libtool libraries -version-info CURRENT[:REVISION[:AGE]] specify library version info [each variable defaults to 0] -weak LIBNAME declare that the target provides the LIBNAME interface -Wc,FLAG -Xcompiler FLAG pass linker-specific FLAG directly to the compiler -Wa,FLAG -Xassembler FLAG pass linker-specific FLAG directly to the assembler -Wl,FLAG -Xlinker FLAG pass linker-specific FLAG directly to the linker -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) All other options (arguments beginning with '-') are ignored. Every other argument is treated as a filename. Files ending in '.la' are treated as uninstalled libtool libraries, other files are standard or library object files. If the OUTPUT-FILE ends in '.la', then a libtool library is created, only library objects ('.lo' files) may be specified, and '-rpath' is required, except when creating a convenience library. If OUTPUT-FILE ends in '.a' or '.lib', then a standard library is created using 'ar' and 'ranlib', or on Windows using 'lib'. If OUTPUT-FILE ends in '.lo' or '.$objext', then a reloadable object file is created, otherwise an executable program is created." ;; uninstall) $ECHO \ "Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... Remove libraries from an installation directory. RM is the name of the program to use to delete files associated with each FILE (typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed to RM. If FILE is a libtool library, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; *) func_fatal_help "invalid operation mode '$opt_mode'" ;; esac echo $ECHO "Try '$progname --help' for more information about other modes." } # Now that we've collected a possible --mode arg, show help if necessary if $opt_help; then if test : = "$opt_help"; then func_mode_help else { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do func_mode_help done } | $SED -n '1p; 2,$s/^Usage:/ or: /p' { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do echo func_mode_help done } | $SED '1d /^When reporting/,/^Report/{ H d } $x /information about other modes/d /more detailed .*MODE/d s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' fi exit $? fi # If option '--reorder-cache', reorder the shared library cache and exit. if $opt_reorder_cache; then func_reorder_shared_lib_cache $shared_lib_dirs fi # func_mode_execute arg... func_mode_execute () { $debug_cmd # The first argument is the command name. cmd=$nonopt test -z "$cmd" && \ func_fatal_help "you must specify a COMMAND" # Handle -dlopen flags immediately. for file in $opt_dlopen; do test -f "$file" \ || func_fatal_help "'$file' is not a file" dir= case $file in *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "'$lib' is not a valid libtool archive" # Read the libtool library. dlname= library_names= func_source "$file" # Skip this library if it cannot be dlopened. if test -z "$dlname"; then # Warn if it was a shared library. test -n "$library_names" && \ func_warning "'$file' was not linked with '-export-dynamic'" continue fi func_dirname "$file" "" "." dir=$func_dirname_result if test -f "$dir/$objdir/$dlname"; then func_append dir "/$objdir" else if test ! -f "$dir/$dlname"; then func_fatal_error "cannot find '$dlname' in '$dir' or '$dir/$objdir'" fi fi ;; *.lo) # Just add the directory containing the .lo file. func_dirname "$file" "" "." dir=$func_dirname_result ;; *) func_warning "'-dlopen' is ignored for non-libtool libraries and objects" continue ;; esac # Get the absolute pathname. absdir=`cd "$dir" && pwd` test -n "$absdir" && dir=$absdir # Now add the directory to shlibpath_var. if eval "test -z \"\$$shlibpath_var\""; then eval "$shlibpath_var=\"\$dir\"" else eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" fi done # This variable tells wrapper scripts just to set shlibpath_var # rather than running their programs. libtool_execute_magic=$magic # Check if any of the arguments is a wrapper script. args= for file do case $file in -* | *.la | *.lo ) ;; *) # Do a test to see if this is really a libtool program. if func_ltwrapper_script_p "$file"; then func_source "$file" # Transform arg to wrapped name. file=$progdir/$program elif func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" func_source "$func_ltwrapper_scriptname_result" # Transform arg to wrapped name. file=$progdir/$program fi ;; esac # Quote arguments (to preserve shell metacharacters). func_append_quoted args "$file" done if $opt_dry_run; then # Display what would be done. if test -n "$shlibpath_var"; then eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" echo "export $shlibpath_var" fi $ECHO "$cmd$args" exit $EXIT_SUCCESS else if test -n "$shlibpath_var"; then # Export the shlibpath_var. eval "export $shlibpath_var" fi # Restore saved environment variables for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${save_$lt_var+set}\" = set; then $lt_var=\$save_$lt_var; export $lt_var else $lt_unset $lt_var fi" done # Now prepare to actually exec the command. exec_cmd=\$cmd$args fi } test execute = "$opt_mode" && func_mode_execute ${1+"$@"} # func_mode_finish arg... func_mode_finish () { $debug_cmd libs= libdirs= admincmds= for opt in "$nonopt" ${1+"$@"} do if test -d "$opt"; then func_append libdirs " $opt" elif test -f "$opt"; then if func_lalib_unsafe_p "$opt"; then func_append libs " $opt" else func_warning "'$opt' is not a valid libtool archive" fi else func_fatal_error "invalid argument '$opt'" fi done if test -n "$libs"; then if test -n "$lt_sysroot"; then sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" else sysroot_cmd= fi # Remove sysroot references if $opt_dry_run; then for lib in $libs; do echo "removing references to $lt_sysroot and '=' prefixes from $lib" done else tmpdir=`func_mktempdir` for lib in $libs; do $SED -e "$sysroot_cmd s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ > $tmpdir/tmp-la mv -f $tmpdir/tmp-la $lib done ${RM}r "$tmpdir" fi fi if test -n "$finish_cmds$finish_eval" && test -n "$libdirs" && $opt_finishing; then for libdir in $libdirs; do if test -n "$finish_cmds"; then # Do each command in the finish commands. func_execute_cmds "$finish_cmds" 'admincmds="$admincmds '"$cmd"'"' fi if test -n "$finish_eval"; then # Do the single finish_eval. eval cmds=\"$finish_eval\" $opt_dry_run || eval "$cmds" || func_append admincmds " $cmds" fi done fi # Exit here if they wanted silent mode. $opt_quiet && exit $EXIT_SUCCESS if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then echo "----------------------------------------------------------------------" echo "Libraries have been installed in:" for libdir in $libdirs; do $ECHO " $libdir" done if test "false" = "$opt_finishing"; then echo echo "NOTE: finish_cmds were not executed during testing, so you must" echo "manually run ldconfig to add a given test directory, LIBDIR, to" echo "the search path for generated executables." fi echo echo "If you ever happen to want to link against installed libraries" echo "in a given directory, LIBDIR, you must either use libtool, and" echo "specify the full pathname of the library, or use the '-LLIBDIR'" echo "flag during linking and do at least one of the following:" if test -n "$shlibpath_var"; then echo " - add LIBDIR to the '$shlibpath_var' environment variable" echo " during execution" fi if test -n "$runpath_var"; then echo " - add LIBDIR to the '$runpath_var' environment variable" echo " during linking" fi if test -n "$hardcode_libdir_flag_spec"; then libdir=LIBDIR eval flag=\"$hardcode_libdir_flag_spec\" $ECHO " - use the '$flag' linker flag" fi if test -n "$admincmds"; then $ECHO " - have your system administrator run these commands:$admincmds" fi if test -f /etc/ld.so.conf; then echo " - have your system administrator add LIBDIR to '/etc/ld.so.conf'" fi echo echo "See any operating system documentation about shared libraries for" case $host in solaris2.[6789]|solaris2.1[0-9]) echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" echo "pages." ;; *) echo "more information, such as the ld(1) and ld.so(8) manual pages." ;; esac echo "----------------------------------------------------------------------" fi exit $EXIT_SUCCESS } test finish = "$opt_mode" && func_mode_finish ${1+"$@"} # func_mode_install arg... func_mode_install () { $debug_cmd # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). if test "$SHELL" = "$nonopt" || test /bin/sh = "$nonopt" || # Allow the use of GNU shtool's install command. case $nonopt in *shtool*) :;; *) false;; esac then # Aesthetically quote it. func_quote_arg pretty "$nonopt" install_prog="$func_quote_arg_result " arg=$1 shift else install_prog= arg=$nonopt fi # The real first argument should be the name of the installation program. # Aesthetically quote it. func_quote_arg pretty "$arg" func_append install_prog "$func_quote_arg_result" install_shared_prog=$install_prog case " $install_prog " in *[\\\ /]cp\ *) install_cp=: ;; *) install_cp=false ;; esac # We need to accept at least all the BSD install flags. dest= files= opts= prev= install_type= isdir=false stripme= no_mode=: for arg do arg2= if test -n "$dest"; then func_append files " $dest" dest=$arg continue fi case $arg in -d) isdir=: ;; -f) if $install_cp; then :; else prev=$arg fi ;; -g | -m | -o) prev=$arg ;; -s) stripme=" -s" continue ;; -*) ;; *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then if test X-m = "X$prev" && test -n "$install_override_mode"; then arg2=$install_override_mode no_mode=false fi prev= else dest=$arg continue fi ;; esac # Aesthetically quote the argument. func_quote_arg pretty "$arg" func_append install_prog " $func_quote_arg_result" if test -n "$arg2"; then func_quote_arg pretty "$arg2" fi func_append install_shared_prog " $func_quote_arg_result" done test -z "$install_prog" && \ func_fatal_help "you must specify an install program" test -n "$prev" && \ func_fatal_help "the '$prev' option requires an argument" if test -n "$install_override_mode" && $no_mode; then if $install_cp; then :; else func_quote_arg pretty "$install_override_mode" func_append install_shared_prog " -m $func_quote_arg_result" fi fi if test -z "$files"; then if test -z "$dest"; then func_fatal_help "no file or destination specified" else func_fatal_help "you must specify a destination" fi fi # Strip any trailing slash from the destination. func_stripname '' '/' "$dest" dest=$func_stripname_result # Check to see that the destination is a directory. test -d "$dest" && isdir=: if $isdir; then destdir=$dest destname= else func_dirname_and_basename "$dest" "" "." destdir=$func_dirname_result destname=$func_basename_result # Not a directory, so check to see that there is only one file specified. set dummy $files; shift test "$#" -gt 1 && \ func_fatal_help "'$dest' is not a directory" fi case $destdir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) for file in $files; do case $file in *.lo) ;; *) func_fatal_help "'$destdir' must be an absolute directory name" ;; esac done ;; esac # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic=$magic staticlibs= future_libdirs= current_libdirs= for file in $files; do # Do each installation. case $file in *.$libext) # Do the static libraries later. func_append staticlibs " $file" ;; *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "'$file' is not a valid libtool archive" library_names= old_library= relink_command= func_source "$file" # Add the libdir to current_libdirs if it is the destination. if test "X$destdir" = "X$libdir"; then case "$current_libdirs " in *" $libdir "*) ;; *) func_append current_libdirs " $libdir" ;; esac else # Note the libdir as a future libdir. case "$future_libdirs " in *" $libdir "*) ;; *) func_append future_libdirs " $libdir" ;; esac fi func_dirname "$file" "/" "" dir=$func_dirname_result func_append dir "$objdir" if test -n "$relink_command"; then # Strip any trailing slash from the destination. func_stripname '' '/' "$libdir" destlibdir=$func_stripname_result func_stripname '' '/' "$destdir" s_destdir=$func_stripname_result # Determine the prefix the user has applied to our future dir. inst_prefix_dir=`$ECHO "X$s_destdir" | $Xsed -e "s%$destlibdir\$%%"` # Don't allow the user to place us outside of our expected # location b/c this prevents finding dependent libraries that # are installed to the same prefix. # At present, this check doesn't affect windows .dll's that # are installed into $libdir/../bin (currently, that works fine) # but it's something to keep an eye on. test "$inst_prefix_dir" = "$destdir" && \ func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir" if test -n "$inst_prefix_dir"; then # Stick the inst_prefix_dir data into the link command. relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` else relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` fi func_warning "relinking '$file'" func_show_eval "$relink_command" \ 'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"' fi # See the names of the shared library. set dummy $library_names; shift if test -n "$1"; then realname=$1 shift srcname=$realname test -n "$relink_command" && srcname=${realname}T # Install the shared library and build the symlinks. func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ 'exit $?' tstripme=$stripme case $host_os in cygwin* | mingw* | windows* | pw32* | cegcc*) case $realname in *.dll.a) tstripme= ;; esac ;; os2*) case $realname in *_dll.a) tstripme= ;; esac ;; esac if test -n "$tstripme" && test -n "$striplib"; then func_show_eval "$striplib $destdir/$realname" 'exit $?' fi if test "$#" -gt 0; then # Delete the old symlinks, and create new ones. # Try 'ln -sf' first, because the 'ln' binary might depend on # the symlink we replace! Solaris /bin/ln does not understand -f, # so we also need to try rm && ln -s. for linkname do test "$linkname" != "$realname" \ && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" done fi # Do each command in the postinstall commands. lib=$destdir/$realname func_execute_cmds "$postinstall_cmds" 'exit $?' fi # Install the pseudo-library for information purposes. func_basename "$file" name=$func_basename_result instname=$dir/${name}i func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' # Maybe install the static library, too. test -n "$old_library" && func_append staticlibs " $dir/$old_library" ;; *.lo) # Install (i.e. copy) a libtool object. # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile=$destdir/$destname else func_basename "$file" destfile=$func_basename_result destfile=$destdir/$destfile fi # Deduce the name of the destination old-style object file. case $destfile in *.lo) func_lo2o "$destfile" staticdest=$func_lo2o_result ;; *.$objext) staticdest=$destfile destfile= ;; *) func_fatal_help "cannot copy a libtool object to '$destfile'" ;; esac # Install the libtool object if requested. test -n "$destfile" && \ func_show_eval "$install_prog $file $destfile" 'exit $?' # Install the old object if enabled. if test yes = "$build_old_libs"; then # Deduce the name of the old-style object file. func_lo2o "$file" staticobj=$func_lo2o_result func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' fi exit $EXIT_SUCCESS ;; *) # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile=$destdir/$destname else func_basename "$file" destfile=$func_basename_result destfile=$destdir/$destfile fi # If the file is missing, and there is a .exe on the end, strip it # because it is most likely a libtool script we actually want to # install stripped_ext= case $file in *.exe) if test ! -f "$file"; then func_stripname '' '.exe' "$file" file=$func_stripname_result stripped_ext=.exe fi ;; esac # Do a test to see if this is really a libtool program. case $host in *cygwin* | *mingw* | *windows*) if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" wrapper=$func_ltwrapper_scriptname_result else func_stripname '' '.exe' "$file" wrapper=$func_stripname_result fi ;; *) wrapper=$file ;; esac if func_ltwrapper_script_p "$wrapper"; then notinst_deplibs= relink_command= func_source "$wrapper" # Check the variables that should have been set. test -z "$generated_by_libtool_version" && \ func_fatal_error "invalid libtool wrapper script '$wrapper'" finalize=: for lib in $notinst_deplibs; do # Check to see that each library is installed. libdir= if test -f "$lib"; then func_source "$lib" fi libfile=$libdir/`$ECHO "$lib" | $SED 's%^.*/%%g'` if test -n "$libdir" && test ! -f "$libfile"; then func_warning "'$lib' has not been installed in '$libdir'" finalize=false fi done relink_command= func_source "$wrapper" outputname= if test no = "$fast_install" && test -n "$relink_command"; then $opt_dry_run || { if $finalize; then tmpdir=`func_mktempdir` func_basename "$file$stripped_ext" file=$func_basename_result outputname=$tmpdir/$file # Replace the output file specification. relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` $opt_quiet || { func_quote_arg expand,pretty "$relink_command" eval "func_echo $func_quote_arg_result" } if eval "$relink_command"; then : else func_error "error: relink '$file' with the above command before installing it" $opt_dry_run || ${RM}r "$tmpdir" continue fi file=$outputname else func_warning "cannot relink '$file'" fi } else # Install the binary that we compiled earlier. file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` fi fi # remove .exe since cygwin /usr/bin/install will append another # one anyway case $install_prog,$host in */usr/bin/install*,*cygwin*) case $file:$destfile in *.exe:*.exe) # this is ok ;; *.exe:*) destfile=$destfile.exe ;; *:*.exe) func_stripname '' '.exe' "$destfile" destfile=$func_stripname_result ;; esac ;; esac func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' $opt_dry_run || if test -n "$outputname"; then ${RM}r "$tmpdir" fi ;; esac done for file in $staticlibs; do func_basename "$file" name=$func_basename_result # Set up the ranlib parameters. oldlib=$destdir/$name func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result func_show_eval "$install_prog \$file \$oldlib" 'exit $?' if test -n "$stripme" && test -n "$old_striplib"; then func_show_eval "$old_striplib $tool_oldlib" 'exit $?' fi # Do each command in the postinstall commands. func_execute_cmds "$old_postinstall_cmds" 'exit $?' done test -n "$future_libdirs" && \ func_warning "remember to run '$progname --finish$future_libdirs'" if test -n "$current_libdirs"; then # Maybe just do a dry run. $opt_dry_run && current_libdirs=" -n$current_libdirs" exec_cmd='$SHELL "$progpath" $preserve_args --finish$current_libdirs' else exit $EXIT_SUCCESS fi } test install = "$opt_mode" && func_mode_install ${1+"$@"} # func_generate_dlsyms outputname originator pic_p # Extract symbols from dlprefiles and create ${outputname}S.o with # a dlpreopen symbol table. func_generate_dlsyms () { $debug_cmd my_outputname=$1 my_originator=$2 my_pic_p=${3-false} my_prefix=`$ECHO "$my_originator" | $SED 's%[^a-zA-Z0-9]%_%g'` my_dlsyms= if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then if test -n "$NM" && test -n "$global_symbol_pipe"; then my_dlsyms=${my_outputname}S.c else func_error "not configured to extract global symbols from dlpreopened files" fi fi if test -n "$my_dlsyms"; then case $my_dlsyms in "") ;; *.c) # Discover the nlist of each of the dlfiles. nlist=$output_objdir/$my_outputname.nm func_show_eval "$RM $nlist ${nlist}S ${nlist}T" # Parse the name list into a source file. func_verbose "creating $output_objdir/$my_dlsyms" $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ /* $my_dlsyms - symbol resolution table for '$my_outputname' dlsym emulation. */ /* Generated by $PROGRAM (GNU $PACKAGE) $VERSION */ #ifdef __cplusplus extern \"C\" { #endif #if defined __GNUC__ && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) #pragma GCC diagnostic ignored \"-Wstrict-prototypes\" #endif /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE /* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif #define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) /* External symbol declarations for the compiler. */\ " if test yes = "$dlself"; then func_verbose "generating symbol list for '$output'" $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" # Add our own program objects to the symbol list. progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` for progfile in $progfiles; do func_to_tool_file "$progfile" func_convert_file_msys_to_w32 func_verbose "extracting global C symbols from '$func_to_tool_file_result'" $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" done if test -n "$exclude_expsyms"; then $opt_dry_run || { eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi if test -n "$export_symbols_regex"; then $opt_dry_run || { eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi # Prepare the list of exported symbols if test -z "$export_symbols"; then export_symbols=$output_objdir/$outputname.exp $opt_dry_run || { $RM $export_symbols eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' case $host in *cygwin* | *mingw* | *windows* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' ;; esac } else $opt_dry_run || { eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' case $host in *cygwin* | *mingw* | *windows* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' ;; esac } fi fi for dlprefile in $dlprefiles; do func_verbose "extracting global C symbols from '$dlprefile'" func_basename "$dlprefile" name=$func_basename_result case $host in *cygwin* | *mingw* | *windows* | *cegcc* ) # if an import library, we need to obtain dlname if func_win32_import_lib_p "$dlprefile"; then func_tr_sh "$dlprefile" eval "curr_lafile=\$libfile_$func_tr_sh_result" dlprefile_dlbasename= if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then # Use subshell, to avoid clobbering current variable values dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` if test -n "$dlprefile_dlname"; then func_basename "$dlprefile_dlname" dlprefile_dlbasename=$func_basename_result else # no lafile. user explicitly requested -dlpreopen . $sharedlib_from_linklib_cmd "$dlprefile" dlprefile_dlbasename=$sharedlib_from_linklib_result fi fi $opt_dry_run || { if test -n "$dlprefile_dlbasename"; then eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' else func_warning "Could not compute DLL name from $name" eval '$ECHO ": $name " >> "$nlist"' fi func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 case $host in i[3456]86-*-mingw32*) eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" ;; *) eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/__nm_//' >> '$nlist'" ;; esac } else # not an import lib $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } fi ;; *) $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } ;; esac done $opt_dry_run || { # Make sure we have at least an empty file. test -f "$nlist" || : > "$nlist" if test -n "$exclude_expsyms"; then $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T $MV "$nlist"T "$nlist" fi # Try sorting and uniquifying the output. if $GREP -v "^: " < "$nlist" | if sort -k 3 /dev/null 2>&1; then sort -k 3 else sort +2 fi | uniq > "$nlist"S; then : else $GREP -v "^: " < "$nlist" > "$nlist"S fi if test -f "$nlist"S; then eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' else echo '/* NONE */' >> "$output_objdir/$my_dlsyms" fi func_show_eval '$RM "${nlist}I"' if test -n "$global_symbol_to_import"; then eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I' fi echo >> "$output_objdir/$my_dlsyms" "\ /* The mapping between symbol names and symbols. */ typedef struct { const char *name; void *address; } lt_dlsymlist; extern LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[];\ " if test -s "$nlist"I; then echo >> "$output_objdir/$my_dlsyms" "\ static void lt_syminit(void) { LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols; for (; symbol->name; ++symbol) {" $SED 's/.*/ if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I >> "$output_objdir/$my_dlsyms" echo >> "$output_objdir/$my_dlsyms" "\ } }" fi echo >> "$output_objdir/$my_dlsyms" "\ LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[] = { {\"$my_originator\", (void *) 0}," if test -s "$nlist"I; then echo >> "$output_objdir/$my_dlsyms" "\ {\"@INIT@\", (void *) <_syminit}," fi case $need_lib_prefix in no) eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; *) eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; esac echo >> "$output_objdir/$my_dlsyms" "\ {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt_${my_prefix}_LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif\ " } # !$opt_dry_run pic_flag_for_symtable= case "$compile_command " in *" -static "*) ;; *) case $host in # compiling the symbol table file with pic_flag works around # a FreeBSD bug that causes programs to crash when -lm is # linked before any other PIC object. But we must not use # pic_flag when linking with -static. The problem exists in # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; *-*-hpux*) pic_flag_for_symtable=" $pic_flag" ;; *) $my_pic_p && pic_flag_for_symtable=" $pic_flag" ;; esac ;; esac symtab_cflags= for arg in $LTCFLAGS; do case $arg in -pie | -fpie | -fPIE) ;; *) func_append symtab_cflags " $arg" ;; esac done # Now compile the dynamic symbol file. func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' # Clean up the generated files. func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T" "${nlist}I"' # Transform the symbol file into the correct name. symfileobj=$output_objdir/${my_outputname}S.$objext case $host in *cygwin* | *mingw* | *windows* | *cegcc* ) if test -f "$output_objdir/$my_outputname.def"; then compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` else compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` fi ;; *) compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` ;; esac ;; *) func_fatal_error "unknown suffix for '$my_dlsyms'" ;; esac else # We keep going just in case the user didn't refer to # lt_preloaded_symbols. The linker will fail if global_symbol_pipe # really was required. # Nullify the symbol file. compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` fi } # func_cygming_gnu_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is a GNU/binutils-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_gnu_implib_p () { $debug_cmd func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` test -n "$func_cygming_gnu_implib_tmp" } # func_cygming_ms_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is an MS-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_ms_implib_p () { $debug_cmd func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` test -n "$func_cygming_ms_implib_tmp" } # func_win32_libid arg # return the library type of file 'arg' # # Need a lot of goo to handle *both* DLLs and import libs # Has to be a shell function in order to 'eat' the argument # that is supplied when $file_magic_command is called. # Despite the name, also deal with 64 bit binaries. func_win32_libid () { $debug_cmd win32_libid_type=unknown win32_fileres=`file -L $1 2>/dev/null` case $win32_fileres in *ar\ archive\ import\ library*) # definitely import win32_libid_type="x86 archive import" ;; *ar\ archive*) # could be an import, or static # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64|pe-aarch64)' >/dev/null; then case $nm_interface in "MS dumpbin") if func_cygming_ms_implib_p "$1" || func_cygming_gnu_implib_p "$1" then win32_nmres=import else win32_nmres= fi ;; *) func_to_tool_file "$1" func_convert_file_msys_to_w32 win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | $SED -n -e ' 1,100{ / I /{ s|.*|import| p q } }'` ;; esac case $win32_nmres in import*) win32_libid_type="x86 archive import";; *) win32_libid_type="x86 archive static";; esac fi ;; *DLL*) win32_libid_type="x86 DLL" ;; *executable*) # but shell scripts are "executable" too... case $win32_fileres in *MS\ Windows\ PE\ Intel*) win32_libid_type="x86 DLL" ;; esac ;; esac $ECHO "$win32_libid_type" } # func_cygming_dll_for_implib ARG # # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib () { $debug_cmd sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` } # func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs # # The is the core of a fallback implementation of a # platform-specific function to extract the name of the # DLL associated with the specified import library LIBNAME. # # SECTION_NAME is either .idata$6 or .idata$7, depending # on the platform and compiler that created the implib. # # Echos the name of the DLL associated with the # specified import library. func_cygming_dll_for_implib_fallback_core () { $debug_cmd match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` $OBJDUMP -s --section "$1" "$2" 2>/dev/null | $SED '/^Contents of section '"$match_literal"':/{ # Place marker at beginning of archive member dllname section s/.*/====MARK====/ p d } # These lines can sometimes be longer than 43 characters, but # are always uninteresting /:[ ]*file format pe[i]\{,1\}-/d /^In archive [^:]*:/d # Ensure marker is printed /^====MARK====/p # Remove all lines with less than 43 characters /^.\{43\}/!d # From remaining lines, remove first 43 characters s/^.\{43\}//' | $SED -n ' # Join marker and all lines until next marker into a single line /^====MARK====/ b para H $ b para b :para x s/\n//g # Remove the marker s/^====MARK====// # Remove trailing dots and whitespace s/[\. \t]*$// # Print /./p' | # we now have a list, one entry per line, of the stringified # contents of the appropriate section of all members of the # archive that possess that section. Heuristic: eliminate # all those that have a first or second character that is # a '.' (that is, objdump's representation of an unprintable # character.) This should work for all archives with less than # 0x302f exports -- but will fail for DLLs whose name actually # begins with a literal '.' or a single character followed by # a '.'. # # Of those that remain, print the first one. $SED -e '/^\./d;/^.\./d;q' } # func_cygming_dll_for_implib_fallback ARG # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # # This fallback implementation is for use when $DLLTOOL # does not support the --identify-strict option. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib_fallback () { $debug_cmd if func_cygming_gnu_implib_p "$1"; then # binutils import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` elif func_cygming_ms_implib_p "$1"; then # ms-generated import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` else # unknown sharedlib_from_linklib_result= fi } # func_extract_an_archive dir oldlib func_extract_an_archive () { $debug_cmd f_ex_an_ar_dir=$1; shift f_ex_an_ar_oldlib=$1 if test yes = "$lock_old_archive_extraction"; then lockfile=$f_ex_an_ar_oldlib.lock until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done fi func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ 'stat=$?; rm -f "$lockfile"; exit $stat' if test yes = "$lock_old_archive_extraction"; then $opt_dry_run || rm -f "$lockfile" fi if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then : else func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" fi } # func_extract_archives gentop oldlib ... func_extract_archives () { $debug_cmd my_gentop=$1; shift my_oldlibs=${1+"$@"} my_oldobjs= my_xlib= my_xabs= my_xdir= for my_xlib in $my_oldlibs; do # Extract the objects. case $my_xlib in [\\/]* | [A-Za-z]:[\\/]*) my_xabs=$my_xlib ;; *) my_xabs=`pwd`"/$my_xlib" ;; esac func_basename "$my_xlib" my_xlib=$func_basename_result my_xlib_u=$my_xlib while :; do case " $extracted_archives " in *" $my_xlib_u "*) func_arith $extracted_serial + 1 extracted_serial=$func_arith_result my_xlib_u=lt$extracted_serial-$my_xlib ;; *) break ;; esac done extracted_archives="$extracted_archives $my_xlib_u" my_xdir=$my_gentop/$my_xlib_u func_mkdir_p "$my_xdir" case $host in *-darwin*) func_verbose "Extracting $my_xabs" # Do not bother doing anything if just a dry run $opt_dry_run || { darwin_orig_dir=`pwd` cd $my_xdir || exit $? darwin_archive=$my_xabs darwin_curdir=`pwd` func_basename "$darwin_archive" darwin_base_archive=$func_basename_result darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` if test -n "$darwin_arches"; then darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` darwin_arch= func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" for darwin_arch in $darwin_arches; do func_mkdir_p "unfat-$$/$darwin_base_archive-$darwin_arch" $LIPO -thin $darwin_arch -output "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" "$darwin_archive" cd "unfat-$$/$darwin_base_archive-$darwin_arch" func_extract_an_archive "`pwd`" "$darwin_base_archive" cd "$darwin_curdir" $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" done # $darwin_arches ## Okay now we've a bunch of thin objects, gotta fatten them up :) darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$sed_basename" | sort -u` darwin_file= darwin_files= for darwin_file in $darwin_filelist; do darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` $LIPO -create -output "$darwin_file" $darwin_files done # $darwin_filelist $RM -rf unfat-$$ cd "$darwin_orig_dir" else cd $darwin_orig_dir func_extract_an_archive "$my_xdir" "$my_xabs" fi # $darwin_arches } # !$opt_dry_run ;; *) func_extract_an_archive "$my_xdir" "$my_xabs" ;; esac my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` done func_extract_archives_result=$my_oldobjs } # func_emit_wrapper [arg=no] # # Emit a libtool wrapper script on stdout. # Don't directly open a file because we may want to # incorporate the script contents within a cygwin/mingw/windows # wrapper executable. Must ONLY be called from within # func_mode_link because it depends on a number of variables # set therein. # # ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR # variable will take. If 'yes', then the emitted script # will assume that the directory where it is stored is # the $objdir directory. This is a cygwin/mingw/windows-specific # behavior. func_emit_wrapper () { func_emit_wrapper_arg1=${1-no} $ECHO "\ #! $SHELL # $output - temporary wrapper script for $objdir/$outputname # Generated by $PROGRAM (GNU $PACKAGE) $VERSION # # The $output program cannot be directly executed until all the libtool # libraries that it depends on are installed. # # This wrapper script should never be moved out of the build directory. # If it is, it will not operate correctly. # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='$sed_quote_subst' # Be Bourne compatible if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH relink_command=\"$relink_command\" # This environment variable determines our operation mode. if test \"\$libtool_install_magic\" = \"$magic\"; then # install mode needs the following variables: generated_by_libtool_version='$macro_version' notinst_deplibs='$notinst_deplibs' else # When we are sourced in execute mode, \$file and \$ECHO are already set. if test \"\$libtool_execute_magic\" != \"$magic\"; then file=\"\$0\"" func_quote_arg pretty "$ECHO" qECHO=$func_quote_arg_result $ECHO "\ # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } ECHO=$qECHO fi # Very basic option parsing. These options are (a) specific to # the libtool wrapper, (b) are identical between the wrapper # /script/ and the wrapper /executable/ that is used only on # windows platforms, and (c) all begin with the string "--lt-" # (application programs are unlikely to have options that match # this pattern). # # There are only two supported options: --lt-debug and # --lt-dump-script. There is, deliberately, no --lt-help. # # The first argument to this parsing function should be the # script's $0 value, followed by "$@". lt_option_debug= func_parse_lt_options () { lt_script_arg0=\$0 shift for lt_opt do case \"\$lt_opt\" in --lt-debug) lt_option_debug=1 ;; --lt-dump-script) lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` cat \"\$lt_dump_D/\$lt_dump_F\" exit 0 ;; --lt-*) \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 exit 1 ;; esac done # Print the debug banner immediately: if test -n \"\$lt_option_debug\"; then echo \"$outputname:$output:\$LINENO: libtool wrapper (GNU $PACKAGE) $VERSION\" 1>&2 fi } # Used when --lt-debug. Prints its arguments to stdout # (redirection is the responsibility of the caller) func_lt_dump_args () { lt_dump_args_N=1; for lt_arg do \$ECHO \"$outputname:$output:\$LINENO: newargv[\$lt_dump_args_N]: \$lt_arg\" lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` done } # Core function for launching the target application func_exec_program_core () { " case $host in # Backslashes separate directories on plain windows *-*-mingw* | *-*-windows* | *-*-os2* | *-cegcc*) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} " ;; *) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir/\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir/\$program\" \${1+\"\$@\"} " ;; esac $ECHO "\ \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 exit 1 } # A function to encapsulate launching the target application # Strips options in the --lt-* namespace from \$@ and # launches target application with the remaining arguments. func_exec_program () { case \" \$* \" in *\\ --lt-*) for lt_wr_arg do case \$lt_wr_arg in --lt-*) ;; *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; esac shift done ;; esac func_exec_program_core \${1+\"\$@\"} } # Parse options func_parse_lt_options \"\$0\" \${1+\"\$@\"} # Find the directory that this script lives in. thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` test \"x\$thisdir\" = \"x\$file\" && thisdir=. # Follow symbolic links until we get to the real thisdir. file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` while test -n \"\$file\"; do destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` # If there was a directory component, then change thisdir. if test \"x\$destdir\" != \"x\$file\"; then case \"\$destdir\" in [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; *) thisdir=\"\$thisdir/\$destdir\" ;; esac fi file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` done # Usually 'no', except on cygwin/mingw/windows when embedded into # the cwrapper. WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then # special case for '.' if test \"\$thisdir\" = \".\"; then thisdir=\`pwd\` fi # remove .libs from thisdir case \"\$thisdir\" in *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; $objdir ) thisdir=. ;; esac fi # Try to get the absolute directory name. absdir=\`cd \"\$thisdir\" && pwd\` test -n \"\$absdir\" && thisdir=\"\$absdir\" " if test yes = "$fast_install"; then $ECHO "\ program=lt-'$outputname'$exeext progdir=\"\$thisdir/$objdir\" if test ! -f \"\$progdir/\$program\" || { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | $SED 1q\`; \\ test \"X\$file\" != \"X\$progdir/\$program\"; }; then file=\"\$\$-\$program\" if test ! -d \"\$progdir\"; then $MKDIR \"\$progdir\" else $RM \"\$progdir/\$file\" fi" $ECHO "\ # relink executable if necessary if test -n \"\$relink_command\"; then if relink_command_output=\`eval \$relink_command 2>&1\`; then : else \$ECHO \"\$relink_command_output\" >&2 $RM \"\$progdir/\$file\" exit 1 fi fi $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || { $RM \"\$progdir/\$program\"; $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } $RM \"\$progdir/\$file\" fi" else $ECHO "\ program='$outputname' progdir=\"\$thisdir/$objdir\" " fi $ECHO "\ if test -f \"\$progdir/\$program\"; then" # fixup the dll searchpath if we need to. # # Fix the DLL searchpath if we need to. Do this before prepending # to shlibpath, because on Windows, both are PATH and uninstalled # libraries must come first. if test -n "$dllsearchpath"; then $ECHO "\ # Add the dll search path components to the executable PATH PATH=$dllsearchpath:\$PATH " fi # Export our shlibpath_var if we have one. if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then $ECHO "\ # Add our own library path to $shlibpath_var $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" # Some systems cannot cope with colon-terminated $shlibpath_var # The second colon is a workaround for a bug in BeOS R4 sed $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` export $shlibpath_var " fi $ECHO "\ if test \"\$libtool_execute_magic\" != \"$magic\"; then # Run the actual program with our arguments. func_exec_program \${1+\"\$@\"} fi else # The program doesn't exist. \$ECHO \"\$0: error: '\$progdir/\$program' does not exist\" 1>&2 \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 exit 1 fi fi\ " } # func_emit_cwrapperexe_src # emit the source code for a wrapper executable on stdout # Must ONLY be called from within func_mode_link because # it depends on a number of variable set therein. func_emit_cwrapperexe_src () { cat < #include #if defined _WIN32 && !defined __GNUC__ # include # include # include #else # include # include # ifdef __CYGWIN__ # include # endif #endif #include #include #include #include #include #include #include #include #define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) /* declarations of non-ANSI functions */ #if defined __MINGW32__ # ifdef __STRICT_ANSI__ _CRTIMP int __cdecl _putenv (const char *); # endif #elif defined __CYGWIN__ # ifdef __STRICT_ANSI__ char *realpath (const char *, char *); int putenv (char *); int setenv (const char *, const char *, int); # endif /* #elif defined other_platform || defined ... */ #endif /* portability defines, excluding path handling macros */ #if defined _MSC_VER # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv # define S_IXUSR _S_IEXEC #elif defined __MINGW32__ # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv #elif defined __CYGWIN__ # define HAVE_SETENV # define FOPEN_WB "wb" /* #elif defined other platforms ... */ #endif #if defined PATH_MAX # define LT_PATHMAX PATH_MAX #elif defined MAXPATHLEN # define LT_PATHMAX MAXPATHLEN #else # define LT_PATHMAX 1024 #endif #ifndef S_IXOTH # define S_IXOTH 0 #endif #ifndef S_IXGRP # define S_IXGRP 0 #endif /* path handling portability macros */ #ifndef DIR_SEPARATOR # define DIR_SEPARATOR '/' # define PATH_SEPARATOR ':' #endif #if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \ defined __OS2__ # define HAVE_DOS_BASED_FILE_SYSTEM # define FOPEN_WB "wb" # ifndef DIR_SEPARATOR_2 # define DIR_SEPARATOR_2 '\\' # endif # ifndef PATH_SEPARATOR_2 # define PATH_SEPARATOR_2 ';' # endif #endif #ifndef DIR_SEPARATOR_2 # define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) #else /* DIR_SEPARATOR_2 */ # define IS_DIR_SEPARATOR(ch) \ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) #endif /* DIR_SEPARATOR_2 */ #ifndef PATH_SEPARATOR_2 # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) #else /* PATH_SEPARATOR_2 */ # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) #endif /* PATH_SEPARATOR_2 */ #ifndef FOPEN_WB # define FOPEN_WB "w" #endif #ifndef _O_BINARY # define _O_BINARY 0 #endif #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) #define XFREE(stale) do { \ if (stale) { free (stale); stale = 0; } \ } while (0) #if defined LT_DEBUGWRAPPER static int lt_debug = 1; #else static int lt_debug = 0; #endif const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ void *xmalloc (size_t num); char *xstrdup (const char *string); const char *base_name (const char *name); char *find_executable (const char *wrapper); char *chase_symlinks (const char *pathspec); int make_executable (const char *path); int check_executable (const char *path); char *strendzap (char *str, const char *pat); void lt_debugprintf (const char *file, int line, const char *fmt, ...); void lt_fatal (const char *file, int line, const char *message, ...); static const char *nonnull (const char *s); static const char *nonempty (const char *s); void lt_setenv (const char *name, const char *value); char *lt_extend_str (const char *orig_value, const char *add, int to_end); void lt_update_exe_path (const char *name, const char *value); void lt_update_lib_path (const char *name, const char *value); char **prepare_spawn (char **argv); void lt_dump_script (FILE *f); EOF cat <= 0) && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) return 1; else return 0; } int make_executable (const char *path) { int rval = 0; struct stat st; lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", nonempty (path)); if ((!path) || (!*path)) return 0; if (stat (path, &st) >= 0) { rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); } return rval; } /* Searches for the full path of the wrapper. Returns newly allocated full path name if found, NULL otherwise Does not chase symlinks, even on platforms that support them. */ char * find_executable (const char *wrapper) { int has_slash = 0; const char *p; const char *p_next; /* static buffer for getcwd */ char tmp[LT_PATHMAX + 1]; size_t tmp_len; char *concat_name; lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", nonempty (wrapper)); if ((wrapper == NULL) || (*wrapper == '\0')) return NULL; /* Absolute path? */ #if defined HAVE_DOS_BASED_FILE_SYSTEM if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } else { #endif if (IS_DIR_SEPARATOR (wrapper[0])) { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } #if defined HAVE_DOS_BASED_FILE_SYSTEM } #endif for (p = wrapper; *p; p++) if (*p == '/') { has_slash = 1; break; } if (!has_slash) { /* no slashes; search PATH */ const char *path = getenv ("PATH"); if (path != NULL) { for (p = path; *p; p = p_next) { const char *q; size_t p_len; for (q = p; *q; q++) if (IS_PATH_SEPARATOR (*q)) break; p_len = (size_t) (q - p); p_next = (*q == '\0' ? q : q + 1); if (p_len == 0) { /* empty path: current directory */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); } else { concat_name = XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, p, p_len); concat_name[p_len] = '/'; strcpy (concat_name + p_len + 1, wrapper); } if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } } /* not found in PATH; assume curdir */ } /* Relative path | not found in path: prepend cwd */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); return NULL; } char * chase_symlinks (const char *pathspec) { #ifndef S_ISLNK return xstrdup (pathspec); #else char buf[LT_PATHMAX]; struct stat s; char *tmp_pathspec = xstrdup (pathspec); char *p; int has_symlinks = 0; while (strlen (tmp_pathspec) && !has_symlinks) { lt_debugprintf (__FILE__, __LINE__, "checking path component for symlinks: %s\n", tmp_pathspec); if (lstat (tmp_pathspec, &s) == 0) { if (S_ISLNK (s.st_mode) != 0) { has_symlinks = 1; break; } /* search backwards for last DIR_SEPARATOR */ p = tmp_pathspec + strlen (tmp_pathspec) - 1; while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) p--; if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) { /* no more DIR_SEPARATORS left */ break; } *p = '\0'; } else { lt_fatal (__FILE__, __LINE__, "error accessing file \"%s\": %s", tmp_pathspec, nonnull (strerror (errno))); } } XFREE (tmp_pathspec); if (!has_symlinks) { return xstrdup (pathspec); } tmp_pathspec = realpath (pathspec, buf); if (tmp_pathspec == 0) { lt_fatal (__FILE__, __LINE__, "could not follow symlinks for %s", pathspec); } return xstrdup (tmp_pathspec); #endif } char * strendzap (char *str, const char *pat) { size_t len, patlen; assert (str != NULL); assert (pat != NULL); len = strlen (str); patlen = strlen (pat); if (patlen <= len) { str += len - patlen; if (STREQ (str, pat)) *str = '\0'; } return str; } void lt_debugprintf (const char *file, int line, const char *fmt, ...) { va_list args; if (lt_debug) { (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); va_start (args, fmt); (void) vfprintf (stderr, fmt, args); va_end (args); } } static void lt_error_core (int exit_status, const char *file, int line, const char *mode, const char *message, va_list ap) { fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); vfprintf (stderr, message, ap); fprintf (stderr, ".\n"); if (exit_status >= 0) exit (exit_status); } void lt_fatal (const char *file, int line, const char *message, ...) { va_list ap; va_start (ap, message); lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); va_end (ap); } static const char * nonnull (const char *s) { return s ? s : "(null)"; } static const char * nonempty (const char *s) { return (s && !*s) ? "(empty)" : nonnull (s); } void lt_setenv (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_setenv) setting '%s' to '%s'\n", nonnull (name), nonnull (value)); { #ifdef HAVE_SETENV /* always make a copy, for consistency with !HAVE_SETENV */ char *str = xstrdup (value); setenv (name, str, 1); #else size_t len = strlen (name) + 1 + strlen (value) + 1; char *str = XMALLOC (char, len); sprintf (str, "%s=%s", name, value); if (putenv (str) != EXIT_SUCCESS) { XFREE (str); } #endif } } char * lt_extend_str (const char *orig_value, const char *add, int to_end) { char *new_value; if (orig_value && *orig_value) { size_t orig_value_len = strlen (orig_value); size_t add_len = strlen (add); new_value = XMALLOC (char, add_len + orig_value_len + 1); if (to_end) { strcpy (new_value, orig_value); strcpy (new_value + orig_value_len, add); } else { strcpy (new_value, add); strcpy (new_value + add_len, orig_value); } } else { new_value = xstrdup (add); } return new_value; } void lt_update_exe_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); /* some systems can't cope with a ':'-terminated path #' */ size_t len = strlen (new_value); while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1])) { new_value[--len] = '\0'; } lt_setenv (name, new_value); XFREE (new_value); } } void lt_update_lib_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); lt_setenv (name, new_value); XFREE (new_value); } } EOF case $host_os in mingw* | windows*) cat <<"EOF" /* Prepares an argument vector before calling spawn(). Note that spawn() does not by itself call the command interpreter (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx(&v); v.dwPlatformId == VER_PLATFORM_WIN32_NT; }) ? "cmd.exe" : "command.com"). Instead it simply concatenates the arguments, separated by ' ', and calls CreateProcess(). We must quote the arguments since Win32 CreateProcess() interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a special way: - Space and tab are interpreted as delimiters. They are not treated as delimiters if they are surrounded by double quotes: "...". - Unescaped double quotes are removed from the input. Their only effect is that within double quotes, space and tab are treated like normal characters. - Backslashes not followed by double quotes are not special. - But 2*n+1 backslashes followed by a double quote become n backslashes followed by a double quote (n >= 0): \" -> " \\\" -> \" \\\\\" -> \\" */ #define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" #define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" char ** prepare_spawn (char **argv) { size_t argc; char **new_argv; size_t i; /* Count number of arguments. */ for (argc = 0; argv[argc] != NULL; argc++) ; /* Allocate new argument vector. */ new_argv = XMALLOC (char *, argc + 1); /* Put quoted arguments into the new argument vector. */ for (i = 0; i < argc; i++) { const char *string = argv[i]; if (string[0] == '\0') new_argv[i] = xstrdup ("\"\""); else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) { int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); size_t length; unsigned int backslashes; const char *s; char *quoted_string; char *p; length = 0; backslashes = 0; if (quote_around) length++; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') length += backslashes + 1; length++; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) length += backslashes + 1; quoted_string = XMALLOC (char, length + 1); p = quoted_string; backslashes = 0; if (quote_around) *p++ = '"'; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') { unsigned int j; for (j = backslashes + 1; j > 0; j--) *p++ = '\\'; } *p++ = c; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) { unsigned int j; for (j = backslashes; j > 0; j--) *p++ = '\\'; *p++ = '"'; } *p = '\0'; new_argv[i] = quoted_string; } else new_argv[i] = (char *) string; } new_argv[argc] = NULL; return new_argv; } EOF ;; esac cat <<"EOF" void lt_dump_script (FILE* f) { EOF func_emit_wrapper yes | $SED -n -e ' s/^\(.\{79\}\)\(..*\)/\1\ \2/ h s/\([\\"]\)/\\\1/g s/$/\\n/ s/\([^\n]*\).*/ fputs ("\1", f);/p g D' cat <<"EOF" } EOF } # end: func_emit_cwrapperexe_src # func_win32_import_lib_p ARG # True if ARG is an import lib, as indicated by $file_magic_cmd func_win32_import_lib_p () { $debug_cmd case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in *import*) : ;; *) false ;; esac } # func_suncc_cstd_abi # !!ONLY CALL THIS FOR SUN CC AFTER $compile_command IS FULLY EXPANDED!! # Several compiler flags select an ABI that is incompatible with the # Cstd library. Avoid specifying it if any are in CXXFLAGS. func_suncc_cstd_abi () { $debug_cmd case " $compile_command " in *" -compat=g "*|*\ -std=c++[0-9][0-9]\ *|*" -library=stdcxx4 "*|*" -library=stlport4 "*) suncc_use_cstd_abi=no ;; *) suncc_use_cstd_abi=yes ;; esac } # func_mode_link arg... func_mode_link () { $debug_cmd case $host in *-*-cygwin* | *-*-mingw* | *-*-windows* | *-*-pw32* | *-*-os2* | *-cegcc*) # It is impossible to link a dll without this setting, and # we shouldn't force the makefile maintainer to figure out # what system we are compiling for in order to pass an extra # flag for every libtool invocation. # allow_undefined=no # FIXME: Unfortunately, there are problems with the above when trying # to make a dll that has undefined symbols, in which case not # even a static library is built. For now, we need to specify # -no-undefined on the libtool link line when we can be certain # that all symbols are satisfied, otherwise we get a static library. allow_undefined=yes ;; *) allow_undefined=yes ;; esac libtool_args=$nonopt base_compile="$nonopt $@" compile_command=$nonopt finalize_command=$nonopt compile_rpath= compile_rpath_tail= finalize_rpath= compile_shlibpath= finalize_shlibpath= convenience= old_convenience= deplibs= old_deplibs= compiler_flags= linker_flags= dllsearchpath= lib_search_path=`pwd` inst_prefix_dir= new_inherited_linker_flags= avoid_version=no bindir= dlfiles= dlprefiles= dlself=no export_dynamic=no export_symbols= export_symbols_regex= generated= libobjs= ltlibs= module=no no_install=no objs= os2dllname= non_pic_objects= precious_files_regex= prefer_static_libs=no preload=false prev= prevarg= release= rpath= xrpath= perm_rpath= temp_rpath= temp_rpath_tail= thread_safe=no vinfo= vinfo_number=no weak_libs= rpath_arg= single_module=$wl-single_module func_infer_tag $base_compile # We need to know -static, to get the right output filenames. for arg do case $arg in -shared) test yes != "$build_libtool_libs" \ && func_fatal_configuration "cannot build a shared library" build_old_libs=no break ;; -all-static | -static | -static-libtool-libs) case $arg in -all-static) if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then func_warning "complete static linking is impossible in this configuration" fi if test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; -static) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=built ;; -static-libtool-libs) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; esac build_libtool_libs=no build_old_libs=yes break ;; esac done # See if our shared archives depend on static archives. test -n "$old_archive_from_new_cmds" && build_old_libs=yes # Go through the arguments, transforming them on the way. while test "$#" -gt 0; do arg=$1 shift func_quote_arg pretty,unquoted "$arg" qarg=$func_quote_arg_unquoted_result func_append libtool_args " $func_quote_arg_result" # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in output) func_append compile_command " @OUTPUT@" func_append finalize_command " @OUTPUT@" ;; esac case $prev in bindir) bindir=$arg prev= continue ;; dlfiles|dlprefiles) $preload || { # Add the symbol object into the linking commands. func_append compile_command " @SYMFILE@" func_append finalize_command " @SYMFILE@" preload=: } case $arg in *.la | *.lo) ;; # We handle these cases below. force) if test no = "$dlself"; then dlself=needless export_dynamic=yes fi prev= continue ;; self) if test dlprefiles = "$prev"; then dlself=yes elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then dlself=yes else dlself=needless export_dynamic=yes fi prev= continue ;; *) if test dlfiles = "$prev"; then func_append dlfiles " $arg" else func_append dlprefiles " $arg" fi prev= continue ;; esac ;; expsyms) export_symbols=$arg test -f "$arg" \ || func_fatal_error "symbol file '$arg' does not exist" prev= continue ;; expsyms_regex) export_symbols_regex=$arg prev= continue ;; framework) case $host in *-*-darwin*) case "$deplibs " in *" $qarg.ltframework "*) ;; *) func_append deplibs " $qarg.ltframework" # this is fixed later ;; esac ;; esac prev= continue ;; inst_prefix) inst_prefix_dir=$arg prev= continue ;; mllvm) # Clang does not use LLVM to link, so we can simply discard any # '-mllvm $arg' options when doing the link step. prev= continue ;; objectlist) if test -f "$arg"; then save_arg=$arg moreargs= for fil in `cat "$save_arg"` do # func_append moreargs " $fil" arg=$fil # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test none = "$pic_object" && test none = "$non_pic_object"; then func_fatal_error "cannot find name of object for '$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result if test none != "$pic_object"; then # Prepend the subdirectory the object is found in. pic_object=$xdir$pic_object if test dlfiles = "$prev"; then if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test dlprefiles = "$prev"; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg=$pic_object fi # Non-PIC object. if test none != "$non_pic_object"; then # Prepend the subdirectory the object is found in. non_pic_object=$xdir$non_pic_object # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test none = "$pic_object"; then arg=$non_pic_object fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object=$pic_object func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "'$arg' is not a valid libtool object" fi fi done else func_fatal_error "link input file '$arg' does not exist" fi arg=$save_arg prev= continue ;; os2dllname) os2dllname=$arg prev= continue ;; precious_regex) precious_files_regex=$arg prev= continue ;; release) release=-$arg prev= continue ;; rpath | xrpath) # We need an absolute path. case $arg in [\\/]* | [A-Za-z]:[\\/]*) ;; *) func_fatal_error "argument to -rpath is not absolute: $arg" ;; esac if test rpath = "$prev"; then case "$rpath " in *" $arg "*) ;; *) func_append rpath " $arg" ;; esac else case "$xrpath " in *" $arg "*) ;; *) func_append xrpath " $arg" ;; esac fi prev= continue ;; shrext) shrext_cmds=$arg prev= continue ;; weak) func_append weak_libs " $arg" prev= continue ;; xassembler) func_append compiler_flags " -Xassembler $qarg" prev= func_append compile_command " -Xassembler $qarg" func_append finalize_command " -Xassembler $qarg" continue ;; xcclinker) func_append linker_flags " $qarg" func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xcompiler) func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xlinker) func_append linker_flags " $qarg" func_append compiler_flags " $wl$qarg" prev= func_append compile_command " $wl$qarg" func_append finalize_command " $wl$qarg" continue ;; *) eval "$prev=\"\$arg\"" prev= continue ;; esac fi # test -n "$prev" prevarg=$arg case $arg in -all-static) if test -n "$link_static_flag"; then # See comment for -static flag below, for more details. func_append compile_command " $link_static_flag" func_append finalize_command " $link_static_flag" fi continue ;; -allow-undefined) # FIXME: remove this flag sometime in the future. func_fatal_error "'-allow-undefined' must not be used because it is the default" ;; -avoid-version) avoid_version=yes continue ;; -bindir) prev=bindir continue ;; -dlopen) prev=dlfiles continue ;; -dlpreopen) prev=dlprefiles continue ;; -export-dynamic) export_dynamic=yes continue ;; -export-symbols | -export-symbols-regex) if test -n "$export_symbols" || test -n "$export_symbols_regex"; then func_fatal_error "more than one -exported-symbols argument is not allowed" fi if test X-export-symbols = "X$arg"; then prev=expsyms else prev=expsyms_regex fi continue ;; -framework) prev=framework continue ;; -inst-prefix-dir) prev=inst_prefix continue ;; # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* # so, if we see these flags be careful not to treat them like -L -L[A-Z][A-Z]*:*) case $with_gcc/$host in no/*-*-irix* | /*-*-irix*) func_append compile_command " $arg" func_append finalize_command " $arg" ;; esac continue ;; -L*) func_stripname "-L" '' "$arg" if test -z "$func_stripname_result"; then if test "$#" -gt 0; then func_fatal_error "require no space between '-L' and '$1'" else func_fatal_error "need path for '-L' option" fi fi func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) absdir=`cd "$dir" && pwd` test -z "$absdir" && \ func_fatal_error "cannot determine absolute directory name of '$dir'" dir=$absdir ;; esac case "$deplibs " in *" -L$dir "* | *" $arg "*) # Will only happen for absolute or sysroot arguments ;; *) # Preserve sysroot, but never include relative directories case $dir in [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; *) func_append deplibs " -L$dir" ;; esac func_append lib_search_path " $dir" ;; esac case $host in *-*-cygwin* | *-*-mingw* | *-*-windows* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` case :$dllsearchpath: in *":$dir:"*) ;; ::) dllsearchpath=$dir;; *) func_append dllsearchpath ":$dir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac continue ;; -l*) if test X-lc = "X$arg" || test X-lm = "X$arg"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-windows* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) # These systems don't actually have a C or math library (as such) continue ;; *-*-os2*) # These systems don't actually have a C library (as such) test X-lc = "X$arg" && continue ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-midnightbsd*) # Do not include libc due to us having libc/libc_r. test X-lc = "X$arg" && continue ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C and math libraries are in the System framework func_append deplibs " System.ltframework" continue ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype test X-lc = "X$arg" && continue ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work test X-lc = "X$arg" && continue ;; esac elif test X-lc_r = "X$arg"; then case $host in *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-midnightbsd*) # Do not include libc_r directly, use -pthread flag. continue ;; esac fi func_append deplibs " $arg" continue ;; -mllvm) prev=mllvm continue ;; -module) module=yes continue ;; # Tru64 UNIX uses -model [arg] to determine the layout of C++ # classes, name mangling, and exception handling. # Darwin uses the -arch flag to determine output architecture. # -q