Sync with TP.
[libidn.git] / AUTHORS
blobcdc0dd33fcd7786295a6fd5cd6eb739b279174ee
1 Libidn AUTHORS -- Information about the authors.
2 Copyright (C) 2002, 2003, 2004, 2005 Simon Josefsson
3 See the end for copying conditions.
5 Simon Josefsson <simon@josefsson.org>
6 Designed and implemented libidn.
8 Thomas Jacob <jacob@internet24.de>
9 Contributed TLD support.
11 Oliver Hitz <oliver@net-track.ch>
12 Contributed Java implementation.
14 Alexander Gnauck <gnauck@ag-software.de>
15 Contributed C# port.
17 -----BEGIN PGP PUBLIC KEY BLOCK-----
18 URL: http://josefsson.org/key.txt
19 Comment: This 0xB565716F key is used to sign releases of Libidn.
21 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
174 +oswIs6WpYg/0by6t54vjRxjNw==
175 =4AxN
176 -----END PGP PUBLIC KEY BLOCK-----
178 ----------------------------------------------------------------------
179 Copying and distribution of this file, with or without modification,
180 are permitted in any medium without royalty provided the copyright
181 notice and this notice are preserved.