- GNU LIBRARY GENERAL PUBLIC LICENSE
- Version 2, June 1991
- Copyright (C) 1991 Free Software Foundation, Inc.
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
-[This is the first released version of the library GPL. It is
- numbered 2 because it goes with version 2 of the ordinary GPL.]
+[This is the first released version of the Lesser GPL. It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
Preamble
Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.
- This license, the Library General Public License, applies to some
-specially designated Free Software Foundation software, and to any
-other libraries whose authors decide to use it. You can use it for
-your libraries, 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
-this service 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.
+ This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it. You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations
+below.
+
+ When we speak of free software, we are referring to freedom of use,
+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 this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if
-you distribute copies of the library, or if you modify it.
+distributors to deny you these rights or to ask you to surrender these
+rights. These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you. You must make sure that they, too, receive or can get the source
-code. If you link a program with the library, you must provide
-complete object files to the recipients so that they can relink them
-with the library, after making changes to the library and recompiling
+code. If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
it. And you must show them these terms so they know their rights.
- Our method of protecting your rights has two steps: (1) copyright
-the library, and (2) offer you this license which gives you legal
+ We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
permission to copy, distribute and/or modify the library.
- Also, for each distributor's protection, we want to make certain
-that everyone understands that there is no warranty for this free
-library. If the library is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original
-version, so that any problems introduced by others will not reflect on
-the original authors' reputations.
+ To protect each distributor, we want to make it very clear that
+there is no warranty for the free library. Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
\f
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that companies distributing free
-software will individually obtain patent licenses, thus in effect
-transforming the program into proprietary software. To prevent this,
-we have made it clear that any patent must be licensed for everyone's
-free use or not licensed at all.
-
- Most GNU software, including some libraries, is covered by the ordinary
-GNU General Public License, which was designed for utility programs. This
-license, the GNU Library General Public License, applies to certain
-designated libraries. This license is quite different from the ordinary
-one; be sure to read it in full, and don't assume that anything in it is
-the same as in the ordinary license.
-
- The reason we have a separate public license for some libraries is that
-they blur the distinction we usually make between modifying or adding to a
-program and simply using it. Linking a program with a library, without
-changing the library, is in some sense simply using the library, and is
-analogous to running a utility program or application program. However, in
-a textual and legal sense, the linked executable is a combined work, a
-derivative of the original library, and the ordinary General Public License
-treats it as such.
-
- Because of this blurred distinction, using the ordinary General
-Public License for libraries did not effectively promote software
-sharing, because most developers did not use the libraries. We
-concluded that weaker conditions might promote sharing better.
-
- However, unrestricted linking of non-free programs would deprive the
-users of those programs of all benefit from the free status of the
-libraries themselves. This Library General Public License is intended to
-permit developers of non-free programs to use free libraries, while
-preserving your freedom as a user of such programs to change the free
-libraries that are incorporated in them. (We have not seen how to achieve
-this as regards changes in header files, but we have achieved it as regards
-changes in the actual functions of the Library.) The hope is that this
-will lead to faster development of free libraries.
+ Finally, software patents pose a constant threat to the existence of
+any free program. We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder. Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+ Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License. This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License. We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+ When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library. The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom. The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+ We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License. It also provides other free software developers Less
+of an advantage over competing non-free programs. These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries. However, the Lesser license provides advantages in certain
+special circumstances.
+
+ For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it
+becomes a de-facto standard. To achieve this, non-free programs must
+be allowed to use the library. A more frequent case is that a free
+library does the same job as widely used non-free libraries. In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+ In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software. For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+ Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
The precise terms and conditions for copying, distribution and
modification follow. Pay close attention to the difference between a
"work based on the library" and a "work that uses the library". The
-former contains code derived from the library, while the latter only
-works together with the library.
-
- Note that it is possible for a library to be covered by the ordinary
-General Public License rather than by this special one.
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
\f
- GNU LIBRARY GENERAL PUBLIC LICENSE
+ GNU LESSER GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
- 0. This License Agreement applies to any software library which
-contains a notice placed by the copyright holder or other authorized
-party saying it may be distributed under the terms of this Library
-General Public License (also called "this License"). Each licensee is
-addressed as "you".
+ 0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
"Source code" for a work means the preferred form of the work for
making modifications to it. For a library, complete source code means
all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
+interface definition files, plus the scripts used to control
+compilation and installation of the library.
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
on the Library (independent of the use of the Library in a tool for
writing it). Whether that is true depends on what the Library does
and what the program that uses the Library does.
-
+
1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.
\f
- 6. As an exception to the Sections above, you may also compile or
+ 6. As an exception to the Sections above, you may also combine or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
Library will not necessarily be able to recompile the application
to use the modified definitions.)
- b) Accompany the work with a written offer, valid for at
- least three years, to give the same user the materials
- specified in Subsection 6a, above, for a charge no more
- than the cost of performing this distribution.
+ b) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (1) uses at run time a
+ copy of the library already present on the user's computer system,
+ rather than copying library functions into the executable, and (2)
+ will operate properly with a modified version of the library, if
+ the user installs one, as long as the modified version is
+ interface-compatible with the version that the work was made with.
+
+ c) Accompany the work with a written offer, valid for at least
+ three years, to give the same user the materials specified in
+ Subsection 6a, above, for a charge no more than the cost of
+ performing this distribution.
- c) If distribution of the work is made by offering access to copy
+ d) If distribution of the work is made by offering access to copy
from a designated place, offer equivalent access to copy the above
specified materials from the same place.
- d) Verify that the user has already received a copy of these
+ e) Verify that the user has already received a copy of these
materials or that you have already sent this user a copy.
For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it. However, as a special exception,
-the source code distributed need not include anything that is normally
-distributed (in either source or binary form) with the major
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.
original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
+You are not responsible for enforcing compliance by third parties with
this License.
\f
11. If, as a consequence of a court judgment or allegation of patent
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Library.
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply, and the section as a whole is intended to apply in other
+circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
12. If the distribution and/or use of the Library is restricted in
certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded. In such case, this License incorporates the limitation as if
-written in the body of this License.
+original copyright holder who places the Library under this License
+may add an explicit geographical distribution limitation excluding those
+countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
13. The Free Software Foundation may publish revised and/or new
-versions of the Library General Public License from time to time.
+versions of the Lesser 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.
DAMAGES.
END OF TERMS AND CONDITIONS
-\f
- How to Apply These Terms to Your New Libraries
-
- If you develop a new library, and you want it to be of the greatest
-possible use to the public, we recommend making it free software that
-everyone can redistribute and change. You can do so by permitting
-redistribution under these terms (or, alternatively, under the terms of the
-ordinary General Public License).
-
- To apply these terms, attach the following notices to the library. It is
-safest to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least the
-"copyright" line and a pointer to where the full notice is found.
-
- <one line to give the library's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Library General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library 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
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-
-Also add information on how to contact you by electronic and paper mail.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the library, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the
- library `Frob' (a library for tweaking knobs) written by James Random Hacker.
-
- <signature of Ty Coon>, 1 April 1990
- Ty Coon, President of Vice
-
-That's all there is to it!
## Process this file with automake to produce Makefile.in
-include $(top_srcdir)/Makefile.decl
+include $(top_srcdir)/glib-networking.mk
ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
if HAVE_GNUTLS
SUBDIRS += tls/gnutls
-endif
-
SUBDIRS += tls/tests
+endif
install-exec-hook:
if test -n "$(GIO_QUERYMODULES)" -a -z "$(DESTDIR)"; then \
-2.32.3
+2.38.0
======
- * proxy/gnome: Fix SOCKS to work when no http proxy is set
+ * New stable release. (No changes since 2.37.5)
+
+2.37.5
+======
+ * gnutls: minimum version is now 2.12.8 (with 3.x preferred...)
+
+ * glib-networking now supports the --enable-installed-tests flag, to
+ install its test programs to run at other times (ie, after
+ updating glib)
+
+2.37.4
+======
+ * proxy/gnome: further improve GNOME session detection (#701377)
+
+ * gnutls: don't crash if $G_TLS_GNUTS_PRIORITY is invalid (#701693)
+
+2.37.2
+======
+ * proxy/gnome: Improve session-type detection to include
+ gnome-classic and anything else starting with "gnome" (#700607,
+ Giovanni Campagna)
+
+ * proxy/libproxy: make SOCKS work when using the async API (#699359,
+ Dan)
+
+ * proxy/tests: make the libproxy test program use the just-built
+ plugin rather than the installed one. Oops (#700286, Iain Lane)
+
+ * proxy/tests: fix to not error out if neither proxy module is built
+ (#700628, Dan)
+
+ * tls/tests: fix a sporadic crash (Dan)
+
+2.37.1
+======
+ * gnutls: Fixed a bug that could cause hangs and/or bursts of CPU
+ usage in some cases. (#696881, Olivier Crête)
+
+ * gnutls: Fixed CFLAGS when building with gnutls in a different
+ prefix. (#696519, Emmanuel Pacaud)
+
+ * gnutls: Fixed a hang while rehandshaking with gnutls 3.x (#695062,
+ Dan)
+
+ * gnutls: Fixed a handshaking crash in multithreaded use (#697754,
+ Olivier Crête)
+
+ * proxy/gnome: Fix "automatic" mode, which was mistakenly being
+ treated as "none" (Dan)
+
+ * proxy/gnome: Use this in Unity sessions as well as GNOME ones.
+ (#698936, Iain Lane)
+
+ * New/Updated translations:
+ Friulian, Indonesian, Turkish
+
+2.36.0
+=======
+ * New/Updated translations:
+ Assamese, Basque, Belarusian, Catalan (Valencian), Catalan,
+ Danish, Finnish, Hindi, Korean, Latvian, Persian, Portuguese,
+ Russian, Slovak, Tadjik, Thai
+
+2.35.9
+======
+ * Fixed one kind of handshake failure to return the correct error
+ code under gnutls 3.x (allowing libsoup to recognize the error and
+ do fallback to SSL 3.0). (#694812)
+
+ * Updated translations:
+ Chinese (traditional), French, German, Punjabi, Uyghur,
+ Vietnamese
+
+2.35.8
+======
+ * proxy/gnome: ported to new GSimpleProxyResolver, and added more
+ tests
+
+ * gnutls: Fixed a small per-connection leak (#693718)
+
+ * tls/tests: Fixed several race conditions that caused spurious
+ failures. (#693720)
+
+ * Updated translations:
+ Malayalam
+
+2.35.6
+======
+ * proxy/gnome: Fixed several bugs:
+
+ * Multithreaded usage could result in crashes
+
+ * In "automatic" mode, synchronous lookups would obey
+ ignore-hosts, but asynchronous lookups would not. (Now they
+ both do.)
+
+ * lookup_async() would never notice if the proxy settings
+ switched from "automatic" to "manual" or "none" (and would
+ make a synchronous D-Bus call when switching in the other
+ direction).
+
+ * If given an invalid URI, lookup_async() would return a
+ successful result (and leak the GError that it was supposed
+ to have returned), and lookup() would return both the error
+ and the proxy (leaking one or the other, depending on how
+ the caller behaved).
+
+ * Updated translations:
+ Italian, Malayalam, Norwegian bokmål, Serbian, Uyghur
+
+2.35.4
+======
+ * proxy/gnome: The tests should now work correctly even if
+ run from a non-GNOME environment. (Robert Ancell)
+
+ * Updated translations:
+ Brazilian Portuguese, Bulgarian, Estonian, Galician, Greek,
+ Hungarian, Slovenian
+
+2.35.3
+======
+ * build: The TLS tests are now not built if you are building without
+ gnutls support. (Saleem Abdulrasool)
+
+ * gnutls: Several handshaking fixes:
+
+ * Fix a hang when doing a synchronous close() immediately
+ after cancelling an asynchronous handshake() (which would
+ happen in libsoup if you cancelled a message at the right
+ time). (#688751, Dan)
+
+ * Avoid an assertion when an implicit handshake fails
+ (#689274, Stef)
+
+ * Fixed GTlsServerConnection:authentication-mode to work
+ again, and added a regression test for this. (#689259, Stef)
+
+ * Return the appropriate error
+ (G_TLS_ERROR_CERTIFICATE_REQUIRED) when a handshake fails
+ because the server required a certificate but none was
+ provided, and added a test for this. (#689260, Stef)
+
+ * Make g_io_stream_close() finish successfully after a failed
+ handshake (#689260, Stef)
+
+ * Make g_io_stream_close() finish successfully before a
+ handshake (#689271, Stef)
+
+ * gnutls: Updated to be aware of G_IO_ERROR_BROKEN_PIPE in glib
+ 2.35.3, which needs to be converted to G_TLS_ERROR_NOT_TLS in some
+ cases. (Previously this error showed up as just G_IO_ERROR_FAILED.)
+ (Dan)
+
+ * proxy/gnome: This is now only used in GNOME login sessions (as,
+ essentially, a more efficient version of the libproxy GNOME
+ backend); in non-GNOME sessions, gio will now fall back to the
+ libproxy plugin, allowing environment variables or other libproxy
+ settings backends to be used.
+
+ * New/Updated translations:
+ Czech, Hebrew, Lithuanian, Polish, Slovak, Spanish
+
+2.35.1
+======
+ * Update for glib 2.35.1; remove g_type_init() calls and port to
+ GTask.
* Updated translations:
- Greek
+ Estonian
+
+2.34.0
+======
+ * Updated translations:
+ Arabic, Bulgarian, Catalan (Valencian), Catalan, Chinese
+ (Simplified), Hindi, Japanese, Thai
+
+2.33.14
+=======
+ * Updated translations:
+ Brazilian Portuguese, British English, Czech, Danish, Finnish,
+ French, German, Korean, Punjabi
+
+2.33.12
+=======
+ * gnutls: Revert the addition of the certificate-bytes and
+ private-key-bytes properties to GTlsCertificateGnutls, since they
+ were reverted in glib. (#682081, Stef)
+
+ * Updated translations:
+ Belarusian, Hungarian, Indonesian, Italian, Latvian, Polish,
+ Polish, Vietnamese
+
+2.33.10
+=======
+ * gnutls: Improved the certificate verifying code to deal with the
+ case of a CA being reissued with the same key but a different
+ signature algorithm. (#681299, Stef)
+
+ * gnutls: Fixed an uninitialized variable in
+ g_tls_connection_gnutls_close(). (#681636)
+
+ * Updated translations:
+ Assamese, Portuguese, Telugu
+
+2.33.8
+======
+ * gnutls: If a GTlsConnection gets an error when handshaking, it
+ will now continue to return that error message on future I/O
+ attempts, rather than behaving in an undefined manner.
+
+ * gnutls: You can now read from a GTlsConnection's input stream and
+ write to its output stream at the same time (either in different
+ threads, or asynchronously in a single thread). (#660252)
+
+ * Updated translations:
+ Chinese (traditional), Galician, Greek, Hebrew, Lithuanian,
+ Norwegian bokmål, Russian, Serbian, Slovenian, Spanish
+
+2.33.3
+======
+ * Updated autogen.sh (in particular to support automake 1.12)
+ (#675261)
+
+ * gnutls: fix the use-system-certdb property on GTlsConnectionGnutls
+ (previously, setting it to FALSE was a no-op).
+
+ * Updated translations:
+ Dutch, Greek, Indonesian
+
+2.33.2
+======
+ * gnutls: simplify using new glib pollable stream methods
+
+ * proxy/gnome: fix a bug that made it impossible to use SOCKS
+ without also having a separate http proxy.
2.32.1
======
--- /dev/null
+#!/bin/sh
+# Run this to generate all the initial makefiles, etc.
+
+test -n "$srcdir" || srcdir=`dirname "$0"`
+test -n "$srcdir" || srcdir=.
+
+olddir=`pwd`
+cd "$srcdir"
+
+AUTORECONF=`which autoreconf`
+if test -z $AUTORECONF; then
+ echo "*** No autoreconf found, please install it ***"
+ exit 1
+fi
+
+mkdir -p m4
+autoreconf --force --install --verbose || exit $?
+intltoolize --copy --force --automake || exit $?
+
+cd "$olddir"
+test -n "$NOCONFIGURE" || "$srcdir/configure" "$@"
AC_PREREQ(2.65)
AC_CONFIG_MACRO_DIR([m4])
-AC_INIT([glib-networking],[2.32.3],[http://bugzilla.gnome.org/enter_bug.cgi?product=glib&component=network])
+AC_INIT([glib-networking],[2.38.0],[http://bugzilla.gnome.org/enter_bug.cgi?product=glib&component=network])
AC_CONFIG_SRCDIR([proxy/libproxy/glibproxyresolver.h])
AC_CONFIG_HEADERS([config.h])
dnl *****************************
dnl *** Check GLib GIO ***
dnl *****************************
-AM_PATH_GLIB_2_0(2.31.6,,AC_MSG_ERROR(GLIB not found),gio)
+AM_PATH_GLIB_2_0(2.38.0,,AC_MSG_ERROR(GLIB not found),gio)
+GLIB_CFLAGS="$GLIB_CFLAGS -DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_36"
GIO_MODULE_DIR=$($PKG_CONFIG --variable giomoduledir gio-2.0)
AS_IF([test "x$GIO_MODULE_DIR" = "x"],
AC_PATH_PROG(GIO_QUERYMODULES, gio-querymodules)
AC_SUBST(GIO_QUERYMODULES)
+GLIB_TESTS
+
dnl *****************************
dnl *** Checks for LibProxy ***
dnl *****************************
dnl *** Checks for GNUTLS ***
dnl *****************************
-GNUTLS_MIN_REQUIRED=2.11.0
-GNUTLS_MIN_PKCS11=2.12.8
+GNUTLS_MIN_REQUIRED=2.12.8
AC_ARG_WITH(gnutls,
[AC_HELP_STRING([--with-gnutls],
[with_pkcs11=check])
if test "x$with_pkcs11" != "xno"; then
PKG_CHECK_MODULES(PKCS11,
- [p11-kit-1 >= $P11_KIT_REQUIRED gnutls >= $GNUTLS_MIN_PKCS11],
+ [p11-kit-1 >= $P11_KIT_REQUIRED],
[with_pkcs11=yes
pkcs11_support=p11-kit
tls_support="${tls_support}gnutls-pkcs11 "
AC_SUBST(PKCS11_CFLAGS)
AC_SUBST(PKCS11_LIBS)
+dnl *************************
+dnl *** Tizen multiple certificate support ***
+dnl *************************
+
+AC_ARG_ENABLE(tizen-multiple-certificate,
+ AS_HELP_STRING([--enable-tizen-multiple-certificate], [Enable Tizen multiple certificate support ]), ,
+ enable_tizen_multiple_certificate=no)
+
+AC_MSG_CHECKING([for Tizen multiple certificate])
+if test $enable_tizen_multiple_certificate != no;then
+ AC_DEFINE(ENABLE_TIZEN_TV_MULTIPLE_CERTIFICATE, 1, [Add new feature, support to install more than one file, multiple file path will be seperated by colon symbol])
+fi
+AC_MSG_RESULT($enable_tizen_multiple_certificate)
+
+AM_CONDITIONAL(TIZEN_TV_MULTIPLE_CERTIFICATE, [test $enable_tizen_multiple_certificate = yes])
+
+dnl ***************************
+dnl *** Tizen dlog support ***
+dnl ***************************
+
+AC_ARG_ENABLE(tizen-dlog,
+ AS_HELP_STRING([--enable-tizen-dlog], [Enable Tizen dlog support ]), ,
+ enable_tizen_dlog=no)
+
+AC_MSG_CHECKING([for Tizen dlog])
+if test $enable_tizen_dlog != no;then
+ AC_DEFINE(ENABLE_TIZEN_TV_DLOG, 1, [Add new feature, support to add tizen dlog in glib-networking])
+fi
+AC_MSG_RESULT($enable_tizen_dlog)
+
+AM_CONDITIONAL(TIZEN_TV_DLOG, [test $enable_tizen_dlog = yes])
+
+dnl *****************************************************
+dnl *** Tizen update gnutls default priority support ***
+dnl *****************************************************
+
+AC_ARG_ENABLE(tizen-tv-update-default-priority,
+ AS_HELP_STRING([--enable-tizen-tv-update-default-priority], [Enable Tizen update gnults default priority support ]), ,
+ enable_tizen_tv_update_default_priority=no)
+
+AC_MSG_CHECKING([for Tizen tv update default priority])
+if test $enable_tizen_tv_update_default_priority != no;then
+ AC_DEFINE(ENABLE_TIZEN_TV_UPDATE_DEFAULT_PRIORITY, 1, [Add new feature, support to update gnutls default priority in glib-networking])
+fi
+AC_MSG_RESULT($enable_tizen_tv_update_default_priority)
+
+AM_CONDITIONAL(TIZEN_TV_UPDATE_DEFAULT_PRIORITY, [test $enable_tizen_tv_update_default_priority = yes])
+
+dnl *******************************
+dnl *** Tizen performance test ***
+dnl *******************************
+
+AC_ARG_ENABLE(tizen-performance-test-log,
+ AS_HELP_STRING([--enable-tizen-performance-test-log], [Enable Tizen performance test log]), ,
+ enable_tizen_performance_test_log=no)
+
+AC_MSG_CHECKING([for Tizen performance test log])
+if test $enable_tizen_performance_test_log != no;then
+ AC_DEFINE(ENABLE_TIZEN_PERFORMANCE_TEST_LOG, 1, [Add performance test log])
+fi
+AC_MSG_RESULT($enable_tizen_performance_test_log)
+
+AM_CONDITIONAL(TIZEN_PERFORMANCE_TEST_LOG, [test $enable_tizen_performance_test_log = yes])
+
dnl ************************************
dnl *** Enable lcov coverage reports ***
dnl ************************************
--- /dev/null
+<Project xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
+ xmlns:foaf="http://xmlns.com/foaf/0.1/"
+ xmlns:gnome="http://api.gnome.org/doap-extensions#"
+ xmlns="http://usefulinc.com/ns/doap#">
+
+ <name xml:lang="en">glib-networking</name>
+ <shortdesc xml:lang="en">Network extensions for GLib</shortdesc>
+ <description xml:lang="en"> glib-networking contains the implementations of certain GLib networking features that cannot be implemented directly in GLib itself because of their dependencies.
+
+Currently it contains a GNUTLS-based implementation of GTlsBackend, a libproxy-based implementation of GProxyResolver, and a GNOME GProxyResolver that uses the proxy information from the GSettings schemas in gsettings-desktop-schemas.</description>
+
+ <download-page rdf:resource="http://download.gnome.org/sources/glib-networking" />
+ <bug-database rdf:resource="http://bugzilla.gnome.org/browse.cgi?product=glib" />
+
+ <maintainer>
+ <foaf:Person>
+ <foaf:name>Nicolas Dufresne</foaf:name>
+ <foaf:mbox rdf:resource="mailto:nicolas.dufresne@collabora.co.uk" />
+ <gnome:userid>nicolasd</gnome:userid>
+ </foaf:Person>
+ </maintainer>
+ <maintainer>
+ <foaf:Person>
+ <foaf:name>Dan Winship</foaf:name>
+ <foaf:mbox rdf:resource="mailto:danw@gnome.org" />
+ <gnome:userid>danw</gnome:userid>
+ </foaf:Person>
+ </maintainer>
+</Project>
--- /dev/null
+### glib-networking declarations
+
+module_flags = -export_dynamic -avoid-version -module -no-undefined -export-symbols-regex '^g_io_module_(load|unload|query)'
+
+giomoduledir = $(GIO_MODULE_DIR)
+
+AM_CPPFLAGS = \
+ -DG_LOG_DOMAIN=\"GLib-Net\" \
+ -DG_DISABLE_DEPRECATED \
+ $(GLIB_CFLAGS) \
+ $(NULL)
+
+include $(top_srcdir)/glib.mk
--- /dev/null
+# GLIB - Library of useful C routines
+
+GTESTER = gtester # for non-GLIB packages
+GTESTER_REPORT = gtester-report # for non-GLIB packages
+#GTESTER = $(top_builddir)/glib/gtester # for the GLIB package
+#GTESTER_REPORT = $(top_builddir)/glib/gtester-report # for the GLIB package
+NULL =
+
+# initialize variables for unconditional += appending
+BUILT_SOURCES =
+BUILT_EXTRA_DIST =
+CLEANFILES = *.log *.trs
+DISTCLEANFILES =
+MAINTAINERCLEANFILES =
+EXTRA_DIST =
+TEST_PROGS =
+
+installed_test_LTLIBRARIES =
+installed_test_PROGRAMS =
+installed_test_SCRIPTS =
+nobase_installed_test_DATA =
+
+noinst_LTLIBRARIES =
+noinst_PROGRAMS =
+noinst_SCRIPTS =
+noinst_DATA =
+
+check_LTLIBRARIES =
+check_PROGRAMS =
+check_SCRIPTS =
+check_DATA =
+
+TESTS =
+
+### testing rules
+
+# test: run all tests in cwd and subdirs
+test: test-nonrecursive
+ @ for subdir in $(SUBDIRS) . ; do \
+ test "$$subdir" = "." -o "$$subdir" = "po" || \
+ ( cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $@ ) || exit $? ; \
+ done
+
+# test-nonrecursive: run tests only in cwd
+test-nonrecursive: ${TEST_PROGS}
+ @test -z "${TEST_PROGS}" || G_TEST_SRCDIR="$(abs_srcdir)" G_TEST_BUILDDIR="$(abs_builddir)" G_DEBUG=gc-friendly MALLOC_CHECK_=2 MALLOC_PERTURB_=$$(($${RANDOM:-256} % 256)) ${GTESTER} --verbose ${TEST_PROGS}
+
+# test-report: run tests in subdirs and generate report
+# perf-report: run tests in subdirs with -m perf and generate report
+# full-report: like test-report: with -m perf and -m slow
+test-report perf-report full-report: ${TEST_PROGS}
+ @test -z "${TEST_PROGS}" || { \
+ case $@ in \
+ test-report) test_options="-k";; \
+ perf-report) test_options="-k -m=perf";; \
+ full-report) test_options="-k -m=perf -m=slow";; \
+ esac ; \
+ if test -z "$$GTESTER_LOGDIR" ; then \
+ G_TEST_SRCDIR="$(abs_srcdir)" G_TEST_BUILDDIR="$(abs_builddir)" ${GTESTER} --verbose $$test_options -o test-report.xml ${TEST_PROGS} ; \
+ elif test -n "${TEST_PROGS}" ; then \
+ G_TEST_SRCDIR="$(abs_srcdir)" G_TEST_BUILDDIR="$(abs_builddir)" ${GTESTER} --verbose $$test_options -o `mktemp "$$GTESTER_LOGDIR/log-XXXXXX"` ${TEST_PROGS} ; \
+ fi ; \
+ }
+ @ ignore_logdir=true ; \
+ if test -z "$$GTESTER_LOGDIR" ; then \
+ GTESTER_LOGDIR=`mktemp -d "\`pwd\`/.testlogs-XXXXXX"`; export GTESTER_LOGDIR ; \
+ ignore_logdir=false ; \
+ fi ; \
+ if test -d "$(top_srcdir)/.git" ; then \
+ REVISION=`git describe` ; \
+ else \
+ REVISION=$(VERSION) ; \
+ fi ; \
+ for subdir in $(SUBDIRS) . ; do \
+ test "$$subdir" = "." -o "$$subdir" = "po" || \
+ ( cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $@ ) || exit $? ; \
+ done ; \
+ $$ignore_logdir || { \
+ echo '<?xml version="1.0"?>' > $@.xml ; \
+ echo '<report-collection>' >> $@.xml ; \
+ echo '<info>' >> $@.xml ; \
+ echo ' <package>$(PACKAGE)</package>' >> $@.xml ; \
+ echo ' <version>$(VERSION)</version>' >> $@.xml ; \
+ echo " <revision>$$REVISION</revision>" >> $@.xml ; \
+ echo '</info>' >> $@.xml ; \
+ for lf in `ls -L "$$GTESTER_LOGDIR"/.` ; do \
+ sed '1,1s/^<?xml\b[^>?]*?>//' <"$$GTESTER_LOGDIR"/"$$lf" >> $@.xml ; \
+ done ; \
+ echo >> $@.xml ; \
+ echo '</report-collection>' >> $@.xml ; \
+ rm -rf "$$GTESTER_LOGDIR"/ ; \
+ ${GTESTER_REPORT} --version 2>/dev/null 1>&2 ; test "$$?" != 0 || ${GTESTER_REPORT} $@.xml >$@.html ; \
+ }
+.PHONY: test test-report perf-report full-report test-nonrecursive
+
+.PHONY: lcov genlcov lcov-clean
+# use recursive makes in order to ignore errors during check
+lcov:
+ -$(MAKE) $(AM_MAKEFLAGS) -k check
+ $(MAKE) $(AM_MAKEFLAGS) genlcov
+
+# we have to massage the lcov.info file slightly to hide the effect of libtool
+# placing the objects files in the .libs/ directory separate from the *.c
+# we also have to delete tests/.libs/libmoduletestplugin_*.gcda
+genlcov:
+ rm -f $(top_builddir)/tests/.libs/libmoduletestplugin_*.gcda
+ $(LTP) --directory $(top_builddir) --capture --output-file glib-lcov.info --test-name GLIB_PERF --no-checksum --compat-libtool
+ LANG=C $(LTP_GENHTML) --prefix $(top_builddir) --output-directory glib-lcov --title "GLib Code Coverage" --legend --show-details glib-lcov.info
+ @echo "file://$(abs_top_builddir)/glib-lcov/index.html"
+
+lcov-clean:
+ -$(LTP) --directory $(top_builddir) -z
+ -rm -rf glib-lcov.info glib-lcov
+ -find -name '*.gcda' -print | xargs rm
+
+# run tests in cwd as part of make check
+check-local: test-nonrecursive
+
+# We support a fairly large range of possible variables. It is expected that all types of files in a test suite
+# will belong in exactly one of the following variables.
+#
+# First, we support the usual automake suffixes, but in lowercase, with the customary meaning:
+#
+# test_programs, test_scripts, test_data, test_ltlibraries
+#
+# The above are used to list files that are involved in both uninstalled and installed testing. The
+# test_programs and test_scripts are taken to be actual testcases and will be run as part of the test suite.
+# Note that _data is always used with the nobase_ automake variable name to ensure that installed test data is
+# installed in the same way as it appears in the package layout.
+#
+# In order to mark a particular file as being only for one type of testing, use 'installed' or 'uninstalled',
+# like so:
+#
+# installed_test_programs, uninstalled_test_programs
+# installed_test_scripts, uninstalled_test_scripts
+# installed_test_data, uninstalled_test_data
+# installed_test_ltlibraries, uninstalled_test_ltlibraries
+#
+# Additionally, we support 'extra' infixes for programs and scripts. This is used for support programs/scripts
+# that should not themselves be run as testcases (but exist to be used from other testcases):
+#
+# test_extra_programs, installed_test_extra_programs, uninstalled_test_extra_programs
+# test_extra_scripts, installed_test_extra_scripts, uninstalled_test_extra_scripts
+#
+# Additionally, for _scripts and _data, we support the customary dist_ prefix so that the named script or data
+# file automatically end up in the tarball.
+#
+# dist_test_scripts, dist_test_data, dist_test_extra_scripts
+# dist_installed_test_scripts, dist_installed_test_data, dist_installed_test_extra_scripts
+# dist_uninstalled_test_scripts, dist_uninstalled_test_data, dist_uninstalled_test_extra_scripts
+#
+# Note that no file is automatically disted unless it appears in one of the dist_ variables. This follows the
+# standard automake convention of not disting programs scripts or data by default.
+#
+# test_programs, test_scripts, uninstalled_test_programs and uninstalled_test_scripts (as well as their disted
+# variants) will be run as part of the in-tree 'make check'. These are all assumed to be runnable under
+# gtester. That's a bit strange for scripts, but it's possible.
+
+# we use test -z "$(TEST_PROGS)" above, so make sure we have no extra whitespace...
+TEST_PROGS += $(strip $(test_programs) $(test_scripts) $(uninstalled_test_programs) $(uninstalled_test_scripts) \
+ $(dist_test_scripts) $(dist_uninstalled_test_scripts))
+
+# Note: build even the installed-only targets during 'make check' to ensure that they still work.
+# We need to do a bit of trickery here and manage disting via EXTRA_DIST instead of using dist_ prefixes to
+# prevent automake from mistreating gmake functions like $(wildcard ...) and $(addprefix ...) as if they were
+# filenames, including removing duplicate instances of the opening part before the space, eg. '$(addprefix'.
+all_test_programs = $(test_programs) $(uninstalled_test_programs) $(installed_test_programs) \
+ $(test_extra_programs) $(uninstalled_test_extra_programs) $(installed_test_extra_programs)
+all_test_scripts = $(test_scripts) $(uninstalled_test_scripts) $(installed_test_scripts) \
+ $(test_extra_scripts) $(uninstalled_test_extra_scripts) $(installed_test_extra_scripts)
+all_dist_test_scripts = $(dist_test_scripts) $(dist_uninstalled_test_scripts) $(dist_installed_test_scripts) \
+ $(dist_test_extra_scripts) $(dist_uninstalled_test_extra_scripts) $(dist_installed_test_extra_scripts)
+all_test_scripts += $(all_dist_test_scripts)
+EXTRA_DIST += $(all_dist_test_scripts)
+all_test_data = $(test_data) $(uninstalled_test_data) $(installed_test_data)
+all_dist_test_data = $(dist_test_data) $(dist_uninstalled_test_data) $(dist_installed_test_data)
+all_test_data += $(all_dist_test_data)
+EXTRA_DIST += $(all_dist_test_data)
+all_test_ltlibs = $(test_ltlibraries) $(uninstalled_test_ltlibraries) $(installed_test_ltlibraries)
+
+if ENABLE_ALWAYS_BUILD_TESTS
+noinst_LTLIBRARIES += $(all_test_ltlibs)
+noinst_PROGRAMS += $(all_test_programs)
+noinst_SCRIPTS += $(all_test_scripts)
+noinst_DATA += $(all_test_data)
+else
+check_LTLIBRARIES += $(all_test_ltlibs)
+check_PROGRAMS += $(all_test_programs)
+check_SCRIPTS += $(all_test_scripts)
+check_DATA += $(all_test_data)
+endif
+
+if ENABLE_INSTALLED_TESTS
+installed_test_PROGRAMS += $(test_programs) $(installed_test_programs) \
+ $(test_extra_programs) $(installed_test_extra_programs)
+installed_test_SCRIPTS += $(test_scripts) $(installed_test_scripts) \
+ $(test_extra_scripts) $(test_installed_extra_scripts)
+installed_test_SCRIPTS += $(dist_test_scripts) $(dist_test_extra_scripts) \
+ $(dist_installed_test_scripts) $(dist_installed_test_extra_scripts)
+nobase_installed_test_DATA += $(test_data) $(installed_test_data)
+nobase_installed_test_DATA += $(dist_test_data) $(dist_installed_test_data)
+installed_test_LTLIBRARIES += $(test_ltlibraries) $(installed_test_ltlibraries)
+installed_testcases = $(test_programs) $(installed_test_programs) \
+ $(test_scripts) $(installed_test_scripts) \
+ $(dist_test_scripts) $(dist_installed_test_scripts)
+
+installed_test_meta_DATA = $(installed_testcases:=.test)
+
+%.test: %$(EXEEXT) Makefile
+ $(AM_V_GEN) (echo '[Test]' > $@.tmp; \
+ echo 'Type=session' >> $@.tmp; \
+ echo 'Exec=$(installed_testdir)/$<' >> $@.tmp; \
+ mv $@.tmp $@)
+
+CLEANFILES += $(installed_test_meta_DATA)
+endif
--- /dev/null
+dnl GLIB_TESTS
+dnl
+
+AC_DEFUN([GLIB_TESTS],
+[
+ AC_ARG_ENABLE(installed-tests,
+ AS_HELP_STRING([--enable-installed-tests],
+ [Enable installation of some test cases]),
+ [case ${enableval} in
+ yes) ENABLE_INSTALLED_TESTS="1" ;;
+ no) ENABLE_INSTALLED_TESTS="" ;;
+ *) AC_MSG_ERROR([bad value ${enableval} for --enable-installed-tests]) ;;
+ esac])
+ AM_CONDITIONAL([ENABLE_INSTALLED_TESTS], test "$ENABLE_INSTALLED_TESTS" = "1")
+ AC_ARG_ENABLE(always-build-tests,
+ AS_HELP_STRING([--enable-always-build-tests],
+ [Enable always building tests during 'make all']),
+ [case ${enableval} in
+ yes) ENABLE_ALWAYS_BUILD_TESTS="1" ;;
+ no) ENABLE_ALWAYS_BUILD_TESTS="" ;;
+ *) AC_MSG_ERROR([bad value ${enableval} for --enable-always-build-tests]) ;;
+ esac])
+ AM_CONDITIONAL([ENABLE_ALWAYS_BUILD_TESTS], test "$ENABLE_ALWAYS_BUILD_TESTS" = "1")
+ if test "$ENABLE_INSTALLED_TESTS" == "1"; then
+ AC_SUBST(installed_test_metadir, [${datadir}/installed-tests/]AC_PACKAGE_NAME)
+ AC_SUBST(installed_testdir, [${libexecdir}/installed-tests/]AC_PACKAGE_NAME)
+ fi
+])
--- /dev/null
+glib-networking
+ requires "glib2-tools-<targettype>"
+ post "%glib2_gio_module_post"
+ postun "%glib2_gio_module_postun"
--- /dev/null
+* Mon Jun 24 2013 Anas Nashif <anas.nashif@intel.com> 2.36.1@3baa2f4
+- readd baselibs.conf
+- update to 2.36.2
+
+* Sat Apr 27 2013 Anas Nashif <anas.nashif@intel.com> submit/trunk/20130329.123049@4d40c9b
+- Update to 2.36.1
+
+* Fri Mar 29 2013 Anas Nashif <anas.nashif@intel.com> upstream/2.36.0@1b206e3
+- Update to 2.36.0
+
+* Fri Mar 15 2013 Anas Nashif <anas.nashif@intel.com> upstream/2.35.9@38f6a25
+- Update to 2.35.9
+
+* Tue Feb 26 2013 Anas Nashif <anas.nashif@intel.com> upstream/2.35.8@5ca9624
+- Update to 2.35.8
+
+* Mon Feb 25 2013 Anas Nashif <anas.nashif@intel.com> accepted/trunk/20130208.141437@4d0d50b
+- Enable libproxy (base on project)
+
+* Fri Feb 08 2013 Anas Nashif <anas.nashif@intel.com> upstream/2.35.6@7a62e64
+- Update to 2.35.6
+
+* Thu Dec 20 2012 Anas Nashif <anas.nashif@intel.com> upstream/2.35.3@ba439b4
+- update to 2.35.3
+
+* Sun Dec 09 2012 Anas Nashif <anas.nashif@intel.com> upstream/2.35.1@12833a0
+- Imported Upstream version 2.35.1
+
--- /dev/null
+<manifest>
+ <request>
+ <domain name="_"/>
+ </request>
+</manifest>
-Name: glib-networking
-Summary: Network extensions for GLib
-Version: 2.32.3_1.8
-Release: 1
-Group: System/Libraries
-License: LGPL-2.0+
-URL: http://git.gnome.org/browse/glib-networking/
-Source0: %{name}-%{version}.tar.gz
-
-BuildRequires: pkgconfig(glib-2.0)
-BuildRequires: pkgconfig(gnutls)
+%bcond_with libproxy
+Name: glib-networking
+Version: 2.38.0
+Release: 0
+License: LGPL-2.1+
+Summary: Network-related GIO modules for glib
+Group: System/Libraries
+Source: http://download.gnome.org/sources/glib-networking/2.35/%{name}-%{version}.tar.xz
+Source99: baselibs.conf
+Source1001: glib-networking.manifest
+Url: http://www.gnome.org
BuildRequires: intltool
+BuildRequires: which
+BuildRequires: libgcrypt-devel
+BuildRequires: pkgconfig(dbus-1)
+BuildRequires: pkgconfig(gio-2.0) >= 2.31.6
+BuildRequires: pkgconfig(gnutls) >= 2.11.0
+BuildRequires: pkgconfig(dlog)
+%if %{with libproxy}
+BuildRequires: pkgconfig(libproxy-1.0)
+%endif
%description
-Networking extensions for GLib
+This package contains network-related GIO modules for glib.
+Currently, there is only a proxy module based on libproxy.
+%lang_package
%prep
-%setup -q -n %{name}-%{version}
+%setup -q
+cp %{SOURCE1001} .
%build
+%autogen \
+ --disable-static \
+%if %{with libproxy}
+ --with-libproxy \
+%endif
+%if "%{?tizen_profile_name}" == "tv"
+ --enable-tizen-multiple-certificate=yes \
+ --enable-tizen-tv-update-default-priority \
+ --enable-tizen-dlog \
+ --enable-tizen-performance-test-log \
+%endif
+%if "%{?tizen_profile_name}" == "tv"
+ --with-ca-certificates=/opt/share/ca-certificates/
+%else
+ --with-ca-certificates=/opt/share/ca-certificates/ca-certificate.crt
+%endif
-%configure --disable-static --without-ca-certificates
-make %{?jobs:-j%jobs}
+%__make %{?_smp_mflags} V=1
%install
+%if "%{?tizen_profile_name}" == "tv"
rm -rf %{buildroot}
-mkdir -p %{buildroot}/usr/share/license
-cp COPYING %{buildroot}/usr/share/license/%{name}
-
+mkdir -p %{buildroot}/opt/share/ca-certificates/
+cp wss.pem %{buildroot}/opt/share/ca-certificates/
+%endif
%make_install
+%find_lang %{name}
+
+%post
+%glib2_gio_module_post
-%find_lang glib-networking
+%postun
+%glib2_gio_module_postun
-%files -f glib-networking.lang
-%defattr(-,root,root,-)
+%files
+%manifest %{name}.manifest
+%defattr(-, root, root)
+%doc COPYING
%{_libdir}/gio/modules/libgiognutls.so
-/usr/share/license/%{name}
-%manifest glib-networking.manifest
+%if "%{?tizen_profile_name}" == "tv"
+/opt/share/ca-certificates/wss.pem
+%endif
+
+%if %{with libproxy}
+%{_libdir}/gio/modules/libgiolibproxy.so
+%{_libexecdir}/glib-pacrunner
+%{_datadir}/dbus-1/services/org.gtk.GLib.PACRunner.service
+%endif
--- /dev/null
+*.gmo
+glib-networking.pot
+Makefile.in.in
+POTFILES
+an
+ar
as
be
bg
fa
fi
fr
+fur
gl
gu
he
pt_BR
ro
ru
+sk
sl
sr
sr@latin
sv
ta
te
+tg
th
tr
ug
--- /dev/null
+# Aragonese translation for glib-networking.
+# Copyright (C) 2013 glib-networking's COPYRIGHT HOLDER
+# This file is distributed under the same license as the glib-networking package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: glib-networking master\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=glib&keywords=I18N+L10N&component=network\n"
+"POT-Creation-Date: 2013-02-19 13:01+0000\n"
+"PO-Revision-Date: 2013-02-20 01:19+0100\n"
+"Last-Translator: Daniel Martinez <entaltoaragon@gmail.com>\n"
+"Language-Team: Aragonese <softaragones@googlegroups.com>\n"
+"Language: an\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../proxy/libproxy/glibproxyresolver.c:150
+msgid "Proxy resolver internal error."
+msgstr "Error interna d'o proxy."
+
+#: ../tls/gnutls/gtlscertificate-gnutls.c:173
+#, c-format
+msgid "Could not parse DER certificate: %s"
+msgstr "No se podió analisar o certificau DER: %s"
+
+#: ../tls/gnutls/gtlscertificate-gnutls.c:194
+#, c-format
+msgid "Could not parse PEM certificate: %s"
+msgstr "No se podió analisar o certificau PEM: %s"
+
+#: ../tls/gnutls/gtlscertificate-gnutls.c:225
+#, c-format
+msgid "Could not parse DER private key: %s"
+msgstr "No se podió analisar a clau privada DER: %s"
+
+#: ../tls/gnutls/gtlscertificate-gnutls.c:256
+#, c-format
+msgid "Could not parse PEM private key: %s"
+msgstr "No se podió analisar a clau privada PEM: %s"
+
+#: ../tls/gnutls/gtlscertificate-gnutls.c:296
+msgid "No certificate data provided"
+msgstr "No s'han proporcionau datos d'o certificau"
+
+#: ../tls/gnutls/gtlsclientconnection-gnutls.c:309
+msgid "Server required TLS certificate"
+msgstr "O servidor requiere un certificau TLS"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:258
+#, c-format
+msgid "Could not create TLS connection: %s"
+msgstr "No se podió creyar a connexión TLS: %s"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:520
+msgid "Connection is closed"
+msgstr "A connexión ye zarrada"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:582
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1419
+msgid "Operation would block"
+msgstr "A operación se blocará"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:712
+msgid "Peer failed to perform TLS handshake"
+msgstr "O par falló en realizar a negociación TLS"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:729
+msgid "Peer requested illegal TLS rehandshake"
+msgstr "O par solicitó una renegociación TLS ilegal"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:755
+msgid "TLS connection closed unexpectedly"
+msgstr "A connexión TLS se zarró inasperadament"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:765
+msgid "TLS connection peer did not send a certificate"
+msgstr "O par d'a connexión TLS no ninvió un certificau"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1146
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1165
+#, c-format
+msgid "Error performing TLS handshake: %s"
+msgstr "Error en realizar a negociación TLS: %s"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1175
+msgid "Server did not return a valid TLS certificate"
+msgstr "O servidor no devolvió un certificau TLS valido"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1250
+msgid "Unacceptable TLS certificate"
+msgstr "Certificau TLS inacceptable"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1442
+#, c-format
+msgid "Error reading data from TLS socket: %s"
+msgstr "Error en leyer datos d'o socket TLS: %s"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1471
+#, c-format
+msgid "Error writing data to TLS socket: %s"
+msgstr "Error en escribir datos en o socket TLS: %s"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1515
+msgid "Connection is already closed"
+msgstr "A connexión ya ye zarrada"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1525
+#, c-format
+msgid "Error performing TLS close: %s"
+msgstr "Error en zarrar o TLS: %s"
+
+#: ../tls/gnutls/gtlsserverconnection-gnutls.c:103
+msgid "Certificate has no private key"
+msgstr "O certificau no tiene clau privada"
+
+#: ../tls/pkcs11/gpkcs11pin.c:108
+msgid "This is the last chance to enter the PIN correctly before the token is locked."
+msgstr "Ista ye a zaguera oportunidat ta introducir o PIN correctament antes que se bloque o \"token\"."
+
+#: ../tls/pkcs11/gpkcs11pin.c:110
+msgid "Several PIN attempts have been incorrect, and the token will be locked after further failures."
+msgstr "Quantos intentos d'introducir o PIN han estau incorrectos y o \"token\" se blocará dimpués de mas fallos."
+
+#: ../tls/pkcs11/gpkcs11pin.c:112
+msgid "The PIN entered is incorrect."
+msgstr "O PIN introduciu ye incorrecto."
+
+#: ../tls/pkcs11/gpkcs11slot.c:446
+msgid "Module"
+msgstr "Modulo"
+
+#: ../tls/pkcs11/gpkcs11slot.c:447
+msgid "PKCS#11 Module Pointer"
+msgstr "Puntero d'o modulo PKCS#11"
+
+#: ../tls/pkcs11/gpkcs11slot.c:454
+msgid "Slot ID"
+msgstr "ID d'a ranura"
+
+#: ../tls/pkcs11/gpkcs11slot.c:455
+msgid "PKCS#11 Slot Identifier"
+msgstr "Identificador d'a ranura de PKCS#11"
+
--- /dev/null
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# IBRAHIM <mradonadiego@hotmail.fr>, 2011
+# Mohammad Alhargan <malham1@gmail.com>, 2012.
+# Khaled Hosny <khaledhosny@eglug.org>, 2012.
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2012-09-20 07:26+0200\n"
+"PO-Revision-Date: 2012-09-20 07:26+0200\n"
+"Last-Translator: Khaled Hosny <khaledhosny@eglug.org>\n"
+"Language-Team: Arabic <doc@arabeyes.org>\n"
+"Language: ar\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
+"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"
+"X-Generator: Virtaal 0.7.0\n"
+"X-Project-Style: gnome\n"
+
+#: ../proxy/libproxy/glibproxyresolver.c:150
+msgid "Proxy resolver internal error."
+msgstr "خطأ داخلي تحليل الوكيل."
+
+#: ../tls/gnutls/gtlscertificate-gnutls.c:173
+#, c-format
+msgid "Could not parse DER certificate: %s"
+msgstr "تعذر تحليل شهادة DER: %s"
+
+#: ../tls/gnutls/gtlscertificate-gnutls.c:194
+#, c-format
+msgid "Could not parse PEM certificate: %s"
+msgstr "تعذر تحليل شهادة PEM: %s"
+
+#: ../tls/gnutls/gtlscertificate-gnutls.c:225
+#, c-format
+msgid "Could not parse DER private key: %s"
+msgstr "تعذر تحليل المفتاح الخاص DER: %s"
+
+#: ../tls/gnutls/gtlscertificate-gnutls.c:256
+#, c-format
+msgid "Could not parse PEM private key: %s"
+msgstr "تعذر تحليل المفتاح الخاص PEM: %s"
+
+#: ../tls/gnutls/gtlscertificate-gnutls.c:296
+msgid "No certificate data provided"
+msgstr "لم يتم تقديم بيانات الشهادة"
+
+#: ../tls/gnutls/gtlsclientconnection-gnutls.c:309
+msgid "Server required TLS certificate"
+msgstr "يتطلب الخادوم شهادة TLS"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:254
+#, c-format
+msgid "Could not create TLS connection: %s"
+msgstr "لا يمكن إنشاء اتصال TLS: %s"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:514
+msgid "Connection is closed"
+msgstr "الاتصال مغلق"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:574
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1377
+msgid "Operation would block"
+msgstr "العملية قد تغلق"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:701
+msgid "Peer failed to perform TLS handshake"
+msgstr "فشل إجراء تعارف نظير TLS"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:718
+msgid "Peer requested illegal TLS rehandshake"
+msgstr "طلب النظير تعارف TLS غير شرعي"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:744
+msgid "TLS connection closed unexpectedly"
+msgstr "تم إغلاق اتصال TLS بشكل غير متوقع"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1055
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1074
+#, c-format
+msgid "Error performing TLS handshake: %s"
+msgstr "خطأ في تعارف TLS: %s"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1210
+msgid "Unacceptable TLS certificate"
+msgstr "شهادة TLS غير مقبولة"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1221
+msgid "Server did not return a valid TLS certificate"
+msgstr "لم يُرجع الخادوم شهادة TLS سليمة"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1400
+#, c-format
+msgid "Error reading data from TLS socket: %s"
+msgstr "حدث خطأ أثناء قراءة البيانات من مأخذ توصيل TLS: %s"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1429
+#, c-format
+msgid "Error writing data to TLS socket: %s"
+msgstr "حدث خطأ أثناء كتابة البيانات من مأخذ توصيل TLS: %s"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1473
+msgid "Connection is already closed"
+msgstr "الاتصال مغلق من قبل"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1483
+#, c-format
+msgid "Error performing TLS close: %s"
+msgstr "خطأ في إغلاق TLS: %s"
+
+#: ../tls/gnutls/gtlsserverconnection-gnutls.c:103
+msgid "Certificate has no private key"
+msgstr "لا يوجد مفتاح خاص للشهادة"
+
+#: ../tls/pkcs11/gpkcs11pin.c:108
+msgid ""
+"This is the last chance to enter the PIN correctly before the token is "
+"locked."
+msgstr ""
+"هذه هي الفرصة الأخيرة لإدخال رقم التعريف الشخصي بشكل صحيح قبل تأمين الرمز "
+"المميز."
+
+#: ../tls/pkcs11/gpkcs11pin.c:110
+msgid ""
+"Several PIN attempts have been incorrect, and the token will be locked after "
+"further failures."
+msgstr ""
+"عدة محاولات إدخال رقم التعريف الشخصي غير صحيحة، سيتم تأمين الرمز المميز بعد "
+"المزيد من الفشل."
+
+#: ../tls/pkcs11/gpkcs11pin.c:112
+msgid "The PIN entered is incorrect."
+msgstr "رقم التعريف الشخصي الذي أدخلته غير صحيح."
+
+#: ../tls/pkcs11/gpkcs11slot.c:446
+msgid "Module"
+msgstr "وحدة نمطية"
+
+#: ../tls/pkcs11/gpkcs11slot.c:447
+msgid "PKCS#11 Module Pointer"
+msgstr "مؤشر الوحدة النمطية PKCS#11"
+
+#: ../tls/pkcs11/gpkcs11slot.c:454
+msgid "Slot ID"
+msgstr "معرف المدخل"
+
+#: ../tls/pkcs11/gpkcs11slot.c:455
+msgid "PKCS#11 Slot Identifier"
+msgstr "معرف مدخل PKCS#11"
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
-# Nilamdyuti Goswami <ngoswami@redhat.com>, 2011, 2012.
+# Nilamdyuti Goswami <ngoswami@redhat.com>, 2011, 2012, 2013.
msgid ""
msgstr ""
"Project-Id-Version: \n"
-"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug."
-"cgi?product=glib&keywords=I18N+L10N&component=network\n"
-"POT-Creation-Date: 2011-11-19 01:32+0000\n"
-"PO-Revision-Date: 2012-03-05 19:36+0530\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
+"product=glib&keywords=I18N+L10N&component=network\n"
+"POT-Creation-Date: 2012-11-29 22:09+0000\n"
+"PO-Revision-Date: 2013-03-12 18:28+0530\n"
"Last-Translator: Nilamdyuti Goswami <ngoswami@redhat.com>\n"
-"Language-Team: as_IN <kde-i18n-doc@kde.org>\n"
+"Language-Team: Assamese <kde-i18n-doc@kde.org>\n"
+"Language: as\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Lokalize 1.0\n"
+"X-Generator: Lokalize 1.5\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
#: ../proxy/libproxy/glibproxyresolver.c:150
msgid "No certificate data provided"
msgstr "কোনো প্ৰমাণপত্ৰ তথ্য যোগান দিয়া হোৱা নাই"
-#: ../tls/gnutls/gtlsclientconnection-gnutls.c:385
+#: ../tls/gnutls/gtlsclientconnection-gnutls.c:309
msgid "Server required TLS certificate"
msgstr "চাৰ্ভাৰৰ TLS প্ৰমাণপত্ৰৰ প্ৰয়োজন আছিল"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:279
+#: ../tls/gnutls/gtlsconnection-gnutls.c:254
#, c-format
msgid "Could not create TLS connection: %s"
msgstr "TLS সংযোগ সৃষ্টি কৰিব পৰা নগল: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:558
+#: ../tls/gnutls/gtlsconnection-gnutls.c:514
+msgid "Connection is closed"
+msgstr "সংযোগ বন্ধ"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:576
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1382
+msgid "Operation would block"
+msgstr "কাৰ্য্য প্ৰতিৰোধ কৰিব"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:703
msgid "Peer failed to perform TLS handshake"
msgstr "TLS হেন্ডশেক কৰিবলে সমনীয়া ব্যৰ্থ হল"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:576
+#: ../tls/gnutls/gtlsconnection-gnutls.c:720
msgid "Peer requested illegal TLS rehandshake"
msgstr "সমনীয়ায় অবৈধ পুনৰ হেন্ডশেকৰ অনুৰোধ কৰিছিল"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:594
+#: ../tls/gnutls/gtlsconnection-gnutls.c:746
msgid "TLS connection closed unexpectedly"
msgstr "TLS সংযোগ অপ্ৰত্যাশিতভাৱে বন্ধ হৈ গল"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:888
-#: ../tls/gnutls/gtlsconnection-gnutls.c:914
+#: ../tls/gnutls/gtlsconnection-gnutls.c:756
+#| msgid "Server did not return a valid TLS certificate"
+msgid "TLS connection peer did not send a certificate"
+msgstr "TLS সংযোগ সমনীয়ায়ে এটা প্ৰমাণপত্ৰ প্ৰেৰণ নকৰিলে"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1064
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1083
#, c-format
msgid "Error performing TLS handshake: %s"
msgstr "TLS হেন্ডশেক কৰোতে ত্ৰুটি: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:962
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1228
msgid "Unacceptable TLS certificate"
msgstr "অগ্ৰহণযোগ্য TLS প্ৰমাণপত্ৰ"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1099
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1239
+msgid "Server did not return a valid TLS certificate"
+msgstr "চাৰ্ভাৰে এটা বৈধ TLS প্ৰমাণপত্ৰ ঘুৰাই নিদিলে"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1405
#, c-format
msgid "Error reading data from TLS socket: %s"
msgstr "TLS চকেটৰ পৰা তথ্য পঢোতে ত্ৰুটি: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1125
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1434
#, c-format
msgid "Error writing data to TLS socket: %s"
msgstr "TLS চকেটলে তথ্য লিখোতে ত্ৰুটি: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1171
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1478
+msgid "Connection is already closed"
+msgstr "সংযোগ ইতিমধ্যে বন্ধ"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1488
#, c-format
msgid "Error performing TLS close: %s"
msgstr "TLS বন্ধ কৰোতে ত্ৰুটি: %s"
-#: ../tls/gnutls/gtlsserverconnection-gnutls.c:138
+#: ../tls/gnutls/gtlsserverconnection-gnutls.c:103
msgid "Certificate has no private key"
msgstr "প্ৰমাণপত্ৰৰ কোনো ব্যক্তিগত চাবি নাই"
msgid ""
msgstr ""
"Project-Id-Version: glib-networking master\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-02-18 23:20+0300\n"
-"PO-Revision-Date: 2012-02-18 23:20+0300\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
+"product=glib&keywords=I18N+L10N&component=network\n"
+"POT-Creation-Date: 2012-11-29 22:09+0000\n"
+"PO-Revision-Date: 2012-08-30 15:27+0300\n"
"Last-Translator: Kasia Bondarava <kasia.bondarava@gmail.com>\n"
"Language-Team: Belarusian <i18n-bel-gnome@googlegroups.com>\n"
"Language: be\n"
msgid "No certificate data provided"
msgstr "Даныя сертыфіката не пададзеныя"
-#: ../tls/gnutls/gtlsclientconnection-gnutls.c:349
+#: ../tls/gnutls/gtlsclientconnection-gnutls.c:309
msgid "Server required TLS certificate"
msgstr "Сервер запатрабаваў TLS-сертыфікат"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:202
+#: ../tls/gnutls/gtlsconnection-gnutls.c:254
#, c-format
msgid "Could not create TLS connection: %s"
msgstr "Не ўдалося стварыць TLS-злучэнне: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:481
+#: ../tls/gnutls/gtlsconnection-gnutls.c:514
+msgid "Connection is closed"
+msgstr "Злучэнне закрыта"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:576
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1382
+msgid "Operation would block"
+msgstr "Аперацыя будзе заблакіравана"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:703
msgid "Peer failed to perform TLS handshake"
msgstr "Суразмоўцу не ўдалося выканаць вітанне TLS"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:501
+#: ../tls/gnutls/gtlsconnection-gnutls.c:720
msgid "Peer requested illegal TLS rehandshake"
msgstr "Суразмоўца запытаў забароненае паўторнае вітанне TLS"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:519
+#: ../tls/gnutls/gtlsconnection-gnutls.c:746
msgid "TLS connection closed unexpectedly"
msgstr "TLS-злучэнне нечакана закрылася"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:814
-#: ../tls/gnutls/gtlsconnection-gnutls.c:840
+#: ../tls/gnutls/gtlsconnection-gnutls.c:756
+msgid "TLS connection peer did not send a certificate"
+msgstr "Партнёр па TLS-злучэнні не паслаў сертыфікат"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1064
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1083
#, c-format
msgid "Error performing TLS handshake: %s"
msgstr "Памылка выканання вітання TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:888
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1228
msgid "Unacceptable TLS certificate"
msgstr "Непрымальны TLS-сертыфікат"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1027
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1239
+msgid "Server did not return a valid TLS certificate"
+msgstr "Сервер не вярнуў правільнага TLS-сертыфіката"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1405
#, c-format
msgid "Error reading data from TLS socket: %s"
msgstr "Памылка чытання даных з TLS-сокета: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1053
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1434
#, c-format
msgid "Error writing data to TLS socket: %s"
msgstr "Памылка запісу даных у TLS-сокет: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1099
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1478
+msgid "Connection is already closed"
+msgstr "Злучэнне ўжо закрыта"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1488
#, c-format
msgid "Error performing TLS close: %s"
msgstr "Памылка закрыцця TLS-злучэння: %s"
# Bulgarian translation of glib-networking po-file.
-# Copyright (C) 2011, 2012 Free Software Foundation
+# Copyright (C) 2011, 2012, 2013 Free Software Foundation
# This file is distributed under the same license as the glib-networking package.
-# Alexander Shopov <ash@kambanaria.org>, 2011, 2012.
+# Alexander Shopov <ash@kambanaria.org>, 2011, 2012, 2013.
#
msgid ""
msgstr ""
"Project-Id-Version: glib-networking\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-01-08 11:01+0200\n"
-"PO-Revision-Date: 2012-01-08 11:00+0200\n"
+"POT-Creation-Date: 2013-01-08 21:50+0200\n"
+"PO-Revision-Date: 2013-01-08 21:50+0200\n"
"Last-Translator: Alexander Shopov <ash@kambanaria.org>\n"
"Language-Team: Bulgarian <dict@fsa-bg.org>\n"
"Language: bg\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"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: ../proxy/libproxy/glibproxyresolver.c:150
msgid "Proxy resolver internal error."
msgid "No certificate data provided"
msgstr "Липсват данни за сертификат"
-#: ../tls/gnutls/gtlsclientconnection-gnutls.c:349
+#: ../tls/gnutls/gtlsclientconnection-gnutls.c:309
msgid "Server required TLS certificate"
msgstr "Сървърът изисква сертификат за TLS"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:202
+#: ../tls/gnutls/gtlsconnection-gnutls.c:257
#, c-format
msgid "Could not create TLS connection: %s"
msgstr "Не може да се създаде връзка по TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:481
+#: ../tls/gnutls/gtlsconnection-gnutls.c:518
+msgid "Connection is closed"
+msgstr "Връзката е прекъсната"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:580
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1417
+msgid "Operation would block"
+msgstr "Операцията ще блокира"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:710
msgid "Peer failed to perform TLS handshake"
msgstr "Отсрещната страна не осъществи ръкостискане по TLS"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:501
+#: ../tls/gnutls/gtlsconnection-gnutls.c:727
msgid "Peer requested illegal TLS rehandshake"
msgstr "Отсрещната страна изиска неправилно ново ръкостискане по TLS"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:519
+#: ../tls/gnutls/gtlsconnection-gnutls.c:753
msgid "TLS connection closed unexpectedly"
msgstr "Връзката по TLS неочаквано прекъсна"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:814
-#: ../tls/gnutls/gtlsconnection-gnutls.c:840
+#: ../tls/gnutls/gtlsconnection-gnutls.c:763
+msgid "TLS connection peer did not send a certificate"
+msgstr "Отсрещната страна за TLS не върна сертификат"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1144
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1163
#, c-format
msgid "Error performing TLS handshake: %s"
msgstr "Грешка при ръкостискане по TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:888
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1173
+msgid "Server did not return a valid TLS certificate"
+msgstr "Сървърът върна неправилен сертификат за TLS"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1248
msgid "Unacceptable TLS certificate"
msgstr "Неприемлив сертификат за TLS"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1025
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1440
#, c-format
msgid "Error reading data from TLS socket: %s"
msgstr "Грешка при четене на данни по TLS от гнездо: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1051
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1469
#, c-format
msgid "Error writing data to TLS socket: %s"
msgstr "Грешка при запис на данни по TLS към гнездо: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1097
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1513
+msgid "Connection is already closed"
+msgstr "Връзката вече е прекъсната"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1523
#, c-format
msgid "Error performing TLS close: %s"
-msgstr "Ð\93Ñ\80еÑ\88ка пÑ\80и заÑ\82ваÑ\80Ñ\8fне на TLS: %s"
+msgstr "Ð\93Ñ\80еÑ\88ка пÑ\80и пÑ\80екÑ\8aÑ\81ване на TLS: %s"
#: ../tls/gnutls/gtlsserverconnection-gnutls.c:103
msgid "Certificate has no private key"
# Copyright (C) 2011 glib-networking's COPYRIGHT HOLDER
# This file is distributed under the same license as the glib-networking package.
# David Planella <david.planella@gmail.com>, 2011, 2012.
+# Gil Forcada <gilforcada@guifi.net>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: glib-networking master\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-03-13 00:17+0100\n"
-"PO-Revision-Date: 2012-03-10 11:09+0100\n"
-"Last-Translator: David Planella <david.planella@gmail.com>\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
+"product=glib&keywords=I18N+L10N&component=network\n"
+"POT-Creation-Date: 2013-03-05 15:28+0000\n"
+"PO-Revision-Date: 2012-08-16 19:02+0200\n"
+"Last-Translator: Gil Forcada <gilforcada@guifi.net>\n"
"Language-Team: Catalan <gnome-dl@llistes.softcatala.org>\n"
"Language: ca\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"
#: ../proxy/libproxy/glibproxyresolver.c:150
msgid "Proxy resolver internal error."
msgid "No certificate data provided"
msgstr "No s'ha proporcionat cap dada per al certificat"
-#: ../tls/gnutls/gtlsclientconnection-gnutls.c:349
+#: ../tls/gnutls/gtlsclientconnection-gnutls.c:309
msgid "Server required TLS certificate"
msgstr "El servidor requereix un certificat TLS"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:202
+#: ../tls/gnutls/gtlsconnection-gnutls.c:258
#, c-format
msgid "Could not create TLS connection: %s"
msgstr "No s'ha pogut crear una connexió TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:481
+#: ../tls/gnutls/gtlsconnection-gnutls.c:520
+msgid "Connection is closed"
+msgstr "La connexió està tancada"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:582
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1425
+msgid "Operation would block"
+msgstr "L'operació bloquejaria"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:712
+#: ../tls/gnutls/gtlsconnection-gnutls.c:755
msgid "Peer failed to perform TLS handshake"
-msgstr "L'amfitrió no ha pogut realitzar l'encaixada TLS"
+msgstr "L'altre extrem de la connexió no ha pogut realitzar l'encaixada TLS"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:501
+#: ../tls/gnutls/gtlsconnection-gnutls.c:729
msgid "Peer requested illegal TLS rehandshake"
-msgstr "L'amfitrió ha sol·licitat una reencaixada TLS no vàlida"
+msgstr ""
+"L'altre extrem de la connexió ha sol·licitat una reencaixada TLS no vàlida"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:519
+#: ../tls/gnutls/gtlsconnection-gnutls.c:761
msgid "TLS connection closed unexpectedly"
msgstr "La connexió TLS s'ha tancat de manera inesperada"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:814
-#: ../tls/gnutls/gtlsconnection-gnutls.c:840
+#: ../tls/gnutls/gtlsconnection-gnutls.c:771
+msgid "TLS connection peer did not send a certificate"
+msgstr "L'altre extrem de la connexió TLS no ha enviat cap certificat"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1152
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1171
#, c-format
msgid "Error performing TLS handshake: %s"
msgstr "S'ha produït un error en realitzar l'encaixada TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:888
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1181
+msgid "Server did not return a valid TLS certificate"
+msgstr "El servidor no ha retornat un certificat TLS vàlid"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1256
msgid "Unacceptable TLS certificate"
msgstr "No es pot acceptar el certificat TLS"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1027
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1448
#, c-format
msgid "Error reading data from TLS socket: %s"
msgstr "S'ha produït un error en llegir les dades del sòcol TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1053
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1477
#, c-format
msgid "Error writing data to TLS socket: %s"
msgstr "S'ha produït un error en escriure les dades al sòcol TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1099
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1521
+msgid "Connection is already closed"
+msgstr "La connexió ja està tancada"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1531
#, c-format
msgid "Error performing TLS close: %s"
msgstr "S'ha produït un error en realitzar el tancament TLS: %s"
# Copyright (C) 2011 glib-networking's COPYRIGHT HOLDER
# This file is distributed under the same license as the glib-networking package.
# David Planella <david.planella@gmail.com>, 2011, 2012.
+# Gil Forcada <gilforcada@guifi.net>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: glib-networking master\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-03-27 22:29+0200\n"
-"PO-Revision-Date: 2012-03-10 11:09+0100\n"
-"Last-Translator: David Planella <david.planella@gmail.com>\n"
+"POT-Creation-Date: 2013-03-17 20:04+0100\n"
+"PO-Revision-Date: 2012-08-16 19:02+0200\n"
+"Last-Translator: Gil Forcada <gilforcada@guifi.net>\n"
"Language-Team: Catalan <gnome-dl@llistes.softcatala.org>\n"
"Language: ca-XV\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"
#: ../proxy/libproxy/glibproxyresolver.c:150
msgid "Proxy resolver internal error."
msgid "No certificate data provided"
msgstr "No s'ha proporcionat cap dada per al certificat"
-#: ../tls/gnutls/gtlsclientconnection-gnutls.c:349
+#: ../tls/gnutls/gtlsclientconnection-gnutls.c:309
msgid "Server required TLS certificate"
msgstr "El servidor requereix un certificat TLS"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:202
+#: ../tls/gnutls/gtlsconnection-gnutls.c:258
#, c-format
msgid "Could not create TLS connection: %s"
msgstr "No s'ha pogut crear una connexió TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:481
+#: ../tls/gnutls/gtlsconnection-gnutls.c:520
+msgid "Connection is closed"
+msgstr "La connexió està tancada"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:582
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1425
+msgid "Operation would block"
+msgstr "L'operació bloquejaria"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:712
+#: ../tls/gnutls/gtlsconnection-gnutls.c:755
msgid "Peer failed to perform TLS handshake"
-msgstr "L'amfitrió no ha pogut realitzar l'encaixada TLS"
+msgstr "L'altre extrem de la connexió no ha pogut realitzar l'encaixada TLS"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:501
+#: ../tls/gnutls/gtlsconnection-gnutls.c:729
msgid "Peer requested illegal TLS rehandshake"
-msgstr "L'amfitrió ha sol·licitat una reencaixada TLS no vàlida"
+msgstr ""
+"L'altre extrem de la connexió ha sol·licitat una reencaixada TLS no vàlida"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:519
+#: ../tls/gnutls/gtlsconnection-gnutls.c:761
msgid "TLS connection closed unexpectedly"
msgstr "La connexió TLS s'ha tancat de manera inesperada"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:814
-#: ../tls/gnutls/gtlsconnection-gnutls.c:840
+#: ../tls/gnutls/gtlsconnection-gnutls.c:771
+msgid "TLS connection peer did not send a certificate"
+msgstr "L'altre extrem de la connexió TLS no ha enviat cap certificat"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1152
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1171
#, c-format
msgid "Error performing TLS handshake: %s"
msgstr "S'ha produït un error en realitzar l'encaixada TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:888
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1181
+msgid "Server did not return a valid TLS certificate"
+msgstr "El servidor no ha retornat un certificat TLS vàlid"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1256
msgid "Unacceptable TLS certificate"
msgstr "No es pot acceptar el certificat TLS"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1027
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1448
#, c-format
msgid "Error reading data from TLS socket: %s"
msgstr "S'ha produït un error en llegir les dades del sòcol TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1053
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1477
#, c-format
msgid "Error writing data to TLS socket: %s"
msgstr "S'ha produït un error en escriure les dades al sòcol TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1099
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1521
+msgid "Connection is already closed"
+msgstr "La connexió ja està tancada"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1531
#, c-format
msgid "Error performing TLS close: %s"
msgstr "S'ha produït un error en realitzar el tancament TLS: %s"
"Project-Id-Version: glib-networking master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
"product=glib&keywords=I18N+L10N&component=network\n"
-"POT-Creation-Date: 2011-11-19 01:32+0000\n"
-"PO-Revision-Date: 2012-01-19 12:40+0100\n"
+"POT-Creation-Date: 2012-11-29 22:09+0000\n"
+"PO-Revision-Date: 2012-12-02 21:47+0100\n"
"Last-Translator: Marek Černocký <marek@manet.cz>\n"
-"Language-Team: Czech <gnome-cs-list@gnome.org>\n"
+"Language-Team: čeština <gnome-cs-list@gnome.org>\n"
+"Language: cs\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: cs\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+"X-Generator: Gtranslator 2.91.5\n"
#: ../proxy/libproxy/glibproxyresolver.c:150
msgid "Proxy resolver internal error."
msgid "No certificate data provided"
msgstr "Nebyla poskytnuta žádná data certifikátu"
-#: ../tls/gnutls/gtlsclientconnection-gnutls.c:385
+#: ../tls/gnutls/gtlsclientconnection-gnutls.c:309
msgid "Server required TLS certificate"
msgstr "Server požaduje certifikát TLS"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:279
+#: ../tls/gnutls/gtlsconnection-gnutls.c:254
#, c-format
msgid "Could not create TLS connection: %s"
msgstr "Nelze vytvořit připojení TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:558
+#: ../tls/gnutls/gtlsconnection-gnutls.c:514
+msgid "Connection is closed"
+msgstr "Připojení je uzavřeno"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:576
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1382
+msgid "Operation would block"
+msgstr "Operace by blokovala"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:703
msgid "Peer failed to perform TLS handshake"
msgstr "Protějšek selhal při navazování spojení TLS"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:576
+#: ../tls/gnutls/gtlsconnection-gnutls.c:720
msgid "Peer requested illegal TLS rehandshake"
msgstr "Protějšek požadoval neplatné znovunavázání spojení TLS"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:594
+#: ../tls/gnutls/gtlsconnection-gnutls.c:746
msgid "TLS connection closed unexpectedly"
msgstr "Připojení TLS bylo neočekávaně zavřeno"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:888
-#: ../tls/gnutls/gtlsconnection-gnutls.c:914
+#: ../tls/gnutls/gtlsconnection-gnutls.c:756
+#| msgid "Server did not return a valid TLS certificate"
+msgid "TLS connection peer did not send a certificate"
+msgstr "Protějšek připojení TLS neposlal certifikát"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1064
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1083
#, c-format
msgid "Error performing TLS handshake: %s"
msgstr "Chyba při navazování spojení TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:962
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1228
msgid "Unacceptable TLS certificate"
msgstr "Nepřijatelný certifikát TLS"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1099
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1239
+msgid "Server did not return a valid TLS certificate"
+msgstr "Server nevrátil platný certifikát TLS"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1405
#, c-format
msgid "Error reading data from TLS socket: %s"
msgstr "Chyba čtení dat ze soketu TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1125
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1434
#, c-format
msgid "Error writing data to TLS socket: %s"
msgstr "Chyba zápisu dat do soketu TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1171
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1478
+msgid "Connection is already closed"
+msgstr "Připojení je stále uzavřeno"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1488
#, c-format
msgid "Error performing TLS close: %s"
msgstr "Chyba při zavírání TLS: %s"
-#: ../tls/gnutls/gtlsserverconnection-gnutls.c:138
+#: ../tls/gnutls/gtlsserverconnection-gnutls.c:103
msgid "Certificate has no private key"
msgstr "Certifikát nemá soukromý klíč"
# Danish translation for glib-networking.
-# Copyright (C) 2011-2012 glib-networking's COPYRIGHT HOLDER
+# Copyright (C) 2011-2013 glib-networking's COPYRIGHT HOLDER
# This file is distributed under the same license as the glib-networking package.
#
# Kris Thomsen <lakristho@gmail.com>, 2011.
-# Ask Hjorth Larsen <asklarsen@gmail.com>, 2012.
+# Ask Hjorth Larsen <asklarsen@gmail.com>, 2012-2013.
#
msgid ""
msgstr ""
"Project-Id-Version: glib-networking master\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-02-20 22:30+0100\n"
-"PO-Revision-Date: 2012-02-18 18:59+0100\n"
+"POT-Creation-Date: 2013-03-17 14:55+0100\n"
+"PO-Revision-Date: 2013-03-16 17:43+0100\n"
"Last-Translator: Ask Hjorth Larsen <asklarsen@gmail.com>\n"
"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
"Language: da\n"
msgid "No certificate data provided"
msgstr "Ingen certifikatdata angivet"
-#: ../tls/gnutls/gtlsclientconnection-gnutls.c:349
+#: ../tls/gnutls/gtlsclientconnection-gnutls.c:309
msgid "Server required TLS certificate"
msgstr "Server kræver et TLS-certifikat"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:202
+#: ../tls/gnutls/gtlsconnection-gnutls.c:258
#, c-format
msgid "Could not create TLS connection: %s"
msgstr "Kunne ikke oprette TLS-forbindelse: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:481
+#: ../tls/gnutls/gtlsconnection-gnutls.c:520
+msgid "Connection is closed"
+msgstr "Forbindelsen er lukket"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:582
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1425
+msgid "Operation would block"
+msgstr "Forbindelsen ville blokere"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:712
+#: ../tls/gnutls/gtlsconnection-gnutls.c:755
msgid "Peer failed to perform TLS handshake"
msgstr "Modpart mislykkedes i at udføre TLS-forhandling"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:501
+#: ../tls/gnutls/gtlsconnection-gnutls.c:729
msgid "Peer requested illegal TLS rehandshake"
msgstr "Modpart forspurgte illegalt TLS-genforhandling"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:519
+#: ../tls/gnutls/gtlsconnection-gnutls.c:761
msgid "TLS connection closed unexpectedly"
msgstr "TLS-forbindelse lukkede uventet ned"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:814
-#: ../tls/gnutls/gtlsconnection-gnutls.c:840
+#: ../tls/gnutls/gtlsconnection-gnutls.c:771
+msgid "TLS connection peer did not send a certificate"
+msgstr "TLS-modpart sendte ikke noget certifikat"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1152
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1171
#, c-format
msgid "Error performing TLS handshake: %s"
msgstr "Fejl under udførsel af TLS-handshake: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:888
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1181
+msgid "Server did not return a valid TLS certificate"
+msgstr "Serveren returnerede ikke et gyldigt TLS-certifikat"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1256
msgid "Unacceptable TLS certificate"
msgstr "Uacceptabelt TLS-certifikat"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1027
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1448
#, c-format
msgid "Error reading data from TLS socket: %s"
msgstr "Fejl under læsning af data fra TLS-sokkel: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1053
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1477
#, c-format
msgid "Error writing data to TLS socket: %s"
msgstr "Fejl under skrivning af data til TLS-sokkel: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1099
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1521
+msgid "Connection is already closed"
+msgstr "Forbindelsen er allerede lukket"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1531
#, c-format
msgid "Error performing TLS close: %s"
msgstr "Fejl under nedlukning af TLS: %s"
# German translation for glib-networking.
# Copyright (C) 2011 glib-networking's COPYRIGHT HOLDER
# This file is distributed under the same license as the glib-networking package.
-# Mario Blättermann <mario.blaettermann@gmail.com>, 2011, 2012.
-# Christian Kirbach <Christian.Kirbach@googlemail.com>, 2011.
-# Wolfgang Stöggl <c72578@yahoo.de>, 2011.
+# Mario Blättermann <mario.blaettermann@gmail.com>, 2011-2013.
+# Christian Kirbach <Christian.Kirbach@gmail.com>, 2011, 2012.
+# Wolfgang Stöggl <c72578@yahoo.de>, 2011, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: glib-networking master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
"product=glib&keywords=I18N+L10N&component=network\n"
-"POT-Creation-Date: 2012-01-06 09:47+0000\n"
-"PO-Revision-Date: 2012-03-04 16:04+0100\n"
+"POT-Creation-Date: 2012-11-29 22:09+0000\n"
+"PO-Revision-Date: 2013-03-04 08:30+0100\n"
"Last-Translator: Mario Blättermann <mario.blaettermann@gmail.com>\n"
"Language-Team: Deutsch <gnome-de@gnome.org>\n"
+"Language: \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-Poedit-Language: German\n"
"X-Poedit-Country: GERMANY\n"
+"X-Generator: Gtranslator 2.91.5\n"
#: ../proxy/libproxy/glibproxyresolver.c:150
msgid "Proxy resolver internal error."
msgid "No certificate data provided"
msgstr "Keine Zertifikatdaten bereitgestellt"
-#: ../tls/gnutls/gtlsclientconnection-gnutls.c:349
+#: ../tls/gnutls/gtlsclientconnection-gnutls.c:309
msgid "Server required TLS certificate"
msgstr "Server benötigt ein TLS-Zertifikat"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:202
+#: ../tls/gnutls/gtlsconnection-gnutls.c:254
#, c-format
msgid "Could not create TLS connection: %s"
msgstr "TLS-Verbindung konnte nicht erstellt werden: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:481
+#: ../tls/gnutls/gtlsconnection-gnutls.c:514
+msgid "Connection is closed"
+msgstr "Verbindung ist geschlossen"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:576
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1382
+msgid "Operation would block"
+msgstr "Vorgang würde blockieren"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:703
msgid "Peer failed to perform TLS handshake"
msgstr "Gegenstelle scheiterte bei Ausführung der TLS-Begrüßung"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:501
+#: ../tls/gnutls/gtlsconnection-gnutls.c:720
msgid "Peer requested illegal TLS rehandshake"
msgstr "Gegenstelle fragte illegale erneute Begrüßung an"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:519
+#: ../tls/gnutls/gtlsconnection-gnutls.c:746
msgid "TLS connection closed unexpectedly"
msgstr "TLS-Verbindung wurde unerwartet geschlossen"
+#: ../tls/gnutls/gtlsconnection-gnutls.c:756
+#| msgid "Server did not return a valid TLS certificate"
+msgid "TLS connection peer did not send a certificate"
+msgstr "Gegenstelle der TLS-Verbindung gab kein gültiges Zertifikat zurück"
+
# Handshake ist ein Fachbegriff für den Vorgang der Verbindungsaushandlung
-#: ../tls/gnutls/gtlsconnection-gnutls.c:814
-#: ../tls/gnutls/gtlsconnection-gnutls.c:840
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1064
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1083
#, c-format
msgid "Error performing TLS handshake: %s"
msgstr "Fehler bei der Ausführung des TLS-Handshake: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:888
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1228
msgid "Unacceptable TLS certificate"
msgstr "Nicht akzeptables TLS-Zertifikat"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1025
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1239
+msgid "Server did not return a valid TLS certificate"
+msgstr "Server gab kein gültiges TLS-Zertifikat zurück"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1405
#, c-format
msgid "Error reading data from TLS socket: %s"
msgstr "Fehler beim Lesen der Daten aus dem TLS-Socket: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1051
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1434
#, c-format
msgid "Error writing data to TLS socket: %s"
msgstr "Fehler beim Schreiben der Daten in den TLS-Socket: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1097
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1478
+msgid "Connection is already closed"
+msgstr "Verbindung ist bereits geschlossen"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1488
#, c-format
msgid "Error performing TLS close: %s"
msgstr "Fehler beim Schließen der TLS-Verbindung: %s"
# This file is distributed under the same license as the glib-networking package.
# Michael Kotsarinis <mk73628@gmail.com>, 2011.
# Kostas Papadimas <pkst@gnome.org>, 2012.
+# Dimitris Spingos (Δημήτρης Σπίγγος) <dmtrs32@gmail.com>, 2012.
msgid ""
msgstr ""
"Project-Id-Version: glib-networking master\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-05-02 12:02+0300\n"
-"PO-Revision-Date: 2012-05-02 12:03+0300\n"
-"Last-Translator: Kostas Papadimas <pkst@gnome.org>\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=glib&k"
+"eywords=I18N+L10N&component=network\n"
+"POT-Creation-Date: 2012-11-29 22:09+0000\n"
+"PO-Revision-Date: 2012-12-24 17:24+0300\n"
+"Last-Translator: Dimitris Spingos (Δημήτρης Σπίγγος) <dmtrs32@gmail.com>\n"
"Language-Team: team@gnome.gr\n"
"Language: el\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: Virtaal 0.6.1\n"
+"X-Generator: Virtaal 0.7.1\n"
+"X-Project-Style: gnome\n"
#: ../proxy/libproxy/glibproxyresolver.c:150
msgid "Proxy resolver internal error."
msgid "No certificate data provided"
msgstr "Δεν παρέχονται δεδομένα πιστοποιητικού"
-#: ../tls/gnutls/gtlsclientconnection-gnutls.c:349
+#: ../tls/gnutls/gtlsclientconnection-gnutls.c:309
msgid "Server required TLS certificate"
msgstr "Ο διακομιστής απαίτησε πιστοποιητικό TLS"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:202
+#: ../tls/gnutls/gtlsconnection-gnutls.c:254
#, c-format
msgid "Could not create TLS connection: %s"
msgstr "Αδύνατη η δημιουργία σύνδεσης TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:481
+#: ../tls/gnutls/gtlsconnection-gnutls.c:514
+msgid "Connection is closed"
+msgstr "Η σύνδεση έκλεισε"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:576
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1382
+msgid "Operation would block"
+msgstr "Η λειτουργία θα μπλοκαριστεί"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:703
msgid "Peer failed to perform TLS handshake"
msgstr "Ο άλλος υπολογιστής απέτυχε να εκτελέσει «χειραψία» TLS"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:501
+#: ../tls/gnutls/gtlsconnection-gnutls.c:720
msgid "Peer requested illegal TLS rehandshake"
msgstr "Ο άλλος υπολογιστής απαίτησε παράτυπη «χειραψία» TLS"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:519
+#: ../tls/gnutls/gtlsconnection-gnutls.c:746
msgid "TLS connection closed unexpectedly"
msgstr "Η σύνδεση TLS τερματίστηκε απρόσμενα"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:794
-#: ../tls/gnutls/gtlsconnection-gnutls.c:820
+#: ../tls/gnutls/gtlsconnection-gnutls.c:756
+#| msgid "Server did not return a valid TLS certificate"
+msgid "TLS connection peer did not send a certificate"
+msgstr "Η ομότιμη σύνδεση TLS δεν έστειλε πιστοποιητικό"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1064
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1083
#, c-format
msgid "Error performing TLS handshake: %s"
msgstr "Σφάλμα κατά τη «χειραψία» TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:868
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1228
msgid "Unacceptable TLS certificate"
msgstr "Μη αποδεκτό πιστοποιητικό TLS"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1007
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1239
+msgid "Server did not return a valid TLS certificate"
+msgstr "Ο διακομιστής δεν επέστρεψε ένα έγκυρο πιστοποιητικό TLS"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1405
#, c-format
msgid "Error reading data from TLS socket: %s"
msgstr "Σφάλμα κατά την ανάγνωση δεδομένων από την υποδοχή TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1033
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1434
#, c-format
msgid "Error writing data to TLS socket: %s"
msgstr "Σφάλμα κατά την εγγραφή δεδομένων στην υποδοχή TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1079
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1478
+msgid "Connection is already closed"
+msgstr "Η σύνδεση έχει ήδη κλείσει"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1488
#, c-format
msgid "Error performing TLS close: %s"
msgstr "Σφάλμα κατά το κλείσιμο TLS: %s"
msgstr ""
"Project-Id-Version: glib-networking\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-03-06 15:30+0000\n"
-"PO-Revision-Date: 2012-03-06 15:30+0100\n"
+"POT-Creation-Date: 2012-09-05 19:36+0100\n"
+"PO-Revision-Date: 2012-09-05 19:36+0100\n"
"Last-Translator: Bruce Cowan <bruce@bcowan.me.uk>\n"
"Language-Team: British English <en@li.org>\n"
"Language: en_GB\n"
msgid "No certificate data provided"
msgstr "No certificate data provided"
-#: ../tls/gnutls/gtlsclientconnection-gnutls.c:349
+#: ../tls/gnutls/gtlsclientconnection-gnutls.c:309
msgid "Server required TLS certificate"
msgstr "Server required TLS certificate"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:202
+#: ../tls/gnutls/gtlsconnection-gnutls.c:254
#, c-format
msgid "Could not create TLS connection: %s"
msgstr "Could not create TLS connection: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:481
+#: ../tls/gnutls/gtlsconnection-gnutls.c:514
+msgid "Connection is closed"
+msgstr "Connection is closed"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:574
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1377
+msgid "Operation would block"
+msgstr "Operation would block"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:701
msgid "Peer failed to perform TLS handshake"
msgstr "Peer failed to perform TLS handshake"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:501
+#: ../tls/gnutls/gtlsconnection-gnutls.c:718
msgid "Peer requested illegal TLS rehandshake"
msgstr "Peer requested illegal TLS rehandshake"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:519
+#: ../tls/gnutls/gtlsconnection-gnutls.c:744
msgid "TLS connection closed unexpectedly"
msgstr "TLS connection closed unexpectedly"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:814
-#: ../tls/gnutls/gtlsconnection-gnutls.c:840
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1055
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1074
#, c-format
msgid "Error performing TLS handshake: %s"
msgstr "Error performing TLS handshake: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:888
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1210
msgid "Unacceptable TLS certificate"
msgstr "Unacceptable TLS certificate"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1027
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1221
+msgid "Server did not return a valid TLS certificate"
+msgstr "Server did not return a valid TLS certificate"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1400
#, c-format
msgid "Error reading data from TLS socket: %s"
msgstr "Error reading data from TLS socket: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1053
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1429
#, c-format
msgid "Error writing data to TLS socket: %s"
msgstr "Error writing data to TLS socket: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1099
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1473
+msgid "Connection is already closed"
+msgstr "Connection is already closed"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1483
#, c-format
msgid "Error performing TLS close: %s"
msgstr "Error performing TLS close: %s"
# Spanish translation for glib-networking.
# Copyright (C) 2011 glib-networking's COPYRIGHT HOLDER
# This file is distributed under the same license as the glib-networking package.
-# Daniel Mustieles <daniel.mustieles@gmail.com>, 2011.
# Jorge González <jorgegonz@svn.gnome.org>, 2011.
+# Daniel Mustieles <daniel.mustieles@gmail.com>, 2011, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: glib-networking master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
"product=glib&keywords=I18N+L10N&component=network\n"
-"POT-Creation-Date: 2011-11-19 01:32+0000\n"
-"PO-Revision-Date: 2011-11-19 12:42+0100\n"
-"Last-Translator: Jorge González <jorgegonz@svn.gnome.org>\n"
+"POT-Creation-Date: 2012-11-29 22:09+0000\n"
+"PO-Revision-Date: 2012-12-02 19:10+0100\n"
+"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
"Language-Team: Español; Castellano <gnome-es-list@gnome.org>\n"
+"Language: \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"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Gtranslator 2.91.5\n"
#: ../proxy/libproxy/glibproxyresolver.c:150
msgid "Proxy resolver internal error."
msgid "No certificate data provided"
msgstr "No se han proporcionado datos del certificado"
-#: ../tls/gnutls/gtlsclientconnection-gnutls.c:385
+#: ../tls/gnutls/gtlsclientconnection-gnutls.c:309
msgid "Server required TLS certificate"
msgstr "El servidor requiere un certificado TLS"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:279
+#: ../tls/gnutls/gtlsconnection-gnutls.c:254
#, c-format
msgid "Could not create TLS connection: %s"
msgstr "No se pudo crear la conexión TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:558
+#: ../tls/gnutls/gtlsconnection-gnutls.c:514
+msgid "Connection is closed"
+msgstr "La conexión está cerrada"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:576
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1382
+msgid "Operation would block"
+msgstr "La operación de bloqueará"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:703
msgid "Peer failed to perform TLS handshake"
msgstr "EL par falló al realizar la negociación TLS"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:576
+#: ../tls/gnutls/gtlsconnection-gnutls.c:720
msgid "Peer requested illegal TLS rehandshake"
msgstr "El par solicitó una renegociación TLS ilegal"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:594
+#: ../tls/gnutls/gtlsconnection-gnutls.c:746
msgid "TLS connection closed unexpectedly"
msgstr "La conexión TLS se cerró inesperadamente"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:888
-#: ../tls/gnutls/gtlsconnection-gnutls.c:914
+#: ../tls/gnutls/gtlsconnection-gnutls.c:756
+#| msgid "Server did not return a valid TLS certificate"
+msgid "TLS connection peer did not send a certificate"
+msgstr "El par de la conexión TLS no envió un certificado"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1064
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1083
#, c-format
msgid "Error performing TLS handshake: %s"
msgstr "Error al realizar la negociación TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:962
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1228
msgid "Unacceptable TLS certificate"
msgstr "Certificado TLS inaceptable"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1099
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1239
+msgid "Server did not return a valid TLS certificate"
+msgstr "El servidor no devolvió un certificado TLS válido"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1405
#, c-format
msgid "Error reading data from TLS socket: %s"
msgstr "Error al leer datos del socket TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1125
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1434
#, c-format
msgid "Error writing data to TLS socket: %s"
msgstr "Error al escribir datos en el socket TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1171
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1478
+msgid "Connection is already closed"
+msgstr "La conexión ya está cerrada"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1488
#, c-format
msgid "Error performing TLS close: %s"
msgstr "Error al cerrar el TLS: %s"
-#: ../tls/gnutls/gtlsserverconnection-gnutls.c:138
+#: ../tls/gnutls/gtlsserverconnection-gnutls.c:103
msgid "Certificate has no private key"
msgstr "El certificado no tiene clave privada"
"Project-Id-Version: glib-networking master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
"product=glib&keywords=I18N+L10N&component=network\n"
-"POT-Creation-Date: 2012-02-28 13:20+0000\n"
-"PO-Revision-Date: 2012-03-01 21:54+0200\n"
+"POT-Creation-Date: 2012-12-18 07:45+0000\n"
+"PO-Revision-Date: 2012-12-18 14:36+0300\n"
"Last-Translator: Mattias Põldaru <mahfiaz@gmail.com>\n"
"Language-Team: Estonian <>\n"
"Language: et\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bits\n"
+"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
msgid "Proxy resolver internal error."
msgid "Could not create TLS connection: %s"
msgstr "TLS-ühendust pole võimalik luua: %s"
+msgid "Connection is closed"
+msgstr "Ühendus on suletud"
+
+msgid "Operation would block"
+msgstr "Operatsioon blokeeriks"
+
msgid "Peer failed to perform TLS handshake"
msgstr "Partneril ei õnnestunud TLS-kätlust läbi viia"
msgid "TLS connection closed unexpectedly"
msgstr "TLS-ühendus suleti ootamatult"
+msgid "TLS connection peer did not send a certificate"
+msgstr "TLS ühenduse osapool ei tagastanud sertifikaati"
+
#, c-format
msgid "Error performing TLS handshake: %s"
msgstr "Viga TLS-kätluse läbiviimisel: %s"
+msgid "Server did not return a valid TLS certificate"
+msgstr "Server ei tagastanud kehtivat TLS-sertifikaati"
+
msgid "Unacceptable TLS certificate"
msgstr "Lubamatu TLS-sertifikaat"
msgid "Error writing data to TLS socket: %s"
msgstr "Viga TLS-soklisse andmete kirjutamisel: %s"
+msgid "Connection is already closed"
+msgstr "Ühendus on juba suletud"
+
#, c-format
msgid "Error performing TLS close: %s"
msgstr "Viga TLS-i sulgemisel: %s"
# This file is distributed under the same license as the PACKAGE package.
#
# Iñaki Larrañaga Murgoitio <dooteo@euskalgnu.org>, 2011, 2012.
+# Iñaki Larrañaga Murgoitio <dooteo@zundan.com>, 2013
msgid ""
msgstr ""
"Project-Id-Version: eu\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-03-03 14:44+0100\n"
-"PO-Revision-Date: 2012-03-03 14:46+0100\n"
-"Last-Translator: Iñaki Larrañaga Murgoitio <dooteo@euskalgnu.org>\n"
-"Language-Team: Basque <kde-i18n-doc@kde.org>\n"
+"POT-Creation-Date: 2013-03-20 09:36+0100\n"
+"PO-Revision-Date: 2013-03-04 23:35+0100\n"
+"Last-Translator: Iñaki Larrañaga Murgoitio <dooteo@zundan.com>\n"
+"Language-Team: Basque <itzulpena@euskalgnu.org>\n"
"Language: eu\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
msgid "No certificate data provided"
msgstr "Ez da ziurtagiriaren daturik eman"
-#: ../tls/gnutls/gtlsclientconnection-gnutls.c:349
+#: ../tls/gnutls/gtlsclientconnection-gnutls.c:309
msgid "Server required TLS certificate"
msgstr "Zerbitzariak TLS ziurtagiria behar du"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:202
+#: ../tls/gnutls/gtlsconnection-gnutls.c:258
#, c-format
msgid "Could not create TLS connection: %s"
msgstr "Ezin izan da TLS konexioa sortu: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:481
+#: ../tls/gnutls/gtlsconnection-gnutls.c:520
+msgid "Connection is closed"
+msgstr "Konexioa itxi egin da"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:582
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1425
+msgid "Operation would block"
+msgstr "Eragiketa blokea daiteke"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:712
+#: ../tls/gnutls/gtlsconnection-gnutls.c:755
msgid "Peer failed to perform TLS handshake"
msgstr "Parekoak huts egin du TLS diosala lantzean"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:501
+#: ../tls/gnutls/gtlsconnection-gnutls.c:729
msgid "Peer requested illegal TLS rehandshake"
msgstr "Parekoak TLSren diosala ilegala eskatu du"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:519
+#: ../tls/gnutls/gtlsconnection-gnutls.c:761
msgid "TLS connection closed unexpectedly"
msgstr "TLS konexioa ustekabean itxi da"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:814
-#: ../tls/gnutls/gtlsconnection-gnutls.c:840
+#: ../tls/gnutls/gtlsconnection-gnutls.c:771
+msgid "TLS connection peer did not send a certificate"
+msgstr "TLS konexioaren parekoak ez du ziurtagiria bidali"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1152
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1171
#, c-format
msgid "Error performing TLS handshake: %s"
msgstr "Errorea TLS diosala lantzean: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:888
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1181
+msgid "Server did not return a valid TLS certificate"
+msgstr "Zerbitzariak ez du baliozko TLS ziurtagiria itzuli"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1256
msgid "Unacceptable TLS certificate"
msgstr "Onartu gabeko TLS ziurtagiria"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1027
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1448
#, c-format
msgid "Error reading data from TLS socket: %s"
msgstr "Errorea TLS socketetik datuak irakurtzean: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1053
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1477
#, c-format
msgid "Error writing data to TLS socket: %s"
msgstr "Errorea TLS socketean datuak idaztean: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1099
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1521
+msgid "Connection is already closed"
+msgstr "Konexioa jadanik itxita dago"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1531
#, c-format
msgid "Error performing TLS close: %s"
msgstr "Errorea TLSren itxiera lantzean: %s"
"Several PIN attempts have been incorrect, and the token will be locked after "
"further failures."
msgstr ""
-"Sartu diren hainbat PIN ez dira zuzenak, eta tokena blokeatu "
-"egin da hutsegite gehiagoren ondoren."
+"Sartu diren hainbat PIN ez dira zuzenak, eta tokena blokeatu egin da "
+"hutsegite gehiagoren ondoren."
#: ../tls/pkcs11/gpkcs11pin.c:112
msgid "The PIN entered is incorrect."
#: ../tls/pkcs11/gpkcs11slot.c:455
msgid "PKCS#11 Slot Identifier"
msgstr "PKCS#11 erretenaren identifikatzailea"
-
# Persian translation for glib-networking.
# Copyright (C) 2011 glib-networking's COPYRIGHT HOLDER
# This file is distributed under the same license as the glib-networking package.
-# Arash Mousavi <mousavi.arash@gmail.com>, 2011.
+# Arash Mousavi <mousavi.arash@gmail.com>, 2011, 2013.
#
msgid ""
msgstr ""
"Project-Id-Version: glib-networking master\n"
-"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=glib&keywords=I18N+L10N&component=network\n"
-"POT-Creation-Date: 2011-11-19 01:32+0000\n"
-"PO-Revision-Date: 2012-03-31 22:22+0330\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
+"product=glib&keywords=I18N+L10N&component=network\n"
+"POT-Creation-Date: 2012-11-29 22:09+0000\n"
+"PO-Revision-Date: 2013-03-23 18:10+0330\n"
"Last-Translator: Arash Mousavi <mousavi.arash@gmail.com>\n"
"Language-Team: Persian\n"
+"Language: fa_IR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Poedit-Language: Persian\n"
-"X-Poedit-Country: IRAN, ISLAMIC REPUBLIC OF\n"
"X-Poedit-SourceCharset: utf-8\n"
+"X-Generator: Poedit 1.5.4\n"
#: ../proxy/libproxy/glibproxyresolver.c:150
msgid "Proxy resolver internal error."
msgid "No certificate data provided"
msgstr "هیچ اطلاعات گواهینامهای ارائه نشده"
-#: ../tls/gnutls/gtlsclientconnection-gnutls.c:385
+#: ../tls/gnutls/gtlsclientconnection-gnutls.c:309
msgid "Server required TLS certificate"
msgstr "کارگزار به گواهینامه TLS احتیاج دارد"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:279
+#: ../tls/gnutls/gtlsconnection-gnutls.c:254
#, c-format
msgid "Could not create TLS connection: %s"
msgstr "نمیتوان اتصال TLS ایجاد کرد: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:558
+#: ../tls/gnutls/gtlsconnection-gnutls.c:514
+msgid "Connection is closed"
+msgstr "اتصال بسته شده است"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:576
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1382
+msgid "Operation would block"
+msgstr "عملیات میتواند بلوکه شود"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:703
msgid "Peer failed to perform TLS handshake"
msgstr "برقراری TLS handshake توسط همتا شکست خورد"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:576
+#: ../tls/gnutls/gtlsconnection-gnutls.c:720
msgid "Peer requested illegal TLS rehandshake"
msgstr "همتا درخواست یک TLS rehandshake غیرقانونی کرده است"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:594
+#: ../tls/gnutls/gtlsconnection-gnutls.c:746
msgid "TLS connection closed unexpectedly"
msgstr "اتصال TLS بطور غیر منتظرهای شکست خورد"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:888
-#: ../tls/gnutls/gtlsconnection-gnutls.c:914
+#: ../tls/gnutls/gtlsconnection-gnutls.c:756
+#| msgid "TLS connection closed unexpectedly"
+msgid "TLS connection peer did not send a certificate"
+msgstr "همتا اتصال TLS گواهینامهای ارسال نکرد"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1064
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1083
#, c-format
msgid "Error performing TLS handshake: %s"
msgstr "خطا در هنگام انجام TLS handshake. خطا: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:962
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1228
msgid "Unacceptable TLS certificate"
msgstr "گواهینامه TLS غیر قابل پذیرش"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1099
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1239
+#| msgid "Server required TLS certificate"
+msgid "Server did not return a valid TLS certificate"
+msgstr "کارگزار گواهینامه TLS معتبری ارسال نکرد"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1405
#, c-format
msgid "Error reading data from TLS socket: %s"
msgstr "خطا در هنگام هواندن اطلاعات از طریق سوکت TLS. خط: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1125
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1434
#, c-format
msgid "Error writing data to TLS socket: %s"
msgstr "خطا در هنگام نوشتن اطلاعات در سوکت TLS. خطا: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1171
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1478
+msgid "Connection is already closed"
+msgstr "اتصال از قبل بسته شده است"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1488
#, c-format
msgid "Error performing TLS close: %s"
msgstr "خطا در هنگام انجام بستن TLS. خطا: %s"
-#: ../tls/gnutls/gtlsserverconnection-gnutls.c:138
+#: ../tls/gnutls/gtlsserverconnection-gnutls.c:103
msgid "Certificate has no private key"
msgstr "گواهینامه هیچ کلید خصوصیای ندارد"
#: ../tls/pkcs11/gpkcs11pin.c:108
-msgid "This is the last chance to enter the PIN correctly before the token is locked."
+msgid ""
+"This is the last chance to enter the PIN correctly before the token is "
+"locked."
msgstr "آخرین شانس برای صحیح وارد کردن PIN قبل از قفل شدن رمز است."
#: ../tls/pkcs11/gpkcs11pin.c:110
-msgid "Several PIN attempts have been incorrect, and the token will be locked after further failures."
-msgstr "تعدادی از تلاشهای برای وارد کردن PIN شکست خورده است، و رمز پس از شکستهای بعدی قفل خواهد شد."
+msgid ""
+"Several PIN attempts have been incorrect, and the token will be locked after "
+"further failures."
+msgstr ""
+"تعدادی از تلاشهای برای وارد کردن PIN شکست خورده است، و رمز پس از شکستهای "
+"بعدی قفل خواهد شد."
#: ../tls/pkcs11/gpkcs11pin.c:112
msgid "The PIN entered is incorrect."
#: ../tls/pkcs11/gpkcs11slot.c:455
msgid "PKCS#11 Slot Identifier"
msgstr "شناساگر جایگاه PKCS#11"
-
# Finnish messages for glib-networking
# Copyright (C) 2011 Tommi Vainikainen
# This file is distributed under the same license as the glib-networking.
-# Tommi Vainikainen <thv@iki.fi>, 2011.
#
# Gnome 2012-03 Finnish translation sprint participants:
# Jiri Grönroos
+# Tommi Vainikainen <thv@iki.fi>, 2011.
+# Jiri Grönroos <jiri.gronroos@iki.fi>, 2012, 2013.
msgid ""
msgstr ""
-""
"Project-Id-Version: glib-networking\n"
-"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=glib&keywords=I18N+L10N&component=network\n"
-"POT-Creation-Date: 2011-11-19 01:32+0000\n"
-"PO-Revision-Date: 2012-03-12 08:36:57+0000\n"
-"Last-Translator: Tommi Vainikainen <thv@iki.fi>\n"
-"Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
+"product=glib&keywords=I18N+L10N&component=network\n"
+"POT-Creation-Date: 2012-11-29 22:09+0000\n"
+"PO-Revision-Date: 2013-03-20 23:44+0200\n"
+"Last-Translator: Jiri Grönroos <jiri.gronroos+l10n@iki.fi>\n"
+"Language-Team: Finnish <gnome-fi-laatu@lists.sourceforge.net>\n"
+"Language: fi\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: fi\n"
"X-POT-Import-Date: 2012-02-19 15:16:01+0000\n"
-"X-Generator: MediaWiki 1.20alpha (r113129); Translate 2012-03-02\n"
+"X-Generator: Lokalize 1.5\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: ../proxy/libproxy/glibproxyresolver.c:150
msgid "No certificate data provided"
msgstr "Varmennetietoja ei tarjottu"
-#: ../tls/gnutls/gtlsclientconnection-gnutls.c:349
+#: ../tls/gnutls/gtlsclientconnection-gnutls.c:309
msgid "Server required TLS certificate"
msgstr "Palvelin vaatii TLS-varmenteen"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:202
+#: ../tls/gnutls/gtlsconnection-gnutls.c:254
#, c-format
msgid "Could not create TLS connection: %s"
msgstr "Ei voitu luoda TLS-yhteyttä: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:481
+#: ../tls/gnutls/gtlsconnection-gnutls.c:514
+msgid "Connection is closed"
+msgstr "Yhteys on suljettu"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:576
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1382
+msgid "Operation would block"
+msgstr ""
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:703
msgid "Peer failed to perform TLS handshake"
msgstr "Vastapuoli ei kyennyt suoriutumaan TLS-kättelystä"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:501
+#: ../tls/gnutls/gtlsconnection-gnutls.c:720
msgid "Peer requested illegal TLS rehandshake"
msgstr "Vastapuoli pyysi laitonta TLS-uusintakättelyä"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:519
+#: ../tls/gnutls/gtlsconnection-gnutls.c:746
msgid "TLS connection closed unexpectedly"
msgstr "TLS-yhteys katkesi yllättäen"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:814
-#: ../tls/gnutls/gtlsconnection-gnutls.c:840
+#: ../tls/gnutls/gtlsconnection-gnutls.c:756
+#| msgid "Server did not return a valid TLS certificate"
+msgid "TLS connection peer did not send a certificate"
+msgstr "TLS-yhteyden vertainen ei lähettänyt varmennetta"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1064
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1083
#, c-format
msgid "Error performing TLS handshake: %s"
msgstr "Virhe suoritettaessa TLS-kättelyä: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:888
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1228
msgid "Unacceptable TLS certificate"
-msgstr "Ei hyväksyttävä TLS-varmenne"
+msgstr "TLS-varmenne ei ole hyväksyttävä"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1027
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1239
+msgid "Server did not return a valid TLS certificate"
+msgstr "Palvelin ei palauttanut kelvollista TLS-varmennetta"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1405
#, c-format
msgid "Error reading data from TLS socket: %s"
msgstr "Virhe luettaessa tietoa TLS-pistokkeesta: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1053
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1434
#, c-format
msgid "Error writing data to TLS socket: %s"
msgstr "Virhe kirjoitettaessa tietoa TLS-pistokkeeseen: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1099
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1478
+msgid "Connection is already closed"
+msgstr "Yhteys on jo suljettu"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1488
#, c-format
msgid "Error performing TLS close: %s"
msgstr "Virhe suoritettaessa TLS-sulkemista: %s"
msgstr "Varmenteella ei ole yksityistä avainta"
#: ../tls/pkcs11/gpkcs11pin.c:108
-msgid "This is the last chance to enter the PIN correctly before the token is locked."
+msgid ""
+"This is the last chance to enter the PIN correctly before the token is "
+"locked."
msgstr ""
+"Tämä on viimeinen mahdollisuus antaa oikea PIN, ennen kuin valtuus "
+"lukitaan."
#: ../tls/pkcs11/gpkcs11pin.c:110
-msgid "Several PIN attempts have been incorrect, and the token will be locked after further failures."
+msgid ""
+"Several PIN attempts have been incorrect, and the token will be locked after "
+"further failures."
msgstr ""
+"Useat PIN-yritykset ovat epäonnistuneet, ja valtuus lukitaan seuraavien "
+"epäonnistumisten myötä."
#: ../tls/pkcs11/gpkcs11pin.c:112
msgid "The PIN entered is incorrect."
#: ../tls/pkcs11/gpkcs11slot.c:446
msgid "Module"
-msgstr ""
+msgstr "Moduuli"
#: ../tls/pkcs11/gpkcs11slot.c:447
msgid "PKCS#11 Module Pointer"
#: ../tls/pkcs11/gpkcs11slot.c:454
msgid "Slot ID"
-msgstr ""
+msgstr "Paikan tunniste"
#: ../tls/pkcs11/gpkcs11slot.c:455
msgid "PKCS#11 Slot Identifier"
-msgstr ""
+msgstr "PKCS#11-paikan tunniste"
"Project-Id-Version: glib-networking master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
"product=glib&keywords=I18N+L10N&component=network\n"
-"POT-Creation-Date: 2011-11-19 01:32+0000\n"
-"PO-Revision-Date: 2012-02-11 11:22+0100\n"
+"POT-Creation-Date: 2013-02-22 13:25+0000\n"
+"PO-Revision-Date: 2013-02-25 20:13+0100\n"
"Last-Translator: Claude Paroz <claude@2xlibre.net>\n"
"Language-Team: GNOME French Team <gnomefr@traduc.org>\n"
+"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "No certificate data provided"
msgstr "Aucune donnée de certificat fournie"
-#: ../tls/gnutls/gtlsclientconnection-gnutls.c:385
+#: ../tls/gnutls/gtlsclientconnection-gnutls.c:309
msgid "Server required TLS certificate"
msgstr "Le serveur requiert un certificat TLS"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:279
+#: ../tls/gnutls/gtlsconnection-gnutls.c:258
#, c-format
msgid "Could not create TLS connection: %s"
msgstr "Impossible de créer une connexion TLS : %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:558
+#: ../tls/gnutls/gtlsconnection-gnutls.c:520
+msgid "Connection is closed"
+msgstr "La connexion est fermée"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:582
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1419
+msgid "Operation would block"
+msgstr "L'opération serait bloquée"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:712
msgid "Peer failed to perform TLS handshake"
msgstr "La négociation TLS avec le serveur pair a échoué"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:576
+#: ../tls/gnutls/gtlsconnection-gnutls.c:729
msgid "Peer requested illegal TLS rehandshake"
msgstr "Le serveur pair a demandé une renégociation TLS non autorisée"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:594
+#: ../tls/gnutls/gtlsconnection-gnutls.c:755
msgid "TLS connection closed unexpectedly"
msgstr "La connexion TLS a été fermée de manière inattendue"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:888
-#: ../tls/gnutls/gtlsconnection-gnutls.c:914
+#: ../tls/gnutls/gtlsconnection-gnutls.c:765
+msgid "TLS connection peer did not send a certificate"
+msgstr "Le pair TLS n'a pas envoyé de certificat"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1146
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1165
#, c-format
msgid "Error performing TLS handshake: %s"
msgstr "Erreur lors de la négociation TLS : %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:962
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1175
+msgid "Server did not return a valid TLS certificate"
+msgstr "Le serveur n'a pas renvoyé un certificat TLS valide"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1250
msgid "Unacceptable TLS certificate"
msgstr "Certificat TLS inacceptable"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1099
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1442
#, c-format
msgid "Error reading data from TLS socket: %s"
msgstr "Erreur lors de la lecture de données du connecteur TLS : %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1125
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1471
#, c-format
msgid "Error writing data to TLS socket: %s"
msgstr "Erreur lors de l'écriture de données sur le connecteur TLS : %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1171
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1515
+msgid "Connection is already closed"
+msgstr "La connexion est déjà fermée"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1525
#, c-format
msgid "Error performing TLS close: %s"
msgstr "Erreur lors de la fermeture TLS : %s"
-#: ../tls/gnutls/gtlsserverconnection-gnutls.c:138
+#: ../tls/gnutls/gtlsserverconnection-gnutls.c:103
msgid "Certificate has no private key"
msgstr "Le certificat n'a pas de clé privée"
--- /dev/null
+# Friulian translation for glib-networking.
+# Copyright (C) 2013 glib-networking's COPYRIGHT HOLDER
+# This file is distributed under the same license as the glib-networking package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: glib-networking master\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
+"product=glib&keywords=I18N+L10N&component=network\n"
+"POT-Creation-Date: 2013-03-25 12:43+0000\n"
+"PO-Revision-Date: 2013-03-26 13:02+0100\n"
+"Last-Translator: Fabio Tomat <f.t.public@gmail.com>\n"
+"Language-Team: Friulian <fur@li.org>\n"
+"Language: fur\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.5.4\n"
+
+#: ../proxy/libproxy/glibproxyresolver.c:150
+msgid "Proxy resolver internal error."
+msgstr ""
+
+#: ../tls/gnutls/gtlscertificate-gnutls.c:173
+#, c-format
+msgid "Could not parse DER certificate: %s"
+msgstr ""
+
+#: ../tls/gnutls/gtlscertificate-gnutls.c:194
+#, c-format
+msgid "Could not parse PEM certificate: %s"
+msgstr ""
+
+#: ../tls/gnutls/gtlscertificate-gnutls.c:225
+#, c-format
+msgid "Could not parse DER private key: %s"
+msgstr ""
+
+#: ../tls/gnutls/gtlscertificate-gnutls.c:256
+#, c-format
+msgid "Could not parse PEM private key: %s"
+msgstr ""
+
+#: ../tls/gnutls/gtlscertificate-gnutls.c:296
+msgid "No certificate data provided"
+msgstr "Nissun dât di certificât dât"
+
+#: ../tls/gnutls/gtlsclientconnection-gnutls.c:309
+msgid "Server required TLS certificate"
+msgstr "Il server al domande un certificât TLS"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:258
+#, c-format
+msgid "Could not create TLS connection: %s"
+msgstr "Impussibil creâ la conession TLS: %s"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:520
+msgid "Connection is closed"
+msgstr "La conession a je sierade"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:582
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1425
+msgid "Operation would block"
+msgstr "Le operazion a podares blocasi"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:712
+#: ../tls/gnutls/gtlsconnection-gnutls.c:755
+msgid "Peer failed to perform TLS handshake"
+msgstr ""
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:729
+msgid "Peer requested illegal TLS rehandshake"
+msgstr ""
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:761
+msgid "TLS connection closed unexpectedly"
+msgstr ""
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:771
+msgid "TLS connection peer did not send a certificate"
+msgstr "Il grop di conession TLS nol a inviât un certificât"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1152
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1171
+#, c-format
+msgid "Error performing TLS handshake: %s"
+msgstr "Erôr tal eseguî il handshake TLS: %s"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1181
+msgid "Server did not return a valid TLS certificate"
+msgstr "Il server nol a tornât un certificât TLS valit"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1256
+msgid "Unacceptable TLS certificate"
+msgstr ""
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1448
+#, c-format
+msgid "Error reading data from TLS socket: %s"
+msgstr "Erôr tal lei dâts tal socket TLS: %s"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1477
+#, c-format
+msgid "Error writing data to TLS socket: %s"
+msgstr "Erôr tal scrivi dâts tal socket TLS: %s"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1521
+msgid "Connection is already closed"
+msgstr "La conession a je za sierade"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1531
+#, c-format
+msgid "Error performing TLS close: %s"
+msgstr ""
+
+#: ../tls/gnutls/gtlsserverconnection-gnutls.c:103
+msgid "Certificate has no private key"
+msgstr "Il certificât a nol a une clâf privade"
+
+#: ../tls/pkcs11/gpkcs11pin.c:108
+msgid ""
+"This is the last chance to enter the PIN correctly before the token is "
+"locked."
+msgstr ""
+"Cheste a je l'ultime pussibilitât par inserî il PIN coret prime che al vegni "
+"blocât il token."
+
+#: ../tls/pkcs11/gpkcs11pin.c:110
+msgid ""
+"Several PIN attempts have been incorrect, and the token will be locked after "
+"further failures."
+msgstr ""
+"A son stâts fats une vore di tentatîfs par meti il PIN, il token al sarà "
+"blocât dopo altris faliments."
+
+#: ../tls/pkcs11/gpkcs11pin.c:112
+msgid "The PIN entered is incorrect."
+msgstr "Il PIN dât a nol è coret."
+
+#: ../tls/pkcs11/gpkcs11slot.c:446
+msgid "Module"
+msgstr ""
+
+#: ../tls/pkcs11/gpkcs11slot.c:447
+msgid "PKCS#11 Module Pointer"
+msgstr ""
+
+#: ../tls/pkcs11/gpkcs11slot.c:454
+msgid "Slot ID"
+msgstr ""
+
+#: ../tls/pkcs11/gpkcs11slot.c:455
+msgid "PKCS#11 Slot Identifier"
+msgstr ""
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
-#
# Copyright © 2011 Leandro Regueiro.
-#
# Leandro Regueiro <leandro.regueiro@gmail.com>, 2011.
-#
# Proxecto Trasno - Adaptación do software libre á lingua galega: Se desexas
# colaborar connosco, podes atopar máis información en <http://trasno.net>
# Fran Diéguez <frandieguez@ubuntu.com>, 2011.
-# Fran Dieguez <frandieguez@gnome.org>, 2011.
-#
+# Fran Dieguez <frandieguez@gnome.org>, 2011, 2012.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-11-21 01:50+0100\n"
-"PO-Revision-Date: 2011-11-21 01:51+0100\n"
+"POT-Creation-Date: 2012-12-24 22:51+0100\n"
+"PO-Revision-Date: 2012-12-24 22:52+0200\n"
"Last-Translator: Fran Dieguez <frandieguez@gnome.org>\n"
-"Language-Team: Galician <gnome-l10n-gl@gnome.org>\n"
+"Language-Team: gnome-l10n-gl@gnome.org\n"
"Language: gl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Lokalize 1.0\n"
-"Plural-Forms: nplurals=2; plural=(n!=1);\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Virtaal 0.7.1\n"
#: ../proxy/libproxy/glibproxyresolver.c:150
msgid "Proxy resolver internal error."
msgid "No certificate data provided"
msgstr "Non se forneceu ningún dato do certificado"
-#: ../tls/gnutls/gtlsclientconnection-gnutls.c:385
+#: ../tls/gnutls/gtlsclientconnection-gnutls.c:309
msgid "Server required TLS certificate"
msgstr "O servidor require un certificado TLS"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:279
+#: ../tls/gnutls/gtlsconnection-gnutls.c:257
#, c-format
msgid "Could not create TLS connection: %s"
msgstr "Non foi posíbel crear a conexión TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:558
+#: ../tls/gnutls/gtlsconnection-gnutls.c:518
+msgid "Connection is closed"
+msgstr "A conexión está pechada"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:580
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1417
+msgid "Operation would block"
+msgstr "A operación bloquearase"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:710
msgid "Peer failed to perform TLS handshake"
msgstr "O par fallou ao realizar a negociación TLS"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:576
+#: ../tls/gnutls/gtlsconnection-gnutls.c:727
msgid "Peer requested illegal TLS rehandshake"
msgstr "O par solicitou unha renegociación TLS inaceptábel"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:594
+#: ../tls/gnutls/gtlsconnection-gnutls.c:753
msgid "TLS connection closed unexpectedly"
msgstr "A conexión TLS pechouse de forma inesperada"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:888
-#: ../tls/gnutls/gtlsconnection-gnutls.c:914
+#: ../tls/gnutls/gtlsconnection-gnutls.c:763
+msgid "TLS connection peer did not send a certificate"
+msgstr "O par da conexión TLS non enviou un certificado"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1144
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1163
#, c-format
msgid "Error performing TLS handshake: %s"
msgstr "Produciuse un erro ao realizar a negociación TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:962
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1173
+msgid "Server did not return a valid TLS certificate"
+msgstr "O servidor non devolveu un certificado TLS válido"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1248
msgid "Unacceptable TLS certificate"
msgstr "Certificado TLS inaceptábel"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1099
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1440
#, c-format
msgid "Error reading data from TLS socket: %s"
msgstr "Produciuse un erro ao ler datos do conectador TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1125
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1469
#, c-format
msgid "Error writing data to TLS socket: %s"
msgstr "Produciuse un erro ao escribir datos no conectador TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1171
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1513
+msgid "Connection is already closed"
+msgstr "A conexión está pechada"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1523
#, c-format
msgid "Error performing TLS close: %s"
msgstr "Produciuse un erro ao realizar o peche de TLS: %s"
-#: ../tls/gnutls/gtlsserverconnection-gnutls.c:138
+#: ../tls/gnutls/gtlsserverconnection-gnutls.c:103
msgid "Certificate has no private key"
msgstr "O certificado no ten unha chave privada"
msgstr ""
"Project-Id-Version: glib-networking\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-12-10 11:52+0200\n"
-"PO-Revision-Date: 2011-12-10 11:54+0200\n"
+"POT-Creation-Date: 2012-11-30 10:53+0200\n"
+"PO-Revision-Date: 2012-11-30 10:53+0200\n"
"Last-Translator: Yaron Shahrabani <sh.yaron@gmail.com>\n"
"Language-Team: Hebrew <sh.yaron@gmail.com>\n"
"Language: he\n"
msgid "No certificate data provided"
msgstr "לא סופקו נתוני אישור"
-#: ../tls/gnutls/gtlsclientconnection-gnutls.c:349
+#: ../tls/gnutls/gtlsclientconnection-gnutls.c:309
msgid "Server required TLS certificate"
msgstr "השרת דורש תעודת TLS"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:202
+#: ../tls/gnutls/gtlsconnection-gnutls.c:254
#, c-format
msgid "Could not create TLS connection: %s"
msgstr "לא ניתן ליצור חיבור TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:481
+#: ../tls/gnutls/gtlsconnection-gnutls.c:514
+msgid "Connection is closed"
+msgstr "החיבור סגור"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:577
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1383
+msgid "Operation would block"
+msgstr "הפעולה תיחסם"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:704
msgid "Peer failed to perform TLS handshake"
msgstr "העמית נכשל בלחיצת היד מסוג TLS"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:501
+#: ../tls/gnutls/gtlsconnection-gnutls.c:721
msgid "Peer requested illegal TLS rehandshake"
msgstr "העמית ביקש לחיצת יד חוזרת מסוג TLS בלתי חוקית"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:519
+#: ../tls/gnutls/gtlsconnection-gnutls.c:747
msgid "TLS connection closed unexpectedly"
msgstr "החיבור ל־TLS נסגר באופן בלתי צפוי"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:814
-#: ../tls/gnutls/gtlsconnection-gnutls.c:840
+#: ../tls/gnutls/gtlsconnection-gnutls.c:757
+msgid "TLS connection peer did not send a certificate"
+msgstr "הצד השני בחיבור ה־TLS לא החזיר תעודה"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1065
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1084
#, c-format
msgid "Error performing TLS handshake: %s"
msgstr "שגיאה בביצוע לחיצת יד מסוג TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:888
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1229
msgid "Unacceptable TLS certificate"
msgstr "אישור ה־TLS אינו מקובל"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1025
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1240
+msgid "Server did not return a valid TLS certificate"
+msgstr "השרת לא החזיר תעודת TLS תקפה"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1406
#, c-format
msgid "Error reading data from TLS socket: %s"
msgstr "שגיאה בקריאת הנתונים משקע ה־TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1051
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1435
#, c-format
msgid "Error writing data to TLS socket: %s"
msgstr "שגיאה בכתיבת נתונים אל שקע ה־TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1097
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1479
+msgid "Connection is already closed"
+msgstr "החיבור כבר סגור"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1489
#, c-format
msgid "Error performing TLS close: %s"
msgstr "שגיאה בביצוע סגירת TLS: %s"
# Copyright (C) 2011 glib-networking's COPYRIGHT HOLDER
# This file is distributed under the same license as the glib-networking package.
# Rajesh Ranjan <rranjan@redhat.com>, 2011.
-# chandankumar(ciypro) <chandankumar.093047@gmail.com>, 2012.
+# chandankumar(ciypro) <chandankumar.093047@gmail.com>, 2012, 2013.
+# rajesh <rajeshkajha@yahoo.com>, 2012.
msgid ""
msgstr ""
"Project-Id-Version: glib-networking.po.master.hi\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
"product=glib&keywords=I18N+L10N&component=network\n"
-"POT-Creation-Date: 2011-11-19 01:32+0000\n"
-"PO-Revision-Date: 2012-03-26 15:28+0530\n"
-"Last-Translator: chandankumar(ciypro) <chandankumar.093047@gmail.com>\n"
+"POT-Creation-Date: 2012-11-29 22:09+0000\n"
+"PO-Revision-Date: 2013-03-25 13:35+0000\n"
+"Last-Translator: chandankumar <chandankumar.093047@gmail.com>\n"
"Language-Team: Hindi <kde-i18n-doc@kde.org>\n"
+"Language: hi\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: hi\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Lokalize 1.2\n"
+"X-Generator: Lokalize 1.5\n"
#: ../proxy/libproxy/glibproxyresolver.c:150
msgid "Proxy resolver internal error."
msgid "No certificate data provided"
msgstr "कोई प्रमाणपत्र आँकड़ा नहीं दिया गया"
-#: ../tls/gnutls/gtlsclientconnection-gnutls.c:385
+#: ../tls/gnutls/gtlsclientconnection-gnutls.c:309
msgid "Server required TLS certificate"
msgstr "सर्वर के लिए TLS प्रमाणपत्र चाहिए"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:279
+#: ../tls/gnutls/gtlsconnection-gnutls.c:254
#, c-format
msgid "Could not create TLS connection: %s"
msgstr "टीएलएस कनेक्शन नहीं बना सका: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:558
+#: ../tls/gnutls/gtlsconnection-gnutls.c:514
+msgid "Connection is closed"
+msgstr "कनेक्शन बंद है"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:576
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1382
+msgid "Operation would block"
+msgstr "कार्य रोक दिया जाएगा"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:703
msgid "Peer failed to perform TLS handshake"
msgstr "TLS हैंडशेक करने में पीयर विफल रहा"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:576
+#: ../tls/gnutls/gtlsconnection-gnutls.c:720
msgid "Peer requested illegal TLS rehandshake"
msgstr "पीयर ने TLS फिर हैंडशेक के लिए आग्रह किया"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:594
+#: ../tls/gnutls/gtlsconnection-gnutls.c:746
msgid "TLS connection closed unexpectedly"
msgstr "TLS अप्रत्याशित रूप से बंद हो गया"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:888
-#: ../tls/gnutls/gtlsconnection-gnutls.c:914
+#: ../tls/gnutls/gtlsconnection-gnutls.c:756
+#| msgid "Server did not return a valid TLS certificate"
+msgid "TLS connection peer did not send a certificate"
+msgstr "TLS कनेक्शन सहकर्मी एक प्रमाण पत्र नहीं भेजा"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1064
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1083
#, c-format
msgid "Error performing TLS handshake: %s"
msgstr "TLS हैंडशेक करने में त्रुटि: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:962
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1228
msgid "Unacceptable TLS certificate"
msgstr "अस्वीकार्य TLS प्रमाणपत्र"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1099
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1239
+msgid "Server did not return a valid TLS certificate"
+msgstr "सर्वर ने वैध TLS प्रमाणपत्र नहीं दिया है"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1405
#, c-format
msgid "Error reading data from TLS socket: %s"
msgstr "TLS सॉकेट से आँकड़ा पढ़ने में त्रुटि: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1125
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1434
#, c-format
msgid "Error writing data to TLS socket: %s"
msgstr "TLS सॉकेट से आँकड़ा लिखने में त्रुटि: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1171
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1478
+msgid "Connection is already closed"
+msgstr "कनेक्शन पहले से बंद है"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1488
#, c-format
msgid "Error performing TLS close: %s"
msgstr "TLS बंद करने में त्रुटि: %s"
-#: ../tls/gnutls/gtlsserverconnection-gnutls.c:138
+#: ../tls/gnutls/gtlsserverconnection-gnutls.c:103
msgid "Certificate has no private key"
msgstr "प्रमाणपत्र में कोई निजी कुंजी नहीं है"
msgid ""
"This is the last chance to enter the PIN correctly before the token is "
"locked."
-msgstr ""
-"टोकन बंद होने से पहले पिन सही तरीके से दर्ज करने का यह "
-"आखिरी मौका है."
+msgstr "टोकन बंद होने से पहले पिन सही तरीके से दर्ज करने का यह आखिरी मौका है."
#: ../tls/pkcs11/gpkcs11pin.c:110
msgid ""
"Several PIN attempts have been incorrect, and the token will be locked after "
"further failures."
msgstr ""
-"कई पिन प्रयास को गलत कर दिया गया है, और आगे विफलताओं के बाद टोकन बंद "
-"à¤\95र दिया à¤\9cाà¤\8fà¤\97ा."
+"कई पिन प्रयास को गलत कर दिया गया है, और आगे विफलताओं के बाद टोकन बंद कर दिया "
+"जाएगा."
#: ../tls/pkcs11/gpkcs11pin.c:112
msgid "The PIN entered is incorrect."
# Hungarian translation of glib-networking
-# Copyright (C) 2011. Free Software Foundation, Inc.
+# Copyright (C) 2011, 2012. Free Software Foundation, Inc.
# This file is distributed under the same license as the glib-networking package.
#
# Gabor Kelemen <kelemeng at gnome dot hu>, 2011, 2012.
+# Balázs Úr <urbalazs at gmail dot com>, 2012.
msgid ""
msgstr ""
"Project-Id-Version: glib-networking master\n"
-"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug."
-"cgi?product=glib&keywords=I18N+L10N&component=network\n"
-"POT-Creation-Date: 2011-11-19 01:32+0000\n"
-"PO-Revision-Date: 2012-03-04 03:03+0100\n"
-"Last-Translator: Gabor Kelemen <kelemeng at gnome dot hu>\n"
-"Language-Team: Magyar <gnome-hu-list at gnome dot org>\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
+"product=glib&keywords=I18N+L10N&component=network\n"
+"POT-Creation-Date: 2012-11-29 22:09+0000\n"
+"PO-Revision-Date: 2012-12-31 19:04+0100\n"
+"Last-Translator: Balázs Úr <urbalazs at gmail dot com>\n"
+"Language-Team: Hungarian <gnome-hu-list at gnome dot org>\n"
+"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: \n"
-"X-Generator: Lokalize 1.0\n"
+"X-Generator: Lokalize 1.2\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: ../proxy/libproxy/glibproxyresolver.c:150
msgid "No certificate data provided"
msgstr "Nincsenek megadva tanúsítványadatok"
-#: ../tls/gnutls/gtlsclientconnection-gnutls.c:385
+#: ../tls/gnutls/gtlsclientconnection-gnutls.c:309
msgid "Server required TLS certificate"
msgstr "A kiszolgáló TLS-tanúsítványt kért"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:279
+#: ../tls/gnutls/gtlsconnection-gnutls.c:254
#, c-format
msgid "Could not create TLS connection: %s"
msgstr "Nem sikerült létrehozni TLS-kapcsolatot: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:558
+#: ../tls/gnutls/gtlsconnection-gnutls.c:514
+msgid "Connection is closed"
+msgstr "A kapcsolat lezárva"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:576
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1382
+msgid "Operation would block"
+msgstr "A művelet blokkoló lenne"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:703
msgid "Peer failed to perform TLS handshake"
msgstr "A partner nem tudta végrehajtani a TLS-kézfogást"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:576
+#: ../tls/gnutls/gtlsconnection-gnutls.c:720
msgid "Peer requested illegal TLS rehandshake"
msgstr "A partner illegális ismételt TLS-kézfogást kért"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:594
+#: ../tls/gnutls/gtlsconnection-gnutls.c:746
msgid "TLS connection closed unexpectedly"
msgstr "A TLS-kapcsolat váratlanul befejeződött"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:888
-#: ../tls/gnutls/gtlsconnection-gnutls.c:914
+#: ../tls/gnutls/gtlsconnection-gnutls.c:756
+#| msgid "Server did not return a valid TLS certificate"
+msgid "TLS connection peer did not send a certificate"
+msgstr "A TLS kapcsolat partner nem küldött tanúsítványt"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1064
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1083
#, c-format
msgid "Error performing TLS handshake: %s"
msgstr "Hiba a TLS-kézfogás végrehajtásakor: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:962
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1228
msgid "Unacceptable TLS certificate"
msgstr "Elfogadhatatlan TLS-tanúsítvány"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1099
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1239
+msgid "Server did not return a valid TLS certificate"
+msgstr "A kiszolgáló nem adott vissza érvényes TLS-tanúsítványt"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1405
#, c-format
msgid "Error reading data from TLS socket: %s"
msgstr "Hiba az adatok olvasásakor a TLS-foglalatból: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1125
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1434
#, c-format
msgid "Error writing data to TLS socket: %s"
msgstr "Hiba az adatok TLS-foglalatba írásakor: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1171
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1478
+msgid "Connection is already closed"
+msgstr "A kapcsolat már le van zárva"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1488
#, c-format
msgid "Error performing TLS close: %s"
msgstr "Hiba a TLS-lezárás végrehajtásakor: %s"
-#: ../tls/gnutls/gtlsserverconnection-gnutls.c:138
+#: ../tls/gnutls/gtlsserverconnection-gnutls.c:103
msgid "Certificate has no private key"
msgstr "A tanúsítványnak nincs személyes kulcsa"
# Indonesian translation of glib-networking
# Copyright (C) 2011 THE glib-networking'S COPYRIGHT HOLDER
# This file is distributed under the same license as the glib-networking package.
-# Andika Triwidada <andika@gmail.com>, 2011.
#
+# Andika Triwidada <andika@gmail.com>, 2011, 2012, 2013.
+# Dirgita <dirgitadevina@yahoo.co.id>, 2012.
msgid ""
msgstr ""
"Project-Id-Version: glib-networking master\n"
-"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=glib&component=network\n"
-"POT-Creation-Date: 2011-01-16 20:43+0000\n"
-"PO-Revision-Date: 2011-01-17 11:41+0700\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
+"product=glib&keywords=I18N+L10N&component=network\n"
+"POT-Creation-Date: 2012-11-29 22:09+0000\n"
+"PO-Revision-Date: 2013-03-29 08:57+0700\n"
"Last-Translator: Andika Triwidada <andika@gmail.com>\n"
-"Language-Team: GNOME Indonesian Translation Team <gnome@i15n.org>\n"
+"Language-Team: Indonesian <gnome@i15n.org>\n"
+"Language: id\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Poedit-Language: Indonesian\n"
-"X-Poedit-Country: INDONESIA\n"
+"X-Generator: Poedit 1.5.5\n"
-#: ../proxy/libproxy/glibproxyresolver.c:142
+#: ../proxy/libproxy/glibproxyresolver.c:150
msgid "Proxy resolver internal error."
msgstr "Galat internal resolver proksi."
msgid "Could not parse PEM certificate: %s"
msgstr "Tak bisa mengurai sertifikat PEM: %s"
-#: ../tls/gnutls/gtlscertificate-gnutls.c:214
+#: ../tls/gnutls/gtlscertificate-gnutls.c:225
#, c-format
msgid "Could not parse DER private key: %s"
msgstr "Tak bisa mengurai kunci privat DER: %s"
-#: ../tls/gnutls/gtlscertificate-gnutls.c:234
+#: ../tls/gnutls/gtlscertificate-gnutls.c:256
#, c-format
msgid "Could not parse PEM private key: %s"
msgstr "Tak bisa mengurai kunci privat PEM: %s"
-#: ../tls/gnutls/gtlscertificate-gnutls.c:275
+#: ../tls/gnutls/gtlscertificate-gnutls.c:296
msgid "No certificate data provided"
msgstr "Data sertifikat tak disediakan"
-#: ../tls/gnutls/gtlsclientconnection-gnutls.c:356
+#: ../tls/gnutls/gtlsclientconnection-gnutls.c:309
msgid "Server required TLS certificate"
msgstr "Server memerlukan sertifikat TLS"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:241
+#: ../tls/gnutls/gtlsconnection-gnutls.c:254
#, c-format
msgid "Could not create TLS connection: %s"
msgstr "Tak bisa membuat koneksi TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:479
+#: ../tls/gnutls/gtlsconnection-gnutls.c:514
+msgid "Connection is closed"
+msgstr "Koneksi ditutup"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:576
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1382
+msgid "Operation would block"
+msgstr "Operasi akan memblokir"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:703
msgid "Peer failed to perform TLS handshake"
msgstr "Peer gagal melakukan jabat tangan TLS"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:497
+#: ../tls/gnutls/gtlsconnection-gnutls.c:720
msgid "Peer requested illegal TLS rehandshake"
msgstr "Peer meminta jabat tangan ulang TLS yang ilegal"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:511
+#: ../tls/gnutls/gtlsconnection-gnutls.c:746
msgid "TLS connection closed unexpectedly"
msgstr "Koneksi TLS tertutup tak disangka-sangka"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:799
-#: ../tls/gnutls/gtlsconnection-gnutls.c:825
+#: ../tls/gnutls/gtlsconnection-gnutls.c:756
+msgid "TLS connection peer did not send a certificate"
+msgstr "Pasangan koneksi TLS tak mengembalikan sertifikat"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1064
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1083
#, c-format
msgid "Error performing TLS handshake: %s"
msgstr "Galat melakukan jabat tangan TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:876
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1228
msgid "Unacceptable TLS certificate"
msgstr "Sertifikat TLS tak dapat diterima"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1023
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1239
+msgid "Server did not return a valid TLS certificate"
+msgstr "Server tak mengembalikan sertifikat TLS yang valid"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1405
#, c-format
msgid "Error reading data from TLS socket: %s"
msgstr "Galat saat membaca data dari soket TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1049
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1434
#, c-format
msgid "Error writing data to TLS socket: %s"
msgstr "Galat saat menulis data ke soket TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1095
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1478
+msgid "Connection is already closed"
+msgstr "Koneksi telah ditutup"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1488
#, c-format
msgid "Error performing TLS close: %s"
msgstr "Galat melaksanakan penutupan TLS: %s"
+#: ../tls/gnutls/gtlsserverconnection-gnutls.c:103
+msgid "Certificate has no private key"
+msgstr "Sertifikatnya tidak memiliki kunci privat"
+
+#: ../tls/pkcs11/gpkcs11pin.c:108
+msgid ""
+"This is the last chance to enter the PIN correctly before the token is "
+"locked."
+msgstr ""
+"Ini kesempatan terakhir memasukkan PIN yang benar sebelum token dikunci."
+
+#: ../tls/pkcs11/gpkcs11pin.c:110
+msgid ""
+"Several PIN attempts have been incorrect, and the token will be locked after "
+"further failures."
+msgstr ""
+"Sudah beberapa kali PIN yang dimasukkan salah, token akan dikunci jika "
+"terulang."
+
+#: ../tls/pkcs11/gpkcs11pin.c:112
+msgid "The PIN entered is incorrect."
+msgstr "PIN yang dimasukkan salah."
+
+#: ../tls/pkcs11/gpkcs11slot.c:446
+msgid "Module"
+msgstr "Modul"
+
+#: ../tls/pkcs11/gpkcs11slot.c:447
+msgid "PKCS#11 Module Pointer"
+msgstr "Pointer Modul PKCS#11"
+
+#: ../tls/pkcs11/gpkcs11slot.c:454
+msgid "Slot ID"
+msgstr "ID Slot"
+
+#: ../tls/pkcs11/gpkcs11slot.c:455
+msgid "PKCS#11 Slot Identifier"
+msgstr "Identifair Slot PKCS#11"
# glib-networking Italian translation
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011, 2012, 2013 Free Software Foundation, Inc
# This file is distributed under the same license as the glib-networking package.
# Luca Ferretti <lferrett@gnome.org>, 2011, 2012.
+# Milo Casagrande <milo@ubuntu.com>, 2013.
#
msgid ""
msgstr ""
"Project-Id-Version: glib-networking\n"
-"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
-"product=glib&keywords=I18N+L10N&component=network\n"
-"POT-Creation-Date: 2012-02-12 19:21+0000\n"
-"PO-Revision-Date: 2012-02-17 12:46+0100\n"
-"Last-Translator: Luca Ferretti <lferrett@gnome.org>\n"
-"Language-Team: Italiano <tp@lists.linux.it>\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-01-24 22:40+0100\n"
+"PO-Revision-Date: 2013-01-24 22:41+0100\n"
+"Last-Translator: Milo Casagrande <milo@ubuntu.com>\n"
+"Language-Team: Italian <tp@lists.linux.it>\n"
+"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: \n"
+"Content-Transfer-Encoding: 8-bit\n"
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
#: ../proxy/libproxy/glibproxyresolver.c:150
msgid "No certificate data provided"
msgstr "Nessun dato di certificato fornito"
-#: ../tls/gnutls/gtlsclientconnection-gnutls.c:349
+#: ../tls/gnutls/gtlsclientconnection-gnutls.c:309
msgid "Server required TLS certificate"
msgstr "Il server richiede un certificato TLS"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:202
+#: ../tls/gnutls/gtlsconnection-gnutls.c:257
#, c-format
msgid "Could not create TLS connection: %s"
msgstr "Impossibile creare la connessione TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:481
+#: ../tls/gnutls/gtlsconnection-gnutls.c:518
+msgid "Connection is closed"
+msgstr "La connessione è chiusa"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:580
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1417
+msgid "Operation would block"
+msgstr "L'operazione potrebbe bloccarsi"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:710
msgid "Peer failed to perform TLS handshake"
msgstr "Il nono non è stato in grado di eseguire l'handshake TLS"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:501
+#: ../tls/gnutls/gtlsconnection-gnutls.c:727
msgid "Peer requested illegal TLS rehandshake"
msgstr "Il nodo ha richesto un re-handshake non lecito"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:519
+#: ../tls/gnutls/gtlsconnection-gnutls.c:753
msgid "TLS connection closed unexpectedly"
msgstr "La connessione TLS si è chiusa in modo inatteso"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:814
-#: ../tls/gnutls/gtlsconnection-gnutls.c:840
+#: ../tls/gnutls/gtlsconnection-gnutls.c:763
+msgid "TLS connection peer did not send a certificate"
+msgstr "Il nodo di connessione TLS non ha inviato un certificato"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1144
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1163
#, c-format
msgid "Error performing TLS handshake: %s"
msgstr "Errore nell'eseguire l'handshake TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:888
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1173
+msgid "Server did not return a valid TLS certificate"
+msgstr "Il server non ha restituito un certificato TLS valido"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1248
msgid "Unacceptable TLS certificate"
msgstr "Certificato TLS inammissibile"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1027
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1440
#, c-format
msgid "Error reading data from TLS socket: %s"
msgstr "Errore nel leggere dati dal socket TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1053
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1469
#, c-format
msgid "Error writing data to TLS socket: %s"
msgstr "Errore nello scrivere dati sul socket TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1099
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1513
+msgid "Connection is already closed"
+msgstr "La connessione è già chiusa"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1523
#, c-format
msgid "Error performing TLS close: %s"
msgstr "Errore nell'eseguire la chiusura TLS: %s"
# This file is distributed under the same license as glib-networking package.
# Takayuki KUSANO <AE5T-KSN@asahi-net.or.jp>, 2011-2012.
# Hideki Yamane <henrich@debian.org>, 2011-2012.
+# Yoji TOYODA <bsyamato@sea.plala.or.jp>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: glib-networking master\n"
-"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
-"product=glib&keywords=I18N+L10N&component=network\n"
-"POT-Creation-Date: 2012-03-12 09:02+0000\n"
-"PO-Revision-Date: 2012-03-12 21:04+0900\n"
-"Last-Translator: Takayuki KUSANO <AE5T-KSN@asahi-net.or.jp>\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=glib&keywords=I18N+L10N&component=network\n"
+"POT-Creation-Date: 2012-08-30 12:32+0000\n"
+"PO-Revision-Date: 2012-08-30 21:54+0900\n"
+"Last-Translator: Yoji TOYODA <bsyamato@sea.plala.or.jp>\n"
"Language-Team: Japanese <gnome-translation@gnome.gr.jp>\n"
+"Language: ja\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: ../proxy/libproxy/glibproxyresolver.c:150
msgid "Proxy resolver internal error."
-msgstr "ã\83\97ã\83ã\82ã\82·ã\83¬ã\82¾ã\83«ã\83\90での内部エラー。"
+msgstr "ã\83\97ã\83ã\82ã\82·ã\83ªã\82¾ã\83«ã\83\90ã\83¼での内部エラー。"
#: ../tls/gnutls/gtlscertificate-gnutls.c:173
#, c-format
msgid "No certificate data provided"
msgstr "証明書のデータが与えられていません"
-#: ../tls/gnutls/gtlsclientconnection-gnutls.c:349
+#: ../tls/gnutls/gtlsclientconnection-gnutls.c:309
msgid "Server required TLS certificate"
msgstr "サーバーが TLS 証明書を要求しました"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:202
+#: ../tls/gnutls/gtlsconnection-gnutls.c:254
#, c-format
msgid "Could not create TLS connection: %s"
-msgstr "TLS の接続を確立できませんでした: %s"
+msgstr "TLS コネクションを確立できませんでした: %s"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:514
+msgid "Connection is closed"
+msgstr "コネクションが切断されています"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:481
+#: ../tls/gnutls/gtlsconnection-gnutls.c:574
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1377
+msgid "Operation would block"
+msgstr "操作がブロックされます"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:701
msgid "Peer failed to perform TLS handshake"
msgstr "通信相手が TLS ハンドシェイクの実行に失敗しました"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:501
+#: ../tls/gnutls/gtlsconnection-gnutls.c:718
msgid "Peer requested illegal TLS rehandshake"
msgstr "通信相手が不当な TLS の再ハンドシェイクを要求しました"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:519
+#: ../tls/gnutls/gtlsconnection-gnutls.c:744
msgid "TLS connection closed unexpectedly"
-msgstr "TLS 接続が突然閉じられました"
+msgstr "TLS コネクションが突然閉じられました"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:814
-#: ../tls/gnutls/gtlsconnection-gnutls.c:840
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1055
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1074
#, c-format
msgid "Error performing TLS handshake: %s"
msgstr "TLS ハンドシェイク実行中のエラー: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:888
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1210
msgid "Unacceptable TLS certificate"
msgstr "受け付けられない TLS 証明書です"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1027
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1221
+msgid "Server did not return a valid TLS certificate"
+msgstr "サーバーが有効な TLS 証明書を返しませんでした。"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1400
#, c-format
msgid "Error reading data from TLS socket: %s"
msgstr "TLS ソケットからのデータ読み込み中のエラー: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1053
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1429
#, c-format
msgid "Error writing data to TLS socket: %s"
msgstr "TLS ソケットへのデータ書き出し中のエラー: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1099
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1473
+msgid "Connection is already closed"
+msgstr "コネクションはすでに切断されています"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1483
#, c-format
msgid "Error performing TLS close: %s"
msgstr "TLS クローズ実行中のエラー: %s"
msgstr "証明書に秘密鍵がありません"
#: ../tls/pkcs11/gpkcs11pin.c:108
-msgid ""
-"This is the last chance to enter the PIN correctly before the token is "
-"locked."
-msgstr ""
-"これがトークンがロックされる前に、正しく PIN を入力する最後のチャンスです。"
+msgid "This is the last chance to enter the PIN correctly before the token is locked."
+msgstr "これがトークンがロックされる前に正しく PIN コードを入力する最後のチャンスです。"
#: ../tls/pkcs11/gpkcs11pin.c:110
-msgid ""
-"Several PIN attempts have been incorrect, and the token will be locked after "
-"further failures."
-msgstr ""
-"正しくない PIN 入力が複数回行われたので、さらに失敗するとトークンはロックされ"
-"ます。"
+msgid "Several PIN attempts have been incorrect, and the token will be locked after further failures."
+msgstr "正しくない PIN コードの入力が複数回行われたので、さらに失敗するとトークンはロックされます。"
#: ../tls/pkcs11/gpkcs11pin.c:112
msgid "The PIN entered is incorrect."
# Korean translation for glib-networking.
# This file is distributed under the same license as the glib-networking package.
#
-# Changwoo Ryu <cwryu@debian.org>, 2011-2012.
+# Changwoo Ryu <cwryu@debian.org>, 2011-2013.
#
#
msgid ""
msgstr ""
"Project-Id-Version: glib-networking master\n"
-"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=glib&keywords=I18N+L10N&component=network\n"
-"POT-Creation-Date: 2012-03-04 18:59+0900\n"
-"PO-Revision-Date: 2012-03-04 19:01+0900\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
+"product=glib&keywords=I18N+L10N&component=network\n"
+"POT-Creation-Date: 2012-11-29 22:09+0000\n"
+"PO-Revision-Date: 2013-03-12 02:31+0900\n"
"Last-Translator: Changwoo Ryu <cwryu@debian.org>\n"
"Language-Team: Korean <gnome-kr@googlegroups.com>\n"
"Language: ko\n"
msgid "No certificate data provided"
msgstr "인증서 데이터를 제공하지 않았습니다"
-#: ../tls/gnutls/gtlsclientconnection-gnutls.c:349
+#: ../tls/gnutls/gtlsclientconnection-gnutls.c:309
msgid "Server required TLS certificate"
msgstr "서버에 TLS 인증서가 필요합니다"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:202
+#: ../tls/gnutls/gtlsconnection-gnutls.c:254
#, c-format
msgid "Could not create TLS connection: %s"
msgstr "TLS 연결을 만들 수 없습니다: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:481
+#: ../tls/gnutls/gtlsconnection-gnutls.c:514
+msgid "Connection is closed"
+msgstr "연결이 닫혔습니다"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:576
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1382
+msgid "Operation would block"
+msgstr "동작이 중단됩니다"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:703
msgid "Peer failed to perform TLS handshake"
msgstr "상대편이 TLS 핸드셰이킹에 실패했습니다"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:501
+#: ../tls/gnutls/gtlsconnection-gnutls.c:720
msgid "Peer requested illegal TLS rehandshake"
msgstr "상대편이 잘못된 TLS 핸드셰이킹을 요청했습니다"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:519
+#: ../tls/gnutls/gtlsconnection-gnutls.c:746
msgid "TLS connection closed unexpectedly"
msgstr "TLS 연결이 예상치 못하게 닫혔습니다"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:814
-#: ../tls/gnutls/gtlsconnection-gnutls.c:840
+#: ../tls/gnutls/gtlsconnection-gnutls.c:756
+msgid "TLS connection peer did not send a certificate"
+msgstr "TLS 연결 상대가 인증서를 보내지 않았습니다"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1064
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1083
#, c-format
msgid "Error performing TLS handshake: %s"
msgstr "TLS 핸드셰이킹에 오류가 발생했습니다: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:888
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1228
msgid "Unacceptable TLS certificate"
msgstr "TLS 핸드셰이킹을 받아들일 수 없습니다"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1027
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1239
+msgid "Server did not return a valid TLS certificate"
+msgstr "서버에서 올바른 TLS 인증서를 반환하지 않았습니다"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1405
#, c-format
msgid "Error reading data from TLS socket: %s"
msgstr "TLS 소켓에서 데이터를 읽는데 오류가 발생했습니다: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1053
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1434
#, c-format
msgid "Error writing data to TLS socket: %s"
msgstr "TLS 소켓에 데이터를 쓰는데 오류가 발생했습니다: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1099
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1478
+msgid "Connection is already closed"
+msgstr "연결이 이미 닫혔습니다"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1488
#, c-format
msgid "Error performing TLS close: %s"
msgstr "TLS를 닫는데 오류가 발생했습니다: %s"
msgid ""
"Several PIN attempts have been incorrect, and the token will be locked after "
"further failures."
-msgstr "여러 번의 PIN 시도가 모두 틀렸으므로, 앞으로 더 실패하면 해당 토큰을 잠급니다."
+msgstr ""
+"여러 번의 PIN 시도가 모두 틀렸으므로, 앞으로 더 실패하면 해당 토큰을 잠급니"
+"다."
#: ../tls/pkcs11/gpkcs11pin.c:112
msgid "The PIN entered is incorrect."
msgstr ""
"Project-Id-Version: glib-networking master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=glib&keywords=I18N+L10N&component=network\n"
-"POT-Creation-Date: 2012-01-06 09:47+0000\n"
-"PO-Revision-Date: 2012-03-17 18:51+0300\n"
+"POT-Creation-Date: 2012-11-29 22:09+0000\n"
+"PO-Revision-Date: 2012-11-30 21:55+0300\n"
"Last-Translator: Aurimas Černius <aurisc4@gmail.com>\n"
"Language-Team: Lietuvių <>\n"
+"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "No certificate data provided"
msgstr "Nėra pateiktų liudijimo duomenų"
-#: ../tls/gnutls/gtlsclientconnection-gnutls.c:349
+#: ../tls/gnutls/gtlsclientconnection-gnutls.c:309
msgid "Server required TLS certificate"
msgstr "Serveris reikalauja TLS liudijimo"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:202
+#: ../tls/gnutls/gtlsconnection-gnutls.c:254
#, c-format
msgid "Could not create TLS connection: %s"
msgstr "Nepavyko užmegsti TLS ryšio: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:481
+#: ../tls/gnutls/gtlsconnection-gnutls.c:514
+msgid "Connection is closed"
+msgstr "Ryšys užvertas"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:576
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1382
+msgid "Operation would block"
+msgstr "Veiksmas blokuosis"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:703
msgid "Peer failed to perform TLS handshake"
msgstr "Kita pusė neatliko TLS rankos paspaudimo"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:501
+#: ../tls/gnutls/gtlsconnection-gnutls.c:720
msgid "Peer requested illegal TLS rehandshake"
msgstr "Kita pusė paprašė neteisingo pakartotinio TLS rankos paspaudimo"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:519
+#: ../tls/gnutls/gtlsconnection-gnutls.c:746
msgid "TLS connection closed unexpectedly"
msgstr "TLS ryšys netikėtai užsivėrė"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:814
-#: ../tls/gnutls/gtlsconnection-gnutls.c:840
+#: ../tls/gnutls/gtlsconnection-gnutls.c:756
+#| msgid "Server did not return a valid TLS certificate"
+msgid "TLS connection peer did not send a certificate"
+msgstr "TLS ryšio porininkas neatsiuntė liudijimo"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1064
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1083
#, c-format
msgid "Error performing TLS handshake: %s"
msgstr "Klaida atliekant TLS rankos paspaudimą: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:888
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1228
msgid "Unacceptable TLS certificate"
msgstr "Nepriimtinas TLS liudijimas"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1025
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1239
+msgid "Server did not return a valid TLS certificate"
+msgstr "Serveris negrąžino teisingo TLS liudijimo"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1405
#, c-format
msgid "Error reading data from TLS socket: %s"
msgstr "Klaida skaitant duomenis iš TLS lizdo: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1051
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1434
#, c-format
msgid "Error writing data to TLS socket: %s"
msgstr "Klaida rašant duomenis į TLS lizdą: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1097
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1478
+msgid "Connection is already closed"
+msgstr "Ryšys jau užvertas"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1488
#, c-format
msgid "Error performing TLS close: %s"
msgstr "Klaida atliekant TLS užvėrimą: %s"
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
-# Rūdolfs Mazurs <rudolfs.mazurs@gmail.com>, 2012.
+# Rūdolfs Mazurs <rudolfs.mazurs@gmail.com>, 2012, 2013.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
"product=glib&keywords=I18N+L10N&component=network\n"
-"POT-Creation-Date: 2011-11-19 01:32+0000\n"
-"PO-Revision-Date: 2012-03-24 19:11+0200\n"
+"POT-Creation-Date: 2012-11-29 22:09+0000\n"
+"PO-Revision-Date: 2013-03-17 20:22+0200\n"
"Last-Translator: Rūdolfs Mazurs <rudolfs.mazurs@gmail.com>\n"
"Language-Team: Latvian <lata-l10n@googlegroups.com>\n"
+"Language: lv\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: lv\n"
-"X-Generator: Lokalize 1.2\n"
+"X-Generator: Lokalize 1.4\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : "
"2);\n"
#: ../tls/gnutls/gtlscertificate-gnutls.c:173
#, c-format
msgid "Could not parse DER certificate: %s"
-msgstr "Nevarēju noparsēt DER sertifikātu: %s"
+msgstr "Nevarēju noparsēt DER sertifikātu — %s"
#: ../tls/gnutls/gtlscertificate-gnutls.c:194
#, c-format
msgid "Could not parse PEM certificate: %s"
-msgstr "Nevarēju noparsēt PEM sertifikātu: %s"
+msgstr "Nevarēju noparsēt PEM sertifikātu — %s"
#: ../tls/gnutls/gtlscertificate-gnutls.c:225
#, c-format
msgid "Could not parse DER private key: %s"
-msgstr "Nevarēju noparsēt DER privāto atslēgu: %s"
+msgstr "Nevarēju noparsēt DER privāto atslēgu — %s"
#: ../tls/gnutls/gtlscertificate-gnutls.c:256
#, c-format
msgid "Could not parse PEM private key: %s"
-msgstr "Nevarēju noparsēt PEM privāto atslēgu: %s"
+msgstr "Nevarēju noparsēt PEM privāto atslēgu — %s"
#: ../tls/gnutls/gtlscertificate-gnutls.c:296
msgid "No certificate data provided"
msgstr "Nav norādīti sertifikāta dati"
-#: ../tls/gnutls/gtlsclientconnection-gnutls.c:385
+#: ../tls/gnutls/gtlsclientconnection-gnutls.c:309
msgid "Server required TLS certificate"
msgstr "Serveris pieprasa TLS sertifikātu"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:279
+#: ../tls/gnutls/gtlsconnection-gnutls.c:254
#, c-format
msgid "Could not create TLS connection: %s"
-msgstr "Neizdevās izveidot TLS savienojumu: %s"
+msgstr "Neizdevās izveidot TLS savienojumu — %s"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:514
+msgid "Connection is closed"
+msgstr "Savienojums ir aizvērts"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:576
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1382
+msgid "Operation would block"
+msgstr "Darbība bloķēs"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:558
+#: ../tls/gnutls/gtlsconnection-gnutls.c:703
msgid "Peer failed to perform TLS handshake"
msgstr "Dalībniekam neizdevās veikt TLS izaicinājumrokspiedienu"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:576
+#: ../tls/gnutls/gtlsconnection-gnutls.c:720
msgid "Peer requested illegal TLS rehandshake"
msgstr "Dalībnieks pieprasīja neatļautu TLS izaicinājumrokspiedienu"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:594
+#: ../tls/gnutls/gtlsconnection-gnutls.c:746
msgid "TLS connection closed unexpectedly"
msgstr "TLS savienojums aizvērās negaidīti"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:888
-#: ../tls/gnutls/gtlsconnection-gnutls.c:914
+#: ../tls/gnutls/gtlsconnection-gnutls.c:756
+#| msgid "Server did not return a valid TLS certificate"
+msgid "TLS connection peer did not send a certificate"
+msgstr "TLS savienojuma dalībnieks neatsūtīja sertifikātu"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1064
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1083
#, c-format
msgid "Error performing TLS handshake: %s"
-msgstr "Kļūda, veicot TLS izaicinājumrokspiedienu: %s"
+msgstr "Kļūda, veicot TLS izaicinājumrokspiedienu — %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:962
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1228
msgid "Unacceptable TLS certificate"
msgstr "Nepieņemams TLS sertifikāts"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1099
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1239
+msgid "Server did not return a valid TLS certificate"
+msgstr "Serveris neatgrieza derīgu TLS sertifikātu"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1405
#, c-format
msgid "Error reading data from TLS socket: %s"
-msgstr "Kļūda lasot datus no TLS ligzdas: %s"
+msgstr "Kļūda, lasot datus no TLS ligzdas — %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1125
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1434
#, c-format
msgid "Error writing data to TLS socket: %s"
-msgstr "Kļūda rakstot datus TLS ligzdā: %s"
+msgstr "Kļūda, rakstot datus TLS ligzdā — %s"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1478
+msgid "Connection is already closed"
+msgstr "Savienojums jau ir aizvērts"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1171
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1488
#, c-format
msgid "Error performing TLS close: %s"
-msgstr "Kļūda, veicot TLS aizvēršanu: %s"
+msgstr "Kļūda, veicot TLS aizvēršanu — %s"
-#: ../tls/gnutls/gtlsserverconnection-gnutls.c:138
+#: ../tls/gnutls/gtlsserverconnection-gnutls.c:103
msgid "Certificate has no private key"
msgstr "Sertifikātam nav privātās atslēgas"
#: ../tls/pkcs11/gpkcs11slot.c:447
msgid "PKCS#11 Module Pointer"
-msgstr "PKCS#11 Moduļa rādītājs"
+msgstr "PKCS#11 moduļa rādītājs"
#: ../tls/pkcs11/gpkcs11slot.c:454
msgid "Slot ID"
-msgstr "Slota ID"
+msgstr "Ligzdas ID"
#: ../tls/pkcs11/gpkcs11slot.c:455
msgid "PKCS#11 Slot Identifier"
-msgstr "PKCS#11 slota identifikators"
+msgstr "PKCS#11 ligzdas identifikators"
# Copyright (C) 2012 glib-networking's COPYRIGHT HOLDER
# This file is distributed under the same license as the glib-networking package.
# Manoj K <manojkmohanme03107@gmail.com>, 2012.
-#
+# Balasankar Chelamattath <c.balasankar@gmail.com>, 2012
+# Anish A <aneesh.nl@gmail.com>, 2013.
msgid ""
msgstr ""
"Project-Id-Version: glib-networking master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
"product=glib&keywords=I18N+L10N&component=network\n"
-"POT-Creation-Date: 2012-03-20 10:32+0000\n"
-"PO-Revision-Date: 2012-03-20 10:32+0000\n"
-"Last-Translator: Manoj K <manojkmohanme03107@gmail.com>\n"
-"Language-Team: Malayalam <discuss@lists.smc.org.in>\n"
+"POT-Creation-Date: 2013-02-13 18:37+0000\n"
+"PO-Revision-Date: 2013-02-15 11:30+0530\n"
+"Last-Translator: Anish A <aneesh.nl@gmail.com>\n"
+"Language-Team: Swatantra Malayalam Computing\n"
+"Language: ml\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: Virtaal 0.7.1\n"
+"X-Project-Style: gnome\n"
#: ../proxy/libproxy/glibproxyresolver.c:150
msgid "Proxy resolver internal error."
msgid "No certificate data provided"
msgstr "സാക്ഷ്യപത്രവിവരങ്ങള് ലഭ്യമല്ല"
-#: ../tls/gnutls/gtlsclientconnection-gnutls.c:349
+#: ../tls/gnutls/gtlsclientconnection-gnutls.c:309
msgid "Server required TLS certificate"
msgstr "സെര്വ്വരിന് TLS സാക്ഷ്യപത്രം ആവശ്യമാണ്. "
-#: ../tls/gnutls/gtlsconnection-gnutls.c:202
+#: ../tls/gnutls/gtlsconnection-gnutls.c:258
#, c-format
msgid "Could not create TLS connection: %s"
msgstr "%s :TLS കണക്ഷന് നിര്മ്മിക്കാന് സാധിച്ചില്ല"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:481
+#: ../tls/gnutls/gtlsconnection-gnutls.c:520
+msgid "Connection is closed"
+msgstr "ബന്ധം വിച്ഛേദിക്കപ്പെട്ടിരിക്കുന്നു"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:582
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1419
+msgid "Operation would block"
+msgstr "പ്രക്രിയ തടസ്സപ്പെടും"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:712
msgid "Peer failed to perform TLS handshake"
msgstr "TLS ഹാന്ഡ്ഷെയ്ക്ക് കാരണം പിയര് പ്രകടനം പരാജയപ്പെട്ടു"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:501
+#: ../tls/gnutls/gtlsconnection-gnutls.c:729
msgid "Peer requested illegal TLS rehandshake"
-msgstr ""
+msgstr "പിയര് നിയമാനുസൃതമല്ലാത്ത TLS ഹസ്തദാനം ആവശ്യപ്പെട്ടിരിക്കുന്നു"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:519
+#: ../tls/gnutls/gtlsconnection-gnutls.c:755
msgid "TLS connection closed unexpectedly"
-msgstr ""
+msgstr "TLS ബന്ധം അപ്രതീക്ഷിതമായി വിച്ഛേദിക്കപ്പെട്ടിരിക്കുന്നു"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:814
-#: ../tls/gnutls/gtlsconnection-gnutls.c:840
+#: ../tls/gnutls/gtlsconnection-gnutls.c:765
+msgid "TLS connection peer did not send a certificate"
+msgstr "TLS ബന്ധത്തിന്റെ പീയര് സാക്ഷ്യപത്രം അയ്ച്ചില്ല"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1146
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1165
#, c-format
msgid "Error performing TLS handshake: %s"
-msgstr ""
+msgstr "%s: TLS ഹസ്തദാനം നടപ്പിലാക്കുന്നതില് പിഴവ്"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1175
+msgid "Server did not return a valid TLS certificate"
+msgstr "സെര്വ്വര് സാധുവായ TLS സാക്ഷ്യപത്രം തന്നില്ല."
-#: ../tls/gnutls/gtlsconnection-gnutls.c:888
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1250
msgid "Unacceptable TLS certificate"
-msgstr ""
+msgstr "സ്വീകരിക്കാന് പറ്റാത TLS സാക്ഷ്യപത്രം"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1027
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1442
#, c-format
msgid "Error reading data from TLS socket: %s"
-msgstr ""
+msgstr "%s: TLS സോക്കറ്റില് നിന്നും ഡാറ്റ വായിക്കുന്നതില് പിഴവ് "
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1053
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1471
#, c-format
msgid "Error writing data to TLS socket: %s"
-msgstr ""
+msgstr "%s: TLS സോക്കറ്റിലേക്ക് ഡാറ്റ എഴുതുന്നതില് പിഴവ്"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1515
+msgid "Connection is already closed"
+msgstr "ബന്ധം ഇതിനകം തന്നെ വിച്ഛേദിക്കപ്പെട്ടിരിക്കുന്നു"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1099
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1525
#, c-format
msgid "Error performing TLS close: %s"
-msgstr ""
+msgstr "%s: TLS അടയ്ക്കുന്നതില് പരാജയപ്പെട്ടിരിക്കുന്നു"
#: ../tls/gnutls/gtlsserverconnection-gnutls.c:103
msgid "Certificate has no private key"
-msgstr ""
+msgstr "സാക്ഷ്യപത്രത്തിന്് സ്വകാര്യ താക്കോല് ഇല്ല "
#: ../tls/pkcs11/gpkcs11pin.c:108
msgid ""
"This is the last chance to enter the PIN correctly before the token is "
"locked."
-msgstr ""
+msgstr "ഇത് ടോക്കണ് പൂട്ടുന്നതിന് മുന്പായി PIN ശരിയായി കയറ്റാനുള്ള അവസാന അവസരമാണ്"
#: ../tls/pkcs11/gpkcs11pin.c:110
msgid ""
"Several PIN attempts have been incorrect, and the token will be locked after "
"further failures."
msgstr ""
+"ഒട്ടേറെ PIN ശ്രമങ്ങള് പരാജയപ്പെട്ടു, അതിനാല് ഇനിയുള്ള പരാജയങ്ങള്ക്ക് ശേഷം ടോക്കണ് പൂട്ടുന്നു"
#: ../tls/pkcs11/gpkcs11pin.c:112
msgid "The PIN entered is incorrect."
# Norwegian bokmål translation of glib-networking.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
-# Kjartan Maraas <kmaraas@gnome.org>, 2011-2012.
+# Kjartan Maraas <kmaraas@gnome.org>, 2011-2013.
#
msgid ""
msgstr ""
-"Project-Id-Version: glib-networking 2.31.x\n"
+"Project-Id-Version: glib-networking 2.35.x\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-01-24 15:17+0100\n"
-"PO-Revision-Date: 2012-01-24 15:18+0100\n"
+"POT-Creation-Date: 2013-01-21 12:27+0100\n"
+"PO-Revision-Date: 2013-01-21 12:27+0100\n"
"Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n"
"Language-Team: Norwegian bokmål <i18n-nb@lister.ping.uio.no>\n"
"Language: \n"
msgid "No certificate data provided"
msgstr "Ingen sertifikatdata oppgitt"
-#: ../tls/gnutls/gtlsclientconnection-gnutls.c:349
+#: ../tls/gnutls/gtlsclientconnection-gnutls.c:309
msgid "Server required TLS certificate"
msgstr "Tjener krever TLS-sertifikat"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:202
+#: ../tls/gnutls/gtlsconnection-gnutls.c:257
#, c-format
msgid "Could not create TLS connection: %s"
msgstr "Kunne ikke lage TLS-tilkobling: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:481
+#: ../tls/gnutls/gtlsconnection-gnutls.c:518
+msgid "Connection is closed"
+msgstr "Tilkoblingen er lukket"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:580
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1417
+msgid "Operation would block"
+msgstr "Operasjonen ville blokkere"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:710
msgid "Peer failed to perform TLS handshake"
msgstr "Likemann feilet å utføre TLS-håndtrykk"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:501
+#: ../tls/gnutls/gtlsconnection-gnutls.c:727
msgid "Peer requested illegal TLS rehandshake"
msgstr "Likemann ba om ugyldig nytt TLS-håndtrykk"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:519
+#: ../tls/gnutls/gtlsconnection-gnutls.c:753
msgid "TLS connection closed unexpectedly"
msgstr "TLS-tilkobling ble lukket uventet"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:814
-#: ../tls/gnutls/gtlsconnection-gnutls.c:840
+#: ../tls/gnutls/gtlsconnection-gnutls.c:763
+msgid "TLS connection peer did not send a certificate"
+msgstr "Sidemann for TLS-tilkobling sendte ikke et sertifikat"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1144
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1163
#, c-format
msgid "Error performing TLS handshake: %s"
msgstr "Feil under utføring av TLS-håndtrykk: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:888
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1173
+msgid "Server did not return a valid TLS certificate"
+msgstr "Tjener returnerte ikke et gyldig TLS-sertifikat"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1248
msgid "Unacceptable TLS certificate"
msgstr "Uakseptabelt TLS-sertifikat"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1025
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1440
#, c-format
msgid "Error reading data from TLS socket: %s"
msgstr "Feil under lesing av data fra TLS-plugg: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1051
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1469
#, c-format
msgid "Error writing data to TLS socket: %s"
msgstr "Feil under skriving av data til TLS-plugg: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1097
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1513
+msgid "Connection is already closed"
+msgstr "Tilkoblingen er allerede lukket"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1523
#, c-format
msgid "Error performing TLS close: %s"
msgstr "Feil under utføring av lukking av TLS-tilkobling: %s"
# Dutch translation for glib-networking
-#
# This file is distributed under the same license as the glib-networking package.
#
-# Wouter Bolsterlee <wbolster@gnome.org>, 2011
+# Wouter Bolsterlee <wbolster@gnome.org>, 2011–2013
+# Rachid <rachidbm@ubuntu.com>, 2012.
#
# Peer - andere kant van de verbinding (heel vrij vertaald)
-#
msgid ""
msgstr ""
"Project-Id-Version: gconf\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-02-11 22:17+0100\n"
-"PO-Revision-Date: 2011-02-11 22:17+0100\n"
+"POT-Creation-Date: 2012-06-18 21:07+0200\n"
+"PO-Revision-Date: 2012-06-18 21:07+0200\n"
"Last-Translator: Wouter Bolsterlee <wbolster@gnome.org>\n"
"Language-Team: Dutch <vertaling@vrijschrift.org>\n"
"Language: nl\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"
-#: ../proxy/libproxy/glibproxyresolver.c:142
+#: ../proxy/libproxy/glibproxyresolver.c:150
msgid "Proxy resolver internal error."
-msgstr "Interne fout in proxy-resolver"
+msgstr "Interne fout in proxy-resolver."
#: ../tls/gnutls/gtlscertificate-gnutls.c:173
#, c-format
msgid "Could not parse PEM certificate: %s"
msgstr "Kon PEM-certificaat niet parsen: %s"
-#: ../tls/gnutls/gtlscertificate-gnutls.c:214
+#: ../tls/gnutls/gtlscertificate-gnutls.c:225
#, c-format
msgid "Could not parse DER private key: %s"
msgstr "Kon DER-privésleutel niet parsen: %s"
-#: ../tls/gnutls/gtlscertificate-gnutls.c:234
+#: ../tls/gnutls/gtlscertificate-gnutls.c:256
#, c-format
msgid "Could not parse PEM private key: %s"
msgstr "Kon PEM-privésleutel niet parsen: %s"
-#: ../tls/gnutls/gtlscertificate-gnutls.c:275
+#: ../tls/gnutls/gtlscertificate-gnutls.c:296
msgid "No certificate data provided"
msgstr "Geen certificaatgegevens opgegeven"
-#: ../tls/gnutls/gtlsclientconnection-gnutls.c:356
+#: ../tls/gnutls/gtlsclientconnection-gnutls.c:349
msgid "Server required TLS certificate"
msgstr "Server vereiste een TLS-certificaat"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:241
+#: ../tls/gnutls/gtlsconnection-gnutls.c:202
#, c-format
msgid "Could not create TLS connection: %s"
msgstr "Kon geen TLS-verbinding maken: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:479
+#: ../tls/gnutls/gtlsconnection-gnutls.c:482
msgid "Peer failed to perform TLS handshake"
-msgstr "Andere kant van de verbinding gaf geen TLS-handshake."
+msgstr "Andere kant van de verbinding gaf geen TLS-handshake"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:497
+#: ../tls/gnutls/gtlsconnection-gnutls.c:502
msgid "Peer requested illegal TLS rehandshake"
-msgstr "Andere kant van de verbinding gaf een ongeldige TLS-handshake."
+msgstr "Andere kant van de verbinding verzocht een ongeldige TLS-rehandshake"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:511
+#: ../tls/gnutls/gtlsconnection-gnutls.c:520
msgid "TLS connection closed unexpectedly"
msgstr "TLS-verbinding onverwachts afgebroken"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:799
-#: ../tls/gnutls/gtlsconnection-gnutls.c:825
+#: ../tls/gnutls/gtlsconnection-gnutls.c:795
+#: ../tls/gnutls/gtlsconnection-gnutls.c:821
#, c-format
msgid "Error performing TLS handshake: %s"
msgstr "Fout bij uitvoeren van TLS-handshake: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:876
+#: ../tls/gnutls/gtlsconnection-gnutls.c:869
msgid "Unacceptable TLS certificate"
msgstr "Onacceptabel TLS-certificaat"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1023
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1008
#, c-format
msgid "Error reading data from TLS socket: %s"
msgstr "Fout bij het lezen van de TLS-socket: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1049
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1034
#, c-format
msgid "Error writing data to TLS socket: %s"
msgstr "Fout bij het schrijven naar de TLS-socket: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1095
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1080
#, c-format
msgid "Error performing TLS close: %s"
msgstr "Fout bij sluiten van TLS: %s"
+
+#: ../tls/gnutls/gtlsserverconnection-gnutls.c:103
+msgid "Certificate has no private key"
+msgstr "Certificaat heeft geen privésleutel"
+
+#: ../tls/pkcs11/gpkcs11pin.c:108
+msgid ""
+"This is the last chance to enter the PIN correctly before the token is "
+"locked."
+msgstr ""
+"Dit is de laatste kans om het PIN correct in te voeren voordat de token "
+"ongeldig wordt."
+
+#: ../tls/pkcs11/gpkcs11pin.c:110
+msgid ""
+"Several PIN attempts have been incorrect, and the token will be locked after "
+"further failures."
+msgstr ""
+"U heeft meerdere malen een onjuiste PIN ingevoerd. Na verdere mislukte "
+"pogingen wordt de token ongeldig."
+
+#: ../tls/pkcs11/gpkcs11pin.c:112
+msgid "The PIN entered is incorrect."
+msgstr "Het ingevoerde PIN is onjuist."
+
+#: ../tls/pkcs11/gpkcs11slot.c:446
+msgid "Module"
+msgstr "Module"
+
+#: ../tls/pkcs11/gpkcs11slot.c:447
+msgid "PKCS#11 Module Pointer"
+msgstr "PKCS#11 Module Pointer"
+
+#: ../tls/pkcs11/gpkcs11slot.c:454
+msgid "Slot ID"
+msgstr "Slot ID"
+
+#: ../tls/pkcs11/gpkcs11slot.c:455
+msgid "PKCS#11 Slot Identifier"
+msgstr "PKCS#11 Slot Identifier"
# Copyright (C) 2011 glib-networking's COPYRIGHT HOLDER
# This file is distributed under the same license as the glib-networking package.
#
-# A S Alam <aalam@users.sf.net>, 2011.
+# A S Alam <aalam@users.sf.net>, 2011, 2012, 2013.
msgid ""
msgstr ""
"Project-Id-Version: glib-networking master\n"
-"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug."
-"cgi?product=glib&component=network\n"
-"POT-Creation-Date: 2011-01-18 11:42+0000\n"
-"PO-Revision-Date: 2011-01-19 08:44+0530\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
+"product=glib&keywords=I18N+L10N&component=network\n"
+"POT-Creation-Date: 2012-11-29 22:09+0000\n"
+"PO-Revision-Date: 2013-02-26 07:18+0530\n"
"Last-Translator: A S Alam <aalam@users.sf.net>\n"
"Language-Team: Punjabi/Panjabi <punjabi-users@lists.sf.net>\n"
+"Language: paX-Generator: Lokalize 1.2\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: pa"
-"X-Generator: Lokalize 1.2\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Lokalize 1.5\n"
-#: ../proxy/libproxy/glibproxyresolver.c:142
+#: ../proxy/libproxy/glibproxyresolver.c:150
msgid "Proxy resolver internal error."
msgstr "ਪਰਾਕਸੀ ਹੱਲਕਰਤਾ ਅੰਦਰੂਨੀ ਗਲਤੀ ਹੈ।"
msgid "Could not parse PEM certificate: %s"
msgstr "PEM ਸਰਟੀਫਿਕੇਟ ਪਾਰਸ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ: %s"
-#: ../tls/gnutls/gtlscertificate-gnutls.c:214
+#: ../tls/gnutls/gtlscertificate-gnutls.c:225
#, c-format
msgid "Could not parse DER private key: %s"
msgstr "DER ਪ੍ਰਾਈਵੇਟ ਕੁੰਜੀ ਪਾਰਸ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ: %s"
-#: ../tls/gnutls/gtlscertificate-gnutls.c:234
+#: ../tls/gnutls/gtlscertificate-gnutls.c:256
#, c-format
msgid "Could not parse PEM private key: %s"
msgstr "PEM ਪ੍ਰਾਈਵੇਟ ਕੁੰਜੀ ਪਾਰਸ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ: %s"
-#: ../tls/gnutls/gtlscertificate-gnutls.c:275
+#: ../tls/gnutls/gtlscertificate-gnutls.c:296
msgid "No certificate data provided"
msgstr "ਕੋਈ ਸਰਟੀਫਿਕੇਟ ਡਾਟਾ ਨਹੀਂ ਦਿੱਤਾ ਗਿਆ"
-#: ../tls/gnutls/gtlsclientconnection-gnutls.c:356
+#: ../tls/gnutls/gtlsclientconnection-gnutls.c:309
msgid "Server required TLS certificate"
msgstr "ਸਰਵਰ ਨੂੰ TLS ਸਰਟੀਫਿਕੇਤ ਚਾਹੀਦਾ ਹੈ"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:241
+#: ../tls/gnutls/gtlsconnection-gnutls.c:254
#, c-format
msgid "Could not create TLS connection: %s"
msgstr "TLS ਕੁਨੈਕਸ਼ਨ ਬਣਾਇਆ ਨਹੀਂ ਜਾ ਸਕਿਆ: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:479
+#: ../tls/gnutls/gtlsconnection-gnutls.c:514
+msgid "Connection is closed"
+msgstr "ਕੁਨੈਕਸ਼ਨ ਬੰਦ ਕੀਤਾ ਗਿਆ"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:576
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1382
+msgid "Operation would block"
+msgstr "ਕਾਰਵਾਈ ਰੋਕੀ ਜਾ ਸਕਦੀ ਹੈ"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:703
msgid "Peer failed to perform TLS handshake"
msgstr "ਪੀਅਰ TLS ਹੈਂਡਸੇਕ ਕਰਨ ਲਈ ਫੇਲ੍ਹ ਹੈ"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:497
+#: ../tls/gnutls/gtlsconnection-gnutls.c:720
msgid "Peer requested illegal TLS rehandshake"
msgstr "ਪੀਅਰ ਨੇ ਗਲਤ TLS ਮੁੜ-ਹੈਂਡਸੇਕ ਲਈ ਮੰਗ ਕੀਤੀ"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:511
+#: ../tls/gnutls/gtlsconnection-gnutls.c:746
msgid "TLS connection closed unexpectedly"
msgstr "TLS ਕੁਨੈਕਸ਼ਨ ਅਚਾਨਕ ਬੰਦ ਹੋ ਗਿਆ"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:799
-#: ../tls/gnutls/gtlsconnection-gnutls.c:825
+#: ../tls/gnutls/gtlsconnection-gnutls.c:756
+#| msgid "Server did not return a valid TLS certificate"
+msgid "TLS connection peer did not send a certificate"
+msgstr "TLS ਕੁਨੈਕਸ਼ਨ ਪੀਅਰ ਨੇ ਸਰਟੀਫਿਕੇਟ ਵਾਪਸ ਨਹੀਂ ਭੇਜਿਆ"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1064
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1083
#, c-format
msgid "Error performing TLS handshake: %s"
msgstr "TLS ਹੈਂਡਸੇਕ ਕਰਨ ਦੌਰਾਨ ਗਲਤੀ: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:876
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1228
msgid "Unacceptable TLS certificate"
msgstr "ਨਾ-ਮਨਜ਼ੂਰ TLS ਸਰਟੀਫਿਕੇਟ"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1023
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1239
+msgid "Server did not return a valid TLS certificate"
+msgstr "ਸਰਵਰ ਨੇ ਠੀਕ TLS ਸਰਟੀਫਿਕੇਟ ਵਾਪਸ ਨਹੀਂ ਕੀਤਾ ਹੈ"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1405
#, c-format
msgid "Error reading data from TLS socket: %s"
msgstr "TLS ਸਾਕਟ ਤੋਂ ਡਾਟਾ ਪੜ੍ਹਨ ਲਈ ਫੇਲ੍ਹ: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1049
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1434
#, c-format
msgid "Error writing data to TLS socket: %s"
msgstr "TLS ਸਾਕਟ ਲਈ ਡਾਟਾ ਪੜ੍ਹਨ ਦੌਰਾਨ ਗਲਤੀ: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1095
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1478
+msgid "Connection is already closed"
+msgstr "ਕੁਨੈਕਸ਼ਨ ਪਹਿਲਾਂ ਹੀ ਬੰਦ ਹੈ"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1488
#, c-format
msgid "Error performing TLS close: %s"
msgstr "TLS ਬੰਦ ਕਰਨ ਗਲਤੀ: %s"
+#: ../tls/gnutls/gtlsserverconnection-gnutls.c:103
+msgid "Certificate has no private key"
+msgstr "ਸਰਟੀਫਿਕੇਟ ਲਈ ਕੋਈ ਪ੍ਰਾਈਵੇਟ ਕੁੰਜੀ ਨਹੀਂ ਹੈ"
+
+#: ../tls/pkcs11/gpkcs11pin.c:108
+msgid ""
+"This is the last chance to enter the PIN correctly before the token is "
+"locked."
+msgstr "ਟੋਕਨ ਦੇ ਲਾਕ ਹੋਣ ਤੋਂ ਪਹਿਲਾਂ ਠੀਕ ਪਿੰਨ ਭਰਨ ਦਾ ਇਹ ਆਖਰੀ ਮੌਕਾ ਹੈ।"
+
+#: ../tls/pkcs11/gpkcs11pin.c:110
+msgid ""
+"Several PIN attempts have been incorrect, and the token will be locked after "
+"further failures."
+msgstr ""
+"ਪਿੰਨ ਭਰਨ ਦੀਆਂ ਕਈ ਕੋਸ਼ਿਸ਼ ਗਲਤ ਹੋਈਆਂ ਹਨ ਅਤੇ ਫੇਰ ਟੋਕਨ ਹੋਰ ਫੇਲ੍ਹ ਦੇ ਬਾਅਦ ਲਾਕ ਹੋ "
+"ਜਾਵੇਗਾ।"
+
+#: ../tls/pkcs11/gpkcs11pin.c:112
+msgid "The PIN entered is incorrect."
+msgstr "ਦਿੱਤਾ ਗਿਆ ਪਿੰਨ ਗਲਤ ਹੈ।"
+
+#: ../tls/pkcs11/gpkcs11slot.c:446
+msgid "Module"
+msgstr "ਮੋਡੀਊਲ"
+
+#: ../tls/pkcs11/gpkcs11slot.c:447
+msgid "PKCS#11 Module Pointer"
+msgstr "PKCS#11 ਮੋਡੀਊਲ ਪੁਆਇੰਟਰ"
+
+#: ../tls/pkcs11/gpkcs11slot.c:454
+msgid "Slot ID"
+msgstr "ਸਲਾਟ ID"
+
+#: ../tls/pkcs11/gpkcs11slot.c:455
+msgid "PKCS#11 Slot Identifier"
+msgstr "PKCS#11 ਸਲਾਟ ਪਛਾਣਕਰਤਾ"
+
# pomóc w jego rozwijaniu i pielęgnowaniu, napisz do nas:
# gnomepl@aviary.pl
# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+# Piotr Drąg <piotrdrag@gmail.com>, 2011-2012.
+# Aviary.pl <gnomepl@aviary.pl>, 2011-2012.
msgid ""
msgstr ""
"Project-Id-Version: glib-networking\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-03-03 23:48+0100\n"
-"PO-Revision-Date: 2012-03-03 23:49+0100\n"
+"POT-Creation-Date: 2012-12-02 05:57+0100\n"
+"PO-Revision-Date: 2012-12-02 05:58+0100\n"
"Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
"Language-Team: Polish <gnomepl@aviary.pl>\n"
"Language: pl\n"
msgid "No certificate data provided"
msgstr "Nie podano danych certyfikatu"
-#: ../tls/gnutls/gtlsclientconnection-gnutls.c:349
+#: ../tls/gnutls/gtlsclientconnection-gnutls.c:309
msgid "Server required TLS certificate"
msgstr "Serwer wymaga certyfikatu TLS"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:202
+#: ../tls/gnutls/gtlsconnection-gnutls.c:254
#, c-format
msgid "Could not create TLS connection: %s"
msgstr "Nie można utworzyć połączenia TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:481
+#: ../tls/gnutls/gtlsconnection-gnutls.c:514
+msgid "Connection is closed"
+msgstr "Połączenie jest zamknięte"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:577
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1383
+msgid "Operation would block"
+msgstr "Działanie zablokowałoby"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:704
msgid "Peer failed to perform TLS handshake"
msgstr "Wykonanie powitania TLS przez partnera się nie powiodło"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:501
+#: ../tls/gnutls/gtlsconnection-gnutls.c:721
msgid "Peer requested illegal TLS rehandshake"
msgstr "Partner zażądał niedozwolonego ponownego powitania TLS"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:519
+#: ../tls/gnutls/gtlsconnection-gnutls.c:747
msgid "TLS connection closed unexpectedly"
msgstr "Połączenie TLS zostało nieoczekiwanie zamknięte"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:814
-#: ../tls/gnutls/gtlsconnection-gnutls.c:840
+#: ../tls/gnutls/gtlsconnection-gnutls.c:757
+msgid "TLS connection peer did not send a certificate"
+msgstr "Partner połączenia TLS nie wysłał certyfikatu"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1065
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1084
#, c-format
msgid "Error performing TLS handshake: %s"
msgstr "Błąd podczas wykonywania powitania TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:888
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1229
msgid "Unacceptable TLS certificate"
msgstr "Nieakceptowalny certyfikat TLS"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1027
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1240
+msgid "Server did not return a valid TLS certificate"
+msgstr "Serwer nie zwrócił prawidłowego certyfikatu TLS"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1406
#, c-format
msgid "Error reading data from TLS socket: %s"
msgstr "Błąd podczas odczytywania danych z gniazda TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1053
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1435
#, c-format
msgid "Error writing data to TLS socket: %s"
msgstr "Błąd podczas zapisywania danych do gniazda TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1099
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1479
+msgid "Connection is already closed"
+msgstr "Połączenie jest już zamknięte"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1489
#, c-format
msgid "Error performing TLS close: %s"
msgstr "Błąd podczas wykonywania zamknięcia TLS: %s"
-# Portuguese translation for glib-networking.
-# Copyright © 2011, 2012 glib-networking
-# This file is distributed under the same license as the glib-networking package.
-# Duarte Loreto <happyguy_pt@hotmail.com>, 2011, 2012.
-#
+# Portuguese translation for glib-networking.\r
+# Copyright © 2011, 2012, 2013 glib-networking\r
+# This file is distributed under the same license as the glib-networking package.\r
+# Duarte Loreto <happyguy_pt@hotmail.com>, 2011, 2012, 2013.\r
+# \r
msgid ""
msgstr ""
-"Project-Id-Version: 3.4\n"
+"Project-Id-Version: 3.8\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-03-12 00:34+0000\n"
-"PO-Revision-Date: 2012-03-12 00:40+0000\n"
+"POT-Creation-Date: 2013-03-15 12:42+0000\n"
+"PO-Revision-Date: 2013-03-15 12:45+0000\n"
"Last-Translator: Duarte Loreto <happyguy_pt@hotmail.com>\n"
"Language-Team: Portuguese <gnome_pt@yahoogroups.com>\n"
"Language: pt\n"
msgid "No certificate data provided"
msgstr "Não foram indicados quaisquer dados de certificado"
-#: ../tls/gnutls/gtlsclientconnection-gnutls.c:349
+#: ../tls/gnutls/gtlsclientconnection-gnutls.c:309
msgid "Server required TLS certificate"
msgstr "O servidor requer um certificado TLS"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:202
+#: ../tls/gnutls/gtlsconnection-gnutls.c:258
#, c-format
msgid "Could not create TLS connection: %s"
msgstr "Incapaz de criar uma ligação TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:481
+#: ../tls/gnutls/gtlsconnection-gnutls.c:520
+msgid "Connection is closed"
+msgstr "A ligação está fechada"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:582
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1425
+msgid "Operation would block"
+msgstr "Operação iria bloquear"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:712
+#: ../tls/gnutls/gtlsconnection-gnutls.c:755
msgid "Peer failed to perform TLS handshake"
msgstr "O destino falhao ao estabelecer a ligação (handshake) TLS"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:501
+#: ../tls/gnutls/gtlsconnection-gnutls.c:729
msgid "Peer requested illegal TLS rehandshake"
msgstr "Destino requereu novo handshake TLS ilegal"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:519
+#: ../tls/gnutls/gtlsconnection-gnutls.c:761
msgid "TLS connection closed unexpectedly"
msgstr "Ligação TLS terminada inesperadamente"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:814
-#: ../tls/gnutls/gtlsconnection-gnutls.c:840
+#: ../tls/gnutls/gtlsconnection-gnutls.c:771
+msgid "TLS connection peer did not send a certificate"
+msgstr "O parceiro de ligação TLS não enviou um certificado"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1152
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1171
#, c-format
msgid "Error performing TLS handshake: %s"
msgstr "Erro ao estabelecer a ligação TLS (handshake): %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:888
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1181
+msgid "Server did not return a valid TLS certificate"
+msgstr "O servidor não devolveu um certificado TLS válido"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1256
msgid "Unacceptable TLS certificate"
msgstr "Certificado TLS inaceitável"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1027
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1448
#, c-format
msgid "Error reading data from TLS socket: %s"
msgstr "Erro ao ler dados do socket TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1053
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1477
#, c-format
msgid "Error writing data to TLS socket: %s"
msgstr "Erro ao escrever dados no socket TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1099
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1521
+msgid "Connection is already closed"
+msgstr "A ligação já está fechada"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1531
#, c-format
msgid "Error performing TLS close: %s"
msgstr "Erro ao terminar a ligação TLS: %s"
"This is the last chance to enter the PIN correctly before the token is "
"locked."
msgstr ""
-"Esta é a última oportunidade para introduzir correctamente o PIN antes "
-"de que o token seja trancado."
+"Esta é a última oportunidade para introduzir corretamente o PIN antes de que "
+"o token seja trancado."
#: ../tls/pkcs11/gpkcs11pin.c:110
msgid ""
"Several PIN attempts have been incorrect, and the token will be locked after "
"further failures."
msgstr ""
-"Foram introduzidos vários PINs incorrectos e o token será trancado caso "
+"Foram introduzidos vários PINs incorretos e o token será trancado caso "
"ocorram mais falhas."
#: ../tls/pkcs11/gpkcs11pin.c:112
msgid "The PIN entered is incorrect."
-msgstr "O PIN introduzido está incorrecto."
+msgstr "O PIN introduzido está incorreto."
#: ../tls/pkcs11/gpkcs11slot.c:446
msgid "Module"
-# Brazilian Portuguese translation for glib-networking.
-# Copyright (C) 2011 glib-networking's COPYRIGHT HOLDER
+# Brazilian Portuguese translation of glib-networking.
+# Copyright (C) 2012 glib-networking's COPYRIGHT HOLDER
# This file is distributed under the same license as the glib-networking package.
-# André Gondim <andregondim@ubuntu.com>, 2011.
+#
+# André Gondim <In memoriam>, 2011.
# Djavan Fagundes <djavan@comum.org>, 2011.
# Jonh Wendell <jwendell@gnome.org>, 2012.
+# Rafael Ferreira <rafael.f.f1@gmail.com>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: glib-networking master\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-02-26 14:55-0300\n"
-"PO-Revision-Date: 2012-02-26 14:54-0300\n"
-"Last-Translator: Jonh Wendell <jwendell@gnome.org>\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
+"product=glib&keywords=I18N+L10N&component=network\n"
+"POT-Creation-Date: 2012-12-09 15:35+0000\n"
+"PO-Revision-Date: 2012-12-02 13:21-0300\n"
+"Last-Translator: Antonio Fernandes C. Neto <fernandesn@gnome.org>\n"
"Language-Team: Brazilian Portuguese <gnome-pt_br-list@gnome.org>\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
msgid "No certificate data provided"
msgstr "Nenhum dado de certificado fornecido"
-#: ../tls/gnutls/gtlsclientconnection-gnutls.c:349
+#: ../tls/gnutls/gtlsclientconnection-gnutls.c:309
msgid "Server required TLS certificate"
-msgstr "Servidor requer certificado TLS"
+msgstr "O servidor requer certificado TLS"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:202
+#: ../tls/gnutls/gtlsconnection-gnutls.c:257
#, c-format
msgid "Could not create TLS connection: %s"
msgstr "Não foi possível criar conexão TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:481
+#: ../tls/gnutls/gtlsconnection-gnutls.c:518
+msgid "Connection is closed"
+msgstr "A conexão está encerrada"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:580
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1417
+msgid "Operation would block"
+msgstr "A operação bloquearia"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:710
msgid "Peer failed to perform TLS handshake"
msgstr "Peer falhou ao realizar negociação TLS"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:501
+#: ../tls/gnutls/gtlsconnection-gnutls.c:727
msgid "Peer requested illegal TLS rehandshake"
msgstr "O peer requisitou uma negociação TLS ilegal"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:519
+#: ../tls/gnutls/gtlsconnection-gnutls.c:753
msgid "TLS connection closed unexpectedly"
msgstr "Conexão TLS fechou inesperadamente"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:814
-#: ../tls/gnutls/gtlsconnection-gnutls.c:840
+#: ../tls/gnutls/gtlsconnection-gnutls.c:763
+msgid "TLS connection peer did not send a certificate"
+msgstr "Conexão TLS não enviou um certificado"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1144
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1163
#, c-format
msgid "Error performing TLS handshake: %s"
msgstr "Erro executando negociação TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:888
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1173
+msgid "Server did not return a valid TLS certificate"
+msgstr "Servidor não retornou certificado TLS"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1248
msgid "Unacceptable TLS certificate"
msgstr "Certificado TLS inaceitável"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1027
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1440
#, c-format
msgid "Error reading data from TLS socket: %s"
msgstr "Erro ao ler dados do socket TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1053
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1469
#, c-format
msgid "Error writing data to TLS socket: %s"
msgstr "Erro ao gravar dados do socket TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1099
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1513
+msgid "Connection is already closed"
+msgstr "A conexão já está encerrada"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1523
#, c-format
msgid "Error performing TLS close: %s"
msgstr "Erro ao executar fechamento TLS: %s"
# Copyright (C) 2011 glib-networking's COPYRIGHT HOLDER
# This file is distributed under the same license as the glib-networking package.
# Pavel Dmitriev <Kitchenknif@gmail.com>, 2011.
+# Yuri Myasoedov <omerta13@yandex.ru>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: glib-networking master\n"
-"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=glib&keywords=I18N+L10N&component=network\n"
-"POT-Creation-Date: 2011-11-19 01:32+0000\n"
-"PO-Revision-Date: 2012-02-27 11:26+0300\n"
-"Last-Translator: Yuri Myasoedov <omerta13@yandex.ru>\n"
-"Language-Team: Russian <gnome-cyr@gnome.org>\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
+"product=glib&keywords=I18N+L10N&component=network\n"
+"POT-Creation-Date: 2013-03-17 13:55+0000\n"
+"PO-Revision-Date: 2013-03-17 23:11+0400\n"
+"Last-Translator: Dmitriy S. Seregin <dseregin@59.ru>\n"
+"Language-Team: русский <gnome-cyr@gnome.org>\n"
+"Language: ru\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
+"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: \n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"X-Generator: Poedit 1.5.5\n"
#: ../proxy/libproxy/glibproxyresolver.c:150
msgid "Proxy resolver internal error."
msgid "No certificate data provided"
msgstr "Данные сертификата не предоставлены"
-#: ../tls/gnutls/gtlsclientconnection-gnutls.c:385
+#: ../tls/gnutls/gtlsclientconnection-gnutls.c:309
msgid "Server required TLS certificate"
msgstr "Сервер требует сертификат TLS"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:279
+#: ../tls/gnutls/gtlsconnection-gnutls.c:258
#, c-format
msgid "Could not create TLS connection: %s"
msgstr "Не удалось создать соединение TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:558
+#: ../tls/gnutls/gtlsconnection-gnutls.c:520
+msgid "Connection is closed"
+msgstr "Соединение закрыто"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:582
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1425
+msgid "Operation would block"
+msgstr "Действие будет заблокировано"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:712
+#: ../tls/gnutls/gtlsconnection-gnutls.c:755
msgid "Peer failed to perform TLS handshake"
msgstr "Узлу не удалось квитировать выполнение связи TLS"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:576
+#: ../tls/gnutls/gtlsconnection-gnutls.c:729
msgid "Peer requested illegal TLS rehandshake"
msgstr "Узел запросил недопустимое повторное квитирование связи TLS"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:594
+#: ../tls/gnutls/gtlsconnection-gnutls.c:761
msgid "TLS connection closed unexpectedly"
msgstr "Соединение TLS неожиданно закрылось"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:888
-#: ../tls/gnutls/gtlsconnection-gnutls.c:914
+#: ../tls/gnutls/gtlsconnection-gnutls.c:771
+msgid "TLS connection peer did not send a certificate"
+msgstr "Узел, с которым производится TLS-соединение, не предоставил сертификат"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1152
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1171
#, c-format
msgid "Error performing TLS handshake: %s"
msgstr "Ошибка выполнения квитирования связи TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:962
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1181
+msgid "Server did not return a valid TLS certificate"
+msgstr "Сертификат TLS, возвращённый сервером, не является подлинным"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1256
msgid "Unacceptable TLS certificate"
msgstr "Недопустимый сертификат TLS"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1099
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1448
#, c-format
msgid "Error reading data from TLS socket: %s"
msgstr "Ошибка чтения данных из сокета TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1125
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1477
#, c-format
msgid "Error writing data to TLS socket: %s"
msgstr "Ошибка записи данных в сокет TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1171
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1521
+msgid "Connection is already closed"
+msgstr "Соединение было закрыто ранее"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1531
#, c-format
msgid "Error performing TLS close: %s"
msgstr "Ошибка закрытия TLS: %s"
-#: ../tls/gnutls/gtlsserverconnection-gnutls.c:138
+#: ../tls/gnutls/gtlsserverconnection-gnutls.c:103
msgid "Certificate has no private key"
msgstr "У сертификата нет секретного ключа"
#: ../tls/pkcs11/gpkcs11pin.c:108
-msgid "This is the last chance to enter the PIN correctly before the token is locked."
-msgstr "Это — последняя возможность ввести корректный PIN перед тем, как токен будет заблокирован."
+msgid ""
+"This is the last chance to enter the PIN correctly before the token is "
+"locked."
+msgstr ""
+"Это — последняя возможность ввести корректный PIN перед тем, как токен будет "
+"заблокирован."
#: ../tls/pkcs11/gpkcs11pin.c:110
-msgid "Several PIN attempts have been incorrect, and the token will be locked after further failures."
-msgstr "PIN был несколько раз введён неправильно, токен будет заблокирован после последующих неудачных попыток."
+msgid ""
+"Several PIN attempts have been incorrect, and the token will be locked after "
+"further failures."
+msgstr ""
+"PIN был несколько раз введён неправильно, токен будет заблокирован после "
+"последующих неудачных попыток."
#: ../tls/pkcs11/gpkcs11pin.c:112
msgid "The PIN entered is incorrect."
-msgstr "PIN введён правильно."
+msgstr "Введён неверный PIN."
#: ../tls/pkcs11/gpkcs11slot.c:446
msgid "Module"
#: ../tls/pkcs11/gpkcs11slot.c:455
msgid "PKCS#11 Slot Identifier"
msgstr "Идентификатор слота PKCS#11"
-
--- /dev/null
+# Slovak translation for glib-networking.
+# Copyright (C) 2012 glib-networking's COPYRIGHT HOLDER
+# This file is distributed under the same license as the glib-networking package.
+# Richard Stanislavský <kenny.vv@gmail.com>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: glib-networking master\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
+"product=glib&keywords=I18N+L10N&component=network\n"
+"POT-Creation-Date: 2013-03-23 16:43+0000\n"
+"PO-Revision-Date: 2013-03-24 13:14+0100\n"
+"Last-Translator: Richard Stanislavský <kenny.vv@gmail.com>\n"
+"Language-Team: Slovak <gnome-sk-list@gnome.org>\n"
+"Language: sk\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 1 : (n>=2 && n<=4) ? 2 : 0;\n"
+"X-Generator: Poedit 1.5.4\n"
+
+#: ../proxy/libproxy/glibproxyresolver.c:150
+msgid "Proxy resolver internal error."
+msgstr "Vnútorná chyba sprostredkovateľa."
+
+#: ../tls/gnutls/gtlscertificate-gnutls.c:173
+#, c-format
+msgid "Could not parse DER certificate: %s"
+msgstr "Nepodarilo sa analyzovať certifikát v kodovaní DER: %s"
+
+#: ../tls/gnutls/gtlscertificate-gnutls.c:194
+#, c-format
+msgid "Could not parse PEM certificate: %s"
+msgstr "Nepodarilo sa analyzovať certifikát v kodovaní PEM: %s"
+
+#: ../tls/gnutls/gtlscertificate-gnutls.c:225
+#, c-format
+msgid "Could not parse DER private key: %s"
+msgstr "Nepodarilo sa analyzovať súkromný kľúč v kodovaní DER: %s"
+
+#: ../tls/gnutls/gtlscertificate-gnutls.c:256
+#, c-format
+msgid "Could not parse PEM private key: %s"
+msgstr "Nepodarilo sa analyzovať súkromný kľúč v kodovaní PEM: %s"
+
+#: ../tls/gnutls/gtlscertificate-gnutls.c:296
+msgid "No certificate data provided"
+msgstr "Nie sú dostupné údaje certifikátu"
+
+#: ../tls/gnutls/gtlsclientconnection-gnutls.c:309
+msgid "Server required TLS certificate"
+msgstr "Server požaduje certifikát pre TLS"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:258
+#, c-format
+msgid "Could not create TLS connection: %s"
+msgstr "Nepodarilo sa vytvoriť pripojenie s použitím TLS: %s"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:520
+msgid "Connection is closed"
+msgstr "Pripojenie je ukončené"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:582
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1425
+msgid "Operation would block"
+msgstr "Operácia by blokovala"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:712
+#: ../tls/gnutls/gtlsconnection-gnutls.c:755
+msgid "Peer failed to perform TLS handshake"
+msgstr "Partner zlyhal pri vzájomnom spoznaní pomocou TLS"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:729
+msgid "Peer requested illegal TLS rehandshake"
+msgstr "Partner žiadal nelegálne opätovné vzájomné spoznanie pomocou TLS"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:761
+msgid "TLS connection closed unexpectedly"
+msgstr "Pripojenie pomocou TLS bolo nečakane ukončené"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:771
+msgid "TLS connection peer did not send a certificate"
+msgstr "Partner neposlal certifikát pre pripojenie TLS"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1152
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1171
+#, c-format
+msgid "Error performing TLS handshake: %s"
+msgstr "Chyba vzájomného spoznania s použitím TLS: %s"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1181
+msgid "Server did not return a valid TLS certificate"
+msgstr "Server nevrátil platný certifikát pre TLS"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1256
+msgid "Unacceptable TLS certificate"
+msgstr "Neprijateľný certifikát pre TLS"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1448
+#, c-format
+msgid "Error reading data from TLS socket: %s"
+msgstr "Chyba pri čítaní údajov zo soketu s použitím TLS: %s"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1477
+#, c-format
+msgid "Error writing data to TLS socket: %s"
+msgstr "Chyba pri zapisovaní údajov do soketu s použitím TLS: %s"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1521
+msgid "Connection is already closed"
+msgstr "Pripojenie je už ukončené"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1531
+#, c-format
+msgid "Error performing TLS close: %s"
+msgstr "Chyba pri uzatváraní spojenia s použitím TLS: %s"
+
+#: ../tls/gnutls/gtlsserverconnection-gnutls.c:103
+msgid "Certificate has no private key"
+msgstr "Certifikát nemá súkromný kľúč"
+
+#: ../tls/pkcs11/gpkcs11pin.c:108
+msgid ""
+"This is the last chance to enter the PIN correctly before the token is "
+"locked."
+msgstr ""
+"Toto je posledná možnosť na vloženie správneho kódu PIN predtým, ako bude "
+"token uzamknutý."
+
+#: ../tls/pkcs11/gpkcs11pin.c:110
+msgid ""
+"Several PIN attempts have been incorrect, and the token will be locked after "
+"further failures."
+msgstr ""
+"Niekoľko pokusov zadať kód PIN bolo nesprávnych, po niekoľkých ďalších "
+"nesprávnych pokusoch bude token uzamknutý."
+
+#: ../tls/pkcs11/gpkcs11pin.c:112
+msgid "The PIN entered is incorrect."
+msgstr "Vložený kód PIN je nesprávny."
+
+#: ../tls/pkcs11/gpkcs11slot.c:446
+msgid "Module"
+msgstr "Modul"
+
+#: ../tls/pkcs11/gpkcs11slot.c:447
+msgid "PKCS#11 Module Pointer"
+msgstr "Ukazovateľ na modul štandardu PKCS č.11"
+
+#: ../tls/pkcs11/gpkcs11slot.c:454
+msgid "Slot ID"
+msgstr "Identifikátor slotu"
+
+#: ../tls/pkcs11/gpkcs11slot.c:455
+msgid "PKCS#11 Slot Identifier"
+msgstr "Idntifikátor slotu štandardu PKCS č.11"
msgid ""
msgstr ""
"Project-Id-Version: glib-networking master\n"
-"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=glib&keywords=I18N+L10N&component=network\n"
-"POT-Creation-Date: 2011-11-25 08:54+0000\n"
-"PO-Revision-Date: 2011-11-25 21:11+0100\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
+"product=glib&keywords=I18N+L10N&component=network\n"
+"POT-Creation-Date: 2012-12-18 01:26+0000\n"
+"PO-Revision-Date: 2012-12-18 08:24+0100\n"
"Last-Translator: Matej Urbančič <mateju@svn.gnome.org>\n"
"Language-Team: Slovenian GNOME Translation Team <gnome-si@googlegroups.com>\n"
-"Language: \n"
+"Language: sl_SI\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n%100==4 ? 3 : 0);\n"
-"X-Poedit-Country: SLOVENIA\n"
-"X-Poedit-Language: Slovenian\n"
+"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n"
+"%100==4 ? 3 : 0);\n"
"X-Poedit-SourceCharset: utf-8\n"
+"X-Generator: Poedit 1.5.4\n"
#: ../proxy/libproxy/glibproxyresolver.c:150
msgid "Proxy resolver internal error."
msgid "No certificate data provided"
msgstr "Podatki o potrdilu niso bili podani"
-#: ../tls/gnutls/gtlsclientconnection-gnutls.c:385
+#: ../tls/gnutls/gtlsclientconnection-gnutls.c:309
msgid "Server required TLS certificate"
msgstr "Strežnik potrebuje potrdilo TLS"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:279
+#: ../tls/gnutls/gtlsconnection-gnutls.c:257
#, c-format
msgid "Could not create TLS connection: %s"
msgstr "Povezave TLS ni mogoče ustvariti: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:558
+#: ../tls/gnutls/gtlsconnection-gnutls.c:518
+msgid "Connection is closed"
+msgstr "Povezava je zaprta"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:580
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1417
+msgid "Operation would block"
+msgstr "Opravilo bi zaustavilo delovanje"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:710
msgid "Peer failed to perform TLS handshake"
msgstr "Soležniku ni uspelo izvesti izmenjave signalov TLS"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:576
+#: ../tls/gnutls/gtlsconnection-gnutls.c:727
msgid "Peer requested illegal TLS rehandshake"
msgstr "Soležnik je zahteval nedovoljeno ponovno izmenjavo signalov TLS"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:594
+#: ../tls/gnutls/gtlsconnection-gnutls.c:753
msgid "TLS connection closed unexpectedly"
msgstr "Povezava TLS se je nepričakovano zaprla"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:888
-#: ../tls/gnutls/gtlsconnection-gnutls.c:914
+#: ../tls/gnutls/gtlsconnection-gnutls.c:763
+msgid "TLS connection peer did not send a certificate"
+msgstr "Povezani soležnik ni vrnil veljavnega potrdila TLS"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1144
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1163
#, c-format
msgid "Error performing TLS handshake: %s"
msgstr "Napaka med izvajanjem izmenjave signalov TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:962
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1173
+msgid "Server did not return a valid TLS certificate"
+msgstr "Strežnik ni vrnil veljavnega potrdila TLS"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1248
msgid "Unacceptable TLS certificate"
msgstr "Nesprejemljivo potrdilo TLS"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1099
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1440
#, c-format
msgid "Error reading data from TLS socket: %s"
msgstr "Napaka med branjem podatkov iz vtiča TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1125
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1469
#, c-format
msgid "Error writing data to TLS socket: %s"
msgstr "Napaka med zapisovanjem podatkov v vtič TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1171
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1513
+msgid "Connection is already closed"
+msgstr "Povezava je že zaprta"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1523
#, c-format
msgid "Error performing TLS close: %s"
msgstr "Napaka med izvajanjem zapiranja TLS: %s"
-#: ../tls/gnutls/gtlsserverconnection-gnutls.c:138
+#: ../tls/gnutls/gtlsserverconnection-gnutls.c:103
msgid "Certificate has no private key"
msgstr "Potrdilo nima določenega zasebnega ključa"
#: ../tls/pkcs11/gpkcs11pin.c:108
-msgid "This is the last chance to enter the PIN correctly before the token is locked."
-msgstr "To je zadnja priložnost za pravilen vnos gesla PIN preden se dostop popolnoma zaklene."
+msgid ""
+"This is the last chance to enter the PIN correctly before the token is "
+"locked."
+msgstr ""
+"To je zadnja priložnost za pravilen vnos gesla PIN preden se dostop "
+"popolnoma zaklene."
#: ../tls/pkcs11/gpkcs11pin.c:110
-msgid "Several PIN attempts have been incorrect, and the token will be locked after further failures."
-msgstr "Več poskusov vnosa gesla PIN je bilo neuspešnih. Vnos bo po ponovni napaki popolnoma zakljenjen."
+msgid ""
+"Several PIN attempts have been incorrect, and the token will be locked after "
+"further failures."
+msgstr ""
+"Več poskusov vnosa gesla PIN je bilo neuspešnih. Vnos bo po ponovni napaki "
+"popolnoma zakljenjen."
#: ../tls/pkcs11/gpkcs11pin.c:112
msgid "The PIN entered is incorrect."
#: ../tls/pkcs11/gpkcs11slot.c:455
msgid "PKCS#11 Slot Identifier"
msgstr "Določilo odkodirnika PKCS#11"
-
-# Мирослав Николић <miroslavnikolic@rocketmail.com>, 2011, 2012.
+# Serbian translation of glib-networking
+# Courtesy of Prevod.org team (http://prevod.org/) -- 2012—2013.
+# This file is distributed under the same license as the glib-networking package.
+# Мирослав Николић <miroslavnikolic@rocketmail.com>, 2011, 2012, 2013.
msgid ""
msgstr ""
-"Project-Id-Version: glib.networking\n"
+"Project-Id-Version: glib-networking\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=glib&k"
"eywords=I18N+L10N&component=network\n"
-"POT-Creation-Date: 2011-11-19 01:32+0000\n"
-"PO-Revision-Date: 2012-02-12 20:20+0200\n"
+"POT-Creation-Date: 2012-11-29 22:09+0000\n"
+"PO-Revision-Date: 2013-01-18 11:59+0200\n"
"Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
"Language-Team: Serbian <gnom@prevod.org>\n"
"Language: sr\n"
#: ../tls/gnutls/gtlscertificate-gnutls.c:173
#, c-format
msgid "Could not parse DER certificate: %s"
-msgstr "Не могу да рашчланим ДЕР уверење: %s"
+msgstr "Не могу да обрадим ДЕР уверење: %s"
#: ../tls/gnutls/gtlscertificate-gnutls.c:194
#, c-format
msgid "Could not parse PEM certificate: %s"
-msgstr "Не могу да рашчланим ПЕМ уверење: %s"
+msgstr "Не могу да обрадим ПЕМ уверење: %s"
#: ../tls/gnutls/gtlscertificate-gnutls.c:225
#, c-format
msgid "Could not parse DER private key: %s"
-msgstr "Не могу да рашчланим приватни ДЕР кључ: %s"
+msgstr "Не могу да обрадим приватни ДЕР кључ: %s"
#: ../tls/gnutls/gtlscertificate-gnutls.c:256
#, c-format
msgid "Could not parse PEM private key: %s"
-msgstr "Не могу да рашчланим приватни ПЕМ кључ: %s"
+msgstr "Не могу да обрадим приватни ПЕМ кључ: %s"
#: ../tls/gnutls/gtlscertificate-gnutls.c:296
msgid "No certificate data provided"
msgstr "Нису обезбеђени подаци уверења"
-#: ../tls/gnutls/gtlsclientconnection-gnutls.c:385
+#: ../tls/gnutls/gtlsclientconnection-gnutls.c:309
msgid "Server required TLS certificate"
msgstr "ТЛС уверење које захтева сервер"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:279
+#: ../tls/gnutls/gtlsconnection-gnutls.c:254
#, c-format
msgid "Could not create TLS connection: %s"
msgstr "Не могу да направим ТЛС везу: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:558
+#: ../tls/gnutls/gtlsconnection-gnutls.c:514
+msgid "Connection is closed"
+msgstr "Веза је затворена"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:576
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1382
+msgid "Operation would block"
+msgstr "Поступак би блокирао"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:703
msgid "Peer failed to perform TLS handshake"
msgstr "Парњак није успео да изврши ТЛС руковање"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:576
+#: ../tls/gnutls/gtlsconnection-gnutls.c:720
msgid "Peer requested illegal TLS rehandshake"
msgstr "Парњак је затражио илегално ТЛС поновно руковање"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:594
+#: ../tls/gnutls/gtlsconnection-gnutls.c:746
msgid "TLS connection closed unexpectedly"
msgstr "ТЛС веза је неочекивано затворена"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:888
-#: ../tls/gnutls/gtlsconnection-gnutls.c:914
+#: ../tls/gnutls/gtlsconnection-gnutls.c:756
+#| msgid "Server did not return a valid TLS certificate"
+msgid "TLS connection peer did not send a certificate"
+msgstr "Парњак ТЛС везе није послао уверење"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1064
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1083
#, c-format
msgid "Error performing TLS handshake: %s"
msgstr "Грешка у извршавању ТЛС руковања: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:962
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1228
msgid "Unacceptable TLS certificate"
msgstr "Неприхватљиво ТЛС уверење"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1099
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1239
+msgid "Server did not return a valid TLS certificate"
+msgstr "Сервер није вратио исправно ТЛС уверење"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1405
#, c-format
msgid "Error reading data from TLS socket: %s"
msgstr "Грешка приликом читања података са ТЛС прикључка: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1125
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1434
#, c-format
msgid "Error writing data to TLS socket: %s"
msgstr "Грешка приликом уписивања података у ТЛС прикључак: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1171
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1478
+msgid "Connection is already closed"
+msgstr "Веза је већ затворена"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1488
#, c-format
msgid "Error performing TLS close: %s"
msgstr "Грешка у извршавању ТЛС затварања: %s"
-#: ../tls/gnutls/gtlsserverconnection-gnutls.c:138
+#: ../tls/gnutls/gtlsserverconnection-gnutls.c:103
msgid "Certificate has no private key"
msgstr "Уверење нема приватни кључ"
-# Miroslav Nikolić <miroslavnikolic@rocketmail.com>, 2011, 2012.
+# Serbian translation of glib-networking
+# Courtesy of Prevod.org team (http://prevod.org/) -- 2012—2013.
+# This file is distributed under the same license as the glib-networking package.
+# Miroslav Nikolić <miroslavnikolic@rocketmail.com>, 2011, 2012, 2013.
msgid ""
msgstr ""
-"Project-Id-Version: glib.networking\n"
+"Project-Id-Version: glib-networking\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=glib&k"
"eywords=I18N+L10N&component=network\n"
-"POT-Creation-Date: 2011-11-19 01:32+0000\n"
-"PO-Revision-Date: 2012-02-12 20:20+0200\n"
+"POT-Creation-Date: 2012-11-29 22:09+0000\n"
+"PO-Revision-Date: 2013-01-18 11:59+0200\n"
"Last-Translator: Miroslav Nikolić <miroslavnikolic@rocketmail.com>\n"
"Language-Team: Serbian <gnom@prevod.org>\n"
"Language: sr\n"
#: ../tls/gnutls/gtlscertificate-gnutls.c:173
#, c-format
msgid "Could not parse DER certificate: %s"
-msgstr "Ne mogu da raščlanim DER uverenje: %s"
+msgstr "Ne mogu da obradim DER uverenje: %s"
#: ../tls/gnutls/gtlscertificate-gnutls.c:194
#, c-format
msgid "Could not parse PEM certificate: %s"
-msgstr "Ne mogu da raščlanim PEM uverenje: %s"
+msgstr "Ne mogu da obradim PEM uverenje: %s"
#: ../tls/gnutls/gtlscertificate-gnutls.c:225
#, c-format
msgid "Could not parse DER private key: %s"
-msgstr "Ne mogu da raščlanim privatni DER ključ: %s"
+msgstr "Ne mogu da obradim privatni DER ključ: %s"
#: ../tls/gnutls/gtlscertificate-gnutls.c:256
#, c-format
msgid "Could not parse PEM private key: %s"
-msgstr "Ne mogu da raščlanim privatni PEM ključ: %s"
+msgstr "Ne mogu da obradim privatni PEM ključ: %s"
#: ../tls/gnutls/gtlscertificate-gnutls.c:296
msgid "No certificate data provided"
msgstr "Nisu obezbeđeni podaci uverenja"
-#: ../tls/gnutls/gtlsclientconnection-gnutls.c:385
+#: ../tls/gnutls/gtlsclientconnection-gnutls.c:309
msgid "Server required TLS certificate"
msgstr "TLS uverenje koje zahteva server"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:279
+#: ../tls/gnutls/gtlsconnection-gnutls.c:254
#, c-format
msgid "Could not create TLS connection: %s"
msgstr "Ne mogu da napravim TLS vezu: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:558
+#: ../tls/gnutls/gtlsconnection-gnutls.c:514
+msgid "Connection is closed"
+msgstr "Veza je zatvorena"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:576
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1382
+msgid "Operation would block"
+msgstr "Postupak bi blokirao"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:703
msgid "Peer failed to perform TLS handshake"
msgstr "Parnjak nije uspeo da izvrši TLS rukovanje"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:576
+#: ../tls/gnutls/gtlsconnection-gnutls.c:720
msgid "Peer requested illegal TLS rehandshake"
msgstr "Parnjak je zatražio ilegalno TLS ponovno rukovanje"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:594
+#: ../tls/gnutls/gtlsconnection-gnutls.c:746
msgid "TLS connection closed unexpectedly"
msgstr "TLS veza je neočekivano zatvorena"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:888
-#: ../tls/gnutls/gtlsconnection-gnutls.c:914
+#: ../tls/gnutls/gtlsconnection-gnutls.c:756
+#| msgid "Server did not return a valid TLS certificate"
+msgid "TLS connection peer did not send a certificate"
+msgstr "Parnjak TLS veze nije poslao uverenje"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1064
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1083
#, c-format
msgid "Error performing TLS handshake: %s"
msgstr "Greška u izvršavanju TLS rukovanja: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:962
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1228
msgid "Unacceptable TLS certificate"
msgstr "Neprihvatljivo TLS uverenje"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1099
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1239
+msgid "Server did not return a valid TLS certificate"
+msgstr "Server nije vratio ispravno TLS uverenje"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1405
#, c-format
msgid "Error reading data from TLS socket: %s"
msgstr "Greška prilikom čitanja podataka sa TLS priključka: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1125
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1434
#, c-format
msgid "Error writing data to TLS socket: %s"
msgstr "Greška prilikom upisivanja podataka u TLS priključak: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1171
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1478
+msgid "Connection is already closed"
+msgstr "Veza je već zatvorena"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1488
#, c-format
msgid "Error performing TLS close: %s"
msgstr "Greška u izvršavanju TLS zatvaranja: %s"
-#: ../tls/gnutls/gtlsserverconnection-gnutls.c:138
+#: ../tls/gnutls/gtlsserverconnection-gnutls.c:103
msgid "Certificate has no private key"
msgstr "Uverenje nema privatni ključ"
-# SOME DESCRIPTIVE TITLE.
# Copyright (C) 2011, 2012 Swecha Telugu Localisation team
# This file is distributed under the same license as the PACKAGE package.
+#
# Hari Krishna <hari@swecha.net>, 2011.
# Bhuvan Krishna <bhuvan@swecha.net>, 2012.
-#
+# Krishnababu Krothapalli <kkrothap@redhat.com>, 2012.
msgid ""
msgstr ""
"Project-Id-Version: glib-network.master.te\n"
-"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=glib&keywords=I18N+L10N&component=network\n"
-"POT-Creation-Date: 2012-03-18 08:55+0000\n"
-"PO-Revision-Date: 2012-03-19 13:49+0530\n"
-"Last-Translator: Bhuvan Krishna <bhuvan@swecha.net>\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
+"product=glib&keywords=I18N+L10N&component=network\n"
+"POT-Creation-Date: 2012-07-18 21:47+0000\n"
+"PO-Revision-Date: 2012-08-14 13:48+0530\n"
+"Last-Translator: Krishnababu Krothapalli <kkrothap@redhat.com>\n"
"Language-Team: Telugu <Indlinux-telugu@lists.sourceforge.net>\n"
+"Language: te\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: Lokalize 1.4\n"
#: ../proxy/libproxy/glibproxyresolver.c:150
msgid "Proxy resolver internal error."
msgid "No certificate data provided"
msgstr "ధృవీకరణపత్ర దత్తాశం అమర్చబడలేదు "
-#: ../tls/gnutls/gtlsclientconnection-gnutls.c:349
+#: ../tls/gnutls/gtlsclientconnection-gnutls.c:309
msgid "Server required TLS certificate"
msgstr "TLS ధృవీకరణపత్రము సేవికకు అవసరం "
-#: ../tls/gnutls/gtlsconnection-gnutls.c:202
+#: ../tls/gnutls/gtlsconnection-gnutls.c:248
#, c-format
msgid "Could not create TLS connection: %s"
msgstr "TLS అనుసంధానం సృష్టించడం కుదరుటలేదు: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:481
+#: ../tls/gnutls/gtlsconnection-gnutls.c:508
+msgid "Connection is closed"
+msgstr "అనుసంధానం మూసివేయబడింది"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:568
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1371
+msgid "Operation would block"
+msgstr "ఆపరేషన్ నిరోధించబడును"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:695
msgid "Peer failed to perform TLS handshake"
msgstr "TLS హాండ్ షేక్ నెరవేర్చటకు పీర్ విఫలం "
-#: ../tls/gnutls/gtlsconnection-gnutls.c:501
+#: ../tls/gnutls/gtlsconnection-gnutls.c:712
msgid "Peer requested illegal TLS rehandshake"
msgstr "న్యాయవిరోధమైన TLS తిరిగి హాండ్ షేక్ పీర్ అడిగినది "
-#: ../tls/gnutls/gtlsconnection-gnutls.c:519
+#: ../tls/gnutls/gtlsconnection-gnutls.c:738
msgid "TLS connection closed unexpectedly"
msgstr "TLS బంధం ఊహించని విధంగా రద్దైపోయినది "
-#: ../tls/gnutls/gtlsconnection-gnutls.c:814
-#: ../tls/gnutls/gtlsconnection-gnutls.c:840
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1049
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1068
#, c-format
msgid "Error performing TLS handshake: %s"
msgstr "TLS హాండ్ షేక్ నెరవేర్చటలో విఫలం: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:888
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1204
msgid "Unacceptable TLS certificate"
msgstr "అంగీకరించని TLS ధృవీకరణపత్రము "
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1027
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1215
+#| msgid "Server required TLS certificate"
+msgid "Server did not return a valid TLS certificate"
+msgstr "సేవిక చెల్లునటువంటి TLS ధృవీకరణపత్రం తిప్పియీయలేదు"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1394
#, c-format
msgid "Error reading data from TLS socket: %s"
msgstr "TLS తొర్ర లో దత్తంశం పఠించుటలో దొషం: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1053
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1423
#, c-format
msgid "Error writing data to TLS socket: %s"
msgstr "TLS తొర్ర లో దత్తంశం లిఖించుట లో దొషం: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1099
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1467
+msgid "Connection is already closed"
+msgstr "అనుసంధానం యిప్పటికే మూయబడెను"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1477
#, c-format
msgid "Error performing TLS close: %s"
msgstr "TLS మూయడంలో దోషం: %s"
msgstr "సర్టిఫికేట్ కు స్వంతతాళం లెదు"
#: ../tls/pkcs11/gpkcs11pin.c:108
-msgid "This is the last chance to enter the PIN correctly before the token is locked."
+msgid ""
+"This is the last chance to enter the PIN correctly before the token is "
+"locked."
msgstr "టోకెన్ తాళం వెసె ముందు సరైన PIN ను నమోదు చివరి అవకాశం"
#: ../tls/pkcs11/gpkcs11pin.c:110
-msgid "Several PIN attempts have been incorrect, and the token will be locked after further failures."
-msgstr "మీరు చేసిన అనేక PIN ప్రయత్నాలు సరైనవి కాదు, అందువల్ల తదుపరి తప్పిదాలు జరగకుండా టోకెన్ లాక్ చేయబడినది"
+msgid ""
+"Several PIN attempts have been incorrect, and the token will be locked after "
+"further failures."
+msgstr ""
+"మీరు చేసిన అనేక PIN ప్రయత్నాలు సరైనవి కాదు, అందువల్ల తదుపరి తప్పిదాలు "
+"జరగకుండా టోకెన్ లాక్ చేయబడినది"
#: ../tls/pkcs11/gpkcs11pin.c:112
msgid "The PIN entered is incorrect."
--- /dev/null
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Victor Ibragimov <victor.ibragimov@gmail.com>, 2013.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Tajik Gnome\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
+"product=glib&keywords=I18N+L10N&component=network\n"
+"POT-Creation-Date: 2013-03-05 15:28+0000\n"
+"PO-Revision-Date: 2013-01-21 18:03+0500\n"
+"Last-Translator: Victor Ibragimov <victor.ibragimov@gmail.com>\n"
+"Language-Team: \n"
+"Language: tg\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.5.4\n"
+
+#: ../proxy/libproxy/glibproxyresolver.c:150
+msgid "Proxy resolver internal error."
+msgstr ""
+
+#: ../tls/gnutls/gtlscertificate-gnutls.c:173
+#, c-format
+msgid "Could not parse DER certificate: %s"
+msgstr ""
+
+#: ../tls/gnutls/gtlscertificate-gnutls.c:194
+#, c-format
+msgid "Could not parse PEM certificate: %s"
+msgstr ""
+
+#: ../tls/gnutls/gtlscertificate-gnutls.c:225
+#, c-format
+msgid "Could not parse DER private key: %s"
+msgstr ""
+
+#: ../tls/gnutls/gtlscertificate-gnutls.c:256
+#, c-format
+msgid "Could not parse PEM private key: %s"
+msgstr ""
+
+#: ../tls/gnutls/gtlscertificate-gnutls.c:296
+msgid "No certificate data provided"
+msgstr "Ягон иттилооти гувоҳинома таъмин нашудааст"
+
+#: ../tls/gnutls/gtlsclientconnection-gnutls.c:309
+msgid "Server required TLS certificate"
+msgstr "Сервер гувоҳиномаи TLS-ро дархост кардааст"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:258
+#, c-format
+msgid "Could not create TLS connection: %s"
+msgstr ""
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:520
+msgid "Connection is closed"
+msgstr ""
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:582
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1425
+msgid "Operation would block"
+msgstr ""
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:712
+#: ../tls/gnutls/gtlsconnection-gnutls.c:755
+msgid "Peer failed to perform TLS handshake"
+msgstr ""
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:729
+msgid "Peer requested illegal TLS rehandshake"
+msgstr ""
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:761
+msgid "TLS connection closed unexpectedly"
+msgstr ""
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:771
+msgid "TLS connection peer did not send a certificate"
+msgstr ""
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1152
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1171
+#, c-format
+msgid "Error performing TLS handshake: %s"
+msgstr ""
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1181
+msgid "Server did not return a valid TLS certificate"
+msgstr ""
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1256
+msgid "Unacceptable TLS certificate"
+msgstr ""
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1448
+#, c-format
+msgid "Error reading data from TLS socket: %s"
+msgstr ""
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1477
+#, c-format
+msgid "Error writing data to TLS socket: %s"
+msgstr ""
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1521
+msgid "Connection is already closed"
+msgstr ""
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1531
+#, c-format
+msgid "Error performing TLS close: %s"
+msgstr ""
+
+#: ../tls/gnutls/gtlsserverconnection-gnutls.c:103
+msgid "Certificate has no private key"
+msgstr ""
+
+#: ../tls/pkcs11/gpkcs11pin.c:108
+msgid ""
+"This is the last chance to enter the PIN correctly before the token is "
+"locked."
+msgstr ""
+
+#: ../tls/pkcs11/gpkcs11pin.c:110
+msgid ""
+"Several PIN attempts have been incorrect, and the token will be locked after "
+"further failures."
+msgstr ""
+
+#: ../tls/pkcs11/gpkcs11pin.c:112
+msgid "The PIN entered is incorrect."
+msgstr ""
+
+#: ../tls/pkcs11/gpkcs11slot.c:446
+msgid "Module"
+msgstr "Модул"
+
+#: ../tls/pkcs11/gpkcs11slot.c:447
+msgid "PKCS#11 Module Pointer"
+msgstr ""
+
+#: ../tls/pkcs11/gpkcs11slot.c:454
+msgid "Slot ID"
+msgstr ""
+
+#: ../tls/pkcs11/gpkcs11slot.c:455
+msgid "PKCS#11 Slot Identifier"
+msgstr ""
# Thai translation for glib-networking.
-# Copyright (C) 2011 Free Software Foundation, Inc.
+# Copyright (C) 2011-2013 Free Software Foundation, Inc.
# This file is distributed under the same license as the glib-networking package.
-# Unticha Pramgoed <unticha@gmail.com>, 2011.
+# Unticha Pramgoed <unticha@gmail.com>, 2011-2012.
+# Theppitak Karoonboonyanan <thep@linux.thai.net>, 2013.
#
msgid ""
msgstr ""
"Project-Id-Version: glib-networking master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
"product=glib&keywords=I18N+L10N&component=network\n"
-"POT-Creation-Date: 2011-09-23 07:39+0000\n"
-"PO-Revision-Date: 2011-09-24 13:17+0700\n"
-"Last-Translator: Unticha Pramgoed <unticha@gmail.com>\n"
-"Language-Team: th <thai-l10n@googlegroups.com>\n"
+"POT-Creation-Date: 2012-11-29 22:09+0000\n"
+"PO-Revision-Date: 2013-03-09 11:45+0700\n"
+"Last-Translator: Theppitak Karoonboonyanan <thep@linux.thai.net>\n"
+"Language-Team: Thai <thai-l10n@googlegroups.com>\n"
+"Language: th\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: UTF-8\n"
"\n"
-#: ../proxy/libproxy/glibproxyresolver.c:151
+#: ../proxy/libproxy/glibproxyresolver.c:150
msgid "Proxy resolver internal error."
msgstr "เกิดข้อผิดพลาดภายในของบริการเปิดหาพร็อกซี"
msgid "Could not parse PEM certificate: %s"
msgstr "ไม่สามารถแจงใบรับรอง PEM: %s"
-#: ../tls/gnutls/gtlscertificate-gnutls.c:214
+#: ../tls/gnutls/gtlscertificate-gnutls.c:225
#, c-format
msgid "Could not parse DER private key: %s"
msgstr "ไม่สามารถแจงกุญแจส่วนตัว DER: %s"
-#: ../tls/gnutls/gtlscertificate-gnutls.c:234
+#: ../tls/gnutls/gtlscertificate-gnutls.c:256
#, c-format
msgid "Could not parse PEM private key: %s"
msgstr "ไม่สามารถแจงกุญแจส่วนตัว PEM: %s"
-#: ../tls/gnutls/gtlscertificate-gnutls.c:275
+#: ../tls/gnutls/gtlscertificate-gnutls.c:296
msgid "No certificate data provided"
msgstr "ไม่มีข้อมูลใบรับรอง"
-#: ../tls/gnutls/gtlsclientconnection-gnutls.c:386
+#: ../tls/gnutls/gtlsclientconnection-gnutls.c:309
msgid "Server required TLS certificate"
msgstr "เซิร์ฟเวอร์ต้องการใบรับรอง TLS"
msgid "Could not create TLS connection: %s"
msgstr "ไม่สามารถสร้างการเชื่อมต่อ TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:529
+#: ../tls/gnutls/gtlsconnection-gnutls.c:514
+msgid "Connection is closed"
+msgstr "การเชื่อมต่อถูกปิดไปแล้ว"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:576
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1382
+msgid "Operation would block"
+msgstr "ปฏิบัติการจะบล็อค"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:703
msgid "Peer failed to perform TLS handshake"
msgstr "อีกฝ่ายหนึ่งดำเนินการ TLS handshake ไม่สำเร็จ"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:547
+#: ../tls/gnutls/gtlsconnection-gnutls.c:720
msgid "Peer requested illegal TLS rehandshake"
msgstr "อีกฝ่ายหนึ่งร้องขอ TLS rehandshake ไม่ถูกต้อง"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:565
+#: ../tls/gnutls/gtlsconnection-gnutls.c:746
msgid "TLS connection closed unexpectedly"
msgstr "การเชื่อมต่อ TLS ปิดอย่างกะทันหัน"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:859
-#: ../tls/gnutls/gtlsconnection-gnutls.c:885
+#: ../tls/gnutls/gtlsconnection-gnutls.c:756
+msgid "TLS connection peer did not send a certificate"
+msgstr "คู่สายการเชื่อมต่อ TLS ไม่ส่งใบรับรองมา"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1064
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1083
#, c-format
msgid "Error performing TLS handshake: %s"
msgstr "เกิดข้อผิดพลาดขณะดำเนินการ TLS handshake: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:924
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1228
msgid "Unacceptable TLS certificate"
msgstr "ใบรับรอง TLS ไม่เป็นที่ยอมรับ"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1073
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1239
+msgid "Server did not return a valid TLS certificate"
+msgstr "เซิร์ฟเวอร์ไม่คืนใบรับรอง TLS ที่ถูกต้อง"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1405
#, c-format
msgid "Error reading data from TLS socket: %s"
msgstr "เกิดข้อผิดพลาดขณะอ่านข้อมูลจากซ็อกเก็ต TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1099
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1434
#, c-format
msgid "Error writing data to TLS socket: %s"
msgstr "เกิดข้อผิดพลาดขณะเขียนข้อมูลลงซ็อกเก็ต TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1145
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1478
+msgid "Connection is already closed"
+msgstr "การเชื่อมต่อถูกปิดไปเรียบร้อยแล้ว"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1488
#, c-format
msgid "Error performing TLS close: %s"
msgstr "เกิดข้อผิดพลาดขณะดำเนินการปิด TLS: %s"
+
+#: ../tls/gnutls/gtlsserverconnection-gnutls.c:103
+msgid "Certificate has no private key"
+msgstr "ใบรับรองไม่มีกุญแจส่วนตัว"
+
+#: ../tls/pkcs11/gpkcs11pin.c:108
+msgid ""
+"This is the last chance to enter the PIN correctly before the token is "
+"locked."
+msgstr "นี่เป็นโอกาสสุดท้ายที่จะป้อน PIN ให้ถูกต้อง ก่อนโทเค็นจะถูกล็อค"
+
+#: ../tls/pkcs11/gpkcs11pin.c:110
+msgid ""
+"Several PIN attempts have been incorrect, and the token will be locked after "
+"further failures."
+msgstr "ป้อน PIN ผิดมาแล้วหลายครั้ง และโทเค็นจะถูกล็อคถ้ายังป้อนผิดอีก"
+
+#: ../tls/pkcs11/gpkcs11pin.c:112
+msgid "The PIN entered is incorrect."
+msgstr "PIN ที่ป้อนไม่ถูกต้อง"
+
+#: ../tls/pkcs11/gpkcs11slot.c:446
+msgid "Module"
+msgstr "มอดูล"
+
+#: ../tls/pkcs11/gpkcs11slot.c:447
+msgid "PKCS#11 Module Pointer"
+msgstr "ตัวชี้มอดูล PKCS#11"
+
+#: ../tls/pkcs11/gpkcs11slot.c:454
+msgid "Slot ID"
+msgstr "หมายเลข Slot"
+
+#: ../tls/pkcs11/gpkcs11slot.c:455
+msgid "PKCS#11 Slot Identifier"
+msgstr "ตัวระบุ Slot PKCS#11"
# This file is distributed under the same license as the glib-networking package.
#
# Muhammed Eken <gnome@m-eken.com>, 2011.
-# Muhammet Kara <muhammet.k@gmail.com>, 2011, 2012.
+# Ozan Çağlayan <ozancag@gmail.com>, 2013.
+# Muhammet Kara <muhammetk@gmail.com>, 2011, 2012, 2013.
+#
msgid ""
msgstr ""
"Project-Id-Version: glib-networking\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
"product=glib&keywords=I18N+L10N&component=network\n"
-"POT-Creation-Date: 2011-11-19 01:32+0000\n"
-"PO-Revision-Date: 2012-01-04 10:17+0000\n"
-"Last-Translator: Muhammet Kara <muhammet.k@gmail.com>\n"
-"Language-Team: Turkish <gnome-turk@gnome.org>\n"
+"POT-Creation-Date: 2013-04-03 16:39+0000\n"
+"PO-Revision-Date: 2013-04-08 12:09+0300\n"
+"Last-Translator: Muhammet Kara <muhammetk@gmail.com>\n"
+"Language-Team: Türkçe <gnome-turk@gnome.org>\n"
+"Language: tr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"Language: tr\n"
-"X-Generator: Lokalize 1.2\n"
+"X-Generator: Gtranslator 2.91.5\n"
#: ../proxy/libproxy/glibproxyresolver.c:150
msgid "Proxy resolver internal error."
#: ../tls/gnutls/gtlscertificate-gnutls.c:173
#, c-format
msgid "Could not parse DER certificate: %s"
-msgstr "DER sertifikası çözümlenemedi: %s"
+msgstr "DER sertifikası ayrıştırılamadı: %s"
#: ../tls/gnutls/gtlscertificate-gnutls.c:194
#, c-format
msgid "Could not parse PEM certificate: %s"
-msgstr "PEM sertifikası çözümlenemedi: %s"
+msgstr "PEM sertifikası ayrıştırılamadı: %s"
#: ../tls/gnutls/gtlscertificate-gnutls.c:225
#, c-format
msgid "Could not parse DER private key: %s"
-msgstr "DER özel anahtarı çözümlenemedi: %s"
+msgstr "DER özel anahtarı ayrıştırılamadı: %s"
#: ../tls/gnutls/gtlscertificate-gnutls.c:256
#, c-format
msgid "Could not parse PEM private key: %s"
-msgstr "PEM özel anahtarı çözümlenemedi: %s"
+msgstr "PEM özel anahtarı ayrıştırılamadı: %s"
#: ../tls/gnutls/gtlscertificate-gnutls.c:296
msgid "No certificate data provided"
msgstr "Sertifika verisi sağlanmadı"
-#: ../tls/gnutls/gtlsclientconnection-gnutls.c:385
+#: ../tls/gnutls/gtlsclientconnection-gnutls.c:309
msgid "Server required TLS certificate"
-msgstr "Sunucu TLS sertifikası gerekli"
+msgstr "Sunucu TLS sertifikası talep etti"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:279
+#: ../tls/gnutls/gtlsconnection-gnutls.c:258
#, c-format
msgid "Could not create TLS connection: %s"
msgstr "TLS bağlantısı oluşturulamadı: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:558
+#: ../tls/gnutls/gtlsconnection-gnutls.c:520
+msgid "Connection is closed"
+msgstr "Bağlantı kapalı"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:582
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1425
+msgid "Operation would block"
+msgstr "Bloke eden işlem"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:712
+#: ../tls/gnutls/gtlsconnection-gnutls.c:755
msgid "Peer failed to perform TLS handshake"
-msgstr "TLS eş anlaşması gerçekleştirilemedi"
+msgstr "Uç, TLS el sıkışmasını başaramadı"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:576
+#: ../tls/gnutls/gtlsconnection-gnutls.c:729
msgid "Peer requested illegal TLS rehandshake"
-msgstr "Eş, kural dışı TLS anlaşması talep etti"
+msgstr "Uç, kural dışı TLS el sıkışması talep etti"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:594
+#: ../tls/gnutls/gtlsconnection-gnutls.c:761
msgid "TLS connection closed unexpectedly"
msgstr "TLS bağlantısı beklenmedik şekilde sonlandı"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:888
-#: ../tls/gnutls/gtlsconnection-gnutls.c:914
+#: ../tls/gnutls/gtlsconnection-gnutls.c:771
+msgid "TLS connection peer did not send a certificate"
+msgstr "TLS bağlantı ucu sertifika göndermedi"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1152
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1171
#, c-format
msgid "Error performing TLS handshake: %s"
-msgstr "TLS anlaşmasında hata gerçekleşti: %s"
+msgstr "TLS el sıkışması sırasında hata: %s"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1181
+msgid "Server did not return a valid TLS certificate"
+msgstr "Sunucu geçerli bir TLS sertifikası döndürmedi"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:962
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1256
msgid "Unacceptable TLS certificate"
msgstr "TLS sertifikası kabul edilemez"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1099
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1448
#, c-format
msgid "Error reading data from TLS socket: %s"
-msgstr "TLS soketinde veri okuma hatası: %s"
+msgstr "TLS soketinden veri okurken hata: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1125
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1477
#, c-format
msgid "Error writing data to TLS socket: %s"
-msgstr "TLS soketinde veri yazma hatası: %s"
+msgstr "TLS soketine veri yazarken hata: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1171
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1521
+msgid "Connection is already closed"
+msgstr "Bağlantı zaten kapalı"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1531
#, c-format
msgid "Error performing TLS close: %s"
msgstr "TLS kapatma işleminde hata: %s"
-#: ../tls/gnutls/gtlsserverconnection-gnutls.c:138
+#: ../tls/gnutls/gtlsserverconnection-gnutls.c:103
msgid "Certificate has no private key"
msgstr "Sertifikanın özel anahtarı yok"
"This is the last chance to enter the PIN correctly before the token is "
"locked."
msgstr ""
-"Bu, simge kilitlenmeden önce PIN kodunu doğru olarak girmek için son "
-"şansınızdır."
+"Bu, simge (token) kilitlenmeden önce PIN kodunu doğru girmeniz için son "
+"şanstır."
#: ../tls/pkcs11/gpkcs11pin.c:110
msgid ""
"Several PIN attempts have been incorrect, and the token will be locked after "
"further failures."
-msgstr ""
-"PIN birden çok kez yanlış girildi, ve tekrar yanlış girilmesi halinde simge "
-"kilitlenecektir."
+msgstr "PIN daha fazla yanlış girilirse simge (token) kilitlenecektir."
#: ../tls/pkcs11/gpkcs11pin.c:112
msgid "The PIN entered is incorrect."
-msgstr "Girilen PIN hatalıdır."
+msgstr "Girilen PIN hatalı."
#: ../tls/pkcs11/gpkcs11slot.c:446
msgid "Module"
#: ../tls/pkcs11/gpkcs11slot.c:455
msgid "PKCS#11 Slot Identifier"
msgstr "PKCS#11 Yuva Tanımlayıcısı"
-
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# Gheyret Kenji <gheyret@yahoo.com>, 2010.
-#
+#
msgid ""
msgstr ""
"Project-Id-Version: glib-networking\n"
-"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=glib&component=network\n"
-"POT-Creation-Date: 2011-02-04 22:21+0000\n"
-"PO-Revision-Date: 2011-01-31 15:04+0000\n"
-"Last-Translator: Gheyret Kenji <gheyret@yahoo.com>\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=glib&keywords=I18N+L10N&component=network\n"
+"POT-Creation-Date: 2013-01-20 10:45+0000\n"
+"PO-Revision-Date: 2013-02-22 22:21+0900\n"
+"Last-Translator: Gheyret Kenji <gheyret@gmail.com>\n"
"Language-Team: Uyghur Computer Science Association <UKIJ@yahoogroups.com>\n"
+"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../proxy/libproxy/glibproxyresolver.c:142
+#: ../proxy/libproxy/glibproxyresolver.c:150
msgid "Proxy resolver internal error."
msgstr "ۋاكالەتچى ھەل قىلغۇچ ئىچكى خاتالىقى."
msgid "Could not parse PEM certificate: %s"
msgstr "PEM ئىسپاتنامىسىنى يېشەلمىدى: %s"
-#: ../tls/gnutls/gtlscertificate-gnutls.c:214
+#: ../tls/gnutls/gtlscertificate-gnutls.c:225
#, c-format
msgid "Could not parse DER private key: %s"
msgstr "DER شەخسىي ئاچقۇچىنى يېشەلمىدى: %s"
-#: ../tls/gnutls/gtlscertificate-gnutls.c:234
+#: ../tls/gnutls/gtlscertificate-gnutls.c:256
#, c-format
msgid "Could not parse PEM private key: %s"
msgstr "PEM شەخسىي ئاچقۇچىنى يېشەلمىدى: %s"
-#: ../tls/gnutls/gtlscertificate-gnutls.c:275
+#: ../tls/gnutls/gtlscertificate-gnutls.c:296
msgid "No certificate data provided"
msgstr "ئىسپاتنامە سانلىق-مەلۇماتلىرى تەمىنلەنمىگەن"
-#: ../tls/gnutls/gtlsclientconnection-gnutls.c:356
+#: ../tls/gnutls/gtlsclientconnection-gnutls.c:309
msgid "Server required TLS certificate"
msgstr "مۇلازىمېتىر TLS ئىسپاتنامىسى تەلەپ قىلىدۇ"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:241
+#: ../tls/gnutls/gtlsconnection-gnutls.c:257
#, c-format
msgid "Could not create TLS connection: %s"
msgstr "TLS باغلىنىشى قۇرالمىدى:%s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:479
+#: ../tls/gnutls/gtlsconnection-gnutls.c:518
+msgid "Connection is closed"
+msgstr "باغلىنىش تاقالدى"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:580
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1417
+msgid "Operation would block"
+msgstr "مەشغۇلات توسۇلىدۇ"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:710
msgid "Peer failed to perform TLS handshake"
-msgstr "Peer(باشقىلار) TLS بىلەن سالاملىشىشتا مەغلۇپ بولدى"
+msgstr "قارىشى تەرەپ TLS سالىمىدا مەغلۇپ بولدى"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:497
+#: ../tls/gnutls/gtlsconnection-gnutls.c:727
msgid "Peer requested illegal TLS rehandshake"
-msgstr "Peer(باشقىلار) TLS بىلەن قايتا سالاملىشىشتا ناتوغرا سالام قىلدى"
+msgstr "Peer(باشقىلار) TLS قايتا سالىمىدا ناتوغرا سالام قىلدى"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:511
+#: ../tls/gnutls/gtlsconnection-gnutls.c:753
msgid "TLS connection closed unexpectedly"
-msgstr "TLS باغلىنىشى ئويلىمىغان يەردىن تاقىلىپ قالدى"
+msgstr "قارىشى تەرەپ توغرا بولمىغان TLS سالىمىنى تەلەپ قىلدى"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:799
-#: ../tls/gnutls/gtlsconnection-gnutls.c:825
+#: ../tls/gnutls/gtlsconnection-gnutls.c:763
+msgid "TLS connection peer did not send a certificate"
+msgstr "TLS باغلىنىشىدىكى قارىشى تەرەپ گۇۋاھنامىنى ئەۋەتمىدى"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1144
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1163
#, c-format
msgid "Error performing TLS handshake: %s"
msgstr "TLS بىلەن سالاملىشىشتا خاتالىق كۆرۈلدى: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:876
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1173
+msgid "Server did not return a valid TLS certificate"
+msgstr "مۇلازىمېتىر ئىناۋەتلىك TLS گۇۋاھنامىسىنى قايتۇرمىدى"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1248
msgid "Unacceptable TLS certificate"
msgstr "قوبۇل قىلىنمايدىغان ئىسپاتنامە"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1023
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1440
#, c-format
msgid "Error reading data from TLS socket: %s"
msgstr "TLS سوكېتىدىن سانلىق-مەلۇمات ئوقۇشتا خاتالىق كۆرۈلدى: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1049
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1469
#, c-format
msgid "Error writing data to TLS socket: %s"
msgstr "TLS سوكېتىغا سانلىق-مەلۇمات يېزىشتا خاتالىق كۆرۈلدى: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1095
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1513
+msgid "Connection is already closed"
+msgstr "باغلىنىش ئاللىقاچان تاقالغان"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1523
#, c-format
msgid "Error performing TLS close: %s"
msgstr "TLS تاقاش مەشغۇلاتىدا خاتالىق كۆرۈلدى: %s"
+
+#: ../tls/gnutls/gtlsserverconnection-gnutls.c:103
+msgid "Certificate has no private key"
+msgstr "گۇۋاھنامىنىڭ شەخسىي ئاچقۇچى يوق ئىكەن"
+
+#: ../tls/pkcs11/gpkcs11pin.c:108
+msgid ""
+"This is the last chance to enter the PIN correctly before the token is "
+"locked."
+msgstr "بۇ سىزنىڭ ئەڭ ئاخىرقى پۇرسىتىڭىز. يەنە خاتالاشسىڭىز قۇلۇپلىنىپ قالىدۇ."
+
+#: ../tls/pkcs11/gpkcs11pin.c:110
+msgid ""
+"Several PIN attempts have been incorrect, and the token will be locked after "
+"further failures."
+msgstr "بىر قانچە قېتىم خاتالاشتىڭىز. يەنە خاتالاشسىڭىز قۇلۇپلىنىپ قالىدۇ."
+
+#: ../tls/pkcs11/gpkcs11pin.c:112
+msgid "The PIN entered is incorrect."
+msgstr "كىرگۈزگەن PIN توغرا ئەمەس."
+
+#: ../tls/pkcs11/gpkcs11slot.c:446
+msgid "Module"
+msgstr "بۆلەك"
+
+#: ../tls/pkcs11/gpkcs11slot.c:447
+msgid "PKCS#11 Module Pointer"
+msgstr "PKCS#11 بۆلەك كۆرسەتكۈچى"
+
+#: ../tls/pkcs11/gpkcs11slot.c:454
+msgid "Slot ID"
+msgstr "ئوقۇر ID"
+
+#: ../tls/pkcs11/gpkcs11slot.c:455
+msgid "PKCS#11 Slot Identifier"
+msgstr "PKCS#11 ئوقۇر كىملىكى"
# Vietnamese translation for glib-networking.
# Copyright (C) 2011 glib-networking's Free Software Foundation, Inc.
# This file is distributed under the same license as the glib-networking package.
-# Nguyễn Thái Ngọc Duy <pclouds@gmail.com>, 2011-2012.
+# Nguyễn Thái Ngọc Duy <pclouds@gmail.com>, 2011-2013.
#
msgid ""
msgstr ""
"Project-Id-Version: glib-networking master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
"product=glib&keywords=I18N+L10N&component=network\n"
-"POT-Creation-Date: 2011-11-19 01:32+0000\n"
-"PO-Revision-Date: 2012-01-06 16:46+0700\n"
+"POT-Creation-Date: 2012-11-29 22:09+0000\n"
+"PO-Revision-Date: 2013-03-02 20:35+0700\n"
"Last-Translator: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n"
"Language-Team: Vietnamese <gnomevi-list@lists.sourceforge.net>\n"
+"Language: vi\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "No certificate data provided"
msgstr "Chưa cung cấp thông tin chứng nhận"
-#: ../tls/gnutls/gtlsclientconnection-gnutls.c:385
+#: ../tls/gnutls/gtlsclientconnection-gnutls.c:309
msgid "Server required TLS certificate"
msgstr "Máy chủ yêu cầu chứng nhận TLS"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:279
+#: ../tls/gnutls/gtlsconnection-gnutls.c:254
#, c-format
msgid "Could not create TLS connection: %s"
msgstr "Không thể tạo kết nối TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:558
+#: ../tls/gnutls/gtlsconnection-gnutls.c:514
+msgid "Connection is closed"
+msgstr "Kết nối đã đóng"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:576
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1382
+msgid "Operation would block"
+msgstr "Thao tác có thể ngăn các thao tác khác"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:703
msgid "Peer failed to perform TLS handshake"
msgstr "Bên kia không thực hiện bắt tay TLS được"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:576
+#: ../tls/gnutls/gtlsconnection-gnutls.c:720
msgid "Peer requested illegal TLS rehandshake"
msgstr "Bên kia yêu cầu bắt tay TLS lại không hợp lệ"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:594
+#: ../tls/gnutls/gtlsconnection-gnutls.c:746
msgid "TLS connection closed unexpectedly"
msgstr "Kết nối TLS kết thúc bất ngờ"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:888
-#: ../tls/gnutls/gtlsconnection-gnutls.c:914
+#: ../tls/gnutls/gtlsconnection-gnutls.c:756
+msgid "TLS connection peer did not send a certificate"
+msgstr "Phía bên kia kết nối TLS không gửi chứng nhận"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1064
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1083
#, c-format
msgid "Error performing TLS handshake: %s"
msgstr "Lỗi thực hiện bắt tay TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:962
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1228
msgid "Unacceptable TLS certificate"
msgstr "Chứng nhận TLS không thể chấp nhận"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1099
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1239
+msgid "Server did not return a valid TLS certificate"
+msgstr "Máy chủ không trả về chứng nhận TLS hợp lệ"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1405
#, c-format
msgid "Error reading data from TLS socket: %s"
msgstr "Lỗi đọc dữ liệu từ kết nối TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1125
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1434
#, c-format
msgid "Error writing data to TLS socket: %s"
msgstr "Lỗi đọc dữ liệu vào kết nối TLS: %s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1171
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1478
+msgid "Connection is already closed"
+msgstr "Kết nối đã đóng rồi"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1488
#, c-format
msgid "Error performing TLS close: %s"
msgstr "Lỗi đóng kết nối TLS: %s"
-#: ../tls/gnutls/gtlsserverconnection-gnutls.c:138
+#: ../tls/gnutls/gtlsserverconnection-gnutls.c:103
msgid "Certificate has no private key"
msgstr "Chứng nhận không có khoá riêng"
# Copyright (C) 2011 glib-networking's COPYRIGHT HOLDER
# This file is distributed under the same license as the glib-networking package.
# Funda Wang <fundawang@gmail.com>, 2011
+# YunQiang Su <wzssyqa@gmail.com>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: glib-networking master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
"product=glib&keywords=I18N+L10N&component=network\n"
-"POT-Creation-Date: 2011-11-19 11:45+0000\n"
-"PO-Revision-Date: 2011-11-19 20:37+0800\n"
-"Last-Translator: Funda Wang <fundawang@gmail.com>\n"
-"Language-Team: Chinese (China) <i18n-zh@googlegroups.com>\n"
+"POT-Creation-Date: 2012-07-18 21:47+0000\n"
+"PO-Revision-Date: 2012-09-23 04:06+0800\n"
+"Last-Translator: YunQiang Su <wzssyqa@gmail.com>\n"
+"Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
+"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
+"Content-Transfer-Encoding: 8bits\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Gtranslator 2.91.5\n"
#: ../proxy/libproxy/glibproxyresolver.c:150
msgid "Proxy resolver internal error."
msgid "No certificate data provided"
msgstr "没有提供证书数据"
-#: ../tls/gnutls/gtlsclientconnection-gnutls.c:385
+#: ../tls/gnutls/gtlsclientconnection-gnutls.c:309
msgid "Server required TLS certificate"
msgstr "服务器需要 TLS 证书"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:279
+#: ../tls/gnutls/gtlsconnection-gnutls.c:248
#, c-format
msgid "Could not create TLS connection: %s"
msgstr "无法创建 TLS 连接:%s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:558
+#: ../tls/gnutls/gtlsconnection-gnutls.c:508
+msgid "Connection is closed"
+msgstr "连接被关闭"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:568
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1371
+msgid "Operation would block"
+msgstr "操作被阻塞"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:695
msgid "Peer failed to perform TLS handshake"
msgstr "执行 TLS 握手失败"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:576
+#: ../tls/gnutls/gtlsconnection-gnutls.c:712
msgid "Peer requested illegal TLS rehandshake"
msgstr "请求了无效的 TLS 再握手"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:594
+#: ../tls/gnutls/gtlsconnection-gnutls.c:738
msgid "TLS connection closed unexpectedly"
msgstr "TLS 连接被异常关闭"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:888
-#: ../tls/gnutls/gtlsconnection-gnutls.c:914
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1049
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1068
#, c-format
msgid "Error performing TLS handshake: %s"
msgstr "执行 TLS 握手时出错:%s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:962
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1204
msgid "Unacceptable TLS certificate"
msgstr "无法接受的 TLS 证书"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1099
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1215
+#| msgid "Server required TLS certificate"
+msgid "Server did not return a valid TLS certificate"
+msgstr "服务器未返回有效的 TLS 证书"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1394
#, c-format
msgid "Error reading data from TLS socket: %s"
msgstr "从 TLS 套接字读取数据时出错:%s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1125
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1423
#, c-format
msgid "Error writing data to TLS socket: %s"
msgstr "向 TLS 套接字写入数据时出错:%s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1171
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1467
+msgid "Connection is already closed"
+msgstr "连接已经关闭"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1477
#, c-format
msgid "Error performing TLS close: %s"
msgstr "执行 TLS 关闭时出错:%s"
-#: ../tls/gnutls/gtlsserverconnection-gnutls.c:138
+#: ../tls/gnutls/gtlsserverconnection-gnutls.c:103
msgid "Certificate has no private key"
msgstr "证书没有私钥"
msgstr ""
"Project-Id-Version: glib-networking 2.31.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-01-29 22:59+0800\n"
-"PO-Revision-Date: 2012-01-29 22:59+0800\n"
+"POT-Creation-Date: 2013-03-01 22:24+0800\n"
+"PO-Revision-Date: 2013-03-01 22:24+0800\n"
"Last-Translator: Chao-Hsiung Liao <j_h_liau@yahoo.com.tw>\n"
"Language-Team: Chinese (Hong Kong) <community@linuxhall.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.5.4\n"
#: ../proxy/libproxy/glibproxyresolver.c:150
msgid "Proxy resolver internal error."
msgid "No certificate data provided"
msgstr "沒有提供證書資料"
-#: ../tls/gnutls/gtlsclientconnection-gnutls.c:349
+#: ../tls/gnutls/gtlsclientconnection-gnutls.c:309
msgid "Server required TLS certificate"
msgstr "伺服器要求的 TLS 證書"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:202
+#: ../tls/gnutls/gtlsconnection-gnutls.c:258
#, c-format
msgid "Could not create TLS connection: %s"
msgstr "無法建立 TLS 連線:%s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:481
+#: ../tls/gnutls/gtlsconnection-gnutls.c:520
+msgid "Connection is closed"
+msgstr "連線已關閉"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:582
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1419
+msgid "Operation would block"
+msgstr "操作會阻擋"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:712
msgid "Peer failed to perform TLS handshake"
msgstr "執行 TLS 交握對等失敗"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:501
+#: ../tls/gnutls/gtlsconnection-gnutls.c:729
msgid "Peer requested illegal TLS rehandshake"
msgstr "對等要求了不合法的 TLS 重交握"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:519
+#: ../tls/gnutls/gtlsconnection-gnutls.c:755
msgid "TLS connection closed unexpectedly"
msgstr "TLS 連線無預警的關閉了"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:814
-#: ../tls/gnutls/gtlsconnection-gnutls.c:840
+#: ../tls/gnutls/gtlsconnection-gnutls.c:765
+msgid "TLS connection peer did not send a certificate"
+msgstr "TLS 連線對等點沒有傳回證書"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1146
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1165
#, c-format
msgid "Error performing TLS handshake: %s"
msgstr "執行 TLS 交握時發生錯誤:%s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:888
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1175
+msgid "Server did not return a valid TLS certificate"
+msgstr "伺服器沒有回傳有效的 TLS 證書"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1250
msgid "Unacceptable TLS certificate"
msgstr "不接受的 TLS 證書"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1027
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1442
#, c-format
msgid "Error reading data from TLS socket: %s"
msgstr "從 TLS socket 讀取資料時發生錯誤:%s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1053
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1471
#, c-format
msgid "Error writing data to TLS socket: %s"
msgstr "當寫入資料到 TLS socket 時發生錯誤:%s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1099
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1515
+msgid "Connection is already closed"
+msgstr "連線已經關閉"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1525
#, c-format
msgid "Error performing TLS close: %s"
msgstr "執行 TLS 關閉時發生錯誤:%s"
msgstr ""
"Project-Id-Version: glib-networking 2.31.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-01-29 22:59+0800\n"
-"PO-Revision-Date: 2012-01-25 10:14+0800\n"
+"POT-Creation-Date: 2013-03-01 22:24+0800\n"
+"PO-Revision-Date: 2013-02-28 09:41+0800\n"
"Last-Translator: Chao-Hsiung Liao <j_h_liau@yahoo.com.tw>\n"
"Language-Team: Chinese (Taiwan) <chinese-l10n@googlegroups.com>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.5.4\n"
#: ../proxy/libproxy/glibproxyresolver.c:150
msgid "Proxy resolver internal error."
msgid "No certificate data provided"
msgstr "沒有提供憑證資料"
-#: ../tls/gnutls/gtlsclientconnection-gnutls.c:349
+#: ../tls/gnutls/gtlsclientconnection-gnutls.c:309
msgid "Server required TLS certificate"
msgstr "伺服器要求的 TLS 憑證"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:202
+#: ../tls/gnutls/gtlsconnection-gnutls.c:258
#, c-format
msgid "Could not create TLS connection: %s"
msgstr "無法建立 TLS 連線:%s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:481
+#: ../tls/gnutls/gtlsconnection-gnutls.c:520
+msgid "Connection is closed"
+msgstr "連線已關閉"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:582
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1419
+msgid "Operation would block"
+msgstr "操作會阻擋"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:712
msgid "Peer failed to perform TLS handshake"
msgstr "執行 TLS 交握對等失敗"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:501
+#: ../tls/gnutls/gtlsconnection-gnutls.c:729
msgid "Peer requested illegal TLS rehandshake"
msgstr "對等要求了不合法的 TLS 重交握"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:519
+#: ../tls/gnutls/gtlsconnection-gnutls.c:755
msgid "TLS connection closed unexpectedly"
msgstr "TLS 連線無預警的關閉了"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:814
-#: ../tls/gnutls/gtlsconnection-gnutls.c:840
+#: ../tls/gnutls/gtlsconnection-gnutls.c:765
+msgid "TLS connection peer did not send a certificate"
+msgstr "TLS 連線對等點沒有傳回憑證"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1146
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1165
#, c-format
msgid "Error performing TLS handshake: %s"
msgstr "執行 TLS 交握時發生錯誤:%s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:888
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1175
+msgid "Server did not return a valid TLS certificate"
+msgstr "伺服器沒有回傳有效的 TLS 憑證"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1250
msgid "Unacceptable TLS certificate"
msgstr "不接受的 TLS 憑證"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1027
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1442
#, c-format
msgid "Error reading data from TLS socket: %s"
msgstr "從 TLS socket 讀取資料時發生錯誤:%s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1053
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1471
#, c-format
msgid "Error writing data to TLS socket: %s"
msgstr "當寫入資料到 TLS socket 時發生錯誤:%s"
-#: ../tls/gnutls/gtlsconnection-gnutls.c:1099
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1515
+msgid "Connection is already closed"
+msgstr "連線已經關閉"
+
+#: ../tls/gnutls/gtlsconnection-gnutls.c:1525
#, c-format
msgid "Error performing TLS close: %s"
msgstr "執行 TLS 關閉時發生錯誤:%s"
-include $(top_srcdir)/Makefile.decl
+include $(top_srcdir)/glib-networking.mk
giomodule_LTLIBRARIES = libgiognomeproxy.la
gnome-proxy-module.c \
$(NULL)
-INCLUDES += $(GSETTINGS_DESKTOP_SCHEMAS_CFLAGS)
+AM_CPPFLAGS += $(GSETTINGS_DESKTOP_SCHEMAS_CFLAGS)
libgiognomeproxy_la_LDFLAGS = $(module_flags)
libgiognomeproxy_la_LIBADD = \
#define GNOME_PROXY_SOCKS_HOST_KEY "host"
#define GNOME_PROXY_SOCKS_PORT_KEY "port"
-typedef struct {
- gchar *name;
- gint length;
- gushort port;
-} GProxyResolverGnomeDomain;
+/* We have to has-a GSimpleProxyResolver rather than is-a one,
+ * because a dynamic type cannot reimplement an interface that
+ * its parent also implements... for some reason.
+ */
struct _GProxyResolverGnome {
GObject parent_instance;
+ GProxyResolver *base_resolver;
+
GSettings *proxy_settings;
GSettings *http_settings;
GSettings *https_settings;
gchar *autoconfig_url;
gboolean use_same_proxy;
- GPtrArray *ignore_ips;
- GProxyResolverGnomeDomain *ignore_domains;
-
- gchar *http_proxy, *https_proxy;
- gchar *ftp_proxy, *socks_authority;
-
GDBusProxy *pacrunner;
GMutex lock;
};
+static GProxyResolverInterface *g_proxy_resolver_gnome_parent_iface;
+
static void g_proxy_resolver_gnome_iface_init (GProxyResolverInterface *iface);
G_DEFINE_DYNAMIC_TYPE_EXTENDED (GProxyResolverGnome,
}
static void
-free_settings (GProxyResolverGnome *resolver)
-{
- int i;
-
- if (resolver->ignore_ips)
- g_ptr_array_free (resolver->ignore_ips, TRUE);
- if (resolver->ignore_domains)
- {
- for (i = 0; resolver->ignore_domains[i].name; i++)
- g_free (resolver->ignore_domains[i].name);
- g_free (resolver->ignore_domains);
- }
-
- g_free (resolver->http_proxy);
- g_free (resolver->https_proxy);
- g_free (resolver->ftp_proxy);
- g_free (resolver->socks_authority);
- g_free (resolver->autoconfig_url);
-}
-
-static void
gsettings_changed (GSettings *settings,
const gchar *key,
gpointer user_data)
(gpointer)gsettings_changed,
resolver);
g_object_unref (resolver->socks_settings);
-
- free_settings (resolver);
}
- if (resolver->pacrunner)
- g_object_unref (resolver->pacrunner);
+ g_clear_object (&resolver->base_resolver);
+ g_clear_object (&resolver->pacrunner);
+
+ g_free (resolver->autoconfig_url);
g_mutex_clear (&resolver->lock);
{
g_mutex_init (&resolver->lock);
+ resolver->base_resolver = g_simple_proxy_resolver_new (NULL, NULL);
+
resolver->proxy_settings = g_settings_new (GNOME_PROXY_SETTINGS_SCHEMA);
g_signal_connect (resolver->proxy_settings, "changed",
G_CALLBACK (gsettings_changed), resolver);
static void
update_settings (GProxyResolverGnome *resolver)
{
+ GSimpleProxyResolver *simple = G_SIMPLE_PROXY_RESOLVER (resolver->base_resolver);
gchar **ignore_hosts;
- gchar *host;
+ gchar *host, *http_proxy, *proxy;
guint port;
- int i;
resolver->need_update = FALSE;
- free_settings (resolver);
+ g_free (resolver->autoconfig_url);
+ g_simple_proxy_resolver_set_default_proxy (simple, NULL);
+ g_simple_proxy_resolver_set_ignore_hosts (simple, NULL);
+ g_simple_proxy_resolver_set_uri_proxy (simple, "http", NULL);
+ g_simple_proxy_resolver_set_uri_proxy (simple, "https", NULL);
+ g_simple_proxy_resolver_set_uri_proxy (simple, "ftp", NULL);
resolver->mode =
g_settings_get_enum (resolver->proxy_settings, GNOME_PROXY_MODE_KEY);
resolver->autoconfig_url =
g_settings_get_string (resolver->proxy_settings, GNOME_PROXY_AUTOCONFIG_URL_KEY);
- resolver->use_same_proxy =
- g_settings_get_boolean (resolver->proxy_settings, GNOME_PROXY_USE_SAME_PROXY_KEY);
- ignore_hosts =
- g_settings_get_strv (resolver->proxy_settings, GNOME_PROXY_IGNORE_HOSTS_KEY);
- if (ignore_hosts && ignore_hosts[0])
+ if (resolver->mode == G_DESKTOP_PROXY_MODE_AUTO && !resolver->pacrunner)
{
- GPtrArray *ignore_ips;
- GArray *ignore_domains;
- gchar *host, *tmp, *colon, *bracket;
- GInetAddress *iaddr;
- GInetAddressMask *mask;
- GProxyResolverGnomeDomain domain;
- gushort port;
-
- ignore_ips = g_ptr_array_new_with_free_func (g_object_unref);
- ignore_domains = g_array_new (TRUE, FALSE, sizeof (GProxyResolverGnomeDomain));
-
- for (i = 0; ignore_hosts[i]; i++)
- {
- host = g_strchomp (ignore_hosts[i]);
-
- /* See if it's an IP address or IP/length mask */
- mask = g_inet_address_mask_new_from_string (host, NULL);
- if (mask)
- {
- g_ptr_array_add (ignore_ips, mask);
- continue;
- }
-
- port = 0;
-
- if (*host == '[')
- {
- /* [IPv6]:port */
- host++;
- bracket = strchr (host, ']');
- if (!bracket || !bracket[1] || bracket[1] != ':')
- goto bad;
-
- port = strtoul (bracket + 2, &tmp, 10);
- if (*tmp)
- goto bad;
-
- *bracket = '\0';
- }
- else
- {
- colon = strchr (host, ':');
- if (colon && !strchr (colon + 1, ':'))
- {
- /* hostname:port or IPv4:port */
- port = strtoul (colon + 1, &tmp, 10);
- if (*tmp)
- goto bad;
- *colon = '\0';
- }
- }
-
- iaddr = g_inet_address_new_from_string (host);
- if (iaddr)
- g_object_unref (iaddr);
- else
- {
- if (g_str_has_prefix (host, "*."))
- host += 2;
- else if (*host == '.')
- host++;
- }
-
- memset (&domain, 0, sizeof (domain));
- domain.name = g_strdup (host);
- domain.length = strlen (domain.name);
- domain.port = port;
- g_array_append_val (ignore_domains, domain);
- continue;
-
- bad:
- g_warning ("Ignoring invalid ignore_hosts value '%s'", host);
- }
-
- if (ignore_ips->len)
- resolver->ignore_ips = ignore_ips;
- else
+ GError *error = NULL;
+ resolver->pacrunner =
+ g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SESSION,
+ G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES |
+ G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS,
+ NULL,
+ "org.gtk.GLib.PACRunner",
+ "/org/gtk/GLib/PACRunner",
+ "org.gtk.GLib.PACRunner",
+ NULL, &error);
+ if (error)
{
- g_ptr_array_free (ignore_ips, TRUE);
- resolver->ignore_ips = NULL;
+ g_warning ("Could not start proxy autoconfiguration helper:"
+ "\n %s\nProxy autoconfiguration will not work",
+ error->message);
}
-
- resolver->ignore_domains = (GProxyResolverGnomeDomain *)
- g_array_free (ignore_domains, ignore_domains->len == 0);
}
- else
+ else if (resolver->mode != G_DESKTOP_PROXY_MODE_AUTO && resolver->pacrunner)
{
- resolver->ignore_ips = NULL;
- resolver->ignore_domains = NULL;
+ g_object_unref (resolver->pacrunner);
+ resolver->pacrunner = NULL;
}
+
+ ignore_hosts =
+ g_settings_get_strv (resolver->proxy_settings, GNOME_PROXY_IGNORE_HOSTS_KEY);
+ g_simple_proxy_resolver_set_ignore_hosts (simple, ignore_hosts);
g_strfreev (ignore_hosts);
+ if (resolver->mode == G_DESKTOP_PROXY_MODE_AUTO)
+ {
+ /* We use the base_resolver to handle ignore_hosts in the AUTO case,
+ * so we have to set a non-"direct://" default proxy so we can distinguish
+ * the two cases.
+ */
+ g_simple_proxy_resolver_set_default_proxy (simple, "use-proxy:");
+ }
+
+ if (resolver->mode != G_DESKTOP_PROXY_MODE_MANUAL)
+ return;
+
host = g_settings_get_string (resolver->http_settings, GNOME_PROXY_HTTP_HOST_KEY);
port = g_settings_get_int (resolver->http_settings, GNOME_PROXY_HTTP_PORT_KEY);
-
if (host && *host)
{
if (g_settings_get_boolean (resolver->http_settings, GNOME_PROXY_HTTP_USE_AUTH_KEY))
enc_password = g_uri_escape_string (password, NULL, TRUE);
g_free (password);
- resolver->http_proxy = g_strdup_printf ("http://%s:%s@%s:%u",
- enc_user, enc_password,
- host, port);
+ http_proxy = g_strdup_printf ("http://%s:%s@%s:%u",
+ enc_user, enc_password,
+ host, port);
g_free (enc_user);
g_free (enc_password);
}
else
- resolver->http_proxy = g_strdup_printf ("http://%s:%u", host, port);
+ http_proxy = g_strdup_printf ("http://%s:%u", host, port);
+
+ g_simple_proxy_resolver_set_uri_proxy (simple, "http", http_proxy);
+ if (g_settings_get_boolean (resolver->proxy_settings, GNOME_PROXY_USE_SAME_PROXY_KEY))
+ g_simple_proxy_resolver_set_default_proxy (simple, http_proxy);
}
+ else
+ http_proxy = NULL;
g_free (host);
host = g_settings_get_string (resolver->https_settings, GNOME_PROXY_HTTPS_HOST_KEY);
port = g_settings_get_int (resolver->https_settings, GNOME_PROXY_HTTPS_PORT_KEY);
if (host && *host)
- resolver->https_proxy = g_strdup_printf ("http://%s:%u", host, port);
- g_free (host);
-
- host = g_settings_get_string (resolver->ftp_settings, GNOME_PROXY_FTP_HOST_KEY);
- port = g_settings_get_int (resolver->ftp_settings, GNOME_PROXY_FTP_PORT_KEY);
- if (host && *host)
- resolver->ftp_proxy = g_strdup_printf ("ftp://%s:%u", host, port);
+ {
+ proxy = g_strdup_printf ("http://%s:%u", host, port);
+ g_simple_proxy_resolver_set_uri_proxy (simple, "https", proxy);
+ g_free (proxy);
+ }
+ else if (http_proxy)
+ g_simple_proxy_resolver_set_uri_proxy (simple, "https", http_proxy);
g_free (host);
host = g_settings_get_string (resolver->socks_settings, GNOME_PROXY_SOCKS_HOST_KEY);
port = g_settings_get_int (resolver->socks_settings, GNOME_PROXY_SOCKS_PORT_KEY);
if (host && *host)
- resolver->socks_authority = g_strdup_printf ("%s:%u", host, port);
+ {
+ proxy = g_strdup_printf ("socks://%s:%u", host, port);
+ g_simple_proxy_resolver_set_default_proxy (simple, proxy);
+ g_free (proxy);
+ }
g_free (host);
- if (resolver->mode == G_DESKTOP_PROXY_MODE_AUTO && !resolver->pacrunner)
+ g_free (http_proxy);
+
+ host = g_settings_get_string (resolver->ftp_settings, GNOME_PROXY_FTP_HOST_KEY);
+ port = g_settings_get_int (resolver->ftp_settings, GNOME_PROXY_FTP_PORT_KEY);
+ if (host && *host)
{
- GError *error = NULL;
- resolver->pacrunner =
- g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SESSION,
- G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES |
- G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS,
- NULL,
- "org.gtk.GLib.PACRunner",
- "/org/gtk/GLib/PACRunner",
- "org.gtk.GLib.PACRunner",
- NULL, &error);
- if (error)
- {
- g_warning ("Could not start proxy autoconfiguration helper:"
- "\n %s\nProxy autoconfiguration will not work",
- error->message);
- }
- }
- else if (resolver->mode != G_DESKTOP_PROXY_MODE_AUTO && resolver->pacrunner)
- {
- g_object_unref (resolver->pacrunner);
- resolver->pacrunner = NULL;
+ proxy = g_strdup_printf ("ftp://%s:%u", host, port);
+ g_simple_proxy_resolver_set_uri_proxy (simple, "ftp", proxy);
+ g_free (proxy);
}
+ g_free (host);
}
static gboolean
g_proxy_resolver_gnome_is_supported (GProxyResolver *object)
{
- GProxyResolverGnome *resolver = G_PROXY_RESOLVER_GNOME (object);
+ const char *session;
+
+ if (g_getenv ("GNOME_DESKTOP_SESSION_ID"))
+ return TRUE;
+
+ session = g_getenv ("DESKTOP_SESSION");
+ if (session == NULL)
+ return FALSE;
+
+ return g_str_has_prefix (session, "gnome") ||
+ strcmp (session, "ubuntu") == 0;
+}
+
+static inline gchar **
+make_proxies (const gchar *proxy)
+{
+ gchar **proxies;
- return resolver->proxy_settings != NULL;
+ proxies = g_new (gchar *, 2);
+ proxies[0] = g_strdup (proxy);
+ proxies[1] = NULL;
+
+ return proxies;
}
+/* Threadsafely determines what to do with @uri; returns %FALSE if an
+ * error occurs, %TRUE and an array of proxies if the mode is NONE or
+ * MANUAL, or if @uri is covered by ignore-hosts, or %TRUE and a
+ * (transfer-full) pacrunner and autoconfig url if the mode is AUTOMATIC.
+ */
static gboolean
-ignore_host (GProxyResolverGnome *resolver,
- const gchar *host,
- gushort port)
+g_proxy_resolver_gnome_lookup_internal (GProxyResolverGnome *resolver,
+ const gchar *uri,
+ gchar ***out_proxies,
+ GDBusProxy **out_pacrunner,
+ gchar **out_autoconfig_url,
+ GCancellable *cancellable,
+ GError **error)
{
- gchar *ascii_host = NULL;
- gboolean ignore = FALSE;
- gint i, length, offset;
+ gchar **proxies = NULL;
- if (resolver->ignore_ips)
- {
- GInetAddress *iaddr;
+ *out_proxies = NULL;
+ *out_pacrunner = NULL;
+ *out_autoconfig_url = NULL;
- iaddr = g_inet_address_new_from_string (host);
- if (iaddr)
- {
- for (i = 0; i < resolver->ignore_ips->len; i++)
- {
- GInetAddressMask *mask = resolver->ignore_ips->pdata[i];
-
- if (g_inet_address_mask_matches (mask, iaddr))
- {
- ignore = TRUE;
- break;
- }
- }
-
- g_object_unref (iaddr);
- if (ignore)
- return TRUE;
- }
- }
+ g_mutex_lock (&resolver->lock);
+ if (resolver->need_update)
+ update_settings (resolver);
- if (g_hostname_is_non_ascii (host))
- host = ascii_host = g_hostname_to_ascii (host);
- length = strlen (host);
+ proxies = g_proxy_resolver_lookup (resolver->base_resolver,
+ uri, cancellable, error);
+ if (!proxies)
+ goto done;
+
+ /* Parent class does ignore-host handling */
+ if (!strcmp (proxies[0], "direct://") && !proxies[1])
+ goto done;
- if (resolver->ignore_domains)
+ if (resolver->pacrunner)
{
- for (i = 0; resolver->ignore_domains[i].length; i++)
- {
- GProxyResolverGnomeDomain *domain = &resolver->ignore_domains[i];
-
- offset = length - domain->length;
- if ((domain->port == 0 || domain->port == port) &&
- (offset == 0 || (offset > 0 && host[offset - 1] == '.')) &&
- (g_ascii_strcasecmp (domain->name, host + offset) == 0))
- {
- ignore = TRUE;
- break;
- }
- }
+ g_clear_pointer (&proxies, g_strfreev);
+ *out_pacrunner = g_object_ref (resolver->pacrunner);
+ *out_autoconfig_url = g_strdup (resolver->autoconfig_url);
+ goto done;
}
- g_free (ascii_host);
- return ignore;
+ done:
+ g_mutex_unlock (&resolver->lock);
+
+ if (proxies)
+ {
+ *out_proxies = proxies;
+ return TRUE;
+ }
+ else if (*out_pacrunner)
+ return TRUE;
+ else
+ return FALSE;
}
static gchar **
GError **error)
{
GProxyResolverGnome *resolver = G_PROXY_RESOLVER_GNOME (proxy_resolver);
- GSocketConnectable *addr = NULL;
- const gchar *scheme = NULL, *host = NULL;
- const gchar *proxy = "direct://";
- gchar **proxies = NULL;
- gushort port;
-
- g_mutex_lock (&resolver->lock);
- if (resolver->need_update)
- update_settings (resolver);
- g_mutex_unlock (&resolver->lock);
-
- if (resolver->mode == G_DESKTOP_PROXY_MODE_NONE)
- goto done;
-
- /* FIXME: use guri when it lands... */
- addr = g_network_address_parse_uri (uri, 0, error);
- if (!addr)
- goto done;
- scheme = g_network_address_get_scheme (G_NETWORK_ADDRESS (addr));
- host = g_network_address_get_hostname (G_NETWORK_ADDRESS (addr));
- port = g_network_address_get_port (G_NETWORK_ADDRESS (addr));
+ GDBusProxy *pacrunner;
+ gchar **proxies, *autoconfig_url;
- if (ignore_host (resolver, host, port))
- goto done;
+ if (!g_proxy_resolver_gnome_lookup_internal (resolver, uri,
+ &proxies, &pacrunner, &autoconfig_url,
+ cancellable, error))
+ return NULL;
- if (resolver->pacrunner)
+ if (pacrunner)
{
GVariant *vproxies;
- vproxies = g_dbus_proxy_call_sync (resolver->pacrunner,
+ vproxies = g_dbus_proxy_call_sync (pacrunner,
"Lookup",
g_variant_new ("(ss)",
- resolver->autoconfig_url,
+ autoconfig_url,
uri),
G_DBUS_CALL_FLAGS_NONE,
-1,
g_variant_get (vproxies, "(^as)", &proxies);
g_variant_unref (vproxies);
}
- }
- else if (resolver->ftp_proxy &&
- (!strcmp (scheme, "ftp") || !strcmp (scheme, "ftps")))
- {
- proxy = resolver->ftp_proxy;
- }
- else if (resolver->https_proxy && !strcmp (scheme, "https"))
- {
- proxy = resolver->https_proxy;
- }
- else if (resolver->http_proxy &&
- (!strcmp (scheme, "http") || !strcmp (scheme, "https")))
- {
- proxy = resolver->http_proxy;
- }
- else if (resolver->socks_authority)
- {
- proxies = g_new0 (gchar *, 4);
- proxies[0] = g_strdup_printf ("socks5://%s", resolver->socks_authority);
- proxies[1] = g_strdup_printf ("socks4a://%s", resolver->socks_authority);
- proxies[2] = g_strdup_printf ("socks4://%s", resolver->socks_authority);
- }
- else if (resolver->use_same_proxy && resolver->http_proxy)
- {
- proxy = resolver->http_proxy;
- }
-
-done:
- if (addr)
- g_object_unref (addr);
+ else
+ proxies = NULL;
- if (!proxies)
- {
- proxies = g_new0 (gchar *, 2);
- proxies[0] = g_strdup (proxy);
+ g_object_unref (pacrunner);
+ g_free (autoconfig_url);
}
+
return proxies;
}
GAsyncResult *result,
gpointer user_data)
{
- GSimpleAsyncResult *simple = user_data;
+ GTask *task = user_data;
GVariant *vproxies;
char **proxies;
GError *error = NULL;
if (vproxies)
{
g_variant_get (vproxies, "(^as)", &proxies);
- g_simple_async_result_set_op_res_gpointer (simple, proxies,
- (GDestroyNotify)g_strfreev);
+ g_task_return_pointer (task, proxies, (GDestroyNotify)g_strfreev);
g_variant_unref (vproxies);
}
else
- {
- g_simple_async_result_set_from_error (simple, error);
- g_error_free (error);
- }
- g_simple_async_result_complete (simple);
- g_object_unref (simple);
+ g_task_return_error (task, error);
+ g_object_unref (task);
}
static void
gpointer user_data)
{
GProxyResolverGnome *resolver = G_PROXY_RESOLVER_GNOME (proxy_resolver);
- GSimpleAsyncResult *simple;
-
- simple = g_simple_async_result_new (G_OBJECT (resolver),
- callback, user_data,
- g_proxy_resolver_gnome_lookup_async);
-
- if (resolver->pacrunner)
- {
- g_dbus_proxy_call (resolver->pacrunner,
- "Lookup",
- g_variant_new ("(ss)",
- resolver->autoconfig_url,
- uri),
- G_DBUS_CALL_FLAGS_NONE,
- -1,
- cancellable,
- got_autoconfig_proxies,
- simple);
- }
- else
- {
- GError *error = NULL;
- char **proxies;
+ GTask *task;
+ char **proxies, *autoconfig_url;
+ GDBusProxy *pacrunner;
+ GError *error = NULL;
- proxies = g_proxy_resolver_gnome_lookup (proxy_resolver, uri,
- cancellable, &error);
- if (proxies)
- {
- g_simple_async_result_set_op_res_gpointer (simple, proxies,
- (GDestroyNotify)g_strfreev);
- }
- else
- {
- g_simple_async_result_set_from_error (simple, error);
- g_error_free (error);
- }
- g_simple_async_result_complete_in_idle (simple);
- g_object_unref (simple);
- }
+ task = g_task_new (resolver, cancellable, callback, user_data);
+
+ if (!g_proxy_resolver_gnome_lookup_internal (resolver, uri,
+ &proxies, &pacrunner, &autoconfig_url,
+ cancellable, &error))
+ {
+ g_task_return_error (task, error);
+ g_object_unref (task);
+ return;
+ }
+ else if (proxies)
+ {
+ g_task_return_pointer (task, proxies, (GDestroyNotify)g_strfreev);
+ g_object_unref (task);
+ return;
+ }
+
+ g_dbus_proxy_call (pacrunner,
+ "Lookup",
+ g_variant_new ("(ss)",
+ autoconfig_url,
+ uri),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ got_autoconfig_proxies,
+ task);
+ g_object_unref (pacrunner);
+ g_free (autoconfig_url);
}
static gchar **
GAsyncResult *result,
GError **error)
{
- GSimpleAsyncResult *simple;
- gchar **proxies;
+ g_return_val_if_fail (g_task_is_valid (result, resolver), NULL);
- g_return_val_if_fail (g_simple_async_result_is_valid (result, G_OBJECT (resolver), g_proxy_resolver_gnome_lookup_async), NULL);
-
- simple = G_SIMPLE_ASYNC_RESULT (result);
-
- if (g_simple_async_result_propagate_error (simple, error))
- return NULL;
-
- proxies = g_simple_async_result_get_op_res_gpointer (simple);
- return g_strdupv (proxies);
+ return g_task_propagate_pointer (G_TASK (result), error);
}
static void
static void
g_proxy_resolver_gnome_iface_init (GProxyResolverInterface *iface)
{
+ g_proxy_resolver_gnome_parent_iface = g_type_interface_peek_parent (iface);
+
iface->is_supported = g_proxy_resolver_gnome_is_supported;
iface->lookup = g_proxy_resolver_gnome_lookup;
iface->lookup_async = g_proxy_resolver_gnome_lookup_async;
-include $(top_srcdir)/Makefile.decl
+include $(top_srcdir)/glib-networking.mk
-INCLUDES += $(LIBPROXY_CFLAGS)
+AM_CPPFLAGS += $(LIBPROXY_CFLAGS)
giomodule_LTLIBRARIES = libgiolibproxy.la
service_DATA = $(service_in_files:.service.in=.service)
EXTRA_DIST += $(service_in_files)
-CLEANFILES = $(service_DATA)
+CLEANFILES += $(service_DATA)
org.gtk.GLib.PACRunner.service: org.gtk.GLib.PACRunner.service.in Makefile
$(AM_V_GEN) sed -e "s|\@libexecdir\@|$(libexecdir)|" $< > $@
g_variant_get (parameters, "(&s&s)", &pac_url, &lookup_url);
- if (!g_ascii_strncasecmp (pac_url, "http", 4))
+ if (!g_ascii_strncasecmp (pac_url, "http", 4) ||
+ !g_ascii_strncasecmp (pac_url, "file:", 5))
{
gchar *libproxy_url = g_strdup_printf ("pac+%s", pac_url);
g_setenv ("http_proxy", libproxy_url, TRUE);
{
int owner_id;
- g_type_init ();
-
/* Unset variables that would make libproxy try to use gconf or ksettings */
g_unsetenv ("GNOME_DESKTOP_SESSION_ID");
g_unsetenv ("DESKTOP_SESSION");
free (proxies);
}
-static gchar **
-get_libproxy_proxies (GLibProxyResolver *resolver,
- const gchar *uri,
- GCancellable *cancellable,
- GError **error)
+static void
+get_libproxy_proxies (GTask *task,
+ gpointer source_object,
+ gpointer task_data,
+ GCancellable *cancellable)
{
+ GLibProxyResolver *resolver = source_object;
+ const gchar *uri = task_data;
+ GError *error = NULL;
gchar **proxies;
- /* FIXME: this is not really cancellable; to do it right we'd
- * need to run this function in a thread pool like GThreadedResolver.
- */
-
- if (g_cancellable_set_error_if_cancelled (cancellable, error))
- return NULL;
+ if (g_task_return_error_if_cancelled (task))
+ return;
proxies = px_proxy_factory_get_proxies (resolver->factory, uri);
- if (!proxies)
+ if (proxies)
+ {
+ /* We always copy to be able to translate "socks" entry into
+ * three entries ("socks5", "socks4a", "socks4").
+ */
+ g_task_return_pointer (task, copy_proxies (proxies), (GDestroyNotify) g_strfreev);
+ free_libproxy_proxies (proxies);
+ }
+ else
{
- g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_FAILED,
+ g_set_error_literal (&error, G_IO_ERROR, G_IO_ERROR_FAILED,
_("Proxy resolver internal error."));
+ g_task_return_error (task, error);
}
-
- return proxies;
}
static gchar **
GCancellable *cancellable,
GError **error)
{
- GLibProxyResolver *resolver;
+ GLibProxyResolver *resolver = G_LIBPROXY_RESOLVER (iresolver);
+ GTask *task;
gchar **proxies;
- g_return_val_if_fail (G_IS_LIBPROXY_RESOLVER (iresolver), NULL);
- g_return_val_if_fail (uri != NULL, NULL);
-
- resolver = G_LIBPROXY_RESOLVER (iresolver);
+ task = g_task_new (resolver, cancellable, NULL, NULL);
+ g_task_set_task_data (task, g_strdup (uri), g_free);
+ g_task_set_return_on_cancel (task, TRUE);
- proxies = get_libproxy_proxies (resolver, uri, cancellable, error);
-
- /* We always copy to be able to translate "socks" entry into
- * three entries ("socks5", "socks4a", "socks4").
- */
- if (proxies)
- {
- gchar **copy;
-
- copy = copy_proxies (proxies);
- free_libproxy_proxies (proxies);
- proxies = copy;
- }
+ g_task_run_in_thread_sync (task, get_libproxy_proxies);
+ proxies = g_task_propagate_pointer (task, error);
+ g_object_unref (task);
return proxies;
}
static void
-_lookup_async (GSimpleAsyncResult *simple,
- GObject *object,
- GCancellable *cancellable)
-{
- GLibProxyResolver *resolver = G_LIBPROXY_RESOLVER (object);
- GError *error = NULL;
- gchar **proxies = NULL;
- gchar *uri;
-
- uri = g_simple_async_result_get_op_res_gpointer (simple);
-
- proxies = get_libproxy_proxies (resolver, uri, cancellable, &error);
-
- if (error)
- {
- g_simple_async_result_set_from_error (simple, error);
- g_error_free (error);
- }
- else
- g_simple_async_result_set_op_res_gpointer (simple, proxies, (GDestroyNotify)free_libproxy_proxies);
-}
-
-static void
g_libproxy_resolver_lookup_async (GProxyResolver *resolver,
const gchar *uri,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data)
{
- GSimpleAsyncResult *simple;
-
- simple = g_simple_async_result_new (G_OBJECT (resolver),
- callback, user_data,
- g_libproxy_resolver_lookup_async);
- g_simple_async_result_set_op_res_gpointer (simple,
- g_strdup (uri),
- (GDestroyNotify) g_free);
- g_simple_async_result_run_in_thread (simple, _lookup_async,
- G_PRIORITY_DEFAULT, cancellable);
- g_object_unref (simple);
+ GTask *task;
+
+ task = g_task_new (resolver, cancellable, callback, user_data);
+ g_task_set_task_data (task, g_strdup (uri), g_free);
+ g_task_set_return_on_cancel (task, TRUE);
+ g_task_run_in_thread (task, get_libproxy_proxies);
+ g_object_unref (task);
}
static gchar **
GAsyncResult *result,
GError **error)
{
- GSimpleAsyncResult *simple;
- gchar **proxies;
-
- g_return_val_if_fail (g_simple_async_result_is_valid (result, G_OBJECT (resolver), g_libproxy_resolver_lookup_async), NULL);
-
- simple = G_SIMPLE_ASYNC_RESULT (result);
-
- if (g_simple_async_result_propagate_error (simple, error))
- return NULL;
+ g_return_val_if_fail (g_task_is_valid (result, resolver), NULL);
- proxies = g_simple_async_result_get_op_res_gpointer (simple);
- return copy_proxies (proxies);
+ return g_task_propagate_pointer (G_TASK (result), error);
}
static void
-include $(top_srcdir)/Makefile.decl
+include $(top_srcdir)/glib-networking.mk
-INCLUDES += \
+AM_CPPFLAGS += \
$(GSETTINGS_DESKTOP_SCHEMAS_CFLAGS) \
-I$(top_srcdir)/proxy \
-DSRCDIR=\""$(srcdir)"\" \
-DTOP_BUILDDIR=\""$(top_builddir)"\"
-noinst_PROGRAMS = $(TEST_PROGS)
-
LDADD = \
$(GLIB_LIBS)
+test_programs =
+
if HAVE_GNOME_PROXY
-TEST_PROGS += gnome
+test_programs += gnome
endif
+
+if HAVE_LIBPROXY
+test_programs += libproxy
+endif
+
+EXTRA_DIST += common.c
--- /dev/null
+/* GProxyResolver tests
+ *
+ * Copyright 2011-2013 Red Hat, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General
+ * Public License along with this library; if not, see
+ * <http://www.gnu.org/licenses/>.
+ */
+
+#include <gio/gio.h>
+
+static void
+test_proxy_uri_common (void)
+{
+ GProxyResolver *resolver;
+ gchar **proxies;
+ GError *error = NULL;
+
+ resolver = g_proxy_resolver_get_default ();
+
+ proxies = g_proxy_resolver_lookup (resolver, "http://one.example.com/",
+ NULL, &error);
+ g_assert_no_error (error);
+ g_assert_cmpint (g_strv_length (proxies), ==, 1);
+ g_assert_cmpstr (proxies[0], ==, "http://proxy.example.com:8080");
+ g_strfreev (proxies);
+
+ proxies = g_proxy_resolver_lookup (resolver, "HTTPS://uppercase.example.com/",
+ NULL, &error);
+ g_assert_no_error (error);
+ g_assert_cmpint (g_strv_length (proxies), ==, 1);
+ g_assert_cmpstr (proxies[0], ==, "http://proxy-s.example.com:7070");
+ g_strfreev (proxies);
+
+ /* Unknown protocols will use the http proxy by default in this configuration. */
+ proxies = g_proxy_resolver_lookup (resolver, "htt://missing-letter.example.com/",
+ NULL, &error);
+ g_assert_no_error (error);
+ g_assert_cmpint (g_strv_length (proxies), ==, 1);
+ g_assert_cmpstr (proxies[0], ==, "http://proxy.example.com:8080");
+ g_strfreev (proxies);
+
+ proxies = g_proxy_resolver_lookup (resolver, "ftps://extra-letter.example.com/",
+ NULL, &error);
+ g_assert_no_error (error);
+ g_assert_cmpint (g_strv_length (proxies), ==, 1);
+ g_assert_cmpstr (proxies[0], ==, "http://proxy.example.com:8080");
+ g_strfreev (proxies);
+
+ proxies = g_proxy_resolver_lookup (resolver, "ftp://five.example.com/",
+ NULL, &error);
+ g_assert_no_error (error);
+ g_assert_cmpint (g_strv_length (proxies), ==, 1);
+ g_assert_cmpstr (proxies[0], ==, "ftp://proxy-f.example.com:6060");
+ g_strfreev (proxies);
+}
+
+static void
+test_proxy_socks_common (void)
+{
+ GProxyResolver *resolver;
+ gchar **proxies;
+ GError *error = NULL;
+
+ resolver = g_proxy_resolver_get_default ();
+
+ proxies = g_proxy_resolver_lookup (resolver, "http://one.example.com/",
+ NULL, &error);
+ g_assert_no_error (error);
+ g_assert_cmpint (g_strv_length (proxies), ==, 3);
+ g_assert_cmpstr (proxies[0], ==, "socks5://proxy.example.com:1234");
+ g_assert_cmpstr (proxies[1], ==, "socks4a://proxy.example.com:1234");
+ g_assert_cmpstr (proxies[2], ==, "socks4://proxy.example.com:1234");
+ g_strfreev (proxies);
+
+ proxies = g_proxy_resolver_lookup (resolver, "wednesday://two.example.com/",
+ NULL, &error);
+ g_assert_no_error (error);
+ g_assert_cmpint (g_strv_length (proxies), ==, 3);
+ g_assert_cmpstr (proxies[0], ==, "socks5://proxy.example.com:1234");
+ g_assert_cmpstr (proxies[1], ==, "socks4a://proxy.example.com:1234");
+ g_assert_cmpstr (proxies[2], ==, "socks4://proxy.example.com:1234");
+ g_strfreev (proxies);
+
+ proxies = g_proxy_resolver_lookup (resolver, "http://127.0.0.1/",
+ NULL, &error);
+ g_assert_no_error (error);
+ g_assert_cmpint (g_strv_length (proxies), ==, 1);
+ g_assert_cmpstr (proxies[0], ==, "direct://");
+ g_strfreev (proxies);
+}
+
+static const char *ignore_hosts[] = {
+ ".bbb.xx",
+ "*.ccc.xx",
+ "ddd.xx",
+ "*.eee.xx:8000",
+ "127.0.0.0/24",
+ "10.0.0.1:8000",
+ "::1",
+ "fe80::/10",
+ NULL
+};
+static const int n_ignore_hosts = G_N_ELEMENTS (ignore_hosts) - 1;
+
+static const struct {
+ const char *uri;
+ const char *proxy;
+ gboolean libproxy_fails;
+} ignore_tests[] = {
+ { "http://aaa.xx/", "http://localhost:8080" },
+ { "http://aaa.xx:8000/", "http://localhost:8080" },
+ { "http://www.aaa.xx/", "http://localhost:8080" },
+ { "http://www.aaa.xx:8000/", "http://localhost:8080" },
+ { "https://aaa.xx/", "http://localhost:8080" },
+ { "http://bbb.xx/", "direct://", TRUE },
+ { "http://www.bbb.xx/", "direct://" },
+ { "http://bbb.xx:8000/", "direct://", TRUE },
+ { "http://www.bbb.xx:8000/", "direct://" },
+ { "https://bbb.xx/", "direct://", TRUE },
+ { "http://nobbb.xx/", "http://localhost:8080" },
+ { "http://www.nobbb.xx/", "http://localhost:8080" },
+ { "http://nobbb.xx:8000/", "http://localhost:8080" },
+ { "http://www.nobbb.xx:8000/", "http://localhost:8080" },
+ { "https://nobbb.xx/", "http://localhost:8080" },
+ { "http://ccc.xx/", "direct://", TRUE },
+ { "http://www.ccc.xx/", "direct://" },
+ { "http://ccc.xx:8000/", "direct://", TRUE },
+ { "http://www.ccc.xx:8000/", "direct://" },
+ { "https://ccc.xx/", "direct://", TRUE },
+ { "http://ddd.xx/", "direct://" },
+ { "http://ddd.xx:8000/", "direct://" },
+ { "http://www.ddd.xx/", "direct://", TRUE },
+ { "http://www.ddd.xx:8000/", "direct://", TRUE },
+ { "https://ddd.xx/", "direct://" },
+ { "http://eee.xx/", "http://localhost:8080", TRUE },
+ { "http://eee.xx:8000/", "direct://", TRUE },
+ { "http://www.eee.xx/", "http://localhost:8080" },
+ { "http://www.eee.xx:8000/", "direct://" },
+ { "https://eee.xx/", "http://localhost:8080", TRUE },
+ { "http://1.2.3.4/", "http://localhost:8080" },
+ { "http://127.0.0.1/", "direct://" },
+ { "http://127.0.0.2/", "direct://" },
+ { "http://127.0.0.255/", "direct://" },
+ { "http://127.0.1.0/", "http://localhost:8080" },
+ { "http://10.0.0.1/", "http://localhost:8080" },
+ { "http://10.0.0.1:8000/", "direct://" },
+ { "http://[::1]/", "direct://", TRUE },
+ { "http://[::1]:80/", "direct://", TRUE },
+ { "http://[::1:1]/", "http://localhost:8080" },
+ { "http://[::1:1]:80/", "http://localhost:8080" },
+ { "http://[fe80::1]/", "direct://", TRUE },
+ { "http://[fe80::1]:80/", "direct://", TRUE },
+ { "http://[fec0::1]/", "http://localhost:8080" },
+ { "http://[fec0::1]:80/", "http://localhost:8080" }
+};
+static const int n_ignore_tests = G_N_ELEMENTS (ignore_tests);
+
+static void
+test_proxy_ignore_common (gboolean is_libproxy)
+{
+ GProxyResolver *resolver;
+ GError *error = NULL;
+ char **proxies;
+ int i;
+
+ resolver = g_proxy_resolver_get_default ();
+
+ for (i = 0; i < n_ignore_tests; i++)
+ {
+ proxies = g_proxy_resolver_lookup (resolver, ignore_tests[i].uri,
+ NULL, &error);
+ g_assert_no_error (error);
+
+ if (is_libproxy && ignore_tests[i].libproxy_fails)
+ g_assert_cmpstr (proxies[0], ==, "http://localhost:8080");
+ else
+ g_assert_cmpstr (proxies[0], ==, ignore_tests[i].proxy);
+
+ g_strfreev (proxies);
+ }
+}
#include <gio/gio.h>
#include <gdesktop-enums.h>
+#include "common.c"
+
#define GNOME_PROXY_SETTINGS_SCHEMA "org.gnome.system.proxy"
#define GNOME_PROXY_MODE_KEY "mode"
#define GNOME_PROXY_AUTOCONFIG_URL_KEY "autoconfig-url"
#define GNOME_PROXY_SOCKS_HOST_KEY "host"
#define GNOME_PROXY_SOCKS_PORT_KEY "port"
-static const char *ignore_hosts[] = {
- ".bbb.xx",
- "*.ccc.xx",
- "ddd.xx",
- "*.eee.xx:8000",
- "127.0.0.0/24",
- "10.0.0.1:8000",
- "::1",
- "fe80::/10"
-};
-static const int n_ignore_hosts = G_N_ELEMENTS (ignore_hosts);
-
-static const struct {
- const char *uri;
- const char *proxy;
-} ignore_tests[] = {
- { "http://aaa.xx/", "http://localhost:8080" },
- { "http://aaa.xx:8000/", "http://localhost:8080" },
- { "http://www.aaa.xx/", "http://localhost:8080" },
- { "http://www.aaa.xx:8000/", "http://localhost:8080" },
- { "https://aaa.xx/", "http://localhost:8080" },
- { "http://bbb.xx/", "direct://" },
- { "http://www.bbb.xx/", "direct://" },
- { "http://bbb.xx:8000/", "direct://" },
- { "http://www.bbb.xx:8000/", "direct://" },
- { "https://bbb.xx/", "direct://" },
- { "http://nobbb.xx/", "http://localhost:8080" },
- { "http://www.nobbb.xx/", "http://localhost:8080" },
- { "http://nobbb.xx:8000/", "http://localhost:8080" },
- { "http://www.nobbb.xx:8000/", "http://localhost:8080" },
- { "https://nobbb.xx/", "http://localhost:8080" },
- { "http://ccc.xx/", "direct://" },
- { "http://www.ccc.xx/", "direct://" },
- { "http://ccc.xx:8000/", "direct://" },
- { "http://www.ccc.xx:8000/", "direct://" },
- { "https://ccc.xx/", "direct://" },
- { "http://ddd.xx/", "direct://" },
- { "http://ddd.xx:8000/", "direct://" },
- { "http://www.ddd.xx/", "direct://" },
- { "http://www.ddd.xx:8000/", "direct://" },
- { "https://ddd.xx/", "direct://" },
- { "http://eee.xx/", "http://localhost:8080" },
- { "http://eee.xx:8000/", "direct://" },
- { "http://www.eee.xx/", "http://localhost:8080" },
- { "http://www.eee.xx:8000/", "direct://" },
- { "https://eee.xx/", "http://localhost:8080" },
- { "http://1.2.3.4/", "http://localhost:8080" },
- { "http://127.0.0.1/", "direct://" },
- { "http://127.0.0.2/", "direct://" },
- { "http://127.0.0.255/", "direct://" },
- { "http://127.0.1.0/", "http://localhost:8080" },
- { "http://10.0.0.1/", "http://localhost:8080" },
- { "http://10.0.0.1:8000/", "direct://" },
- { "http://[::1]/", "direct://" },
- { "http://[::1]:80/", "direct://" },
- { "http://[::1:1]/", "http://localhost:8080" },
- { "http://[::1:1]:80/", "http://localhost:8080" },
- { "http://[fe80::1]/", "direct://" },
- { "http://[fe80::1]:80/", "direct://" },
- { "http://[fec0::1]/", "http://localhost:8080" },
- { "http://[fec0::1]:80/", "http://localhost:8080" }
-};
-static const int n_ignore_tests = G_N_ELEMENTS (ignore_tests);
+static void
+reset_proxy_settings (gpointer fixture,
+ gconstpointer user_data)
+{
+ GSettings *settings, *child;
+
+ settings = g_settings_new (GNOME_PROXY_SETTINGS_SCHEMA);
+ g_settings_reset (settings, GNOME_PROXY_MODE_KEY);
+ g_settings_reset (settings, GNOME_PROXY_USE_SAME_PROXY_KEY);
+
+ child = g_settings_get_child (settings, GNOME_PROXY_HTTP_CHILD_SCHEMA);
+ g_settings_reset (child, GNOME_PROXY_HTTP_HOST_KEY);
+ g_settings_reset (child, GNOME_PROXY_HTTP_PORT_KEY);
+ g_object_unref (child);
+
+ child = g_settings_get_child (settings, GNOME_PROXY_HTTPS_CHILD_SCHEMA);
+ g_settings_reset (child, GNOME_PROXY_HTTPS_HOST_KEY);
+ g_settings_reset (child, GNOME_PROXY_HTTPS_PORT_KEY);
+ g_object_unref (child);
+
+ child = g_settings_get_child (settings, GNOME_PROXY_FTP_CHILD_SCHEMA);
+ g_settings_reset (child, GNOME_PROXY_FTP_HOST_KEY);
+ g_settings_reset (child, GNOME_PROXY_FTP_PORT_KEY);
+ g_object_unref (child);
+
+ child = g_settings_get_child (settings, GNOME_PROXY_SOCKS_CHILD_SCHEMA);
+ g_settings_reset (child, GNOME_PROXY_SOCKS_HOST_KEY);
+ g_settings_reset (child, GNOME_PROXY_SOCKS_PORT_KEY);
+ g_object_unref (child);
+
+ g_object_unref (settings);
+}
+
+static void
+test_proxy_uri (gpointer fixture,
+ gconstpointer user_data)
+{
+ GSettings *settings, *child;
+
+ settings = g_settings_new (GNOME_PROXY_SETTINGS_SCHEMA);
+ g_settings_set_enum (settings, GNOME_PROXY_MODE_KEY, G_DESKTOP_PROXY_MODE_MANUAL);
+ g_settings_set_boolean (settings, GNOME_PROXY_USE_SAME_PROXY_KEY, TRUE);
+
+ child = g_settings_get_child (settings, GNOME_PROXY_HTTP_CHILD_SCHEMA);
+ g_settings_set_string (child, GNOME_PROXY_HTTP_HOST_KEY, "proxy.example.com");
+ g_settings_set_int (child, GNOME_PROXY_HTTP_PORT_KEY, 8080);
+ g_object_unref (child);
+
+ child = g_settings_get_child (settings, GNOME_PROXY_HTTPS_CHILD_SCHEMA);
+ g_settings_set_string (child, GNOME_PROXY_HTTPS_HOST_KEY, "proxy-s.example.com");
+ g_settings_set_int (child, GNOME_PROXY_HTTPS_PORT_KEY, 7070);
+ g_object_unref (child);
+
+ child = g_settings_get_child (settings, GNOME_PROXY_FTP_CHILD_SCHEMA);
+ g_settings_set_string (child, GNOME_PROXY_FTP_HOST_KEY, "proxy-f.example.com");
+ g_settings_set_int (child, GNOME_PROXY_FTP_PORT_KEY, 6060);
+ g_object_unref (child);
+
+ g_object_unref (settings);
+
+ test_proxy_uri_common ();
+}
static void
-test_proxy_ignore (void)
+test_proxy_socks (gpointer fixture,
+ gconstpointer user_data)
+{
+ GSettings *settings, *child;
+ const gchar *ignore_hosts[2] = { "127.0.0.1", NULL };
+
+ settings = g_settings_new (GNOME_PROXY_SETTINGS_SCHEMA);
+ g_settings_set_enum (settings, GNOME_PROXY_MODE_KEY, G_DESKTOP_PROXY_MODE_MANUAL);
+ g_settings_set (settings, GNOME_PROXY_IGNORE_HOSTS_KEY,
+ "@as", g_variant_new_strv (ignore_hosts, -1));
+
+ child = g_settings_get_child (settings, GNOME_PROXY_SOCKS_CHILD_SCHEMA);
+ g_settings_set_string (child, GNOME_PROXY_SOCKS_HOST_KEY, "proxy.example.com");
+ g_settings_set_int (child, GNOME_PROXY_SOCKS_PORT_KEY, 1234);
+ g_object_unref (child);
+ g_object_unref (settings);
+
+ test_proxy_socks_common ();
+}
+
+static void
+test_proxy_ignore (gpointer fixture,
+ gconstpointer user_data)
{
GSettings *settings, *http;
- GProxyResolver *resolver;
- GError *error = NULL;
- char **proxies;
- int i;
settings = g_settings_new (GNOME_PROXY_SETTINGS_SCHEMA);
g_settings_set_enum (settings, GNOME_PROXY_MODE_KEY, G_DESKTOP_PROXY_MODE_MANUAL);
g_settings_set_string (http, GNOME_PROXY_HTTP_HOST_KEY, "localhost");
g_settings_set_int (http, GNOME_PROXY_HTTP_PORT_KEY, 8080);
- resolver = g_proxy_resolver_get_default ();
-
- for (i = 0; i < n_ignore_tests; i++)
- {
- proxies = g_proxy_resolver_lookup (resolver, ignore_tests[i].uri,
- NULL, &error);
- g_assert_no_error (error);
+ g_object_unref (http);
+ g_object_unref (settings);
- g_assert_cmpstr (proxies[0], ==, ignore_tests[i].proxy);
- g_strfreev (proxies);
- }
+ test_proxy_ignore_common (FALSE);
}
int
main (int argc,
char *argv[])
{
- g_type_init ();
g_test_init (&argc, &argv, NULL);
g_setenv ("GIO_EXTRA_MODULES", TOP_BUILDDIR "/proxy/gnome/.libs", TRUE);
g_setenv ("GIO_USE_PROXY_RESOLVER", "gnome", TRUE);
g_setenv ("GSETTINGS_BACKEND", "memory", TRUE);
-
- g_test_add_func ("/proxy/gnome/ignore", test_proxy_ignore);
+ g_setenv ("DESKTOP_SESSION", "gnome", TRUE);
+
+ g_test_add_vtable ("/proxy/gnome/uri", 0, NULL,
+ reset_proxy_settings, test_proxy_uri, NULL);
+ g_test_add_vtable ("/proxy/gnome/socks", 0, NULL,
+ reset_proxy_settings, test_proxy_socks, NULL);
+ g_test_add_vtable ("/proxy/gnome/ignore", 0, NULL,
+ reset_proxy_settings, test_proxy_ignore, NULL);
return g_test_run();
}
--- /dev/null
+/* GLibProxyResolver tests
+ *
+ * Copyright 2011-2013 Red Hat, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General
+ * Public License along with this library; if not, see
+ * <http://www.gnu.org/licenses/>.
+ */
+
+#include <gio/gio.h>
+
+#include "common.c"
+
+static void
+reset_proxy_settings (gpointer fixture,
+ gconstpointer user_data)
+{
+ g_unsetenv ("http_proxy");
+ g_unsetenv ("HTTP_PROXY");
+ g_unsetenv ("https_proxy");
+ g_unsetenv ("HTTPS_PROXY");
+ g_unsetenv ("ftp_proxy");
+ g_unsetenv ("FTP_PROXY");
+ g_unsetenv ("no_proxy");
+ g_unsetenv ("NO_PROXY");
+}
+
+static void
+test_proxy_uri (gpointer fixture,
+ gconstpointer user_data)
+{
+ g_setenv ("http_proxy", "http://proxy.example.com:8080", TRUE);
+ g_setenv ("https_proxy", "http://proxy-s.example.com:7070", TRUE);
+ g_setenv ("ftp_proxy", "ftp://proxy-f.example.com:6060", TRUE);
+
+ test_proxy_uri_common ();
+}
+
+static void
+test_proxy_socks (gpointer fixture,
+ gconstpointer user_data)
+{
+ g_setenv ("http_proxy", "socks://proxy.example.com:1234", TRUE);
+ g_setenv ("no_proxy", "127.0.0.1", TRUE);
+
+ test_proxy_socks_common ();
+}
+
+static void
+test_proxy_ignore (gpointer fixture,
+ gconstpointer user_data)
+{
+ gchar *no_proxy = g_strjoinv (",", (gchar **) ignore_hosts);
+
+ g_setenv ("http_proxy", "http://localhost:8080", TRUE);
+ g_setenv ("no_proxy", no_proxy, TRUE);
+ g_free (no_proxy);
+
+ test_proxy_ignore_common (TRUE);
+}
+
+int
+main (int argc,
+ char *argv[])
+{
+ g_test_init (&argc, &argv, NULL);
+
+ /* Unset variables that would make libproxy try to use gconf or ksettings */
+ g_unsetenv ("GNOME_DESKTOP_SESSION_ID");
+ g_unsetenv ("DESKTOP_SESSION");
+ g_unsetenv ("KDE_FULL_SESSION");
+
+ /* Use the just-built libproxy module */
+ g_setenv ("GIO_EXTRA_MODULES", TOP_BUILDDIR "/proxy/libproxy/.libs", TRUE);
+
+ g_test_add_vtable ("/proxy/libproxy/uri", 0, NULL,
+ reset_proxy_settings, test_proxy_uri, NULL);
+ g_test_add_vtable ("/proxy/libproxy/socks", 0, NULL,
+ reset_proxy_settings, test_proxy_socks, NULL);
+ g_test_add_vtable ("/proxy/libproxy/ignore", 0, NULL,
+ reset_proxy_settings, test_proxy_ignore, NULL);
+
+ return g_test_run();
+}
-include $(top_srcdir)/Makefile.decl
+include $(top_srcdir)/glib-networking.mk
giomodule_LTLIBRARIES = libgiognutls.la
$(P11_SRCS) \
$(NULL)
-INCLUDES += \
+AM_CPPFLAGS += \
$(P11_CFLAGS) \
- $(LIBGNUTLS_CFLAGS) \
+ $(GNUTLS_CFLAGS) \
$(NULL)
libgiognutls_la_LDFLAGS = $(module_flags)
#define ENABLE_TIZEN_NPN 1
+#if ENABLE(TIZEN_TV_DLOG)
+
+#ifndef LOG_TAG
+#define LOG_TAG "glib-networking" /* This LOG_TAG should be defined before including dlog.h. Because dlog.h is using it. */
+#endif
+
+#include <dlog/dlog.h>
+
+#define TIZEN_LOGD(fmt, args...) LOGD("[%s: %s: %d] "fmt, (rindex(__FILE__, '/') ? rindex(__FILE__, '/') + 1 : __FILE__), __FUNCTION__, __LINE__, ##args)
+#define TIZEN_LOGI(fmt, args...) LOGI("[%s: %s: %d] "fmt, (rindex(__FILE__, '/') ? rindex(__FILE__, '/') + 1 : __FILE__), __FUNCTION__, __LINE__, ##args)
+#define TIZEN_LOGW(fmt, args...) LOGW("[%s: %s: %d] "fmt, (rindex(__FILE__, '/') ? rindex(__FILE__, '/') + 1 : __FILE__), __FUNCTION__, __LINE__, ##args)
+#define TIZEN_LOGE(fmt, args...) LOGE("[%s: %s: %d] "fmt, (rindex(__FILE__, '/') ? rindex(__FILE__, '/') + 1 : __FILE__), __FUNCTION__, __LINE__, ##args)
+#define TIZEN_LOGE_IF(cond, fmt, args...) LOGE_IF(cond, "[%s: %s: %d] "fmt, (rindex(__FILE__, '/') ? rindex(__FILE__, '/') + 1 : __FILE__), __FUNCTION__, __LINE__, ##args)
+
+#endif
+
#endif
}
static GHashTable *
-get_session_cache (gnutls_connection_end_t type,
+get_session_cache (unsigned int type,
gboolean create)
{
GHashTable **cache_p;
}
void
-g_tls_backend_gnutls_store_session (gnutls_connection_end_t type,
+g_tls_backend_gnutls_store_session (unsigned int type,
GBytes *session_id,
GBytes *session_data)
{
}
void
-g_tls_backend_gnutls_remove_session (gnutls_connection_end_t type,
+g_tls_backend_gnutls_remove_session (unsigned int type,
GBytes *session_id)
{
GHashTable *cache;
}
GBytes *
-g_tls_backend_gnutls_lookup_session (gnutls_connection_end_t type,
+g_tls_backend_gnutls_lookup_session (unsigned int type,
GBytes *session_id)
{
GTlsBackendGnutlsCacheData *cache_data;
GType g_tls_backend_gnutls_get_type (void) G_GNUC_CONST;
void g_tls_backend_gnutls_register (GIOModule *module);
-void g_tls_backend_gnutls_store_session (gnutls_connection_end_t type,
+void g_tls_backend_gnutls_store_session (unsigned int type,
GBytes *session_id,
GBytes *session_data);
-void g_tls_backend_gnutls_remove_session (gnutls_connection_end_t type,
+void g_tls_backend_gnutls_remove_session (unsigned int type,
GBytes *session_id);
-GBytes *g_tls_backend_gnutls_lookup_session (gnutls_connection_end_t type,
+GBytes *g_tls_backend_gnutls_lookup_session (unsigned int type,
GBytes *session_id);
G_END_DECLS
#include "gtlscertificate-gnutls.h"
#include <glib/gi18n-lib.h>
+#include "TIZEN.h"
static void g_tls_certificate_gnutls_initable_iface_init (GInitableIface *iface);
gnutls_x509_crt_t *chain;
GTlsCertificateFlags gtls_flags;
time_t t, now;
+#if ENABLE(TIZEN_TV_DLOG)
+ char timebuf[256];
+#endif
+
cert_gnutls = G_TLS_CERTIFICATE_GNUTLS (cert);
for (num_certs = 0; cert_gnutls; cert_gnutls = cert_gnutls->priv->issuer)
for (i = 0; i < num_certs; i++)
{
t = gnutls_x509_crt_get_activation_time (chain[i]);
+
+#if ENABLE(TIZEN_TV_DLOG)
+ ctime_r(&now, timebuf);
+ TIZEN_LOGI("[Certificate] TV borad time is: %s", timebuf);
+ if (t != (time_t) -1) {
+ ctime_r(&t, timebuf);
+ TIZEN_LOGI("[Certificate] CA activation time is: %s", timebuf);
+ }
+ else
+ TIZEN_LOGI("[Certificate] gnutls_x509_crt_get_activation_time ERROR");
+#endif
+
if (t == (time_t) -1 || t > now)
gtls_flags |= G_TLS_CERTIFICATE_NOT_ACTIVATED;
t = gnutls_x509_crt_get_expiration_time (chain[i]);
+
+#if ENABLE(TIZEN_TV_DLOG)
+ if (t != (time_t) -1) {
+ ctime_r(&t, timebuf);
+ TIZEN_LOGI("[Certificate] CA expiration time is: %s", timebuf);
+ }
+ else
+ TIZEN_LOGI("[Certificate] gnutls_x509_crt_get_expiration_time ERROR");
+#endif
+
if (t == (time_t) -1 || t < now)
gtls_flags |= G_TLS_CERTIFICATE_EXPIRED;
}
gnutls_retr2_st *st)
{
gnutls_x509_crt_t cert;
- gnutls_datum data;
+ gnutls_datum_t data;
size_t size = 0;
gnutls_x509_crt_export (gnutls->priv->cert, GNUTLS_X509_FMT_DER,
}
GTlsCertificate *
-g_tls_certificate_gnutls_new (const gnutls_datum *datum,
- GTlsCertificate *issuer)
+g_tls_certificate_gnutls_new (const gnutls_datum_t *datum,
+ GTlsCertificate *issuer)
{
GTlsCertificateGnutls *gnutls;
void
g_tls_certificate_gnutls_set_data (GTlsCertificateGnutls *gnutls,
- const gnutls_datum *datum)
+ const gnutls_datum_t *datum)
{
g_return_if_fail (G_IS_TLS_CERTIFICATE_GNUTLS (gnutls));
g_return_if_fail (!gnutls->priv->have_cert);
/* FIXME: check sRVName and uniformResourceIdentifier
* subjectAltNames, if appropriate for @identity.
*/
+#if ENABLE(TIZEN_TV_DLOG)
+ TIZEN_LOGI("[Network] SSL HandShake - Bad Identity");
+#endif
return G_TLS_CERTIFICATE_BAD_IDENTITY;
}
gnutls->priv->issuer = issuer;
g_object_notify (G_OBJECT (gnutls), "issuer");
}
+
+GBytes *
+g_tls_certificate_gnutls_get_bytes (GTlsCertificateGnutls *gnutls)
+{
+ GByteArray *array;
+
+ g_return_val_if_fail (G_IS_TLS_CERTIFICATE_GNUTLS (gnutls), NULL);
+
+ g_object_get (gnutls, "certificate", &array, NULL);
+ return g_byte_array_free_to_bytes (array);
+}
GType g_tls_certificate_gnutls_get_type (void) G_GNUC_CONST;
-GTlsCertificate * g_tls_certificate_gnutls_new (const gnutls_datum *datum,
+GTlsCertificate * g_tls_certificate_gnutls_new (const gnutls_datum_t *datum,
GTlsCertificate *issuer);
+GBytes * g_tls_certificate_gnutls_get_bytes (GTlsCertificateGnutls *gnutls);
+
void g_tls_certificate_gnutls_set_data (GTlsCertificateGnutls *gnutls,
- const gnutls_datum *datum);
+ const gnutls_datum_t *datum);
const gnutls_x509_crt_t g_tls_certificate_gnutls_get_cert (GTlsCertificateGnutls *gnutls);
gboolean g_tls_certificate_gnutls_has_key (GTlsCertificateGnutls *gnutls);
#include "gtlsbackend-gnutls.h"
#include "gtlscertificate-gnutls.h"
#include <glib/gi18n-lib.h>
-#include <TIZEN.h>
enum
{
GTlsClientConnectionGnutls *gnutls = G_TLS_CLIENT_CONNECTION_GNUTLS (conn);
/* Try to get a cached session */
-#if ENABLE(TIZEN_NPN)
- if (gnutls->priv->session_id && !g_tls_connection_gnutls_is_npn_set (conn))
-#else
if (gnutls->priv->session_id)
-#endif
{
GBytes *session_data;
gnutls->priv->cert_requested = FALSE;
}
-static gboolean
-g_tls_client_connection_gnutls_verify_peer (GTlsConnectionGnutls *conn_gnutls,
- GTlsCertificate *peer_certificate,
- GTlsCertificateFlags *errors)
-{
- GTlsClientConnectionGnutls *gnutls = G_TLS_CLIENT_CONNECTION_GNUTLS (conn_gnutls);
- GTlsDatabase *database;
- gboolean accepted;
- GError *error = NULL;
-
- database = g_tls_connection_get_database (G_TLS_CONNECTION (conn_gnutls));
- if (database == NULL)
- {
- *errors |= G_TLS_CERTIFICATE_UNKNOWN_CA;
- *errors |= g_tls_certificate_verify (peer_certificate, gnutls->priv->server_identity, NULL);
- }
- else
- {
- *errors |= g_tls_database_verify_chain (database, peer_certificate,
- G_TLS_DATABASE_PURPOSE_AUTHENTICATE_SERVER,
- gnutls->priv->server_identity,
- g_tls_connection_get_interaction (G_TLS_CONNECTION (gnutls)),
- G_TLS_DATABASE_VERIFY_NONE,
- NULL, &error);
- if (error)
- {
- g_warning ("failure verifying certificate chain: %s",
- error->message);
- g_clear_error (&error);
- }
- }
-
- if (*errors & gnutls->priv->validation_flags)
- accepted = g_tls_connection_emit_accept_certificate (G_TLS_CONNECTION (gnutls), peer_certificate, *errors);
- else
- accepted = TRUE;
-
- return accepted;
-}
-
-#if ENABLE(TIZEN_NPN)
-/* Following two functions MUST be declared.
- * Because glib2.0 already has following functions named set_next_protocols/get_next_protocol. */
-/*
- available protocols as it is on Dec. 2012:
- http/1.1
- spdy/2
- spdy/3
-*/
-#define __PROTOCOL_NAME_MAXLEN 8 /* http/1.1 */
-
-static gboolean
-_is_spdy (GTlsConnectionGnutls *conn)
-{
- int gnutls_ret;
- size_t size;
- gchar buf[__PROTOCOL_NAME_MAXLEN];
-
- size = __PROTOCOL_NAME_MAXLEN;
- gnutls_ret = gnutls_get_next_protocol (g_tls_connection_gnutls_get_session (conn), buf, &size, NULL);
- if (!gnutls_ret)
- {
- if (!strncmp (buf, "spdy", 4))
- return TRUE;
- }
-
- return FALSE;
-}
-#endif
-
static void
g_tls_client_connection_gnutls_finish_handshake (GTlsConnectionGnutls *conn,
- gboolean success,
GError **inout_error)
{
GTlsClientConnectionGnutls *gnutls = G_TLS_CLIENT_CONNECTION_GNUTLS (conn);
- if (inout_error &&
- g_error_matches (*inout_error, G_TLS_ERROR, G_TLS_ERROR_NOT_TLS) &&
+ g_assert (inout_error != NULL);
+
+ if (g_error_matches (*inout_error, G_TLS_ERROR, G_TLS_ERROR_NOT_TLS) &&
gnutls->priv->cert_requested)
{
g_clear_error (inout_error);
_("Server required TLS certificate"));
}
-#if ENABLE(TIZEN_NPN)
- if (gnutls->priv->session_id && !_is_spdy (conn))
-#else
if (gnutls->priv->session_id)
-#endif
{
- gnutls_datum session_datum;
+ gnutls_datum_t session_datum;
- if (success &&
+ if (!*inout_error &&
gnutls_session_get_data2 (g_tls_connection_gnutls_get_session (conn),
&session_datum) == 0)
{
connection_gnutls_class->failed = g_tls_client_connection_gnutls_failed;
connection_gnutls_class->begin_handshake = g_tls_client_connection_gnutls_begin_handshake;
- connection_gnutls_class->verify_peer = g_tls_client_connection_gnutls_verify_peer;
connection_gnutls_class->finish_handshake = g_tls_client_connection_gnutls_finish_handshake;
g_object_class_override_property (gobject_class, PROP_VALIDATION_FLAGS, "validation-flags");
#endif
#include <glib/gi18n-lib.h>
-#include <TIZEN.h>
+
+#include "TIZEN.h"
+
+#if ENABLE(TIZEN_PERFORMANCE_TEST_LOG)
+#include <sys/prctl.h>
+#ifndef PR_TASK_PERF_USER_TRACE
+#define PR_TASK_PERF_USER_TRACE 666
+#endif
+#define HWCLOCK_LOG(s) {const char *str=s; prctl(PR_TASK_PERF_USER_TRACE, str, strlen(str));}
+#endif
static ssize_t g_tls_connection_gnutls_push_func (gnutls_transport_ptr_t transport_data,
const void *buf,
static void g_tls_connection_gnutls_init_priorities (void);
+static gboolean do_implicit_handshake (GTlsConnectionGnutls *gnutls,
+ gboolean blocking,
+ GCancellable *cancellable,
+ GError **error);
+static gboolean finish_handshake (GTlsConnectionGnutls *gnutls,
+ GTask *thread_task,
+ GError **error);
+
G_DEFINE_ABSTRACT_TYPE_WITH_CODE (GTlsConnectionGnutls, g_tls_connection_gnutls, G_TYPE_TLS_CONNECTION,
G_IMPLEMENT_INTERFACE (G_TYPE_INITABLE,
g_tls_connection_gnutls_initable_iface_init);
GPollableInputStream *base_istream;
GPollableOutputStream *base_ostream;
- gnutls_certificate_credentials creds;
- gnutls_session session;
+ gnutls_certificate_credentials_t creds;
+ gnutls_session_t session;
GTlsCertificate *certificate, *peer_certificate;
GTlsCertificateFlags peer_certificate_errors;
+ GTlsCertificate *peer_certificate_tmp;
+ GTlsCertificateFlags peer_certificate_errors_tmp;
+
gboolean require_close_notify;
GTlsRehandshakeMode rehandshake_mode;
gboolean is_system_certdb;
GTlsDatabase *database;
gboolean database_is_unset;
- gboolean need_handshake, handshaking, ever_handshaked;
- gboolean closing;
+
+ /* need_handshake means the next claim_op() will get diverted into
+ * an implicit handshake (unless it's an OP_HANDSHAKE or OP_CLOSE).
+ * need_finish_handshake means the next claim_op() will get diverted
+ * into finish_handshake() (unless it's an OP_CLOSE).
+ *
+ * handshaking is TRUE as soon as a handshake thread is queued. For
+ * a sync handshake it becomes FALSE after finish_handshake()
+ * completes in the calling thread, but for an async implicit
+ * handshake, it becomes FALSE (and need_finish_handshake becomes
+ * TRUE) at the end of the handshaking thread (and then the next
+ * non-close op will call finish_handshake()). We can't just wait
+ * for handshake_thread_completed() to run, because it's possible
+ * that its main loop is being blocked by a synchronous op which is
+ * waiting for handshaking to become FALSE...
+ *
+ * started_handshake indicates that the current handshake attempt
+ * got at least as far as calling gnutls_handshake() (and so any
+ * error should be copied to handshake_error and returned on all
+ * future operations). ever_handshaked indicates that TLS has
+ * been successfully negotiated at some point.
+ */
+ gboolean need_handshake, need_finish_handshake;
+ gboolean started_handshake, handshaking, ever_handshaked;
+ GTask *implicit_handshake;
+ GError *handshake_error;
+ GByteArray *app_data_buf;
+
+ gboolean closing, closed;
GInputStream *tls_istream;
GOutputStream *tls_ostream;
GTlsInteraction *interaction;
gchar *interaction_id;
- GError *error;
- GCancellable *cancellable;
- gboolean blocking;
+ GMutex op_mutex;
+ GCancellable *waiting_for_op;
+
+ gboolean reading;
+ gboolean read_blocking;
+ GError *read_error;
+ GCancellable *read_cancellable;
+
+ gboolean writing;
+ gboolean write_blocking;
+ GError *write_error;
+ GCancellable *write_cancellable;
+
#ifndef GNUTLS_E_PREMATURE_TERMINATION
gboolean eof;
#endif
- GIOCondition internal_direction;
-#if ENABLE(TIZEN_NPN)
- gboolean is_npn_set;
-#endif
};
static gint unique_interaction_id = 0;
p11_kit_pin_register_callback (gnutls->priv->interaction_id,
on_pin_prompt_callback, gnutls, NULL);
#endif
+
+ gnutls->priv->waiting_for_op = g_cancellable_new ();
+ g_cancellable_cancel (gnutls->priv->waiting_for_op);
+ g_mutex_init (&gnutls->priv->op_mutex);
}
+/* First field is "ssl3 only", second is "allow unsafe rehandshaking" */
static gnutls_priority_t priorities[2][2];
+#if ENABLE(TIZEN_TV_UPDATE_DEFAULT_PRIORITY)
+#define DEFAULT_BASE_PRIORITY "NORMAL:%COMPAT:%LATEST_RECORD_VERSION"
+#endif
+
static void
g_tls_connection_gnutls_init_priorities (void)
{
- /* First field is "ssl3 only", second is "allow unsafe rehandshaking" */
-#if ENABLE(TIZEN_TLS11_AND_TLS12_SUPPORT_DISABLE)
- gnutls_priority_init (&priorities[FALSE][FALSE],
- "NORMAL:%COMPAT:!VERS-TLS1.2:!VERS-TLS1.1",
- NULL);
+ const gchar *base_priority;
+ gchar *ssl3_priority, *unsafe_rehandshake_priority, *ssl3_unsafe_rehandshake_priority;
+ int ret;
+
+ base_priority = g_getenv ("G_TLS_GNUTLS_PRIORITY");
+ if (!base_priority)
+ base_priority = "NORMAL:%COMPAT";
+#if ENABLE(TIZEN_TV_UPDATE_DEFAULT_PRIORITY)
+ ret = gnutls_priority_init (&priorities[FALSE][FALSE], DEFAULT_BASE_PRIORITY, NULL);
#else
- gnutls_priority_init (&priorities[FALSE][FALSE],
- "NORMAL:%COMPAT",
- NULL);
+ ret = gnutls_priority_init (&priorities[FALSE][FALSE], base_priority, NULL);
#endif
- gnutls_priority_init (&priorities[TRUE][FALSE],
- "NORMAL:%COMPAT:!VERS-TLS1.2:!VERS-TLS1.1:!VERS-TLS1.0",
- NULL);
-#if ENABLE(TIZEN_TLS11_AND_TLS12_SUPPORT_DISABLE)
- gnutls_priority_init (&priorities[FALSE][TRUE],
- "NORMAL:%COMPAT:!VERS-TLS1.2:!VERS-TLS1.1:%UNSAFE_RENEGOTIATION",
- NULL);
+ if (ret == GNUTLS_E_INVALID_REQUEST)
+ {
+ g_warning ("G_TLS_GNUTLS_PRIORITY is invalid; ignoring!");
+ base_priority = "NORMAL:%COMPAT";
+#if ENABLE(TIZEN_TV_UPDATE_DEFAULT_PRIORITY)
+ gnutls_priority_init (&priorities[FALSE][FALSE], DEFAULT_BASE_PRIORITY, NULL);
#else
- gnutls_priority_init (&priorities[FALSE][TRUE],
- "NORMAL:%COMPAT:%UNSAFE_RENEGOTIATION",
- NULL);
+ gnutls_priority_init (&priorities[FALSE][FALSE], base_priority, NULL);
#endif
- gnutls_priority_init (&priorities[TRUE][TRUE],
- "NORMAL:%COMPAT:!VERS-TLS1.2:!VERS-TLS1.1:!VERS-TLS1.0:%UNSAFE_RENEGOTIATION",
- NULL);
+ }
+
+ ssl3_priority = g_strdup_printf ("%s:!VERS-TLS1.2:!VERS-TLS1.1:!VERS-TLS1.0", base_priority);
+ unsafe_rehandshake_priority = g_strdup_printf ("%s:%%UNSAFE_RENEGOTIATION", base_priority);
+ ssl3_unsafe_rehandshake_priority = g_strdup_printf ("%s:!VERS-TLS1.2:!VERS-TLS1.1:!VERS-TLS1.0:%%UNSAFE_RENEGOTIATION", base_priority);
+
+ gnutls_priority_init (&priorities[TRUE][FALSE], ssl3_priority, NULL);
+ gnutls_priority_init (&priorities[FALSE][TRUE], unsafe_rehandshake_priority, NULL);
+ gnutls_priority_init (&priorities[TRUE][TRUE], ssl3_unsafe_rehandshake_priority, NULL);
+
+ g_free (ssl3_priority);
+ g_free (unsafe_rehandshake_priority);
+ g_free (ssl3_unsafe_rehandshake_priority);
}
static void
static void
g_tls_connection_gnutls_finalize (GObject *object)
{
- GTlsConnectionGnutls *connection = G_TLS_CONNECTION_GNUTLS (object);
-
- if (connection->priv->base_io_stream)
- g_object_unref (connection->priv->base_io_stream);
-
- if (connection->priv->session)
- gnutls_deinit (connection->priv->session);
+ GTlsConnectionGnutls *gnutls = G_TLS_CONNECTION_GNUTLS (object);
- if (connection->priv->tls_istream)
- g_object_unref (connection->priv->tls_istream);
- if (connection->priv->tls_ostream)
- g_object_unref (connection->priv->tls_ostream);
+ g_clear_object (&gnutls->priv->base_io_stream);
- if (connection->priv->creds)
- gnutls_certificate_free_credentials (connection->priv->creds);
+ g_clear_object (&gnutls->priv->tls_istream);
+ g_clear_object (&gnutls->priv->tls_ostream);
- if (connection->priv->database)
- g_object_unref (connection->priv->database);
- if (connection->priv->certificate)
- g_object_unref (connection->priv->certificate);
- if (connection->priv->peer_certificate)
- g_object_unref (connection->priv->peer_certificate);
+ if (gnutls->priv->session)
+ gnutls_deinit (gnutls->priv->session);
+ if (gnutls->priv->creds)
+ gnutls_certificate_free_credentials (gnutls->priv->creds);
- g_clear_object (&connection->priv->interaction);
+ g_clear_object (&gnutls->priv->database);
+ g_clear_object (&gnutls->priv->certificate);
+ g_clear_object (&gnutls->priv->peer_certificate);
+ g_clear_object (&gnutls->priv->peer_certificate_tmp);
- if (connection->priv->error)
- g_error_free (connection->priv->error);
+ g_clear_pointer (&gnutls->priv->app_data_buf, g_byte_array_unref);
#ifdef HAVE_PKCS11
- p11_kit_pin_unregister_callback (connection->priv->interaction_id,
- on_pin_prompt_callback, connection);
+ p11_kit_pin_unregister_callback (gnutls->priv->interaction_id,
+ on_pin_prompt_callback, gnutls);
#endif
- g_free (connection->priv->interaction_id);
+ g_free (gnutls->priv->interaction_id);
+ g_clear_object (&gnutls->priv->interaction);
+
+ g_clear_error (&gnutls->priv->handshake_error);
+ g_clear_error (&gnutls->priv->read_error);
+ g_clear_error (&gnutls->priv->write_error);
+
+ g_clear_object (&gnutls->priv->waiting_for_op);
+ g_mutex_clear (&gnutls->priv->op_mutex);
G_OBJECT_CLASS (g_tls_connection_gnutls_parent_class)->finalize (object);
}
gnutls->priv->database = g_tls_backend_get_default_database (backend);
}
gnutls->priv->is_system_certdb = system_certdb;
+ gnutls->priv->database_is_unset = FALSE;
}
break;
}
}
-gnutls_certificate_credentials
+gnutls_certificate_credentials_t
g_tls_connection_gnutls_get_credentials (GTlsConnectionGnutls *gnutls)
{
return gnutls->priv->creds;
}
-gnutls_session
+gnutls_session_t
g_tls_connection_gnutls_get_session (GTlsConnectionGnutls *gnutls)
{
/* Ideally we would initialize gnutls->priv->session from
gnutls->priv->interaction_id, st);
}
+typedef enum {
+ G_TLS_CONNECTION_GNUTLS_OP_HANDSHAKE,
+ G_TLS_CONNECTION_GNUTLS_OP_READ,
+ G_TLS_CONNECTION_GNUTLS_OP_WRITE,
+ G_TLS_CONNECTION_GNUTLS_OP_CLOSE,
+} GTlsConnectionGnutlsOp;
+
+static gboolean
+claim_op (GTlsConnectionGnutls *gnutls,
+ GTlsConnectionGnutlsOp op,
+ gboolean blocking,
+ GCancellable *cancellable,
+ GError **error)
+{
+ try_again:
+ if (g_cancellable_set_error_if_cancelled (cancellable, error))
+ return FALSE;
+
+ g_mutex_lock (&gnutls->priv->op_mutex);
+
+ if (gnutls->priv->closing || gnutls->priv->closed)
+ {
+ g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_CLOSED,
+ _("Connection is closed"));
+ g_mutex_unlock (&gnutls->priv->op_mutex);
+ return FALSE;
+ }
+
+ if (gnutls->priv->handshake_error && op != G_TLS_CONNECTION_GNUTLS_OP_CLOSE)
+ {
+ if (error)
+ *error = g_error_copy (gnutls->priv->handshake_error);
+ g_mutex_unlock (&gnutls->priv->op_mutex);
+ return FALSE;
+ }
+
+ if (op != G_TLS_CONNECTION_GNUTLS_OP_HANDSHAKE &&
+ op != G_TLS_CONNECTION_GNUTLS_OP_CLOSE)
+ {
+ if (gnutls->priv->need_handshake)
+ {
+ gnutls->priv->need_handshake = FALSE;
+ gnutls->priv->handshaking = TRUE;
+ if (!do_implicit_handshake (gnutls, blocking, cancellable, error))
+ {
+ g_mutex_unlock (&gnutls->priv->op_mutex);
+ return FALSE;
+ }
+ }
+
+ if (gnutls->priv->need_finish_handshake &&
+ gnutls->priv->implicit_handshake)
+ {
+ GError *my_error = NULL;
+ gboolean success;
+
+ gnutls->priv->need_finish_handshake = FALSE;
+
+ g_mutex_unlock (&gnutls->priv->op_mutex);
+ success = finish_handshake (gnutls, gnutls->priv->implicit_handshake, &my_error);
+ g_clear_object (&gnutls->priv->implicit_handshake);
+ g_mutex_lock (&gnutls->priv->op_mutex);
+
+ if (!success || g_cancellable_set_error_if_cancelled (cancellable, &my_error))
+ {
+ g_propagate_error (error, my_error);
+ g_mutex_unlock (&gnutls->priv->op_mutex);
+ return FALSE;
+ }
+ }
+ }
+
+ if ((op != G_TLS_CONNECTION_GNUTLS_OP_WRITE && gnutls->priv->reading) ||
+ (op != G_TLS_CONNECTION_GNUTLS_OP_READ && gnutls->priv->writing) ||
+ (op != G_TLS_CONNECTION_GNUTLS_OP_HANDSHAKE && gnutls->priv->handshaking))
+ {
+ GPollFD fds[2];
+ int nfds;
+
+ g_cancellable_reset (gnutls->priv->waiting_for_op);
+
+ g_mutex_unlock (&gnutls->priv->op_mutex);
+
+ if (!blocking)
+ {
+ g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_WOULD_BLOCK,
+ _("Operation would block"));
+ return FALSE;
+ }
+
+ g_cancellable_make_pollfd (gnutls->priv->waiting_for_op, &fds[0]);
+ if (g_cancellable_make_pollfd (cancellable, &fds[1]))
+ nfds = 2;
+ else
+ nfds = 1;
+ g_poll (fds, nfds, -1);
+ g_cancellable_release_fd (cancellable);
+
+ goto try_again;
+ }
+
+ if (op == G_TLS_CONNECTION_GNUTLS_OP_HANDSHAKE)
+ {
+ gnutls->priv->handshaking = TRUE;
+ gnutls->priv->need_handshake = FALSE;
+ }
+ if (op == G_TLS_CONNECTION_GNUTLS_OP_CLOSE)
+ gnutls->priv->closing = TRUE;
+
+ if (op != G_TLS_CONNECTION_GNUTLS_OP_WRITE)
+ gnutls->priv->reading = TRUE;
+ if (op != G_TLS_CONNECTION_GNUTLS_OP_READ)
+ gnutls->priv->writing = TRUE;
+
+ g_mutex_unlock (&gnutls->priv->op_mutex);
+ return TRUE;
+}
+
+static void
+yield_op (GTlsConnectionGnutls *gnutls,
+ GTlsConnectionGnutlsOp op)
+{
+ g_mutex_lock (&gnutls->priv->op_mutex);
+
+ if (op == G_TLS_CONNECTION_GNUTLS_OP_HANDSHAKE)
+ gnutls->priv->handshaking = FALSE;
+ if (op == G_TLS_CONNECTION_GNUTLS_OP_CLOSE)
+ gnutls->priv->closing = FALSE;
+
+ if (op != G_TLS_CONNECTION_GNUTLS_OP_WRITE)
+ gnutls->priv->reading = FALSE;
+ if (op != G_TLS_CONNECTION_GNUTLS_OP_READ)
+ gnutls->priv->writing = FALSE;
+
+ g_cancellable_cancel (gnutls->priv->waiting_for_op);
+ g_mutex_unlock (&gnutls->priv->op_mutex);
+}
+
static void
begin_gnutls_io (GTlsConnectionGnutls *gnutls,
+ GIOCondition direction,
gboolean blocking,
GCancellable *cancellable)
{
- gnutls->priv->blocking = blocking;
- gnutls->priv->cancellable = cancellable;
- gnutls->priv->internal_direction = 0;
- if (cancellable)
- g_cancellable_push_current (cancellable);
- g_clear_error (&gnutls->priv->error);
+ g_assert (direction & (G_IO_IN | G_IO_OUT));
+
+ if (direction & G_IO_IN)
+ {
+ gnutls->priv->read_blocking = blocking;
+ gnutls->priv->read_cancellable = cancellable;
+ g_clear_error (&gnutls->priv->read_error);
+ }
+
+ if (direction & G_IO_OUT)
+ {
+ gnutls->priv->write_blocking = blocking;
+ gnutls->priv->write_cancellable = cancellable;
+ g_clear_error (&gnutls->priv->write_error);
+ }
}
static int
end_gnutls_io (GTlsConnectionGnutls *gnutls,
+ GIOCondition direction,
int status,
+ const char *errmsg,
GError **error)
{
- if (gnutls->priv->cancellable)
- g_cancellable_pop_current (gnutls->priv->cancellable);
- gnutls->priv->cancellable = NULL;
+ GError *my_error = NULL;
- if (status >= 0)
+ g_assert (direction & (G_IO_IN | G_IO_OUT));
+ g_assert (!error || !*error);
+
+ if (status == GNUTLS_E_AGAIN ||
+ status == GNUTLS_E_WARNING_ALERT_RECEIVED)
+ return GNUTLS_E_AGAIN;
+
+ if (direction & G_IO_IN)
{
- g_clear_error (&gnutls->priv->error);
- return status;
+ gnutls->priv->read_cancellable = NULL;
+ if (status < 0)
+ {
+ my_error = gnutls->priv->read_error;
+ gnutls->priv->read_error = NULL;
+ }
+ else
+ g_clear_error (&gnutls->priv->read_error);
+ }
+ if (direction & G_IO_OUT)
+ {
+ gnutls->priv->write_cancellable = NULL;
+ if (status < 0 && !my_error)
+ {
+ my_error = gnutls->priv->write_error;
+ gnutls->priv->write_error = NULL;
+ }
+ else
+ g_clear_error (&gnutls->priv->write_error);
}
+ if (status >= 0)
+ return status;
+
if (gnutls->priv->handshaking && !gnutls->priv->ever_handshaked)
{
- if (g_error_matches (gnutls->priv->error, G_IO_ERROR, G_IO_ERROR_FAILED) ||
+ if (g_error_matches (my_error, G_IO_ERROR, G_IO_ERROR_FAILED) ||
+#if GLIB_CHECK_VERSION (2, 35, 3)
+ g_error_matches (my_error, G_IO_ERROR, G_IO_ERROR_BROKEN_PIPE) ||
+#endif
status == GNUTLS_E_UNEXPECTED_PACKET_LENGTH ||
status == GNUTLS_E_FATAL_ALERT_RECEIVED ||
status == GNUTLS_E_DECRYPTION_FAILED ||
status == GNUTLS_E_UNSUPPORTED_VERSION_PACKET)
{
- g_clear_error (&gnutls->priv->error);
+ g_clear_error (&my_error);
g_set_error_literal (error, G_TLS_ERROR, G_TLS_ERROR_NOT_TLS,
_("Peer failed to perform TLS handshake"));
return GNUTLS_E_PULL_ERROR;
}
}
- if (gnutls->priv->error)
+ if (my_error)
{
- if (g_error_matches (gnutls->priv->error, G_IO_ERROR, G_IO_ERROR_WOULD_BLOCK))
- status = GNUTLS_E_AGAIN;
- else
+ if (!g_error_matches (my_error, G_IO_ERROR, G_IO_ERROR_WOULD_BLOCK))
G_TLS_CONNECTION_GNUTLS_GET_CLASS (gnutls)->failed (gnutls);
- g_propagate_error (error, gnutls->priv->error);
- gnutls->priv->error = NULL;
+ g_propagate_error (error, my_error);
return status;
}
else if (status == GNUTLS_E_REHANDSHAKE)
return GNUTLS_E_PULL_ERROR;
}
- gnutls->priv->need_handshake = TRUE;
+ g_mutex_lock (&gnutls->priv->op_mutex);
+ if (!gnutls->priv->handshaking)
+ gnutls->priv->need_handshake = TRUE;
+ g_mutex_unlock (&gnutls->priv->op_mutex);
return status;
}
else if (
#endif
)
{
- if (gnutls->priv->require_close_notify)
+ if (gnutls->priv->handshaking && !gnutls->priv->ever_handshaked)
+ {
+ g_set_error_literal (error, G_TLS_ERROR, G_TLS_ERROR_NOT_TLS,
+ _("Peer failed to perform TLS handshake"));
+ return GNUTLS_E_PULL_ERROR;
+ }
+ else if (gnutls->priv->require_close_notify)
{
g_set_error_literal (error, G_TLS_ERROR, G_TLS_ERROR_EOF,
_("TLS connection closed unexpectedly"));
else
return 0;
}
+ else if (status == GNUTLS_E_NO_CERTIFICATE_FOUND)
+ {
+ g_set_error_literal (error, G_TLS_ERROR, G_TLS_ERROR_CERTIFICATE_REQUIRED,
+ _("TLS connection peer did not send a certificate"));
+ return status;
+ }
+ if (error)
+ {
+ g_set_error (error, G_TLS_ERROR, G_TLS_ERROR_MISC,
+ errmsg, gnutls_strerror (status));
+ }
return status;
}
-#define BEGIN_GNUTLS_IO(gnutls, blocking, cancellable) \
- begin_gnutls_io (gnutls, blocking, cancellable); \
+#define BEGIN_GNUTLS_IO(gnutls, direction, blocking, cancellable) \
+ begin_gnutls_io (gnutls, direction, blocking, cancellable); \
do {
-#define END_GNUTLS_IO(gnutls, ret, errmsg, error) \
- } while ((ret == GNUTLS_E_AGAIN || \
- ret == GNUTLS_E_WARNING_ALERT_RECEIVED) && \
- !gnutls->priv->error); \
- ret = end_gnutls_io (gnutls, ret, error); \
- if (ret < 0 && ret != GNUTLS_E_REHANDSHAKE && error && !*error) \
- { \
- g_set_error (error, G_TLS_ERROR, G_TLS_ERROR_MISC,\
- errmsg, gnutls_strerror (ret)); \
- } \
- ;
+#define END_GNUTLS_IO(gnutls, direction, ret, errmsg, err) \
+ } while ((ret = end_gnutls_io (gnutls, direction, ret, errmsg, err)) == GNUTLS_E_AGAIN);
gboolean
g_tls_connection_gnutls_check (GTlsConnectionGnutls *gnutls,
GIOCondition condition)
{
- if (!gnutls->priv->internal_direction)
+ /* Racy, but worst case is that we just get WOULD_BLOCK back */
+ if (gnutls->priv->need_finish_handshake)
return TRUE;
+ /* If a handshake or close is in progress, then tls_istream and
+ * tls_ostream are blocked, regardless of the base stream status.
+ */
if (gnutls->priv->handshaking || gnutls->priv->closing)
- condition = gnutls->priv->internal_direction;
+ return FALSE;
if (condition & G_IO_IN)
return g_pollable_input_stream_is_readable (gnutls->priv->base_istream);
}
typedef struct {
- GSource source;
+ GSource source;
GTlsConnectionGnutls *gnutls;
GObject *stream;
GSource *child_source;
- GIOCondition current_direction;
+ GIOCondition condition;
+
+ gboolean io_waiting;
+ gboolean op_waiting;
} GTlsConnectionGnutlsSource;
static gboolean
return FALSE;
}
-static gboolean
-gnutls_source_sync_child_source (GTlsConnectionGnutlsSource *gnutls_source)
+static void
+gnutls_source_sync (GTlsConnectionGnutlsSource *gnutls_source)
{
GTlsConnectionGnutls *gnutls = gnutls_source->gnutls;
- GSource *source = (GSource *)gnutls_source;
- GIOCondition direction;
+ gboolean io_waiting, op_waiting;
- if (gnutls->priv->handshaking || gnutls->priv->closing)
- direction = gnutls->priv->internal_direction;
- else if (!gnutls_source->stream)
- return FALSE;
- else if (G_IS_TLS_INPUT_STREAM_GNUTLS (gnutls_source->stream))
- direction = G_IO_IN;
+ g_mutex_lock (&gnutls->priv->op_mutex);
+ if (((gnutls_source->condition & G_IO_IN) && gnutls->priv->reading) ||
+ ((gnutls_source->condition & G_IO_OUT) && gnutls->priv->writing) ||
+ (gnutls->priv->handshaking && !gnutls->priv->need_finish_handshake))
+ op_waiting = TRUE;
else
- direction = G_IO_OUT;
+ op_waiting = FALSE;
- if (direction == gnutls_source->current_direction)
- return TRUE;
+ if (!op_waiting && !gnutls->priv->need_handshake &&
+ !gnutls->priv->need_finish_handshake)
+ io_waiting = TRUE;
+ else
+ io_waiting = FALSE;
+ g_mutex_unlock (&gnutls->priv->op_mutex);
+
+ if (op_waiting == gnutls_source->op_waiting &&
+ io_waiting == gnutls_source->io_waiting)
+ return;
+ gnutls_source->op_waiting = op_waiting;
+ gnutls_source->io_waiting = io_waiting;
if (gnutls_source->child_source)
{
- g_source_remove_child_source (source, gnutls_source->child_source);
+ g_source_remove_child_source ((GSource *)gnutls_source,
+ gnutls_source->child_source);
g_source_unref (gnutls_source->child_source);
}
- if (direction & G_IO_IN)
+ if (op_waiting)
+ gnutls_source->child_source = g_cancellable_source_new (gnutls->priv->waiting_for_op);
+ else if (io_waiting && G_IS_POLLABLE_INPUT_STREAM (gnutls_source->stream))
gnutls_source->child_source = g_pollable_input_stream_create_source (gnutls->priv->base_istream, NULL);
- else
+ else if (io_waiting && G_IS_POLLABLE_OUTPUT_STREAM (gnutls_source->stream))
gnutls_source->child_source = g_pollable_output_stream_create_source (gnutls->priv->base_ostream, NULL);
+ else
+ gnutls_source->child_source = g_timeout_source_new (0);
g_source_set_dummy_callback (gnutls_source->child_source);
- g_source_add_child_source (source, gnutls_source->child_source);
- gnutls_source->current_direction = direction;
- return TRUE;
+ g_source_add_child_source ((GSource *)gnutls_source, gnutls_source->child_source);
}
static gboolean
ret = (*func) (gnutls_source->stream, user_data);
if (ret)
- ret = gnutls_source_sync_child_source (gnutls_source);
+ gnutls_source_sync (gnutls_source);
return ret;
}
GTlsConnectionGnutlsSource *gnutls_source = (GTlsConnectionGnutlsSource *)source;
g_object_unref (gnutls_source->gnutls);
-
- if (gnutls_source->child_source)
- g_source_unref (gnutls_source->child_source);
+ g_source_unref (gnutls_source->child_source);
}
static gboolean
g_source_set_name (source, "GTlsConnectionGnutlsSource");
gnutls_source = (GTlsConnectionGnutlsSource *)source;
gnutls_source->gnutls = g_object_ref (gnutls);
+ gnutls_source->condition = condition;
if (condition & G_IO_IN)
gnutls_source->stream = G_OBJECT (gnutls->priv->tls_istream);
else if (condition & G_IO_OUT)
gnutls_source->stream = G_OBJECT (gnutls->priv->tls_ostream);
- gnutls_source_sync_child_source (gnutls_source);
+
+ gnutls_source->op_waiting = (gboolean) -1;
+ gnutls_source->io_waiting = (gboolean) -1;
+ gnutls_source_sync (gnutls_source);
if (cancellable)
{
}
static void
-set_gnutls_error (GTlsConnectionGnutls *gnutls, GIOCondition direction)
+set_gnutls_error (GTlsConnectionGnutls *gnutls,
+ GError *error)
{
- if (g_error_matches (gnutls->priv->error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
+ /* We set EINTR rather than EAGAIN for G_IO_ERROR_WOULD_BLOCK so
+ * that GNUTLS_E_AGAIN only gets returned for gnutls-internal
+ * reasons, not for actual socket EAGAINs (and we have access
+ * to @error at the higher levels, so we can distinguish them
+ * that way later).
+ */
+
+ if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
+ gnutls_transport_set_errno (gnutls->priv->session, EINTR);
+ else if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_WOULD_BLOCK))
gnutls_transport_set_errno (gnutls->priv->session, EINTR);
- else if (g_error_matches (gnutls->priv->error, G_IO_ERROR, G_IO_ERROR_WOULD_BLOCK))
- {
- gnutls_transport_set_errno (gnutls->priv->session, EAGAIN);
- gnutls->priv->internal_direction = direction;
- }
else
gnutls_transport_set_errno (gnutls->priv->session, EIO);
}
GTlsConnectionGnutls *gnutls = transport_data;
ssize_t ret;
- /* If gnutls->priv->error is non-%NULL when we're called, it means
+ /* If gnutls->priv->read_error is non-%NULL when we're called, it means
* that an error previously occurred, but gnutls decided not to
* propagate it. So it's correct for us to just clear it. (Usually
* this means it ignored an EAGAIN after a short read, and now
* we'll return EAGAIN again, which it will obey this time.)
*/
- g_clear_error (&gnutls->priv->error);
+ g_clear_error (&gnutls->priv->read_error);
- if (gnutls->priv->blocking)
- {
- ret = g_input_stream_read (G_INPUT_STREAM (gnutls->priv->base_istream),
- buf, buflen,
- gnutls->priv->cancellable,
- &gnutls->priv->error);
- }
- else
- {
- ret = g_pollable_input_stream_read_nonblocking (gnutls->priv->base_istream,
- buf, buflen,
- gnutls->priv->cancellable,
- &gnutls->priv->error);
- }
+ ret = g_pollable_stream_read (G_INPUT_STREAM (gnutls->priv->base_istream),
+ buf, buflen,
+ gnutls->priv->read_blocking,
+ gnutls->priv->read_cancellable,
+ &gnutls->priv->read_error);
if (ret < 0)
- set_gnutls_error (gnutls, G_IO_IN);
+ set_gnutls_error (gnutls, gnutls->priv->read_error);
#ifndef GNUTLS_E_PREMATURE_TERMINATION
else if (ret == 0)
gnutls->priv->eof = TRUE;
ssize_t ret;
/* See comment in pull_func. */
- g_clear_error (&gnutls->priv->error);
+ g_clear_error (&gnutls->priv->write_error);
+
+ ret = g_pollable_stream_write (G_OUTPUT_STREAM (gnutls->priv->base_ostream),
+ buf, buflen,
+ gnutls->priv->write_blocking,
+ gnutls->priv->write_cancellable,
+ &gnutls->priv->write_error);
+ if (ret < 0)
+ set_gnutls_error (gnutls, gnutls->priv->write_error);
- if (gnutls->priv->blocking)
+ return ret;
+}
+
+
+static GTlsCertificate *
+get_peer_certificate_from_session (GTlsConnectionGnutls *gnutls)
+{
+ GTlsCertificate *chain, *cert;
+ const gnutls_datum_t *certs;
+ unsigned int num_certs;
+ int i;
+
+ certs = gnutls_certificate_get_peers (gnutls->priv->session, &num_certs);
+ if (!certs || !num_certs)
+ return NULL;
+
+ chain = NULL;
+ for (i = num_certs - 1; i >= 0; i--)
{
- ret = g_output_stream_write (G_OUTPUT_STREAM (gnutls->priv->base_ostream),
- buf, buflen,
- gnutls->priv->cancellable,
- &gnutls->priv->error);
+ cert = g_tls_certificate_gnutls_new (&certs[i], chain);
+ if (chain)
+ g_object_unref (chain);
+ chain = cert;
}
+
+ return chain;
+}
+
+static GTlsCertificateFlags
+verify_peer_certificate (GTlsConnectionGnutls *gnutls,
+ GTlsCertificate *peer_certificate)
+{
+ GTlsConnection *conn = G_TLS_CONNECTION (gnutls);
+ GSocketConnectable *peer_identity;
+ GTlsDatabase *database;
+ GTlsCertificateFlags errors;
+ gboolean is_client;
+
+ is_client = G_IS_TLS_CLIENT_CONNECTION (gnutls);
+ if (is_client)
+ peer_identity = g_tls_client_connection_get_server_identity (G_TLS_CLIENT_CONNECTION (gnutls));
else
+ peer_identity = NULL;
+
+ errors = 0;
+
+ database = g_tls_connection_get_database (conn);
+ if (database == NULL)
{
- ret = g_pollable_output_stream_write_nonblocking (gnutls->priv->base_ostream,
- buf, buflen,
- gnutls->priv->cancellable,
- &gnutls->priv->error);
+
+#if ENABLE(TIZEN_TV_DLOG)
+ TIZEN_LOGI("[Network] SSL HandShake - Unknown CA");
+#endif
+
+ errors |= G_TLS_CERTIFICATE_UNKNOWN_CA;
+ errors |= g_tls_certificate_verify (peer_certificate, peer_identity, NULL);
+ }
+ else
+ {
+ GError *error = NULL;
+
+ errors |= g_tls_database_verify_chain (database, peer_certificate,
+ is_client ?
+ G_TLS_DATABASE_PURPOSE_AUTHENTICATE_SERVER :
+ G_TLS_DATABASE_PURPOSE_AUTHENTICATE_CLIENT,
+ peer_identity,
+ g_tls_connection_get_interaction (conn),
+ G_TLS_DATABASE_VERIFY_NONE,
+ NULL, &error);
+ if (error)
+ {
+ g_warning ("failure verifying certificate chain: %s",
+ error->message);
+ g_assert (errors != 0);
+ g_clear_error (&error);
+ }
}
- if (ret < 0)
- set_gnutls_error (gnutls, G_IO_OUT);
- return ret;
+ return errors;
}
-static gboolean
-handshake_internal (GTlsConnectionGnutls *gnutls,
- gboolean blocking,
- GCancellable *cancellable,
- GError **error)
+static void
+handshake_thread (GTask *task,
+ gpointer object,
+ gpointer task_data,
+ GCancellable *cancellable)
{
- GTlsCertificate *peer_certificate = NULL;
- GTlsCertificateFlags peer_certificate_errors = 0;
+ GTlsConnectionGnutls *gnutls = object;
+ gboolean is_client;
+ GError *error = NULL;
int ret;
- if (G_IS_TLS_SERVER_CONNECTION_GNUTLS (gnutls) &&
- gnutls->priv->ever_handshaked && !gnutls->priv->handshaking &&
- !gnutls->priv->need_handshake)
- {
- BEGIN_GNUTLS_IO (gnutls, blocking, cancellable);
- ret = gnutls_rehandshake (gnutls->priv->session);
- END_GNUTLS_IO (gnutls, ret, _("Error performing TLS handshake: %s"), error);
+ gnutls->priv->started_handshake = FALSE;
- if (ret != 0)
- return FALSE;
+ if (!claim_op (gnutls, G_TLS_CONNECTION_GNUTLS_OP_HANDSHAKE,
+ TRUE, cancellable, &error))
+ {
+ g_task_return_error (task, error);
+ return;
}
- if (!gnutls->priv->handshaking)
+ g_clear_error (&gnutls->priv->handshake_error);
+
+ is_client = G_IS_TLS_CLIENT_CONNECTION (gnutls);
+
+ if (!is_client && gnutls->priv->ever_handshaked &&
+ !gnutls->priv->implicit_handshake)
{
- gnutls->priv->handshaking = TRUE;
+ BEGIN_GNUTLS_IO (gnutls, G_IO_IN | G_IO_OUT, TRUE, cancellable);
+ ret = gnutls_rehandshake (gnutls->priv->session);
+ END_GNUTLS_IO (gnutls, G_IO_IN | G_IO_OUT, ret,
+ _("Error performing TLS handshake: %s"), &error);
- if (gnutls->priv->peer_certificate)
+ if (error)
{
- g_object_unref (gnutls->priv->peer_certificate);
- gnutls->priv->peer_certificate = NULL;
- gnutls->priv->peer_certificate_errors = 0;
-
- g_object_notify (G_OBJECT (gnutls), "peer-certificate");
- g_object_notify (G_OBJECT (gnutls), "peer-certificate-errors");
+ g_task_return_error (task, error);
+ return;
}
-
- g_tls_connection_gnutls_set_handshake_priority (gnutls);
- G_TLS_CONNECTION_GNUTLS_GET_CLASS (gnutls)->begin_handshake (gnutls);
}
- BEGIN_GNUTLS_IO (gnutls, blocking, cancellable);
- ret = gnutls_handshake (gnutls->priv->session);
- END_GNUTLS_IO (gnutls, ret, _("Error performing TLS handshake: %s"), error);
+ gnutls->priv->started_handshake = TRUE;
- if (ret == GNUTLS_E_AGAIN)
- return FALSE;
+ g_clear_object (&gnutls->priv->peer_certificate);
+ gnutls->priv->peer_certificate_errors = 0;
- gnutls->priv->handshaking = FALSE;
- gnutls->priv->need_handshake = FALSE;
- gnutls->priv->ever_handshaked = TRUE;
+ g_tls_connection_gnutls_set_handshake_priority (gnutls);
- if (ret == 0 &&
- gnutls_certificate_type_get (gnutls->priv->session) == GNUTLS_CRT_X509)
+ BEGIN_GNUTLS_IO (gnutls, G_IO_IN | G_IO_OUT, TRUE, cancellable);
+ ret = gnutls_handshake (gnutls->priv->session);
+ if (ret == GNUTLS_E_GOT_APPLICATION_DATA)
{
- GTlsCertificate *chain, *cert;
- const gnutls_datum_t *certs;
- unsigned int num_certs;
- int i;
-
- certs = gnutls_certificate_get_peers (gnutls->priv->session, &num_certs);
- chain = NULL;
- if (certs)
+ guint8 buf[1024];
+
+ /* Got app data while waiting for rehandshake; buffer it and try again */
+ ret = gnutls_record_recv (gnutls->priv->session, buf, sizeof (buf));
+ if (ret > -1)
{
- for (i = num_certs - 1; i >= 0; i--)
- {
- cert = g_tls_certificate_gnutls_new (&certs[i], chain);
- if (chain)
- g_object_unref (chain);
- chain = cert;
- }
+ if (!gnutls->priv->app_data_buf)
+ gnutls->priv->app_data_buf = g_byte_array_new ();
+ g_byte_array_append (gnutls->priv->app_data_buf, buf, ret);
+ ret = GNUTLS_E_AGAIN;
}
+ }
+ END_GNUTLS_IO (gnutls, G_IO_IN | G_IO_OUT, ret,
+ _("Error performing TLS handshake: %s"), &error);
- peer_certificate = chain;
+ if (ret == 0 && gnutls_certificate_type_get (gnutls->priv->session) == GNUTLS_CRT_X509)
+ {
+ gnutls->priv->peer_certificate_tmp = get_peer_certificate_from_session (gnutls);
+ if (gnutls->priv->peer_certificate_tmp)
+ gnutls->priv->peer_certificate_errors_tmp = verify_peer_certificate (gnutls, gnutls->priv->peer_certificate_tmp);
+ else if (G_IS_TLS_CLIENT_CONNECTION (gnutls))
+ {
+ g_set_error_literal (&error, G_TLS_ERROR, G_TLS_ERROR_BAD_CERTIFICATE,
+ _("Server did not return a valid TLS certificate"));
+ }
}
- if (peer_certificate)
+ G_TLS_CONNECTION_GNUTLS_GET_CLASS (gnutls)->finish_handshake (gnutls, &error);
+
+ if (error)
+ {
+ g_task_return_error (task, error);
+ }
+ else
{
- gboolean accepted;
+ gnutls->priv->ever_handshaked = TRUE;
+ g_task_return_boolean (task, TRUE);
+ }
+}
- accepted = G_TLS_CONNECTION_GNUTLS_GET_CLASS (gnutls)->verify_peer (gnutls, peer_certificate, &peer_certificate_errors);
+static gboolean
+accept_peer_certificate (GTlsConnectionGnutls *gnutls,
+ GTlsCertificate *peer_certificate,
+ GTlsCertificateFlags peer_certificate_errors)
+{
+ gboolean accepted;
- gnutls->priv->peer_certificate = peer_certificate;
- gnutls->priv->peer_certificate_errors = peer_certificate_errors;
+#if ENABLE(TIZEN_PERFORMANCE_TEST_LOG)
+ HWCLOCK_LOG("[BGN] gnutls_verify_peer");
+#endif
- g_object_notify (G_OBJECT (gnutls), "peer-certificate");
- g_object_notify (G_OBJECT (gnutls), "peer-certificate-errors");
+ if (G_IS_TLS_CLIENT_CONNECTION (gnutls))
+ {
+ GTlsCertificateFlags validation_flags =
+ g_tls_client_connection_get_validation_flags (G_TLS_CLIENT_CONNECTION (gnutls));
- if (!accepted)
+ if ((peer_certificate_errors & validation_flags) == 0)
+ accepted = TRUE;
+ else
{
- g_set_error_literal (error, G_TLS_ERROR, G_TLS_ERROR_BAD_CERTIFICATE,
- _("Unacceptable TLS certificate"));
- return FALSE;
+ accepted = g_tls_connection_emit_accept_certificate (G_TLS_CONNECTION (gnutls),
+ peer_certificate,
+ peer_certificate_errors);
}
}
+ else
+ {
+ accepted = g_tls_connection_emit_accept_certificate (G_TLS_CONNECTION (gnutls),
+ peer_certificate,
+ peer_certificate_errors);
+ }
+
+#if ENABLE(TIZEN_PERFORMANCE_TEST_LOG)
+ HWCLOCK_LOG("[END] gnutls_verify_peer");
+#endif
+
+ return accepted;
+}
- G_TLS_CONNECTION_GNUTLS_GET_CLASS (gnutls)->finish_handshake (gnutls, ret == 0, error);
- return (ret == 0);
+static void
+begin_handshake (GTlsConnectionGnutls *gnutls)
+{
+ G_TLS_CONNECTION_GNUTLS_GET_CLASS (gnutls)->begin_handshake (gnutls);
}
static gboolean
-handshake_in_progress_or_failed (GTlsConnectionGnutls *gnutls,
- gboolean blocking,
- GCancellable *cancellable,
- GError **error)
+finish_handshake (GTlsConnectionGnutls *gnutls,
+ GTask *task,
+ GError **error)
{
- if (!(gnutls->priv->need_handshake || gnutls->priv->handshaking))
- return FALSE;
+ GTlsCertificate *peer_certificate;
+ GTlsCertificateFlags peer_certificate_errors;
+
+ g_assert (error != NULL);
+
+ peer_certificate = gnutls->priv->peer_certificate_tmp;
+ gnutls->priv->peer_certificate_tmp = NULL;
+ peer_certificate_errors = gnutls->priv->peer_certificate_errors_tmp;
+ gnutls->priv->peer_certificate_errors_tmp = 0;
- return !handshake_internal (gnutls, blocking, cancellable, error);
+ if (g_task_propagate_boolean (task, error) && peer_certificate)
+ {
+ if (!accept_peer_certificate (gnutls, peer_certificate,
+ peer_certificate_errors))
+ {
+ g_set_error_literal (error, G_TLS_ERROR, G_TLS_ERROR_BAD_CERTIFICATE,
+ _("Unacceptable TLS certificate"));
+ }
+
+ gnutls->priv->peer_certificate = peer_certificate;
+ gnutls->priv->peer_certificate_errors = peer_certificate_errors;
+ g_object_notify (G_OBJECT (gnutls), "peer-certificate");
+ g_object_notify (G_OBJECT (gnutls), "peer-certificate-errors");
+ }
+
+ if (*error && gnutls->priv->started_handshake)
+ gnutls->priv->handshake_error = g_error_copy (*error);
+
+ return (*error == NULL);
}
static gboolean
GError **error)
{
GTlsConnectionGnutls *gnutls = G_TLS_CONNECTION_GNUTLS (conn);
+ GTask *task;
+ gboolean success;
+ GError *my_error = NULL;
+
+ task = g_task_new (conn, cancellable, NULL, NULL);
+ begin_handshake (gnutls);
+ g_task_run_in_thread_sync (task, handshake_thread);
+ success = finish_handshake (gnutls, task, &my_error);
+ g_object_unref (task);
- return handshake_internal (gnutls, TRUE, cancellable, error);
+ yield_op (gnutls, G_TLS_CONNECTION_GNUTLS_OP_HANDSHAKE);
+
+ if (my_error)
+ g_propagate_error (error, my_error);
+ return success;
}
-static gboolean
-g_tls_connection_gnutls_handshake_ready (GObject *pollable_stream,
- gpointer user_data)
+/* In the async version we use two GTasks; one to run handshake_thread() and
+ * then call handshake_thread_completed(), and a second to call the caller's
+ * original callback after we call finish_handshake().
+ */
+
+static void
+handshake_thread_completed (GObject *object,
+ GAsyncResult *result,
+ gpointer user_data)
{
- GTlsConnectionGnutls *gnutls;
- GSimpleAsyncResult *simple = user_data;
- gboolean success;
+ GTask *caller_task = user_data;
+ GTlsConnectionGnutls *gnutls = g_task_get_source_object (caller_task);
GError *error = NULL;
+ gboolean need_finish_handshake, success;
- gnutls = G_TLS_CONNECTION_GNUTLS (g_async_result_get_source_object (G_ASYNC_RESULT (simple)));
- g_object_unref (gnutls);
-
- success = handshake_internal (gnutls, FALSE, NULL, &error);
- if (!success && g_error_matches (error, G_IO_ERROR, G_IO_ERROR_WOULD_BLOCK))
+ g_mutex_lock (&gnutls->priv->op_mutex);
+ if (gnutls->priv->need_finish_handshake)
{
- g_error_free (error);
- return TRUE;
+ need_finish_handshake = TRUE;
+ gnutls->priv->need_finish_handshake = FALSE;
}
+ else
+ need_finish_handshake = FALSE;
+ g_mutex_unlock (&gnutls->priv->op_mutex);
- if (error)
+ if (need_finish_handshake)
{
- g_simple_async_result_set_from_error (simple, error);
- g_error_free (error);
+ success = finish_handshake (gnutls, G_TASK (result), &error);
+ if (success)
+ g_task_return_boolean (caller_task, TRUE);
+ else
+ g_task_return_error (caller_task, error);
}
+ else if (gnutls->priv->handshake_error)
+ g_task_return_error (caller_task, g_error_copy (gnutls->priv->handshake_error));
else
- g_simple_async_result_set_op_res_gboolean (simple, success);
- g_simple_async_result_complete (simple);
- g_object_unref (simple);
+ g_task_return_boolean (caller_task, TRUE);
- return FALSE;
+ g_object_unref (caller_task);
+}
+
+static void
+async_handshake_thread (GTask *task,
+ gpointer object,
+ gpointer task_data,
+ GCancellable *cancellable)
+{
+ GTlsConnectionGnutls *gnutls = object;
+
+ handshake_thread (task, object, task_data, cancellable);
+
+ g_mutex_lock (&gnutls->priv->op_mutex);
+ gnutls->priv->need_finish_handshake = TRUE;
+ /* yield_op will clear handshaking too, but we don't want the
+ * connection to be briefly "handshaking && need_finish_handshake"
+ * after we unlock the mutex.
+ */
+ gnutls->priv->handshaking = FALSE;
+ g_mutex_unlock (&gnutls->priv->op_mutex);
+
+ yield_op (gnutls, G_TLS_CONNECTION_GNUTLS_OP_HANDSHAKE);
}
static void
GAsyncReadyCallback callback,
gpointer user_data)
{
- GTlsConnectionGnutls *gnutls = G_TLS_CONNECTION_GNUTLS (conn);
- GSimpleAsyncResult *simple;
- gboolean success;
- GError *error = NULL;
- GSource *source;
+ GTask *thread_task, *caller_task;
- simple = g_simple_async_result_new (G_OBJECT (conn), callback, user_data,
- g_tls_connection_gnutls_handshake_async);
- success = handshake_internal (gnutls, FALSE, cancellable, &error);
- if (success)
- {
- g_simple_async_result_set_op_res_gboolean (simple, TRUE);
- g_simple_async_result_complete_in_idle (simple);
- g_object_unref (simple);
- return;
- }
- else if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_WOULD_BLOCK))
- {
- g_simple_async_result_set_from_error (simple, error);
- g_error_free (error);
- g_simple_async_result_complete_in_idle (simple);
- g_object_unref (simple);
- return;
- }
- else if (error)
- g_error_free (error);
-
- source = g_tls_connection_gnutls_create_source (gnutls, 0, cancellable);
- g_source_set_callback (source,
- (GSourceFunc) g_tls_connection_gnutls_handshake_ready,
- simple, NULL);
- g_source_set_priority (source, io_priority);
- g_source_attach (source, g_main_context_get_thread_default ());
- g_source_unref (source);
+ caller_task = g_task_new (conn, cancellable, callback, user_data);
+ g_task_set_priority (caller_task, io_priority);
+
+ begin_handshake (G_TLS_CONNECTION_GNUTLS (conn));
+
+ thread_task = g_task_new (conn, cancellable,
+ handshake_thread_completed, caller_task);
+ g_task_set_priority (thread_task, io_priority);
+ g_task_run_in_thread (thread_task, async_handshake_thread);
+ g_object_unref (thread_task);
}
static gboolean
GAsyncResult *result,
GError **error)
{
- GSimpleAsyncResult *simple;
+ g_return_val_if_fail (g_task_is_valid (result, conn), FALSE);
- g_return_val_if_fail (g_simple_async_result_is_valid (result, G_OBJECT (conn), g_tls_connection_gnutls_handshake_async), FALSE);
-
- simple = G_SIMPLE_ASYNC_RESULT (result);
-
- if (g_simple_async_result_propagate_error (simple, error))
- return FALSE;
-
- return g_simple_async_result_get_op_res_gboolean (simple);
+ return g_task_propagate_boolean (G_TASK (result), error);
}
-/* #if ENABLE(TIZEN_NPN) */
-/* Following two functions MUST be declared.
- * Because glib2.0 already has following functions named set_next_protocols/get_next_protocol. */
-/*
- available protocols as it is on Dec. 2012:
- http/1.1
- spdy/2
- spdy/3
-*/
-#define __PROTOCOL_NAME_MAXLEN 8 /* http/1.1 */
-
-gboolean
-g_tls_connection_gnutls_is_npn_set (GTlsConnectionGnutls *gnutls)
+static gboolean
+do_implicit_handshake (GTlsConnectionGnutls *gnutls,
+ gboolean blocking,
+ GCancellable *cancellable,
+ GError **error)
{
-#if ENABLE(TIZEN_NPN)
- return gnutls->priv->is_npn_set;
-#else
- return FALSE;
-#endif
-}
+ /* We have op_mutex */
-static void
-g_tls_connection_gnutls_set_next_protocols (GTlsConnectionGnutls *gnutls,
- const gchar *protocols)
-{
- g_return_if_fail (gnutls);
- g_return_if_fail (protocols);
+ gnutls->priv->implicit_handshake = g_task_new (gnutls, cancellable, NULL, NULL);
-#if ENABLE(TIZEN_NPN)
- gnutls->priv->is_npn_set = TRUE;
- gnutls_negotiate_next_protocol (gnutls->priv->session, protocols, strlen(protocols));
-#endif
-}
+ begin_handshake (gnutls);
-static const gchar *
-g_tls_connection_gnutls_get_next_protocol (GTlsConnectionGnutls *gnutls)
-{
-#if ENABLE(TIZEN_NPN)
- int gnutls_ret;
- size_t size;
- gchar buf[__PROTOCOL_NAME_MAXLEN];
- gchar *ret_buf;
- unsigned int supported;
-
- g_return_val_if_fail (gnutls, NULL);
-
- size = __PROTOCOL_NAME_MAXLEN;
- gnutls_ret = gnutls_get_next_protocol (gnutls->priv->session, buf, &size, &supported);
- if (!gnutls_ret)
- {
- ret_buf = g_new0 (gchar, size + 1);
- memcpy (ret_buf, buf, size);
-
- return ret_buf;
- }
+ if (blocking)
+ {
+ GError *my_error = NULL;
+ gboolean success;
+
+ g_mutex_unlock (&gnutls->priv->op_mutex);
+ g_task_run_in_thread_sync (gnutls->priv->implicit_handshake,
+ handshake_thread);
+ success = finish_handshake (gnutls,
+ gnutls->priv->implicit_handshake,
+ &my_error);
+ g_clear_object (&gnutls->priv->implicit_handshake);
+ yield_op (gnutls, G_TLS_CONNECTION_GNUTLS_OP_HANDSHAKE);
+ g_mutex_lock (&gnutls->priv->op_mutex);
+
+ if (my_error)
+ g_propagate_error (error, my_error);
+ return success;
+ }
else
- {
- return NULL;
- }
-#else
- return NULL;
-#endif
+ {
+ g_task_run_in_thread (gnutls->priv->implicit_handshake,
+ async_handshake_thread);
+
+ g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_WOULD_BLOCK,
+ _("Operation would block"));
+
+ return FALSE;
+ }
}
-/* #endif */
gssize
g_tls_connection_gnutls_read (GTlsConnectionGnutls *gnutls,
{
gssize ret;
+ if (gnutls->priv->app_data_buf && !gnutls->priv->handshaking)
+ {
+ ret = MIN (count, gnutls->priv->app_data_buf->len);
+ memcpy (buffer, gnutls->priv->app_data_buf->data, ret);
+ if (ret == gnutls->priv->app_data_buf->len)
+ g_clear_pointer (&gnutls->priv->app_data_buf, g_byte_array_unref);
+ else
+ g_byte_array_remove_range (gnutls->priv->app_data_buf, 0, ret);
+ return ret;
+ }
+
again:
- if (handshake_in_progress_or_failed (gnutls, blocking, cancellable, error))
+ if (!claim_op (gnutls, G_TLS_CONNECTION_GNUTLS_OP_READ,
+ blocking, cancellable, error))
return -1;
- BEGIN_GNUTLS_IO (gnutls, blocking, cancellable);
+ BEGIN_GNUTLS_IO (gnutls, G_IO_IN, blocking, cancellable);
ret = gnutls_record_recv (gnutls->priv->session, buffer, count);
- END_GNUTLS_IO (gnutls, ret, _("Error reading data from TLS socket: %s"), error);
+ END_GNUTLS_IO (gnutls, G_IO_IN, ret, _("Error reading data from TLS socket: %s"), error);
+
+ yield_op (gnutls, G_TLS_CONNECTION_GNUTLS_OP_READ);
if (ret >= 0)
return ret;
gssize ret;
again:
- if (handshake_in_progress_or_failed (gnutls, blocking, cancellable, error))
+ if (!claim_op (gnutls, G_TLS_CONNECTION_GNUTLS_OP_WRITE,
+ blocking, cancellable, error))
return -1;
- BEGIN_GNUTLS_IO (gnutls, blocking, cancellable);
+ BEGIN_GNUTLS_IO (gnutls, G_IO_OUT, blocking, cancellable);
ret = gnutls_record_send (gnutls->priv->session, buffer, count);
- END_GNUTLS_IO (gnutls, ret, _("Error writing data to TLS socket: %s"), error);
+ END_GNUTLS_IO (gnutls, G_IO_OUT, ret, _("Error writing data to TLS socket: %s"), error);
+
+ yield_op (gnutls, G_TLS_CONNECTION_GNUTLS_OP_WRITE);
if (ret >= 0)
return ret;
}
static gboolean
-close_internal (GTlsConnectionGnutls *gnutls,
- gboolean blocking,
- GCancellable *cancellable,
- GError **error)
-{
- int ret;
-
- /* If we haven't finished the initial handshake yet, there's no
- * reason to finish it just so we can close.
- */
- if (!gnutls->priv->ever_handshaked)
- return TRUE;
-
- if (handshake_in_progress_or_failed (gnutls, blocking, cancellable, error))
- return FALSE;
-
- gnutls->priv->closing = TRUE;
- BEGIN_GNUTLS_IO (gnutls, blocking, cancellable);
- ret = gnutls_bye (gnutls->priv->session, GNUTLS_SHUT_WR);
- END_GNUTLS_IO (gnutls, ret, _("Error performing TLS close: %s"), error);
- if (ret == 0 || !error || !g_error_matches (*error, G_IO_ERROR, G_IO_ERROR_WOULD_BLOCK))
- gnutls->priv->closing = FALSE;
-
- return ret == 0;
-}
-
-static gboolean
g_tls_connection_gnutls_close (GIOStream *stream,
GCancellable *cancellable,
GError **error)
{
GTlsConnectionGnutls *gnutls = G_TLS_CONNECTION_GNUTLS (stream);
+ gboolean success;
+ int ret = 0;
- if (!close_internal (gnutls, TRUE, cancellable, error))
+ if (!claim_op (gnutls, G_TLS_CONNECTION_GNUTLS_OP_CLOSE,
+ TRUE, cancellable, error))
return FALSE;
- return g_io_stream_close (gnutls->priv->base_io_stream,
- cancellable, error);
-}
-typedef struct {
- GSimpleAsyncResult *simple;
- GCancellable *cancellable;
- int io_priority;
-} AsyncCloseData;
+ if (gnutls->priv->closed)
+ {
+ g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_CLOSED,
+ _("Connection is already closed"));
+ yield_op (gnutls, G_TLS_CONNECTION_GNUTLS_OP_CLOSE);
+ return FALSE;
+ }
-static void
-close_base_stream_cb (GObject *base_stream,
- GAsyncResult *result,
- gpointer user_data)
-{
- gboolean success;
- GError *error = NULL;
- AsyncCloseData *acd = user_data;
+ if (gnutls->priv->ever_handshaked)
+ {
+ BEGIN_GNUTLS_IO (gnutls, G_IO_IN | G_IO_OUT, TRUE, cancellable);
+ ret = gnutls_bye (gnutls->priv->session, GNUTLS_SHUT_WR);
+ END_GNUTLS_IO (gnutls, G_IO_IN | G_IO_OUT, ret,
+ _("Error performing TLS close: %s"), error);
+ }
- success = g_io_stream_close_finish (G_IO_STREAM (base_stream),
- result, &error);
- if (success)
- g_simple_async_result_set_op_res_gboolean (acd->simple, TRUE);
- else
+ gnutls->priv->closed = TRUE;
+
+ if (ret != 0)
{
- g_simple_async_result_set_from_error (acd->simple, error);
- g_error_free (error);
+ yield_op (gnutls, G_TLS_CONNECTION_GNUTLS_OP_CLOSE);
+ return FALSE;
}
- g_simple_async_result_complete (acd->simple);
- g_object_unref (acd->simple);
- if (acd->cancellable)
- g_object_unref (acd->cancellable);
- g_slice_free (AsyncCloseData, acd);
+ success = g_io_stream_close (gnutls->priv->base_io_stream,
+ cancellable, error);
+ yield_op (gnutls, G_TLS_CONNECTION_GNUTLS_OP_CLOSE);
+ return success;
}
-static gboolean
-g_tls_connection_gnutls_close_ready (GObject *pollable_stream,
- gpointer user_data)
+/* We do async close as synchronous-in-a-thread so we don't need to
+ * implement G_IO_IN/G_IO_OUT flip-flopping just for this one case
+ * (since handshakes are also done synchronously now).
+ */
+static void
+close_thread (GTask *task,
+ gpointer object,
+ gpointer task_data,
+ GCancellable *cancellable)
{
- GTlsConnectionGnutls *gnutls;
- AsyncCloseData *acd = user_data;
- gboolean success;
+ GIOStream *stream = object;
GError *error = NULL;
- gnutls = G_TLS_CONNECTION_GNUTLS (g_async_result_get_source_object (G_ASYNC_RESULT (acd->simple)));
- g_object_unref (gnutls);
-
- success = close_internal (gnutls, FALSE, NULL, &error);
- if (!success && g_error_matches (error, G_IO_ERROR, G_IO_ERROR_WOULD_BLOCK))
- {
- g_error_free (error);
- return TRUE;
- }
-
- if (error)
- {
- g_simple_async_result_set_from_error (acd->simple, error);
- g_simple_async_result_complete (acd->simple);
- g_error_free (error);
- g_object_unref (acd->simple);
- if (acd->cancellable)
- g_object_unref (acd->cancellable);
- g_slice_free (AsyncCloseData, acd);
- }
+ if (!g_tls_connection_gnutls_close (stream, cancellable, &error))
+ g_task_return_error (task, error);
else
- {
- g_io_stream_close_async (gnutls->priv->base_io_stream,
- acd->io_priority, acd->cancellable,
- close_base_stream_cb, acd);
- }
-
- return FALSE;
+ g_task_return_boolean (task, TRUE);
}
static void
GAsyncReadyCallback callback,
gpointer user_data)
{
- GTlsConnectionGnutls *gnutls = G_TLS_CONNECTION_GNUTLS (stream);
- GSimpleAsyncResult *simple;
- gboolean success;
- GError *error = NULL;
- AsyncCloseData *acd;
- GSource *source;
-
- simple = g_simple_async_result_new (G_OBJECT (stream), callback, user_data,
- g_tls_connection_gnutls_close_async);
-
- success = close_internal (gnutls, FALSE, cancellable, &error);
- if (error && !g_error_matches (error, G_IO_ERROR, G_IO_ERROR_WOULD_BLOCK))
- {
- g_simple_async_result_set_from_error (simple, error);
- g_error_free (error);
- g_simple_async_result_complete_in_idle (simple);
- g_object_unref (simple);
- }
+ GTask *task;
- if (error)
- g_error_free (error);
-
- acd = g_slice_new (AsyncCloseData);
- acd->simple = simple;
- acd->cancellable = cancellable ? g_object_ref (cancellable) : cancellable;
- acd->io_priority = io_priority;
-
- if (success)
- {
- g_io_stream_close_async (gnutls->priv->base_io_stream,
- io_priority, cancellable,
- close_base_stream_cb, acd);
- return;
- }
-
- source = g_tls_connection_gnutls_create_source (gnutls, 0, acd->cancellable);
- g_source_set_callback (source,
- (GSourceFunc) g_tls_connection_gnutls_close_ready,
- acd, NULL);
- g_source_set_priority (source, acd->io_priority);
- g_source_attach (source, g_main_context_get_thread_default ());
- g_source_unref (source);
+ task = g_task_new (stream, cancellable, callback, user_data);
+ g_task_set_priority (task, io_priority);
+ g_task_run_in_thread (task, close_thread);
+ g_object_unref (task);
}
static gboolean
GAsyncResult *result,
GError **error)
{
- GSimpleAsyncResult *simple;
+ g_return_val_if_fail (g_task_is_valid (result, stream), FALSE);
- g_return_val_if_fail (g_simple_async_result_is_valid (result, G_OBJECT (stream), g_tls_connection_gnutls_close_async), FALSE);
-
- simple = G_SIMPLE_ASYNC_RESULT (result);
-
- if (g_simple_async_result_propagate_error (simple, error))
- return FALSE;
-
- return g_simple_async_result_get_op_res_gboolean (simple);
+ return g_task_propagate_boolean (G_TASK (result), error);
}
#ifdef HAVE_PKCS11
connection_class->handshake_async = g_tls_connection_gnutls_handshake_async;
connection_class->handshake_finish = g_tls_connection_gnutls_handshake_finish;
- /* #if ENABLE(TIZEN_NPN) */
- /* This code MUST be set because glib2.0 already has following functions named set_next_protocols/get_next_protocol. */
- connection_class->set_next_protocols = g_tls_connection_gnutls_set_next_protocols;
- connection_class->get_next_protocol = g_tls_connection_gnutls_get_next_protocol;
- /* #endif */
-
iostream_class->get_input_stream = g_tls_connection_gnutls_get_input_stream;
iostream_class->get_output_stream = g_tls_connection_gnutls_get_output_stream;
iostream_class->close_fn = g_tls_connection_gnutls_close;
void (*failed) (GTlsConnectionGnutls *gnutls);
void (*begin_handshake) (GTlsConnectionGnutls *gnutls);
- gboolean (*verify_peer) (GTlsConnectionGnutls *gnutls,
- GTlsCertificate *peer_certificate,
- GTlsCertificateFlags *errors);
void (*finish_handshake) (GTlsConnectionGnutls *gnutls,
- gboolean success,
GError **inout_error);
};
GType g_tls_connection_gnutls_get_type (void) G_GNUC_CONST;
-gnutls_certificate_credentials g_tls_connection_gnutls_get_credentials (GTlsConnectionGnutls *connection);
-gnutls_session g_tls_connection_gnutls_get_session (GTlsConnectionGnutls *connection);
-void g_tls_connection_gnutls_get_certificate (GTlsConnectionGnutls *gnutls,
+gnutls_certificate_credentials_t g_tls_connection_gnutls_get_credentials (GTlsConnectionGnutls *connection);
+gnutls_session_t g_tls_connection_gnutls_get_session (GTlsConnectionGnutls *connection);
+void g_tls_connection_gnutls_get_certificate (GTlsConnectionGnutls *gnutls,
gnutls_retr2_st *st);
gssize g_tls_connection_gnutls_read (GTlsConnectionGnutls *gnutls,
GIOCondition condition,
GCancellable *cancellable);
-//#if ENABLE(TIZEN_NPN)
-gboolean g_tls_connection_gnutls_is_npn_set (GTlsConnectionGnutls *gnutls);
-//#endif
-
G_END_DECLS
#endif /* __G_TLS_CONNECTION_GNUTLS_H___ */
#include "gtlscertificate-gnutls.h"
#include <glib/gi18n-lib.h>
+#include "TIZEN.h"
G_DEFINE_ABSTRACT_TYPE (GTlsDatabaseGnutls, g_tls_database_gnutls, G_TYPE_TLS_DATABASE);
{
GTlsCertificateGnutls *certificate;
+ GTlsCertificateGnutls *previous;
GTlsCertificate *issuer;
+ gboolean certificate_is_from_db;
g_assert (anchor);
g_assert (chain);
*/
*anchor = NULL;
+ previous = NULL;
certificate = chain;
+ certificate_is_from_db = FALSE;
/* First check for pinned certificate */
if (g_tls_database_gnutls_lookup_assertion (self, certificate,
/* Is it self-signed? */
if (is_self_signed (certificate))
{
+ /*
+ * Since at this point we would fail with 'self-signed', can we replace
+ * this certificate with one from the database and do better?
+ */
+ if (previous && !certificate_is_from_db)
+ {
+ issuer = g_tls_database_lookup_certificate_issuer (G_TLS_DATABASE (self),
+ G_TLS_CERTIFICATE (previous),
+ interaction,
+ G_TLS_DATABASE_LOOKUP_NONE,
+ cancellable, error);
+ if (*error)
+ {
+ return STATUS_FAILURE;
+ }
+ else if (issuer)
+ {
+ /* Replaced with certificate in the db, restart step again with this certificate */
+ g_return_val_if_fail (G_IS_TLS_CERTIFICATE_GNUTLS (issuer), STATUS_FAILURE);
+ g_tls_certificate_gnutls_set_issuer (previous, G_TLS_CERTIFICATE_GNUTLS (issuer));
+ certificate = G_TLS_CERTIFICATE_GNUTLS (issuer);
+ certificate_is_from_db = TRUE;
+ continue;
+ }
+ }
+
g_tls_certificate_gnutls_set_issuer (certificate, NULL);
return STATUS_SELFSIGNED;
}
+ previous = certificate;
+
/* Bring over the next certificate in the chain */
issuer = g_tls_certificate_get_issuer (G_TLS_CERTIFICATE (certificate));
if (issuer)
{
g_return_val_if_fail (G_IS_TLS_CERTIFICATE_GNUTLS (issuer), STATUS_FAILURE);
+ certificate = G_TLS_CERTIFICATE_GNUTLS (issuer);
+ certificate_is_from_db = FALSE;
}
/* Search for the next certificate in chain */
return STATUS_FAILURE;
else if (!issuer)
return STATUS_INCOMPLETE;
+
+ /* Found a certificate in chain, use for next step */
g_return_val_if_fail (G_IS_TLS_CERTIFICATE_GNUTLS (issuer), STATUS_FAILURE);
g_tls_certificate_gnutls_set_issuer (certificate, G_TLS_CERTIFICATE_GNUTLS (issuer));
+ certificate = G_TLS_CERTIFICATE_GNUTLS (issuer);
+ certificate_is_from_db = TRUE;
g_object_unref (issuer);
}
-
- g_assert (issuer);
- certificate = G_TLS_CERTIFICATE_GNUTLS (issuer);
}
g_assert_not_reached ();
GTlsCertificateFlags gtls_flags = 0;
gnutls_x509_crt_t cert;
time_t t, now;
+#if ENABLE(TIZEN_TV_DLOG)
+ char timebuf[256];
+#endif
now = time (NULL);
while (chain)
{
cert = g_tls_certificate_gnutls_get_cert (chain);
t = gnutls_x509_crt_get_activation_time (cert);
+
+#if ENABLE(TIZEN_TV_DLOG)
+ ctime_r(&now, timebuf);
+ TIZEN_LOGI("[Certificate] TV borad time is: %s", timebuf);
+ if (t != (time_t) -1) {
+ ctime_r(&t, timebuf);
+ TIZEN_LOGI("[Certificate] CA activation time is: %s", timebuf);
+ }
+ else
+ TIZEN_LOGI("[Certificate] gnutls_x509_crt_get_activation_time ERROR");
+#endif
+
if (t == (time_t) -1 || t > now)
gtls_flags |= G_TLS_CERTIFICATE_NOT_ACTIVATED;
t = gnutls_x509_crt_get_expiration_time (cert);
+
+#if ENABLE(TIZEN_TV_DLOG)
+ if (t != (time_t) -1) {
+ ctime_r(&t, timebuf);
+ TIZEN_LOGI("[Certificate] CA expiration time is: %s", timebuf);
+ }
+ else
+ TIZEN_LOGI("[Certificate] gnutls_x509_crt_get_expiration_time ERROR");
+#endif
+
if (t == (time_t) -1 || t < now)
gtls_flags |= G_TLS_CERTIFICATE_EXPIRED;
#include <glib/gi18n-lib.h>
#include <gnutls/x509.h>
+#include <TIZEN.h>
+
+#if ENABLE(TIZEN_TV_MULTIPLE_CERTIFICATE)
+#include <dirent.h>
+#include <stdio.h>
+#include <sys/stat.h>
+#endif
static void g_tls_file_database_gnutls_file_database_interface_init (GTlsFileDatabaseInterface *iface);
static void g_tls_file_database_gnutls_initable_interface_init (GInitableIface *iface);
GMutex mutex;
/*
- * These are hash tables of GByteArray -> GPtrArray<GByteArray>. The values of
+ * These are hash tables of GBytes -> GPtrArray<GBytes>. The values of
* the ptr array are full DER encoded certificate values. The keys are byte
* arrays containing either subject DNs, issuer DNs, or full DER encoded certs
*/
GHashTable *issuers;
/*
- * This is a table of GByteArray -> GByteArray. The values and keys are
+ * This is a table of GBytes -> GBytes. The values and keys are
* DER encoded certificate values.
*/
GHashTable *complete;
/*
- * This is a table of gchar * -> GPtrArray<GByteArray>. The values of
+ * This is a table of gchar * -> GPtrArray<GBytes>. The values of
* the ptr array are full DER encoded certificate values. The keys are the
* string handles. This array is populated on demand.
*/
GHashTable *handles;
};
-static guint
-byte_array_hash (gconstpointer v)
-{
- const GByteArray *array = v;
- const signed char *p;
- guint32 h = 0;
- gsize i;
-
- g_assert (array);
- g_assert (array->data);
- p = (signed char*)array->data;
-
- /* 31 bit hash function */
- for (i = 0; i < array->len; ++i, ++p)
- h = (h << 5) - h + *p;
-
- return h;
-}
-
-static gboolean
-byte_array_equal (gconstpointer v1, gconstpointer v2)
-{
- const GByteArray *array1 = v1;
- const GByteArray *array2 = v2;
-
- if (array1 == array2)
- return TRUE;
- if (!array1 || !array2)
- return FALSE;
-
- if (array1->len != array2->len)
- return FALSE;
-
- if (array1->data == array2->data)
- return TRUE;
- if (!array1->data || !array2->data)
- return FALSE;
-
- return (memcmp (array1->data, array2->data, array1->len) == 0) ? TRUE : FALSE;
-}
-
static GHashTable *
-multi_byte_array_hash_new (void)
+bytes_multi_table_new (void)
{
- return g_hash_table_new_full (byte_array_hash, byte_array_equal,
- (GDestroyNotify)g_byte_array_unref,
+ return g_hash_table_new_full (g_bytes_hash, g_bytes_equal,
+ (GDestroyNotify)g_bytes_unref,
(GDestroyNotify)g_ptr_array_unref);
}
static void
-multi_byte_array_hash_insert (GHashTable *table, GByteArray *key, GByteArray *value)
+bytes_multi_table_insert (GHashTable *table,
+ GBytes *key,
+ GBytes *value)
{
GPtrArray *multi;
multi = g_hash_table_lookup (table, key);
if (multi == NULL)
{
- multi = g_ptr_array_new_with_free_func ((GDestroyNotify)g_byte_array_unref);
- g_hash_table_insert (table, g_byte_array_ref (key), multi);
+ multi = g_ptr_array_new_with_free_func ((GDestroyNotify)g_bytes_unref);
+ g_hash_table_insert (table, g_bytes_ref (key), multi);
}
- g_ptr_array_add (multi, g_byte_array_ref (value));
+ g_ptr_array_add (multi, g_bytes_ref (value));
}
-static GByteArray *
-multi_byte_array_hash_lookup_one (GHashTable *table, GByteArray *key)
+static GBytes *
+bytes_multi_table_lookup_ref_one (GHashTable *table,
+ GBytes *key)
{
GPtrArray *multi;
return NULL;
g_assert (multi->len > 0);
- return multi->pdata[0];
+ return g_bytes_ref (multi->pdata[0]);
}
-static GPtrArray *
-multi_byte_array_hash_lookup_all (GHashTable *table, GByteArray *key)
+static GList *
+bytes_multi_table_lookup_ref_all (GHashTable *table,
+ GBytes *key)
{
- return g_hash_table_lookup (table, key);
+ GPtrArray *multi;
+ GList *list = NULL;
+ gint i;
+
+ multi = g_hash_table_lookup (table, key);
+ if (multi == NULL)
+ return NULL;
+
+ for (i = 0; i < multi->len; i++)
+ list = g_list_prepend (list, g_bytes_ref (multi->pdata[i]));
+
+ return g_list_reverse (list);
}
static gchar *
create_handle_for_certificate (const gchar *filename,
- GByteArray *der)
+ GBytes *der)
{
gchar *bookmark;
gchar *uri_part;
if (!uri_part)
return NULL;
- bookmark = g_compute_checksum_for_data (G_CHECKSUM_SHA256,
- der->data, der->len);
+ bookmark = g_compute_checksum_for_bytes (G_CHECKSUM_SHA256, der);
uri = g_strconcat (uri_part, "#", bookmark, NULL);
g_free (bookmark);
{
GHashTable *handles;
GHashTableIter iter;
- GByteArray *der;
+ GBytes *der;
gchar *handle;
handles = g_hash_table_new_full (g_str_hash, g_str_equal, g_free,
- (GDestroyNotify)g_byte_array_unref);
+ (GDestroyNotify)g_bytes_unref);
g_hash_table_iter_init (&iter, complete);
while (g_hash_table_iter_next (&iter, NULL, (gpointer *)&der))
{
handle = create_handle_for_certificate (filename, der);
if (handle != NULL)
- g_hash_table_insert (handles, handle, g_byte_array_ref (der));
+ g_hash_table_insert (handles, handle, g_bytes_ref (der));
}
return handles;
GList *list, *l;
gnutls_x509_crt_t cert;
gnutls_datum_t dn;
- GByteArray *der;
- GByteArray *subject;
- GByteArray *issuer;
+ GBytes *der;
+ GBytes *subject;
+ GBytes *issuer;
gint gerr;
GError *my_error = NULL;
if (my_error)
{
g_propagate_error (error, my_error);
+#if ENABLE(TIZEN_TV_MULTIPLE_CERTIFICATE)
+ if ((error != NULL) && (*error != my_error))
+ g_error_free (my_error);
+#endif
return FALSE;
}
continue;
}
- subject = g_byte_array_new ();
- g_byte_array_append (subject, dn.data, dn.size);
- gnutls_free (dn.data);
+ subject = g_bytes_new_with_free_func (dn.data, dn.size, gnutls_free, dn.data);
gerr = gnutls_x509_crt_get_raw_issuer_dn (cert, &dn);
if (gerr < 0)
continue;
}
- issuer = g_byte_array_new ();
- g_byte_array_append (issuer, dn.data, dn.size);
- gnutls_free (dn.data);
+ issuer = g_bytes_new_with_free_func (dn.data, dn.size, gnutls_free, dn.data);
- /* Dig out the full value of this certificate's DER encoding */
- der = NULL;
- g_object_get (l->data, "certificate", &der, NULL);
- g_return_val_if_fail (der, FALSE);
+ der = g_tls_certificate_gnutls_get_bytes (l->data);
+ g_return_val_if_fail (der != NULL, FALSE);
/* Three different ways of looking up same certificate */
- multi_byte_array_hash_insert (subjects, subject, der);
- multi_byte_array_hash_insert (issuers, issuer, der);
+ bytes_multi_table_insert (subjects, subject, der);
+ bytes_multi_table_insert (issuers, issuer, der);
- g_hash_table_insert (complete, g_byte_array_ref (der),
- g_byte_array_ref (der));
+ g_hash_table_insert (complete, g_bytes_ref (der),
+ g_bytes_ref (der));
- g_byte_array_unref (der);
- g_byte_array_unref (subject);
- g_byte_array_unref (issuer);
+ g_bytes_unref (der);
+ g_bytes_unref (subject);
+ g_bytes_unref (issuer);
g_object_unref (l->data);
}
}
+#if ENABLE(TIZEN_TV_MULTIPLE_CERTIFICATE)
+static gboolean
+traverse_load_anchor_file (const gchar *filename,
+ GHashTable *subjects,
+ GHashTable *issuers,
+ GHashTable *complete,
+ GError **error)
+{
+ struct stat buf;
+ gboolean result = FALSE;
+ if (!stat(filename, &buf))
+ {
+ if (S_ISREG(buf.st_mode))
+ result = load_anchor_file (filename, subjects, issuers, complete, error);
+ else if (S_ISDIR(buf.st_mode))
+ {
+ DIR* pDir = opendir(filename);
+ if (pDir != NULL)
+ {
+ struct dirent dent;
+ struct dirent* dentp;
+ char *stFileName;
+ while (((readdir_r(pDir, &dent, &dentp)) == 0) && dentp)
+ {
+ if (!g_ascii_strcasecmp(dentp->d_name, ".") || !g_ascii_strcasecmp(dentp->d_name, ".."))
+ continue;
+
+ stFileName = g_strconcat (filename, "/", dentp->d_name, NULL);
+ if (stFileName && !stat(stFileName, &buf) && S_ISREG(buf.st_mode))
+ result = load_anchor_file (stFileName, subjects, issuers, complete, error);
+ g_free (stFileName);
+ }
+ closedir(pDir);
+ }
+ }
+ }
+ return result;
+}
+#endif
static void
g_tls_file_database_gnutls_finalize (GObject *object)
GTlsCertificate *certificate)
{
GTlsFileDatabaseGnutls *self = G_TLS_FILE_DATABASE_GNUTLS (database);
- GByteArray *der;
+ GBytes *der;
gboolean contains;
gchar *handle = NULL;
- g_object_get (certificate, "certificate", &der, NULL);
- g_return_val_if_fail (der, FALSE);
+ der = g_tls_certificate_gnutls_get_bytes (G_TLS_CERTIFICATE_GNUTLS (certificate));
+ g_return_val_if_fail (der != NULL, FALSE);
g_mutex_lock (&self->priv->mutex);
if (contains)
handle = create_handle_for_certificate (self->priv->anchor_filename, der);
- g_byte_array_unref (der);
+ g_bytes_unref (der);
return handle;
}
GError **error)
{
GTlsFileDatabaseGnutls *self = G_TLS_FILE_DATABASE_GNUTLS (database);
- GByteArray *der;
+ GTlsCertificate *cert;
+ GBytes *der;
gnutls_datum_t datum;
+ gsize length;
if (g_cancellable_set_error_if_cancelled (cancellable, error))
return NULL;
self->priv->complete);
der = g_hash_table_lookup (self->priv->handles, handle);
+ if (der != NULL)
+ g_bytes_ref (der);
g_mutex_unlock (&self->priv->mutex);
if (der == NULL)
return NULL;
- datum.data = der->data;
- datum.size = der->len;
+ datum.data = (unsigned char *)g_bytes_get_data (der, &length);
+ datum.size = length;
if (g_cancellable_set_error_if_cancelled (cancellable, error))
- return NULL;
+ cert = NULL;
+ else
+ cert = g_tls_certificate_gnutls_new (&datum, NULL);
- return g_tls_certificate_gnutls_new (&datum, NULL);
+ g_bytes_unref (der);
+ return cert;
}
static gboolean
GError **error)
{
GTlsFileDatabaseGnutls *self = G_TLS_FILE_DATABASE_GNUTLS (database);
- GByteArray *der = NULL;
+ GBytes *der = NULL;
gboolean contains;
if (g_cancellable_set_error_if_cancelled (cancellable, error))
* comparing them to the purpose.
*/
- g_object_get (certificate, "certificate", &der, NULL);
- g_return_val_if_fail (der, FALSE);
+ der = g_tls_certificate_gnutls_get_bytes (certificate);
g_mutex_lock (&self->priv->mutex);
contains = g_hash_table_lookup (self->priv->complete, der) ? TRUE : FALSE;
g_mutex_unlock (&self->priv->mutex);
- g_byte_array_unref (der);
+ g_bytes_unref (der);
if (g_cancellable_set_error_if_cancelled (cancellable, error))
return FALSE;
{
GTlsFileDatabaseGnutls *self = G_TLS_FILE_DATABASE_GNUTLS (database);
gnutls_datum_t dn = { NULL, 0 };
- GByteArray *subject, *der;
+ GBytes *subject, *der;
gnutls_datum_t datum;
GTlsCertificate *issuer = NULL;
gnutls_x509_crt_t cert;
+ gsize length;
int gerr;
g_return_val_if_fail (G_IS_TLS_CERTIFICATE_GNUTLS (certificate), NULL);
return NULL;
}
- subject = g_byte_array_new ();
- g_byte_array_append (subject, dn.data, dn.size);
- gnutls_free (dn.data);
+ subject = g_bytes_new_with_free_func (dn.data, dn.size, gnutls_free, dn.data);
/* Find the full DER value of the certificate */
g_mutex_lock (&self->priv->mutex);
- der = multi_byte_array_hash_lookup_one (self->priv->subjects, subject);
+ der = bytes_multi_table_lookup_ref_one (self->priv->subjects, subject);
g_mutex_unlock (&self->priv->mutex);
- g_byte_array_unref (subject);
+ g_bytes_unref (subject);
if (g_cancellable_set_error_if_cancelled (cancellable, error))
- return NULL;
-
- if (der != NULL)
{
- datum.data = der->data;
- datum.size = der->len;
+ issuer = NULL;
+ }
+ else if (der != NULL)
+ {
+ datum.data = (unsigned char *)g_bytes_get_data (der, &length);
+ datum.size = length;
issuer = g_tls_certificate_gnutls_new (&datum, NULL);
}
+ if (der != NULL)
+ g_bytes_unref (der);
return issuer;
}
GError **error)
{
GTlsFileDatabaseGnutls *self = G_TLS_FILE_DATABASE_GNUTLS (database);
- GByteArray *der;
+ GBytes *issuer;
gnutls_datum_t datum;
GList *issued = NULL;
- GPtrArray *ders;
+ GList *ders;
+ gsize length;
GList *l;
- guint i;
if (g_cancellable_set_error_if_cancelled (cancellable, error))
return NULL;
if (flags & G_TLS_DATABASE_LOOKUP_KEYPAIR)
return NULL;
+ issuer = g_bytes_new_static (issuer_raw_dn->data, issuer_raw_dn->len);
+
/* Find the full DER value of the certificate */
g_mutex_lock (&self->priv->mutex);
- ders = multi_byte_array_hash_lookup_all (self->priv->issuers, issuer_raw_dn);
+ ders = bytes_multi_table_lookup_ref_all (self->priv->issuers, issuer);
g_mutex_unlock (&self->priv->mutex);
- for (i = 0; ders && i < ders->len; i++)
+ g_bytes_unref (issuer);
+
+ for (l = ders; l != NULL; l = g_list_next (l))
{
if (g_cancellable_set_error_if_cancelled (cancellable, error))
{
- for (l = issued; l != NULL; l = l->next)
- g_object_unref (l->data);
- g_list_free (issued);
+ g_list_free_full (issued, g_object_unref);
issued = NULL;
break;
}
- der = ders->pdata[i];
- datum.data = der->data;
- datum.size = der->len;
+ datum.data = (unsigned char *)g_bytes_get_data (l->data, &length);
+ datum.size = length;
issued = g_list_prepend (issued, g_tls_certificate_gnutls_new (&datum, NULL));
}
+ g_list_free_full (ders, (GDestroyNotify)g_bytes_unref);
return issued;
}
{
GTlsFileDatabaseGnutls *self = G_TLS_FILE_DATABASE_GNUTLS (initable);
GHashTable *subjects, *issuers, *complete;
+#if ENABLE(TIZEN_TV_MULTIPLE_CERTIFICATE)
+ gboolean result = FALSE;
+#else
gboolean result;
+#endif
+#if ENABLE(TIZEN_TV_MULTIPLE_CERTIFICATE)
+ gboolean mutiple_certicate_result = FALSE;
+#endif
if (g_cancellable_set_error_if_cancelled (cancellable, error))
return FALSE;
- subjects = multi_byte_array_hash_new ();
- issuers = multi_byte_array_hash_new ();
+ subjects = bytes_multi_table_new ();
+ issuers = bytes_multi_table_new ();
- complete = g_hash_table_new_full (byte_array_hash, byte_array_equal,
- (GDestroyNotify)g_byte_array_unref,
- (GDestroyNotify)g_byte_array_unref);
+ complete = g_hash_table_new_full (g_bytes_hash, g_bytes_equal,
+ (GDestroyNotify)g_bytes_unref,
+ (GDestroyNotify)g_bytes_unref);
+#if ENABLE(TIZEN_TV_MULTIPLE_CERTIFICATE)
+ if (self->priv->anchor_filename)
+ {
+ gchar **paths = g_strsplit (self->priv->anchor_filename, ":", 0);
+ gint i;
+ for (i = 0; paths[i]; i++)
+ {
+ mutiple_certicate_result = traverse_load_anchor_file (paths[i], subjects, issuers, complete, error);
+ if (mutiple_certicate_result == TRUE)
+ result = TRUE;
+ }
+ if((*error == NULL) && (result == FALSE))
+ *error = g_error_new (G_CONVERT_ERROR, G_CONVERT_ERROR_ILLEGAL_SEQUENCE,
+ _("Invalid byte sequence in conversion input"));
+ if((*error != NULL) && (result == TRUE))
+ g_error_free(*error);
+ g_strfreev(paths);
+ }
+ else
+ *error = g_error_new (G_CONVERT_ERROR, G_CONVERT_ERROR_ILLEGAL_SEQUENCE,
+ _("Invalid byte sequence in conversion input"));
+#else
result = load_anchor_file (self->priv->anchor_filename, subjects, issuers,
complete, error);
+#endif
if (g_cancellable_set_error_if_cancelled (cancellable, error))
result = FALSE;
struct _GTlsInputStreamGnutlsPrivate
{
GTlsConnectionGnutls *conn;
-
- /* pending operation metadata */
- GCancellable *cancellable;
- gpointer buffer;
- gsize count;
};
static void
}
static gboolean
-g_tls_input_stream_gnutls_read_ready (GPollableInputStream *stream,
- gpointer user_data)
-{
- GTlsInputStreamGnutls *tls_stream;
- GSimpleAsyncResult *simple = user_data;
- gssize nread;
- GError *error = NULL;
-
- tls_stream = G_TLS_INPUT_STREAM_GNUTLS (g_async_result_get_source_object (G_ASYNC_RESULT (simple)));
- g_object_unref (tls_stream);
-
- nread = g_tls_connection_gnutls_read (tls_stream->priv->conn,
- tls_stream->priv->buffer,
- tls_stream->priv->count, FALSE,
- tls_stream->priv->cancellable,
- &error);
- if (nread == -1 &&
- g_error_matches (error, G_IO_ERROR, G_IO_ERROR_WOULD_BLOCK))
- {
- g_error_free (error);
- return TRUE;
- }
-
- if (error)
- {
- g_simple_async_result_set_from_error (simple, error);
- g_error_free (error);
- }
- else
- g_simple_async_result_set_op_res_gssize (simple, nread);
-
- if (tls_stream->priv->cancellable)
- g_object_unref (tls_stream->priv->cancellable);
- g_simple_async_result_complete (simple);
- g_object_unref (simple);
-
- return FALSE;
-}
-
-static void
-g_tls_input_stream_gnutls_read_async (GInputStream *stream,
- void *buffer,
- gsize count,
- gint io_priority,
- GCancellable *cancellable,
- GAsyncReadyCallback callback,
- gpointer user_data)
-{
- GTlsInputStreamGnutls *tls_stream = G_TLS_INPUT_STREAM_GNUTLS (stream);
- GSimpleAsyncResult *simple;
- gssize nread;
- GError *error = NULL;
- GSource *source;
-
- g_return_if_fail (tls_stream->priv->conn != NULL);
-
- simple = g_simple_async_result_new (G_OBJECT (stream), callback, user_data,
- g_tls_input_stream_gnutls_read_async);
- nread = g_tls_connection_gnutls_read (tls_stream->priv->conn,
- buffer, count, FALSE,
- cancellable, &error);
-
- if (nread >= 0 ||
- !g_error_matches (error, G_IO_ERROR, G_IO_ERROR_WOULD_BLOCK))
- {
- if (error)
- {
- g_simple_async_result_set_from_error (simple, error);
- g_error_free (error);
- }
- else
- g_simple_async_result_set_op_res_gssize (simple, nread);
- g_simple_async_result_complete_in_idle (simple);
- g_object_unref (simple);
- return;
- }
-
- if (error)
- g_error_free (error);
-
- tls_stream->priv->cancellable = cancellable ? g_object_ref (cancellable) : NULL;
- tls_stream->priv->buffer = buffer;
- tls_stream->priv->count = count;
-
- source = g_tls_connection_gnutls_create_source (tls_stream->priv->conn,
- G_IO_IN,
- tls_stream->priv->cancellable);
- g_source_set_callback (source,
- (GSourceFunc) g_tls_input_stream_gnutls_read_ready,
- simple, NULL);
- g_source_attach (source, g_main_context_get_thread_default ());
- g_source_unref (source);
-}
-
-static gssize
-g_tls_input_stream_gnutls_read_finish (GInputStream *stream,
- GAsyncResult *result,
- GError **error)
-{
- g_return_val_if_fail (G_IS_TLS_INPUT_STREAM_GNUTLS (stream), -1);
- g_return_val_if_fail (g_simple_async_result_is_valid (result, G_OBJECT (stream), g_tls_input_stream_gnutls_read_async), -1);
-
- return g_simple_async_result_get_op_res_gssize (G_SIMPLE_ASYNC_RESULT (result));
-}
-
-static gboolean
g_tls_input_stream_gnutls_pollable_is_readable (GPollableInputStream *pollable)
{
GTlsInputStreamGnutls *tls_stream = G_TLS_INPUT_STREAM_GNUTLS (pollable);
gobject_class->dispose = g_tls_input_stream_gnutls_dispose;
input_stream_class->read_fn = g_tls_input_stream_gnutls_read;
- input_stream_class->read_async = g_tls_input_stream_gnutls_read_async;
- input_stream_class->read_finish = g_tls_input_stream_gnutls_read_finish;
}
static void
struct _GTlsOutputStreamGnutlsPrivate
{
GTlsConnectionGnutls *conn;
-
- /* pending operation metadata */
- GCancellable *cancellable;
- gconstpointer buffer;
- gsize count;
};
static void
}
static gboolean
-g_tls_output_stream_gnutls_write_ready (GIOStreamAdapter *adapter,
- gpointer user_data)
-{
- GTlsOutputStreamGnutls *tls_stream;
- GSimpleAsyncResult *simple = user_data;
- gssize nwrote;
- GError *error = NULL;
-
- tls_stream = G_TLS_OUTPUT_STREAM_GNUTLS (g_async_result_get_source_object (G_ASYNC_RESULT (simple)));
- g_object_unref (tls_stream);
-
- nwrote = g_tls_connection_gnutls_write (tls_stream->priv->conn,
- tls_stream->priv->buffer,
- tls_stream->priv->count, FALSE,
- tls_stream->priv->cancellable,
- &error);
- if (nwrote == -1 &&
- g_error_matches (error, G_IO_ERROR, G_IO_ERROR_WOULD_BLOCK))
- {
- g_error_free (error);
- return TRUE;
- }
-
- if (error)
- {
- g_simple_async_result_set_from_error (simple, error);
- g_error_free (error);
- }
- else
- g_simple_async_result_set_op_res_gssize (simple, nwrote);
-
- if (tls_stream->priv->cancellable)
- g_object_unref (tls_stream->priv->cancellable);
- g_simple_async_result_complete (simple);
- g_object_unref (simple);
-
- return FALSE;
-}
-
-static void
-g_tls_output_stream_gnutls_write_async (GOutputStream *stream,
- const void *buffer,
- gsize count,
- gint io_priority,
- GCancellable *cancellable,
- GAsyncReadyCallback callback,
- gpointer user_data)
-{
- GTlsOutputStreamGnutls *tls_stream = G_TLS_OUTPUT_STREAM_GNUTLS (stream);
- GSimpleAsyncResult *simple;
- gssize nwrote;
- GError *error = NULL;
- GSource *source;
-
- g_return_if_fail (tls_stream->priv->conn != NULL);
-
- simple = g_simple_async_result_new (G_OBJECT (stream), callback, user_data,
- g_tls_output_stream_gnutls_write_async);
- nwrote = g_tls_connection_gnutls_write (tls_stream->priv->conn,
- buffer, count, FALSE,
- cancellable, &error);
-
- if (nwrote >= 0 ||
- !g_error_matches (error, G_IO_ERROR, G_IO_ERROR_WOULD_BLOCK))
- {
- if (error)
- {
- g_simple_async_result_set_from_error (simple, error);
- g_error_free (error);
- }
- else
- g_simple_async_result_set_op_res_gssize (simple, nwrote);
- g_simple_async_result_complete_in_idle (simple);
- g_object_unref (simple);
- return;
- }
-
- if (error)
- g_error_free (error);
-
- tls_stream->priv->cancellable = cancellable ? g_object_ref (cancellable) : NULL;
- tls_stream->priv->buffer = buffer;
- tls_stream->priv->count = count;
-
- source = g_tls_connection_gnutls_create_source (tls_stream->priv->conn,
- G_IO_OUT,
- tls_stream->priv->cancellable);
- g_source_set_callback (source,
- (GSourceFunc) g_tls_output_stream_gnutls_write_ready,
- simple, NULL);
- g_source_attach (source, g_main_context_get_thread_default ());
- g_source_unref (source);
-}
-
-static gssize
-g_tls_output_stream_gnutls_write_finish (GOutputStream *stream,
- GAsyncResult *result,
- GError **error)
-{
- g_return_val_if_fail (G_IS_TLS_OUTPUT_STREAM_GNUTLS (stream), -1);
- g_return_val_if_fail (g_simple_async_result_is_valid (result, G_OBJECT (stream), g_tls_output_stream_gnutls_write_async), -1);
-
- return g_simple_async_result_get_op_res_gssize (G_SIMPLE_ASYNC_RESULT (result));
-}
-
-static gboolean
g_tls_output_stream_gnutls_pollable_is_writable (GPollableOutputStream *pollable)
{
GTlsOutputStreamGnutls *tls_stream = G_TLS_OUTPUT_STREAM_GNUTLS (pollable);
gobject_class->dispose = g_tls_output_stream_gnutls_dispose;
output_stream_class->write_fn = g_tls_output_stream_gnutls_write;
- output_stream_class->write_async = g_tls_output_stream_gnutls_write_async;
- output_stream_class->write_finish = g_tls_output_stream_gnutls_write_finish;
}
static void
gnutls_certificate_server_set_request (session, req_mode);
}
-static gboolean
-g_tls_server_connection_gnutls_verify_peer (GTlsConnectionGnutls *gnutls,
- GTlsCertificate *peer_certificate,
- GTlsCertificateFlags *errors)
-{
- GTlsDatabase *database;
- GError *error = NULL;
-
- database = g_tls_connection_get_database (G_TLS_CONNECTION (gnutls));
- if (database == NULL)
- {
- *errors |= G_TLS_CERTIFICATE_UNKNOWN_CA;
- *errors |= g_tls_certificate_verify (peer_certificate, NULL, NULL);
- }
- else
- {
- *errors |= g_tls_database_verify_chain (database, peer_certificate,
- G_TLS_DATABASE_PURPOSE_AUTHENTICATE_CLIENT, NULL,
- g_tls_connection_get_interaction (G_TLS_CONNECTION (gnutls)),
- G_TLS_DATABASE_VERIFY_NONE,
- NULL, &error);
- if (error)
- {
- g_warning ("failure verifying certificate chain: %s",
- error->message);
- g_clear_error (&error);
- }
- }
-
- return g_tls_connection_emit_accept_certificate (G_TLS_CONNECTION (gnutls),
- peer_certificate, *errors);
-}
-
static void
g_tls_server_connection_gnutls_finish_handshake (GTlsConnectionGnutls *gnutls,
- gboolean success,
GError **inout_error)
{
}
connection_gnutls_class->failed = g_tls_server_connection_gnutls_failed;
connection_gnutls_class->begin_handshake = g_tls_server_connection_gnutls_begin_handshake;
- connection_gnutls_class->verify_peer = g_tls_server_connection_gnutls_verify_peer;
connection_gnutls_class->finish_handshake = g_tls_server_connection_gnutls_finish_handshake;
g_object_class_override_property (gobject_class, PROP_AUTHENTICATION_MODE, "authentication-mode");
-include $(top_srcdir)/Makefile.decl
+include $(top_srcdir)/glib-networking.mk
-noinst_LTLIBRARIES = \
+noinst_LTLIBRARIES += \
libgiopkcs11.la
libgiopkcs11_la_SOURCES = \
$(GLIB_LIBS) \
$(NULL)
-INCLUDES += \
+AM_CPPFLAGS += \
$(PKCS11_CFLAGS) \
-DG_DISABLE_DEPRECATED
-include $(top_srcdir)/Makefile.decl
+include $(top_srcdir)/glib-networking.mk
-INCLUDES += \
+AM_CPPFLAGS += \
-I$(top_srcdir)/tls \
+ -I$(top_builddir)/tls \
-DSRCDIR=\""$(abs_srcdir)"\" \
-DTOP_BUILDDIR=\""$(top_builddir)"\"
-noinst_PROGRAMS = $(TEST_PROGS)
-
LDADD = \
$(GLIB_LIBS)
-TEST_PROGS += \
+test_programs = \
certificate \
+ file-database \
connection \
$(NULL)
if HAVE_PKCS11
-TEST_PROGS += \
+test_programs += \
pkcs11-util \
pkcs11-array \
pkcs11-pin \
pkcs11-slot
-INCLUDES += $(PKCS11_CFLAGS)
+AM_CPPFLAGS += \
+ $(PKCS11_CFLAGS) \
+ $(GNUTLS_CFLAGS)
+
LDADD += $(top_builddir)/tls/pkcs11/libgiopkcs11.la $(PKCS11_LIBS)
pkcs11_slot_SOURCES = pkcs11-slot.c \
endif
-DISTCLEANFILES = \
- $(NULL)
-
EXTRA_DIST += \
files \
$(NULL)
#define TEST_FILE(name) (SRCDIR "/files/" name)
typedef struct {
- gchar *pem;
- gsize pem_length;
- GByteArray *der;
+ GTlsBackend *backend;
+ GType cert_gtype;
+ gchar *cert_pem;
+ gsize cert_pem_length;
+ GByteArray *cert_der;
+ gchar *key_pem;
+ gsize key_pem_length;
+ GByteArray *key_der;
} TestCertificate;
static void
gchar *contents;
gsize length;
- g_file_get_contents (TEST_FILE ("server.pem"),
- &test->pem, &test->pem_length, &error);
+ test->backend = g_tls_backend_get_default ();
+ test->cert_gtype = g_tls_backend_get_certificate_type (test->backend);
+
+ g_file_get_contents (TEST_FILE ("server.pem"), &test->cert_pem,
+ &test->cert_pem_length, &error);
g_assert_no_error (error);
g_file_get_contents (TEST_FILE ("server.der"),
&contents, &length, &error);
g_assert_no_error (error);
- test->der = g_byte_array_new ();
- g_byte_array_append (test->der, (guint8 *)contents, length);
+ test->cert_der = g_byte_array_new ();
+ g_byte_array_append (test->cert_der, (guint8 *)contents, length);
+ g_free (contents);
+
+ g_file_get_contents (TEST_FILE ("server-key.pem"), &test->key_pem,
+ &test->key_pem_length, &error);
+ g_assert_no_error (error);
+
+ g_file_get_contents (TEST_FILE ("server-key.der"),
+ &contents, &length, &error);
+ g_assert_no_error (error);
+
+ test->key_der = g_byte_array_new ();
+ g_byte_array_append (test->key_der, (guint8 *)contents, length);
g_free (contents);
}
static void
-teardown_certificate (TestCertificate *test, gconstpointer data)
+teardown_certificate (TestCertificate *test,
+ gconstpointer data)
{
- g_free (test->pem);
- g_byte_array_free (test->der, TRUE);
+ g_free (test->cert_pem);
+ g_byte_array_free (test->cert_der, TRUE);
+
+ g_free (test->key_pem);
+ g_byte_array_free (test->key_der, TRUE);
}
static void
-test_create_destroy_certificate_pem (TestCertificate *test, gconstpointer data)
+test_create_pem (TestCertificate *test,
+ gconstpointer data)
{
GTlsCertificate *cert;
gchar *pem = NULL;
GError *error = NULL;
- cert = g_tls_certificate_new_from_pem (test->pem, test->pem_length, &error);
+ cert = g_tls_certificate_new_from_pem (test->cert_pem, test->cert_pem_length, &error);
g_assert_no_error (error);
g_assert (G_IS_TLS_CERTIFICATE (cert));
g_object_get (cert, "certificate-pem", &pem, NULL);
- g_assert_cmpstr (pem, ==, test->pem);
+ g_assert_cmpstr (pem, ==, test->cert_pem);
g_free (pem);
g_object_add_weak_pointer (G_OBJECT (cert), (gpointer *)&cert);
}
static void
-test_create_destroy_certificate_der (TestCertificate *test, gconstpointer data)
+test_create_with_key_pem (TestCertificate *test,
+ gconstpointer data)
+{
+ GTlsCertificate *cert;
+ GError *error = NULL;
+
+ cert = g_initable_new (test->cert_gtype, NULL, &error,
+ "certificate-pem", test->cert_pem,
+ "private-key-pem", test->key_pem,
+ NULL);
+ g_assert_no_error (error);
+ g_assert (G_IS_TLS_CERTIFICATE (cert));
+
+ g_object_add_weak_pointer (G_OBJECT (cert), (gpointer *)&cert);
+ g_object_unref (cert);
+ g_assert (cert == NULL);
+}
+
+static void
+test_create_der (TestCertificate *test,
+ gconstpointer data)
{
GTlsCertificate *cert;
GByteArray *der = NULL;
GError *error = NULL;
- GTlsBackend *backend;
- backend = g_tls_backend_get_default ();
- cert = g_initable_new (g_tls_backend_get_certificate_type (backend),
- NULL, &error,
- "certificate", test->der,
+ cert = g_initable_new (test->cert_gtype, NULL, &error,
+ "certificate", test->cert_der,
NULL);
g_assert_no_error (error);
g_assert (G_IS_TLS_CERTIFICATE (cert));
g_object_get (cert, "certificate", &der, NULL);
g_assert (der);
- g_assert_cmpuint (der->len, ==, test->der->len);
- g_assert (memcmp (der->data, test->der->data, der->len) == 0);
+ g_assert_cmpuint (der->len, ==, test->cert_der->len);
+ g_assert (memcmp (der->data, test->cert_der->data, der->len) == 0);
+
g_byte_array_unref (der);
g_object_add_weak_pointer (G_OBJECT (cert), (gpointer *)&cert);
}
static void
+test_create_with_key_der (TestCertificate *test,
+ gconstpointer data)
+{
+ GTlsCertificate *cert;
+ GError *error = NULL;
+
+ cert = g_initable_new (test->cert_gtype, NULL, &error,
+ "certificate", test->cert_der,
+ "private-key", test->key_der,
+ NULL);
+ g_assert_no_error (error);
+ g_assert (G_IS_TLS_CERTIFICATE (cert));
+
+ g_object_add_weak_pointer (G_OBJECT (cert), (gpointer *)&cert);
+ g_object_unref (cert);
+ g_assert (cert == NULL);
+}
+
+static void
test_create_certificate_with_issuer (TestCertificate *test,
gconstpointer data)
{
GTlsCertificate *cert, *issuer, *check;
GError *error = NULL;
- GTlsBackend *backend;
issuer = g_tls_certificate_new_from_file (TEST_FILE ("ca.pem"), &error);
g_assert_no_error (error);
g_assert (G_IS_TLS_CERTIFICATE (issuer));
- backend = g_tls_backend_get_default ();
- cert = g_initable_new (g_tls_backend_get_certificate_type (backend),
- NULL, &error,
- "certificate-pem", test->pem,
+ cert = g_initable_new (test->cert_gtype, NULL, &error,
+ "certificate-pem", test->cert_pem,
"issuer", issuer,
NULL);
g_assert_no_error (error);
}
static void
-test_verify_database_good (TestVerify *test,
- gconstpointer data)
+test_certificate_is_same (void)
{
- GTlsCertificateFlags errors;
+ GTlsCertificate *one;
+ GTlsCertificate *two;
+ GTlsCertificate *three;
GError *error = NULL;
- errors = g_tls_database_verify_chain (test->database, test->cert,
- G_TLS_DATABASE_PURPOSE_AUTHENTICATE_SERVER,
- test->identity, NULL, 0, NULL, &error);
+ one = g_tls_certificate_new_from_file (TEST_FILE ("client.pem"), &error);
g_assert_no_error (error);
- g_assert_cmpuint (errors, ==, 0);
- errors = g_tls_database_verify_chain (test->database, test->cert,
- G_TLS_DATABASE_PURPOSE_AUTHENTICATE_SERVER,
- NULL, NULL, 0, NULL, &error);
- g_assert_cmpuint (errors, ==, 0);
-}
-
-static void
-test_verify_database_bad_identity (TestVerify *test,
- gconstpointer data)
-{
- GSocketConnectable *identity;
- GTlsCertificateFlags errors;
- GError *error = NULL;
-
- identity = g_network_address_new ("other.example.com", 80);
-
- errors = g_tls_database_verify_chain (test->database, test->cert,
- G_TLS_DATABASE_PURPOSE_AUTHENTICATE_SERVER,
- identity, NULL, 0, NULL, &error);
+ two = g_tls_certificate_new_from_file (TEST_FILE ("client-and-key.pem"), &error);
g_assert_no_error (error);
- g_assert_cmpuint (errors, ==, G_TLS_CERTIFICATE_BAD_IDENTITY);
-
- g_object_unref (identity);
-}
-
-static void
-test_verify_database_bad_ca (TestVerify *test,
- gconstpointer data)
-{
- GTlsCertificateFlags errors;
- GTlsCertificate *cert;
- GError *error = NULL;
-
- /* Use another certificate which isn't in our CA list */
- cert = g_tls_certificate_new_from_file (TEST_FILE ("server-self.pem"), &error);
- g_assert_no_error (error);
- g_assert (G_IS_TLS_CERTIFICATE (cert));
-
- errors = g_tls_database_verify_chain (test->database, cert,
- G_TLS_DATABASE_PURPOSE_AUTHENTICATE_SERVER,
- test->identity, NULL, 0, NULL, &error);
- g_assert_no_error (error);
- g_assert_cmpuint (errors, ==, G_TLS_CERTIFICATE_UNKNOWN_CA);
- g_object_unref (cert);
-}
-
-static void
-test_verify_database_bad_before (TestVerify *test,
- gconstpointer data)
-{
- GTlsCertificateFlags errors;
- GTlsCertificate *cert;
- GError *error = NULL;
-
- /* This is a certificate in the future */
- cert = g_tls_certificate_new_from_file (TEST_FILE ("client-future.pem"), &error);
+ three = g_tls_certificate_new_from_file (TEST_FILE ("server.pem"), &error);
g_assert_no_error (error);
- g_assert (G_IS_TLS_CERTIFICATE (cert));
- errors = g_tls_database_verify_chain (test->database, cert,
- G_TLS_DATABASE_PURPOSE_AUTHENTICATE_SERVER,
- NULL, NULL, 0, NULL, &error);
- g_assert_no_error (error);
- g_assert_cmpuint (errors, ==, G_TLS_CERTIFICATE_NOT_ACTIVATED);
+ g_assert (g_tls_certificate_is_same (one, two) == TRUE);
+ g_assert (g_tls_certificate_is_same (two, one) == TRUE);
+ g_assert (g_tls_certificate_is_same (three, one) == FALSE);
+ g_assert (g_tls_certificate_is_same (one, three) == FALSE);
+ g_assert (g_tls_certificate_is_same (two, three) == FALSE);
+ g_assert (g_tls_certificate_is_same (three, two) == FALSE);
- g_object_unref (cert);
-}
-
-static void
-test_verify_database_bad_expired (TestVerify *test,
- gconstpointer data)
-{
- GTlsCertificateFlags errors;
- GTlsCertificate *cert;
- GError *error = NULL;
-
- /* This is a certificate in the future */
- cert = g_tls_certificate_new_from_file (TEST_FILE ("client-past.pem"), &error);
- g_assert_no_error (error);
- g_assert (G_IS_TLS_CERTIFICATE (cert));
-
- errors = g_tls_database_verify_chain (test->database, cert,
- G_TLS_DATABASE_PURPOSE_AUTHENTICATE_SERVER,
- NULL, NULL, 0, NULL, &error);
- g_assert_no_error (error);
- g_assert_cmpuint (errors, ==, G_TLS_CERTIFICATE_EXPIRED);
-
- g_object_unref (cert);
-}
-
-static void
-test_verify_database_bad_combo (TestVerify *test,
- gconstpointer data)
-{
- GTlsCertificate *cert;
- GSocketConnectable *identity;
- GTlsCertificateFlags errors;
- GError *error = NULL;
-
- cert = g_tls_certificate_new_from_file (TEST_FILE ("server-self.pem"), &error);
- g_assert_no_error (error);
- g_assert (G_IS_TLS_CERTIFICATE (cert));
-
- /*
- * - Use is self signed
- * - Use wrong identity.
- */
-
- identity = g_network_address_new ("other.example.com", 80);
-
- errors = g_tls_database_verify_chain (test->database, cert,
- G_TLS_DATABASE_PURPOSE_AUTHENTICATE_SERVER,
- identity, NULL, 0, NULL, &error);
- g_assert_no_error (error);
- g_assert_cmpuint (errors, ==, G_TLS_CERTIFICATE_UNKNOWN_CA |
- G_TLS_CERTIFICATE_BAD_IDENTITY);
-
- g_object_unref (cert);
- g_object_unref (identity);
-}
-
-/* -----------------------------------------------------------------------------
- * FILE DATABASE
- */
-
-typedef struct {
- GTlsDatabase *database;
- const gchar *path;
-} TestFileDatabase;
-
-static void
-setup_file_database (TestFileDatabase *test,
- gconstpointer data)
-{
- GError *error = NULL;
-
- test->path = TEST_FILE ("ca-roots.pem");
- test->database = g_tls_file_database_new (test->path, &error);
- g_assert_no_error (error);
- g_assert (G_IS_TLS_DATABASE (test->database));
-}
-
-static void
-teardown_file_database (TestFileDatabase *test,
- gconstpointer data)
-{
- g_assert (G_IS_TLS_DATABASE (test->database));
- g_object_add_weak_pointer (G_OBJECT (test->database),
- (gpointer *)&test->database);
- g_object_unref (test->database);
- g_assert (test->database == NULL);
-}
-
-static void
-test_file_database_handle (TestFileDatabase *test,
- gconstpointer unused)
-{
- GTlsCertificate *certificate;
- GTlsCertificate *check;
- GError *error = NULL;
- gchar *handle;
-
- /*
- * ca.pem is in the ca-roots.pem that the test->database represents.
- * So it should be able to create a handle for it and treat it as if it
- * is 'in' the database.
- */
-
- certificate = g_tls_certificate_new_from_file (TEST_FILE ("ca.pem"), &error);
- g_assert_no_error (error);
- g_assert (G_IS_TLS_CERTIFICATE (certificate));
-
- handle = g_tls_database_create_certificate_handle (test->database, certificate);
- g_assert (handle != NULL);
- g_assert (g_str_has_prefix (handle, "file:///"));
-
- check = g_tls_database_lookup_certificate_for_handle (test->database, handle,
- NULL, G_TLS_DATABASE_LOOKUP_NONE,
- NULL, &error);
- g_assert_no_error (error);
- g_assert (G_IS_TLS_CERTIFICATE (check));
-
- g_free (handle);
- g_object_unref (check);
- g_object_unref (certificate);
-}
-
-static void
-test_file_database_handle_invalid (TestFileDatabase *test,
- gconstpointer unused)
-{
- GTlsCertificate *certificate;
- GError *error = NULL;
-
- certificate = g_tls_database_lookup_certificate_for_handle (test->database, "blah:blah",
- NULL, G_TLS_DATABASE_LOOKUP_NONE,
- NULL, &error);
- g_assert_no_error (error);
- g_assert (certificate == NULL);
-}
-
-/* -----------------------------------------------------------------------------
- * BACKEND
- */
-
-static void
-test_default_database_is_singleton (void)
-{
- GTlsBackend *backend;
- GTlsDatabase *database;
- GTlsDatabase *check;
-
- backend = g_tls_backend_get_default ();
- g_assert (G_IS_TLS_BACKEND (backend));
-
- database = g_tls_backend_get_default_database (backend);
- g_assert (G_IS_TLS_DATABASE (database));
-
- check = g_tls_backend_get_default_database (backend);
- g_assert (database == check);
-
- g_object_unref (database);
- g_object_unref (check);
+ g_object_unref (one);
+ g_object_unref (two);
+ g_object_unref (three);
}
int
main (int argc,
char *argv[])
{
- g_type_init ();
g_test_init (&argc, &argv, NULL);
g_setenv ("GSETTINGS_BACKEND", "memory", TRUE);
g_setenv ("GIO_EXTRA_MODULES", TOP_BUILDDIR "/tls/gnutls/.libs", TRUE);
g_setenv ("GIO_USE_TLS", "gnutls", TRUE);
- g_test_add_func ("/tls/backend/default-database-is-singleton",
- test_default_database_is_singleton);
-
- g_test_add ("/tls/certificate/create-destroy-pem", TestCertificate, NULL,
- setup_certificate, test_create_destroy_certificate_pem, teardown_certificate);
- g_test_add ("/tls/certificate/create-destroy-der", TestCertificate, NULL,
- setup_certificate, test_create_destroy_certificate_der, teardown_certificate);
+ g_test_add ("/tls/certificate/create-pem", TestCertificate, NULL,
+ setup_certificate, test_create_pem, teardown_certificate);
+ g_test_add ("/tls/certificate/create-der", TestCertificate, NULL,
+ setup_certificate, test_create_der, teardown_certificate);
+ g_test_add ("/tls/certificate/create-with-key-pem", TestCertificate, NULL,
+ setup_certificate, test_create_with_key_pem, teardown_certificate);
+ g_test_add ("/tls/certificate/create-with-key-der", TestCertificate, NULL,
+ setup_certificate, test_create_with_key_der, teardown_certificate);
g_test_add ("/tls/certificate/create-with-issuer", TestCertificate, NULL,
setup_certificate, test_create_certificate_with_issuer, teardown_certificate);
setup_verify, test_verify_certificate_bad_expired, teardown_verify);
g_test_add ("/tls/certificate/verify-bad-combo", TestVerify, NULL,
setup_verify, test_verify_certificate_bad_combo, teardown_verify);
- g_test_add ("/tls/database/verify-good", TestVerify, NULL,
- setup_verify, test_verify_database_good, teardown_verify);
- g_test_add ("/tls/database/verify-bad-identity", TestVerify, NULL,
- setup_verify, test_verify_database_bad_identity, teardown_verify);
- g_test_add ("/tls/database/verify-bad-ca", TestVerify, NULL,
- setup_verify, test_verify_database_bad_ca, teardown_verify);
- g_test_add ("/tls/database/verify-bad-before", TestVerify, NULL,
- setup_verify, test_verify_database_bad_before, teardown_verify);
- g_test_add ("/tls/database/verify-bad-expired", TestVerify, NULL,
- setup_verify, test_verify_database_bad_expired, teardown_verify);
- g_test_add ("/tls/database/verify-bad-combo", TestVerify, NULL,
- setup_verify, test_verify_database_bad_combo, teardown_verify);
-
- g_test_add ("/tls/file-database/test-handle", TestFileDatabase, NULL,
- setup_file_database, test_file_database_handle, teardown_file_database);
- g_test_add ("/tls/file-database/test-handle-invalid", TestFileDatabase, NULL,
- setup_file_database, test_file_database_handle_invalid, teardown_file_database);
+
+ g_test_add_func ("/tls/certificate/is-same", test_certificate_is_same);
return g_test_run();
}
GTlsAuthenticationMode auth_mode;
gboolean rehandshake;
GTlsCertificateFlags accept_flags;
+ GError *read_error;
+ gboolean expect_server_error;
+ GError *server_error;
+ gboolean server_closed;
+
+ char buf[128];
+ gssize nread, nwrote;
} TestConnection;
static void
g_object_add_weak_pointer (G_OBJECT (test->service), (gpointer *)&test->service);
g_object_unref (test->service);
while (test->service)
- g_main_context_iteration (NULL, TRUE);
+ g_main_context_iteration (NULL, FALSE);
}
if (test->server_connection)
{
+ while (!test->server_closed)
+ g_main_context_iteration (NULL, FALSE);
+
g_assert (G_IS_TLS_SERVER_CONNECTION (test->server_connection));
g_object_add_weak_pointer (G_OBJECT (test->server_connection),
(gpointer *)&test->server_connection);
g_object_unref (test->server_connection);
- g_assert (test->server_connection == NULL);
+ while (test->server_connection)
+ g_main_context_iteration (NULL, FALSE);
}
if (test->client_connection)
g_object_add_weak_pointer (G_OBJECT (test->client_connection),
(gpointer *)&test->client_connection);
g_object_unref (test->client_connection);
- g_assert (test->client_connection == NULL);
+ while (test->client_connection)
+ g_main_context_iteration (NULL, FALSE);
}
if (test->database)
g_object_add_weak_pointer (G_OBJECT (test->database),
(gpointer *)&test->database);
g_object_unref (test->database);
- g_assert (test->database == NULL);
+ while (test->database)
+ g_main_context_iteration (NULL, FALSE);
}
g_object_unref (test->address);
g_object_unref (test->identity);
g_main_loop_unref (test->loop);
+ g_clear_error (&test->read_error);
+ g_clear_error (&test->server_error);
}
static gboolean
}
static void
-on_output_close_finish (GObject *object,
+on_server_close_finish (GObject *object,
GAsyncResult *res,
gpointer user_data)
{
+ TestConnection *test = user_data;
GError *error = NULL;
- g_output_stream_close_finish (G_OUTPUT_STREAM (object), res, &error);
- g_assert_no_error (error);
+
+ g_io_stream_close_finish (G_IO_STREAM (object), res, &error);
+ if (test->expect_server_error)
+ g_assert (error != NULL);
+ else
+ g_assert_no_error (error);
+ test->server_closed = TRUE;
}
static void
gpointer user_data)
{
TestConnection *test = user_data;
- GError *error = NULL;
- g_output_stream_write_finish (G_OUTPUT_STREAM (object), res, &error);
- g_assert_no_error (error);
+ g_assert (test->server_error == NULL);
+ g_output_stream_write_finish (G_OUTPUT_STREAM (object), res, &test->server_error);
- if (test->rehandshake)
+ if (!test->server_error && test->rehandshake)
{
test->rehandshake = FALSE;
g_tls_connection_handshake_async (G_TLS_CONNECTION (test->server_connection),
return;
}
- g_output_stream_close_async (G_OUTPUT_STREAM (object), G_PRIORITY_DEFAULT, NULL,
- on_output_close_finish, test);
+ g_io_stream_close_async (test->server_connection, G_PRIORITY_DEFAULT, NULL,
+ on_server_close_finish, test);
}
static gboolean
}
static void
-start_server_service (TestConnection *test, GTlsAuthenticationMode auth_mode)
+start_async_server_service (TestConnection *test, GTlsAuthenticationMode auth_mode)
{
GError *error = NULL;
g_signal_connect (test->service, "incoming", G_CALLBACK (on_incoming_connection), test);
}
-static GIOStream*
-start_server_and_connect_to_it (TestConnection *test, GTlsAuthenticationMode auth_mode)
+static GIOStream *
+start_async_server_and_connect_to_it (TestConnection *test, GTlsAuthenticationMode auth_mode)
{
GSocketClient *client;
GError *error = NULL;
GSocketConnection *connection;
- start_server_service (test, auth_mode);
+ start_async_server_service (test, auth_mode);
client = g_socket_client_new ();
connection = g_socket_client_connect (client, G_SOCKET_CONNECTABLE (test->address),
}
static void
+run_echo_server (GThreadedSocketService *service,
+ GSocketConnection *connection,
+ GObject *source_object,
+ gpointer user_data)
+{
+ TestConnection *test = user_data;
+ GTlsConnection *tlsconn;
+ GTlsCertificate *cert;
+ GError *error = NULL;
+ GInputStream *istream;
+ GOutputStream *ostream;
+ gssize nread, nwrote, total;
+ gchar buf[128];
+
+ cert = g_tls_certificate_new_from_file (TEST_FILE ("server-and-key.pem"), &error);
+ g_assert_no_error (error);
+
+ test->server_connection = g_tls_server_connection_new (G_IO_STREAM (connection),
+ cert, &error);
+ g_assert_no_error (error);
+ g_object_unref (cert);
+
+ tlsconn = G_TLS_CONNECTION (test->server_connection);
+ g_tls_connection_handshake (tlsconn, NULL, &error);
+ g_assert_no_error (error);
+
+ istream = g_io_stream_get_input_stream (test->server_connection);
+ ostream = g_io_stream_get_output_stream (test->server_connection);
+
+ while (TRUE)
+ {
+ nread = g_input_stream_read (istream, buf, sizeof (buf), NULL, &error);
+ g_assert_no_error (error);
+ g_assert_cmpint (nread, >=, 0);
+
+ if (nread == 0)
+ break;
+
+ for (total = 0; total < nread; total += nwrote)
+ {
+ nwrote = g_output_stream_write (ostream, buf + total, nread - total, NULL, &error);
+ g_assert_no_error (error);
+ }
+
+ if (test->rehandshake)
+ {
+ test->rehandshake = FALSE;
+ g_tls_connection_handshake (tlsconn, NULL, &error);
+ g_assert_no_error (error);
+ }
+ }
+
+ g_io_stream_close (test->server_connection, NULL, &error);
+ g_assert_no_error (error);
+ test->server_closed = TRUE;
+}
+
+static void
+start_echo_server_service (TestConnection *test)
+{
+ GError *error = NULL;
+
+ test->service = g_threaded_socket_service_new (5);
+ g_socket_listener_add_address (G_SOCKET_LISTENER (test->service),
+ G_SOCKET_ADDRESS (test->address),
+ G_SOCKET_TYPE_STREAM, G_SOCKET_PROTOCOL_TCP,
+ NULL, NULL, &error);
+ g_assert_no_error (error);
+
+ g_signal_connect (test->service, "run", G_CALLBACK (run_echo_server), test);
+}
+
+static GIOStream *
+start_echo_server_and_connect_to_it (TestConnection *test)
+{
+ GSocketClient *client;
+ GError *error = NULL;
+ GSocketConnection *connection;
+
+ start_echo_server_service (test);
+
+ client = g_socket_client_new ();
+ connection = g_socket_client_connect (client, G_SOCKET_CONNECTABLE (test->address),
+ NULL, &error);
+ g_assert_no_error (error);
+ g_object_unref (client);
+
+ return G_IO_STREAM (connection);
+}
+
+static void
+on_client_connection_close_finish (GObject *object,
+ GAsyncResult *res,
+ gpointer user_data)
+{
+ TestConnection *test = user_data;
+ GError *error = NULL;
+
+ g_io_stream_close_finish (G_IO_STREAM (object), res, &error);
+ g_assert_no_error (error);
+
+ g_main_loop_quit (test->loop);
+}
+
+static void
on_input_read_finish (GObject *object,
GAsyncResult *res,
gpointer user_data)
{
TestConnection *test = user_data;
- GError *error = NULL;
gchar *line, *check;
line = g_data_input_stream_read_line_finish (G_DATA_INPUT_STREAM (object), res,
- NULL, &error);
- g_assert_no_error (error);
- g_assert (line);
+ NULL, &test->read_error);
+ if (!test->read_error)
+ {
+ g_assert (line);
- check = g_strdup (TEST_DATA);
- g_strstrip (check);
- g_assert_cmpstr (line, ==, check);
- g_free (check);
- g_free (line);
+ check = g_strdup (TEST_DATA);
+ g_strstrip (check);
+ g_assert_cmpstr (line, ==, check);
+ g_free (check);
+ g_free (line);
+ }
- g_main_loop_quit (test->loop);
+ g_io_stream_close_async (test->client_connection, G_PRIORITY_DEFAULT,
+ NULL, on_client_connection_close_finish, test);
}
static void
GIOStream *connection;
GError *error = NULL;
- connection = start_server_and_connect_to_it (test, G_TLS_AUTHENTICATION_NONE);
+ connection = start_async_server_and_connect_to_it (test, G_TLS_AUTHENTICATION_NONE);
test->client_connection = g_tls_client_connection_new (connection, test->identity, &error);
g_assert_no_error (error);
g_object_unref (connection);
read_test_data_async (test);
g_main_loop_run (test->loop);
+
+ g_assert_no_error (test->read_error);
+ g_assert_no_error (test->server_error);
}
static void
g_assert_no_error (error);
g_assert (test->database);
- connection = start_server_and_connect_to_it (test, G_TLS_AUTHENTICATION_NONE);
+ connection = start_async_server_and_connect_to_it (test, G_TLS_AUTHENTICATION_NONE);
test->client_connection = g_tls_client_connection_new (connection, test->identity, &error);
g_assert_no_error (error);
g_assert (test->client_connection);
read_test_data_async (test);
g_main_loop_run (test->loop);
+
+ g_assert_no_error (test->read_error);
+ g_assert_no_error (test->server_error);
+}
+
+static void
+on_notify_accepted_cas (GObject *obj,
+ GParamSpec *spec,
+ gpointer user_data)
+{
+ gboolean *changed = user_data;
+ g_assert (*changed == FALSE);
+ *changed = TRUE;
}
static void
GIOStream *connection;
GError *error = NULL;
GTlsCertificate *cert;
+ GTlsCertificate *peer;
+ gboolean cas_changed;
test->database = g_tls_file_database_new (TEST_FILE ("ca-roots.pem"), &error);
g_assert_no_error (error);
g_assert (test->database);
- connection = start_server_and_connect_to_it (test, G_TLS_AUTHENTICATION_REQUIRED);
+ connection = start_async_server_and_connect_to_it (test, G_TLS_AUTHENTICATION_REQUIRED);
test->client_connection = g_tls_client_connection_new (connection, test->identity, &error);
g_assert_no_error (error);
g_assert (test->client_connection);
g_assert_no_error (error);
g_tls_connection_set_certificate (G_TLS_CONNECTION (test->client_connection), cert);
- g_object_unref (cert);
/* All validation in this test */
g_tls_client_connection_set_validation_flags (G_TLS_CLIENT_CONNECTION (test->client_connection),
G_TLS_CERTIFICATE_VALIDATE_ALL);
+ cas_changed = FALSE;
+ g_signal_connect (test->client_connection, "notify::accepted-cas",
+ G_CALLBACK (on_notify_accepted_cas), &cas_changed);
+
read_test_data_async (test);
g_main_loop_run (test->loop);
+
+ g_assert_no_error (test->read_error);
+ g_assert_no_error (test->server_error);
+
+ peer = g_tls_connection_get_peer_certificate (G_TLS_CONNECTION (test->server_connection));
+ g_assert (peer != NULL);
+ g_assert (g_tls_certificate_is_same (peer, cert));
+ g_assert (cas_changed == TRUE);
+
+ g_object_unref (cert);
}
static void
}
static void
+test_client_auth_failure (TestConnection *test,
+ gconstpointer data)
+{
+ GIOStream *connection;
+ GError *error = NULL;
+ gboolean accepted_changed;
+
+ test->database = g_tls_file_database_new (TEST_FILE ("ca-roots.pem"), &error);
+ g_assert_no_error (error);
+ g_assert (test->database);
+
+ connection = start_async_server_and_connect_to_it (test, G_TLS_AUTHENTICATION_REQUIRED);
+ test->client_connection = g_tls_client_connection_new (connection, test->identity, &error);
+ g_assert_no_error (error);
+ g_assert (test->client_connection);
+ g_object_unref (connection);
+
+ g_tls_connection_set_database (G_TLS_CONNECTION (test->client_connection), test->database);
+
+ /* No Certificate set */
+
+ /* All validation in this test */
+ g_tls_client_connection_set_validation_flags (G_TLS_CLIENT_CONNECTION (test->client_connection),
+ G_TLS_CERTIFICATE_VALIDATE_ALL);
+
+ accepted_changed = FALSE;
+ g_signal_connect (test->client_connection, "notify::accepted-cas",
+ G_CALLBACK (on_notify_accepted_cas), &accepted_changed);
+
+ read_test_data_async (test);
+ g_main_loop_run (test->loop);
+
+ g_assert_error (test->read_error, G_TLS_ERROR, G_TLS_ERROR_CERTIFICATE_REQUIRED);
+ g_assert_error (test->server_error, G_TLS_ERROR, G_TLS_ERROR_CERTIFICATE_REQUIRED);
+
+ g_assert (accepted_changed == TRUE);
+}
+
+static void
test_connection_no_database (TestConnection *test,
gconstpointer data)
{
GIOStream *connection;
GError *error = NULL;
- connection = start_server_and_connect_to_it (test, G_TLS_AUTHENTICATION_NONE);
+ connection = start_async_server_and_connect_to_it (test, G_TLS_AUTHENTICATION_NONE);
test->client_connection = g_tls_client_connection_new (connection, test->identity, &error);
g_assert_no_error (error);
g_assert (test->client_connection);
read_test_data_async (test);
g_main_loop_run (test->loop);
+
+ g_assert_no_error (test->read_error);
+ g_assert_no_error (test->server_error);
+}
+
+static void
+handshake_failed_cb (GObject *source,
+ GAsyncResult *result,
+ gpointer user_data)
+{
+ TestConnection *test = user_data;
+ GError *error = NULL;
+
+ g_tls_connection_handshake_finish (G_TLS_CONNECTION (test->client_connection),
+ result, &error);
+ g_assert_error (error, G_TLS_ERROR, G_TLS_ERROR_BAD_CERTIFICATE);
+ g_clear_error (&error);
+
+ g_main_loop_quit (test->loop);
+}
+
+static void
+test_failed_connection (TestConnection *test,
+ gconstpointer data)
+{
+ GIOStream *connection;
+ GError *error = NULL;
+ GSocketConnectable *bad_addr;
+
+ connection = start_async_server_and_connect_to_it (test, G_TLS_AUTHENTICATION_NONE);
+
+ bad_addr = g_network_address_new ("wrong.example.com", 80);
+ test->client_connection = g_tls_client_connection_new (connection, bad_addr, &error);
+ g_object_unref (bad_addr);
+ g_assert_no_error (error);
+ g_object_unref (connection);
+
+ g_tls_connection_handshake_async (G_TLS_CONNECTION (test->client_connection),
+ G_PRIORITY_DEFAULT, NULL,
+ handshake_failed_cb, test);
+ g_main_loop_run (test->loop);
+
+ g_tls_client_connection_set_validation_flags (G_TLS_CLIENT_CONNECTION (test->client_connection),
+ G_TLS_CERTIFICATE_VALIDATE_ALL);
+
+ read_test_data_async (test);
+ g_main_loop_run (test->loop);
+
+ g_assert_error (test->read_error, G_TLS_ERROR, G_TLS_ERROR_BAD_CERTIFICATE);
+ g_assert_no_error (test->server_error);
}
static void
GIOStream *base;
GError *error = NULL;
- start_server_service (test, G_TLS_AUTHENTICATION_NONE);
+ start_async_server_service (test, G_TLS_AUTHENTICATION_NONE);
client = g_socket_client_new ();
g_socket_client_set_tls (client, TRUE);
flags = G_TLS_CERTIFICATE_VALIDATE_ALL & ~G_TLS_CERTIFICATE_UNKNOWN_CA;
{
GSocketClient *client;
- start_server_service (test, G_TLS_AUTHENTICATION_NONE);
+ start_async_server_service (test, G_TLS_AUTHENTICATION_NONE);
client = g_socket_client_new ();
g_socket_client_set_tls (client, TRUE);
/* this time we don't adjust the validation flags */
g_object_unref (client);
}
+static void
+simul_async_read_complete (GObject *object,
+ GAsyncResult *result,
+ gpointer user_data)
+{
+ TestConnection *test = user_data;
+ gssize nread;
+ GError *error = NULL;
+
+ nread = g_input_stream_read_finish (G_INPUT_STREAM (object),
+ result, &error);
+ g_assert_no_error (error);
+
+ test->nread += nread;
+ g_assert_cmpint (test->nread, <=, TEST_DATA_LENGTH);
+
+ if (test->nread == TEST_DATA_LENGTH)
+ {
+ g_io_stream_close (test->client_connection, NULL, &error);
+ g_assert_no_error (error);
+ g_main_loop_quit (test->loop);
+ }
+ else
+ {
+ g_input_stream_read_async (G_INPUT_STREAM (object),
+ test->buf + test->nread,
+ TEST_DATA_LENGTH / 2,
+ G_PRIORITY_DEFAULT, NULL,
+ simul_async_read_complete, test);
+ }
+}
+
+static void
+simul_async_write_complete (GObject *object,
+ GAsyncResult *result,
+ gpointer user_data)
+{
+ TestConnection *test = user_data;
+ gssize nwrote;
+ GError *error = NULL;
+
+ nwrote = g_output_stream_write_finish (G_OUTPUT_STREAM (object),
+ result, &error);
+ g_assert_no_error (error);
+
+ test->nwrote += nwrote;
+ if (test->nwrote < TEST_DATA_LENGTH)
+ {
+ g_output_stream_write_async (G_OUTPUT_STREAM (object),
+ TEST_DATA + test->nwrote,
+ TEST_DATA_LENGTH - test->nwrote,
+ G_PRIORITY_DEFAULT, NULL,
+ simul_async_write_complete, test);
+ }
+}
+
+static void
+test_simultaneous_async (TestConnection *test,
+ gconstpointer data)
+{
+ GIOStream *connection;
+ GTlsCertificateFlags flags;
+ GError *error = NULL;
+
+ connection = start_echo_server_and_connect_to_it (test);
+ test->client_connection = g_tls_client_connection_new (connection, test->identity, &error);
+ g_assert_no_error (error);
+ g_object_unref (connection);
+
+ flags = G_TLS_CERTIFICATE_VALIDATE_ALL &
+ ~(G_TLS_CERTIFICATE_UNKNOWN_CA | G_TLS_CERTIFICATE_BAD_IDENTITY);
+ g_tls_client_connection_set_validation_flags (G_TLS_CLIENT_CONNECTION (test->client_connection),
+ flags);
+
+ memset (test->buf, 0, sizeof (test->buf));
+ test->nread = test->nwrote = 0;
+
+ g_input_stream_read_async (g_io_stream_get_input_stream (test->client_connection),
+ test->buf, TEST_DATA_LENGTH / 2,
+ G_PRIORITY_DEFAULT, NULL,
+ simul_async_read_complete, test);
+ g_output_stream_write_async (g_io_stream_get_output_stream (test->client_connection),
+ TEST_DATA, TEST_DATA_LENGTH / 2,
+ G_PRIORITY_DEFAULT, NULL,
+ simul_async_write_complete, test);
+
+ g_main_loop_run (test->loop);
+
+ g_assert_cmpint (test->nread, ==, TEST_DATA_LENGTH);
+ g_assert_cmpint (test->nwrote, ==, TEST_DATA_LENGTH);
+ g_assert_cmpstr (test->buf, ==, TEST_DATA);
+}
+
+static void
+test_simultaneous_async_rehandshake (TestConnection *test,
+ gconstpointer data)
+{
+ test->rehandshake = TRUE;
+ test_simultaneous_async (test, data);
+}
+
+static gpointer
+simul_read_thread (gpointer user_data)
+{
+ TestConnection *test = user_data;
+ GInputStream *istream = g_io_stream_get_input_stream (test->client_connection);
+ GError *error = NULL;
+ gssize nread;
+
+ while (test->nread < TEST_DATA_LENGTH)
+ {
+ nread = g_input_stream_read (istream,
+ test->buf + test->nread,
+ MIN (TEST_DATA_LENGTH / 2, TEST_DATA_LENGTH - test->nread),
+ NULL, &error);
+ g_assert_no_error (error);
+
+ test->nread += nread;
+ }
+
+ return NULL;
+}
+
+static gpointer
+simul_write_thread (gpointer user_data)
+{
+ TestConnection *test = user_data;
+ GOutputStream *ostream = g_io_stream_get_output_stream (test->client_connection);
+ GError *error = NULL;
+ gssize nwrote;
+
+ while (test->nwrote < TEST_DATA_LENGTH)
+ {
+ nwrote = g_output_stream_write (ostream,
+ TEST_DATA + test->nwrote,
+ MIN (TEST_DATA_LENGTH / 2, TEST_DATA_LENGTH - test->nwrote),
+ NULL, &error);
+ g_assert_no_error (error);
+
+ test->nwrote += nwrote;
+ }
+
+ return NULL;
+}
+
+static void
+test_simultaneous_sync (TestConnection *test,
+ gconstpointer data)
+{
+ GIOStream *connection;
+ GTlsCertificateFlags flags;
+ GError *error = NULL;
+ GThread *read_thread, *write_thread;
+
+ connection = start_echo_server_and_connect_to_it (test);
+ test->client_connection = g_tls_client_connection_new (connection, test->identity, &error);
+ g_assert_no_error (error);
+ g_object_unref (connection);
+
+ flags = G_TLS_CERTIFICATE_VALIDATE_ALL &
+ ~(G_TLS_CERTIFICATE_UNKNOWN_CA | G_TLS_CERTIFICATE_BAD_IDENTITY);
+ g_tls_client_connection_set_validation_flags (G_TLS_CLIENT_CONNECTION (test->client_connection),
+ flags);
+
+ memset (test->buf, 0, sizeof (test->buf));
+ test->nread = test->nwrote = 0;
+
+ read_thread = g_thread_new ("reader", simul_read_thread, test);
+ write_thread = g_thread_new ("writer", simul_write_thread, test);
+
+ /* We need to run the main loop to get the GThreadedSocketService to
+ * receive the connection and spawn the server thread.
+ */
+ while (!test->server_connection)
+ g_main_context_iteration (NULL, FALSE);
+
+ g_thread_join (write_thread);
+ g_thread_join (read_thread);
+
+ g_assert_cmpint (test->nread, ==, TEST_DATA_LENGTH);
+ g_assert_cmpint (test->nwrote, ==, TEST_DATA_LENGTH);
+ g_assert_cmpstr (test->buf, ==, TEST_DATA);
+
+ g_io_stream_close (test->client_connection, NULL, &error);
+ g_assert_no_error (error);
+}
+
+static void
+test_simultaneous_sync_rehandshake (TestConnection *test,
+ gconstpointer data)
+{
+ test->rehandshake = TRUE;
+ test_simultaneous_sync (test, data);
+}
+
+static void
+test_close_immediately (TestConnection *test,
+ gconstpointer data)
+{
+ GIOStream *connection;
+ GError *error = NULL;
+
+ connection = start_async_server_and_connect_to_it (test, G_TLS_AUTHENTICATION_NONE);
+ test->client_connection = g_tls_client_connection_new (connection, test->identity, &error);
+ g_assert_no_error (error);
+ g_object_unref (connection);
+
+ /*
+ * At this point the server won't get a chance to run. But regardless
+ * closing should not wait on the server, trying to handshake or something.
+ */
+ g_io_stream_close (test->client_connection, NULL, &error);
+ g_assert_no_error (error);
+}
+
+static void
+quit_loop_on_notify (GObject *obj,
+ GParamSpec *spec,
+ gpointer user_data)
+{
+ GMainLoop *loop = user_data;
+
+ g_main_loop_quit (loop);
+}
+
+static void
+test_close_during_handshake (TestConnection *test,
+ gconstpointer data)
+{
+ GIOStream *connection;
+ GError *error = NULL;
+ GMainContext *context;
+ GMainLoop *loop;
+
+ g_test_bug ("688751");
+
+ connection = start_async_server_and_connect_to_it (test, G_TLS_AUTHENTICATION_REQUESTED);
+ test->expect_server_error = TRUE;
+ test->client_connection = g_tls_client_connection_new (connection, test->identity, &error);
+ g_assert_no_error (error);
+ g_object_unref (connection);
+
+ loop = g_main_loop_new (NULL, FALSE);
+ g_signal_connect (test->client_connection, "notify::accepted-cas",
+ G_CALLBACK (quit_loop_on_notify), loop);
+
+ context = g_main_context_new ();
+ g_main_context_push_thread_default (context);
+ g_tls_connection_handshake_async (G_TLS_CONNECTION (test->client_connection),
+ G_PRIORITY_DEFAULT,
+ NULL, NULL, NULL);
+ g_main_context_pop_thread_default (context);
+
+ /* Now run the (default GMainContext) loop, which is needed for
+ * the server side of things. The client-side handshake will run in
+ * a thread, but its callback will never be invoked because its
+ * context isn't running.
+ */
+ g_main_loop_run (loop);
+ g_main_loop_unref (loop);
+
+ /* At this point handshake_thread() has started (and maybe
+ * finished), but handshake_thread_completed() (and thus
+ * finish_handshake()) has not yet run. Make sure close doesn't
+ * block.
+ */
+ g_io_stream_close (test->client_connection, NULL, &error);
+ g_assert_no_error (error);
+
+ /* We have to let the handshake_async() call finish now, or
+ * teardown_connection() will assert.
+ */
+ g_main_context_iteration (context, TRUE);
+ g_main_context_unref (context);
+}
+
+static void
+test_write_during_handshake (TestConnection *test,
+ gconstpointer data)
+{
+ GIOStream *connection;
+ GError *error = NULL;
+ GMainContext *context;
+ GMainLoop *loop;
+ GOutputStream *ostream;
+
+ g_test_bug ("697754");
+
+ connection = start_async_server_and_connect_to_it (test, G_TLS_AUTHENTICATION_REQUESTED);
+ test->client_connection = g_tls_client_connection_new (connection, test->identity, &error);
+ g_assert_no_error (error);
+ g_object_unref (connection);
+
+ loop = g_main_loop_new (NULL, FALSE);
+ g_signal_connect (test->client_connection, "notify::accepted-cas",
+ G_CALLBACK (quit_loop_on_notify), loop);
+
+ context = g_main_context_new ();
+ g_main_context_push_thread_default (context);
+ g_tls_connection_handshake_async (G_TLS_CONNECTION (test->client_connection),
+ G_PRIORITY_DEFAULT,
+ NULL, NULL, NULL);
+ g_main_context_pop_thread_default (context);
+
+ /* Now run the (default GMainContext) loop, which is needed for
+ * the server side of things. The client-side handshake will run in
+ * a thread, but its callback will never be invoked because its
+ * context isn't running.
+ */
+ g_main_loop_run (loop);
+ g_main_loop_unref (loop);
+
+ /* At this point handshake_thread() has started (and maybe
+ * finished), but handshake_thread_completed() (and thus
+ * finish_handshake()) has not yet run. Make sure close doesn't
+ * block.
+ */
+
+ ostream = g_io_stream_get_output_stream (test->client_connection);
+ g_output_stream_write (ostream, TEST_DATA, TEST_DATA_LENGTH,
+ G_PRIORITY_DEFAULT, &error);
+ g_assert_no_error (error);
+
+ /* We have to let the handshake_async() call finish now, or
+ * teardown_connection() will assert.
+ */
+ g_main_context_iteration (context, TRUE);
+ g_main_context_unref (context);
+}
+
int
main (int argc,
char *argv[])
{
int ret;
- g_type_init ();
g_test_init (&argc, &argv, NULL);
+ g_test_bug_base ("http://bugzilla.gnome.org/");
g_setenv ("GSETTINGS_BACKEND", "memory", TRUE);
g_setenv ("GIO_EXTRA_MODULES", TOP_BUILDDIR "/tls/gnutls/.libs", TRUE);
setup_connection, test_client_auth_connection, teardown_connection);
g_test_add ("/tls/connection/client-auth-rehandshake", TestConnection, NULL,
setup_connection, test_client_auth_rehandshake, teardown_connection);
+ g_test_add ("/tls/connection/client-auth-failure", TestConnection, NULL,
+ setup_connection, test_client_auth_failure, teardown_connection);
g_test_add ("/tls/connection/no-database", TestConnection, NULL,
setup_connection, test_connection_no_database, teardown_connection);
+ g_test_add ("/tls/connection/failed", TestConnection, NULL,
+ setup_connection, test_failed_connection, teardown_connection);
g_test_add ("/tls/connection/socket-client", TestConnection, NULL,
setup_connection, test_connection_socket_client, teardown_connection);
g_test_add ("/tls/connection/socket-client-failed", TestConnection, NULL,
setup_connection, test_connection_socket_client_failed, teardown_connection);
+ g_test_add ("/tls/connection/simultaneous-async", TestConnection, NULL,
+ setup_connection, test_simultaneous_async, teardown_connection);
+ g_test_add ("/tls/connection/simultaneous-sync", TestConnection, NULL,
+ setup_connection, test_simultaneous_sync, teardown_connection);
+ g_test_add ("/tls/connection/simultaneous-async-rehandshake", TestConnection, NULL,
+ setup_connection, test_simultaneous_async_rehandshake, teardown_connection);
+ g_test_add ("/tls/connection/simultaneous-sync-rehandshake", TestConnection, NULL,
+ setup_connection, test_simultaneous_sync_rehandshake, teardown_connection);
+ g_test_add ("/tls/connection/close-immediately", TestConnection, NULL,
+ setup_connection, test_close_immediately, teardown_connection);
+ g_test_add ("/tls/connection/close-during-handshake", TestConnection, NULL,
+ setup_connection, test_close_during_handshake, teardown_connection);
+ g_test_add ("/tls/connection/write-during-handshake", TestConnection, NULL,
+ setup_connection, test_write_during_handshake, teardown_connection);
ret = g_test_run();
--- /dev/null
+/* GIO TLS tests
+ *
+ * Copyright 2011 Collabora, Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General
+ * Public License along with this library; if not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ * Author: Stef Walter <stefw@collabora.co.uk>
+ */
+
+#include "config.h"
+
+#include <gio/gio.h>
+
+#include "gnutls/gtlscertificate-gnutls.h"
+
+#include <sys/types.h>
+#include <string.h>
+
+#define TEST_FILE(name) (SRCDIR "/files/" name)
+
+/* -----------------------------------------------------------------------------
+ * CERTIFICATE VERIFY
+ */
+
+typedef struct {
+ GTlsCertificate *cert;
+ GSocketConnectable *identity;
+ GTlsDatabase *database;
+} TestVerify;
+
+static void
+setup_verify (TestVerify *test,
+ gconstpointer data)
+{
+ GError *error = NULL;
+
+ test->cert = g_tls_certificate_new_from_file (TEST_FILE ("server.pem"), &error);
+ g_assert_no_error (error);
+ g_assert (G_IS_TLS_CERTIFICATE (test->cert));
+
+ test->identity = g_network_address_new ("server.example.com", 80);
+
+ test->database = g_tls_file_database_new (TEST_FILE ("ca.pem"), &error);
+ g_assert_no_error (error);
+ g_assert (G_IS_TLS_DATABASE (test->database));
+}
+
+static void
+teardown_verify (TestVerify *test,
+ gconstpointer data)
+{
+ g_assert (G_IS_TLS_CERTIFICATE (test->cert));
+ g_object_add_weak_pointer (G_OBJECT (test->cert),
+ (gpointer *)&test->cert);
+ g_object_unref (test->cert);
+ g_assert (test->cert == NULL);
+
+ g_assert (G_IS_TLS_DATABASE (test->database));
+ g_object_add_weak_pointer (G_OBJECT (test->database),
+ (gpointer *)&test->database);
+ g_object_unref (test->database);
+ g_assert (test->database == NULL);
+
+ g_object_add_weak_pointer (G_OBJECT (test->identity),
+ (gpointer *)&test->identity);
+ g_object_unref (test->identity);
+ g_assert (test->identity == NULL);
+}
+
+static void
+test_verify_database_good (TestVerify *test,
+ gconstpointer data)
+{
+ GTlsCertificateFlags errors;
+ GError *error = NULL;
+
+ errors = g_tls_database_verify_chain (test->database, test->cert,
+ G_TLS_DATABASE_PURPOSE_AUTHENTICATE_SERVER,
+ test->identity, NULL, 0, NULL, &error);
+ g_assert_no_error (error);
+ g_assert_cmpuint (errors, ==, 0);
+
+ errors = g_tls_database_verify_chain (test->database, test->cert,
+ G_TLS_DATABASE_PURPOSE_AUTHENTICATE_SERVER,
+ NULL, NULL, 0, NULL, &error);
+ g_assert_cmpuint (errors, ==, 0);
+}
+
+static void
+test_verify_database_bad_identity (TestVerify *test,
+ gconstpointer data)
+{
+ GSocketConnectable *identity;
+ GTlsCertificateFlags errors;
+ GError *error = NULL;
+
+ identity = g_network_address_new ("other.example.com", 80);
+
+ errors = g_tls_database_verify_chain (test->database, test->cert,
+ G_TLS_DATABASE_PURPOSE_AUTHENTICATE_SERVER,
+ identity, NULL, 0, NULL, &error);
+ g_assert_no_error (error);
+ g_assert_cmpuint (errors, ==, G_TLS_CERTIFICATE_BAD_IDENTITY);
+
+ g_object_unref (identity);
+}
+
+static void
+test_verify_database_bad_ca (TestVerify *test,
+ gconstpointer data)
+{
+ GTlsCertificateFlags errors;
+ GTlsCertificate *cert;
+ GError *error = NULL;
+
+ /* Use another certificate which isn't in our CA list */
+ cert = g_tls_certificate_new_from_file (TEST_FILE ("server-self.pem"), &error);
+ g_assert_no_error (error);
+ g_assert (G_IS_TLS_CERTIFICATE (cert));
+
+ errors = g_tls_database_verify_chain (test->database, cert,
+ G_TLS_DATABASE_PURPOSE_AUTHENTICATE_SERVER,
+ test->identity, NULL, 0, NULL, &error);
+ g_assert_no_error (error);
+ g_assert_cmpuint (errors, ==, G_TLS_CERTIFICATE_UNKNOWN_CA);
+
+ g_object_unref (cert);
+}
+
+static void
+test_verify_database_bad_before (TestVerify *test,
+ gconstpointer data)
+{
+ GTlsCertificateFlags errors;
+ GTlsCertificate *cert;
+ GError *error = NULL;
+
+ /* This is a certificate in the future */
+ cert = g_tls_certificate_new_from_file (TEST_FILE ("client-future.pem"), &error);
+ g_assert_no_error (error);
+ g_assert (G_IS_TLS_CERTIFICATE (cert));
+
+ errors = g_tls_database_verify_chain (test->database, cert,
+ G_TLS_DATABASE_PURPOSE_AUTHENTICATE_SERVER,
+ NULL, NULL, 0, NULL, &error);
+ g_assert_no_error (error);
+ g_assert_cmpuint (errors, ==, G_TLS_CERTIFICATE_NOT_ACTIVATED);
+
+ g_object_unref (cert);
+}
+
+static void
+test_verify_database_bad_expired (TestVerify *test,
+ gconstpointer data)
+{
+ GTlsCertificateFlags errors;
+ GTlsCertificate *cert;
+ GError *error = NULL;
+
+ /* This is a certificate in the future */
+ cert = g_tls_certificate_new_from_file (TEST_FILE ("client-past.pem"), &error);
+ g_assert_no_error (error);
+ g_assert (G_IS_TLS_CERTIFICATE (cert));
+
+ errors = g_tls_database_verify_chain (test->database, cert,
+ G_TLS_DATABASE_PURPOSE_AUTHENTICATE_SERVER,
+ NULL, NULL, 0, NULL, &error);
+ g_assert_no_error (error);
+ g_assert_cmpuint (errors, ==, G_TLS_CERTIFICATE_EXPIRED);
+
+ g_object_unref (cert);
+}
+
+static void
+test_verify_database_bad_combo (TestVerify *test,
+ gconstpointer data)
+{
+ GTlsCertificate *cert;
+ GSocketConnectable *identity;
+ GTlsCertificateFlags errors;
+ GError *error = NULL;
+
+ cert = g_tls_certificate_new_from_file (TEST_FILE ("server-self.pem"), &error);
+ g_assert_no_error (error);
+ g_assert (G_IS_TLS_CERTIFICATE (cert));
+
+ /*
+ * - Use is self signed
+ * - Use wrong identity.
+ */
+
+ identity = g_network_address_new ("other.example.com", 80);
+
+ errors = g_tls_database_verify_chain (test->database, cert,
+ G_TLS_DATABASE_PURPOSE_AUTHENTICATE_SERVER,
+ identity, NULL, 0, NULL, &error);
+ g_assert_no_error (error);
+ g_assert_cmpuint (errors, ==, G_TLS_CERTIFICATE_UNKNOWN_CA |
+ G_TLS_CERTIFICATE_BAD_IDENTITY);
+
+ g_object_unref (cert);
+ g_object_unref (identity);
+}
+
+static GTlsCertificate *
+load_certificate_chain (const char *filename,
+ GError **error)
+{
+ GList *certificates;
+ GTlsCertificate *chain = NULL;
+ GTlsBackend *backend;
+ GByteArray *der;
+ GList *l;
+
+ certificates = g_tls_certificate_list_new_from_file (filename, error);
+ if (certificates == NULL)
+ return NULL;
+
+ backend = g_tls_backend_get_default ();
+ certificates = g_list_reverse (certificates);
+ for (l = certificates; l != NULL; l = g_list_next (l))
+ {
+ g_object_get (l->data, "certificate", &der, NULL);
+ chain = g_object_new (g_tls_backend_get_certificate_type (backend),
+ "certificate", der,
+ "issuer", chain,
+ NULL);
+ g_byte_array_unref (der);
+ }
+
+ g_list_free_full (certificates, g_object_unref);
+ return chain;
+}
+
+static gboolean
+is_certificate_in_chain (GTlsCertificate *chain,
+ GTlsCertificate *cert)
+{
+ while (chain != NULL)
+ {
+ if (g_tls_certificate_is_same (chain, cert))
+ return TRUE;
+ chain = g_tls_certificate_get_issuer (chain);
+ }
+
+ return FALSE;
+}
+
+static void
+test_verify_with_incorrect_root_in_chain (void)
+{
+ GTlsCertificate *ca_verisign_sha1;
+ GTlsDatabase *database;
+ GError *error = NULL;
+ GTlsCertificate *chain;
+ GSocketConnectable *identity;
+ GTlsCertificateFlags errors;
+
+ /*
+ * This database contains a single anchor certificate of:
+ * C = US, O = "VeriSign, Inc.", OU = Class 3 Public Primary Certification Authority
+ */
+ database = g_tls_file_database_new (TEST_FILE ("ca-verisign-sha1.pem"), &error);
+ g_assert_no_error (error);
+ g_assert (G_IS_TLS_DATABASE (database));
+
+ ca_verisign_sha1 = g_tls_certificate_new_from_file (TEST_FILE ("ca-verisign-sha1.pem"), &error);
+ g_assert_no_error (error);
+ g_assert (G_IS_TLS_CERTIFICATE (ca_verisign_sha1));
+
+ /*
+ * This certificate chain contains a root certificate with that same issuer, public key:
+ * C = US, O = "VeriSign, Inc.", OU = Class 3 Public Primary Certification Authority
+ *
+ * But it is not the same certificate in our database. However our database should
+ * verify this chain as valid, since the issuer fields and signatures should chain up
+ * to the certificate in our database.
+ */
+ chain = load_certificate_chain (TEST_FILE ("chain-with-verisign-md2.pem"), &error);
+ g_assert_no_error (error);
+ g_assert (G_IS_TLS_CERTIFICATE (chain));
+
+ g_assert (g_tls_certificate_get_issuer (chain) != NULL);
+ g_assert (g_tls_certificate_get_issuer (g_tls_certificate_get_issuer (chain)) != NULL);
+ g_assert (is_certificate_in_chain (chain, chain));
+ g_assert (!is_certificate_in_chain (chain, ca_verisign_sha1));
+
+
+ identity = g_network_address_new ("secure-test.streamline-esolutions.com", 443);
+
+ errors = g_tls_database_verify_chain (database, chain,
+ G_TLS_DATABASE_PURPOSE_AUTHENTICATE_SERVER,
+ identity, NULL, 0, NULL, &error);
+ g_assert_no_error (error);
+ errors &= ~G_TLS_CERTIFICATE_EXPIRED; /* so that this test doesn't expire */
+ g_assert_cmpuint (errors, ==, 0);
+
+ g_object_unref (chain);
+ g_object_unref (ca_verisign_sha1);
+ g_object_unref (identity);
+ g_object_unref (database);
+}
+
+/* -----------------------------------------------------------------------------
+ * FILE DATABASE
+ */
+
+typedef struct {
+ GTlsDatabase *database;
+ const gchar *path;
+} TestFileDatabase;
+
+static void
+setup_file_database (TestFileDatabase *test,
+ gconstpointer data)
+{
+ GError *error = NULL;
+
+ test->path = TEST_FILE ("ca-roots.pem");
+ test->database = g_tls_file_database_new (test->path, &error);
+ g_assert_no_error (error);
+ g_assert (G_IS_TLS_DATABASE (test->database));
+}
+
+static void
+teardown_file_database (TestFileDatabase *test,
+ gconstpointer data)
+{
+ g_assert (G_IS_TLS_DATABASE (test->database));
+ g_object_add_weak_pointer (G_OBJECT (test->database),
+ (gpointer *)&test->database);
+ g_object_unref (test->database);
+ g_assert (test->database == NULL);
+}
+
+static void
+test_file_database_handle (TestFileDatabase *test,
+ gconstpointer unused)
+{
+ GTlsCertificate *certificate;
+ GTlsCertificate *check;
+ GError *error = NULL;
+ gchar *handle;
+
+ /*
+ * ca.pem is in the ca-roots.pem that the test->database represents.
+ * So it should be able to create a handle for it and treat it as if it
+ * is 'in' the database.
+ */
+
+ certificate = g_tls_certificate_new_from_file (TEST_FILE ("ca.pem"), &error);
+ g_assert_no_error (error);
+ g_assert (G_IS_TLS_CERTIFICATE (certificate));
+
+ handle = g_tls_database_create_certificate_handle (test->database, certificate);
+ g_assert (handle != NULL);
+ g_assert (g_str_has_prefix (handle, "file:///"));
+
+ check = g_tls_database_lookup_certificate_for_handle (test->database, handle,
+ NULL, G_TLS_DATABASE_LOOKUP_NONE,
+ NULL, &error);
+ g_assert_no_error (error);
+ g_assert (G_IS_TLS_CERTIFICATE (check));
+
+ g_free (handle);
+ g_object_unref (check);
+ g_object_unref (certificate);
+}
+
+static void
+test_file_database_handle_invalid (TestFileDatabase *test,
+ gconstpointer unused)
+{
+ GTlsCertificate *certificate;
+ GError *error = NULL;
+
+ certificate = g_tls_database_lookup_certificate_for_handle (test->database, "blah:blah",
+ NULL, G_TLS_DATABASE_LOOKUP_NONE,
+ NULL, &error);
+ g_assert_no_error (error);
+ g_assert (certificate == NULL);
+}
+
+/* -----------------------------------------------------------------------------
+ * DATABASE
+ */
+
+static void
+test_anchors_property (void)
+{
+ GTlsDatabase *database;
+ gchar *anchor_filename = NULL;
+ GError *error = NULL;
+
+ database = g_tls_file_database_new (TEST_FILE ("ca.pem"), &error);
+ g_assert_no_error (error);
+
+ g_object_get (database, "anchors", &anchor_filename, NULL);
+ g_assert_cmpstr (anchor_filename, ==, TEST_FILE ("ca.pem"));
+ g_free (anchor_filename);
+
+ g_object_unref (database);
+}
+
+static gboolean
+certificate_is_in_list (GList *certificates,
+ const gchar *filename)
+{
+ GTlsCertificate *cert;
+ GError *error = NULL;
+ GList *l;
+
+ cert = g_tls_certificate_new_from_file (filename, &error);
+ g_assert_no_error (error);
+
+ for (l = certificates; l != NULL; l = g_list_next (l))
+ {
+ if (g_tls_certificate_is_same (l->data, cert))
+ break;
+ }
+
+ g_object_unref (cert);
+
+ /* Had an early break from loop */
+ return l != NULL;
+}
+
+static void
+test_lookup_certificates_issued_by (void)
+{
+ /* This data is generated from the frob-certificate test tool in gcr library */
+ const guchar ISSUER[] = "\x30\x81\x86\x31\x13\x30\x11\x06\x0A\x09\x92\x26\x89\x93\xF2"
+ "\x2C\x64\x01\x19\x16\x03\x43\x4F\x4D\x31\x17\x30\x15\x06\x0A"
+ "\x09\x92\x26\x89\x93\xF2\x2C\x64\x01\x19\x16\x07\x45\x58\x41"
+ "\x4D\x50\x4C\x45\x31\x1E\x30\x1C\x06\x03\x55\x04\x0B\x13\x15"
+ "\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x20\x41\x75\x74"
+ "\x68\x6F\x72\x69\x74\x79\x31\x17\x30\x15\x06\x03\x55\x04\x03"
+ "\x13\x0E\x63\x61\x2E\x65\x78\x61\x6D\x70\x6C\x65\x2E\x63\x6F"
+ "\x6D\x31\x1D\x30\x1B\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x09"
+ "\x01\x16\x0E\x63\x61\x40\x65\x78\x61\x6D\x70\x6C\x65\x2E\x63"
+ "\x6F\x6D";
+
+ GList *certificates;
+ GByteArray *issuer_dn;
+ GTlsDatabase *database;
+ GError *error = NULL;
+
+ database = g_tls_file_database_new (TEST_FILE ("non-ca.pem"), &error);
+ g_assert_no_error (error);
+
+ issuer_dn = g_byte_array_new ();
+ /* The null terminator is in the array/string above */
+ g_byte_array_append (issuer_dn, ISSUER, G_N_ELEMENTS (ISSUER) - 1);
+
+ certificates = g_tls_database_lookup_certificates_issued_by (database, issuer_dn, NULL,
+ G_TLS_DATABASE_LOOKUP_NONE,
+ NULL, &error);
+
+ g_byte_array_unref (issuer_dn);
+
+ g_assert_cmpuint (g_list_length (certificates), ==, 4);
+
+ g_assert (certificate_is_in_list (certificates, TEST_FILE ("client.pem")));
+ g_assert (certificate_is_in_list (certificates, TEST_FILE ("client-future.pem")));
+ g_assert (certificate_is_in_list (certificates, TEST_FILE ("client-past.pem")));
+ g_assert (certificate_is_in_list (certificates, TEST_FILE ("server.pem")));
+ g_assert (!certificate_is_in_list (certificates, TEST_FILE ("server-self.pem")));
+
+ g_list_free_full (certificates, g_object_unref);
+ g_object_unref (database);
+ g_byte_array_unref (issuer_dn);
+}
+
+static void
+test_default_database_is_singleton (void)
+{
+ GTlsBackend *backend;
+ GTlsDatabase *database;
+ GTlsDatabase *check;
+
+ backend = g_tls_backend_get_default ();
+ g_assert (G_IS_TLS_BACKEND (backend));
+
+ database = g_tls_backend_get_default_database (backend);
+ g_assert (G_IS_TLS_DATABASE (database));
+
+ check = g_tls_backend_get_default_database (backend);
+ g_assert (database == check);
+
+ g_object_unref (database);
+ g_object_unref (check);
+}
+
+int
+main (int argc,
+ char *argv[])
+{
+ g_test_init (&argc, &argv, NULL);
+
+ g_setenv ("GSETTINGS_BACKEND", "memory", TRUE);
+ g_setenv ("GIO_EXTRA_MODULES", TOP_BUILDDIR "/tls/gnutls/.libs", TRUE);
+ g_setenv ("GIO_USE_TLS", "gnutls", TRUE);
+
+ g_test_add_func ("/tls/backend/default-database-is-singleton",
+ test_default_database_is_singleton);
+
+ g_test_add ("/tls/database/verify-good", TestVerify, NULL,
+ setup_verify, test_verify_database_good, teardown_verify);
+ g_test_add ("/tls/database/verify-bad-identity", TestVerify, NULL,
+ setup_verify, test_verify_database_bad_identity, teardown_verify);
+ g_test_add ("/tls/database/verify-bad-ca", TestVerify, NULL,
+ setup_verify, test_verify_database_bad_ca, teardown_verify);
+ g_test_add ("/tls/database/verify-bad-before", TestVerify, NULL,
+ setup_verify, test_verify_database_bad_before, teardown_verify);
+ g_test_add ("/tls/database/verify-bad-expired", TestVerify, NULL,
+ setup_verify, test_verify_database_bad_expired, teardown_verify);
+ g_test_add ("/tls/database/verify-bad-combo", TestVerify, NULL,
+ setup_verify, test_verify_database_bad_combo, teardown_verify);
+ g_test_add_func ("/tls/database/verify-with-incorrect-root-in-chain",
+ test_verify_with_incorrect_root_in_chain);
+
+ g_test_add_func ("/tls/file-database/anchors-property",
+ test_anchors_property);
+ g_test_add_func ("/tls/file-database/lookup-certificates-issued-by",
+ test_lookup_certificates_issued_by);
+
+ g_test_add ("/tls/file-database/test-handle", TestFileDatabase, NULL,
+ setup_file_database, test_file_database_handle, teardown_file_database);
+ g_test_add ("/tls/file-database/test-handle-invalid", TestFileDatabase, NULL,
+ setup_file_database, test_file_database_handle_invalid, teardown_file_database);
+
+ return g_test_run();
+}
--- /dev/null
+Certificate:
+ Data:
+ Version: 1 (0x0)
+ Serial Number:
+ 3c:91:31:cb:1f:f6:d0:1b:0e:9a:b8:d0:44:bf:12:be
+ Signature Algorithm: sha1WithRSAEncryption
+ Issuer: C=US, O=VeriSign, Inc., OU=Class 3 Public Primary Certification Authority
+ Validity
+ Not Before: Jan 29 00:00:00 1996 GMT
+ Not After : Aug 2 23:59:59 2028 GMT
+ Subject: C=US, O=VeriSign, Inc., OU=Class 3 Public Primary Certification Authority
+ Subject Public Key Info:
+ Public Key Algorithm: rsaEncryption
+ Public-Key: (1024 bit)
+ Modulus:
+ 00:c9:5c:59:9e:f2:1b:8a:01:14:b4:10:df:04:40:
+ db:e3:57:af:6a:45:40:8f:84:0c:0b:d1:33:d9:d9:
+ 11:cf:ee:02:58:1f:25:f7:2a:a8:44:05:aa:ec:03:
+ 1f:78:7f:9e:93:b9:9a:00:aa:23:7d:d6:ac:85:a2:
+ 63:45:c7:72:27:cc:f4:4c:c6:75:71:d2:39:ef:4f:
+ 42:f0:75:df:0a:90:c6:8e:20:6f:98:0f:f8:ac:23:
+ 5f:70:29:36:a4:c9:86:e7:b1:9a:20:cb:53:a5:85:
+ e7:3d:be:7d:9a:fe:24:45:33:dc:76:15:ed:0f:a2:
+ 71:64:4c:65:2e:81:68:45:a7
+ Exponent: 65537 (0x10001)
+ Signature Algorithm: sha1WithRSAEncryption
+ 10:72:52:a9:05:14:19:32:08:41:f0:c5:6b:0a:cc:7e:0f:21:
+ 19:cd:e4:67:dc:5f:a9:1b:e6:ca:e8:73:9d:22:d8:98:6e:73:
+ 03:61:91:c5:7c:b0:45:40:6e:44:9d:8d:b0:b1:96:74:61:2d:
+ 0d:a9:45:d2:a4:92:2a:d6:9a:75:97:6e:3f:53:fd:45:99:60:
+ 1d:a8:2b:4c:f9:5e:a7:09:d8:75:30:d7:d2:65:60:3d:67:d6:
+ 48:55:75:69:3f:91:f5:48:0b:47:69:22:69:82:96:be:c9:c8:
+ 38:86:4a:7a:2c:73:19:48:69:4e:6b:7c:65:bf:0f:fc:70:ce:
+ 88:90
+-----BEGIN CERTIFICATE-----
+MIICPDCCAaUCEDyRMcsf9tAbDpq40ES/Er4wDQYJKoZIhvcNAQEFBQAwXzELMAkG
+A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz
+cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2
+MDEyOTAwMDAwMFoXDTI4MDgwMjIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV
+BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt
+YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN
+ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE
+BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is
+I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G
+CSqGSIb3DQEBBQUAA4GBABByUqkFFBkyCEHwxWsKzH4PIRnN5GfcX6kb5sroc50i
+2JhucwNhkcV8sEVAbkSdjbCxlnRhLQ2pRdKkkirWmnWXbj9T/UWZYB2oK0z5XqcJ
+2HUw19JlYD1n1khVdWk/kfVIC0dpImmClr7JyDiGSnoscxlIaU5rfGW/D/xwzoiQ
+-----END CERTIFICATE-----
--- /dev/null
+ 0 s:/C=GB/ST=Lothian/L=Edinburgh/O=The Royal Bank of Scotland Group Plc/OU=Business Standard/CN=secure-test.streamline-esolutions.com
+ i:/C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=Terms of use at https://www.verisign.com/rpa (c)10/CN=VeriSign Class 3 Secure Server CA - G3
+-----BEGIN CERTIFICATE-----
+MIIFhzCCBG+gAwIBAgIQG8SaOaLKoAlziyc01IKx1TANBgkqhkiG9w0BAQUFADCB
+tTELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL
+ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2Ug
+YXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykxMDEvMC0GA1UEAxMm
+VmVyaVNpZ24gQ2xhc3MgMyBTZWN1cmUgU2VydmVyIENBIC0gRzMwHhcNMTIwNjE1
+MDAwMDAwWhcNMTMwNjE2MjM1OTU5WjCBrjELMAkGA1UEBhMCR0IxEDAOBgNVBAgT
+B0xvdGhpYW4xEjAQBgNVBAcUCUVkaW5idXJnaDEtMCsGA1UEChQkVGhlIFJveWFs
+IEJhbmsgb2YgU2NvdGxhbmQgR3JvdXAgUGxjMRowGAYDVQQLFBFCdXNpbmVzcyBT
+dGFuZGFyZDEuMCwGA1UEAxQlc2VjdXJlLXRlc3Quc3RyZWFtbGluZS1lc29sdXRp
+b25zLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALj7qWBZQgxK
+TngnAIYCrmNWv9OPUeOhHWx/aRUwWNTQI5LnTfFq+IzrruiS296KoaMF89Veg6Li
+kIaR6GJ1LVNb5uWmNGo8zsXmSFeieqtREBfJHlu3G/1VcfpreqSiSi/8G6U/e6mZ
+tEuVUau5kw2cM92mzYPKV4h23aasNxc7UvhFTSr6Y3D1ImuHJcKYLcXhDGB35To5
+BqlIv9M7vURDbiStlOFOHoEe/nZ/86J073Vk0gc9TQUQ6d1yB5vgw5ZIi2kDHQ7b
+4yPYnD9j/RO6s6FimS/mM3m1c8GOLv3jtI0G/z30UIgGT4wXxqR8BY8dYULVO55M
+kn904sjk+GMCAwEAAaOCAZYwggGSMDAGA1UdEQQpMCeCJXNlY3VyZS10ZXN0LnN0
+cmVhbWxpbmUtZXNvbHV0aW9ucy5jb20wCQYDVR0TBAIwADAOBgNVHQ8BAf8EBAMC
+BaAwRQYDVR0fBD4wPDA6oDigNoY0aHR0cDovL1NWUlNlY3VyZS1HMy1jcmwudmVy
+aXNpZ24uY29tL1NWUlNlY3VyZUczLmNybDBEBgNVHSAEPTA7MDkGC2CGSAGG+EUB
+BxcDMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LnZlcmlzaWduLmNvbS9jcHMw
+HQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMB8GA1UdIwQYMBaAFA1EXBZT
+RMGCfh0gqyX0AWPYvnmlMHYGCCsGAQUFBwEBBGowaDAkBggrBgEFBQcwAYYYaHR0
+cDovL29jc3AudmVyaXNpZ24uY29tMEAGCCsGAQUFBzAChjRodHRwOi8vU1ZSU2Vj
+dXJlLUczLWFpYS52ZXJpc2lnbi5jb20vU1ZSU2VjdXJlRzMuY2VyMA0GCSqGSIb3
+DQEBBQUAA4IBAQCvnbqk/8I12vNKIU0lMQ3+1Q67cS+Tith067RjwRt29D1TYxGc
+MV8GIDIXOjFc0BVrdXLniMuMP3ZfI7W2L7Gy8AfKNMseZ9r2tuF3fIHjXf9RChUA
+lUZe3eGuwhh3H64xGA+RbbEoTM8AMgvk9wu9P9I2qHmqFZOBoYwL8UY3SYO5Rzl1
+ggCAgj02evm6zWCmRLvZHJSDO7oWRw9Ke85VgJULRsn7jvGyFmc3W1uvuLOILj5P
+JhSKbb6eWVcWSqEKE+X1lLkUMd+8aBRjwkWHi5WVZX9NDscqBdl2DtYdmiVeFIqN
+9nGMGwm846SvURK6c5ySrExIkPnxVCOYXhGz
+-----END CERTIFICATE-----
+ 1 s:/C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=Terms of use at https://www.verisign.com/rpa (c)10/CN=VeriSign Class 3 Secure Server CA - G3
+ i:/C=US/O=VeriSign, Inc./OU=Class 3 Public Primary Certification Authority
+-----BEGIN CERTIFICATE-----
+MIIEpTCCBA6gAwIBAgIQfnbFd1jfGsI+zDL79hUa1TANBgkqhkiG9w0BAQUFADBf
+MQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xNzA1BgNVBAsT
+LkNsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkw
+HhcNMTAwOTMwMDAwMDAwWhcNMTQwMTAxMjM1OTU5WjCBtTELMAkGA1UEBhMCVVMx
+FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
+dCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2UgYXQgaHR0cHM6Ly93d3cu
+dmVyaXNpZ24uY29tL3JwYSAoYykxMDEvMC0GA1UEAxMmVmVyaVNpZ24gQ2xhc3Mg
+MyBTZWN1cmUgU2VydmVyIENBIC0gRzMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
+ggEKAoIBAQCxh4QfwgxF9byrJZenraI+nLr2wTm4i8rCrFbG5btljkRPTc5v7QlK
+1K9OEJxoiy6Ve4mbE8riNDTB81vzSXtig0iBdNGIeGwCU/m8f0MmV1gzgzszChew
+0E6RJK2GfWQS3HRKNKEdCuqWHQsV/KNLO85jiND4LQyUhhDKtpo9yus3nABINYYp
+UHjoRWPNGUFP9ZXse5jUxHGzUL4os4+guVOc9cosI6n9FAboGLSa6Dxugf3kzTU2
+s1HTaewSulZub5tXxYsU5w7HnO1KVGrJTcW/EbGuHGeBy0RVM5l/JJs/U0V/hhrz
+PPptf4H1uErT9YU3HLWm0AnkGHs4TvoPAgMBAAGjggGFMIIBgTASBgNVHRMBAf8E
+CDAGAQH/AgEAMHAGA1UdIARpMGcwZQYLYIZIAYb4RQEHFwMwVjAoBggrBgEFBQcC
+ARYcaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL2NwczAqBggrBgEFBQcCAjAeGhxo
+dHRwczovL3d3dy52ZXJpc2lnbi5jb20vcnBhMA4GA1UdDwEB/wQEAwIBBjBtBggr
+BgEFBQcBDARhMF+hXaBbMFkwVzBVFglpbWFnZS9naWYwITAfMAcGBSsOAwIaBBSP
+5dMahqyNjmvDz4Bq1EgYLHsZLjAlFiNodHRwOi8vbG9nby52ZXJpc2lnbi5jb20v
+dnNsb2dvLmdpZjAoBgNVHREEITAfpB0wGzEZMBcGA1UEAxMQVmVyaVNpZ25NUEtJ
+LTItNjAdBgNVHQ4EFgQUDURcFlNEwYJ+HSCrJfQBY9i+eaUwMQYDVR0fBCowKDAm
+oCSgIoYgaHR0cDovL2NybC52ZXJpc2lnbi5jb20vcGNhMy5jcmwwDQYJKoZIhvcN
+AQEFBQADgYEALCbJk3A/lLYWx3aEmMiqkWjX3h00sBOmGUDc4wqwGR4aZdQ9ih8g
+KYjzFNWfxAaVZB5dDyc6ojY4wh8OsP4GWDYZfeeaHWBoczew8mukbaVpqrE97dTQ
+hRRcY4t+sIjMaXfRJi2w8dTeYSEMce6e3XVhijp5eJm8RlWXZJE9J0M=
+-----END CERTIFICATE-----
+# Note: this next certificate has:
+# Signature Algorithm: md2WithRSAEncryption
+ 2 s:/C=US/O=VeriSign, Inc./OU=Class 3 Public Primary Certification Authority
+ i:/C=US/O=VeriSign, Inc./OU=Class 3 Public Primary Certification Authority
+-----BEGIN CERTIFICATE-----
+MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkG
+A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz
+cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2
+MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV
+BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt
+YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN
+ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE
+BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is
+I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G
+CSqGSIb3DQEBAgUAA4GBALtMEivPLCYATxQT3ab7/AoRhIzzKBxnki98tsX63/Do
+lbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59AhWM1pF+NEHJwZRDmJXNyc
+AA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2OmufTqj/ZA1k
+-----END CERTIFICATE-----
--- /dev/null
+client.pem:
+-----BEGIN CERTIFICATE-----
+MIIC3DCCAkUCAQkwDQYJKoZIhvcNAQEFBQAwgYYxEzARBgoJkiaJk/IsZAEZFgND
+T00xFzAVBgoJkiaJk/IsZAEZFgdFWEFNUExFMR4wHAYDVQQLExVDZXJ0aWZpY2F0
+ZSBBdXRob3JpdHkxFzAVBgNVBAMTDmNhLmV4YW1wbGUuY29tMR0wGwYJKoZIhvcN
+AQkBFg5jYUBleGFtcGxlLmNvbTAeFw0xMTAxMTgwNjA0MTFaFw0yMTAxMTUwNjA0
+MTFaMGIxEzARBgoJkiaJk/IsZAEZFgNDT00xFzAVBgoJkiaJk/IsZAEZFgdFWEFN
+UExFMQ8wDQYDVQQDEwZDbGllbnQxITAfBgkqhkiG9w0BCQEWEmNsaWVudEBleGFt
+cGxlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMEgNDM/dg3t
+9DHNAPz/b87LSxEaKhoZ8AcNBym3LEOdCnXGEnKf0b9lkT5caXu5GAM84ahTCJ7n
+79RVNrqGKM7jbBdSX+ZUfkqJQPhOXD2+0niYQicH92nz78kxmjlbizvd3fM1BlO+
+C/++NWf2EAhORVAjvJrHNokJp3PTNRJ1WWteHeU9PwfGmWHKVc1IgvRFMH08604I
+ZzX5CcxIg/b56g27A7CBPh/KO/qKTDLFFNGc1T2asvY/P3+PeN6y+leFHStCTu7R
+Bi/l4hczZdnwq3BGT6mnjEN7wau2s7pA067SXimNOkYi5fgwspMHi8fJWmYyBypU
+mQBRzwfm77ECAwEAATANBgkqhkiG9w0BAQUFAAOBgQA3LuElj2QB9wQvmIxk2Jmb
+IPP2/WS8dwPoCv/N3+6nTx8yRsrILf4QsnEbbsxoYO5jW4r9Kt8m8B/M7YgnBDE9
+zlm7JbXKZf2isSm5TyT627Ymzxrzs5d+7o2eS7SN1DB6PyvRh2ye7EMbyEYD8ULi
+itDUkYkssNCVivYwVvJoMg==
+-----END CERTIFICATE-----
+
+client-future.pem:
+-----BEGIN CERTIFICATE-----
+MIIC3DCCAkUCAQowDQYJKoZIhvcNAQEFBQAwgYYxEzARBgoJkiaJk/IsZAEZFgND
+T00xFzAVBgoJkiaJk/IsZAEZFgdFWEFNUExFMR4wHAYDVQQLExVDZXJ0aWZpY2F0
+ZSBBdXRob3JpdHkxFzAVBgNVBAMTDmNhLmV4YW1wbGUuY29tMR0wGwYJKoZIhvcN
+AQkBFg5jYUBleGFtcGxlLmNvbTAeFw0yMDAxMTgxNzI3MDNaFw0yMTAxMTcxNzI3
+MDNaMGIxEzARBgoJkiaJk/IsZAEZFgNDT00xFzAVBgoJkiaJk/IsZAEZFgdFWEFN
+UExFMQ8wDQYDVQQDEwZDbGllbnQxITAfBgkqhkiG9w0BCQEWEmNsaWVudEBleGFt
+cGxlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMEgNDM/dg3t
+9DHNAPz/b87LSxEaKhoZ8AcNBym3LEOdCnXGEnKf0b9lkT5caXu5GAM84ahTCJ7n
+79RVNrqGKM7jbBdSX+ZUfkqJQPhOXD2+0niYQicH92nz78kxmjlbizvd3fM1BlO+
+C/++NWf2EAhORVAjvJrHNokJp3PTNRJ1WWteHeU9PwfGmWHKVc1IgvRFMH08604I
+ZzX5CcxIg/b56g27A7CBPh/KO/qKTDLFFNGc1T2asvY/P3+PeN6y+leFHStCTu7R
+Bi/l4hczZdnwq3BGT6mnjEN7wau2s7pA067SXimNOkYi5fgwspMHi8fJWmYyBypU
+mQBRzwfm77ECAwEAATANBgkqhkiG9w0BAQUFAAOBgQBvt8v930fQtxR7f7Vcb1Hg
+irq1CtffsBqtKYupYg6IgloiRA6U5wdU0e6faA3Ppsmd4SmNKb9ZavIgnDBfx8MP
+1/IpsNOkg0366bP/zzkAhcXspo7PU8yZIqep//wT4TOFz04N8Lshqm8HUejShFdA
+fB8C0LX5Y/2219ZVMaaEbw==
+-----END CERTIFICATE-----
+
+client-past.pem:
+-----BEGIN CERTIFICATE-----
+MIIC3DCCAkUCAQswDQYJKoZIhvcNAQEFBQAwgYYxEzARBgoJkiaJk/IsZAEZFgND
+T00xFzAVBgoJkiaJk/IsZAEZFgdFWEFNUExFMR4wHAYDVQQLExVDZXJ0aWZpY2F0
+ZSBBdXRob3JpdHkxFzAVBgNVBAMTDmNhLmV4YW1wbGUuY29tMR0wGwYJKoZIhvcN
+AQkBFg5jYUBleGFtcGxlLmNvbTAeFw0wMDAxMTgxNzI3NDdaFw0wMTAxMTcxNzI3
+NDdaMGIxEzARBgoJkiaJk/IsZAEZFgNDT00xFzAVBgoJkiaJk/IsZAEZFgdFWEFN
+UExFMQ8wDQYDVQQDEwZDbGllbnQxITAfBgkqhkiG9w0BCQEWEmNsaWVudEBleGFt
+cGxlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMEgNDM/dg3t
+9DHNAPz/b87LSxEaKhoZ8AcNBym3LEOdCnXGEnKf0b9lkT5caXu5GAM84ahTCJ7n
+79RVNrqGKM7jbBdSX+ZUfkqJQPhOXD2+0niYQicH92nz78kxmjlbizvd3fM1BlO+
+C/++NWf2EAhORVAjvJrHNokJp3PTNRJ1WWteHeU9PwfGmWHKVc1IgvRFMH08604I
+ZzX5CcxIg/b56g27A7CBPh/KO/qKTDLFFNGc1T2asvY/P3+PeN6y+leFHStCTu7R
+Bi/l4hczZdnwq3BGT6mnjEN7wau2s7pA067SXimNOkYi5fgwspMHi8fJWmYyBypU
+mQBRzwfm77ECAwEAATANBgkqhkiG9w0BAQUFAAOBgQBC3BOULAOkRFLKLajHIIB2
+VB0tHOFWuflP/LXso3ogGA8ItqbjacqjRHdTGK79etbxSTdi7k8owMVMPavJnBYk
+TraOkf/xxHo2zWy3XES1lniTUfGgKpjYNlALB6K6DJseZorSOmGA4KllL46MYwNu
+jsLO+5HkS/uNxlKo2l+xGw==
+-----END CERTIFICATE-----
+
+server.pem:
+-----BEGIN CERTIFICATE-----
+MIICJjCCAY+gAwIBAgIBBzANBgkqhkiG9w0BAQUFADCBhjETMBEGCgmSJomT8ixk
+ARkWA0NPTTEXMBUGCgmSJomT8ixkARkWB0VYQU1QTEUxHjAcBgNVBAsTFUNlcnRp
+ZmljYXRlIEF1dGhvcml0eTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5jb20xHTAbBgkq
+hkiG9w0BCQEWDmNhQGV4YW1wbGUuY29tMB4XDTExMDExNzE5NDcxN1oXDTIxMDEx
+NDE5NDcxN1owSzETMBEGCgmSJomT8ixkARkWA0NPTTEXMBUGCgmSJomT8ixkARkW
+B0VYQU1QTEUxGzAZBgNVBAMTEnNlcnZlci5leGFtcGxlLmNvbTBcMA0GCSqGSIb3
+DQEBAQUAA0sAMEgCQQDYScTxk55XBmbDM9zzwO+grVySE4rudWuzH2PpObIonqbf
+hRoAalKVluG9jvbHI81eXxCdSObv1KBP1sbN5RzpAgMBAAGjIjAgMAkGA1UdEwQC
+MAAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDQYJKoZIhvcNAQEFBQADgYEAYx6fMqT1
+Gvo0jq88E8mc+bmp4LfXD4wJ7KxYeadQxt75HFRpj4FhFO3DOpVRFgzHlOEo3Fwk
+PZOKjvkT0cbcoEq5whLH25dHoQxGoVQgFyAP5s+7Vp5AlHh8Y/vAoXeEVyy/RCIH
+QkhUlAflfDMcrrYjsmwoOPSjhx6Mm/AopX4=
+-----END CERTIFICATE-----
+
+
+server-self.pem:
+-----BEGIN CERTIFICATE-----
+MIIBiDCCATICCQDJ4QeFpYPYljANBgkqhkiG9w0BAQUFADBLMRMwEQYKCZImiZPy
+LGQBGRYDQ09NMRcwFQYKCZImiZPyLGQBGRYHRVhBTVBMRTEbMBkGA1UEAxMSc2Vy
+dmVyLmV4YW1wbGUuY29tMB4XDTExMDExOTAzMTYzOFoXDTIxMDExNjAzMTYzOFow
+SzETMBEGCgmSJomT8ixkARkWA0NPTTEXMBUGCgmSJomT8ixkARkWB0VYQU1QTEUx
+GzAZBgNVBAMTEnNlcnZlci5leGFtcGxlLmNvbTBcMA0GCSqGSIb3DQEBAQUAA0sA
+MEgCQQDYScTxk55XBmbDM9zzwO+grVySE4rudWuzH2PpObIonqbfhRoAalKVluG9
+jvbHI81eXxCdSObv1KBP1sbN5RzpAgMBAAEwDQYJKoZIhvcNAQEFBQADQQAagc2P
+/lCfDwT3max+D2M7++KMDfGqiO3gI+hMarf/jAaQpcKO/9G95AnNo4lTd6W6/7yj
+YYvUupv+0vi4CtQG
+-----END CERTIFICATE-----
+
--- /dev/null
+-----BEGIN PRIVATE KEY-----
+MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEA2EnE8ZOeVwZmwzPc
+88DvoK1ckhOK7nVrsx9j6TmyKJ6m34UaAGpSlZbhvY72xyPNXl8QnUjm79SgT9bG
+zeUc6QIDAQABAkBRFJZ32VbqWMP9OVwDJLiwC01AlYLnka0mIQZbT/2xq9dUc9GW
+U3kiVw4lL8v/+sPjtTPCYYdzHHOyDen6znVhAiEA9qJT7BtQvRxCvGrAhr9MS022
+tTdPbW829BoUtIeH64cCIQDggG5i48v7HPacPBIH1RaSVhXl8qHCpQD3qrIw3FMw
+DwIga8PqH5Sf5sHedy2+CiK0V4MRfoU4c3zQ6kArI+bEgSkCIQCLA1vXBiE31B5s
+bdHoYa1BXebfZVd+1Hd95IfEM5mbRwIgSkDuQwV55BBlvWph3U8wVIMIb4GStaH8
+W535W8UBbEg=
+-----END PRIVATE KEY-----
G_DEFINE_TYPE (MockInteraction, mock_interaction, G_TYPE_TLS_INTERACTION);
static void
-on_cancellable_cancelled (GCancellable *cancellable,
- gpointer user_data)
-{
- GSimpleAsyncResult *res = G_SIMPLE_ASYNC_RESULT (user_data);
- GError *error = NULL;
- if (!g_cancellable_set_error_if_cancelled (cancellable, &error))
- g_assert_not_reached ();
- g_simple_async_result_take_error (res, error);
-}
-
-static void
mock_interaction_ask_password_async (GTlsInteraction *interaction,
GTlsPassword *password,
GCancellable *cancellable,
gpointer user_data)
{
MockInteraction *self = MOCK_INTERACTION (interaction);
- GSimpleAsyncResult *res;
-
- res = g_simple_async_result_new (G_OBJECT (interaction), callback, user_data,
- mock_interaction_ask_password_async);
+ GTask *task;
- if (cancellable)
- g_cancellable_connect (cancellable,
- G_CALLBACK (on_cancellable_cancelled),
- g_object_ref (res),
- g_object_unref);
+ task = g_task_new (interaction, cancellable, callback, user_data);
g_tls_password_set_value (password, (const guchar *)self->static_password, -1);
- g_simple_async_result_complete_in_idle (res);
+ g_task_return_boolean (task, TRUE);
}
static GTlsInteractionResult
GAsyncResult *result,
GError **error)
{
- g_return_val_if_fail (g_simple_async_result_is_valid (result, G_OBJECT (interaction),
- mock_interaction_ask_password_async),
- G_TLS_INTERACTION_UNHANDLED);
-
- if (g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (result), error))
- return G_TLS_INTERACTION_FAILED;
-
- return G_TLS_INTERACTION_HANDLED;
+ g_return_val_if_fail (g_task_is_valid (result, interaction),
+ G_TLS_INTERACTION_UNHANDLED);
+
+ if (g_task_had_error (G_TASK (result)))
+ {
+ g_task_propagate_boolean (G_TASK (result), error);
+ return G_TLS_INTERACTION_FAILED;
+ }
+ else
+ return G_TLS_INTERACTION_HANDLED;
}
static GTlsInteractionResult
return CKR_OK;
}
- if (*pulCount < 0)
- g_return_val_if_reached (CKR_BUFFER_TOO_SMALL);
-
return CKR_OK;
}
main (int argc,
char *argv[])
{
- g_type_init ();
g_test_init (&argc, &argv, NULL);
g_test_add ("/pkcs11/array/add-find", TestArray, NULL,
teardown_pin (TestPin *test,
gconstpointer unused)
{
+ g_assert_cmpint (G_OBJECT (test->pin)->ref_count, ==, 1);
g_object_unref (test->pin);
- g_assert (!G_IS_OBJECT (test->pin));
}
static void
main (int argc,
char *argv[])
{
- g_type_init ();
g_test_init (&argc, &argv, NULL);
g_test_add ("/pkcs11/pin/attributes", TestPin, NULL,
{
CK_RV rv;
+ g_assert_cmpint (G_OBJECT (test->slot)->ref_count, ==, 1);
g_object_unref (test->slot);
- g_assert (!G_IS_OBJECT (test->slot));
+ g_assert_cmpint (G_OBJECT (test->not_present)->ref_count, ==, 1);
g_object_unref (test->not_present);
- g_assert (!G_IS_OBJECT (test->not_present));
rv = p11_kit_finalize_module (&test->funcs);
g_assert (rv == CKR_OK);
main (int argc,
char *argv[])
{
- g_type_init ();
g_test_init (&argc, &argv, NULL);
g_test_add ("/pkcs11/slot/properties", TestSlot, NULL,
main (int argc,
char *argv[])
{
- g_type_init ();
g_test_init (&argc, &argv, NULL);
g_test_add_func ("/pkcs11/util/propagate-error", test_propagate_error);
--- /dev/null
+-----BEGIN CERTIFICATE-----
+MIIFJjCCBA6gAwIBAgIHK5SIAlQmZjANBgkqhkiG9w0BAQsFADCBtDELMAkGA1UE
+BhMCVVMxEDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAY
+BgNVBAoTEUdvRGFkZHkuY29tLCBJbmMuMS0wKwYDVQQLEyRodHRwOi8vY2VydHMu
+Z29kYWRkeS5jb20vcmVwb3NpdG9yeS8xMzAxBgNVBAMTKkdvIERhZGR5IFNlY3Vy
+ZSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjAeFw0xNDEwMjcyMzQzMDRaFw0x
+NjEwMjgyMjA2MjRaMD0xITAfBgNVBAsTGERvbWFpbiBDb250cm9sIFZhbGlkYXRl
+ZDEYMBYGA1UEAwwPKi53ZWJzb2NrZXQub3JnMIIBIjANBgkqhkiG9w0BAQEFAAOC
+AQ8AMIIBCgKCAQEA03U6RTqCO0AJEBbWcfjMkbm5iYs9P+l1nUJyyxh+t15koL3C
+3GwDxX5GuqOH6hXSpMBEG5xTatisnCp1+C9r8HRldLFYBVVmlQnQ7UsUYR1s0vWQ
+ma/wiU4tfTyfAGuz3/2OeRaYvMUQ3inzemZMSsPMLNcqbeCO9MZ59dbIxovm8Ltg
+yE/9BGOpBgFjVh1oORES4/7O4HRIzc6s2nnIyRM/1qEmA7cgCAGcJRdcGA+auZxs
+FKp9r+CHoXcQ3YHkdwZ1BVjsGuhBSXf8hgClgoSsiPRFx4MeoCdpcyh9q0MHkl+s
+WvPyEt5lIn3u/VdtCE+H/ezHJet6U/SIuQCqTwIDAQABo4IBsTCCAa0wDAYDVR0T
+AQH/BAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDgYDVR0PAQH/
+BAQDAgWgMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwuZ29kYWRkeS5jb20v
+Z2RpZzJzMS04Ny5jcmwwUwYDVR0gBEwwSjBIBgtghkgBhv1tAQcXATA5MDcGCCsG
+AQUFBwIBFitodHRwOi8vY2VydGlmaWNhdGVzLmdvZGFkZHkuY29tL3JlcG9zaXRv
+cnkvMHYGCCsGAQUFBwEBBGowaDAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuZ29k
+YWRkeS5jb20vMEAGCCsGAQUFBzAChjRodHRwOi8vY2VydGlmaWNhdGVzLmdvZGFk
+ZHkuY29tL3JlcG9zaXRvcnkvZ2RpZzIuY3J0MB8GA1UdIwQYMBaAFEDCvSeOzDSD
+MKIz1/tss/C0LIDOMCkGA1UdEQQiMCCCDyoud2Vic29ja2V0Lm9yZ4INd2Vic29j
+a2V0Lm9yZzAdBgNVHQ4EFgQUM4m1UYsENmVVekwEepAj/5qBfxswDQYJKoZIhvcN
+AQELBQADggEBAGgpao/D+YmXqAfBlbAJIEUUaz9LYIXH7+eyiW0knSdHw4zeI8eo
+Ct4qOxNnUR417qwMLnmF3Kz76uPpb7UPKWbZRXK4krBJLZnHvMb+KS1SxaeFbGnR
+Clp5a8zrrEr3kyTWrFNUswIMCnY8wwSx+BWneVgJErw5sGsYso4ykJwVS3coLcG2
+fOYeNmBI/Hr/bRhTVsvufub4VFxCoIDuNRXMEw2tvvvxBQuylIxatjOsdMnhE/l6
++N+v1Py6xTW+77UW49iz32I3fRCZqvy+SHTUMuBUBPRW8spqMas6VVJfd2J+N5Q6
+ks+e1QkGH0o/aGsfU1/9MsEja/EQh4ljPqk=
+-----END CERTIFICATE-----
+